VLC 4.0.0-dev
Loading...
Searching...
No Matches
vlc_media_library.h
Go to the documentation of this file.
1/*****************************************************************************
2 * vlc_media_library.h: SQL-based media library
3 *****************************************************************************
4 * Copyright (C) 2008-2010 the VideoLAN Team and AUTHORS
5 *
6 * Authors: Antoine Lejeune <phytos@videolan.org>
7 * Jean-Philippe André <jpeg@videolan.org>
8 * Rémi Duraffort <ivoire@videolan.org>
9 * Adrien Maglo <magsoft@videolan.org>
10 * Srikanth Raju <srikiraju at gmail dot com>
11 *
12 * This program is free software; you can redistribute it and/or modify it
13 * under the terms of the GNU Lesser General Public License as published by
14 * the Free Software Foundation; either version 2.1 of the License, or
15 * (at your option) any later version.
16 *
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU Lesser General Public License for more details.
21 *
22 * You should have received a copy of the GNU Lesser General Public License
23 * along with this program; if not, write to the Free Software Foundation,
24 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
25 *****************************************************************************/
26
27#ifndef VLC_MEDIA_LIBRARY_H
28# define VLC_MEDIA_LIBRARY_H
29
30#include <assert.h>
31#include <vlc_common.h>
32
33#include <time.h>
34
35# ifdef __cplusplus
36extern "C" {
37# endif
38
39typedef enum vlc_ml_media_type_t
46typedef enum vlc_ml_media_subtype_t
54typedef enum vlc_ml_file_type_t
64typedef enum vlc_ml_track_type_t
71typedef enum vlc_ml_thumbnail_size_t
88typedef enum vlc_ml_history_type_t
95typedef enum vlc_ml_playlist_type_t
97 VLC_ML_PLAYLIST_TYPE_ALL, /**< Playlist containing any kind of tracks */
98 VLC_ML_PLAYLIST_TYPE_AUDIO, /**< Playlist containing at least one audio track */
99 VLC_ML_PLAYLIST_TYPE_VIDEO, /**< Playlist containing at least one video track */
100 VLC_ML_PLAYLIST_TYPE_AUDIO_ONLY, /**< Playlist containing audio tracks only */
101 VLC_ML_PLAYLIST_TYPE_VIDEO_ONLY, /**< Playlist containing video tracks only */
104typedef struct vlc_ml_thumbnail_t
106 char* psz_mrl;
107 /**
108 * True if a thumbnail is available, or if thumbnail generation was
109 * attempted but failed
110 */
114typedef struct vlc_ml_movie_t
120typedef struct vlc_ml_show_episode_t
128typedef struct vlc_ml_show_t
140typedef struct vlc_ml_label_t
146typedef struct vlc_ml_label_list_t
152typedef struct vlc_ml_file_t
163typedef struct vlc_ml_file_list_t
169typedef struct vlc_ml_media_track_t
171 char* psz_codec;
175 uint32_t i_bitrate;
176 union
177 {
178 struct
179 {
180 // Audio
181 uint32_t i_nbChannels;
182 uint32_t i_sampleRate;
183 } a;
184 struct
185 {
186 // Video
187 uint32_t i_height;
188 uint32_t i_width;
189 uint32_t i_sarNum;
190 uint32_t i_sarDen;
191 uint32_t i_fpsNum;
192 uint32_t i_fpsDen;
193 } v;
194 };
197typedef struct vlc_ml_media_track_list_t
203typedef struct vlc_ml_media_t
243typedef struct vlc_ml_group_t
267typedef struct vlc_ml_playlist_t
269 int64_t i_id;
271 char* psz_name;
273 char* psz_mrl;
275 char* psz_artwork_mrl;
277 unsigned int i_nb_media;
278 uint32_t i_nb_video;
279 uint32_t i_nb_audio;
280 uint32_t i_nb_unknown;
282 unsigned int i_nb_present_media;
287 uint32_t i_creation_date;
289 int64_t i_duration; /* In ms */
292 bool b_is_read_only;
295typedef struct vlc_ml_artist_t
308typedef struct vlc_ml_artist_list_t
314typedef struct vlc_ml_album_t {
329typedef struct vlc_ml_genre_t
337typedef struct vlc_ml_media_list_t
343typedef struct vlc_ml_album_list_t
349typedef struct vlc_ml_show_list_t
355typedef struct vlc_ml_genre_list_t
361typedef struct vlc_ml_group_list_t
367typedef struct vlc_ml_playlist_list_t
373typedef struct vlc_ml_folder_t
375 int64_t i_id; /**< The folder's MRL. Will be NULL if b_present is false */
376 char* psz_name; /**< The folder's name */
377 char* psz_mrl; /**< The folder's MRL. Will be NULL if b_present is false */
378 unsigned int i_nb_media; /**< The media count */
379 unsigned int i_nb_video; /**< The number of video for this folder */
380 unsigned int i_nb_audio; /**< The number of audio for this volder */
381 int64_t i_duration; /**< The sum of all the member durations of the folder in ms. */
382 bool b_present; /**< The folder's presence state */
383 bool b_banned; /**< Will be true if the user required this folder to be excluded */
386typedef struct vlc_ml_folder_list_t
392typedef struct vlc_ml_bookmark_t
394 int64_t i_media_id; /**< The associated media ID */
395 int64_t i_time; /**< The bookmark time. The unit is arbitrary */
396 char* psz_name; /**< The bookmark name */
397 char* psz_description; /**< The bookmark description */
400typedef struct vlc_ml_boomkmark_list_t
406/* Opaque medialibrary pointer, to be used by any non-medialibrary module */
408/* "Private" medialibrary pointer, to be used by the core & medialibrary modules */
410/* Opaque event callback type */
413typedef enum vlc_ml_sorting_criteria_t
434/**
435 * Generic parameter set for medialibrary queries.
436 *
437 * \warning Should only be default instanciated with ::vlc_ml_query_params_create().
438 */
439typedef struct vlc_ml_query_params_t
452 VLC_ML_GET_MEDIA, /**< arg1: Media ID; ret: vlc_ml_media_t* */
453 VLC_ML_GET_MEDIA_BY_MRL, /**< arg1: Media MRL; ret: vlc_ml_media_t* */
454 VLC_ML_GET_INPUT_ITEM, /**< arg1: Media ID; ret: input_item_t* */
455 VLC_ML_GET_INPUT_ITEM_BY_MRL, /**< arg1: Media MRL; ret: input_item_t* */
456 VLC_ML_GET_ALBUM, /**< arg1: Album ID; ret: vlc_ml_album_t* */
457 VLC_ML_GET_ARTIST, /**< arg1: Artist ID; ret: vlc_ml_artist_t* */
458 VLC_ML_GET_GENRE, /**< arg1: Genre ID; ret: vlc_ml_genre_t* */
459 VLC_ML_GET_SHOW, /**< arg1: Show ID; ret: vlc_ml_show_t* */
460 VLC_ML_GET_PLAYLIST, /**< arg1: Playlist ID; ret: vlc_ml_playlist_t* */
461 VLC_ML_GET_GROUP, /**< arg1: Group ID; ret: vlc_ml_group_t* */
462 VLC_ML_GET_FOLDER, /**< arg1: folder ID; ret: vlc_ml_folder_t* */
464
467 /* General listing: */
468
469 VLC_ML_LIST_VIDEOS, /**< arg1 (out): vlc_ml_media_list_t** */
470 VLC_ML_COUNT_VIDEOS, /**< arg1 (out): size_t* */
471 VLC_ML_LIST_AUDIOS, /**< arg1 (out): vlc_ml_media_list_t** */
472 VLC_ML_COUNT_AUDIOS, /**< arg1 (out): size_t* */
473 VLC_ML_LIST_ALBUMS, /**< arg1 (out): vlc_ml_album_list_t** */
474 VLC_ML_COUNT_ALBUMS, /**< arg1 (out): size_t* */
475 VLC_ML_LIST_GENRES, /**< arg1 (out): vlc_ml_genre_list_t** */
476 VLC_ML_COUNT_GENRES, /**< arg1 (out): size_t* */
477 VLC_ML_LIST_ARTISTS, /**< arg1 bool: includeAll; arg2 (out): vlc_ml_genre_list_t** */
478 VLC_ML_COUNT_ARTISTS, /**< arg1 bool: includeAll; arg2 (out): size_t* */
479 VLC_ML_LIST_SHOWS, /**< arg1 (out): vlc_ml_show_list_t** */
480 VLC_ML_COUNT_SHOWS, /**< arg1 (out): size_t* */
481 VLC_ML_LIST_GROUPS, /**< arg1 (out): vlc_ml_group_list_t** */
482 VLC_ML_COUNT_GROUPS, /**< arg1 (out): size_t* */
483 VLC_ML_LIST_PLAYLISTS, /**< arg1 (out): vlc_ml_playlist_list_t** */
484 VLC_ML_COUNT_PLAYLISTS, /**< arg1 (out): size_t* */
485 VLC_ML_LIST_HISTORY, /**< arg1 vlc_ml_history_type_t; arg2 (out): vlc_ml_media_list_t** */
486 VLC_ML_COUNT_HISTORY, /**< arg1 vlc_ml_history_type_t; arg2 (out): size_t* */
487 VLC_ML_LIST_VIDEO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
488 VLC_ML_COUNT_VIDEO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
489 VLC_ML_LIST_AUDIO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
490 VLC_ML_COUNT_AUDIO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
491 VLC_ML_LIST_ENTRY_POINTS, /**< arg1 bool: list_banned; arg2 (out): vlc_ml_folder_list_t** */
492 VLC_ML_COUNT_ENTRY_POINTS, /**< arg1 bool: list_banned; arg2 (out): size_t* */
493 VLC_ML_LIST_FOLDERS, /**< arg1 (out): vlc_ml_folder_list_t** */
494 VLC_ML_COUNT_FOLDERS, /**< arg1 (out): size_t* */
495 VLC_ML_LIST_FOLDERS_BY_TYPE, /**< arg1 vlc_ml_media_type_t: the media type. arg2 (out): vlc_ml_media_list_t** */
496 VLC_ML_COUNT_FOLDERS_BY_TYPE, /**< arg1 vlc_ml_media_type_t: the media type. arg2 (out): vlc_ml_media_list_t** */
498 /* Album specific listings */
499 VLC_ML_LIST_ALBUM_TRACKS, /**< arg1: The album id. arg2 (out): vlc_ml_media_list_t** */
500 VLC_ML_COUNT_ALBUM_TRACKS, /**< arg1: The album id. arg2 (out): size_t* */
501 VLC_ML_LIST_ALBUM_ARTISTS, /**< arg1: The album id. arg2 (out): vlc_ml_album_list_t** */
502 VLC_ML_COUNT_ALBUM_ARTISTS, /**< arg1: The album id. arg2 (out): size_t* */
504 /* Artist specific listings */
505 VLC_ML_LIST_ARTIST_ALBUMS, /**< arg1: The artist id. arg2(out): vlc_ml_album_list_t** */
506 VLC_ML_COUNT_ARTIST_ALBUMS, /**< arg1: The artist id. arg2(out): size_t* */
507 VLC_ML_LIST_ARTIST_TRACKS, /**< arg1: The artist id. arg2(out): vlc_ml_media_list_t** */
508 VLC_ML_COUNT_ARTIST_TRACKS, /**< arg1: The artist id. arg2(out): size_t* */
510 /* Genre specific listings */
511 VLC_ML_LIST_GENRE_ARTISTS, /**< arg1: genre id; arg2 (out): vlc_ml_artist_list_t** */
512 VLC_ML_COUNT_GENRE_ARTISTS, /**< arg1: genre id; arg2 (out): size_t* */
513 VLC_ML_LIST_GENRE_TRACKS, /**< arg1: genre id; arg2 (out): vlc_ml_media_list_t** */
514 VLC_ML_COUNT_GENRE_TRACKS, /**< arg1: genre id; arg2 (out): size_t* */
515 VLC_ML_LIST_GENRE_ALBUMS, /**< arg1: genre id; arg2 (out): vlc_ml_album_list_t** */
516 VLC_ML_COUNT_GENRE_ALBUMS, /**< arg1: genre id; arg2 (out): size_t* */
518 /* Show specific listings */
519 VLC_ML_LIST_SHOW_EPISODES, /**< arg1: show id; arg2(out): vlc_ml_media_list_t** */
520 VLC_ML_COUNT_SHOW_EPISODES, /**< arg1: show id; arg2(out): size_t* */
522 /* Media specific listings */
523 VLC_ML_LIST_MEDIA_LABELS, /**< arg1: media id; arg2 (out): vlc_ml_label_list_t** */
524 VLC_ML_COUNT_MEDIA_LABELS, /**< arg1: media id; arg2 (out): size_t* */
525 VLC_ML_LIST_MEDIA_BOOKMARKS, /**< arg1: media id; arg2 (out): vlc_ml_bookmark_list_t** */
527 /* Groups specific listings */
528 VLC_ML_LIST_GROUP_MEDIA, /**< arg1: playlist id; arg2 (out): vlc_ml_media_list_t** */
529 VLC_ML_COUNT_GROUP_MEDIA, /**< arg1: playlist id; arg2 (out): size_t* */
531 /* Playlist specific listings */
532 VLC_ML_LIST_PLAYLIST_MEDIA, /**< arg1: playlist id; arg2 (out): vlc_ml_media_list_t** */
533 VLC_ML_COUNT_PLAYLIST_MEDIA, /**< arg1: playlist id; arg2 (out): size_t* */
535 /* Folder specific listings */
536 VLC_ML_LIST_SUBFOLDERS, /**< arg1: parent id; arg2 (out): vlc_ml_folder_list_t** */
537 VLC_ML_COUNT_SUBFOLDERS, /**< arg1: parent id; arg2 (out): size_t* */
538 VLC_ML_LIST_FOLDER_MEDIA, /**< arg1: folder id; arg2 (out): vlc_ml_media_list_t** */
539 VLC_ML_COUNT_FOLDER_MEDIA, /**< arg1: folder id; arg2 (out): size_t* */
541 /* Children entities listing */
542 VLC_ML_LIST_MEDIA_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): ml_media_list_t** */
543 VLC_ML_COUNT_MEDIA_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
544 VLC_ML_LIST_VIDEO_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
545 VLC_ML_COUNT_VIDEO_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
546 VLC_ML_LIST_AUDIO_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
547 VLC_ML_COUNT_AUDIO_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
548 VLC_ML_LIST_ARTISTS_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): ml_artist_list_t** */
549 VLC_ML_COUNT_ARTISTS_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
550 VLC_ML_LIST_ALBUMS_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): ml_album_list_t** */
551 VLC_ML_COUNT_ALBUMS_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
553
568 /* Adds a folder to discover through the medialibrary */
569 VLC_ML_ADD_FOLDER, /**< arg1: mrl (const char*) res: can't fail */
570 VLC_ML_REMOVE_FOLDER, /**< arg1: mrl (const char*) res: can't fail */
571 VLC_ML_BAN_FOLDER, /**< arg1: mrl (const char*) res: can't fail */
572 VLC_ML_UNBAN_FOLDER, /**< arg1: mrl (const char*) res: can't fail */
573 VLC_ML_IS_INDEXED, /**< arg1: mrl (const char*) arg2 (out): bool*; res: can fail */
574 /**
575 * Reload a specific folder, or all.
576 * arg1: mrl (const char*), NULL to reload all folders
577 * res: can't fail
578 */
581 VLC_ML_SET_FOLDER_PUBLIC, /**< arg1: mrl (const char *); res: can't fail */
582 VLC_ML_SET_FOLDER_PRIVATE, /**< arg1: mrl (const char *); res: can't fail */
584 /* Pause/resume background operations, such as media discovery & media analysis */
585 VLC_ML_PAUSE_BACKGROUND, /**< no args; can't fail */
586 VLC_ML_RESUME_BACKGROUND, /**< no args; can't fail */
588 /* Misc operations */
589 VLC_ML_CLEAR_HISTORY, /**< arg1: vlc_ml_history_type_t; can't fail */
591 /* Create media */
592 VLC_ML_NEW_EXTERNAL_MEDIA, /**< arg1: const char*; arg2(out): vlc_ml_media_t** */
593 VLC_ML_NEW_STREAM, /**< arg1: const char*; arg2(out): vlc_ml_media_t** */
597 /* Media management */
598 VLC_ML_MEDIA_UPDATE_PROGRESS, /**< arg1: media id; arg2: playback position; can fail */
599 VLC_ML_MEDIA_GET_MEDIA_PLAYBACK_STATE, /**< arg1: media id; arg2: vlc_ml_playback_state; arg3: char**; */
600 VLC_ML_MEDIA_SET_MEDIA_PLAYBACK_STATE, /**< arg1: media id; arg2: vlc_ml_playback_state; arg3: const char*; */
601 VLC_ML_MEDIA_GET_ALL_MEDIA_PLAYBACK_STATES, /**< arg1: media id; arg2(out): vlc_ml_playback_states_all* */
602 VLC_ML_MEDIA_SET_ALL_MEDIA_PLAYBACK_STATES, /**< arg1: media id; arg2: const vlc_ml_playback_states_all* */
603 VLC_ML_MEDIA_SET_THUMBNAIL, /**< arg1: media id; arg2: const char*; arg3: vlc_ml_thumbnail_size_t */
604 VLC_ML_MEDIA_SET_GENRE_THUMBNAIL, /**< arg1: media id; arg2: const char*; arg3: vlc_ml_thumbnail_size_t */
605 VLC_ML_MEDIA_GENERATE_THUMBNAIL, /**< arg1: media id; arg2: vlc_ml_thumbnail_size_t; arg3: width; arg4: height; arg5: position */
606 VLC_ML_MEDIA_ADD_EXTERNAL_MRL, /**< arg1: media id; arg2: const char*; arg3: type(vlc_ml_file_type_t) */
607 VLC_ML_MEDIA_SET_TYPE, /**< arg1: media id; arg2: vlc_ml_media_type_t */
608 VLC_ML_MEDIA_SET_PLAYED, /**< arg1: media id; arg2: bool */
609 VLC_ML_MEDIA_SET_FAVORITE, /**< arg1: media id; arg2: bool */
610 VLC_ML_MEDIA_ADD_BOOKMARK, /**< arg1: media id; arg2: int64_t */
611 VLC_ML_MEDIA_REMOVE_BOOKMARK, /**< arg1: media id; arg2: int64_t */
612 VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS, /**< arg1: media id */
613 VLC_ML_MEDIA_UPDATE_BOOKMARK, /**< arg1: media id; arg2: int64_t; arg3: const char*; arg4: const char* */
615 /* Playlist management */
616 VLC_ML_PLAYLIST_CREATE, /**< arg1: const char*; arg2(out): vlc_ml_playlist_t**; can fail */
617 VLC_ML_PLAYLIST_DELETE, /**< arg1: playlist id; can fail */
618 VLC_ML_PLAYLIST_APPEND, /**< arg1: playlist id; arg2: media id; can fail */
619 VLC_ML_PLAYLIST_INSERT, /**< arg1: playlist id; arg2: media id; arg3: position; can fail */
620 VLC_ML_PLAYLIST_MOVE, /**< arg1: playlist id; arg2: from; arg3: to; can fail */
621 VLC_ML_PLAYLIST_REMOVE, /**< arg1: playlist id; arg2: position; can fail */
622 VLC_ML_PLAYLIST_RENAME /**< arg1: playlist id; arg2: const char*; can fail */
623};
625/**
626 * User playback settings.
627 * All values/units are up to the caller and are not interpreted by the media
628 * library.
629 * All values are stored and returned as strings.
630 * When calling vlc_medialibrary_t::pf_control with vlc_ml_MEDIA_GET_MEDIA_PLAYBACK_STATE,
631 * the value will be returned stored in the provided char**. If the state was
632 * not set yet, NULL will be returned.
633 * When setting a state, NULL can be provided as a value to unset it.
634 */
656typedef struct vlc_ml_playback_states_all
672 /**
673 * Entity modification callbacks. The affected entity will be passed:
674 * - As a `vlc_ml_<type>_t`, depending on the type of the modified/inserted
675 * entity, in `vlc_ml_event_t::modification::p_<type>`
676 * for ADDED and UPDATED variants.
677 * - as an id, in ::vlc_ml_event_t::deletion::i_entity_id
678 * When _DELETED callbacks get invoked, the entity will already have been
679 * deleted from the database, and cannot be retrieved anymore
680 */
705 /**
706 * A discovery started.
707 *
708 * This event will be emitted when the media library starts discovering a
709 * scheduled entry point.
710 * If more than a single entry point are queued, this event won't be fired
711 * again until all operations are completed and a new operation is scheduled.
712 * Once all currently queued operations are done
713 * VLC_ML_EVENT_DISCOVERY_COMPLETED will be emitted.
714 */
716 /**
717 * Sent when a discovery or reload operation starts analyzing a new folder.
718 * The discovered entry point is stored in
719 * vlc_ml_event_t::discovery_progress::psz_entry_point.
720 */
722 /**
723 * Sent when all queued discovery operations are done being processed.
724 */
726 /**
727 * This event is sent when a discovery failed. The entry point that failed to
728 * be discovered is stored in
729 * vlc_ml_event_t::discovery_failed::psz_entry_point
730 */
732 /**
733 * Sent when a new entry point gets added to the database.
734 * The entry point that was added is stored in
735 * vlc::ml_event_t::entry_point_added::psz_entry_point, and the success or failure
736 * state is stored in vlc_ml_event_t::entry_point_added::b_success
737 * If successful, this event won't be emitted again for this entry point.
738 * In case of failure, this event will be fired again if the same entry point
739 * is queued for discovery again.
740 */
742 /**
743 * Sent when an entry point removal request has been processed.
744 * The removed entry point is stored in
745 * vlc_ml_event_t::entry_point_removed::psz_entry_point and the success or failure
746 * state is stored in vlc_ml_event_t::entry_point_removed::b_success
747 */
749 /**
750 * Sent when an entry point ban request has been processed.
751 * The banned entry point is stored in
752 * vlc_ml_event_t::entry_point_banned::psz_entry_point and the operation success
753 * state is stored in vlc_ml_event_t::entry_point_banned::b_success
754 */
756 /**
757 * Sent when an entry point unban request has been processed.
758 * The unbanned entry point is stored in
759 * vlc_ml_event_t::entry_point_unbanned::psz_entry_point and the operation success
760 * state is stored in vlc_ml_event_t::entry_point_unbanned::b_success
761 */
763 /**
764 * Sent when a discoverer or parser threads changes its idle state.
765 * The idle state is stored in vlc_ml_event_t::background_idle_changed.b_idle.
766 * False means at least one background thread is in running, true means
767 * both discoverer & parser threads are paused.
768 */
770 /**
771 * Sent when the parsing progress percentage gets updated.
772 * The percentage is stored as a [0;100] integer, in
773 * vlc_ml_event_t::parsing_progress::i_percent
774 * This value might decrease as more media get discovered, but it will only
775 * increase once all discovery operations are completed.
776 */
778 /**
779 * Sent after a media thumbnail was generated, or if it's generation failed.
780 * The media is stored in vlc_ml_event_t::media_thumbnail_generated::p_media
781 * and the success state is stored in
782 * vlc_ml_event_t::media_thumbnail_generated::b_success
783 */
785 /**
786 * Sent after the history gets changed. It can be either cleaned, or simply
787 * modified because a media was recently played/removed from the history.
788 * The history type (global/local/network) is stored in
789 * vlc_ml_event_t::history_changed::history_type
790 */
792 /**
793 * Sent when an application requested rescan starts being processed.
794 */
797
798typedef struct vlc_ml_event_t
800 int i_type;
801 union
802 {
803 struct
804 {
805 const char* psz_entry_point;
807 struct
808 {
809 const char* psz_entry_point;
811 struct
812 {
813 const char* psz_entry_point;
814 bool b_success;
816 struct
817 {
818 const char* psz_entry_point;
819 bool b_success;
821 struct
822 {
823 const char* psz_entry_point;
824 bool b_success;
826 struct
827 {
828 const char* psz_entry_point;
829 bool b_success;
831 struct
832 {
833 uint8_t i_percent;
835 union
836 {
837 const vlc_ml_media_t* p_media;
846 struct
847 {
848 int64_t i_entity_id;
850 struct
851 {
852 int64_t i_entity_id;
853 } deletion;
854 struct
855 {
856 bool b_idle;
858 struct
859 {
860 const vlc_ml_media_t* p_media;
864 struct
865 {
868 };
871typedef void (*vlc_ml_callback_t)( void* p_data, const vlc_ml_event_t* p_event );
873typedef struct vlc_medialibrary_callbacks_t
880 struct vlc_object_t obj;
884 void* p_sys;
886 int (*pf_control)( struct vlc_medialibrary_module_t* p_ml, int i_query, va_list args );
887 /**
888 * List some entities from the medialibrary.
889 *
890 * \param p_ml The medialibrary module instance.
891 * \param i_query The type search to be performed. \see vlc_ml_list enumeration
892 * \param p_params A pointer to a vlc_ml_query_params_t structure, or NULL for
893 * the default parameters (alphabetical ascending sort, no pagination)
894 *
895 * \return VLC_SUCCESS or an error code
896 *
897 * Refer to the individual list of vlc_ml_list requests for the additional
898 * per-query input/output parameters values & types
899 */
900 int (*pf_list)( struct vlc_medialibrary_module_t* p_ml, int i_query,
901 const vlc_ml_query_params_t* p_params, va_list args );
902
903 /**
904 * Get a specific entity by its id or another unique value
905 *
906 * \return The required entity, or a NULL pointer if couldn't be found.
907 *
908 * Refer to the list of queries for the specific return type
909 */
910 void* (*pf_get)( struct vlc_medialibrary_module_t* p_ml, int i_query, va_list args );
914
917
919#define vlc_ml_instance_get(x) vlc_ml_instance_get( VLC_OBJECT(x) )
921VLC_API void* vlc_ml_get( vlc_medialibrary_t* p_ml, int i_query, ... ) VLC_USED;
922VLC_API int vlc_ml_control( vlc_medialibrary_t* p_ml, int i_query, ... ) VLC_USED;
923VLC_API int vlc_ml_list( vlc_medialibrary_t* p_ml, int i_query,
924 const vlc_ml_query_params_t* p_params, ... );
925
926/**
927 * \brief Registers a medialibrary callback.
928 * \returns A handle to the callback, to be passed to vlc_ml_event_unregister_callback
929 */
932
933/**
934 * \brief Unregisters a medialibrary callback
935 * \param p_ml an initialized medialibrary instance
936 * \param p_callback The callback handle returned by vlc_ml_register_callback
937 */
939 vlc_ml_event_callback_t* p_callback );
940/**
941 * \brief Unregisters a medialibrary callback from the said callback.
942 * \param p_ml an initialized medialibrary instance
943 * \param p_callback The handle returned by vlc_ml_register_callback
944 *
945 * This must only be called synchronously from the callback function provided to
946 * vlc_ml_event_register_callback
947 * The p_callback handle must be considered invalid when this function returns
948 */
950 vlc_ml_event_callback_t* p_callback );
951
952
961
975
978#ifdef __cplusplus
979 vlc_ml_query_params_t ret = { };
981#else
983#endif
984 return ret;
985}
986
987static inline int vlc_ml_add_folder( vlc_medialibrary_t* p_ml, const char* psz_folder )
989 return vlc_ml_control( p_ml, VLC_ML_ADD_FOLDER, psz_folder );
990}
991
992static inline int vlc_ml_remove_folder( vlc_medialibrary_t* p_ml, const char* psz_folder )
994 return vlc_ml_control( p_ml, VLC_ML_REMOVE_FOLDER, psz_folder );
995}
996
997static inline int vlc_ml_ban_folder( vlc_medialibrary_t* p_ml, const char* psz_folder )
999 return vlc_ml_control( p_ml, VLC_ML_BAN_FOLDER, psz_folder );
1000}
1001
1002static inline int vlc_ml_unban_folder( vlc_medialibrary_t* p_ml, const char* psz_folder )
1004 return vlc_ml_control( p_ml, VLC_ML_UNBAN_FOLDER, psz_folder );
1005}
1006
1007static inline int vlc_ml_is_indexed( vlc_medialibrary_t* p_ml,
1008 const char* psz_mrl, bool* p_res )
1009{
1010 return vlc_ml_control( p_ml, VLC_ML_IS_INDEXED, psz_mrl, p_res );
1011}
1012
1013static inline int vlc_ml_reload_folder( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1015 return vlc_ml_control( p_ml, VLC_ML_RELOAD_FOLDER, psz_mrl );
1016}
1017
1018static inline int vlc_ml_set_folder_public( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1020 return vlc_ml_control( p_ml, VLC_ML_SET_FOLDER_PUBLIC, psz_mrl );
1021}
1022
1023static inline int vlc_ml_set_folder_private( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1025 return vlc_ml_control( p_ml, VLC_ML_SET_FOLDER_PRIVATE, psz_mrl );
1026}
1027
1028static inline int vlc_ml_pause_background( vlc_medialibrary_t* p_ml )
1031}
1032
1033static inline int vlc_ml_resume_background( vlc_medialibrary_t* p_ml )
1036}
1037
1038static inline int vlc_ml_clear_history( vlc_medialibrary_t* p_ml, vlc_ml_history_type_t type )
1040 return vlc_ml_control( p_ml, VLC_ML_CLEAR_HISTORY, type );
1041}
1042
1043static inline vlc_ml_media_t* vlc_ml_new_external_media( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1045 vlc_ml_media_t* res;
1046 if ( vlc_ml_control( p_ml, VLC_ML_NEW_EXTERNAL_MEDIA, psz_mrl, &res ) != VLC_SUCCESS )
1047 return NULL;
1048 return res;
1049}
1050
1051static inline vlc_ml_media_t* vlc_ml_new_stream( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1053 vlc_ml_media_t* res;
1054 if ( vlc_ml_control( p_ml, VLC_ML_NEW_STREAM, psz_mrl, &res ) != VLC_SUCCESS )
1055 return NULL;
1056 return res;
1057}
1058
1059static inline int vlc_ml_remove_stream( vlc_medialibrary_t* p_ml, int64_t i_media_id )
1061 return vlc_ml_control(p_ml, VLC_ML_REMOVE_STREAM, i_media_id);
1062}
1063
1064static inline int vlc_ml_media_update_progress( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1065 double progress )
1066{
1067 return vlc_ml_control( p_ml, VLC_ML_MEDIA_UPDATE_PROGRESS, i_media_id, progress );
1068}
1069
1070static inline int vlc_ml_media_get_playback_state( vlc_medialibrary_t* p_ml, int64_t i_media_id, int i_state, char** ppsz_result )
1072 return vlc_ml_control( p_ml, VLC_ML_MEDIA_GET_MEDIA_PLAYBACK_STATE, i_media_id, i_state, ppsz_result );
1073}
1074
1075static inline int vlc_ml_media_set_playback_state( vlc_medialibrary_t* p_ml, int64_t i_media_id, int i_state, const char* psz_value )
1077 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_MEDIA_PLAYBACK_STATE, i_media_id, i_state, psz_value );
1078}
1079
1081 int64_t i_media_id,
1083{
1084 return vlc_ml_control( p_ml,VLC_ML_MEDIA_GET_ALL_MEDIA_PLAYBACK_STATES, i_media_id, prefs );
1085}
1086
1088 int64_t i_media_id,
1089 const vlc_ml_playback_states_all* prefs )
1090{
1091 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_ALL_MEDIA_PLAYBACK_STATES, i_media_id, prefs );
1092}
1093
1094static inline int vlc_ml_media_set_thumbnail( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1095 const char* psz_mrl, vlc_ml_thumbnail_size_t sizeType )
1096{
1097 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_THUMBNAIL, i_media_id, psz_mrl, sizeType );
1098}
1099
1100static inline int vlc_ml_media_set_genre_thumbnail( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1101 const char* psz_mrl, vlc_ml_thumbnail_size_t sizeType )
1102{
1103 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_GENRE_THUMBNAIL, i_media_id, psz_mrl, sizeType );
1104}
1105
1106
1107static inline int vlc_ml_media_generate_thumbnail( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1109 uint32_t i_desired_width,
1110 uint32_t i_desired_height,
1111 double position )
1112{
1113 return vlc_ml_control( p_ml, VLC_ML_MEDIA_GENERATE_THUMBNAIL, i_media_id,
1114 size_type, i_desired_width, i_desired_height, position );
1115}
1116
1117static inline int vlc_ml_media_add_external_mrl( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1118 const char* psz_mrl, int i_type )
1119{
1120 return vlc_ml_control( p_ml, VLC_ML_MEDIA_ADD_EXTERNAL_MRL, i_media_id, psz_mrl, i_type );
1121}
1122
1123static inline int vlc_ml_media_set_type( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1125{
1126 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_TYPE, i_media_id, (int)i_type );
1127}
1128
1129static inline int vlc_ml_media_set_played( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1130 bool b_played )
1131{
1132 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_PLAYED, i_media_id, (int) b_played );
1133}
1134
1135static inline int vlc_ml_media_set_favorite( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1136 bool b_favorite )
1137{
1138 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_FAVORITE, i_media_id, (int) b_favorite );
1139}
1140
1141static inline vlc_ml_bookmark_list_t*
1143 int64_t i_media_id )
1144{
1145 assert( p_ml != NULL );
1147 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA_BOOKMARKS, params, i_media_id,
1148 &res ) != VLC_SUCCESS )
1149 return NULL;
1150 return res;
1151}
1152
1153static inline int
1154vlc_ml_media_add_bookmark( vlc_medialibrary_t* p_ml, int64_t i_media_id, int64_t i_time )
1156 assert( p_ml != NULL );
1157 return vlc_ml_control( p_ml, VLC_ML_MEDIA_ADD_BOOKMARK, i_media_id, i_time );
1158}
1159
1160static inline int
1161vlc_ml_media_remove_bookmark( vlc_medialibrary_t* p_ml, int64_t i_media_id, int64_t i_time )
1163 assert( p_ml != NULL );
1164 return vlc_ml_control( p_ml, VLC_ML_MEDIA_REMOVE_BOOKMARK, i_media_id, i_time );
1165}
1166
1167static inline int
1168vlc_ml_media_update_bookmark( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1169 int64_t i_time, const char* psz_name,
1170 const char* psz_desc )
1171{
1172 assert( p_ml != NULL );
1173 return vlc_ml_control( p_ml, VLC_ML_MEDIA_UPDATE_BOOKMARK, i_media_id,
1174 i_time, psz_name, psz_desc );
1175}
1176
1177static inline int
1178vlc_ml_media_remove_all_bookmarks( vlc_medialibrary_t* p_ml, int64_t i_media_id )
1180 assert( p_ml != NULL );
1181 return vlc_ml_control( p_ml, VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS, i_media_id );
1182}
1183
1184static inline vlc_ml_playlist_t*
1185vlc_ml_playlist_create( vlc_medialibrary_t * p_ml, const char * name)
1187 assert( p_ml != NULL );
1188
1189 vlc_ml_playlist_t* result;
1190
1191 if (vlc_ml_control( p_ml, VLC_ML_PLAYLIST_CREATE, name, &result ) != VLC_SUCCESS )
1192 return NULL;
1193
1194 return result;
1195}
1196
1197static inline int
1198vlc_ml_playlist_delete( vlc_medialibrary_t * p_ml, int64_t i_playlist_id )
1200 assert( p_ml != NULL );
1201
1202 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_DELETE, i_playlist_id );
1203}
1204
1205static inline int
1206vlc_ml_playlist_append( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, int64_t i_media_id )
1208 assert( p_ml != NULL );
1209
1210 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_APPEND, i_playlist_id, i_media_id );
1211}
1212
1213static inline int
1214vlc_ml_playlist_insert( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, int64_t i_media_id,
1215 uint32_t i_position )
1216{
1217 assert( p_ml != NULL );
1218
1219 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_INSERT, i_playlist_id, i_media_id, i_position );
1220}
1221
1222static inline int
1224 int64_t i_playlist_id, uint32_t i_from, uint32_t i_to )
1225{
1226 assert( p_ml != NULL );
1227
1228 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_MOVE, i_playlist_id, i_from, i_to );
1229}
1230
1231static inline int
1232vlc_ml_playlist_remove( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, uint32_t i_position )
1234 assert( p_ml != NULL );
1235
1236 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_REMOVE, i_playlist_id, i_position );
1237}
1238
1239static inline int
1240vlc_ml_playlist_rename( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, const char* name )
1242 assert( p_ml != NULL );
1243
1244 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_RENAME, i_playlist_id, name );
1245}
1246
1247static inline vlc_ml_media_t* vlc_ml_get_media( vlc_medialibrary_t* p_ml, int64_t i_media_id )
1249 return (vlc_ml_media_t*)vlc_ml_get( p_ml, VLC_ML_GET_MEDIA, i_media_id );
1250}
1251
1253 const char* psz_mrl )
1254{
1255 return (vlc_ml_media_t*)vlc_ml_get( p_ml, VLC_ML_GET_MEDIA_BY_MRL, psz_mrl );
1256}
1257
1258static inline input_item_t* vlc_ml_get_input_item( vlc_medialibrary_t* p_ml, int64_t i_media_id )
1260 return (input_item_t*)vlc_ml_get( p_ml, VLC_ML_GET_INPUT_ITEM, i_media_id );
1261}
1262
1264 const char* psz_mrl )
1265{
1266 return (input_item_t*)vlc_ml_get( p_ml, VLC_ML_GET_INPUT_ITEM_BY_MRL, psz_mrl );
1267}
1268
1269static inline vlc_ml_album_t* vlc_ml_get_album( vlc_medialibrary_t* p_ml, int64_t i_album_id )
1271 return (vlc_ml_album_t*)vlc_ml_get( p_ml, VLC_ML_GET_ALBUM, i_album_id );
1272}
1273
1274static inline vlc_ml_artist_t* vlc_ml_get_artist( vlc_medialibrary_t* p_ml, int64_t i_artist_id )
1276 return (vlc_ml_artist_t*)vlc_ml_get( p_ml, VLC_ML_GET_ARTIST, i_artist_id );
1277}
1278
1279static inline vlc_ml_genre_t* vlc_ml_get_genre( vlc_medialibrary_t* p_ml, int64_t i_genre_id )
1281 return (vlc_ml_genre_t*)vlc_ml_get( p_ml, VLC_ML_GET_GENRE, i_genre_id );
1282}
1283
1284static inline vlc_ml_show_t* vlc_ml_get_show( vlc_medialibrary_t* p_ml, int64_t i_show_id )
1286 return (vlc_ml_show_t*)vlc_ml_get( p_ml, VLC_ML_GET_SHOW, i_show_id );
1287}
1288
1289static inline vlc_ml_group_t* vlc_ml_get_group( vlc_medialibrary_t* p_ml, int64_t i_group_id )
1291 return (vlc_ml_group_t*)vlc_ml_get( p_ml, VLC_ML_GET_GROUP, i_group_id );
1292}
1293
1294static inline vlc_ml_folder_t* vlc_ml_get_folder( vlc_medialibrary_t* p_ml, int64_t i_folder_id )
1296 return (vlc_ml_folder_t*)vlc_ml_get( p_ml, VLC_ML_GET_FOLDER, i_folder_id);
1297}
1298
1299static inline vlc_ml_playlist_t* vlc_ml_get_playlist( vlc_medialibrary_t* p_ml, int64_t i_playlist_id )
1301 return (vlc_ml_playlist_t*)vlc_ml_get( p_ml, VLC_ML_GET_PLAYLIST, i_playlist_id );
1302}
1303
1304static inline vlc_ml_media_list_t* vlc_ml_list_media_of( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int i_parent_type, int64_t i_parent_id )
1306 vlc_assert( p_ml != NULL );
1308 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1309 return NULL;
1310 return res;
1311}
1312
1313static inline size_t vlc_ml_count_media_of( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int i_parent_type, int64_t i_parent_id )
1315 vlc_assert( p_ml != NULL );
1316 size_t res;
1317 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_MEDIA_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1318 return 0;
1319 return res;
1320}
1321
1324 int i_parent_type, int64_t i_parent_id )
1325{
1326 vlc_assert( p_ml != NULL );
1327
1329
1331 params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1332 return NULL;
1333
1334 return res;
1335}
1336
1337static inline size_t vlc_ml_count_video_of( vlc_medialibrary_t* p_ml,
1339 int i_parent_type, int64_t i_parent_id )
1340{
1341 vlc_assert( p_ml != NULL );
1342
1343 size_t res;
1344
1346 params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1347 return 0;
1348
1349 return res;
1350}
1351
1354 int i_parent_type, int64_t i_parent_id )
1355{
1356 vlc_assert( p_ml != NULL );
1357
1359
1361 params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1362 return NULL;
1363
1364 return res;
1365}
1366
1367static inline size_t vlc_ml_count_audio_of( vlc_medialibrary_t* p_ml,
1369 int i_parent_type, int64_t i_parent_id )
1370{
1371 vlc_assert( p_ml != NULL );
1372
1373 size_t res;
1374
1376 params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1377 return 0;
1378
1379 return res;
1380}
1381
1382static inline vlc_ml_artist_list_t* vlc_ml_list_artist_of( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int i_parent_type, int64_t i_parent_id )
1384 vlc_assert( p_ml != NULL );
1386 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ARTISTS_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1387 return NULL;
1388 return res;
1389}
1390
1391static inline size_t vlc_ml_count_artists_of( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int i_parent_type, int64_t i_parent_id )
1393 vlc_assert( p_ml != NULL );
1394 size_t res;
1395 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ARTISTS_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1396 return 0;
1397 return res;
1398}
1399
1400static inline vlc_ml_album_list_t* vlc_ml_list_albums_of( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int i_parent_type, int64_t i_parent_id )
1402 vlc_assert( p_ml != NULL );
1404 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ALBUMS_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1405 return NULL;
1406 return res;
1407}
1408
1409static inline size_t vlc_ml_count_albums_of( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int i_parent_type, int64_t i_parent_id )
1411 vlc_assert( p_ml != NULL );
1412 size_t res;
1413 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ALBUMS_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1414 return 0;
1415 return res;
1416}
1417
1418static inline vlc_ml_media_list_t* vlc_ml_list_album_tracks( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_album_id )
1420 vlc_assert( p_ml != NULL );
1422 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ALBUM_TRACKS, params, i_album_id, &res ) != VLC_SUCCESS )
1423 return NULL;
1424 return res;
1425}
1426
1427static inline size_t vlc_ml_count_album_tracks( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_album_id )
1429 vlc_assert( p_ml != NULL );
1430 size_t count;
1431 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ALBUM_TRACKS, params, i_album_id, &count ) != VLC_SUCCESS )
1432 return 0;
1433 return count;
1434}
1435
1436static inline vlc_ml_media_list_t* vlc_ml_list_album_artists( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_album_id )
1438 vlc_assert( p_ml != NULL );
1440 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ALBUM_ARTISTS, params, i_album_id, &res ) != VLC_SUCCESS )
1441 return NULL;
1442 return res;
1443}
1444
1445static inline size_t vlc_ml_count_album_artists( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_album_id )
1447 vlc_assert( p_ml != NULL );
1448 size_t count;
1449 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ALBUM_ARTISTS, params, i_album_id, &count ) != VLC_SUCCESS )
1450 return 0;
1451 return count;
1452}
1453
1454static inline vlc_ml_album_list_t* vlc_ml_list_artist_albums( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_artist_id )
1456 vlc_assert( p_ml != NULL );
1458 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ARTIST_ALBUMS, params, i_artist_id, &res ) != VLC_SUCCESS )
1459 return NULL;
1460 return res;
1461}
1462
1463static inline size_t vlc_ml_count_artist_albums( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_artist_id )
1465 vlc_assert( p_ml != NULL );
1466 size_t count;
1467 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ARTIST_ALBUMS, params, i_artist_id, &count ) != VLC_SUCCESS )
1468 return 0;
1469 return count;
1470}
1471
1472static inline vlc_ml_media_list_t* vlc_ml_list_artist_tracks( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_artist_id )
1474 vlc_assert( p_ml != NULL );
1476 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ARTIST_TRACKS, params, i_artist_id, &res ) != VLC_SUCCESS )
1477 return NULL;
1478 return res;
1479}
1480
1481static inline size_t vlc_ml_count_artist_tracks( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_artist_id )
1483 vlc_assert( p_ml != NULL );
1484 size_t count;
1485 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ARTIST_TRACKS, params, i_artist_id, &count ) != VLC_SUCCESS )
1486 return 0;
1487 return count;
1488}
1489
1492 vlc_assert( p_ml != NULL );
1494 if ( vlc_ml_list( p_ml, VLC_ML_LIST_VIDEOS, params, &res ) != VLC_SUCCESS )
1495 return NULL;
1496 return res;
1497}
1498
1499static inline size_t vlc_ml_count_video_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1501 vlc_assert( p_ml != NULL );
1502 size_t count;
1503 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_VIDEOS, params, &count ) != VLC_SUCCESS )
1504 return 0;
1505 return count;
1506}
1507
1510 vlc_assert( p_ml != NULL );
1512 if ( vlc_ml_list( p_ml, VLC_ML_LIST_AUDIOS, params, &res ) != VLC_SUCCESS )
1513 return NULL;
1514 return res;
1515}
1516
1517static inline size_t vlc_ml_count_audio_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1519 vlc_assert( p_ml != NULL );
1520 size_t count;
1521 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_AUDIOS, params, &count ) != VLC_SUCCESS )
1522 return 0;
1523 return count;
1524}
1525
1528 vlc_assert( p_ml != NULL );
1530 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ALBUMS, params, &res ) != VLC_SUCCESS )
1531 return NULL;
1532 return res;
1533}
1534
1535static inline size_t vlc_ml_count_albums( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1537 vlc_assert( p_ml != NULL );
1538 size_t count;
1539 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ALBUMS, params, &count ) != VLC_SUCCESS )
1540 return 0;
1541 return count;
1542}
1543
1546 vlc_assert( p_ml != NULL );
1548 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GENRES, params, &res ) != VLC_SUCCESS )
1549 return NULL;
1550 return res;
1551}
1552
1553static inline size_t vlc_ml_count_genres( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1555 vlc_assert( p_ml != NULL );
1556 size_t count;
1557 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRES, params, &count ) != VLC_SUCCESS )
1558 return 0;
1559 return count;
1560}
1561
1562/**
1563 * @brief vlc_ml_list_artists
1564 * @param p_ml an initialized medialibrary instance
1565 * @param params Query parameters, or NULL for the default
1566 * @param b_include_all True if you wish to fetch artists without at least one album.
1567 * @return
1568 */
1569static inline vlc_ml_artist_list_t* vlc_ml_list_artists( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, bool b_include_all )
1571 vlc_assert( p_ml != NULL );
1573 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ARTISTS, params, (int)b_include_all, &res ) != VLC_SUCCESS )
1574 return NULL;
1575 return res;
1576}
1577
1578static inline size_t vlc_ml_count_artists( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, bool includeAll )
1580 vlc_assert( p_ml != NULL );
1581 size_t count;
1582 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ARTISTS, params, includeAll, &count ) != VLC_SUCCESS )
1583 return 0;
1584 return count;
1585}
1586
1589 vlc_assert( p_ml != NULL );
1590 vlc_ml_show_list_t* res;
1591 if ( vlc_ml_list( p_ml, VLC_ML_LIST_SHOWS, params, &res ) != VLC_SUCCESS )
1592 return NULL;
1593 return res;
1594}
1595
1596static inline size_t vlc_ml_count_shows( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1598 vlc_assert( p_ml != NULL );
1599 size_t count;
1600 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_SHOWS, params, &count ) != VLC_SUCCESS )
1601 return 0;
1602 return count;
1603}
1604
1605static inline vlc_ml_artist_list_t* vlc_ml_list_genre_artists( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_genre_id )
1607 vlc_assert( p_ml != NULL );
1609 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GENRE_ARTISTS, params, i_genre_id, &res ) != VLC_SUCCESS )
1610 return NULL;
1611 return res;
1612}
1613
1614static inline size_t vlc_ml_count_genre_artists( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_genre_id )
1616 vlc_assert( p_ml != NULL );
1617 size_t count;
1618 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRE_ARTISTS, params, i_genre_id, &count ) != VLC_SUCCESS )
1619 return 0;
1620 return count;
1621}
1622
1623static inline vlc_ml_media_list_t* vlc_ml_list_genre_tracks( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_genre_id )
1625 vlc_assert( p_ml != NULL );
1627 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GENRE_TRACKS, params, i_genre_id, &res ) != VLC_SUCCESS )
1628 return NULL;
1629 return res;
1630}
1631
1632static inline size_t vlc_ml_count_genre_tracks( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_genre_id )
1634 vlc_assert( p_ml != NULL );
1635 size_t count;
1636 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRE_TRACKS, params, i_genre_id, &count ) != VLC_SUCCESS )
1637 return 0;
1638 return count;
1639}
1640
1641static inline vlc_ml_album_list_t* vlc_ml_list_genre_albums( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_genre_id )
1643 vlc_assert( p_ml != NULL );
1645 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GENRE_ALBUMS, params, i_genre_id, &res ) != VLC_SUCCESS )
1646 return NULL;
1647 return res;
1648}
1649
1650static inline size_t vlc_ml_count_genre_albums( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_genre_id )
1652 vlc_assert( p_ml != NULL );
1653 size_t count;
1654 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRE_ALBUMS, params, i_genre_id, &count ) != VLC_SUCCESS )
1655 return 0;
1656 return count;
1657}
1658
1659static inline vlc_ml_media_list_t* vlc_ml_list_show_episodes( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_show_id )
1661 vlc_assert( p_ml != NULL );
1663 if ( vlc_ml_list( p_ml, VLC_ML_LIST_SHOW_EPISODES, params, i_show_id, &res ) != VLC_SUCCESS )
1664 return NULL;
1665 return res;
1666}
1667
1668static inline size_t vlc_ml_count_show_episodes( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_show_id )
1670 vlc_assert( p_ml != NULL );
1671 size_t count;
1672 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRE_ALBUMS, params, i_show_id, &count ) != VLC_SUCCESS )
1673 return 0;
1674 return count;
1675}
1676
1677static inline vlc_ml_label_list_t* vlc_ml_list_media_labels( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_media_id )
1679 vlc_assert( p_ml != NULL );
1681 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA_LABELS, params, i_media_id, &res ) != VLC_SUCCESS )
1682 return NULL;
1683 return res;
1684}
1685
1686static inline size_t vlc_ml_count_media_labels( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_media_id )
1688 vlc_assert( p_ml != NULL );
1689 size_t count;
1690 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA_LABELS, params, i_media_id, &count ) != VLC_SUCCESS )
1691 return 0;
1692 return count;
1693}
1694
1697 vlc_assert( p_ml != NULL );
1699 if ( vlc_ml_list( p_ml, VLC_ML_LIST_HISTORY, params, (int)type, &res ) != VLC_SUCCESS )
1700 return NULL;
1701 return res;
1702}
1703
1704static inline size_t vlc_ml_count_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, vlc_ml_history_type_t type )
1706 vlc_assert( p_ml != NULL );
1707 size_t count;
1708 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_HISTORY, params, (int)type, &count ) != VLC_SUCCESS )
1709 return 0;
1710 return count;
1711}
1712
1715 vlc_assert( p_ml != NULL );
1717 if ( vlc_ml_list( p_ml, VLC_ML_LIST_VIDEO_HISTORY, params, &res ) != VLC_SUCCESS )
1718 return NULL;
1719 return res;
1720}
1721
1722static inline size_t vlc_ml_count_video_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1724 vlc_assert( p_ml != NULL );
1725 size_t count;
1726 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_VIDEO_HISTORY, params, &count ) != VLC_SUCCESS )
1727 return 0;
1728 return count;
1729}
1730
1733 vlc_assert( p_ml != NULL );
1735 if ( vlc_ml_list( p_ml, VLC_ML_LIST_AUDIO_HISTORY, params, &res ) != VLC_SUCCESS )
1736 return NULL;
1737 return res;
1738}
1739
1740static inline size_t vlc_ml_count_audio_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1742 vlc_assert( p_ml != NULL );
1743 size_t count;
1744 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_AUDIO_HISTORY, params, &count ) != VLC_SUCCESS )
1745 return 0;
1746 return count;
1747}
1748
1749//-------------------------------------------------------------------------------------------------
1750// Groups
1751
1754 vlc_assert( p_ml != NULL );
1756 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GROUPS, params, &res ) != VLC_SUCCESS )
1757 return NULL;
1758 return res;
1759}
1760
1761static inline size_t vlc_ml_count_groups( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1763 vlc_assert( p_ml != NULL );
1764 size_t count;
1765 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GROUPS, params, &count ) != VLC_SUCCESS )
1766 return 0;
1767 return count;
1768}
1769
1770static inline vlc_ml_media_list_t* vlc_ml_list_group_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_group_id )
1772 vlc_assert( p_ml != NULL );
1774 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GROUP_MEDIA, params, i_group_id, &res ) != VLC_SUCCESS )
1775 return NULL;
1776 return res;
1777}
1778
1779static inline size_t vlc_ml_count_group_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_group_id )
1781 vlc_assert( p_ml != NULL );
1782 size_t count;
1783 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GROUP_MEDIA, params, i_group_id, &count ) != VLC_SUCCESS )
1784 return 0;
1785 return count;
1786}
1787
1788//-------------------------------------------------------------------------------------------------
1789
1792 vlc_assert( p_ml != NULL );
1794 if ( vlc_ml_list( p_ml, VLC_ML_LIST_PLAYLISTS, params, (int) playlist_type, &res ) != VLC_SUCCESS )
1795 return NULL;
1796 return res;
1797}
1798
1799static inline size_t vlc_ml_count_playlists( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, vlc_ml_playlist_type_t playlist_type)
1801 vlc_assert( p_ml != NULL );
1802 size_t count;
1803 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_PLAYLISTS, params, (int) playlist_type, &count ) != VLC_SUCCESS )
1804 return 0;
1805 return count;
1806}
1807
1808static inline vlc_ml_media_list_t* vlc_ml_list_playlist_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_playlist_id )
1810 vlc_assert( p_ml != NULL );
1812 if ( vlc_ml_list( p_ml, VLC_ML_LIST_PLAYLIST_MEDIA, params, i_playlist_id, &res ) != VLC_SUCCESS )
1813 return NULL;
1814 return res;
1815}
1816
1817static inline size_t vlc_ml_count_playlist_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_playlist_id )
1819 vlc_assert( p_ml != NULL );
1820 size_t count;
1821 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_PLAYLIST_MEDIA, params, i_playlist_id, &count ) != VLC_SUCCESS )
1822 return 0;
1823 return count;
1824}
1825
1828 vlc_assert( p_ml != NULL );
1830 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ENTRY_POINTS, params, (int)false, &res ) != VLC_SUCCESS )
1831 return NULL;
1832 return res;
1833}
1834
1835static inline size_t vlc_ml_count_entry_points( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1837 vlc_assert( p_ml != NULL );
1838 size_t res;
1839 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ENTRY_POINTS, params, (int)false, &res ) != VLC_SUCCESS )
1840 return 0;
1841 return res;
1842}
1843
1844static inline vlc_ml_folder_list_t*
1847 vlc_assert( p_ml != NULL );
1849 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ENTRY_POINTS, params, (int)true, &res ) != VLC_SUCCESS )
1850 return NULL;
1851 return res;
1852}
1853
1854static inline size_t vlc_ml_count_banned_entry_points( vlc_medialibrary_t* p_ml,
1856{
1857 vlc_assert( p_ml != NULL );
1858 size_t res;
1859 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ENTRY_POINTS, params, (int)true, &res ) != VLC_SUCCESS )
1860 return 0;
1861 return res;
1862}
1863
1864// Folders
1865
1868{
1869 vlc_assert(p_ml != NULL);
1870
1872
1873 if (vlc_ml_list(p_ml, VLC_ML_LIST_FOLDERS, params, &res) != VLC_SUCCESS)
1874 return NULL;
1875
1876 return res;
1877}
1878
1879static inline size_t vlc_ml_count_folders(vlc_medialibrary_t * p_ml,
1881{
1882 vlc_assert(p_ml != NULL);
1883
1884 size_t count;
1885
1886 if (vlc_ml_list(p_ml, VLC_ML_COUNT_FOLDERS, params, &count) != VLC_SUCCESS)
1887 return 0;
1888
1889 return count;
1890}
1891
1892static inline
1896{
1897 vlc_assert(p_ml != NULL);
1898
1900
1901 if (vlc_ml_list(p_ml, VLC_ML_LIST_FOLDERS_BY_TYPE, params, (int) type, &res) != VLC_SUCCESS)
1902 return NULL;
1903
1904 return res;
1905}
1906
1907static inline size_t vlc_ml_count_folders_by_type(vlc_medialibrary_t * p_ml,
1910{
1911 vlc_assert(p_ml != NULL);
1912
1913 size_t count;
1914
1915 if (vlc_ml_list(p_ml, VLC_ML_COUNT_FOLDERS_BY_TYPE, params, (int) type, &count) != VLC_SUCCESS)
1916 return 0;
1917
1918 return count;
1919}
1920
1921// Folder Media
1922
1925 int64_t i_folder_id)
1926{
1927 vlc_assert(p_ml != NULL);
1928
1929 vlc_ml_media_list_t * res;
1930
1931 if (vlc_ml_list(p_ml, VLC_ML_LIST_FOLDER_MEDIA, params, i_folder_id, &res) != VLC_SUCCESS)
1932 return NULL;
1933
1934 return res;
1935}
1936
1937static inline size_t vlc_ml_count_folder_media(vlc_medialibrary_t * p_ml,
1939 int64_t i_folder_id)
1940{
1941 vlc_assert(p_ml != NULL);
1942
1943 size_t count;
1944
1945 if (vlc_ml_list(p_ml, VLC_ML_COUNT_FOLDER_MEDIA, params, i_folder_id, &count) != VLC_SUCCESS)
1946 return 0;
1947
1948 return count;
1949}
1950
1951#ifdef __cplusplus
1952}
1953#endif /* C++ */
1954
1955#ifndef __cplusplus
1956# define vlc_ml_release( OBJ ) _Generic( ( OBJ ), \
1957 vlc_ml_show_t*: vlc_ml_show_release, \
1958 vlc_ml_artist_t*: vlc_ml_artist_release, \
1959 vlc_ml_album_t*: vlc_ml_album_release, \
1960 vlc_ml_genre_t*: vlc_ml_genre_release, \
1961 vlc_ml_media_t*: vlc_ml_media_release, \
1962 vlc_ml_group_t*: vlc_ml_group_release, \
1963 vlc_ml_folder_t*: vlc_ml_folder_release, \
1964 vlc_ml_playlist_t*: vlc_ml_playlist_release, \
1965 vlc_ml_label_list_t*: vlc_ml_label_list_release, \
1966 vlc_ml_file_list_t*: vlc_ml_file_list_release, \
1967 vlc_ml_artist_list_t*: vlc_ml_artist_list_release, \
1968 vlc_ml_media_list_t*: vlc_ml_media_list_release, \
1969 vlc_ml_album_list_t*: vlc_ml_album_list_release, \
1970 vlc_ml_show_list_t*: vlc_ml_show_list_release, \
1971 vlc_ml_genre_list_t*: vlc_ml_genre_list_release, \
1972 vlc_ml_group_list_t*: vlc_ml_group_list_release, \
1973 vlc_ml_playlist_list_t*: vlc_ml_playlist_list_release, \
1974 vlc_ml_folder_list_t*: vlc_ml_folder_list_release, \
1975 vlc_ml_playback_states_all*: vlc_ml_playback_states_all_release, \
1976 vlc_ml_bookmark_t*: vlc_ml_bookmark_release, \
1977 vlc_ml_bookmark_list_t*: vlc_ml_bookmark_list_release \
1978 )( OBJ )
1979#else
1980static inline void vlc_ml_release( vlc_ml_show_t* show ) { vlc_ml_show_release( show ); }
1981static inline void vlc_ml_release( vlc_ml_artist_t* artist ) { vlc_ml_artist_release( artist ); }
1982static inline void vlc_ml_release( vlc_ml_album_t* album ) { vlc_ml_album_release( album ); }
1983static inline void vlc_ml_release( vlc_ml_genre_t* genre ) { vlc_ml_genre_release( genre ); }
1984static inline void vlc_ml_release( vlc_ml_media_t* media ) { vlc_ml_media_release( media ); }
1985static inline void vlc_ml_release( vlc_ml_group_t* group ) { vlc_ml_group_release( group ); }
1986static inline void vlc_ml_release( vlc_ml_folder_t* folder ) { vlc_ml_folder_release( folder ); }
1987static inline void vlc_ml_release( vlc_ml_playlist_t* playlist ) { vlc_ml_playlist_release( playlist ); }
1998static inline void vlc_ml_release( vlc_ml_playback_states_all* prefs ) { vlc_ml_playback_states_all_release( prefs ); }
1999static inline void vlc_ml_release( vlc_ml_bookmark_t* bookmark ) { vlc_ml_bookmark_release( bookmark ); }
2001#endif
2002
2003#endif /* VLC_MEDIA_LIBRARY_H */
struct vlc_param ** list
Definition core.c:402
size_t count
Definition core.c:403
#define VLC_USED
Definition fourcc_gen.c:32
#define VLC_API
Definition fourcc_gen.c:31
#define vlc_assert(pred)
Run-time assertion.
Definition vlc_common.h:290
#define VLC_SUCCESS
No error.
Definition vlc_common.h:478
const char name[16]
Definition httpd.c:1298
int i_type
Definition httpd.c:1299
Describes an input and is used to spawn input_thread_t objects.
Definition vlc_input_item.h:98
Definition vlc_objects.h:103
Internal module descriptor.
Definition modules.h:76
Definition vlc_media_library.h:875
void(* pf_send_event)(vlc_medialibrary_module_t *p_ml, const vlc_ml_event_t *p_event)
Definition vlc_media_library.h:876
Definition vlc_media_library.h:880
void * p_sys
Definition vlc_media_library.h:885
struct vlc_object_t obj
Definition vlc_media_library.h:881
int(* pf_control)(struct vlc_medialibrary_module_t *p_ml, int i_query, va_list args)
Definition vlc_media_library.h:887
int(* pf_list)(struct vlc_medialibrary_module_t *p_ml, int i_query, const vlc_ml_query_params_t *p_params, va_list args)
List some entities from the medialibrary.
Definition vlc_media_library.h:901
const vlc_medialibrary_callbacks_t * cbs
Definition vlc_media_library.h:913
module_t * p_module
Definition vlc_media_library.h:883
Definition medialibrary.c:42
Definition vlc_media_library.h:345
size_t i_nb_items
Definition vlc_media_library.h:346
vlc_ml_album_t p_items[]
Definition vlc_media_library.h:347
Definition vlc_media_library.h:315
vlc_ml_thumbnail_t thumbnails[VLC_ML_THUMBNAIL_SIZE_COUNT]
Definition vlc_media_library.h:319
int64_t i_duration
Definition vlc_media_library.h:326
char * psz_summary
Definition vlc_media_library.h:318
int64_t i_artist_id
Definition vlc_media_library.h:321
unsigned int i_year
Definition vlc_media_library.h:327
char * psz_title
Definition vlc_media_library.h:317
uint32_t i_nb_tracks
Definition vlc_media_library.h:323
uint32_t i_nb_present_tracks
Definition vlc_media_library.h:324
char * psz_artist
Definition vlc_media_library.h:320
uint32_t i_nb_discs
Definition vlc_media_library.h:325
int64_t i_id
Definition vlc_media_library.h:316
Definition vlc_media_library.h:310
size_t i_nb_items
Definition vlc_media_library.h:311
vlc_ml_artist_t p_items[]
Definition vlc_media_library.h:312
Definition vlc_media_library.h:297
char * psz_mb_id
Definition vlc_media_library.h:302
char * psz_shortbio
Definition vlc_media_library.h:300
int64_t i_id
Definition vlc_media_library.h:298
unsigned int i_nb_album
Definition vlc_media_library.h:304
char * psz_name
Definition vlc_media_library.h:299
uint32_t i_nb_present_tracks
Definition vlc_media_library.h:306
vlc_ml_thumbnail_t thumbnails[VLC_ML_THUMBNAIL_SIZE_COUNT]
Definition vlc_media_library.h:301
unsigned int i_nb_tracks
Definition vlc_media_library.h:305
Definition vlc_media_library.h:394
int64_t i_time
The bookmark time.
Definition vlc_media_library.h:396
char * psz_name
The bookmark name.
Definition vlc_media_library.h:397
int64_t i_media_id
The associated media ID.
Definition vlc_media_library.h:395
char * psz_description
The bookmark description.
Definition vlc_media_library.h:398
Definition vlc_media_library.h:402
size_t i_nb_items
Definition vlc_media_library.h:403
vlc_ml_bookmark_t p_items[]
Definition vlc_media_library.h:404
Definition medialibrary.c:35
Definition vlc_media_library.h:800
struct vlc_ml_event_t::@244::@249 entry_point_removed
struct vlc_ml_event_t::@244::@251 entry_point_unbanned
struct vlc_ml_event_t::@244::@255 deletion
struct vlc_ml_event_t::@244::@250 entry_point_banned
union vlc_ml_event_t::@244::@253 creation
struct vlc_ml_event_t::@244::@256 background_idle_changed
uint8_t i_percent
Definition vlc_media_library.h:834
struct vlc_ml_event_t::@244::@257 media_thumbnail_generated
int64_t i_entity_id
Definition vlc_media_library.h:849
bool b_success
Definition vlc_media_library.h:815
struct vlc_ml_event_t::@244::@246 discovery_progress
struct vlc_ml_event_t::@244::@252 parsing_progress
const vlc_ml_artist_t * p_artist
Definition vlc_media_library.h:839
vlc_ml_history_type_t history_type
Definition vlc_media_library.h:867
const char * psz_entry_point
Definition vlc_media_library.h:806
int i_type
Definition vlc_media_library.h:801
const vlc_ml_album_t * p_album
Definition vlc_media_library.h:840
const vlc_ml_playlist_t * p_playlist
Definition vlc_media_library.h:842
const vlc_ml_folder_t * p_folder
Definition vlc_media_library.h:845
struct vlc_ml_event_t::@244::@254 modification
const vlc_ml_genre_t * p_genre
Definition vlc_media_library.h:843
const vlc_ml_media_t * p_media
Definition vlc_media_library.h:838
vlc_ml_thumbnail_size_t i_size
Definition vlc_media_library.h:862
struct vlc_ml_event_t::@244::@247 discovery_failed
struct vlc_ml_event_t::@244::@258 history_changed
bool b_idle
Definition vlc_media_library.h:857
const vlc_ml_group_t * p_group
Definition vlc_media_library.h:841
const vlc_ml_bookmark_t * p_bookmark
Definition vlc_media_library.h:844
struct vlc_ml_event_t::@244::@248 entry_point_added
Definition vlc_media_library.h:165
size_t i_nb_items
Definition vlc_media_library.h:166
vlc_ml_file_t p_items[]
Definition vlc_media_library.h:167
Definition vlc_media_library.h:154
int64_t i_size
Definition vlc_media_library.h:156
bool b_present
Definition vlc_media_library.h:161
time_t i_last_modification_date
Definition vlc_media_library.h:157
bool b_external
Definition vlc_media_library.h:159
vlc_ml_file_type_t i_type
Definition vlc_media_library.h:158
char * psz_mrl
Definition vlc_media_library.h:155
bool b_removable
Definition vlc_media_library.h:160
Definition vlc_media_library.h:388
vlc_ml_folder_t p_items[]
Definition vlc_media_library.h:390
size_t i_nb_items
Definition vlc_media_library.h:389
Definition vlc_media_library.h:375
char * psz_mrl
The folder's MRL.
Definition vlc_media_library.h:378
bool b_present
The folder's presence state.
Definition vlc_media_library.h:383
bool b_banned
Will be true if the user required this folder to be excluded.
Definition vlc_media_library.h:384
char * psz_name
The folder's name.
Definition vlc_media_library.h:377
unsigned int i_nb_audio
The number of audio for this volder.
Definition vlc_media_library.h:381
int64_t i_id
The folder's MRL.
Definition vlc_media_library.h:376
unsigned int i_nb_media
The media count.
Definition vlc_media_library.h:379
unsigned int i_nb_video
The number of video for this folder.
Definition vlc_media_library.h:380
int64_t i_duration
The sum of all the member durations of the folder in ms.
Definition vlc_media_library.h:382
Definition vlc_media_library.h:357
vlc_ml_genre_t p_items[]
Definition vlc_media_library.h:359
size_t i_nb_items
Definition vlc_media_library.h:358
Definition vlc_media_library.h:331
vlc_ml_thumbnail_t thumbnails[VLC_ML_THUMBNAIL_SIZE_COUNT]
Definition vlc_media_library.h:335
size_t i_nb_tracks
Definition vlc_media_library.h:334
char * psz_name
Definition vlc_media_library.h:333
int64_t i_id
Definition vlc_media_library.h:332
Definition vlc_media_library.h:363
size_t i_nb_items
Definition vlc_media_library.h:364
vlc_ml_group_t p_items[]
Definition vlc_media_library.h:365
Definition vlc_media_library.h:245
uint32_t i_nb_video
Definition vlc_media_library.h:251
uint32_t i_nb_seen
Definition vlc_media_library.h:259
time_t i_creation_date
Definition vlc_media_library.h:264
int64_t i_id
Definition vlc_media_library.h:246
uint32_t i_nb_present_video
Definition vlc_media_library.h:255
uint32_t i_nb_present_audio
Definition vlc_media_library.h:256
char * psz_name
Definition vlc_media_library.h:248
uint32_t i_nb_unknown
Definition vlc_media_library.h:253
int64_t i_duration
Definition vlc_media_library.h:262
uint32_t i_nb_total_media
Definition vlc_media_library.h:250
uint32_t i_nb_present_media
Definition vlc_media_library.h:254
uint32_t i_nb_present_seen
Definition vlc_media_library.h:260
time_t i_last_modification_date
Definition vlc_media_library.h:265
uint32_t i_nb_present_unknown
Definition vlc_media_library.h:257
uint32_t i_nb_audio
Definition vlc_media_library.h:252
Definition vlc_media_library.h:148
size_t i_nb_items
Definition vlc_media_library.h:149
vlc_ml_label_t p_items[]
Definition vlc_media_library.h:150
Definition vlc_media_library.h:142
int64_t i_id
Definition vlc_media_library.h:143
char * psz_name
Definition vlc_media_library.h:144
Definition vlc_media_library.h:339
size_t i_nb_items
Definition vlc_media_library.h:340
vlc_ml_media_t p_items[]
Definition vlc_media_library.h:341
Definition vlc_media_library.h:205
int32_t i_year
Definition vlc_media_library.h:214
vlc_ml_movie_t movie
Definition vlc_media_library.h:231
int64_t i_duration
Definition vlc_media_library.h:216
char * psz_title
Definition vlc_media_library.h:220
int64_t i_album_id
Definition vlc_media_library.h:235
vlc_ml_file_list_t * p_files
Definition vlc_media_library.h:211
time_t i_last_played_date
Definition vlc_media_library.h:219
int i_track_nb
Definition vlc_media_library.h:238
vlc_ml_thumbnail_t thumbnails[VLC_ML_THUMBNAIL_SIZE_COUNT]
Definition vlc_media_library.h:223
vlc_ml_media_subtype_t i_subtype
Definition vlc_media_library.h:209
vlc_ml_show_episode_t show_episode
Definition vlc_media_library.h:230
int64_t i_id
Definition vlc_media_library.h:206
vlc_ml_media_type_t i_type
Definition vlc_media_library.h:208
int i_disc_nb
Definition vlc_media_library.h:239
int64_t i_artist_id
Definition vlc_media_library.h:234
uint32_t i_playcount
Definition vlc_media_library.h:217
bool b_is_favorite
Definition vlc_media_library.h:225
bool b_is_public
Definition vlc_media_library.h:226
struct vlc_ml_media_t::@241::@243 album_track
char * psz_filename
Definition vlc_media_library.h:221
vlc_ml_media_track_list_t * p_tracks
Definition vlc_media_library.h:212
double f_progress
Definition vlc_media_library.h:218
int64_t i_genre_id
Definition vlc_media_library.h:236
Definition vlc_media_library.h:199
size_t i_nb_items
Definition vlc_media_library.h:200
vlc_ml_media_track_t p_items[]
Definition vlc_media_library.h:201
Definition vlc_media_library.h:171
char * psz_language
Definition vlc_media_library.h:173
uint32_t i_nbChannels
Definition vlc_media_library.h:182
uint32_t i_height
Definition vlc_media_library.h:188
uint32_t i_sampleRate
Definition vlc_media_library.h:183
uint32_t i_sarNum
Definition vlc_media_library.h:190
uint32_t i_fpsDen
Definition vlc_media_library.h:193
struct vlc_ml_media_track_t::@237::@239 a
struct vlc_ml_media_track_t::@237::@240 v
char * psz_codec
Definition vlc_media_library.h:172
vlc_ml_track_type_t i_type
Definition vlc_media_library.h:175
uint32_t i_fpsNum
Definition vlc_media_library.h:192
uint32_t i_sarDen
Definition vlc_media_library.h:191
uint32_t i_bitrate
Definition vlc_media_library.h:176
uint32_t i_width
Definition vlc_media_library.h:189
char * psz_description
Definition vlc_media_library.h:174
Definition vlc_media_library.h:116
char * psz_imdb_id
Definition vlc_media_library.h:118
char * psz_summary
Definition vlc_media_library.h:117
Definition vlc_media_library.h:658
char * deinterlace
Definition vlc_media_library.h:667
char * current_audio_track
Definition vlc_media_library.h:663
char * current_video_track
Definition vlc_media_library.h:662
float zoom
Definition vlc_media_library.h:660
int current_title
Definition vlc_media_library.h:661
char * aspect_ratio
Definition vlc_media_library.h:665
char * crop
Definition vlc_media_library.h:666
float rate
Definition vlc_media_library.h:659
char * current_subtitle_track
Definition vlc_media_library.h:664
char * video_filter
Definition vlc_media_library.h:668
Definition vlc_media_library.h:369
size_t i_nb_items
Definition vlc_media_library.h:370
vlc_ml_playlist_t p_items[]
Definition vlc_media_library.h:371
Definition vlc_media_library.h:269
unsigned int i_nb_media
Definition vlc_media_library.h:278
int64_t i_duration
Definition vlc_media_library.h:290
char * psz_artwork_mrl
Definition vlc_media_library.h:276
char * psz_mrl
Definition vlc_media_library.h:274
uint32_t i_nb_unknown
Definition vlc_media_library.h:281
uint32_t i_nb_present_audio
Definition vlc_media_library.h:285
unsigned int i_nb_present_media
Definition vlc_media_library.h:283
char * psz_name
Definition vlc_media_library.h:272
uint32_t i_nb_present_video
Definition vlc_media_library.h:284
uint32_t i_nb_duration_unknown
Definition vlc_media_library.h:291
bool b_is_read_only
Definition vlc_media_library.h:293
uint32_t i_nb_audio
Definition vlc_media_library.h:280
uint32_t i_nb_present_unknown
Definition vlc_media_library.h:286
int64_t i_id
Definition vlc_media_library.h:270
uint32_t i_creation_date
Definition vlc_media_library.h:288
uint32_t i_nb_video
Definition vlc_media_library.h:279
Generic parameter set for medialibrary queries.
Definition vlc_media_library.h:441
bool b_favorite_only
Definition vlc_media_library.h:447
const char * psz_pattern
Definition vlc_media_library.h:442
bool b_desc
Definition vlc_media_library.h:446
vlc_ml_sorting_criteria_t i_sort
Definition vlc_media_library.h:445
uint32_t i_offset
Definition vlc_media_library.h:444
bool b_public_only
Definition vlc_media_library.h:448
uint32_t i_nbResults
Definition vlc_media_library.h:443
Definition vlc_media_library.h:122
char * psz_summary
Definition vlc_media_library.h:123
uint32_t i_season_number
Definition vlc_media_library.h:126
uint32_t i_episode_nb
Definition vlc_media_library.h:125
char * psz_tvdb_id
Definition vlc_media_library.h:124
Definition vlc_media_library.h:351
vlc_ml_show_t p_items[]
Definition vlc_media_library.h:353
size_t i_nb_items
Definition vlc_media_library.h:352
Definition vlc_media_library.h:130
unsigned int i_release_year
Definition vlc_media_library.h:136
char * psz_tvdb_id
Definition vlc_media_library.h:135
uint32_t i_nb_episodes
Definition vlc_media_library.h:137
char * psz_artwork_mrl
Definition vlc_media_library.h:134
uint32_t i_nb_seasons
Definition vlc_media_library.h:138
char * psz_name
Definition vlc_media_library.h:132
int64_t i_id
Definition vlc_media_library.h:131
char * psz_summary
Definition vlc_media_library.h:133
Definition vlc_media_library.h:106
char * psz_mrl
Definition vlc_media_library.h:107
vlc_ml_thumbnail_status_t i_status
True if a thumbnail is available, or if thumbnail generation was attempted but failed.
Definition vlc_media_library.h:112
VLC object common members.
Definition vlc_objects.h:53
const char * psz_name
Definition text_style.c:33
This file is a collection of common definitions and types.
static int vlc_ml_media_set_type(vlc_medialibrary_t *p_ml, int64_t i_media_id, vlc_ml_media_type_t i_type)
Definition vlc_media_library.h:1124
vlc_medialibrary_t * libvlc_MlCreate(libvlc_int_t *p_libvlc)
Definition medialibrary.c:102
void vlc_ml_media_list_release(vlc_ml_media_list_t *p_list)
Definition medialibrary.c:322
void vlc_ml_show_list_release(vlc_ml_show_list_t *p_list)
Definition medialibrary.c:340
static vlc_ml_media_list_t * vlc_ml_list_show_episodes(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_show_id)
Definition vlc_media_library.h:1660
static vlc_ml_artist_list_t * vlc_ml_list_artist_of(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int i_parent_type, int64_t i_parent_id)
Definition vlc_media_library.h:1383
static int vlc_ml_clear_history(vlc_medialibrary_t *p_ml, vlc_ml_history_type_t type)
Definition vlc_media_library.h:1039
static int vlc_ml_playlist_rename(vlc_medialibrary_t *p_ml, int64_t i_playlist_id, const char *name)
Definition vlc_media_library.h:1241
void * vlc_ml_get(vlc_medialibrary_t *p_ml, int i_query,...)
Definition medialibrary.c:419
static int vlc_ml_playlist_move(vlc_medialibrary_t *p_ml, int64_t i_playlist_id, uint32_t i_from, uint32_t i_to)
Definition vlc_media_library.h:1224
static int vlc_ml_media_set_all_playback_states(vlc_medialibrary_t *p_ml, int64_t i_media_id, const vlc_ml_playback_states_all *prefs)
Definition vlc_media_library.h:1088
static size_t vlc_ml_count_banned_entry_points(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1855
static size_t vlc_ml_count_playlist_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_playlist_id)
Definition vlc_media_library.h:1818
static vlc_ml_media_t * vlc_ml_get_media(vlc_medialibrary_t *p_ml, int64_t i_media_id)
Definition vlc_media_library.h:1248
static vlc_ml_media_t * vlc_ml_new_external_media(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1044
vlc_ml_thumbnail_size_t
Definition vlc_media_library.h:73
@ VLC_ML_THUMBNAIL_SIZE_COUNT
Definition vlc_media_library.h:77
@ VLC_ML_THUMBNAIL_BANNER
Definition vlc_media_library.h:75
@ VLC_ML_THUMBNAIL_SMALL
Definition vlc_media_library.h:74
static vlc_ml_media_list_t * vlc_ml_list_artist_tracks(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_artist_id)
Definition vlc_media_library.h:1473
void vlc_ml_album_list_release(vlc_ml_album_list_t *p_list)
Definition medialibrary.c:331
void vlc_ml_playlist_release(vlc_ml_playlist_t *p_playlist)
Definition medialibrary.c:261
static size_t vlc_ml_count_shows(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1597
vlc_ml_get_queries
Definition vlc_media_library.h:452
@ VLC_ML_GET_SHOW
arg1: Show ID; ret: vlc_ml_show_t*
Definition vlc_media_library.h:460
@ VLC_ML_GET_MEDIA_BY_MRL
arg1: Media MRL; ret: vlc_ml_media_t*
Definition vlc_media_library.h:454
@ VLC_ML_GET_GENRE
arg1: Genre ID; ret: vlc_ml_genre_t*
Definition vlc_media_library.h:459
@ VLC_ML_GET_INPUT_ITEM_BY_MRL
arg1: Media MRL; ret: input_item_t*
Definition vlc_media_library.h:456
@ VLC_ML_GET_GROUP
arg1: Group ID; ret: vlc_ml_group_t*
Definition vlc_media_library.h:462
@ VLC_ML_GET_PLAYLIST
arg1: Playlist ID; ret: vlc_ml_playlist_t*
Definition vlc_media_library.h:461
@ VLC_ML_GET_FOLDER
arg1: folder ID; ret: vlc_ml_folder_t*
Definition vlc_media_library.h:463
@ VLC_ML_GET_MEDIA
arg1: Media ID; ret: vlc_ml_media_t*
Definition vlc_media_library.h:453
@ VLC_ML_GET_ALBUM
arg1: Album ID; ret: vlc_ml_album_t*
Definition vlc_media_library.h:457
@ VLC_ML_GET_INPUT_ITEM
arg1: Media ID; ret: input_item_t*
Definition vlc_media_library.h:455
@ VLC_ML_GET_ARTIST
arg1: Artist ID; ret: vlc_ml_artist_t*
Definition vlc_media_library.h:458
static size_t vlc_ml_count_genre_tracks(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_genre_id)
Definition vlc_media_library.h:1633
static vlc_ml_playlist_t * vlc_ml_playlist_create(vlc_medialibrary_t *p_ml, const char *name)
Definition vlc_media_library.h:1186
static int vlc_ml_remove_stream(vlc_medialibrary_t *p_ml, int64_t i_media_id)
Definition vlc_media_library.h:1060
static size_t vlc_ml_count_folder_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_folder_id)
Definition vlc_media_library.h:1938
static size_t vlc_ml_count_show_episodes(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_show_id)
Definition vlc_media_library.h:1669
vlc_ml_control
Definition vlc_media_library.h:568
@ VLC_ML_MEDIA_SET_ALL_MEDIA_PLAYBACK_STATES
arg1: media id; arg2: const vlc_ml_playback_states_all*
Definition vlc_media_library.h:603
@ VLC_ML_RESUME_BACKGROUND
no args; can't fail
Definition vlc_media_library.h:587
@ VLC_ML_MEDIA_UPDATE_BOOKMARK
arg1: media id; arg2: int64_t; arg3: const char*; arg4: const char*
Definition vlc_media_library.h:614
@ VLC_ML_MEDIA_REMOVE_BOOKMARK
arg1: media id; arg2: int64_t
Definition vlc_media_library.h:612
@ VLC_ML_PLAYLIST_INSERT
arg1: playlist id; arg2: media id; arg3: position; can fail
Definition vlc_media_library.h:620
@ VLC_ML_MEDIA_ADD_BOOKMARK
arg1: media id; arg2: int64_t
Definition vlc_media_library.h:611
@ VLC_ML_NEW_EXTERNAL_MEDIA
arg1: const char*; arg2(out): vlc_ml_media_t**
Definition vlc_media_library.h:593
@ VLC_ML_RELOAD_FOLDER
Reload a specific folder, or all.
Definition vlc_media_library.h:580
@ VLC_ML_MEDIA_SET_MEDIA_PLAYBACK_STATE
arg1: media id; arg2: vlc_ml_playback_state; arg3: const char*;
Definition vlc_media_library.h:601
@ VLC_ML_ADD_FOLDER
arg1: mrl (const char*) res: can't fail
Definition vlc_media_library.h:570
@ VLC_ML_MEDIA_SET_TYPE
arg1: media id; arg2: vlc_ml_media_type_t
Definition vlc_media_library.h:608
@ VLC_ML_PLAYLIST_APPEND
arg1: playlist id; arg2: media id; can fail
Definition vlc_media_library.h:619
@ VLC_ML_MEDIA_GENERATE_THUMBNAIL
arg1: media id; arg2: vlc_ml_thumbnail_size_t; arg3: width; arg4: height; arg5: position
Definition vlc_media_library.h:606
@ VLC_ML_REMOVE_FOLDER
arg1: mrl (const char*) res: can't fail
Definition vlc_media_library.h:571
@ VLC_ML_SET_FOLDER_PRIVATE
arg1: mrl (const char *); res: can't fail
Definition vlc_media_library.h:583
@ VLC_ML_MEDIA_GET_ALL_MEDIA_PLAYBACK_STATES
arg1: media id; arg2(out): vlc_ml_playback_states_all*
Definition vlc_media_library.h:602
@ VLC_ML_BAN_FOLDER
arg1: mrl (const char*) res: can't fail
Definition vlc_media_library.h:572
@ VLC_ML_NEW_STREAM
arg1: const char*; arg2(out): vlc_ml_media_t**
Definition vlc_media_library.h:594
@ VLC_ML_MEDIA_GET_MEDIA_PLAYBACK_STATE
arg1: media id; arg2: vlc_ml_playback_state; arg3: char**;
Definition vlc_media_library.h:600
@ VLC_ML_MEDIA_SET_FAVORITE
arg1: media id; arg2: bool
Definition vlc_media_library.h:610
@ VLC_ML_PLAYLIST_MOVE
arg1: playlist id; arg2: from; arg3: to; can fail
Definition vlc_media_library.h:621
@ VLC_ML_PLAYLIST_CREATE
arg1: const char*; arg2(out): vlc_ml_playlist_t**; can fail
Definition vlc_media_library.h:617
@ VLC_ML_SET_FOLDER_PUBLIC
arg1: mrl (const char *); res: can't fail
Definition vlc_media_library.h:582
@ VLC_ML_UNBAN_FOLDER
arg1: mrl (const char*) res: can't fail
Definition vlc_media_library.h:573
@ VLC_ML_PAUSE_BACKGROUND
no args; can't fail
Definition vlc_media_library.h:586
@ VLC_ML_PLAYLIST_DELETE
arg1: playlist id; can fail
Definition vlc_media_library.h:618
@ VLC_ML_MEDIA_SET_GENRE_THUMBNAIL
arg1: media id; arg2: const char*; arg3: vlc_ml_thumbnail_size_t
Definition vlc_media_library.h:605
@ VLC_ML_CLEAR_HISTORY
arg1: vlc_ml_history_type_t; can't fail
Definition vlc_media_library.h:590
@ VLC_ML_MEDIA_SET_PLAYED
arg1: media id; arg2: bool
Definition vlc_media_library.h:609
@ VLC_ML_MEDIA_SET_THUMBNAIL
arg1: media id; arg2: const char*; arg3: vlc_ml_thumbnail_size_t
Definition vlc_media_library.h:604
@ VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS
arg1: media id
Definition vlc_media_library.h:613
@ VLC_ML_MEDIA_ADD_EXTERNAL_MRL
arg1: media id; arg2: const char*; arg3: type(vlc_ml_file_type_t)
Definition vlc_media_library.h:607
@ VLC_ML_REMOVE_STREAM
Definition vlc_media_library.h:596
@ VLC_ML_PLAYLIST_REMOVE
arg1: playlist id; arg2: position; can fail
Definition vlc_media_library.h:622
@ VLC_ML_MEDIA_UPDATE_PROGRESS
arg1: media id; arg2: playback position; can fail
Definition vlc_media_library.h:599
@ VLC_ML_IS_INDEXED
arg1: mrl (const char*) arg2 (out): bool*; res: can fail
Definition vlc_media_library.h:574
@ VLC_ML_PLAYLIST_RENAME
arg1: playlist id; arg2: const char*; can fail
Definition vlc_media_library.h:623
vlc_ml_event_callback_t * vlc_ml_event_register_callback(vlc_medialibrary_t *p_ml, vlc_ml_callback_t cb, void *p_data)
Registers a medialibrary callback.
Definition medialibrary.c:67
void vlc_ml_artist_list_release(vlc_ml_artist_list_t *p_list)
Definition medialibrary.c:312
static int vlc_ml_playlist_remove(vlc_medialibrary_t *p_ml, int64_t i_playlist_id, uint32_t i_position)
Definition vlc_media_library.h:1233
void vlc_ml_label_list_release(vlc_ml_label_list_t *p_list)
Definition medialibrary.c:294
vlc_ml_track_type_t
Definition vlc_media_library.h:66
@ VLC_ML_TRACK_TYPE_VIDEO
Definition vlc_media_library.h:68
@ VLC_ML_TRACK_TYPE_AUDIO
Definition vlc_media_library.h:69
@ VLC_ML_TRACK_TYPE_UNKNOWN
Definition vlc_media_library.h:67
static int vlc_ml_set_folder_public(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1019
vlc_ml_media_type_t
Definition vlc_media_library.h:41
@ VLC_ML_MEDIA_TYPE_VIDEO
Definition vlc_media_library.h:43
@ VLC_ML_MEDIA_TYPE_AUDIO
Definition vlc_media_library.h:44
@ VLC_ML_MEDIA_TYPE_UNKNOWN
Definition vlc_media_library.h:42
static input_item_t * vlc_ml_get_input_item(vlc_medialibrary_t *p_ml, int64_t i_media_id)
Definition vlc_media_library.h:1259
static size_t vlc_ml_count_playlists(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, vlc_ml_playlist_type_t playlist_type)
Definition vlc_media_library.h:1800
static int vlc_ml_reload_folder(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1014
static vlc_ml_media_list_t * vlc_ml_list_history(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, vlc_ml_history_type_t type)
Definition vlc_media_library.h:1696
void vlc_ml_folder_release(vlc_ml_folder_t *p_folder)
Definition medialibrary.c:284
static int vlc_ml_media_get_all_playback_pref(vlc_medialibrary_t *p_ml, int64_t i_media_id, vlc_ml_playback_states_all *prefs)
Definition vlc_media_library.h:1081
vlc_ml_thumbnail_status_t
Definition vlc_media_library.h:81
@ VLC_ML_THUMBNAIL_STATUS_CRASH
Definition vlc_media_library.h:86
@ VLC_ML_THUMBNAIL_STATUS_MISSING
Definition vlc_media_library.h:82
@ VLC_ML_THUMBNAIL_STATUS_FAILURE
Definition vlc_media_library.h:84
@ VLC_ML_THUMBNAIL_STATUS_PERSISTENT_FAILURE
Definition vlc_media_library.h:85
@ VLC_ML_THUMBNAIL_STATUS_AVAILABLE
Definition vlc_media_library.h:83
static vlc_ml_album_t * vlc_ml_get_album(vlc_medialibrary_t *p_ml, int64_t i_album_id)
Definition vlc_media_library.h:1270
static int vlc_ml_playlist_insert(vlc_medialibrary_t *p_ml, int64_t i_playlist_id, int64_t i_media_id, uint32_t i_position)
Definition vlc_media_library.h:1215
static vlc_ml_media_list_t * vlc_ml_list_media_of(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int i_parent_type, int64_t i_parent_id)
Definition vlc_media_library.h:1305
static vlc_ml_album_list_t * vlc_ml_list_albums_of(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int i_parent_type, int64_t i_parent_id)
Definition vlc_media_library.h:1401
static size_t vlc_ml_count_media_labels(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_media_id)
Definition vlc_media_library.h:1687
static size_t vlc_ml_count_genres(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1554
vlc_ml_media_subtype_t
Definition vlc_media_library.h:48
@ VLC_ML_MEDIA_SUBTYPE_UNKNOWN
Definition vlc_media_library.h:49
@ VLC_ML_MEDIA_SUBTYPE_ALBUMTRACK
Definition vlc_media_library.h:52
@ VLC_ML_MEDIA_SUBTYPE_SHOW_EPISODE
Definition vlc_media_library.h:50
@ VLC_ML_MEDIA_SUBTYPE_MOVIE
Definition vlc_media_library.h:51
static vlc_ml_artist_list_t * vlc_ml_list_artists(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, bool b_include_all)
vlc_ml_list_artists
Definition vlc_media_library.h:1570
void(* vlc_ml_callback_t)(void *p_data, const vlc_ml_event_t *p_event)
Definition vlc_media_library.h:872
static size_t vlc_ml_count_artist_tracks(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_artist_id)
Definition vlc_media_library.h:1482
static size_t vlc_ml_count_genre_albums(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_genre_id)
Definition vlc_media_library.h:1651
static int vlc_ml_remove_folder(vlc_medialibrary_t *p_ml, const char *psz_folder)
Definition vlc_media_library.h:993
static vlc_ml_media_list_t * vlc_ml_list_folder_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_folder_id)
Definition vlc_media_library.h:1924
static vlc_ml_playlist_list_t * vlc_ml_list_playlists(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, vlc_ml_playlist_type_t playlist_type)
Definition vlc_media_library.h:1791
#define vlc_ml_instance_get(x)
Definition vlc_media_library.h:920
vlc_ml_event_type
Definition vlc_media_library.h:672
@ VLC_ML_EVENT_ARTIST_UPDATED
Definition vlc_media_library.h:686
@ VLC_ML_EVENT_BOOKMARKS_ADDED
Definition vlc_media_library.h:700
@ VLC_ML_EVENT_RESCAN_STARTED
Sent when an application requested rescan starts being processed.
Definition vlc_media_library.h:796
@ VLC_ML_EVENT_ALBUM_ADDED
Definition vlc_media_library.h:688
@ VLC_ML_EVENT_DISCOVERY_PROGRESS
Sent when a discovery or reload operation starts analyzing a new folder.
Definition vlc_media_library.h:722
@ VLC_ML_EVENT_BACKGROUND_IDLE_CHANGED
Sent when a discoverer or parser threads changes its idle state.
Definition vlc_media_library.h:770
@ VLC_ML_EVENT_BOOKMARKS_DELETED
Definition vlc_media_library.h:702
@ VLC_ML_EVENT_FOLDER_DELETED
Definition vlc_media_library.h:705
@ VLC_ML_EVENT_MEDIA_UPDATED
Definition vlc_media_library.h:683
@ VLC_ML_EVENT_ENTRY_POINT_ADDED
Sent when a new entry point gets added to the database.
Definition vlc_media_library.h:742
@ VLC_ML_EVENT_PLAYLIST_ADDED
Definition vlc_media_library.h:694
@ VLC_ML_EVENT_DISCOVERY_STARTED
A discovery started.
Definition vlc_media_library.h:716
@ VLC_ML_EVENT_MEDIA_THUMBNAIL_GENERATED
Sent after a media thumbnail was generated, or if it's generation failed.
Definition vlc_media_library.h:785
@ VLC_ML_EVENT_GENRE_UPDATED
Definition vlc_media_library.h:698
@ VLC_ML_EVENT_ENTRY_POINT_REMOVED
Sent when an entry point removal request has been processed.
Definition vlc_media_library.h:749
@ VLC_ML_EVENT_HISTORY_CHANGED
Sent after the history gets changed.
Definition vlc_media_library.h:792
@ VLC_ML_EVENT_ENTRY_POINT_BANNED
Sent when an entry point ban request has been processed.
Definition vlc_media_library.h:756
@ VLC_ML_EVENT_GROUP_DELETED
Definition vlc_media_library.h:693
@ VLC_ML_EVENT_GROUP_ADDED
Definition vlc_media_library.h:691
@ VLC_ML_EVENT_GENRE_DELETED
Definition vlc_media_library.h:699
@ VLC_ML_EVENT_GENRE_ADDED
Definition vlc_media_library.h:697
@ VLC_ML_EVENT_ENTRY_POINT_UNBANNED
Sent when an entry point unban request has been processed.
Definition vlc_media_library.h:763
@ VLC_ML_EVENT_ALBUM_DELETED
Definition vlc_media_library.h:690
@ VLC_ML_EVENT_MEDIA_ADDED
Entity modification callbacks.
Definition vlc_media_library.h:682
@ VLC_ML_EVENT_DISCOVERY_FAILED
This event is sent when a discovery failed.
Definition vlc_media_library.h:732
@ VLC_ML_EVENT_ARTIST_DELETED
Definition vlc_media_library.h:687
@ VLC_ML_EVENT_BOOKMARKS_UPDATED
Definition vlc_media_library.h:701
@ VLC_ML_EVENT_PLAYLIST_DELETED
Definition vlc_media_library.h:696
@ VLC_ML_EVENT_FOLDER_ADDED
Definition vlc_media_library.h:703
@ VLC_ML_EVENT_PARSING_PROGRESS_UPDATED
Sent when the parsing progress percentage gets updated.
Definition vlc_media_library.h:778
@ VLC_ML_EVENT_ALBUM_UPDATED
Definition vlc_media_library.h:689
@ VLC_ML_EVENT_ARTIST_ADDED
Definition vlc_media_library.h:685
@ VLC_ML_EVENT_FOLDER_UPDATED
Definition vlc_media_library.h:704
@ VLC_ML_EVENT_PLAYLIST_UPDATED
Definition vlc_media_library.h:695
@ VLC_ML_EVENT_DISCOVERY_COMPLETED
Sent when all queued discovery operations are done being processed.
Definition vlc_media_library.h:726
@ VLC_ML_EVENT_GROUP_UPDATED
Definition vlc_media_library.h:692
@ VLC_ML_EVENT_MEDIA_DELETED
Definition vlc_media_library.h:684
void libvlc_MlRelease(vlc_medialibrary_t *p_ml)
Definition medialibrary.c:120
static vlc_ml_media_list_t * vlc_ml_list_audio_of(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int i_parent_type, int64_t i_parent_id)
Definition vlc_media_library.h:1353
static vlc_ml_media_list_t * vlc_ml_list_genre_tracks(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_genre_id)
Definition vlc_media_library.h:1624
static vlc_ml_media_list_t * vlc_ml_list_playlist_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_playlist_id)
Definition vlc_media_library.h:1809
static vlc_ml_query_params_t vlc_ml_query_params_create(void)
Definition vlc_media_library.h:977
static int vlc_ml_media_update_progress(vlc_medialibrary_t *p_ml, int64_t i_media_id, double progress)
Definition vlc_media_library.h:1065
static vlc_ml_artist_t * vlc_ml_get_artist(vlc_medialibrary_t *p_ml, int64_t i_artist_id)
Definition vlc_media_library.h:1275
static vlc_ml_folder_list_t * vlc_ml_list_folders(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1867
static size_t vlc_ml_count_album_tracks(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_album_id)
Definition vlc_media_library.h:1428
static size_t vlc_ml_count_video_history(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1723
vlc_ml_history_type_t
Definition vlc_media_library.h:90
@ VLC_ML_HISTORY_TYPE_NETWORK
Definition vlc_media_library.h:93
@ VLC_ML_HISTORY_TYPE_LOCAL
Definition vlc_media_library.h:92
@ VLC_ML_HISTORY_TYPE_GLOBAL
Definition vlc_media_library.h:91
static int vlc_ml_media_set_played(vlc_medialibrary_t *p_ml, int64_t i_media_id, bool b_played)
Definition vlc_media_library.h:1130
static int vlc_ml_set_folder_private(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1024
static vlc_ml_media_list_t * vlc_ml_list_group_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_group_id)
Definition vlc_media_library.h:1771
static size_t vlc_ml_count_video_of(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int i_parent_type, int64_t i_parent_id)
Definition vlc_media_library.h:1338
static int vlc_ml_media_add_external_mrl(vlc_medialibrary_t *p_ml, int64_t i_media_id, const char *psz_mrl, int i_type)
Definition vlc_media_library.h:1118
static vlc_ml_label_list_t * vlc_ml_list_media_labels(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_media_id)
Definition vlc_media_library.h:1678
static size_t vlc_ml_count_artists(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, bool includeAll)
Definition vlc_media_library.h:1579
struct vlc_ml_boomkmark_list_t vlc_ml_bookmark_list_t
static int vlc_ml_media_set_playback_state(vlc_medialibrary_t *p_ml, int64_t i_media_id, int i_state, const char *psz_value)
Definition vlc_media_library.h:1076
static int vlc_ml_ban_folder(vlc_medialibrary_t *p_ml, const char *psz_folder)
Definition vlc_media_library.h:998
int vlc_ml_list(vlc_medialibrary_t *p_ml, int i_query, const vlc_ml_query_params_t *p_params,...)
Definition medialibrary.c:438
void vlc_ml_playlist_list_release(vlc_ml_playlist_list_t *p_list)
Definition medialibrary.c:367
vlc_ml_list_queries
Definition vlc_media_library.h:467
@ VLC_ML_LIST_VIDEOS
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:470
@ VLC_ML_COUNT_FOLDERS_BY_TYPE
arg1 vlc_ml_media_type_t: the media type.
Definition vlc_media_library.h:497
@ VLC_ML_LIST_ARTIST_ALBUMS
arg1: The artist id.
Definition vlc_media_library.h:506
@ VLC_ML_LIST_SHOW_EPISODES
arg1: show id; arg2(out): vlc_ml_media_list_t**
Definition vlc_media_library.h:520
@ VLC_ML_LIST_ALBUMS
arg1 (out): vlc_ml_album_list_t**
Definition vlc_media_library.h:474
@ VLC_ML_LIST_ENTRY_POINTS
arg1 bool: list_banned; arg2 (out): vlc_ml_folder_list_t**
Definition vlc_media_library.h:492
@ VLC_ML_LIST_GROUPS
arg1 (out): vlc_ml_group_list_t**
Definition vlc_media_library.h:482
@ VLC_ML_LIST_FOLDER_MEDIA
arg1: folder id; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:539
@ VLC_ML_COUNT_PLAYLIST_MEDIA
arg1: playlist id; arg2 (out): size_t*
Definition vlc_media_library.h:534
@ VLC_ML_LIST_GENRE_ARTISTS
arg1: genre id; arg2 (out): vlc_ml_artist_list_t**
Definition vlc_media_library.h:512
@ VLC_ML_COUNT_GENRES
arg1 (out): size_t*
Definition vlc_media_library.h:477
@ VLC_ML_COUNT_SHOWS
arg1 (out): size_t*
Definition vlc_media_library.h:481
@ VLC_ML_LIST_ALBUMS_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): ml_album_list_t**
Definition vlc_media_library.h:551
@ VLC_ML_LIST_MEDIA_BOOKMARKS
arg1: media id; arg2 (out): vlc_ml_bookmark_list_t**
Definition vlc_media_library.h:526
@ VLC_ML_LIST_PLAYLISTS
arg1 (out): vlc_ml_playlist_list_t**
Definition vlc_media_library.h:484
@ VLC_ML_LIST_ARTISTS_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): ml_artist_list_t**
Definition vlc_media_library.h:549
@ VLC_ML_LIST_AUDIOS
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:472
@ VLC_ML_COUNT_SHOW_EPISODES
arg1: show id; arg2(out): size_t*
Definition vlc_media_library.h:521
@ VLC_ML_LIST_SUBFOLDERS
arg1: parent id; arg2 (out): vlc_ml_folder_list_t**
Definition vlc_media_library.h:537
@ VLC_ML_LIST_ARTISTS
arg1 bool: includeAll; arg2 (out): vlc_ml_genre_list_t**
Definition vlc_media_library.h:478
@ VLC_ML_COUNT_ARTISTS_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:550
@ VLC_ML_COUNT_ARTIST_ALBUMS
arg1: The artist id.
Definition vlc_media_library.h:507
@ VLC_ML_LIST_AUDIO_HISTORY
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:490
@ VLC_ML_COUNT_MEDIA_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:544
@ VLC_ML_COUNT_GENRE_TRACKS
arg1: genre id; arg2 (out): size_t*
Definition vlc_media_library.h:515
@ VLC_ML_COUNT_ARTIST_TRACKS
arg1: The artist id.
Definition vlc_media_library.h:509
@ VLC_ML_LIST_GENRE_TRACKS
arg1: genre id; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:514
@ VLC_ML_COUNT_ALBUM_ARTISTS
arg1: The album id.
Definition vlc_media_library.h:503
@ VLC_ML_LIST_MEDIA_LABELS
arg1: media id; arg2 (out): vlc_ml_label_list_t**
Definition vlc_media_library.h:524
@ VLC_ML_COUNT_AUDIOS
arg1 (out): size_t*
Definition vlc_media_library.h:473
@ VLC_ML_COUNT_SUBFOLDERS
arg1: parent id; arg2 (out): size_t*
Definition vlc_media_library.h:538
@ VLC_ML_LIST_HISTORY
arg1 vlc_ml_history_type_t; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:486
@ VLC_ML_COUNT_ARTISTS
arg1 bool: includeAll; arg2 (out): size_t*
Definition vlc_media_library.h:479
@ VLC_ML_LIST_GENRE_ALBUMS
arg1: genre id; arg2 (out): vlc_ml_album_list_t**
Definition vlc_media_library.h:516
@ VLC_ML_COUNT_ALBUMS_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:552
@ VLC_ML_COUNT_GENRE_ALBUMS
arg1: genre id; arg2 (out): size_t*
Definition vlc_media_library.h:517
@ VLC_ML_COUNT_MEDIA_LABELS
arg1: media id; arg2 (out): size_t*
Definition vlc_media_library.h:525
@ VLC_ML_LIST_GROUP_MEDIA
arg1: playlist id; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:529
@ VLC_ML_COUNT_VIDEO_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:546
@ VLC_ML_LIST_VIDEO_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:545
@ VLC_ML_LIST_PLAYLIST_MEDIA
arg1: playlist id; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:533
@ VLC_ML_LIST_FOLDERS
arg1 (out): vlc_ml_folder_list_t**
Definition vlc_media_library.h:494
@ VLC_ML_COUNT_GROUP_MEDIA
arg1: playlist id; arg2 (out): size_t*
Definition vlc_media_library.h:530
@ VLC_ML_COUNT_VIDEOS
arg1 (out): size_t*
Definition vlc_media_library.h:471
@ VLC_ML_LIST_SHOWS
arg1 (out): vlc_ml_show_list_t**
Definition vlc_media_library.h:480
@ VLC_ML_COUNT_FOLDER_MEDIA
arg1: folder id; arg2 (out): size_t*
Definition vlc_media_library.h:540
@ VLC_ML_COUNT_AUDIO_HISTORY
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:491
@ VLC_ML_COUNT_FOLDERS
arg1 (out): size_t*
Definition vlc_media_library.h:495
@ VLC_ML_LIST_AUDIO_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:547
@ VLC_ML_COUNT_ENTRY_POINTS
arg1 bool: list_banned; arg2 (out): size_t*
Definition vlc_media_library.h:493
@ VLC_ML_LIST_GENRES
arg1 (out): vlc_ml_genre_list_t**
Definition vlc_media_library.h:476
@ VLC_ML_LIST_ALBUM_TRACKS
arg1: The album id.
Definition vlc_media_library.h:500
@ VLC_ML_COUNT_ALBUMS
arg1 (out): size_t*
Definition vlc_media_library.h:475
@ VLC_ML_LIST_FOLDERS_BY_TYPE
arg1 vlc_ml_media_type_t: the media type.
Definition vlc_media_library.h:496
@ VLC_ML_COUNT_AUDIO_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:548
@ VLC_ML_COUNT_VIDEO_HISTORY
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:489
@ VLC_ML_LIST_ARTIST_TRACKS
arg1: The artist id.
Definition vlc_media_library.h:508
@ VLC_ML_COUNT_ALBUM_TRACKS
arg1: The album id.
Definition vlc_media_library.h:501
@ VLC_ML_COUNT_HISTORY
arg1 vlc_ml_history_type_t; arg2 (out): size_t*
Definition vlc_media_library.h:487
@ VLC_ML_LIST_VIDEO_HISTORY
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:488
@ VLC_ML_COUNT_PLAYLISTS
arg1 (out): size_t*
Definition vlc_media_library.h:485
@ VLC_ML_COUNT_GROUPS
arg1 (out): size_t*
Definition vlc_media_library.h:483
@ VLC_ML_LIST_ALBUM_ARTISTS
arg1: The album id.
Definition vlc_media_library.h:502
@ VLC_ML_COUNT_GENRE_ARTISTS
arg1: genre id; arg2 (out): size_t*
Definition vlc_media_library.h:513
@ VLC_ML_LIST_MEDIA_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): ml_media_list_t**
Definition vlc_media_library.h:543
static size_t vlc_ml_count_entry_points(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1836
static int vlc_ml_media_update_bookmark(vlc_medialibrary_t *p_ml, int64_t i_media_id, int64_t i_time, const char *psz_name, const char *psz_desc)
Definition vlc_media_library.h:1169
#define vlc_ml_release(OBJ)
Definition vlc_media_library.h:1957
static size_t vlc_ml_count_audio_of(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int i_parent_type, int64_t i_parent_id)
Definition vlc_media_library.h:1368
static vlc_ml_genre_t * vlc_ml_get_genre(vlc_medialibrary_t *p_ml, int64_t i_genre_id)
Definition vlc_media_library.h:1280
static vlc_ml_media_list_t * vlc_ml_list_audio_history(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1732
vlc_ml_playback_state
User playback settings.
Definition vlc_media_library.h:637
@ VLC_ML_PLAYBACK_STATE_PROGRAM
Definition vlc_media_library.h:642
@ VLC_ML_PLAYBACK_STATE_TITLE
Definition vlc_media_library.h:640
@ VLC_ML_PLAYBACK_STATE_DEINTERLACE
Definition vlc_media_library.h:647
@ VLC_ML_PLAYBACK_STATE_SPEED
Definition vlc_media_library.h:639
@ VLC_ML_PLAYBACK_STATE_VIDEO_FILTER
Definition vlc_media_library.h:648
@ VLC_ML_PLAYBACK_STATE_AUDIO_DELAY
Definition vlc_media_library.h:651
@ VLC_ML_PLAYBACK_STATE_SUBTITLE_DELAY
Definition vlc_media_library.h:653
@ VLC_ML_PLAYBACK_STATE_RATING
Definition vlc_media_library.h:638
@ VLC_ML_PLAYBACK_STATE_APP_SPECIFIC
Definition vlc_media_library.h:654
@ VLC_ML_PLAYBACK_STATE_ASPECT_RATIO
Definition vlc_media_library.h:644
@ VLC_ML_PLAYBACK_STATE_SUBTITLE_TRACK
Definition vlc_media_library.h:652
@ VLC_ML_PLAYBACK_STATE_GAIN
Definition vlc_media_library.h:650
@ VLC_ML_PLAYBACK_STATE_AUDIO_TRACK
Definition vlc_media_library.h:649
@ VLC_ML_PLAYBACK_STATE_CROP
Definition vlc_media_library.h:646
@ VLC_ML_PLAYBACK_STATE_CHAPTER
Definition vlc_media_library.h:641
@ VLC_ML_PLAYBACK_STATE_VIDEO_TRACK
Definition vlc_media_library.h:643
@ VLC_ML_PLAYBACK_STATE_ZOOM
Definition vlc_media_library.h:645
static vlc_ml_folder_list_t * vlc_ml_list_banned_entry_points(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1846
static int vlc_ml_resume_background(vlc_medialibrary_t *p_ml)
Definition vlc_media_library.h:1034
static vlc_ml_folder_list_t * vlc_ml_list_entry_points(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1827
void vlc_ml_album_release(vlc_ml_album_t *p_album)
Definition medialibrary.c:219
static vlc_ml_show_t * vlc_ml_get_show(vlc_medialibrary_t *p_ml, int64_t i_show_id)
Definition vlc_media_library.h:1285
void vlc_ml_folder_list_release(vlc_ml_folder_list_t *p_list)
Definition medialibrary.c:376
static vlc_ml_bookmark_list_t * vlc_ml_list_media_bookmarks(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_media_id)
Definition vlc_media_library.h:1143
void vlc_ml_artist_release(vlc_ml_artist_t *p_artist)
Definition medialibrary.c:203
static vlc_ml_folder_t * vlc_ml_get_folder(vlc_medialibrary_t *p_ml, int64_t i_folder_id)
Definition vlc_media_library.h:1295
static size_t vlc_ml_count_audio_history(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1741
static size_t vlc_ml_count_history(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, vlc_ml_history_type_t type)
Definition vlc_media_library.h:1705
static int vlc_ml_media_set_favorite(vlc_medialibrary_t *p_ml, int64_t i_media_id, bool b_favorite)
Definition vlc_media_library.h:1136
static vlc_ml_media_list_t * vlc_ml_list_album_tracks(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_album_id)
Definition vlc_media_library.h:1419
static vlc_ml_genre_list_t * vlc_ml_list_genres(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1545
static vlc_ml_folder_list_t * vlc_ml_list_folders_by_type(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, vlc_ml_media_type_t type)
Definition vlc_media_library.h:1894
void vlc_ml_bookmark_list_release(vlc_ml_bookmark_list_t *p_list)
Definition medialibrary.c:410
static vlc_ml_group_t * vlc_ml_get_group(vlc_medialibrary_t *p_ml, int64_t i_group_id)
Definition vlc_media_library.h:1290
static int vlc_ml_media_remove_bookmark(vlc_medialibrary_t *p_ml, int64_t i_media_id, int64_t i_time)
Definition vlc_media_library.h:1162
void vlc_ml_genre_release(vlc_ml_genre_t *p_genre)
Definition medialibrary.c:227
static vlc_ml_artist_list_t * vlc_ml_list_genre_artists(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_genre_id)
Definition vlc_media_library.h:1606
void vlc_ml_genre_list_release(vlc_ml_genre_list_t *p_list)
Definition medialibrary.c:349
static size_t vlc_ml_count_group_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_group_id)
Definition vlc_media_library.h:1780
static int vlc_ml_media_set_thumbnail(vlc_medialibrary_t *p_ml, int64_t i_media_id, const char *psz_mrl, vlc_ml_thumbnail_size_t sizeType)
Definition vlc_media_library.h:1095
static vlc_ml_media_t * vlc_ml_new_stream(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1052
void vlc_ml_event_unregister_callback(vlc_medialibrary_t *p_ml, vlc_ml_event_callback_t *p_callback)
Unregisters a medialibrary callback.
Definition medialibrary.c:81
static vlc_ml_media_list_t * vlc_ml_list_video_of(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int i_parent_type, int64_t i_parent_id)
Definition vlc_media_library.h:1323
static int vlc_ml_media_remove_all_bookmarks(vlc_medialibrary_t *p_ml, int64_t i_media_id)
Definition vlc_media_library.h:1179
static size_t vlc_ml_count_folders_by_type(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, vlc_ml_media_type_t type)
Definition vlc_media_library.h:1908
static int vlc_ml_is_indexed(vlc_medialibrary_t *p_ml, const char *psz_mrl, bool *p_res)
Definition vlc_media_library.h:1008
static vlc_ml_album_list_t * vlc_ml_list_albums(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1527
static int vlc_ml_playlist_append(vlc_medialibrary_t *p_ml, int64_t i_playlist_id, int64_t i_media_id)
Definition vlc_media_library.h:1207
static size_t vlc_ml_count_album_artists(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_album_id)
Definition vlc_media_library.h:1446
static vlc_ml_media_list_t * vlc_ml_list_video_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1491
vlc_ml_playlist_type_t
Definition vlc_media_library.h:97
@ VLC_ML_PLAYLIST_TYPE_VIDEO_ONLY
Playlist containing video tracks only.
Definition vlc_media_library.h:102
@ VLC_ML_PLAYLIST_TYPE_ALL
Playlist containing any kind of tracks.
Definition vlc_media_library.h:98
@ VLC_ML_PLAYLIST_TYPE_AUDIO_ONLY
Playlist containing audio tracks only.
Definition vlc_media_library.h:101
@ VLC_ML_PLAYLIST_TYPE_AUDIO
Playlist containing at least one audio track.
Definition vlc_media_library.h:99
@ VLC_ML_PLAYLIST_TYPE_VIDEO
Playlist containing at least one video track.
Definition vlc_media_library.h:100
static vlc_ml_playlist_t * vlc_ml_get_playlist(vlc_medialibrary_t *p_ml, int64_t i_playlist_id)
Definition vlc_media_library.h:1300
static size_t vlc_ml_count_genre_artists(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_genre_id)
Definition vlc_media_library.h:1615
static vlc_ml_media_list_t * vlc_ml_list_album_artists(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_album_id)
Definition vlc_media_library.h:1437
void vlc_ml_file_list_release(vlc_ml_file_list_t *p_list)
Definition medialibrary.c:303
static vlc_ml_group_list_t * vlc_ml_list_groups(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1753
void vlc_ml_bookmark_release(vlc_ml_bookmark_t *p_bookmark)
Definition medialibrary.c:402
void vlc_ml_playback_states_all_release(vlc_ml_playback_states_all *prefs)
Definition medialibrary.c:385
static input_item_t * vlc_ml_get_input_item_by_mrl(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1264
static int vlc_ml_media_get_playback_state(vlc_medialibrary_t *p_ml, int64_t i_media_id, int i_state, char **ppsz_result)
Definition vlc_media_library.h:1071
static int vlc_ml_pause_background(vlc_medialibrary_t *p_ml)
Definition vlc_media_library.h:1029
static vlc_ml_media_list_t * vlc_ml_list_video_history(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1714
static int vlc_ml_media_generate_thumbnail(vlc_medialibrary_t *p_ml, int64_t i_media_id, vlc_ml_thumbnail_size_t size_type, uint32_t i_desired_width, uint32_t i_desired_height, double position)
Definition vlc_media_library.h:1108
static vlc_ml_show_list_t * vlc_ml_list_shows(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1588
static int vlc_ml_playlist_delete(vlc_medialibrary_t *p_ml, int64_t i_playlist_id)
Definition vlc_media_library.h:1199
static int vlc_ml_unban_folder(vlc_medialibrary_t *p_ml, const char *psz_folder)
Definition vlc_media_library.h:1003
vlc_ml_file_type_t
Definition vlc_media_library.h:56
@ VLC_ML_FILE_TYPE_MAIN
Definition vlc_media_library.h:58
@ VLC_ML_FILE_TYPE_SUBTITLE
Definition vlc_media_library.h:61
@ VLC_ML_FILE_TYPE_UNKNOWN
Definition vlc_media_library.h:57
@ VLC_ML_FILE_TYPE_SOUNDTRACK
Definition vlc_media_library.h:60
@ VLC_ML_FILE_TYPE_PART
Definition vlc_media_library.h:59
@ VLC_ML_FILE_TYPE_PLAYLIST
Definition vlc_media_library.h:62
static int vlc_ml_media_add_bookmark(vlc_medialibrary_t *p_ml, int64_t i_media_id, int64_t i_time)
Definition vlc_media_library.h:1155
static size_t vlc_ml_count_albums_of(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int i_parent_type, int64_t i_parent_id)
Definition vlc_media_library.h:1410
void vlc_ml_show_release(vlc_ml_show_t *p_show)
Definition medialibrary.c:149
static size_t vlc_ml_count_artist_albums(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_artist_id)
Definition vlc_media_library.h:1464
static size_t vlc_ml_count_albums(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1536
vlc_ml_sorting_criteria_t
Definition vlc_media_library.h:415
@ VLC_ML_SORTING_LASTMODIFICATIONDATE
Definition vlc_media_library.h:425
@ VLC_ML_SORTING_INSERTIONDATE
Definition vlc_media_library.h:424
@ VLC_ML_SORTING_PLAYCOUNT
Definition vlc_media_library.h:429
@ VLC_ML_SORTING_ARTIST
Definition vlc_media_library.h:428
@ VLC_ML_SORTING_ALPHA
Definition vlc_media_library.h:422
@ VLC_ML_SORTING_TRACKNUMBER
Definition vlc_media_library.h:432
@ VLC_ML_SORTING_FILENAME
Definition vlc_media_library.h:431
@ VLC_ML_SORTING_ALBUM
Definition vlc_media_library.h:430
@ VLC_ML_SORTING_DEFAULT
Definition vlc_media_library.h:421
@ VLC_ML_SORTING_DURATION
Definition vlc_media_library.h:423
@ VLC_ML_SORTING_RELEASEDATE
Definition vlc_media_library.h:426
@ VLC_ML_SORTING_FILESIZE
Definition vlc_media_library.h:427
void vlc_ml_media_release(vlc_ml_media_t *p_media)
Definition medialibrary.c:270
static size_t vlc_ml_count_audio_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1518
static int vlc_ml_add_folder(vlc_medialibrary_t *p_ml, const char *psz_folder)
Definition vlc_media_library.h:988
static size_t vlc_ml_count_groups(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1762
static size_t vlc_ml_count_artists_of(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int i_parent_type, int64_t i_parent_id)
Definition vlc_media_library.h:1392
void vlc_ml_group_release(vlc_ml_group_t *p_group)
Definition medialibrary.c:244
static vlc_ml_album_list_t * vlc_ml_list_genre_albums(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_genre_id)
Definition vlc_media_library.h:1642
static int vlc_ml_media_set_genre_thumbnail(vlc_medialibrary_t *p_ml, int64_t i_media_id, const char *psz_mrl, vlc_ml_thumbnail_size_t sizeType)
Definition vlc_media_library.h:1101
static size_t vlc_ml_count_media_of(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int i_parent_type, int64_t i_parent_id)
Definition vlc_media_library.h:1314
static vlc_ml_media_list_t * vlc_ml_list_audio_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1509
void vlc_ml_event_unregister_from_callback(vlc_medialibrary_t *p_ml, vlc_ml_event_callback_t *p_callback)
Unregisters a medialibrary callback from the said callback.
Definition medialibrary.c:90
static vlc_ml_album_list_t * vlc_ml_list_artist_albums(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params, int64_t i_artist_id)
Definition vlc_media_library.h:1455
static size_t vlc_ml_count_video_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1500
vlc_ml_parent_type
Definition vlc_media_library.h:556
@ VLC_ML_PARENT_ARTIST
Definition vlc_media_library.h:559
@ VLC_ML_PARENT_ALBUM
Definition vlc_media_library.h:558
@ VLC_ML_PARENT_GROUP
Definition vlc_media_library.h:562
@ VLC_ML_PARENT_FOLDER
Definition vlc_media_library.h:563
@ VLC_ML_PARENT_UNKNOWN
Definition vlc_media_library.h:557
@ VLC_ML_PARENT_PLAYLIST
Definition vlc_media_library.h:564
@ VLC_ML_PARENT_SHOW
Definition vlc_media_library.h:560
@ VLC_ML_PARENT_GENRE
Definition vlc_media_library.h:561
void vlc_ml_group_list_release(vlc_ml_group_list_t *p_list)
Definition medialibrary.c:358
static size_t vlc_ml_count_folders(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1880
static vlc_ml_media_t * vlc_ml_get_media_by_mrl(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1253
char psz_value[8]
Definition vout_intf.c:102