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
72typedef enum vlc_ml_thumbnail_size_t
89typedef enum vlc_ml_history_type_t
96typedef enum vlc_ml_playlist_type_t
98 VLC_ML_PLAYLIST_TYPE_ALL, /**< Playlist containing any kind of tracks */
99 VLC_ML_PLAYLIST_TYPE_AUDIO, /**< Playlist containing at least one audio track */
100 VLC_ML_PLAYLIST_TYPE_VIDEO, /**< Playlist containing at least one video track */
101 VLC_ML_PLAYLIST_TYPE_AUDIO_ONLY, /**< Playlist containing audio tracks only */
102 VLC_ML_PLAYLIST_TYPE_VIDEO_ONLY, /**< Playlist containing video tracks only */
105typedef struct vlc_ml_thumbnail_t
107 char* psz_mrl;
108 /**
109 * True if a thumbnail is available, or if thumbnail generation was
110 * attempted but failed
111 */
115typedef struct vlc_ml_movie_t
121typedef struct vlc_ml_show_episode_t
129typedef struct vlc_ml_show_t
141typedef struct vlc_ml_label_t
147typedef struct vlc_ml_label_list_t
153typedef struct vlc_ml_file_t
164typedef struct vlc_ml_file_list_t
170typedef struct vlc_ml_media_track_t
172 char* psz_codec;
176 uint32_t i_bitrate;
177 union
178 {
179 struct
180 {
181 // Audio
182 uint32_t i_nbChannels;
183 uint32_t i_sampleRate;
184 } a;
185 struct
186 {
187 // Video
188 uint32_t i_height;
189 uint32_t i_width;
190 uint32_t i_sarNum;
191 uint32_t i_sarDen;
192 uint32_t i_fpsNum;
193 uint32_t i_fpsDen;
194 } v;
195 struct
196 {
197 // Subtitle
198 char* psz_encoding;
199 } s;
200 };
203typedef struct vlc_ml_media_track_list_t
209typedef struct vlc_ml_media_t
249typedef struct vlc_ml_group_t
273typedef struct vlc_ml_playlist_t
275 int64_t i_id;
277 char* psz_name;
279 char* psz_mrl;
281 char* psz_artwork_mrl;
283 unsigned int i_nb_media;
284 uint32_t i_nb_video;
285 uint32_t i_nb_audio;
286 uint32_t i_nb_unknown;
288 unsigned int i_nb_present_media;
293 uint32_t i_creation_date;
295 int64_t i_duration; /* In ms */
298 bool b_is_read_only;
302typedef struct vlc_ml_artist_t
316typedef struct vlc_ml_artist_list_t
322typedef struct vlc_ml_album_t {
338typedef struct vlc_ml_genre_t
347typedef struct vlc_ml_media_list_t
353typedef struct vlc_ml_album_list_t
359typedef struct vlc_ml_show_list_t
365typedef struct vlc_ml_genre_list_t
371typedef struct vlc_ml_group_list_t
377typedef struct vlc_ml_playlist_list_t
383typedef struct vlc_ml_folder_t
385 int64_t i_id; /**< The folder's MRL. Will be NULL if b_present is false */
386 char* psz_name; /**< The folder's name */
387 char* psz_mrl; /**< The folder's MRL. Will be NULL if b_present is false */
388 unsigned int i_nb_media; /**< The media count */
389 unsigned int i_nb_video; /**< The number of video for this folder */
390 unsigned int i_nb_audio; /**< The number of audio for this volder */
391 int64_t i_duration; /**< The sum of all the member durations of the folder in ms. */
392 bool b_is_favorite; /**< The folder's favorite state */
393 bool b_present; /**< The folder's presence state */
394 bool b_banned; /**< Will be true if the user required this folder to be excluded */
397typedef struct vlc_ml_folder_list_t
403typedef struct vlc_ml_bookmark_t
405 int64_t i_media_id; /**< The associated media ID */
406 int64_t i_time; /**< The bookmark time. The unit is arbitrary */
407 char* psz_name; /**< The bookmark name */
408 char* psz_description; /**< The bookmark description */
411typedef struct vlc_ml_boomkmark_list_t
417/* Opaque medialibrary pointer, to be used by any non-medialibrary module */
419/* "Private" medialibrary pointer, to be used by the core & medialibrary modules */
421/* Opaque event callback type */
424typedef enum vlc_ml_sorting_criteria_t
445/**
446 * Generic parameter set for medialibrary queries.
447 *
448 * \warning Should only be default instanciated with ::vlc_ml_query_params_create().
449 */
450typedef struct vlc_ml_query_params_t
463 VLC_ML_GET_MEDIA, /**< arg1: Media ID; ret: vlc_ml_media_t* */
464 VLC_ML_GET_MEDIA_BY_MRL, /**< arg1: Media MRL; ret: vlc_ml_media_t* */
465 VLC_ML_GET_INPUT_ITEM, /**< arg1: Media ID; ret: input_item_t* */
466 VLC_ML_GET_INPUT_ITEM_BY_MRL, /**< arg1: Media MRL; ret: input_item_t* */
467 VLC_ML_GET_ALBUM, /**< arg1: Album ID; ret: vlc_ml_album_t* */
468 VLC_ML_GET_ARTIST, /**< arg1: Artist ID; ret: vlc_ml_artist_t* */
469 VLC_ML_GET_GENRE, /**< arg1: Genre ID; ret: vlc_ml_genre_t* */
470 VLC_ML_GET_SHOW, /**< arg1: Show ID; ret: vlc_ml_show_t* */
471 VLC_ML_GET_PLAYLIST, /**< arg1: Playlist ID; ret: vlc_ml_playlist_t* */
472 VLC_ML_GET_GROUP, /**< arg1: Group ID; ret: vlc_ml_group_t* */
473 VLC_ML_GET_FOLDER, /**< arg1: folder ID; ret: vlc_ml_folder_t* */
475
478 /* General listing: */
479
480 VLC_ML_LIST_MEDIA, /**< arg1 (out): vlc_ml_media_list_t** */
481 VLC_ML_COUNT_MEDIA, /**< arg1 (out): size_t* */
482 VLC_ML_LIST_VIDEOS, /**< arg1 (out): vlc_ml_media_list_t** */
483 VLC_ML_COUNT_VIDEOS, /**< arg1 (out): size_t* */
484 VLC_ML_LIST_AUDIOS, /**< arg1 (out): vlc_ml_media_list_t** */
485 VLC_ML_COUNT_AUDIOS, /**< arg1 (out): size_t* */
486 VLC_ML_LIST_ALBUMS, /**< arg1 (out): vlc_ml_album_list_t** */
487 VLC_ML_COUNT_ALBUMS, /**< arg1 (out): size_t* */
488 VLC_ML_LIST_GENRES, /**< arg1 (out): vlc_ml_genre_list_t** */
489 VLC_ML_COUNT_GENRES, /**< arg1 (out): size_t* */
490 VLC_ML_LIST_ARTISTS, /**< arg1 bool: includeAll; arg2 (out): vlc_ml_genre_list_t** */
491 VLC_ML_COUNT_ARTISTS, /**< arg1 bool: includeAll; arg2 (out): size_t* */
492 VLC_ML_LIST_SHOWS, /**< arg1 (out): vlc_ml_show_list_t** */
493 VLC_ML_COUNT_SHOWS, /**< arg1 (out): size_t* */
494 VLC_ML_LIST_GROUPS, /**< arg1 (out): vlc_ml_group_list_t** */
495 VLC_ML_COUNT_GROUPS, /**< arg1 (out): size_t* */
496 VLC_ML_LIST_PLAYLISTS, /**< arg1 (out): vlc_ml_playlist_list_t** */
497 VLC_ML_COUNT_PLAYLISTS, /**< arg1 (out): size_t* */
498 VLC_ML_LIST_HISTORY, /**< arg1 vlc_ml_history_type_t; arg2 (out): vlc_ml_media_list_t** */
499 VLC_ML_COUNT_HISTORY, /**< arg1 vlc_ml_history_type_t; arg2 (out): size_t* */
500 VLC_ML_LIST_VIDEO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
501 VLC_ML_COUNT_VIDEO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
502 VLC_ML_LIST_AUDIO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
503 VLC_ML_COUNT_AUDIO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
504 VLC_ML_LIST_ENTRY_POINTS, /**< arg1 bool: list_banned; arg2 (out): vlc_ml_folder_list_t** */
505 VLC_ML_COUNT_ENTRY_POINTS, /**< arg1 bool: list_banned; arg2 (out): size_t* */
506 VLC_ML_LIST_FOLDERS, /**< arg1 (out): vlc_ml_folder_list_t** */
507 VLC_ML_COUNT_FOLDERS, /**< arg1 (out): size_t* */
508 VLC_ML_LIST_FOLDERS_BY_TYPE, /**< arg1 vlc_ml_media_type_t: the media type. arg2 (out): vlc_ml_media_list_t** */
509 VLC_ML_COUNT_FOLDERS_BY_TYPE, /**< arg1 vlc_ml_media_type_t: the media type. arg2 (out): vlc_ml_media_list_t** */
511 /* Album specific listings */
512 VLC_ML_LIST_ALBUM_TRACKS, /**< arg1: The album id. arg2 (out): vlc_ml_media_list_t** */
513 VLC_ML_COUNT_ALBUM_TRACKS, /**< arg1: The album id. arg2 (out): size_t* */
514 VLC_ML_LIST_ALBUM_ARTISTS, /**< arg1: The album id. arg2 (out): vlc_ml_album_list_t** */
515 VLC_ML_COUNT_ALBUM_ARTISTS, /**< arg1: The album id. arg2 (out): size_t* */
517 /* Artist specific listings */
518 VLC_ML_LIST_ARTIST_ALBUMS, /**< arg1: The artist id. arg2(out): vlc_ml_album_list_t** */
519 VLC_ML_COUNT_ARTIST_ALBUMS, /**< arg1: The artist id. arg2(out): size_t* */
520 VLC_ML_LIST_ARTIST_TRACKS, /**< arg1: The artist id. arg2(out): vlc_ml_media_list_t** */
521 VLC_ML_COUNT_ARTIST_TRACKS, /**< arg1: The artist id. arg2(out): size_t* */
523 /* Genre specific listings */
524 VLC_ML_LIST_GENRE_ARTISTS, /**< arg1: genre id; arg2 (out): vlc_ml_artist_list_t** */
525 VLC_ML_COUNT_GENRE_ARTISTS, /**< arg1: genre id; arg2 (out): size_t* */
526 VLC_ML_LIST_GENRE_TRACKS, /**< arg1: genre id; arg2 (out): vlc_ml_media_list_t** */
527 VLC_ML_COUNT_GENRE_TRACKS, /**< arg1: genre id; arg2 (out): size_t* */
528 VLC_ML_LIST_GENRE_ALBUMS, /**< arg1: genre id; arg2 (out): vlc_ml_album_list_t** */
529 VLC_ML_COUNT_GENRE_ALBUMS, /**< arg1: genre id; arg2 (out): size_t* */
531 /* Show specific listings */
532 VLC_ML_LIST_SHOW_EPISODES, /**< arg1: show id; arg2(out): vlc_ml_media_list_t** */
533 VLC_ML_COUNT_SHOW_EPISODES, /**< arg1: show id; arg2(out): size_t* */
535 /* Media specific listings */
536 VLC_ML_LIST_MEDIA_LABELS, /**< arg1: media id; arg2 (out): vlc_ml_label_list_t** */
537 VLC_ML_COUNT_MEDIA_LABELS, /**< arg1: media id; arg2 (out): size_t* */
538 VLC_ML_LIST_MEDIA_BOOKMARKS, /**< arg1: media id; arg2 (out): vlc_ml_bookmark_list_t** */
540 /* Groups specific listings */
541 VLC_ML_LIST_GROUP_MEDIA, /**< arg1: playlist id; arg2 (out): vlc_ml_media_list_t** */
542 VLC_ML_COUNT_GROUP_MEDIA, /**< arg1: playlist id; arg2 (out): size_t* */
544 /* Playlist specific listings */
545 VLC_ML_LIST_PLAYLIST_MEDIA, /**< arg1: playlist id; arg2 (out): vlc_ml_media_list_t** */
546 VLC_ML_COUNT_PLAYLIST_MEDIA, /**< arg1: playlist id; arg2 (out): size_t* */
548 /* Folder specific listings */
549 VLC_ML_LIST_SUBFOLDERS, /**< arg1: parent id; arg2 (out): vlc_ml_folder_list_t** */
550 VLC_ML_COUNT_SUBFOLDERS, /**< arg1: parent id; arg2 (out): size_t* */
551 VLC_ML_LIST_FOLDER_MEDIA, /**< arg1: folder id; arg2 (out): vlc_ml_media_list_t** */
552 VLC_ML_COUNT_FOLDER_MEDIA, /**< arg1: folder id; arg2 (out): size_t* */
554 /* Children entities listing */
555 VLC_ML_LIST_MEDIA_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): ml_media_list_t** */
556 VLC_ML_COUNT_MEDIA_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
557 VLC_ML_LIST_VIDEO_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
558 VLC_ML_COUNT_VIDEO_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
559 VLC_ML_LIST_AUDIO_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
560 VLC_ML_COUNT_AUDIO_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
561 VLC_ML_LIST_ARTISTS_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): ml_artist_list_t** */
562 VLC_ML_COUNT_ARTISTS_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
563 VLC_ML_LIST_ALBUMS_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): ml_album_list_t** */
564 VLC_ML_COUNT_ALBUMS_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
566
581 /* Adds a folder to discover through the medialibrary */
582 VLC_ML_ADD_FOLDER, /**< arg1: mrl (const char*) res: can't fail */
583 VLC_ML_REMOVE_FOLDER, /**< arg1: mrl (const char*) res: can't fail */
584 VLC_ML_BAN_FOLDER, /**< arg1: mrl (const char*) res: can't fail */
585 VLC_ML_UNBAN_FOLDER, /**< arg1: mrl (const char*) res: can't fail */
586 VLC_ML_IS_INDEXED, /**< arg1: mrl (const char*) arg2 (out): bool*; res: can fail */
587 /**
588 * Reload a specific folder, or all.
589 * arg1: mrl (const char*), NULL to reload all folders
590 * res: can't fail
591 */
594 VLC_ML_SET_FOLDER_PUBLIC, /**< arg1: mrl (const char *); res: can't fail */
595 VLC_ML_SET_FOLDER_PRIVATE, /**< arg1: mrl (const char *); res: can't fail */
597 /* Pause/resume background operations, such as media discovery & media analysis */
598 VLC_ML_PAUSE_BACKGROUND, /**< no args; can't fail */
599 VLC_ML_RESUME_BACKGROUND, /**< no args; can't fail */
601 /* Misc operations */
602 VLC_ML_CLEAR_HISTORY, /**< arg1: vlc_ml_history_type_t; can't fail */
604 /* Create media */
605 VLC_ML_NEW_EXTERNAL_MEDIA, /**< arg1: const char*; arg2(out): vlc_ml_media_t** */
606 VLC_ML_NEW_STREAM, /**< arg1: const char*; arg2(out): vlc_ml_media_t** */
610 /* Media management */
611 VLC_ML_MEDIA_UPDATE_PROGRESS, /**< arg1: media id; arg2: playback position; can fail */
612 VLC_ML_MEDIA_GET_MEDIA_PLAYBACK_STATE, /**< arg1: media id; arg2: vlc_ml_playback_state; arg3: char**; */
613 VLC_ML_MEDIA_SET_MEDIA_PLAYBACK_STATE, /**< arg1: media id; arg2: vlc_ml_playback_state; arg3: const char*; */
614 VLC_ML_MEDIA_GET_ALL_MEDIA_PLAYBACK_STATES, /**< arg1: media id; arg2(out): vlc_ml_playback_states_all* */
615 VLC_ML_MEDIA_SET_ALL_MEDIA_PLAYBACK_STATES, /**< arg1: media id; arg2: const vlc_ml_playback_states_all* */
616 VLC_ML_MEDIA_SET_THUMBNAIL, /**< arg1: media id; arg2: const char*; arg3: vlc_ml_thumbnail_size_t */
617 VLC_ML_MEDIA_SET_GENRE_THUMBNAIL, /**< arg1: media id; arg2: const char*; arg3: vlc_ml_thumbnail_size_t */
618 VLC_ML_MEDIA_GENERATE_THUMBNAIL, /**< arg1: media id; arg2: vlc_ml_thumbnail_size_t; arg3: width; arg4: height; arg5: position */
619 VLC_ML_MEDIA_ADD_EXTERNAL_MRL, /**< arg1: media id; arg2: const char*; arg3: type(vlc_ml_file_type_t) */
620 VLC_ML_MEDIA_SET_TYPE, /**< arg1: media id; arg2: vlc_ml_media_type_t */
621 VLC_ML_MEDIA_SET_PLAYED, /**< arg1: media id; arg2: bool */
622 VLC_ML_MEDIA_SET_FAVORITE, /**< arg1: media id; arg2: bool */
623 VLC_ML_MEDIA_ADD_BOOKMARK, /**< arg1: media id; arg2: int64_t */
624 VLC_ML_MEDIA_REMOVE_BOOKMARK, /**< arg1: media id; arg2: int64_t */
625 VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS, /**< arg1: media id */
626 VLC_ML_MEDIA_UPDATE_BOOKMARK, /**< arg1: media id; arg2: int64_t; arg3: const char*; arg4: const char* */
628 /* Playlist management */
629 VLC_ML_PLAYLIST_CREATE, /**< arg1: const char*; arg2(out): vlc_ml_playlist_t**; can fail */
630 VLC_ML_PLAYLIST_DELETE, /**< arg1: playlist id; can fail */
631 VLC_ML_PLAYLIST_APPEND, /**< arg1: playlist id; arg2: pointer on media ids; arg3: media ids count; can fail */
632 VLC_ML_PLAYLIST_INSERT, /**< arg1: playlist id; arg2: pointer on media ids; arg3: media ids count; arg4: position; can fail */
633 VLC_ML_PLAYLIST_MOVE, /**< arg1: playlist id; arg2: from; arg3: to; arg4: count; can fail */
634 VLC_ML_PLAYLIST_REMOVE, /**< arg1: playlist id; arg2: position; arg3: count; can fail */
635 VLC_ML_PLAYLIST_RENAME, /**< arg1: playlist id; arg2: const char*; can fail */
637 /* Set Favorites */
638 VLC_ML_FOLDER_SET_FAVORITE, /**< arg1: mrl (const char*); arg2: bool; res: can fail */
639 VLC_ML_ARTIST_SET_FAVORITE, /**< arg1: artist id; arg2: bool; can fail */
640 VLC_ML_ALBUM_SET_FAVORITE, /**< arg1: album id; arg2: bool; can fail */
641 VLC_ML_GENRE_SET_FAVORITE, /**< arg1: genre id; arg2: bool; can fail */
642 VLC_ML_PLAYLIST_SET_FAVORITE, /**< arg1: playlist id; arg2: bool; can fail */
644
645/**
646 * User playback settings.
647 * All values/units are up to the caller and are not interpreted by the media
648 * library.
649 * All values are stored and returned as strings.
650 * When calling vlc_medialibrary_t::pf_control with vlc_ml_MEDIA_GET_MEDIA_PLAYBACK_STATE,
651 * the value will be returned stored in the provided char**. If the state was
652 * not set yet, NULL will be returned.
653 * When setting a state, NULL can be provided as a value to unset it.
654 */
676typedef struct vlc_ml_playback_states_all
692 /**
693 * Entity modification callbacks. The affected entity will be passed:
694 * - As a `vlc_ml_<type>_t`, depending on the type of the modified/inserted
695 * entity, in `vlc_ml_event_t::modification::p_<type>`
696 * for ADDED and UPDATED variants.
697 * - as an id, in ::vlc_ml_event_t::deletion::i_entity_id
698 * When _DELETED callbacks get invoked, the entity will already have been
699 * deleted from the database, and cannot be retrieved anymore
700 */
725 /**
726 * A discovery started.
727 *
728 * This event will be emitted when the media library starts discovering a
729 * scheduled entry point.
730 * If more than a single entry point are queued, this event won't be fired
731 * again until all operations are completed and a new operation is scheduled.
732 * Once all currently queued operations are done
733 * VLC_ML_EVENT_DISCOVERY_COMPLETED will be emitted.
734 */
736 /**
737 * Sent when a discovery or reload operation starts analyzing a new folder.
738 * The discovered entry point is stored in
739 * vlc_ml_event_t::discovery_progress::psz_entry_point.
740 */
742 /**
743 * Sent when all queued discovery operations are done being processed.
744 */
746 /**
747 * This event is sent when a discovery failed. The entry point that failed to
748 * be discovered is stored in
749 * vlc_ml_event_t::discovery_failed::psz_entry_point
750 */
752 /**
753 * Sent when a new entry point gets added to the database.
754 * The entry point that was added is stored in
755 * vlc::ml_event_t::entry_point_added::psz_entry_point, and the success or failure
756 * state is stored in vlc_ml_event_t::entry_point_added::b_success
757 * If successful, this event won't be emitted again for this entry point.
758 * In case of failure, this event will be fired again if the same entry point
759 * is queued for discovery again.
760 */
762 /**
763 * Sent when an entry point removal request has been processed.
764 * The removed entry point is stored in
765 * vlc_ml_event_t::entry_point_removed::psz_entry_point and the success or failure
766 * state is stored in vlc_ml_event_t::entry_point_removed::b_success
767 */
769 /**
770 * Sent when an entry point ban request has been processed.
771 * The banned entry point is stored in
772 * vlc_ml_event_t::entry_point_banned::psz_entry_point and the operation success
773 * state is stored in vlc_ml_event_t::entry_point_banned::b_success
774 */
776 /**
777 * Sent when an entry point unban request has been processed.
778 * The unbanned entry point is stored in
779 * vlc_ml_event_t::entry_point_unbanned::psz_entry_point and the operation success
780 * state is stored in vlc_ml_event_t::entry_point_unbanned::b_success
781 */
783 /**
784 * Sent when a discoverer or parser threads changes its idle state.
785 * The idle state is stored in vlc_ml_event_t::background_idle_changed.b_idle.
786 * False means at least one background thread is in running, true means
787 * both discoverer & parser threads are paused.
788 */
790 /**
791 * Sent when the parsing progress percentage gets updated.
792 * The percentage is stored as a [0;100] integer, in
793 * vlc_ml_event_t::parsing_progress::i_percent
794 * This value might decrease as more media get discovered, but it will only
795 * increase once all discovery operations are completed.
796 */
798 /**
799 * Sent after a media thumbnail was generated, or if it's generation failed.
800 * The media is stored in vlc_ml_event_t::media_thumbnail_generated::p_media
801 * and the success state is stored in
802 * vlc_ml_event_t::media_thumbnail_generated::b_success
803 */
805 /**
806 * Sent after the history gets changed. It can be either cleaned, or simply
807 * modified because a media was recently played/removed from the history.
808 * The history type (global/local/network) is stored in
809 * vlc_ml_event_t::history_changed::history_type
810 */
812 /**
813 * Sent when an application requested rescan starts being processed.
814 */
817
818typedef struct vlc_ml_event_t
820 int i_type;
821 union
822 {
823 struct
824 {
825 const char* psz_entry_point;
827 struct
828 {
829 const char* psz_entry_point;
831 struct
832 {
833 const char* psz_entry_point;
834 bool b_success;
836 struct
837 {
838 const char* psz_entry_point;
839 bool b_success;
841 struct
842 {
843 const char* psz_entry_point;
844 bool b_success;
846 struct
847 {
848 const char* psz_entry_point;
849 bool b_success;
851 struct
852 {
853 uint8_t i_percent;
855 union
856 {
857 const vlc_ml_media_t* p_media;
866 struct
867 {
868 int64_t i_entity_id;
870 struct
871 {
872 int64_t i_entity_id;
873 } deletion;
874 struct
875 {
876 bool b_idle;
878 struct
879 {
880 const vlc_ml_media_t* p_media;
884 struct
885 {
888 };
891typedef void (*vlc_ml_callback_t)( void* p_data, const vlc_ml_event_t* p_event );
893typedef struct vlc_medialibrary_callbacks_t
900 struct vlc_object_t obj;
904 void* p_sys;
906 int (*pf_control)( struct vlc_medialibrary_module_t* p_ml, int i_query, va_list args );
907 /**
908 * List some entities from the medialibrary.
909 *
910 * \param p_ml The medialibrary module instance.
911 * \param i_query The type search to be performed. \see vlc_ml_list enumeration
912 * \param p_params A pointer to a vlc_ml_query_params_t structure, or NULL for
913 * the default parameters (alphabetical ascending sort, no pagination)
914 *
915 * \return VLC_SUCCESS or an error code
916 *
917 * Refer to the individual list of vlc_ml_list requests for the additional
918 * per-query input/output parameters values & types
919 */
920 int (*pf_list)( struct vlc_medialibrary_module_t* p_ml, int i_query,
921 const vlc_ml_query_params_t* p_params, va_list args );
922
923 /**
924 * Get a specific entity by its id or another unique value
925 *
926 * \return The required entity, or a NULL pointer if couldn't be found.
927 *
928 * Refer to the list of queries for the specific return type
929 */
930 void* (*pf_get)( struct vlc_medialibrary_module_t* p_ml, int i_query, va_list args );
934
937
939#define vlc_ml_instance_get(x) vlc_ml_instance_get( VLC_OBJECT(x) )
941VLC_API void* vlc_ml_get( vlc_medialibrary_t* p_ml, int i_query, ... ) VLC_USED;
942VLC_API int vlc_ml_control( vlc_medialibrary_t* p_ml, int i_query, ... ) VLC_USED;
943VLC_API int vlc_ml_list( vlc_medialibrary_t* p_ml, int i_query,
944 const vlc_ml_query_params_t* p_params, ... );
945
946/**
947 * \brief Registers a medialibrary callback.
948 * \returns A handle to the callback, to be passed to vlc_ml_event_unregister_callback
949 */
952
953/**
954 * \brief Unregisters a medialibrary callback
955 * \param p_ml an initialized medialibrary instance
956 * \param p_callback The callback handle returned by vlc_ml_register_callback
957 */
959 vlc_ml_event_callback_t* p_callback );
960/**
961 * \brief Unregisters a medialibrary callback from the said callback.
962 * \param p_ml an initialized medialibrary instance
963 * \param p_callback The handle returned by vlc_ml_register_callback
964 *
965 * This must only be called synchronously from the callback function provided to
966 * vlc_ml_event_register_callback
967 * The p_callback handle must be considered invalid when this function returns
968 */
970 vlc_ml_event_callback_t* p_callback );
971
972
981
995
998#ifdef __cplusplus
999 vlc_ml_query_params_t ret = { };
1001#else
1003#endif
1004 return ret;
1005}
1006
1007static inline int vlc_ml_add_folder( vlc_medialibrary_t* p_ml, const char* psz_folder )
1009 return vlc_ml_control( p_ml, VLC_ML_ADD_FOLDER, psz_folder );
1010}
1011
1012static inline int vlc_ml_remove_folder( vlc_medialibrary_t* p_ml, const char* psz_folder )
1014 return vlc_ml_control( p_ml, VLC_ML_REMOVE_FOLDER, psz_folder );
1015}
1016
1017static inline int vlc_ml_ban_folder( vlc_medialibrary_t* p_ml, const char* psz_folder )
1019 return vlc_ml_control( p_ml, VLC_ML_BAN_FOLDER, psz_folder );
1020}
1021
1022static inline int vlc_ml_unban_folder( vlc_medialibrary_t* p_ml, const char* psz_folder )
1024 return vlc_ml_control( p_ml, VLC_ML_UNBAN_FOLDER, psz_folder );
1025}
1026
1027static inline int vlc_ml_is_indexed( vlc_medialibrary_t* p_ml,
1028 const char* psz_mrl, bool* p_res )
1029{
1030 return vlc_ml_control( p_ml, VLC_ML_IS_INDEXED, psz_mrl, p_res );
1031}
1032
1033static inline int vlc_ml_reload_folder( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1035 return vlc_ml_control( p_ml, VLC_ML_RELOAD_FOLDER, psz_mrl );
1036}
1037
1038static inline int vlc_ml_set_folder_public( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1040 return vlc_ml_control( p_ml, VLC_ML_SET_FOLDER_PUBLIC, psz_mrl );
1041}
1042
1043static inline int vlc_ml_set_folder_private( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1045 return vlc_ml_control( p_ml, VLC_ML_SET_FOLDER_PRIVATE, psz_mrl );
1046}
1047
1048static inline int vlc_ml_pause_background( vlc_medialibrary_t* p_ml )
1051}
1052
1053static inline int vlc_ml_resume_background( vlc_medialibrary_t* p_ml )
1056}
1057
1058static inline int vlc_ml_clear_history( vlc_medialibrary_t* p_ml, vlc_ml_history_type_t type )
1060 return vlc_ml_control( p_ml, VLC_ML_CLEAR_HISTORY, type );
1061}
1062
1063static inline vlc_ml_media_t* vlc_ml_new_external_media( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1065 vlc_ml_media_t* res;
1066 if ( vlc_ml_control( p_ml, VLC_ML_NEW_EXTERNAL_MEDIA, psz_mrl, &res ) != VLC_SUCCESS )
1067 return NULL;
1068 return res;
1069}
1070
1071static inline vlc_ml_media_t* vlc_ml_new_stream( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1073 vlc_ml_media_t* res;
1074 if ( vlc_ml_control( p_ml, VLC_ML_NEW_STREAM, psz_mrl, &res ) != VLC_SUCCESS )
1075 return NULL;
1076 return res;
1077}
1078
1079static inline int vlc_ml_remove_stream( vlc_medialibrary_t* p_ml, int64_t i_media_id )
1081 return vlc_ml_control(p_ml, VLC_ML_REMOVE_STREAM, i_media_id);
1082}
1083
1084static inline int vlc_ml_media_update_progress( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1085 double progress )
1086{
1087 return vlc_ml_control( p_ml, VLC_ML_MEDIA_UPDATE_PROGRESS, i_media_id, progress );
1088}
1089
1090static inline int vlc_ml_media_get_playback_state( vlc_medialibrary_t* p_ml, int64_t i_media_id, int i_state, char** ppsz_result )
1092 return vlc_ml_control( p_ml, VLC_ML_MEDIA_GET_MEDIA_PLAYBACK_STATE, i_media_id, i_state, ppsz_result );
1093}
1094
1095static 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 )
1097 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_MEDIA_PLAYBACK_STATE, i_media_id, i_state, psz_value );
1098}
1099
1101 int64_t i_media_id,
1103{
1104 return vlc_ml_control( p_ml,VLC_ML_MEDIA_GET_ALL_MEDIA_PLAYBACK_STATES, i_media_id, prefs );
1105}
1106
1108 int64_t i_media_id,
1109 const vlc_ml_playback_states_all* prefs )
1110{
1111 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_ALL_MEDIA_PLAYBACK_STATES, i_media_id, prefs );
1112}
1113
1114static inline int vlc_ml_media_set_thumbnail( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1115 const char* psz_mrl, vlc_ml_thumbnail_size_t sizeType )
1116{
1117 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_THUMBNAIL, i_media_id, psz_mrl, sizeType );
1118}
1119
1120static inline int vlc_ml_media_set_genre_thumbnail( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1121 const char* psz_mrl, vlc_ml_thumbnail_size_t sizeType )
1122{
1123 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_GENRE_THUMBNAIL, i_media_id, psz_mrl, sizeType );
1124}
1125
1126
1127static inline int vlc_ml_media_generate_thumbnail( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1129 uint32_t i_desired_width,
1130 uint32_t i_desired_height,
1131 double position )
1132{
1133 return vlc_ml_control( p_ml, VLC_ML_MEDIA_GENERATE_THUMBNAIL, i_media_id,
1134 size_type, i_desired_width, i_desired_height, position );
1135}
1136
1137static inline int vlc_ml_media_add_external_mrl( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1138 const char* psz_mrl, int i_type )
1139{
1140 return vlc_ml_control( p_ml, VLC_ML_MEDIA_ADD_EXTERNAL_MRL, i_media_id, psz_mrl, i_type );
1141}
1142
1143static inline int vlc_ml_media_set_type( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1145{
1146 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_TYPE, i_media_id, (int)i_type );
1147}
1148
1149static inline int vlc_ml_media_set_played( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1150 bool b_played )
1151{
1152 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_PLAYED, i_media_id, (int) b_played );
1153}
1154
1155static inline int vlc_ml_media_set_favorite( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1156 bool b_favorite )
1157{
1158 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_FAVORITE, i_media_id, (int) b_favorite );
1159}
1160
1161static inline vlc_ml_bookmark_list_t*
1163 int64_t i_media_id )
1164{
1165 assert( p_ml != NULL );
1167 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA_BOOKMARKS, params, i_media_id,
1168 &res ) != VLC_SUCCESS )
1169 return NULL;
1170 return res;
1171}
1172
1173static inline int
1174vlc_ml_media_add_bookmark( vlc_medialibrary_t* p_ml, int64_t i_media_id, int64_t i_time )
1176 assert( p_ml != NULL );
1177 return vlc_ml_control( p_ml, VLC_ML_MEDIA_ADD_BOOKMARK, i_media_id, i_time );
1178}
1179
1180static inline int
1181vlc_ml_media_remove_bookmark( vlc_medialibrary_t* p_ml, int64_t i_media_id, int64_t i_time )
1183 assert( p_ml != NULL );
1184 return vlc_ml_control( p_ml, VLC_ML_MEDIA_REMOVE_BOOKMARK, i_media_id, i_time );
1185}
1186
1187static inline int
1188vlc_ml_media_update_bookmark( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1189 int64_t i_time, const char* psz_name,
1190 const char* psz_desc )
1191{
1192 assert( p_ml != NULL );
1193 return vlc_ml_control( p_ml, VLC_ML_MEDIA_UPDATE_BOOKMARK, i_media_id,
1194 i_time, psz_name, psz_desc );
1195}
1196
1197static inline int
1198vlc_ml_media_remove_all_bookmarks( vlc_medialibrary_t* p_ml, int64_t i_media_id )
1200 assert( p_ml != NULL );
1201 return vlc_ml_control( p_ml, VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS, i_media_id );
1202}
1203
1204static inline vlc_ml_playlist_t*
1205vlc_ml_playlist_create( vlc_medialibrary_t * p_ml, const char * name)
1207 assert( p_ml != NULL );
1208
1209 vlc_ml_playlist_t* result;
1210
1211 if (vlc_ml_control( p_ml, VLC_ML_PLAYLIST_CREATE, name, &result ) != VLC_SUCCESS )
1212 return NULL;
1213
1214 return result;
1215}
1216
1217static inline int
1218vlc_ml_playlist_delete( vlc_medialibrary_t * p_ml, int64_t i_playlist_id )
1220 assert( p_ml != NULL );
1221
1222 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_DELETE, i_playlist_id );
1223}
1224
1225static inline int
1226vlc_ml_playlist_append( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, const int64_t *i_media_ids, size_t i_media_id_count )
1228 assert( p_ml != NULL );
1229
1230 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_APPEND, i_playlist_id, i_media_ids, i_media_id_count );
1231}
1232
1233static inline int
1234vlc_ml_playlist_insert( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, const int64_t *i_media_ids,
1235 size_t i_media_id_count, uint32_t i_position )
1236{
1237 assert( p_ml != NULL );
1238
1239 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_INSERT, i_playlist_id, i_media_ids, i_media_id_count, i_position );
1240}
1241
1242static inline int
1244 int64_t i_playlist_id, uint32_t i_from, uint32_t i_to, uint32_t i_count )
1245{
1246 assert( p_ml != NULL );
1247
1248 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_MOVE, i_playlist_id, i_from, i_to, i_count );
1249}
1250
1251static inline int
1252vlc_ml_playlist_remove( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, uint32_t i_position, uint32_t i_count )
1254 assert( p_ml != NULL );
1255
1256 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_REMOVE, i_playlist_id, i_position, i_count );
1257}
1258
1259static inline int
1260vlc_ml_playlist_rename( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, const char* name )
1262 assert( p_ml != NULL );
1263
1264 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_RENAME, i_playlist_id, name );
1265}
1266
1267static inline vlc_ml_media_t* vlc_ml_get_media( vlc_medialibrary_t* p_ml, int64_t i_media_id )
1269 return (vlc_ml_media_t*)vlc_ml_get( p_ml, VLC_ML_GET_MEDIA, i_media_id );
1270}
1271
1273 const char* psz_mrl )
1274{
1275 return (vlc_ml_media_t*)vlc_ml_get( p_ml, VLC_ML_GET_MEDIA_BY_MRL, psz_mrl );
1276}
1277
1278static inline input_item_t* vlc_ml_get_input_item( vlc_medialibrary_t* p_ml, int64_t i_media_id )
1280 return (input_item_t*)vlc_ml_get( p_ml, VLC_ML_GET_INPUT_ITEM, i_media_id );
1281}
1282
1284 const char* psz_mrl )
1285{
1286 return (input_item_t*)vlc_ml_get( p_ml, VLC_ML_GET_INPUT_ITEM_BY_MRL, psz_mrl );
1287}
1288
1289static inline vlc_ml_album_t* vlc_ml_get_album( vlc_medialibrary_t* p_ml, int64_t i_album_id )
1291 return (vlc_ml_album_t*)vlc_ml_get( p_ml, VLC_ML_GET_ALBUM, i_album_id );
1292}
1293
1294static inline vlc_ml_artist_t* vlc_ml_get_artist( vlc_medialibrary_t* p_ml, int64_t i_artist_id )
1296 return (vlc_ml_artist_t*)vlc_ml_get( p_ml, VLC_ML_GET_ARTIST, i_artist_id );
1297}
1298
1299static inline vlc_ml_genre_t* vlc_ml_get_genre( vlc_medialibrary_t* p_ml, int64_t i_genre_id )
1301 return (vlc_ml_genre_t*)vlc_ml_get( p_ml, VLC_ML_GET_GENRE, i_genre_id );
1302}
1303
1304static inline vlc_ml_show_t* vlc_ml_get_show( vlc_medialibrary_t* p_ml, int64_t i_show_id )
1306 return (vlc_ml_show_t*)vlc_ml_get( p_ml, VLC_ML_GET_SHOW, i_show_id );
1307}
1308
1309static inline vlc_ml_group_t* vlc_ml_get_group( vlc_medialibrary_t* p_ml, int64_t i_group_id )
1311 return (vlc_ml_group_t*)vlc_ml_get( p_ml, VLC_ML_GET_GROUP, i_group_id );
1312}
1313
1314static inline vlc_ml_folder_t* vlc_ml_get_folder( vlc_medialibrary_t* p_ml, int64_t i_folder_id )
1316 return (vlc_ml_folder_t*)vlc_ml_get( p_ml, VLC_ML_GET_FOLDER, i_folder_id);
1317}
1318
1319static inline vlc_ml_playlist_t* vlc_ml_get_playlist( vlc_medialibrary_t* p_ml, int64_t i_playlist_id )
1321 return (vlc_ml_playlist_t*)vlc_ml_get( p_ml, VLC_ML_GET_PLAYLIST, i_playlist_id );
1322}
1323
1324static 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 )
1326 vlc_assert( p_ml != NULL );
1328 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1329 return NULL;
1330 return res;
1331}
1332
1333static 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 )
1335 vlc_assert( p_ml != NULL );
1336 size_t res;
1337 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_MEDIA_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1338 return 0;
1339 return res;
1340}
1341
1344 int i_parent_type, int64_t i_parent_id )
1345{
1346 vlc_assert( p_ml != NULL );
1347
1349
1351 params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1352 return NULL;
1353
1354 return res;
1355}
1356
1357static inline size_t vlc_ml_count_video_of( vlc_medialibrary_t* p_ml,
1359 int i_parent_type, int64_t i_parent_id )
1360{
1361 vlc_assert( p_ml != NULL );
1362
1363 size_t res;
1364
1366 params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1367 return 0;
1368
1369 return res;
1370}
1371
1374 int i_parent_type, int64_t i_parent_id )
1375{
1376 vlc_assert( p_ml != NULL );
1377
1379
1381 params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1382 return NULL;
1383
1384 return res;
1385}
1386
1387static inline size_t vlc_ml_count_audio_of( vlc_medialibrary_t* p_ml,
1389 int i_parent_type, int64_t i_parent_id )
1390{
1391 vlc_assert( p_ml != NULL );
1392
1393 size_t res;
1394
1396 params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1397 return 0;
1398
1399 return res;
1400}
1401
1402static 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 )
1404 vlc_assert( p_ml != NULL );
1406 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ARTISTS_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1407 return NULL;
1408 return res;
1409}
1410
1411static 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 )
1413 vlc_assert( p_ml != NULL );
1414 size_t res;
1415 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ARTISTS_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1416 return 0;
1417 return res;
1418}
1419
1420static 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 )
1422 vlc_assert( p_ml != NULL );
1424 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ALBUMS_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1425 return NULL;
1426 return res;
1427}
1428
1429static 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 )
1431 vlc_assert( p_ml != NULL );
1432 size_t res;
1433 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ALBUMS_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1434 return 0;
1435 return res;
1436}
1437
1438static 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 )
1440 vlc_assert( p_ml != NULL );
1442 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ALBUM_TRACKS, params, i_album_id, &res ) != VLC_SUCCESS )
1443 return NULL;
1444 return res;
1445}
1446
1447static 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 )
1449 vlc_assert( p_ml != NULL );
1450 size_t count;
1451 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ALBUM_TRACKS, params, i_album_id, &count ) != VLC_SUCCESS )
1452 return 0;
1453 return count;
1454}
1455
1456static 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 )
1458 vlc_assert( p_ml != NULL );
1460 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ALBUM_ARTISTS, params, i_album_id, &res ) != VLC_SUCCESS )
1461 return NULL;
1462 return res;
1463}
1464
1465static 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 )
1467 vlc_assert( p_ml != NULL );
1468 size_t count;
1469 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ALBUM_ARTISTS, params, i_album_id, &count ) != VLC_SUCCESS )
1470 return 0;
1471 return count;
1472}
1473
1474static 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 )
1476 vlc_assert( p_ml != NULL );
1478 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ARTIST_ALBUMS, params, i_artist_id, &res ) != VLC_SUCCESS )
1479 return NULL;
1480 return res;
1481}
1482
1483static 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 )
1485 vlc_assert( p_ml != NULL );
1486 size_t count;
1487 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ARTIST_ALBUMS, params, i_artist_id, &count ) != VLC_SUCCESS )
1488 return 0;
1489 return count;
1490}
1491
1492static 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 )
1494 vlc_assert( p_ml != NULL );
1496 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ARTIST_TRACKS, params, i_artist_id, &res ) != VLC_SUCCESS )
1497 return NULL;
1498 return res;
1499}
1500
1501static 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 )
1503 vlc_assert( p_ml != NULL );
1504 size_t count;
1505 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ARTIST_TRACKS, params, i_artist_id, &count ) != VLC_SUCCESS )
1506 return 0;
1507 return count;
1508}
1509
1512 vlc_assert( p_ml != NULL );
1514 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA, params, &res ) != VLC_SUCCESS )
1515 return NULL;
1516 return res;
1517}
1518
1519static inline size_t vlc_ml_count_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1521 vlc_assert( p_ml != NULL );
1522 size_t count;
1523 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_MEDIA, params, &count ) != VLC_SUCCESS )
1524 return 0;
1525 return count;
1526}
1527
1530 vlc_assert( p_ml != NULL );
1532 if ( vlc_ml_list( p_ml, VLC_ML_LIST_VIDEOS, params, &res ) != VLC_SUCCESS )
1533 return NULL;
1534 return res;
1535}
1536
1537static inline size_t vlc_ml_count_video_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1539 vlc_assert( p_ml != NULL );
1540 size_t count;
1541 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_VIDEOS, params, &count ) != VLC_SUCCESS )
1542 return 0;
1543 return count;
1544}
1545
1548 vlc_assert( p_ml != NULL );
1550 if ( vlc_ml_list( p_ml, VLC_ML_LIST_AUDIOS, params, &res ) != VLC_SUCCESS )
1551 return NULL;
1552 return res;
1553}
1554
1555static inline size_t vlc_ml_count_audio_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1557 vlc_assert( p_ml != NULL );
1558 size_t count;
1559 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_AUDIOS, params, &count ) != VLC_SUCCESS )
1560 return 0;
1561 return count;
1562}
1563
1566 vlc_assert( p_ml != NULL );
1568 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ALBUMS, params, &res ) != VLC_SUCCESS )
1569 return NULL;
1570 return res;
1571}
1572
1573static inline size_t vlc_ml_count_albums( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1575 vlc_assert( p_ml != NULL );
1576 size_t count;
1577 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ALBUMS, params, &count ) != VLC_SUCCESS )
1578 return 0;
1579 return count;
1580}
1581
1584 vlc_assert( p_ml != NULL );
1586 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GENRES, params, &res ) != VLC_SUCCESS )
1587 return NULL;
1588 return res;
1589}
1590
1591static inline size_t vlc_ml_count_genres( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1593 vlc_assert( p_ml != NULL );
1594 size_t count;
1595 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRES, params, &count ) != VLC_SUCCESS )
1596 return 0;
1597 return count;
1598}
1599
1600/**
1601 * @brief vlc_ml_list_artists
1602 * @param p_ml an initialized medialibrary instance
1603 * @param params Query parameters, or NULL for the default
1604 * @param b_include_all True if you wish to fetch artists without at least one album.
1605 * @return
1606 */
1607static 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 )
1609 vlc_assert( p_ml != NULL );
1611 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ARTISTS, params, (int)b_include_all, &res ) != VLC_SUCCESS )
1612 return NULL;
1613 return res;
1614}
1615
1616static inline size_t vlc_ml_count_artists( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, bool includeAll )
1618 vlc_assert( p_ml != NULL );
1619 size_t count;
1620 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ARTISTS, params, includeAll, &count ) != VLC_SUCCESS )
1621 return 0;
1622 return count;
1623}
1624
1627 vlc_assert( p_ml != NULL );
1628 vlc_ml_show_list_t* res;
1629 if ( vlc_ml_list( p_ml, VLC_ML_LIST_SHOWS, params, &res ) != VLC_SUCCESS )
1630 return NULL;
1631 return res;
1632}
1633
1634static inline size_t vlc_ml_count_shows( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1636 vlc_assert( p_ml != NULL );
1637 size_t count;
1638 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_SHOWS, params, &count ) != VLC_SUCCESS )
1639 return 0;
1640 return count;
1641}
1642
1643static 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 )
1645 vlc_assert( p_ml != NULL );
1647 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GENRE_ARTISTS, params, i_genre_id, &res ) != VLC_SUCCESS )
1648 return NULL;
1649 return res;
1650}
1651
1652static 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 )
1654 vlc_assert( p_ml != NULL );
1655 size_t count;
1656 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRE_ARTISTS, params, i_genre_id, &count ) != VLC_SUCCESS )
1657 return 0;
1658 return count;
1659}
1660
1661static 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 )
1663 vlc_assert( p_ml != NULL );
1665 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GENRE_TRACKS, params, i_genre_id, &res ) != VLC_SUCCESS )
1666 return NULL;
1667 return res;
1668}
1669
1670static 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 )
1672 vlc_assert( p_ml != NULL );
1673 size_t count;
1674 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRE_TRACKS, params, i_genre_id, &count ) != VLC_SUCCESS )
1675 return 0;
1676 return count;
1677}
1678
1679static 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 )
1681 vlc_assert( p_ml != NULL );
1683 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GENRE_ALBUMS, params, i_genre_id, &res ) != VLC_SUCCESS )
1684 return NULL;
1685 return res;
1686}
1687
1688static 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 )
1690 vlc_assert( p_ml != NULL );
1691 size_t count;
1692 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRE_ALBUMS, params, i_genre_id, &count ) != VLC_SUCCESS )
1693 return 0;
1694 return count;
1695}
1696
1697static 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 )
1699 vlc_assert( p_ml != NULL );
1701 if ( vlc_ml_list( p_ml, VLC_ML_LIST_SHOW_EPISODES, params, i_show_id, &res ) != VLC_SUCCESS )
1702 return NULL;
1703 return res;
1704}
1705
1706static 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 )
1708 vlc_assert( p_ml != NULL );
1709 size_t count;
1710 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRE_ALBUMS, params, i_show_id, &count ) != VLC_SUCCESS )
1711 return 0;
1712 return count;
1713}
1714
1715static 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 )
1717 vlc_assert( p_ml != NULL );
1719 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA_LABELS, params, i_media_id, &res ) != VLC_SUCCESS )
1720 return NULL;
1721 return res;
1722}
1723
1724static 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 )
1726 vlc_assert( p_ml != NULL );
1727 size_t count;
1728 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA_LABELS, params, i_media_id, &count ) != VLC_SUCCESS )
1729 return 0;
1730 return count;
1731}
1732
1735 vlc_assert( p_ml != NULL );
1737 if ( vlc_ml_list( p_ml, VLC_ML_LIST_HISTORY, params, (int)type, &res ) != VLC_SUCCESS )
1738 return NULL;
1739 return res;
1740}
1741
1742static 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 )
1744 vlc_assert( p_ml != NULL );
1745 size_t count;
1746 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_HISTORY, params, (int)type, &count ) != VLC_SUCCESS )
1747 return 0;
1748 return count;
1749}
1750
1753 vlc_assert( p_ml != NULL );
1755 if ( vlc_ml_list( p_ml, VLC_ML_LIST_VIDEO_HISTORY, params, &res ) != VLC_SUCCESS )
1756 return NULL;
1757 return res;
1758}
1759
1760static inline size_t vlc_ml_count_video_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1762 vlc_assert( p_ml != NULL );
1763 size_t count;
1764 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_VIDEO_HISTORY, params, &count ) != VLC_SUCCESS )
1765 return 0;
1766 return count;
1767}
1768
1771 vlc_assert( p_ml != NULL );
1773 if ( vlc_ml_list( p_ml, VLC_ML_LIST_AUDIO_HISTORY, params, &res ) != VLC_SUCCESS )
1774 return NULL;
1775 return res;
1776}
1777
1778static inline size_t vlc_ml_count_audio_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1780 vlc_assert( p_ml != NULL );
1781 size_t count;
1782 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_AUDIO_HISTORY, params, &count ) != VLC_SUCCESS )
1783 return 0;
1784 return count;
1785}
1786
1787//-------------------------------------------------------------------------------------------------
1788// Groups
1789
1792 vlc_assert( p_ml != NULL );
1794 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GROUPS, params, &res ) != VLC_SUCCESS )
1795 return NULL;
1796 return res;
1797}
1798
1799static inline size_t vlc_ml_count_groups( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1801 vlc_assert( p_ml != NULL );
1802 size_t count;
1803 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GROUPS, params, &count ) != VLC_SUCCESS )
1804 return 0;
1805 return count;
1806}
1807
1808static 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 )
1810 vlc_assert( p_ml != NULL );
1812 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GROUP_MEDIA, params, i_group_id, &res ) != VLC_SUCCESS )
1813 return NULL;
1814 return res;
1815}
1816
1817static 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 )
1819 vlc_assert( p_ml != NULL );
1820 size_t count;
1821 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GROUP_MEDIA, params, i_group_id, &count ) != VLC_SUCCESS )
1822 return 0;
1823 return count;
1824}
1825
1826//-------------------------------------------------------------------------------------------------
1827
1830 vlc_assert( p_ml != NULL );
1832 if ( vlc_ml_list( p_ml, VLC_ML_LIST_PLAYLISTS, params, (int) playlist_type, &res ) != VLC_SUCCESS )
1833 return NULL;
1834 return res;
1835}
1836
1837static 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)
1839 vlc_assert( p_ml != NULL );
1840 size_t count;
1841 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_PLAYLISTS, params, (int) playlist_type, &count ) != VLC_SUCCESS )
1842 return 0;
1843 return count;
1844}
1845
1846static 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 )
1848 vlc_assert( p_ml != NULL );
1850 if ( vlc_ml_list( p_ml, VLC_ML_LIST_PLAYLIST_MEDIA, params, i_playlist_id, &res ) != VLC_SUCCESS )
1851 return NULL;
1852 return res;
1853}
1854
1855static 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 )
1857 vlc_assert( p_ml != NULL );
1858 size_t count;
1859 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_PLAYLIST_MEDIA, params, i_playlist_id, &count ) != VLC_SUCCESS )
1860 return 0;
1861 return count;
1862}
1863
1866 vlc_assert( p_ml != NULL );
1868 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ENTRY_POINTS, params, (int)false, &res ) != VLC_SUCCESS )
1869 return NULL;
1870 return res;
1871}
1872
1873static inline size_t vlc_ml_count_entry_points( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1875 vlc_assert( p_ml != NULL );
1876 size_t res;
1877 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ENTRY_POINTS, params, (int)false, &res ) != VLC_SUCCESS )
1878 return 0;
1879 return res;
1880}
1881
1882static inline vlc_ml_folder_list_t*
1885 vlc_assert( p_ml != NULL );
1887 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ENTRY_POINTS, params, (int)true, &res ) != VLC_SUCCESS )
1888 return NULL;
1889 return res;
1890}
1891
1892static inline size_t vlc_ml_count_banned_entry_points( vlc_medialibrary_t* p_ml,
1894{
1895 vlc_assert( p_ml != NULL );
1896 size_t res;
1897 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ENTRY_POINTS, params, (int)true, &res ) != VLC_SUCCESS )
1898 return 0;
1899 return res;
1900}
1901
1902// Folders
1903
1906{
1907 vlc_assert(p_ml != NULL);
1908
1910
1911 if (vlc_ml_list(p_ml, VLC_ML_LIST_FOLDERS, params, &res) != VLC_SUCCESS)
1912 return NULL;
1913
1914 return res;
1915}
1916
1917static inline size_t vlc_ml_count_folders(vlc_medialibrary_t * p_ml,
1919{
1920 vlc_assert(p_ml != NULL);
1921
1922 size_t count;
1923
1924 if (vlc_ml_list(p_ml, VLC_ML_COUNT_FOLDERS, params, &count) != VLC_SUCCESS)
1925 return 0;
1926
1927 return count;
1928}
1929
1930static inline
1934{
1935 vlc_assert(p_ml != NULL);
1936
1938
1939 if (vlc_ml_list(p_ml, VLC_ML_LIST_FOLDERS_BY_TYPE, params, (int) type, &res) != VLC_SUCCESS)
1940 return NULL;
1941
1942 return res;
1943}
1944
1945static inline size_t vlc_ml_count_folders_by_type(vlc_medialibrary_t * p_ml,
1948{
1949 vlc_assert(p_ml != NULL);
1950
1951 size_t count;
1952
1953 if (vlc_ml_list(p_ml, VLC_ML_COUNT_FOLDERS_BY_TYPE, params, (int) type, &count) != VLC_SUCCESS)
1954 return 0;
1955
1956 return count;
1957}
1958
1959// Folder Media
1960
1963 int64_t i_folder_id)
1964{
1965 vlc_assert(p_ml != NULL);
1966
1967 vlc_ml_media_list_t * res;
1968
1969 if (vlc_ml_list(p_ml, VLC_ML_LIST_FOLDER_MEDIA, params, i_folder_id, &res) != VLC_SUCCESS)
1970 return NULL;
1971
1972 return res;
1973}
1974
1975static inline size_t vlc_ml_count_folder_media(vlc_medialibrary_t * p_ml,
1977 int64_t i_folder_id)
1978{
1979 vlc_assert(p_ml != NULL);
1980
1981 size_t count;
1982
1983 if (vlc_ml_list(p_ml, VLC_ML_COUNT_FOLDER_MEDIA, params, i_folder_id, &count) != VLC_SUCCESS)
1984 return 0;
1985
1986 return count;
1987}
1988
1989static inline int vlc_ml_folder_set_favorite( vlc_medialibrary_t* p_ml, const char* psz_mrl, bool b_favorite )
1991 return vlc_ml_control( p_ml, VLC_ML_FOLDER_SET_FAVORITE, psz_mrl, (int)b_favorite );
1992}
1993
1994static inline int vlc_ml_artist_set_favorite( vlc_medialibrary_t* p_ml, int64_t i_artist_id, bool b_favorite )
1996 return vlc_ml_control( p_ml, VLC_ML_ARTIST_SET_FAVORITE, i_artist_id, (int)b_favorite );
1997}
1998
1999static inline int vlc_ml_album_set_favorite( vlc_medialibrary_t* p_ml, int64_t i_album_id, bool b_favorite )
2001 return vlc_ml_control( p_ml, VLC_ML_ALBUM_SET_FAVORITE, i_album_id, (int)b_favorite );
2002}
2003
2004static inline int vlc_ml_genre_set_favorite( vlc_medialibrary_t* p_ml, int64_t i_genre_id, bool b_favorite )
2006 return vlc_ml_control( p_ml, VLC_ML_GENRE_SET_FAVORITE, i_genre_id, (int)b_favorite );
2007}
2008
2009static inline int vlc_ml_playlist_set_favorite( vlc_medialibrary_t *p_ml, int64_t i_playlist_id, bool b_favorite )
2011 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_SET_FAVORITE, i_playlist_id, (int)b_favorite );
2012}
2013
2014#ifdef __cplusplus
2015}
2016#endif /* C++ */
2017
2018#ifndef __cplusplus
2019# define vlc_ml_release( OBJ ) _Generic( ( OBJ ), \
2020 vlc_ml_show_t*: vlc_ml_show_release, \
2021 vlc_ml_artist_t*: vlc_ml_artist_release, \
2022 vlc_ml_album_t*: vlc_ml_album_release, \
2023 vlc_ml_genre_t*: vlc_ml_genre_release, \
2024 vlc_ml_media_t*: vlc_ml_media_release, \
2025 vlc_ml_group_t*: vlc_ml_group_release, \
2026 vlc_ml_folder_t*: vlc_ml_folder_release, \
2027 vlc_ml_playlist_t*: vlc_ml_playlist_release, \
2028 vlc_ml_label_list_t*: vlc_ml_label_list_release, \
2029 vlc_ml_file_list_t*: vlc_ml_file_list_release, \
2030 vlc_ml_artist_list_t*: vlc_ml_artist_list_release, \
2031 vlc_ml_media_list_t*: vlc_ml_media_list_release, \
2032 vlc_ml_album_list_t*: vlc_ml_album_list_release, \
2033 vlc_ml_show_list_t*: vlc_ml_show_list_release, \
2034 vlc_ml_genre_list_t*: vlc_ml_genre_list_release, \
2035 vlc_ml_group_list_t*: vlc_ml_group_list_release, \
2036 vlc_ml_playlist_list_t*: vlc_ml_playlist_list_release, \
2037 vlc_ml_folder_list_t*: vlc_ml_folder_list_release, \
2038 vlc_ml_playback_states_all*: vlc_ml_playback_states_all_release, \
2039 vlc_ml_bookmark_t*: vlc_ml_bookmark_release, \
2040 vlc_ml_bookmark_list_t*: vlc_ml_bookmark_list_release \
2041 )( OBJ )
2042#else
2043static inline void vlc_ml_release( vlc_ml_show_t* show ) { vlc_ml_show_release( show ); }
2044static inline void vlc_ml_release( vlc_ml_artist_t* artist ) { vlc_ml_artist_release( artist ); }
2045static inline void vlc_ml_release( vlc_ml_album_t* album ) { vlc_ml_album_release( album ); }
2046static inline void vlc_ml_release( vlc_ml_genre_t* genre ) { vlc_ml_genre_release( genre ); }
2047static inline void vlc_ml_release( vlc_ml_media_t* media ) { vlc_ml_media_release( media ); }
2048static inline void vlc_ml_release( vlc_ml_group_t* group ) { vlc_ml_group_release( group ); }
2049static inline void vlc_ml_release( vlc_ml_folder_t* folder ) { vlc_ml_folder_release( folder ); }
2050static inline void vlc_ml_release( vlc_ml_playlist_t* playlist ) { vlc_ml_playlist_release( playlist ); }
2061static inline void vlc_ml_release( vlc_ml_playback_states_all* prefs ) { vlc_ml_playback_states_all_release( prefs ); }
2062static inline void vlc_ml_release( vlc_ml_bookmark_t* bookmark ) { vlc_ml_bookmark_release( bookmark ); }
2064#endif
2065
2066#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:895
void(* pf_send_event)(vlc_medialibrary_module_t *p_ml, const vlc_ml_event_t *p_event)
Definition vlc_media_library.h:896
Definition vlc_media_library.h:900
void * p_sys
Definition vlc_media_library.h:905
struct vlc_object_t obj
Definition vlc_media_library.h:901
int(* pf_control)(struct vlc_medialibrary_module_t *p_ml, int i_query, va_list args)
Definition vlc_media_library.h:907
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:921
const vlc_medialibrary_callbacks_t * cbs
Definition vlc_media_library.h:933
module_t * p_module
Definition vlc_media_library.h:903
Definition medialibrary.c:42
Definition vlc_media_library.h:355
size_t i_nb_items
Definition vlc_media_library.h:356
vlc_ml_album_t p_items[]
Definition vlc_media_library.h:357
Definition vlc_media_library.h:323
bool b_is_favorite
Definition vlc_media_library.h:336
vlc_ml_thumbnail_t thumbnails[VLC_ML_THUMBNAIL_SIZE_COUNT]
Definition vlc_media_library.h:327
int64_t i_duration
Definition vlc_media_library.h:334
char * psz_summary
Definition vlc_media_library.h:326
int64_t i_artist_id
Definition vlc_media_library.h:329
unsigned int i_year
Definition vlc_media_library.h:335
char * psz_title
Definition vlc_media_library.h:325
uint32_t i_nb_tracks
Definition vlc_media_library.h:331
uint32_t i_nb_present_tracks
Definition vlc_media_library.h:332
char * psz_artist
Definition vlc_media_library.h:328
uint32_t i_nb_discs
Definition vlc_media_library.h:333
int64_t i_id
Definition vlc_media_library.h:324
Definition vlc_media_library.h:318
size_t i_nb_items
Definition vlc_media_library.h:319
vlc_ml_artist_t p_items[]
Definition vlc_media_library.h:320
Definition vlc_media_library.h:304
char * psz_mb_id
Definition vlc_media_library.h:309
char * psz_shortbio
Definition vlc_media_library.h:307
int64_t i_id
Definition vlc_media_library.h:305
unsigned int i_nb_album
Definition vlc_media_library.h:311
char * psz_name
Definition vlc_media_library.h:306
uint32_t i_nb_present_tracks
Definition vlc_media_library.h:313
bool b_is_favorite
Definition vlc_media_library.h:314
vlc_ml_thumbnail_t thumbnails[VLC_ML_THUMBNAIL_SIZE_COUNT]
Definition vlc_media_library.h:308
unsigned int i_nb_tracks
Definition vlc_media_library.h:312
Definition vlc_media_library.h:405
int64_t i_time
The bookmark time.
Definition vlc_media_library.h:407
char * psz_name
The bookmark name.
Definition vlc_media_library.h:408
int64_t i_media_id
The associated media ID.
Definition vlc_media_library.h:406
char * psz_description
The bookmark description.
Definition vlc_media_library.h:409
Definition vlc_media_library.h:413
size_t i_nb_items
Definition vlc_media_library.h:414
vlc_ml_bookmark_t p_items[]
Definition vlc_media_library.h:415
Definition medialibrary.c:35
Definition vlc_media_library.h:820
struct vlc_ml_event_t::@245::@256 deletion
struct vlc_ml_event_t::@245::@251 entry_point_banned
uint8_t i_percent
Definition vlc_media_library.h:854
union vlc_ml_event_t::@245::@254 creation
struct vlc_ml_event_t::@245::@253 parsing_progress
struct vlc_ml_event_t::@245::@250 entry_point_removed
int64_t i_entity_id
Definition vlc_media_library.h:869
struct vlc_ml_event_t::@245::@259 history_changed
struct vlc_ml_event_t::@245::@258 media_thumbnail_generated
bool b_success
Definition vlc_media_library.h:835
struct vlc_ml_event_t::@245::@248 discovery_failed
struct vlc_ml_event_t::@245::@247 discovery_progress
const vlc_ml_artist_t * p_artist
Definition vlc_media_library.h:859
vlc_ml_history_type_t history_type
Definition vlc_media_library.h:887
const char * psz_entry_point
Definition vlc_media_library.h:826
struct vlc_ml_event_t::@245::@252 entry_point_unbanned
int i_type
Definition vlc_media_library.h:821
const vlc_ml_album_t * p_album
Definition vlc_media_library.h:860
const vlc_ml_playlist_t * p_playlist
Definition vlc_media_library.h:862
const vlc_ml_folder_t * p_folder
Definition vlc_media_library.h:865
const vlc_ml_genre_t * p_genre
Definition vlc_media_library.h:863
const vlc_ml_media_t * p_media
Definition vlc_media_library.h:858
struct vlc_ml_event_t::@245::@249 entry_point_added
vlc_ml_thumbnail_size_t i_size
Definition vlc_media_library.h:882
bool b_idle
Definition vlc_media_library.h:877
struct vlc_ml_event_t::@245::@257 background_idle_changed
const vlc_ml_group_t * p_group
Definition vlc_media_library.h:861
struct vlc_ml_event_t::@245::@255 modification
const vlc_ml_bookmark_t * p_bookmark
Definition vlc_media_library.h:864
Definition vlc_media_library.h:166
size_t i_nb_items
Definition vlc_media_library.h:167
vlc_ml_file_t p_items[]
Definition vlc_media_library.h:168
Definition vlc_media_library.h:155
int64_t i_size
Definition vlc_media_library.h:157
bool b_present
Definition vlc_media_library.h:162
time_t i_last_modification_date
Definition vlc_media_library.h:158
bool b_external
Definition vlc_media_library.h:160
vlc_ml_file_type_t i_type
Definition vlc_media_library.h:159
char * psz_mrl
Definition vlc_media_library.h:156
bool b_removable
Definition vlc_media_library.h:161
Definition vlc_media_library.h:399
vlc_ml_folder_t p_items[]
Definition vlc_media_library.h:401
size_t i_nb_items
Definition vlc_media_library.h:400
Definition vlc_media_library.h:385
char * psz_mrl
The folder's MRL.
Definition vlc_media_library.h:388
bool b_present
The folder's presence state.
Definition vlc_media_library.h:394
bool b_banned
Will be true if the user required this folder to be excluded.
Definition vlc_media_library.h:395
char * psz_name
The folder's name.
Definition vlc_media_library.h:387
unsigned int i_nb_audio
The number of audio for this volder.
Definition vlc_media_library.h:391
int64_t i_id
The folder's MRL.
Definition vlc_media_library.h:386
unsigned int i_nb_media
The media count.
Definition vlc_media_library.h:389
unsigned int i_nb_video
The number of video for this folder.
Definition vlc_media_library.h:390
bool b_is_favorite
The folder's favorite state.
Definition vlc_media_library.h:393
int64_t i_duration
The sum of all the member durations of the folder in ms.
Definition vlc_media_library.h:392
Definition vlc_media_library.h:367
vlc_ml_genre_t p_items[]
Definition vlc_media_library.h:369
size_t i_nb_items
Definition vlc_media_library.h:368
Definition vlc_media_library.h:340
vlc_ml_thumbnail_t thumbnails[VLC_ML_THUMBNAIL_SIZE_COUNT]
Definition vlc_media_library.h:344
size_t i_nb_tracks
Definition vlc_media_library.h:343
bool b_is_favorite
Definition vlc_media_library.h:345
char * psz_name
Definition vlc_media_library.h:342
int64_t i_id
Definition vlc_media_library.h:341
Definition vlc_media_library.h:373
size_t i_nb_items
Definition vlc_media_library.h:374
vlc_ml_group_t p_items[]
Definition vlc_media_library.h:375
Definition vlc_media_library.h:251
uint32_t i_nb_video
Definition vlc_media_library.h:257
uint32_t i_nb_seen
Definition vlc_media_library.h:265
time_t i_creation_date
Definition vlc_media_library.h:270
int64_t i_id
Definition vlc_media_library.h:252
uint32_t i_nb_present_video
Definition vlc_media_library.h:261
uint32_t i_nb_present_audio
Definition vlc_media_library.h:262
char * psz_name
Definition vlc_media_library.h:254
uint32_t i_nb_unknown
Definition vlc_media_library.h:259
int64_t i_duration
Definition vlc_media_library.h:268
uint32_t i_nb_total_media
Definition vlc_media_library.h:256
uint32_t i_nb_present_media
Definition vlc_media_library.h:260
uint32_t i_nb_present_seen
Definition vlc_media_library.h:266
time_t i_last_modification_date
Definition vlc_media_library.h:271
uint32_t i_nb_present_unknown
Definition vlc_media_library.h:263
uint32_t i_nb_audio
Definition vlc_media_library.h:258
Definition vlc_media_library.h:149
size_t i_nb_items
Definition vlc_media_library.h:150
vlc_ml_label_t p_items[]
Definition vlc_media_library.h:151
Definition vlc_media_library.h:143
int64_t i_id
Definition vlc_media_library.h:144
char * psz_name
Definition vlc_media_library.h:145
Definition vlc_media_library.h:349
size_t i_nb_items
Definition vlc_media_library.h:350
vlc_ml_media_t p_items[]
Definition vlc_media_library.h:351
Definition vlc_media_library.h:211
int32_t i_year
Definition vlc_media_library.h:220
vlc_ml_movie_t movie
Definition vlc_media_library.h:237
int64_t i_duration
Definition vlc_media_library.h:222
char * psz_title
Definition vlc_media_library.h:226
int64_t i_album_id
Definition vlc_media_library.h:241
struct vlc_ml_media_t::@242::@244 album_track
vlc_ml_file_list_t * p_files
Definition vlc_media_library.h:217
time_t i_last_played_date
Definition vlc_media_library.h:225
int i_track_nb
Definition vlc_media_library.h:244
vlc_ml_thumbnail_t thumbnails[VLC_ML_THUMBNAIL_SIZE_COUNT]
Definition vlc_media_library.h:229
vlc_ml_media_subtype_t i_subtype
Definition vlc_media_library.h:215
vlc_ml_show_episode_t show_episode
Definition vlc_media_library.h:236
int64_t i_id
Definition vlc_media_library.h:212
vlc_ml_media_type_t i_type
Definition vlc_media_library.h:214
int i_disc_nb
Definition vlc_media_library.h:245
int64_t i_artist_id
Definition vlc_media_library.h:240
uint32_t i_playcount
Definition vlc_media_library.h:223
bool b_is_favorite
Definition vlc_media_library.h:231
bool b_is_public
Definition vlc_media_library.h:232
char * psz_filename
Definition vlc_media_library.h:227
vlc_ml_media_track_list_t * p_tracks
Definition vlc_media_library.h:218
double f_progress
Definition vlc_media_library.h:224
int64_t i_genre_id
Definition vlc_media_library.h:242
Definition vlc_media_library.h:205
size_t i_nb_items
Definition vlc_media_library.h:206
vlc_ml_media_track_t p_items[]
Definition vlc_media_library.h:207
Definition vlc_media_library.h:172
char * psz_language
Definition vlc_media_library.h:174
uint32_t i_nbChannels
Definition vlc_media_library.h:183
uint32_t i_height
Definition vlc_media_library.h:189
uint32_t i_sampleRate
Definition vlc_media_library.h:184
uint32_t i_sarNum
Definition vlc_media_library.h:191
uint32_t i_fpsDen
Definition vlc_media_library.h:194
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:173
vlc_ml_track_type_t i_type
Definition vlc_media_library.h:176
uint32_t i_fpsNum
Definition vlc_media_library.h:193
uint32_t i_sarDen
Definition vlc_media_library.h:192
uint32_t i_bitrate
Definition vlc_media_library.h:177
struct vlc_ml_media_track_t::@237::@241 s
uint32_t i_width
Definition vlc_media_library.h:190
char * psz_encoding
Definition vlc_media_library.h:199
char * psz_description
Definition vlc_media_library.h:175
Definition vlc_media_library.h:117
char * psz_imdb_id
Definition vlc_media_library.h:119
char * psz_summary
Definition vlc_media_library.h:118
Definition vlc_media_library.h:678
char * deinterlace
Definition vlc_media_library.h:687
char * current_audio_track
Definition vlc_media_library.h:683
char * current_video_track
Definition vlc_media_library.h:682
float zoom
Definition vlc_media_library.h:680
int current_title
Definition vlc_media_library.h:681
char * aspect_ratio
Definition vlc_media_library.h:685
char * crop
Definition vlc_media_library.h:686
float rate
Definition vlc_media_library.h:679
char * current_subtitle_track
Definition vlc_media_library.h:684
char * video_filter
Definition vlc_media_library.h:688
Definition vlc_media_library.h:379
size_t i_nb_items
Definition vlc_media_library.h:380
vlc_ml_playlist_t p_items[]
Definition vlc_media_library.h:381
Definition vlc_media_library.h:275
unsigned int i_nb_media
Definition vlc_media_library.h:284
int64_t i_duration
Definition vlc_media_library.h:296
char * psz_artwork_mrl
Definition vlc_media_library.h:282
char * psz_mrl
Definition vlc_media_library.h:280
uint32_t i_nb_unknown
Definition vlc_media_library.h:287
bool b_is_favorite
Definition vlc_media_library.h:300
uint32_t i_nb_present_audio
Definition vlc_media_library.h:291
unsigned int i_nb_present_media
Definition vlc_media_library.h:289
char * psz_name
Definition vlc_media_library.h:278
uint32_t i_nb_present_video
Definition vlc_media_library.h:290
uint32_t i_nb_duration_unknown
Definition vlc_media_library.h:297
bool b_is_read_only
Definition vlc_media_library.h:299
uint32_t i_nb_audio
Definition vlc_media_library.h:286
uint32_t i_nb_present_unknown
Definition vlc_media_library.h:292
int64_t i_id
Definition vlc_media_library.h:276
uint32_t i_creation_date
Definition vlc_media_library.h:294
uint32_t i_nb_video
Definition vlc_media_library.h:285
Generic parameter set for medialibrary queries.
Definition vlc_media_library.h:452
bool b_favorite_only
Definition vlc_media_library.h:458
const char * psz_pattern
Definition vlc_media_library.h:453
bool b_desc
Definition vlc_media_library.h:457
vlc_ml_sorting_criteria_t i_sort
Definition vlc_media_library.h:456
uint32_t i_offset
Definition vlc_media_library.h:455
bool b_public_only
Definition vlc_media_library.h:459
uint32_t i_nbResults
Definition vlc_media_library.h:454
Definition vlc_media_library.h:123
char * psz_summary
Definition vlc_media_library.h:124
uint32_t i_season_number
Definition vlc_media_library.h:127
uint32_t i_episode_nb
Definition vlc_media_library.h:126
char * psz_tvdb_id
Definition vlc_media_library.h:125
Definition vlc_media_library.h:361
vlc_ml_show_t p_items[]
Definition vlc_media_library.h:363
size_t i_nb_items
Definition vlc_media_library.h:362
Definition vlc_media_library.h:131
unsigned int i_release_year
Definition vlc_media_library.h:137
char * psz_tvdb_id
Definition vlc_media_library.h:136
uint32_t i_nb_episodes
Definition vlc_media_library.h:138
char * psz_artwork_mrl
Definition vlc_media_library.h:135
uint32_t i_nb_seasons
Definition vlc_media_library.h:139
char * psz_name
Definition vlc_media_library.h:133
int64_t i_id
Definition vlc_media_library.h:132
char * psz_summary
Definition vlc_media_library.h:134
Definition vlc_media_library.h:107
char * psz_mrl
Definition vlc_media_library.h:108
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:113
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:1144
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:325
void vlc_ml_show_list_release(vlc_ml_show_list_t *p_list)
Definition medialibrary.c:343
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:1698
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:1403
static int vlc_ml_clear_history(vlc_medialibrary_t *p_ml, vlc_ml_history_type_t type)
Definition vlc_media_library.h:1059
static int vlc_ml_playlist_rename(vlc_medialibrary_t *p_ml, int64_t i_playlist_id, const char *name)
Definition vlc_media_library.h:1261
void * vlc_ml_get(vlc_medialibrary_t *p_ml, int i_query,...)
Definition medialibrary.c:422
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:1108
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:1893
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:1856
static vlc_ml_media_t * vlc_ml_get_media(vlc_medialibrary_t *p_ml, int64_t i_media_id)
Definition vlc_media_library.h:1268
static vlc_ml_media_t * vlc_ml_new_external_media(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1064
static int vlc_ml_playlist_set_favorite(vlc_medialibrary_t *p_ml, int64_t i_playlist_id, bool b_favorite)
Definition vlc_media_library.h:2010
vlc_ml_thumbnail_size_t
Definition vlc_media_library.h:74
@ VLC_ML_THUMBNAIL_SIZE_COUNT
Definition vlc_media_library.h:78
@ VLC_ML_THUMBNAIL_BANNER
Definition vlc_media_library.h:76
@ VLC_ML_THUMBNAIL_SMALL
Definition vlc_media_library.h:75
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:1493
void vlc_ml_album_list_release(vlc_ml_album_list_t *p_list)
Definition medialibrary.c:334
void vlc_ml_playlist_release(vlc_ml_playlist_t *p_playlist)
Definition medialibrary.c:264
static size_t vlc_ml_count_shows(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1635
vlc_ml_get_queries
Definition vlc_media_library.h:463
@ VLC_ML_GET_SHOW
arg1: Show ID; ret: vlc_ml_show_t*
Definition vlc_media_library.h:471
@ VLC_ML_GET_MEDIA_BY_MRL
arg1: Media MRL; ret: vlc_ml_media_t*
Definition vlc_media_library.h:465
@ VLC_ML_GET_GENRE
arg1: Genre ID; ret: vlc_ml_genre_t*
Definition vlc_media_library.h:470
@ VLC_ML_GET_INPUT_ITEM_BY_MRL
arg1: Media MRL; ret: input_item_t*
Definition vlc_media_library.h:467
@ VLC_ML_GET_GROUP
arg1: Group ID; ret: vlc_ml_group_t*
Definition vlc_media_library.h:473
@ VLC_ML_GET_PLAYLIST
arg1: Playlist ID; ret: vlc_ml_playlist_t*
Definition vlc_media_library.h:472
@ VLC_ML_GET_FOLDER
arg1: folder ID; ret: vlc_ml_folder_t*
Definition vlc_media_library.h:474
@ VLC_ML_GET_MEDIA
arg1: Media ID; ret: vlc_ml_media_t*
Definition vlc_media_library.h:464
@ VLC_ML_GET_ALBUM
arg1: Album ID; ret: vlc_ml_album_t*
Definition vlc_media_library.h:468
@ VLC_ML_GET_INPUT_ITEM
arg1: Media ID; ret: input_item_t*
Definition vlc_media_library.h:466
@ VLC_ML_GET_ARTIST
arg1: Artist ID; ret: vlc_ml_artist_t*
Definition vlc_media_library.h:469
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:1671
static vlc_ml_playlist_t * vlc_ml_playlist_create(vlc_medialibrary_t *p_ml, const char *name)
Definition vlc_media_library.h:1206
static int vlc_ml_remove_stream(vlc_medialibrary_t *p_ml, int64_t i_media_id)
Definition vlc_media_library.h:1080
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:1976
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:1707
vlc_ml_control
Definition vlc_media_library.h:581
@ VLC_ML_MEDIA_SET_ALL_MEDIA_PLAYBACK_STATES
arg1: media id; arg2: const vlc_ml_playback_states_all*
Definition vlc_media_library.h:616
@ VLC_ML_RESUME_BACKGROUND
no args; can't fail
Definition vlc_media_library.h:600
@ VLC_ML_MEDIA_UPDATE_BOOKMARK
arg1: media id; arg2: int64_t; arg3: const char*; arg4: const char*
Definition vlc_media_library.h:627
@ VLC_ML_MEDIA_REMOVE_BOOKMARK
arg1: media id; arg2: int64_t
Definition vlc_media_library.h:625
@ VLC_ML_PLAYLIST_INSERT
arg1: playlist id; arg2: pointer on media ids; arg3: media ids count; arg4: position; can fail
Definition vlc_media_library.h:633
@ VLC_ML_MEDIA_ADD_BOOKMARK
arg1: media id; arg2: int64_t
Definition vlc_media_library.h:624
@ VLC_ML_NEW_EXTERNAL_MEDIA
arg1: const char*; arg2(out): vlc_ml_media_t**
Definition vlc_media_library.h:606
@ VLC_ML_FOLDER_SET_FAVORITE
arg1: mrl (const char*); arg2: bool; res: can fail
Definition vlc_media_library.h:639
@ VLC_ML_RELOAD_FOLDER
Reload a specific folder, or all.
Definition vlc_media_library.h:593
@ VLC_ML_MEDIA_SET_MEDIA_PLAYBACK_STATE
arg1: media id; arg2: vlc_ml_playback_state; arg3: const char*;
Definition vlc_media_library.h:614
@ VLC_ML_ADD_FOLDER
arg1: mrl (const char*) res: can't fail
Definition vlc_media_library.h:583
@ VLC_ML_MEDIA_SET_TYPE
arg1: media id; arg2: vlc_ml_media_type_t
Definition vlc_media_library.h:621
@ VLC_ML_PLAYLIST_APPEND
arg1: playlist id; arg2: pointer on media ids; arg3: media ids count; can fail
Definition vlc_media_library.h:632
@ 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:619
@ VLC_ML_ARTIST_SET_FAVORITE
arg1: artist id; arg2: bool; can fail
Definition vlc_media_library.h:640
@ VLC_ML_REMOVE_FOLDER
arg1: mrl (const char*) res: can't fail
Definition vlc_media_library.h:584
@ VLC_ML_SET_FOLDER_PRIVATE
arg1: mrl (const char *); res: can't fail
Definition vlc_media_library.h:596
@ VLC_ML_GENRE_SET_FAVORITE
arg1: genre id; arg2: bool; can fail
Definition vlc_media_library.h:642
@ VLC_ML_MEDIA_GET_ALL_MEDIA_PLAYBACK_STATES
arg1: media id; arg2(out): vlc_ml_playback_states_all*
Definition vlc_media_library.h:615
@ VLC_ML_BAN_FOLDER
arg1: mrl (const char*) res: can't fail
Definition vlc_media_library.h:585
@ VLC_ML_NEW_STREAM
arg1: const char*; arg2(out): vlc_ml_media_t**
Definition vlc_media_library.h:607
@ VLC_ML_MEDIA_GET_MEDIA_PLAYBACK_STATE
arg1: media id; arg2: vlc_ml_playback_state; arg3: char**;
Definition vlc_media_library.h:613
@ VLC_ML_MEDIA_SET_FAVORITE
arg1: media id; arg2: bool
Definition vlc_media_library.h:623
@ VLC_ML_PLAYLIST_MOVE
arg1: playlist id; arg2: from; arg3: to; arg4: count; can fail
Definition vlc_media_library.h:634
@ VLC_ML_PLAYLIST_CREATE
arg1: const char*; arg2(out): vlc_ml_playlist_t**; can fail
Definition vlc_media_library.h:630
@ VLC_ML_SET_FOLDER_PUBLIC
arg1: mrl (const char *); res: can't fail
Definition vlc_media_library.h:595
@ VLC_ML_UNBAN_FOLDER
arg1: mrl (const char*) res: can't fail
Definition vlc_media_library.h:586
@ VLC_ML_PAUSE_BACKGROUND
no args; can't fail
Definition vlc_media_library.h:599
@ VLC_ML_ALBUM_SET_FAVORITE
arg1: album id; arg2: bool; can fail
Definition vlc_media_library.h:641
@ VLC_ML_PLAYLIST_DELETE
arg1: playlist id; can fail
Definition vlc_media_library.h:631
@ VLC_ML_MEDIA_SET_GENRE_THUMBNAIL
arg1: media id; arg2: const char*; arg3: vlc_ml_thumbnail_size_t
Definition vlc_media_library.h:618
@ VLC_ML_PLAYLIST_SET_FAVORITE
arg1: playlist id; arg2: bool; can fail
Definition vlc_media_library.h:643
@ VLC_ML_CLEAR_HISTORY
arg1: vlc_ml_history_type_t; can't fail
Definition vlc_media_library.h:603
@ VLC_ML_MEDIA_SET_PLAYED
arg1: media id; arg2: bool
Definition vlc_media_library.h:622
@ VLC_ML_MEDIA_SET_THUMBNAIL
arg1: media id; arg2: const char*; arg3: vlc_ml_thumbnail_size_t
Definition vlc_media_library.h:617
@ VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS
arg1: media id
Definition vlc_media_library.h:626
@ VLC_ML_MEDIA_ADD_EXTERNAL_MRL
arg1: media id; arg2: const char*; arg3: type(vlc_ml_file_type_t)
Definition vlc_media_library.h:620
@ VLC_ML_REMOVE_STREAM
Definition vlc_media_library.h:609
@ VLC_ML_PLAYLIST_REMOVE
arg1: playlist id; arg2: position; arg3: count; can fail
Definition vlc_media_library.h:635
@ VLC_ML_MEDIA_UPDATE_PROGRESS
arg1: media id; arg2: playback position; can fail
Definition vlc_media_library.h:612
@ VLC_ML_IS_INDEXED
arg1: mrl (const char*) arg2 (out): bool*; res: can fail
Definition vlc_media_library.h:587
@ VLC_ML_PLAYLIST_RENAME
arg1: playlist id; arg2: const char*; can fail
Definition vlc_media_library.h:636
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:315
static int vlc_ml_artist_set_favorite(vlc_medialibrary_t *p_ml, int64_t i_artist_id, bool b_favorite)
Definition vlc_media_library.h:1995
void vlc_ml_label_list_release(vlc_ml_label_list_t *p_list)
Definition medialibrary.c:297
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_SUBTITLE
Definition vlc_media_library.h:70
@ 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:1039
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:1279
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:1838
static int vlc_ml_album_set_favorite(vlc_medialibrary_t *p_ml, int64_t i_album_id, bool b_favorite)
Definition vlc_media_library.h:2000
static int vlc_ml_reload_folder(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1034
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:1734
void vlc_ml_folder_release(vlc_ml_folder_t *p_folder)
Definition medialibrary.c:287
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:1101
vlc_ml_thumbnail_status_t
Definition vlc_media_library.h:82
@ VLC_ML_THUMBNAIL_STATUS_CRASH
Definition vlc_media_library.h:87
@ VLC_ML_THUMBNAIL_STATUS_MISSING
Definition vlc_media_library.h:83
@ VLC_ML_THUMBNAIL_STATUS_FAILURE
Definition vlc_media_library.h:85
@ VLC_ML_THUMBNAIL_STATUS_PERSISTENT_FAILURE
Definition vlc_media_library.h:86
@ VLC_ML_THUMBNAIL_STATUS_AVAILABLE
Definition vlc_media_library.h:84
static vlc_ml_album_t * vlc_ml_get_album(vlc_medialibrary_t *p_ml, int64_t i_album_id)
Definition vlc_media_library.h:1290
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:1325
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:1421
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:1725
static size_t vlc_ml_count_genres(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1592
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:1608
void(* vlc_ml_callback_t)(void *p_data, const vlc_ml_event_t *p_event)
Definition vlc_media_library.h:892
static int vlc_ml_folder_set_favorite(vlc_medialibrary_t *p_ml, const char *psz_mrl, bool b_favorite)
Definition vlc_media_library.h:1990
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:1502
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:1689
static int vlc_ml_remove_folder(vlc_medialibrary_t *p_ml, const char *psz_folder)
Definition vlc_media_library.h:1013
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:1962
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:1829
#define vlc_ml_instance_get(x)
Definition vlc_media_library.h:940
vlc_ml_event_type
Definition vlc_media_library.h:692
@ VLC_ML_EVENT_ARTIST_UPDATED
Definition vlc_media_library.h:706
@ VLC_ML_EVENT_BOOKMARKS_ADDED
Definition vlc_media_library.h:720
@ VLC_ML_EVENT_RESCAN_STARTED
Sent when an application requested rescan starts being processed.
Definition vlc_media_library.h:816
@ VLC_ML_EVENT_ALBUM_ADDED
Definition vlc_media_library.h:708
@ VLC_ML_EVENT_DISCOVERY_PROGRESS
Sent when a discovery or reload operation starts analyzing a new folder.
Definition vlc_media_library.h:742
@ VLC_ML_EVENT_BACKGROUND_IDLE_CHANGED
Sent when a discoverer or parser threads changes its idle state.
Definition vlc_media_library.h:790
@ VLC_ML_EVENT_BOOKMARKS_DELETED
Definition vlc_media_library.h:722
@ VLC_ML_EVENT_FOLDER_DELETED
Definition vlc_media_library.h:725
@ VLC_ML_EVENT_MEDIA_UPDATED
Definition vlc_media_library.h:703
@ VLC_ML_EVENT_ENTRY_POINT_ADDED
Sent when a new entry point gets added to the database.
Definition vlc_media_library.h:762
@ VLC_ML_EVENT_PLAYLIST_ADDED
Definition vlc_media_library.h:714
@ VLC_ML_EVENT_DISCOVERY_STARTED
A discovery started.
Definition vlc_media_library.h:736
@ VLC_ML_EVENT_MEDIA_THUMBNAIL_GENERATED
Sent after a media thumbnail was generated, or if it's generation failed.
Definition vlc_media_library.h:805
@ VLC_ML_EVENT_GENRE_UPDATED
Definition vlc_media_library.h:718
@ VLC_ML_EVENT_ENTRY_POINT_REMOVED
Sent when an entry point removal request has been processed.
Definition vlc_media_library.h:769
@ VLC_ML_EVENT_HISTORY_CHANGED
Sent after the history gets changed.
Definition vlc_media_library.h:812
@ VLC_ML_EVENT_ENTRY_POINT_BANNED
Sent when an entry point ban request has been processed.
Definition vlc_media_library.h:776
@ VLC_ML_EVENT_GROUP_DELETED
Definition vlc_media_library.h:713
@ VLC_ML_EVENT_GROUP_ADDED
Definition vlc_media_library.h:711
@ VLC_ML_EVENT_GENRE_DELETED
Definition vlc_media_library.h:719
@ VLC_ML_EVENT_GENRE_ADDED
Definition vlc_media_library.h:717
@ VLC_ML_EVENT_ENTRY_POINT_UNBANNED
Sent when an entry point unban request has been processed.
Definition vlc_media_library.h:783
@ VLC_ML_EVENT_ALBUM_DELETED
Definition vlc_media_library.h:710
@ VLC_ML_EVENT_MEDIA_ADDED
Entity modification callbacks.
Definition vlc_media_library.h:702
@ VLC_ML_EVENT_DISCOVERY_FAILED
This event is sent when a discovery failed.
Definition vlc_media_library.h:752
@ VLC_ML_EVENT_ARTIST_DELETED
Definition vlc_media_library.h:707
@ VLC_ML_EVENT_BOOKMARKS_UPDATED
Definition vlc_media_library.h:721
@ VLC_ML_EVENT_PLAYLIST_DELETED
Definition vlc_media_library.h:716
@ VLC_ML_EVENT_FOLDER_ADDED
Definition vlc_media_library.h:723
@ VLC_ML_EVENT_PARSING_PROGRESS_UPDATED
Sent when the parsing progress percentage gets updated.
Definition vlc_media_library.h:798
@ VLC_ML_EVENT_ALBUM_UPDATED
Definition vlc_media_library.h:709
@ VLC_ML_EVENT_ARTIST_ADDED
Definition vlc_media_library.h:705
@ VLC_ML_EVENT_FOLDER_UPDATED
Definition vlc_media_library.h:724
@ VLC_ML_EVENT_PLAYLIST_UPDATED
Definition vlc_media_library.h:715
@ VLC_ML_EVENT_DISCOVERY_COMPLETED
Sent when all queued discovery operations are done being processed.
Definition vlc_media_library.h:746
@ VLC_ML_EVENT_GROUP_UPDATED
Definition vlc_media_library.h:712
@ VLC_ML_EVENT_MEDIA_DELETED
Definition vlc_media_library.h:704
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:1373
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:1662
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:1847
static vlc_ml_query_params_t vlc_ml_query_params_create(void)
Definition vlc_media_library.h:997
static int vlc_ml_media_update_progress(vlc_medialibrary_t *p_ml, int64_t i_media_id, double progress)
Definition vlc_media_library.h:1085
static vlc_ml_artist_t * vlc_ml_get_artist(vlc_medialibrary_t *p_ml, int64_t i_artist_id)
Definition vlc_media_library.h:1295
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:1905
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:1448
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:1761
vlc_ml_history_type_t
Definition vlc_media_library.h:91
@ VLC_ML_HISTORY_TYPE_NETWORK
Definition vlc_media_library.h:94
@ VLC_ML_HISTORY_TYPE_LOCAL
Definition vlc_media_library.h:93
@ VLC_ML_HISTORY_TYPE_GLOBAL
Definition vlc_media_library.h:92
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:1150
static int vlc_ml_set_folder_private(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1044
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:1809
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:1358
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:1138
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:1716
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:1617
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:1096
static int vlc_ml_ban_folder(vlc_medialibrary_t *p_ml, const char *psz_folder)
Definition vlc_media_library.h:1018
int vlc_ml_list(vlc_medialibrary_t *p_ml, int i_query, const vlc_ml_query_params_t *p_params,...)
Definition medialibrary.c:441
void vlc_ml_playlist_list_release(vlc_ml_playlist_list_t *p_list)
Definition medialibrary.c:370
vlc_ml_list_queries
Definition vlc_media_library.h:478
@ VLC_ML_LIST_VIDEOS
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:483
@ VLC_ML_COUNT_FOLDERS_BY_TYPE
arg1 vlc_ml_media_type_t: the media type.
Definition vlc_media_library.h:510
@ VLC_ML_LIST_ARTIST_ALBUMS
arg1: The artist id.
Definition vlc_media_library.h:519
@ VLC_ML_LIST_SHOW_EPISODES
arg1: show id; arg2(out): vlc_ml_media_list_t**
Definition vlc_media_library.h:533
@ VLC_ML_LIST_ALBUMS
arg1 (out): vlc_ml_album_list_t**
Definition vlc_media_library.h:487
@ VLC_ML_LIST_ENTRY_POINTS
arg1 bool: list_banned; arg2 (out): vlc_ml_folder_list_t**
Definition vlc_media_library.h:505
@ VLC_ML_LIST_GROUPS
arg1 (out): vlc_ml_group_list_t**
Definition vlc_media_library.h:495
@ VLC_ML_LIST_FOLDER_MEDIA
arg1: folder id; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:552
@ VLC_ML_COUNT_PLAYLIST_MEDIA
arg1: playlist id; arg2 (out): size_t*
Definition vlc_media_library.h:547
@ VLC_ML_LIST_GENRE_ARTISTS
arg1: genre id; arg2 (out): vlc_ml_artist_list_t**
Definition vlc_media_library.h:525
@ VLC_ML_COUNT_GENRES
arg1 (out): size_t*
Definition vlc_media_library.h:490
@ VLC_ML_COUNT_SHOWS
arg1 (out): size_t*
Definition vlc_media_library.h:494
@ VLC_ML_LIST_ALBUMS_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): ml_album_list_t**
Definition vlc_media_library.h:564
@ VLC_ML_LIST_MEDIA_BOOKMARKS
arg1: media id; arg2 (out): vlc_ml_bookmark_list_t**
Definition vlc_media_library.h:539
@ VLC_ML_LIST_PLAYLISTS
arg1 (out): vlc_ml_playlist_list_t**
Definition vlc_media_library.h:497
@ VLC_ML_LIST_ARTISTS_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): ml_artist_list_t**
Definition vlc_media_library.h:562
@ VLC_ML_LIST_AUDIOS
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:485
@ VLC_ML_COUNT_SHOW_EPISODES
arg1: show id; arg2(out): size_t*
Definition vlc_media_library.h:534
@ VLC_ML_LIST_SUBFOLDERS
arg1: parent id; arg2 (out): vlc_ml_folder_list_t**
Definition vlc_media_library.h:550
@ VLC_ML_LIST_ARTISTS
arg1 bool: includeAll; arg2 (out): vlc_ml_genre_list_t**
Definition vlc_media_library.h:491
@ VLC_ML_COUNT_ARTISTS_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:563
@ VLC_ML_COUNT_ARTIST_ALBUMS
arg1: The artist id.
Definition vlc_media_library.h:520
@ VLC_ML_LIST_AUDIO_HISTORY
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:503
@ VLC_ML_COUNT_MEDIA_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:557
@ VLC_ML_COUNT_GENRE_TRACKS
arg1: genre id; arg2 (out): size_t*
Definition vlc_media_library.h:528
@ VLC_ML_COUNT_ARTIST_TRACKS
arg1: The artist id.
Definition vlc_media_library.h:522
@ VLC_ML_LIST_GENRE_TRACKS
arg1: genre id; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:527
@ VLC_ML_COUNT_ALBUM_ARTISTS
arg1: The album id.
Definition vlc_media_library.h:516
@ VLC_ML_LIST_MEDIA_LABELS
arg1: media id; arg2 (out): vlc_ml_label_list_t**
Definition vlc_media_library.h:537
@ VLC_ML_COUNT_AUDIOS
arg1 (out): size_t*
Definition vlc_media_library.h:486
@ VLC_ML_COUNT_SUBFOLDERS
arg1: parent id; arg2 (out): size_t*
Definition vlc_media_library.h:551
@ VLC_ML_LIST_HISTORY
arg1 vlc_ml_history_type_t; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:499
@ VLC_ML_COUNT_ARTISTS
arg1 bool: includeAll; arg2 (out): size_t*
Definition vlc_media_library.h:492
@ VLC_ML_LIST_GENRE_ALBUMS
arg1: genre id; arg2 (out): vlc_ml_album_list_t**
Definition vlc_media_library.h:529
@ VLC_ML_COUNT_ALBUMS_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:565
@ VLC_ML_COUNT_GENRE_ALBUMS
arg1: genre id; arg2 (out): size_t*
Definition vlc_media_library.h:530
@ VLC_ML_COUNT_MEDIA_LABELS
arg1: media id; arg2 (out): size_t*
Definition vlc_media_library.h:538
@ VLC_ML_LIST_GROUP_MEDIA
arg1: playlist id; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:542
@ VLC_ML_COUNT_VIDEO_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:559
@ VLC_ML_LIST_VIDEO_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:558
@ VLC_ML_LIST_PLAYLIST_MEDIA
arg1: playlist id; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:546
@ VLC_ML_LIST_FOLDERS
arg1 (out): vlc_ml_folder_list_t**
Definition vlc_media_library.h:507
@ VLC_ML_COUNT_GROUP_MEDIA
arg1: playlist id; arg2 (out): size_t*
Definition vlc_media_library.h:543
@ VLC_ML_COUNT_VIDEOS
arg1 (out): size_t*
Definition vlc_media_library.h:484
@ VLC_ML_COUNT_MEDIA
arg1 (out): size_t*
Definition vlc_media_library.h:482
@ VLC_ML_LIST_SHOWS
arg1 (out): vlc_ml_show_list_t**
Definition vlc_media_library.h:493
@ VLC_ML_COUNT_FOLDER_MEDIA
arg1: folder id; arg2 (out): size_t*
Definition vlc_media_library.h:553
@ VLC_ML_COUNT_AUDIO_HISTORY
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:504
@ VLC_ML_COUNT_FOLDERS
arg1 (out): size_t*
Definition vlc_media_library.h:508
@ VLC_ML_LIST_AUDIO_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:560
@ VLC_ML_COUNT_ENTRY_POINTS
arg1 bool: list_banned; arg2 (out): size_t*
Definition vlc_media_library.h:506
@ VLC_ML_LIST_GENRES
arg1 (out): vlc_ml_genre_list_t**
Definition vlc_media_library.h:489
@ VLC_ML_LIST_ALBUM_TRACKS
arg1: The album id.
Definition vlc_media_library.h:513
@ VLC_ML_COUNT_ALBUMS
arg1 (out): size_t*
Definition vlc_media_library.h:488
@ VLC_ML_LIST_FOLDERS_BY_TYPE
arg1 vlc_ml_media_type_t: the media type.
Definition vlc_media_library.h:509
@ VLC_ML_COUNT_AUDIO_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:561
@ VLC_ML_COUNT_VIDEO_HISTORY
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:502
@ VLC_ML_LIST_ARTIST_TRACKS
arg1: The artist id.
Definition vlc_media_library.h:521
@ VLC_ML_COUNT_ALBUM_TRACKS
arg1: The album id.
Definition vlc_media_library.h:514
@ VLC_ML_LIST_MEDIA
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:481
@ VLC_ML_COUNT_HISTORY
arg1 vlc_ml_history_type_t; arg2 (out): size_t*
Definition vlc_media_library.h:500
@ VLC_ML_LIST_VIDEO_HISTORY
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:501
@ VLC_ML_COUNT_PLAYLISTS
arg1 (out): size_t*
Definition vlc_media_library.h:498
@ VLC_ML_COUNT_GROUPS
arg1 (out): size_t*
Definition vlc_media_library.h:496
@ VLC_ML_LIST_ALBUM_ARTISTS
arg1: The album id.
Definition vlc_media_library.h:515
@ VLC_ML_COUNT_GENRE_ARTISTS
arg1: genre id; arg2 (out): size_t*
Definition vlc_media_library.h:526
@ VLC_ML_LIST_MEDIA_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): ml_media_list_t**
Definition vlc_media_library.h:556
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:1874
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:1189
#define vlc_ml_release(OBJ)
Definition vlc_media_library.h:2020
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:1388
static vlc_ml_genre_t * vlc_ml_get_genre(vlc_medialibrary_t *p_ml, int64_t i_genre_id)
Definition vlc_media_library.h:1300
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:1770
static int vlc_ml_playlist_remove(vlc_medialibrary_t *p_ml, int64_t i_playlist_id, uint32_t i_position, uint32_t i_count)
Definition vlc_media_library.h:1253
vlc_ml_playback_state
User playback settings.
Definition vlc_media_library.h:657
@ VLC_ML_PLAYBACK_STATE_PROGRAM
Definition vlc_media_library.h:662
@ VLC_ML_PLAYBACK_STATE_TITLE
Definition vlc_media_library.h:660
@ VLC_ML_PLAYBACK_STATE_DEINTERLACE
Definition vlc_media_library.h:667
@ VLC_ML_PLAYBACK_STATE_SPEED
Definition vlc_media_library.h:659
@ VLC_ML_PLAYBACK_STATE_VIDEO_FILTER
Definition vlc_media_library.h:668
@ VLC_ML_PLAYBACK_STATE_AUDIO_DELAY
Definition vlc_media_library.h:671
@ VLC_ML_PLAYBACK_STATE_SUBTITLE_DELAY
Definition vlc_media_library.h:673
@ VLC_ML_PLAYBACK_STATE_RATING
Definition vlc_media_library.h:658
@ VLC_ML_PLAYBACK_STATE_APP_SPECIFIC
Definition vlc_media_library.h:674
@ VLC_ML_PLAYBACK_STATE_ASPECT_RATIO
Definition vlc_media_library.h:664
@ VLC_ML_PLAYBACK_STATE_SUBTITLE_TRACK
Definition vlc_media_library.h:672
@ VLC_ML_PLAYBACK_STATE_GAIN
Definition vlc_media_library.h:670
@ VLC_ML_PLAYBACK_STATE_AUDIO_TRACK
Definition vlc_media_library.h:669
@ VLC_ML_PLAYBACK_STATE_CROP
Definition vlc_media_library.h:666
@ VLC_ML_PLAYBACK_STATE_CHAPTER
Definition vlc_media_library.h:661
@ VLC_ML_PLAYBACK_STATE_VIDEO_TRACK
Definition vlc_media_library.h:663
@ VLC_ML_PLAYBACK_STATE_ZOOM
Definition vlc_media_library.h:665
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:1884
static int vlc_ml_resume_background(vlc_medialibrary_t *p_ml)
Definition vlc_media_library.h:1054
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:1865
void vlc_ml_album_release(vlc_ml_album_t *p_album)
Definition medialibrary.c:222
static vlc_ml_show_t * vlc_ml_get_show(vlc_medialibrary_t *p_ml, int64_t i_show_id)
Definition vlc_media_library.h:1305
static int vlc_ml_playlist_append(vlc_medialibrary_t *p_ml, int64_t i_playlist_id, const int64_t *i_media_ids, size_t i_media_id_count)
Definition vlc_media_library.h:1227
void vlc_ml_folder_list_release(vlc_ml_folder_list_t *p_list)
Definition medialibrary.c:379
static int vlc_ml_playlist_insert(vlc_medialibrary_t *p_ml, int64_t i_playlist_id, const int64_t *i_media_ids, size_t i_media_id_count, uint32_t i_position)
Definition vlc_media_library.h:1235
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:1163
void vlc_ml_artist_release(vlc_ml_artist_t *p_artist)
Definition medialibrary.c:206
static vlc_ml_folder_t * vlc_ml_get_folder(vlc_medialibrary_t *p_ml, int64_t i_folder_id)
Definition vlc_media_library.h:1315
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:1779
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:1743
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:1156
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:1439
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:1583
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:1932
void vlc_ml_bookmark_list_release(vlc_ml_bookmark_list_t *p_list)
Definition medialibrary.c:413
static vlc_ml_group_t * vlc_ml_get_group(vlc_medialibrary_t *p_ml, int64_t i_group_id)
Definition vlc_media_library.h:1310
static vlc_ml_media_list_t * vlc_ml_list_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1511
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:1182
void vlc_ml_genre_release(vlc_ml_genre_t *p_genre)
Definition medialibrary.c:230
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:1644
void vlc_ml_genre_list_release(vlc_ml_genre_list_t *p_list)
Definition medialibrary.c:352
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:1818
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:1115
static vlc_ml_media_t * vlc_ml_new_stream(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1072
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:1343
static int vlc_ml_genre_set_favorite(vlc_medialibrary_t *p_ml, int64_t i_genre_id, bool b_favorite)
Definition vlc_media_library.h:2005
static int vlc_ml_media_remove_all_bookmarks(vlc_medialibrary_t *p_ml, int64_t i_media_id)
Definition vlc_media_library.h:1199
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:1946
static int vlc_ml_is_indexed(vlc_medialibrary_t *p_ml, const char *psz_mrl, bool *p_res)
Definition vlc_media_library.h:1028
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:1565
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:1466
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:1529
vlc_ml_playlist_type_t
Definition vlc_media_library.h:98
@ VLC_ML_PLAYLIST_TYPE_VIDEO_ONLY
Playlist containing video tracks only.
Definition vlc_media_library.h:103
@ VLC_ML_PLAYLIST_TYPE_ALL
Playlist containing any kind of tracks.
Definition vlc_media_library.h:99
@ VLC_ML_PLAYLIST_TYPE_AUDIO_ONLY
Playlist containing audio tracks only.
Definition vlc_media_library.h:102
@ VLC_ML_PLAYLIST_TYPE_AUDIO
Playlist containing at least one audio track.
Definition vlc_media_library.h:100
@ VLC_ML_PLAYLIST_TYPE_VIDEO
Playlist containing at least one video track.
Definition vlc_media_library.h:101
static vlc_ml_playlist_t * vlc_ml_get_playlist(vlc_medialibrary_t *p_ml, int64_t i_playlist_id)
Definition vlc_media_library.h:1320
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:1653
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:1457
static int vlc_ml_playlist_move(vlc_medialibrary_t *p_ml, int64_t i_playlist_id, uint32_t i_from, uint32_t i_to, uint32_t i_count)
Definition vlc_media_library.h:1244
void vlc_ml_file_list_release(vlc_ml_file_list_t *p_list)
Definition medialibrary.c:306
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:1791
void vlc_ml_bookmark_release(vlc_ml_bookmark_t *p_bookmark)
Definition medialibrary.c:405
void vlc_ml_playback_states_all_release(vlc_ml_playback_states_all *prefs)
Definition medialibrary.c:388
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:1284
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:1091
static int vlc_ml_pause_background(vlc_medialibrary_t *p_ml)
Definition vlc_media_library.h:1049
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:1752
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:1128
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:1626
static int vlc_ml_playlist_delete(vlc_medialibrary_t *p_ml, int64_t i_playlist_id)
Definition vlc_media_library.h:1219
static int vlc_ml_unban_folder(vlc_medialibrary_t *p_ml, const char *psz_folder)
Definition vlc_media_library.h:1023
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:1175
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:1430
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:1484
static size_t vlc_ml_count_albums(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1574
vlc_ml_sorting_criteria_t
Definition vlc_media_library.h:426
@ VLC_ML_SORTING_LASTMODIFICATIONDATE
Definition vlc_media_library.h:436
@ VLC_ML_SORTING_INSERTIONDATE
Definition vlc_media_library.h:435
@ VLC_ML_SORTING_PLAYCOUNT
Definition vlc_media_library.h:440
@ VLC_ML_SORTING_ARTIST
Definition vlc_media_library.h:439
@ VLC_ML_SORTING_ALPHA
Definition vlc_media_library.h:433
@ VLC_ML_SORTING_TRACKNUMBER
Definition vlc_media_library.h:443
@ VLC_ML_SORTING_FILENAME
Definition vlc_media_library.h:442
@ VLC_ML_SORTING_ALBUM
Definition vlc_media_library.h:441
@ VLC_ML_SORTING_DEFAULT
Definition vlc_media_library.h:432
@ VLC_ML_SORTING_DURATION
Definition vlc_media_library.h:434
@ VLC_ML_SORTING_RELEASEDATE
Definition vlc_media_library.h:437
@ VLC_ML_SORTING_FILESIZE
Definition vlc_media_library.h:438
void vlc_ml_media_release(vlc_ml_media_t *p_media)
Definition medialibrary.c:273
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:1556
static int vlc_ml_add_folder(vlc_medialibrary_t *p_ml, const char *psz_folder)
Definition vlc_media_library.h:1008
static size_t vlc_ml_count_groups(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1800
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:1412
void vlc_ml_group_release(vlc_ml_group_t *p_group)
Definition medialibrary.c:247
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:1680
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:1121
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:1334
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:1547
static size_t vlc_ml_count_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1520
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:1475
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:1538
vlc_ml_parent_type
Definition vlc_media_library.h:569
@ VLC_ML_PARENT_ARTIST
Definition vlc_media_library.h:572
@ VLC_ML_PARENT_ALBUM
Definition vlc_media_library.h:571
@ VLC_ML_PARENT_GROUP
Definition vlc_media_library.h:575
@ VLC_ML_PARENT_FOLDER
Definition vlc_media_library.h:576
@ VLC_ML_PARENT_UNKNOWN
Definition vlc_media_library.h:570
@ VLC_ML_PARENT_PLAYLIST
Definition vlc_media_library.h:577
@ VLC_ML_PARENT_SHOW
Definition vlc_media_library.h:573
@ VLC_ML_PARENT_GENRE
Definition vlc_media_library.h:574
void vlc_ml_group_list_release(vlc_ml_group_list_t *p_list)
Definition medialibrary.c:361
static size_t vlc_ml_count_folders(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1918
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:1273
char psz_value[8]
Definition vout_intf.c:102