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_MOVIES, /**< arg1 (out): vlc_ml_media_list_t** */
485 VLC_ML_COUNT_MOVIES, /**< arg1 (out): size_t* */
486 VLC_ML_LIST_AUDIOS, /**< arg1 (out): vlc_ml_media_list_t** */
487 VLC_ML_COUNT_AUDIOS, /**< arg1 (out): size_t* */
488 VLC_ML_LIST_ALBUMS, /**< arg1 (out): vlc_ml_album_list_t** */
489 VLC_ML_COUNT_ALBUMS, /**< arg1 (out): size_t* */
490 VLC_ML_LIST_GENRES, /**< arg1 (out): vlc_ml_genre_list_t** */
491 VLC_ML_COUNT_GENRES, /**< arg1 (out): size_t* */
492 VLC_ML_LIST_ARTISTS, /**< arg1 bool: includeAll; arg2 (out): vlc_ml_genre_list_t** */
493 VLC_ML_COUNT_ARTISTS, /**< arg1 bool: includeAll; arg2 (out): size_t* */
494 VLC_ML_LIST_SHOWS, /**< arg1 (out): vlc_ml_show_list_t** */
495 VLC_ML_COUNT_SHOWS, /**< arg1 (out): size_t* */
496 VLC_ML_LIST_GROUPS, /**< arg1 (out): vlc_ml_group_list_t** */
497 VLC_ML_COUNT_GROUPS, /**< arg1 (out): size_t* */
498 VLC_ML_LIST_PLAYLISTS, /**< arg1 (out): vlc_ml_playlist_list_t** */
499 VLC_ML_COUNT_PLAYLISTS, /**< arg1 (out): size_t* */
500 VLC_ML_LIST_HISTORY, /**< arg1 vlc_ml_history_type_t; arg2 (out): vlc_ml_media_list_t** */
501 VLC_ML_COUNT_HISTORY, /**< arg1 vlc_ml_history_type_t; arg2 (out): size_t* */
502 VLC_ML_LIST_VIDEO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
503 VLC_ML_COUNT_VIDEO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
504 VLC_ML_LIST_AUDIO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
505 VLC_ML_COUNT_AUDIO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
506 VLC_ML_LIST_ENTRY_POINTS, /**< arg1 bool: list_banned; arg2 (out): vlc_ml_folder_list_t** */
507 VLC_ML_COUNT_ENTRY_POINTS, /**< arg1 bool: list_banned; arg2 (out): size_t* */
508 VLC_ML_LIST_FOLDERS, /**< arg1 (out): vlc_ml_folder_list_t** */
509 VLC_ML_COUNT_FOLDERS, /**< arg1 (out): size_t* */
510 VLC_ML_LIST_FOLDERS_BY_TYPE, /**< arg1 vlc_ml_media_type_t: the media type. arg2 (out): vlc_ml_media_list_t** */
511 VLC_ML_COUNT_FOLDERS_BY_TYPE, /**< arg1 vlc_ml_media_type_t: the media type. arg2 (out): vlc_ml_media_list_t** */
513 /* Album specific listings */
514 VLC_ML_LIST_ALBUM_TRACKS, /**< arg1: The album id. arg2 (out): vlc_ml_media_list_t** */
515 VLC_ML_COUNT_ALBUM_TRACKS, /**< arg1: The album id. arg2 (out): size_t* */
516 VLC_ML_LIST_ALBUM_ARTISTS, /**< arg1: The album id. arg2 (out): vlc_ml_album_list_t** */
517 VLC_ML_COUNT_ALBUM_ARTISTS, /**< arg1: The album id. arg2 (out): size_t* */
519 /* Artist specific listings */
520 VLC_ML_LIST_ARTIST_ALBUMS, /**< arg1: The artist id. arg2(out): vlc_ml_album_list_t** */
521 VLC_ML_COUNT_ARTIST_ALBUMS, /**< arg1: The artist id. arg2(out): size_t* */
522 VLC_ML_LIST_ARTIST_TRACKS, /**< arg1: The artist id. arg2(out): vlc_ml_media_list_t** */
523 VLC_ML_COUNT_ARTIST_TRACKS, /**< arg1: The artist id. arg2(out): size_t* */
525 /* Genre specific listings */
526 VLC_ML_LIST_GENRE_ARTISTS, /**< arg1: genre id; arg2 (out): vlc_ml_artist_list_t** */
527 VLC_ML_COUNT_GENRE_ARTISTS, /**< arg1: genre id; arg2 (out): size_t* */
528 VLC_ML_LIST_GENRE_TRACKS, /**< arg1: genre id; arg2 (out): vlc_ml_media_list_t** */
529 VLC_ML_COUNT_GENRE_TRACKS, /**< arg1: genre id; arg2 (out): size_t* */
530 VLC_ML_LIST_GENRE_ALBUMS, /**< arg1: genre id; arg2 (out): vlc_ml_album_list_t** */
531 VLC_ML_COUNT_GENRE_ALBUMS, /**< arg1: genre id; arg2 (out): size_t* */
533 /* Show specific listings */
534 VLC_ML_LIST_SHOW_EPISODES, /**< arg1: show id; arg2(out): vlc_ml_media_list_t** */
535 VLC_ML_COUNT_SHOW_EPISODES, /**< arg1: show id; arg2(out): size_t* */
537 /* Media specific listings */
538 VLC_ML_LIST_MEDIA_LABELS, /**< arg1: media id; arg2 (out): vlc_ml_label_list_t** */
539 VLC_ML_COUNT_MEDIA_LABELS, /**< arg1: media id; arg2 (out): size_t* */
540 VLC_ML_LIST_MEDIA_BOOKMARKS, /**< arg1: media id; arg2 (out): vlc_ml_bookmark_list_t** */
542 /* Groups specific listings */
543 VLC_ML_LIST_GROUP_MEDIA, /**< arg1: playlist id; arg2 (out): vlc_ml_media_list_t** */
544 VLC_ML_COUNT_GROUP_MEDIA, /**< arg1: playlist id; arg2 (out): size_t* */
546 /* Playlist specific listings */
547 VLC_ML_LIST_PLAYLIST_MEDIA, /**< arg1: playlist id; arg2 (out): vlc_ml_media_list_t** */
548 VLC_ML_COUNT_PLAYLIST_MEDIA, /**< arg1: playlist id; arg2 (out): size_t* */
550 /* Folder specific listings */
551 VLC_ML_LIST_SUBFOLDERS, /**< arg1: parent id; arg2 (out): vlc_ml_folder_list_t** */
552 VLC_ML_COUNT_SUBFOLDERS, /**< arg1: parent id; arg2 (out): size_t* */
553 VLC_ML_LIST_FOLDER_MEDIA, /**< arg1: folder id; arg2 (out): vlc_ml_media_list_t** */
554 VLC_ML_COUNT_FOLDER_MEDIA, /**< arg1: folder id; arg2 (out): size_t* */
556 /* Favorites listings */
557 VLC_ML_LIST_FAVORITE_MEDIA, /**< arg1 (out): vlc_ml_media_list_t** */
558 VLC_ML_COUNT_FAVORITE_MEDIA, /**< arg1 (out): size_t* */
559 VLC_ML_LIST_FAVORITE_VIDEOS, /**< arg1 (out): vlc_ml_media_list_t** */
560 VLC_ML_COUNT_FAVORITE_VIDEOS, /**< arg1 (out): size_t* */
561 VLC_ML_LIST_FAVORITE_AUDIOS, /**< arg1 (out): vlc_ml_media_list_t** */
562 VLC_ML_COUNT_FAVORITE_AUDIOS, /**< arg1 (out): size_t* */
563 VLC_ML_LIST_FAVORITE_ALBUMS, /**< arg1 (out): vlc_ml_album_list_t** */
564 VLC_ML_COUNT_FAVORITE_ALBUMS, /**< arg1 (out): size_t* */
565 VLC_ML_LIST_FAVORITE_ARTISTS, /**< arg1 (out): vlc_ml_artist_list_t** */
566 VLC_ML_COUNT_FAVORITE_ARTISTS,/**< arg1 (out): size_t* */
567 VLC_ML_LIST_FAVORITE_GENRES, /**< arg1 (out): vlc_ml_genre_list_t** */
568 VLC_ML_COUNT_FAVORITE_GENRES, /**< arg1 (out): size_t* */
569 VLC_ML_LIST_FAVORITE_PLAYLISTS,/**< arg1 (out): vlc_ml_playlist_list_t** */
570 VLC_ML_COUNT_FAVORITE_PLAYLISTS,/**< arg1 (out): size_t* */
571 VLC_ML_LIST_FAVORITE_FOLDERS, /**< arg1 (out): vlc_ml_folder_list_t** */
572 VLC_ML_COUNT_FAVORITE_FOLDERS,/**< arg1 (out): size_t* */
574 /* Children entities listing */
575 VLC_ML_LIST_MEDIA_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): ml_media_list_t** */
576 VLC_ML_COUNT_MEDIA_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
577 VLC_ML_LIST_VIDEO_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
578 VLC_ML_COUNT_VIDEO_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
579 VLC_ML_LIST_AUDIO_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
580 VLC_ML_COUNT_AUDIO_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
581 VLC_ML_LIST_ARTISTS_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): ml_artist_list_t** */
582 VLC_ML_COUNT_ARTISTS_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
583 VLC_ML_LIST_ALBUMS_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): ml_album_list_t** */
584 VLC_ML_COUNT_ALBUMS_OF, /**< arg1: parent entity type; arg2: parent entity id; arg3(out): size_t* */
586
601 /* Adds a folder to discover through the medialibrary */
602 VLC_ML_ADD_FOLDER, /**< arg1: mrl (const char*) res: can't fail */
603 VLC_ML_REMOVE_FOLDER, /**< arg1: mrl (const char*) res: can't fail */
604 VLC_ML_BAN_FOLDER, /**< arg1: mrl (const char*) res: can't fail */
605 VLC_ML_UNBAN_FOLDER, /**< arg1: mrl (const char*) res: can't fail */
606 VLC_ML_IS_INDEXED, /**< arg1: mrl (const char*) arg2 (out): bool*; res: can fail */
607 /**
608 * Reload a specific folder, or all.
609 * arg1: mrl (const char*), NULL to reload all folders
610 * res: can't fail
611 */
614 VLC_ML_SET_FOLDER_PUBLIC, /**< arg1: mrl (const char *); res: can't fail */
615 VLC_ML_SET_FOLDER_PRIVATE, /**< arg1: mrl (const char *); res: can't fail */
617 /* Pause/resume background operations, such as media discovery & media analysis */
618 VLC_ML_PAUSE_BACKGROUND, /**< no args; can't fail */
619 VLC_ML_RESUME_BACKGROUND, /**< no args; can't fail */
621 /* Misc operations */
622 VLC_ML_CLEAR_HISTORY, /**< arg1: vlc_ml_history_type_t; can't fail */
624 /* Create media */
625 VLC_ML_NEW_EXTERNAL_MEDIA, /**< arg1: const char*; arg2(out): vlc_ml_media_t** */
626 VLC_ML_NEW_STREAM, /**< arg1: const char*; arg2(out): vlc_ml_media_t** */
630 /* Media management */
631 VLC_ML_MEDIA_UPDATE_PROGRESS, /**< arg1: media id; arg2: playback position; can fail */
632 VLC_ML_MEDIA_GET_MEDIA_PLAYBACK_STATE, /**< arg1: media id; arg2: vlc_ml_playback_state; arg3: char**; */
633 VLC_ML_MEDIA_SET_MEDIA_PLAYBACK_STATE, /**< arg1: media id; arg2: vlc_ml_playback_state; arg3: const char*; */
634 VLC_ML_MEDIA_GET_ALL_MEDIA_PLAYBACK_STATES, /**< arg1: media id; arg2(out): vlc_ml_playback_states_all* */
635 VLC_ML_MEDIA_SET_ALL_MEDIA_PLAYBACK_STATES, /**< arg1: media id; arg2: const vlc_ml_playback_states_all* */
636 VLC_ML_MEDIA_SET_THUMBNAIL, /**< arg1: media id; arg2: const char*; arg3: vlc_ml_thumbnail_size_t */
637 VLC_ML_MEDIA_SET_GENRE_THUMBNAIL, /**< arg1: media id; arg2: const char*; arg3: vlc_ml_thumbnail_size_t */
638 VLC_ML_MEDIA_GENERATE_THUMBNAIL, /**< arg1: media id; arg2: vlc_ml_thumbnail_size_t; arg3: width; arg4: height; arg5: position */
639 VLC_ML_MEDIA_ADD_EXTERNAL_MRL, /**< arg1: media id; arg2: const char*; arg3: type(vlc_ml_file_type_t) */
640 VLC_ML_MEDIA_SET_TYPE, /**< arg1: media id; arg2: vlc_ml_media_type_t */
641 VLC_ML_MEDIA_SET_PLAYED, /**< arg1: media id; arg2: bool */
642 VLC_ML_MEDIA_SET_FAVORITE, /**< arg1: media id; arg2: bool */
643 VLC_ML_MEDIA_ADD_LABEL, /**< arg1: media id; arg2: label name */
644 VLC_ML_MEDIA_REMOVE_LABEL, /**< arg1: media id; arg2: label name */
645 VLC_ML_MEDIA_ADD_BOOKMARK, /**< arg1: media id; arg2: int64_t */
646 VLC_ML_MEDIA_REMOVE_BOOKMARK, /**< arg1: media id; arg2: int64_t */
647 VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS, /**< arg1: media id */
648 VLC_ML_MEDIA_UPDATE_BOOKMARK, /**< arg1: media id; arg2: int64_t; arg3: const char*; arg4: const char* */
650 /* Playlist management */
651 VLC_ML_PLAYLIST_CREATE, /**< arg1: const char*; arg2(out): vlc_ml_playlist_t**; can fail */
652 VLC_ML_PLAYLIST_DELETE, /**< arg1: playlist id; can fail */
653 VLC_ML_PLAYLIST_APPEND, /**< arg1: playlist id; arg2: pointer on media ids; arg3: media ids count; can fail */
654 VLC_ML_PLAYLIST_INSERT, /**< arg1: playlist id; arg2: pointer on media ids; arg3: media ids count; arg4: position; can fail */
655 VLC_ML_PLAYLIST_MOVE, /**< arg1: playlist id; arg2: from; arg3: to; arg4: count; can fail */
656 VLC_ML_PLAYLIST_REMOVE, /**< arg1: playlist id; arg2: position; arg3: count; can fail */
657 VLC_ML_PLAYLIST_RENAME, /**< arg1: playlist id; arg2: const char*; can fail */
659 /* Set Favorites */
660 VLC_ML_FOLDER_SET_FAVORITE, /**< arg1: mrl (const char*); arg2: bool; res: can fail */
661 VLC_ML_ARTIST_SET_FAVORITE, /**< arg1: artist id; arg2: bool; can fail */
662 VLC_ML_ALBUM_SET_FAVORITE, /**< arg1: album id; arg2: bool; can fail */
663 VLC_ML_GENRE_SET_FAVORITE, /**< arg1: genre id; arg2: bool; can fail */
664 VLC_ML_PLAYLIST_SET_FAVORITE, /**< arg1: playlist id; arg2: bool; can fail */
666
667/**
668 * User playback settings.
669 * All values/units are up to the caller and are not interpreted by the media
670 * library.
671 * All values are stored and returned as strings.
672 * When calling vlc_medialibrary_t::pf_control with vlc_ml_MEDIA_GET_MEDIA_PLAYBACK_STATE,
673 * the value will be returned stored in the provided char**. If the state was
674 * not set yet, NULL will be returned.
675 * When setting a state, NULL can be provided as a value to unset it.
676 */
698typedef struct vlc_ml_playback_states_all
714 /**
715 * Entity modification callbacks. The affected entity will be passed:
716 * - As a `vlc_ml_<type>_t`, depending on the type of the modified/inserted
717 * entity, in `vlc_ml_event_t::modification::p_<type>`
718 * for ADDED and UPDATED variants.
719 * - as an id, in ::vlc_ml_event_t::deletion::i_entity_id
720 * When _DELETED callbacks get invoked, the entity will already have been
721 * deleted from the database, and cannot be retrieved anymore
722 */
747 /**
748 * A discovery started.
749 *
750 * This event will be emitted when the media library starts discovering a
751 * scheduled entry point.
752 * If more than a single entry point are queued, this event won't be fired
753 * again until all operations are completed and a new operation is scheduled.
754 * Once all currently queued operations are done
755 * VLC_ML_EVENT_DISCOVERY_COMPLETED will be emitted.
756 */
758 /**
759 * Sent when a discovery or reload operation starts analyzing a new folder.
760 * The discovered entry point is stored in
761 * vlc_ml_event_t::discovery_progress::psz_entry_point.
762 */
764 /**
765 * Sent when all queued discovery operations are done being processed.
766 */
768 /**
769 * This event is sent when a discovery failed. The entry point that failed to
770 * be discovered is stored in
771 * vlc_ml_event_t::discovery_failed::psz_entry_point
772 */
774 /**
775 * Sent when a new entry point gets added to the database.
776 * The entry point that was added is stored in
777 * vlc::ml_event_t::entry_point_added::psz_entry_point, and the success or failure
778 * state is stored in vlc_ml_event_t::entry_point_added::b_success
779 * If successful, this event won't be emitted again for this entry point.
780 * In case of failure, this event will be fired again if the same entry point
781 * is queued for discovery again.
782 */
784 /**
785 * Sent when an entry point removal request has been processed.
786 * The removed entry point is stored in
787 * vlc_ml_event_t::entry_point_removed::psz_entry_point and the success or failure
788 * state is stored in vlc_ml_event_t::entry_point_removed::b_success
789 */
791 /**
792 * Sent when an entry point ban request has been processed.
793 * The banned entry point is stored in
794 * vlc_ml_event_t::entry_point_banned::psz_entry_point and the operation success
795 * state is stored in vlc_ml_event_t::entry_point_banned::b_success
796 */
798 /**
799 * Sent when an entry point unban request has been processed.
800 * The unbanned entry point is stored in
801 * vlc_ml_event_t::entry_point_unbanned::psz_entry_point and the operation success
802 * state is stored in vlc_ml_event_t::entry_point_unbanned::b_success
803 */
805 /**
806 * Sent when a discoverer or parser threads changes its idle state.
807 * The idle state is stored in vlc_ml_event_t::background_idle_changed.b_idle.
808 * False means at least one background thread is in running, true means
809 * both discoverer & parser threads are paused.
810 */
812 /**
813 * Sent when the parsing progress percentage gets updated.
814 * The percentage is stored as a [0;100] integer, in
815 * vlc_ml_event_t::parsing_progress::i_percent
816 * This value might decrease as more media get discovered, but it will only
817 * increase once all discovery operations are completed.
818 */
820 /**
821 * Sent after a media thumbnail was generated, or if it's generation failed.
822 * The media is stored in vlc_ml_event_t::media_thumbnail_generated::p_media
823 * and the success state is stored in
824 * vlc_ml_event_t::media_thumbnail_generated::b_success
825 */
827 /**
828 * Sent after the history gets changed. It can be either cleaned, or simply
829 * modified because a media was recently played/removed from the history.
830 * The history type (global/local/network) is stored in
831 * vlc_ml_event_t::history_changed::history_type
832 */
834 /**
835 * Sent when an application requested rescan starts being processed.
836 */
838 /**
839 * Sent when favorites list changes. This includes when entities are
840 * marked/unmarked as favorites.
841 * The entity type and id are stored in vlc_ml_event_t::favorites_changed
842 */
845
846typedef struct vlc_ml_event_t
848 int i_type;
849 union
850 {
851 struct
852 {
853 const char* psz_entry_point;
855 struct
856 {
857 const char* psz_entry_point;
859 struct
860 {
861 const char* psz_entry_point;
862 bool b_success;
864 struct
865 {
866 const char* psz_entry_point;
867 bool b_success;
869 struct
870 {
871 const char* psz_entry_point;
872 bool b_success;
874 struct
875 {
876 const char* psz_entry_point;
877 bool b_success;
879 struct
880 {
881 uint8_t i_percent;
883 union
884 {
885 const vlc_ml_media_t* p_media;
894 struct
895 {
896 int64_t i_entity_id;
898 struct
899 {
900 int64_t i_entity_id;
901 } deletion;
902 struct
903 {
904 bool b_idle;
906 struct
907 {
908 const vlc_ml_media_t* p_media;
912 struct
913 {
916 struct
917 {
918 int64_t i_entity_id;
919 int i_entity_type; /**< One of VLC_ML_PARENT_* values */
920 bool b_favorite; /**< true if marked as favorite, false if unmarked */
922 };
925typedef void (*vlc_ml_callback_t)( void* p_data, const vlc_ml_event_t* p_event );
927typedef struct vlc_medialibrary_callbacks_t
934 struct vlc_object_t obj;
938 void* p_sys;
940 int (*pf_control)( struct vlc_medialibrary_module_t* p_ml, int i_query, va_list args );
941 /**
942 * List some entities from the medialibrary.
943 *
944 * \param p_ml The medialibrary module instance.
945 * \param i_query The type search to be performed. \see vlc_ml_list enumeration
946 * \param p_params A pointer to a vlc_ml_query_params_t structure, or NULL for
947 * the default parameters (alphabetical ascending sort, no pagination)
948 *
949 * \return VLC_SUCCESS or an error code
950 *
951 * Refer to the individual list of vlc_ml_list requests for the additional
952 * per-query input/output parameters values & types
953 */
954 int (*pf_list)( struct vlc_medialibrary_module_t* p_ml, int i_query,
955 const vlc_ml_query_params_t* p_params, va_list args );
956
957 /**
958 * Get a specific entity by its id or another unique value
959 *
960 * \return The required entity, or a NULL pointer if couldn't be found.
961 *
962 * Refer to the list of queries for the specific return type
963 */
964 void* (*pf_get)( struct vlc_medialibrary_module_t* p_ml, int i_query, va_list args );
968
971
973#define vlc_ml_instance_get(x) vlc_ml_instance_get( VLC_OBJECT(x) )
975VLC_API void* vlc_ml_get( vlc_medialibrary_t* p_ml, int i_query, ... ) VLC_USED;
976VLC_API int vlc_ml_control( vlc_medialibrary_t* p_ml, int i_query, ... ) VLC_USED;
977VLC_API int vlc_ml_list( vlc_medialibrary_t* p_ml, int i_query,
978 const vlc_ml_query_params_t* p_params, ... );
979
980/**
981 * \brief Registers a medialibrary callback.
982 * \returns A handle to the callback, to be passed to vlc_ml_event_unregister_callback
983 */
986
987/**
988 * \brief Unregisters a medialibrary callback
989 * \param p_ml an initialized medialibrary instance
990 * \param p_callback The callback handle returned by vlc_ml_register_callback
991 */
993 vlc_ml_event_callback_t* p_callback );
994/**
995 * \brief Unregisters a medialibrary callback from the said callback.
996 * \param p_ml an initialized medialibrary instance
997 * \param p_callback The handle returned by vlc_ml_register_callback
998 *
999 * This must only be called synchronously from the callback function provided to
1000 * vlc_ml_event_register_callback
1001 * The p_callback handle must be considered invalid when this function returns
1002 */
1004 vlc_ml_event_callback_t* p_callback );
1005
1006
1015
1029
1032#ifdef __cplusplus
1033 vlc_ml_query_params_t ret = { };
1035#else
1037#endif
1038 return ret;
1039}
1040
1041static inline int vlc_ml_add_folder( vlc_medialibrary_t* p_ml, const char* psz_folder )
1043 return vlc_ml_control( p_ml, VLC_ML_ADD_FOLDER, psz_folder );
1044}
1045
1046static inline int vlc_ml_remove_folder( vlc_medialibrary_t* p_ml, const char* psz_folder )
1048 return vlc_ml_control( p_ml, VLC_ML_REMOVE_FOLDER, psz_folder );
1049}
1050
1051static inline int vlc_ml_ban_folder( vlc_medialibrary_t* p_ml, const char* psz_folder )
1053 return vlc_ml_control( p_ml, VLC_ML_BAN_FOLDER, psz_folder );
1054}
1055
1056static inline int vlc_ml_unban_folder( vlc_medialibrary_t* p_ml, const char* psz_folder )
1058 return vlc_ml_control( p_ml, VLC_ML_UNBAN_FOLDER, psz_folder );
1059}
1060
1061static inline int vlc_ml_is_indexed( vlc_medialibrary_t* p_ml,
1062 const char* psz_mrl, bool* p_res )
1063{
1064 return vlc_ml_control( p_ml, VLC_ML_IS_INDEXED, psz_mrl, p_res );
1065}
1066
1067static inline int vlc_ml_reload_folder( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1069 return vlc_ml_control( p_ml, VLC_ML_RELOAD_FOLDER, psz_mrl );
1070}
1071
1072static inline int vlc_ml_set_folder_public( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1074 return vlc_ml_control( p_ml, VLC_ML_SET_FOLDER_PUBLIC, psz_mrl );
1075}
1076
1077static inline int vlc_ml_set_folder_private( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1079 return vlc_ml_control( p_ml, VLC_ML_SET_FOLDER_PRIVATE, psz_mrl );
1080}
1081
1082static inline int vlc_ml_pause_background( vlc_medialibrary_t* p_ml )
1085}
1086
1087static inline int vlc_ml_resume_background( vlc_medialibrary_t* p_ml )
1090}
1091
1092static inline int vlc_ml_clear_history( vlc_medialibrary_t* p_ml, vlc_ml_history_type_t type )
1094 return vlc_ml_control( p_ml, VLC_ML_CLEAR_HISTORY, type );
1095}
1096
1097static inline vlc_ml_media_t* vlc_ml_new_external_media( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1099 vlc_ml_media_t* res;
1100 if ( vlc_ml_control( p_ml, VLC_ML_NEW_EXTERNAL_MEDIA, psz_mrl, &res ) != VLC_SUCCESS )
1101 return NULL;
1102 return res;
1103}
1104
1105static inline vlc_ml_media_t* vlc_ml_new_stream( vlc_medialibrary_t* p_ml, const char* psz_mrl )
1107 vlc_ml_media_t* res;
1108 if ( vlc_ml_control( p_ml, VLC_ML_NEW_STREAM, psz_mrl, &res ) != VLC_SUCCESS )
1109 return NULL;
1110 return res;
1111}
1112
1113static inline int vlc_ml_remove_stream( vlc_medialibrary_t* p_ml, int64_t i_media_id )
1115 return vlc_ml_control(p_ml, VLC_ML_REMOVE_STREAM, i_media_id);
1116}
1117
1118static inline int vlc_ml_media_add_label( vlc_medialibrary_t* p_ml,
1119 int64_t i_media_id,
1120 const char* psz_label )
1121{
1122 return vlc_ml_control(p_ml, VLC_ML_MEDIA_ADD_LABEL, i_media_id, psz_label);
1123}
1124
1125static inline int vlc_ml_media_remove_label( vlc_medialibrary_t* p_ml,
1126 int64_t i_media_id,
1127 const char* psz_label )
1128{
1129 return vlc_ml_control(p_ml, VLC_ML_MEDIA_REMOVE_LABEL, i_media_id, psz_label);
1130}
1131
1132static inline int vlc_ml_media_update_progress( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1133 double progress )
1134{
1135 return vlc_ml_control( p_ml, VLC_ML_MEDIA_UPDATE_PROGRESS, i_media_id, progress );
1136}
1137
1138static inline int vlc_ml_media_get_playback_state( vlc_medialibrary_t* p_ml, int64_t i_media_id, int i_state, char** ppsz_result )
1140 return vlc_ml_control( p_ml, VLC_ML_MEDIA_GET_MEDIA_PLAYBACK_STATE, i_media_id, i_state, ppsz_result );
1141}
1142
1143static 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 )
1145 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_MEDIA_PLAYBACK_STATE, i_media_id, i_state, psz_value );
1146}
1147
1149 int64_t i_media_id,
1151{
1152 return vlc_ml_control( p_ml,VLC_ML_MEDIA_GET_ALL_MEDIA_PLAYBACK_STATES, i_media_id, prefs );
1153}
1154
1156 int64_t i_media_id,
1157 const vlc_ml_playback_states_all* prefs )
1158{
1159 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_ALL_MEDIA_PLAYBACK_STATES, i_media_id, prefs );
1160}
1161
1162static inline int vlc_ml_media_set_thumbnail( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1163 const char* psz_mrl, vlc_ml_thumbnail_size_t sizeType )
1164{
1165 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_THUMBNAIL, i_media_id, psz_mrl, sizeType );
1166}
1167
1168static inline int vlc_ml_media_set_genre_thumbnail( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1169 const char* psz_mrl, vlc_ml_thumbnail_size_t sizeType )
1170{
1171 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_GENRE_THUMBNAIL, i_media_id, psz_mrl, sizeType );
1172}
1173
1174
1175static inline int vlc_ml_media_generate_thumbnail( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1177 uint32_t i_desired_width,
1178 uint32_t i_desired_height,
1179 double position )
1180{
1181 return vlc_ml_control( p_ml, VLC_ML_MEDIA_GENERATE_THUMBNAIL, i_media_id,
1182 size_type, i_desired_width, i_desired_height, position );
1183}
1184
1185static inline int vlc_ml_media_add_external_mrl( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1186 const char* psz_mrl, int i_type )
1187{
1188 return vlc_ml_control( p_ml, VLC_ML_MEDIA_ADD_EXTERNAL_MRL, i_media_id, psz_mrl, i_type );
1189}
1190
1191static inline int vlc_ml_media_set_type( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1193{
1194 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_TYPE, i_media_id, (int)i_type );
1195}
1196
1197static inline int vlc_ml_media_set_played( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1198 bool b_played )
1199{
1200 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_PLAYED, i_media_id, (int) b_played );
1201}
1202
1203static inline int vlc_ml_media_set_favorite( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1204 bool b_favorite )
1205{
1206 return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_FAVORITE, i_media_id, (int) b_favorite );
1207}
1208
1209static inline vlc_ml_bookmark_list_t*
1211 int64_t i_media_id )
1212{
1213 assert( p_ml != NULL );
1215 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA_BOOKMARKS, params, i_media_id,
1216 &res ) != VLC_SUCCESS )
1217 return NULL;
1218 return res;
1219}
1220
1221static inline int
1222vlc_ml_media_add_bookmark( vlc_medialibrary_t* p_ml, int64_t i_media_id, int64_t i_time )
1224 assert( p_ml != NULL );
1225 return vlc_ml_control( p_ml, VLC_ML_MEDIA_ADD_BOOKMARK, i_media_id, i_time );
1226}
1227
1228static inline int
1229vlc_ml_media_remove_bookmark( vlc_medialibrary_t* p_ml, int64_t i_media_id, int64_t i_time )
1231 assert( p_ml != NULL );
1232 return vlc_ml_control( p_ml, VLC_ML_MEDIA_REMOVE_BOOKMARK, i_media_id, i_time );
1233}
1234
1235static inline int
1236vlc_ml_media_update_bookmark( vlc_medialibrary_t* p_ml, int64_t i_media_id,
1237 int64_t i_time, const char* psz_name,
1238 const char* psz_desc )
1239{
1240 assert( p_ml != NULL );
1241 return vlc_ml_control( p_ml, VLC_ML_MEDIA_UPDATE_BOOKMARK, i_media_id,
1242 i_time, psz_name, psz_desc );
1243}
1244
1245static inline int
1246vlc_ml_media_remove_all_bookmarks( vlc_medialibrary_t* p_ml, int64_t i_media_id )
1248 assert( p_ml != NULL );
1249 return vlc_ml_control( p_ml, VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS, i_media_id );
1250}
1251
1252static inline vlc_ml_playlist_t*
1253vlc_ml_playlist_create( vlc_medialibrary_t * p_ml, const char * name)
1255 assert( p_ml != NULL );
1256
1257 vlc_ml_playlist_t* result;
1258
1259 if (vlc_ml_control( p_ml, VLC_ML_PLAYLIST_CREATE, name, &result ) != VLC_SUCCESS )
1260 return NULL;
1261
1262 return result;
1263}
1264
1265static inline int
1266vlc_ml_playlist_delete( vlc_medialibrary_t * p_ml, int64_t i_playlist_id )
1268 assert( p_ml != NULL );
1269
1270 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_DELETE, i_playlist_id );
1271}
1272
1273static inline int
1274vlc_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 )
1276 assert( p_ml != NULL );
1277
1278 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_APPEND, i_playlist_id, i_media_ids, i_media_id_count );
1279}
1280
1281static inline int
1282vlc_ml_playlist_insert( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, const int64_t *i_media_ids,
1283 size_t i_media_id_count, uint32_t i_position )
1284{
1285 assert( p_ml != NULL );
1286
1287 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_INSERT, i_playlist_id, i_media_ids, i_media_id_count, i_position );
1288}
1289
1290static inline int
1292 int64_t i_playlist_id, uint32_t i_from, uint32_t i_to, uint32_t i_count )
1293{
1294 assert( p_ml != NULL );
1295
1296 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_MOVE, i_playlist_id, i_from, i_to, i_count );
1297}
1298
1299static inline int
1300vlc_ml_playlist_remove( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, uint32_t i_position, uint32_t i_count )
1302 assert( p_ml != NULL );
1303
1304 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_REMOVE, i_playlist_id, i_position, i_count );
1305}
1306
1307static inline int
1308vlc_ml_playlist_rename( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, const char* name )
1310 assert( p_ml != NULL );
1311
1312 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_RENAME, i_playlist_id, name );
1313}
1314
1315static inline vlc_ml_media_t* vlc_ml_get_media( vlc_medialibrary_t* p_ml, int64_t i_media_id )
1317 return (vlc_ml_media_t*)vlc_ml_get( p_ml, VLC_ML_GET_MEDIA, i_media_id );
1318}
1319
1321 const char* psz_mrl )
1322{
1323 return (vlc_ml_media_t*)vlc_ml_get( p_ml, VLC_ML_GET_MEDIA_BY_MRL, psz_mrl );
1324}
1325
1326static inline input_item_t* vlc_ml_get_input_item( vlc_medialibrary_t* p_ml, int64_t i_media_id )
1328 return (input_item_t*)vlc_ml_get( p_ml, VLC_ML_GET_INPUT_ITEM, i_media_id );
1329}
1330
1332 const char* psz_mrl )
1333{
1334 return (input_item_t*)vlc_ml_get( p_ml, VLC_ML_GET_INPUT_ITEM_BY_MRL, psz_mrl );
1335}
1336
1337static inline vlc_ml_album_t* vlc_ml_get_album( vlc_medialibrary_t* p_ml, int64_t i_album_id )
1339 return (vlc_ml_album_t*)vlc_ml_get( p_ml, VLC_ML_GET_ALBUM, i_album_id );
1340}
1341
1342static inline vlc_ml_artist_t* vlc_ml_get_artist( vlc_medialibrary_t* p_ml, int64_t i_artist_id )
1344 return (vlc_ml_artist_t*)vlc_ml_get( p_ml, VLC_ML_GET_ARTIST, i_artist_id );
1345}
1346
1347static inline vlc_ml_genre_t* vlc_ml_get_genre( vlc_medialibrary_t* p_ml, int64_t i_genre_id )
1349 return (vlc_ml_genre_t*)vlc_ml_get( p_ml, VLC_ML_GET_GENRE, i_genre_id );
1350}
1351
1352static inline vlc_ml_show_t* vlc_ml_get_show( vlc_medialibrary_t* p_ml, int64_t i_show_id )
1354 return (vlc_ml_show_t*)vlc_ml_get( p_ml, VLC_ML_GET_SHOW, i_show_id );
1355}
1356
1357static inline vlc_ml_group_t* vlc_ml_get_group( vlc_medialibrary_t* p_ml, int64_t i_group_id )
1359 return (vlc_ml_group_t*)vlc_ml_get( p_ml, VLC_ML_GET_GROUP, i_group_id );
1360}
1361
1362static inline vlc_ml_folder_t* vlc_ml_get_folder( vlc_medialibrary_t* p_ml, int64_t i_folder_id )
1364 return (vlc_ml_folder_t*)vlc_ml_get( p_ml, VLC_ML_GET_FOLDER, i_folder_id);
1365}
1366
1367static inline vlc_ml_playlist_t* vlc_ml_get_playlist( vlc_medialibrary_t* p_ml, int64_t i_playlist_id )
1369 return (vlc_ml_playlist_t*)vlc_ml_get( p_ml, VLC_ML_GET_PLAYLIST, i_playlist_id );
1370}
1371
1372static 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 )
1374 vlc_assert( p_ml != NULL );
1376 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1377 return NULL;
1378 return res;
1379}
1380
1381static 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 )
1383 vlc_assert( p_ml != NULL );
1384 size_t res;
1385 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_MEDIA_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1386 return 0;
1387 return res;
1388}
1389
1392 int i_parent_type, int64_t i_parent_id )
1393{
1394 vlc_assert( p_ml != NULL );
1395
1397
1399 params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1400 return NULL;
1401
1402 return res;
1403}
1404
1405static inline size_t vlc_ml_count_video_of( vlc_medialibrary_t* p_ml,
1407 int i_parent_type, int64_t i_parent_id )
1408{
1409 vlc_assert( p_ml != NULL );
1410
1411 size_t res;
1412
1414 params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1415 return 0;
1416
1417 return res;
1418}
1419
1422 int i_parent_type, int64_t i_parent_id )
1423{
1424 vlc_assert( p_ml != NULL );
1425
1427
1429 params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1430 return NULL;
1431
1432 return res;
1433}
1434
1435static inline size_t vlc_ml_count_audio_of( vlc_medialibrary_t* p_ml,
1437 int i_parent_type, int64_t i_parent_id )
1438{
1439 vlc_assert( p_ml != NULL );
1440
1441 size_t res;
1442
1444 params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1445 return 0;
1446
1447 return res;
1448}
1449
1450static 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 )
1452 vlc_assert( p_ml != NULL );
1454 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ARTISTS_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1455 return NULL;
1456 return res;
1457}
1458
1459static 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 )
1461 vlc_assert( p_ml != NULL );
1462 size_t res;
1463 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ARTISTS_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1464 return 0;
1465 return res;
1466}
1467
1468static 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 )
1470 vlc_assert( p_ml != NULL );
1472 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ALBUMS_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1473 return NULL;
1474 return res;
1475}
1476
1477static 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 )
1479 vlc_assert( p_ml != NULL );
1480 size_t res;
1481 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ALBUMS_OF, params, i_parent_type, i_parent_id, &res ) != VLC_SUCCESS )
1482 return 0;
1483 return res;
1484}
1485
1486static 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 )
1488 vlc_assert( p_ml != NULL );
1490 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ALBUM_TRACKS, params, i_album_id, &res ) != VLC_SUCCESS )
1491 return NULL;
1492 return res;
1493}
1494
1495static 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 )
1497 vlc_assert( p_ml != NULL );
1498 size_t count;
1499 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ALBUM_TRACKS, params, i_album_id, &count ) != VLC_SUCCESS )
1500 return 0;
1501 return count;
1502}
1503
1504static 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 )
1506 vlc_assert( p_ml != NULL );
1508 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ALBUM_ARTISTS, params, i_album_id, &res ) != VLC_SUCCESS )
1509 return NULL;
1510 return res;
1511}
1512
1513static 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 )
1515 vlc_assert( p_ml != NULL );
1516 size_t count;
1517 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ALBUM_ARTISTS, params, i_album_id, &count ) != VLC_SUCCESS )
1518 return 0;
1519 return count;
1520}
1521
1522static 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 )
1524 vlc_assert( p_ml != NULL );
1526 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ARTIST_ALBUMS, params, i_artist_id, &res ) != VLC_SUCCESS )
1527 return NULL;
1528 return res;
1529}
1530
1531static 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 )
1533 vlc_assert( p_ml != NULL );
1534 size_t count;
1535 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ARTIST_ALBUMS, params, i_artist_id, &count ) != VLC_SUCCESS )
1536 return 0;
1537 return count;
1538}
1539
1540static 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 )
1542 vlc_assert( p_ml != NULL );
1544 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ARTIST_TRACKS, params, i_artist_id, &res ) != VLC_SUCCESS )
1545 return NULL;
1546 return res;
1547}
1548
1549static 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 )
1551 vlc_assert( p_ml != NULL );
1552 size_t count;
1553 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ARTIST_TRACKS, params, i_artist_id, &count ) != VLC_SUCCESS )
1554 return 0;
1555 return count;
1556}
1557
1560 vlc_assert( p_ml != NULL );
1562 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA, params, &res ) != VLC_SUCCESS )
1563 return NULL;
1564 return res;
1565}
1566
1567static inline size_t vlc_ml_count_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1569 vlc_assert( p_ml != NULL );
1570 size_t count;
1571 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_MEDIA, params, &count ) != VLC_SUCCESS )
1572 return 0;
1573 return count;
1574}
1575
1578 vlc_assert( p_ml != NULL );
1580 if ( vlc_ml_list( p_ml, VLC_ML_LIST_VIDEOS, params, &res ) != VLC_SUCCESS )
1581 return NULL;
1582 return res;
1583}
1584
1585static inline size_t vlc_ml_count_video_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1587 vlc_assert( p_ml != NULL );
1588 size_t count;
1589 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_VIDEOS, params, &count ) != VLC_SUCCESS )
1590 return 0;
1591 return count;
1592}
1593
1596 vlc_assert( p_ml != NULL );
1598 if ( vlc_ml_list( p_ml, VLC_ML_LIST_AUDIOS, params, &res ) != VLC_SUCCESS )
1599 return NULL;
1600 return res;
1601}
1602
1603static inline size_t vlc_ml_count_audio_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1605 vlc_assert( p_ml != NULL );
1606 size_t count;
1607 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_AUDIOS, params, &count ) != VLC_SUCCESS )
1608 return 0;
1609 return count;
1610}
1611
1614 vlc_assert( p_ml != NULL );
1616 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ALBUMS, params, &res ) != VLC_SUCCESS )
1617 return NULL;
1618 return res;
1619}
1620
1621static inline size_t vlc_ml_count_albums( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1623 vlc_assert( p_ml != NULL );
1624 size_t count;
1625 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ALBUMS, params, &count ) != VLC_SUCCESS )
1626 return 0;
1627 return count;
1628}
1629
1632 vlc_assert( p_ml != NULL );
1634 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GENRES, params, &res ) != VLC_SUCCESS )
1635 return NULL;
1636 return res;
1637}
1638
1639static inline size_t vlc_ml_count_genres( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1641 vlc_assert( p_ml != NULL );
1642 size_t count;
1643 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRES, params, &count ) != VLC_SUCCESS )
1644 return 0;
1645 return count;
1646}
1647
1648/**
1649 * @brief vlc_ml_list_artists
1650 * @param p_ml an initialized medialibrary instance
1651 * @param params Query parameters, or NULL for the default
1652 * @param b_include_all True if you wish to fetch artists without at least one album.
1653 * @return
1654 */
1655static 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 )
1657 vlc_assert( p_ml != NULL );
1659 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ARTISTS, params, (int)b_include_all, &res ) != VLC_SUCCESS )
1660 return NULL;
1661 return res;
1662}
1663
1664static inline size_t vlc_ml_count_artists( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, bool includeAll )
1666 vlc_assert( p_ml != NULL );
1667 size_t count;
1668 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ARTISTS, params, includeAll, &count ) != VLC_SUCCESS )
1669 return 0;
1670 return count;
1671}
1672
1675 vlc_assert( p_ml != NULL );
1676 vlc_ml_show_list_t* res;
1677 if ( vlc_ml_list( p_ml, VLC_ML_LIST_SHOWS, params, &res ) != VLC_SUCCESS )
1678 return NULL;
1679 return res;
1680}
1681
1684 vlc_assert(p_ml != NULL);
1686 if (vlc_ml_list(p_ml, VLC_ML_LIST_MOVIES, params, &res) != VLC_SUCCESS)
1687 return NULL;
1688 return res;
1689}
1690
1691static inline size_t vlc_ml_count_movies(vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params)
1693 vlc_assert(p_ml != NULL);
1694 size_t count;
1695 if (vlc_ml_list(p_ml, VLC_ML_COUNT_MOVIES, params, &count) != VLC_SUCCESS)
1696 return 0;
1697 return count;
1698}
1699
1700static inline size_t vlc_ml_count_shows( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1702 vlc_assert( p_ml != NULL );
1703 size_t count;
1704 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_SHOWS, params, &count ) != VLC_SUCCESS )
1705 return 0;
1706 return count;
1707}
1708
1709static 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 )
1711 vlc_assert( p_ml != NULL );
1713 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GENRE_ARTISTS, params, i_genre_id, &res ) != VLC_SUCCESS )
1714 return NULL;
1715 return res;
1716}
1717
1718static 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 )
1720 vlc_assert( p_ml != NULL );
1721 size_t count;
1722 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRE_ARTISTS, params, i_genre_id, &count ) != VLC_SUCCESS )
1723 return 0;
1724 return count;
1725}
1726
1727static 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 )
1729 vlc_assert( p_ml != NULL );
1731 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GENRE_TRACKS, params, i_genre_id, &res ) != VLC_SUCCESS )
1732 return NULL;
1733 return res;
1734}
1735
1736static 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 )
1738 vlc_assert( p_ml != NULL );
1739 size_t count;
1740 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRE_TRACKS, params, i_genre_id, &count ) != VLC_SUCCESS )
1741 return 0;
1742 return count;
1743}
1744
1745static 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 )
1747 vlc_assert( p_ml != NULL );
1749 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GENRE_ALBUMS, params, i_genre_id, &res ) != VLC_SUCCESS )
1750 return NULL;
1751 return res;
1752}
1753
1754static 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 )
1756 vlc_assert( p_ml != NULL );
1757 size_t count;
1758 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRE_ALBUMS, params, i_genre_id, &count ) != VLC_SUCCESS )
1759 return 0;
1760 return count;
1761}
1762
1763static 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 )
1765 vlc_assert( p_ml != NULL );
1767 if ( vlc_ml_list( p_ml, VLC_ML_LIST_SHOW_EPISODES, params, i_show_id, &res ) != VLC_SUCCESS )
1768 return NULL;
1769 return res;
1770}
1771
1772static 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 )
1774 vlc_assert( p_ml != NULL );
1775 size_t count;
1776 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GENRE_ALBUMS, params, i_show_id, &count ) != VLC_SUCCESS )
1777 return 0;
1778 return count;
1779}
1780
1781static 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 )
1783 vlc_assert( p_ml != NULL );
1785 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA_LABELS, params, i_media_id, &res ) != VLC_SUCCESS )
1786 return NULL;
1787 return res;
1788}
1789
1790static 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 )
1792 vlc_assert( p_ml != NULL );
1793 size_t count;
1794 if ( vlc_ml_list( p_ml, VLC_ML_LIST_MEDIA_LABELS, params, i_media_id, &count ) != VLC_SUCCESS )
1795 return 0;
1796 return count;
1797}
1798
1801 vlc_assert( p_ml != NULL );
1803 if ( vlc_ml_list( p_ml, VLC_ML_LIST_HISTORY, params, (int)type, &res ) != VLC_SUCCESS )
1804 return NULL;
1805 return res;
1806}
1807
1808static 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 )
1810 vlc_assert( p_ml != NULL );
1811 size_t count;
1812 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_HISTORY, params, (int)type, &count ) != VLC_SUCCESS )
1813 return 0;
1814 return count;
1815}
1816
1819 vlc_assert( p_ml != NULL );
1821 if ( vlc_ml_list( p_ml, VLC_ML_LIST_VIDEO_HISTORY, params, &res ) != VLC_SUCCESS )
1822 return NULL;
1823 return res;
1824}
1825
1826static inline size_t vlc_ml_count_video_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1828 vlc_assert( p_ml != NULL );
1829 size_t count;
1830 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_VIDEO_HISTORY, params, &count ) != VLC_SUCCESS )
1831 return 0;
1832 return count;
1833}
1834
1837 vlc_assert( p_ml != NULL );
1839 if ( vlc_ml_list( p_ml, VLC_ML_LIST_AUDIO_HISTORY, params, &res ) != VLC_SUCCESS )
1840 return NULL;
1841 return res;
1842}
1843
1844static inline size_t vlc_ml_count_audio_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1846 vlc_assert( p_ml != NULL );
1847 size_t count;
1848 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_AUDIO_HISTORY, params, &count ) != VLC_SUCCESS )
1849 return 0;
1850 return count;
1851}
1852
1853//-------------------------------------------------------------------------------------------------
1854// Groups
1855
1858 vlc_assert( p_ml != NULL );
1860 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GROUPS, params, &res ) != VLC_SUCCESS )
1861 return NULL;
1862 return res;
1863}
1864
1865static inline size_t vlc_ml_count_groups( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1867 vlc_assert( p_ml != NULL );
1868 size_t count;
1869 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GROUPS, params, &count ) != VLC_SUCCESS )
1870 return 0;
1871 return count;
1872}
1873
1874static 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 )
1876 vlc_assert( p_ml != NULL );
1878 if ( vlc_ml_list( p_ml, VLC_ML_LIST_GROUP_MEDIA, params, i_group_id, &res ) != VLC_SUCCESS )
1879 return NULL;
1880 return res;
1881}
1882
1883static 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 )
1885 vlc_assert( p_ml != NULL );
1886 size_t count;
1887 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_GROUP_MEDIA, params, i_group_id, &count ) != VLC_SUCCESS )
1888 return 0;
1889 return count;
1890}
1891
1892//-------------------------------------------------------------------------------------------------
1893
1896 vlc_assert( p_ml != NULL );
1898 if ( vlc_ml_list( p_ml, VLC_ML_LIST_PLAYLISTS, params, (int) playlist_type, &res ) != VLC_SUCCESS )
1899 return NULL;
1900 return res;
1901}
1902
1903static 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)
1905 vlc_assert( p_ml != NULL );
1906 size_t count;
1907 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_PLAYLISTS, params, (int) playlist_type, &count ) != VLC_SUCCESS )
1908 return 0;
1909 return count;
1910}
1911
1912static 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 )
1914 vlc_assert( p_ml != NULL );
1916 if ( vlc_ml_list( p_ml, VLC_ML_LIST_PLAYLIST_MEDIA, params, i_playlist_id, &res ) != VLC_SUCCESS )
1917 return NULL;
1918 return res;
1919}
1920
1921static 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 )
1923 vlc_assert( p_ml != NULL );
1924 size_t count;
1925 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_PLAYLIST_MEDIA, params, i_playlist_id, &count ) != VLC_SUCCESS )
1926 return 0;
1927 return count;
1928}
1929
1932 vlc_assert( p_ml != NULL );
1934 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ENTRY_POINTS, params, (int)false, &res ) != VLC_SUCCESS )
1935 return NULL;
1936 return res;
1937}
1938
1939static inline size_t vlc_ml_count_entry_points( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
1941 vlc_assert( p_ml != NULL );
1942 size_t res;
1943 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ENTRY_POINTS, params, (int)false, &res ) != VLC_SUCCESS )
1944 return 0;
1945 return res;
1946}
1947
1948static inline vlc_ml_folder_list_t*
1951 vlc_assert( p_ml != NULL );
1953 if ( vlc_ml_list( p_ml, VLC_ML_LIST_ENTRY_POINTS, params, (int)true, &res ) != VLC_SUCCESS )
1954 return NULL;
1955 return res;
1956}
1957
1958static inline size_t vlc_ml_count_banned_entry_points( vlc_medialibrary_t* p_ml,
1960{
1961 vlc_assert( p_ml != NULL );
1962 size_t res;
1963 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_ENTRY_POINTS, params, (int)true, &res ) != VLC_SUCCESS )
1964 return 0;
1965 return res;
1966}
1967
1968// Folders
1969
1972{
1973 vlc_assert(p_ml != NULL);
1974
1976
1977 if (vlc_ml_list(p_ml, VLC_ML_LIST_FOLDERS, params, &res) != VLC_SUCCESS)
1978 return NULL;
1979
1980 return res;
1981}
1982
1983static inline size_t vlc_ml_count_folders(vlc_medialibrary_t * p_ml,
1985{
1986 vlc_assert(p_ml != NULL);
1987
1988 size_t count;
1989
1990 if (vlc_ml_list(p_ml, VLC_ML_COUNT_FOLDERS, params, &count) != VLC_SUCCESS)
1991 return 0;
1992
1993 return count;
1994}
1995
1996static inline
2000{
2001 vlc_assert(p_ml != NULL);
2002
2004
2005 if (vlc_ml_list(p_ml, VLC_ML_LIST_FOLDERS_BY_TYPE, params, (int) type, &res) != VLC_SUCCESS)
2006 return NULL;
2007
2008 return res;
2009}
2010
2011static inline size_t vlc_ml_count_folders_by_type(vlc_medialibrary_t * p_ml,
2014{
2015 vlc_assert(p_ml != NULL);
2016
2017 size_t count;
2018
2019 if (vlc_ml_list(p_ml, VLC_ML_COUNT_FOLDERS_BY_TYPE, params, (int) type, &count) != VLC_SUCCESS)
2020 return 0;
2021
2022 return count;
2023}
2024
2025// Folder Media
2026
2029 int64_t i_folder_id)
2030{
2031 vlc_assert(p_ml != NULL);
2032
2033 vlc_ml_media_list_t * res;
2034
2035 if (vlc_ml_list(p_ml, VLC_ML_LIST_FOLDER_MEDIA, params, i_folder_id, &res) != VLC_SUCCESS)
2036 return NULL;
2037
2038 return res;
2039}
2040
2041static inline size_t vlc_ml_count_folder_media(vlc_medialibrary_t * p_ml,
2043 int64_t i_folder_id)
2044{
2045 vlc_assert(p_ml != NULL);
2046
2047 size_t count;
2048
2049 if (vlc_ml_list(p_ml, VLC_ML_COUNT_FOLDER_MEDIA, params, i_folder_id, &count) != VLC_SUCCESS)
2050 return 0;
2051
2052 return count;
2053}
2054
2055static inline int vlc_ml_folder_set_favorite( vlc_medialibrary_t* p_ml, const char* psz_mrl, bool b_favorite )
2057 return vlc_ml_control( p_ml, VLC_ML_FOLDER_SET_FAVORITE, psz_mrl, (int)b_favorite );
2058}
2059
2060static inline int vlc_ml_artist_set_favorite( vlc_medialibrary_t* p_ml, int64_t i_artist_id, bool b_favorite )
2062 return vlc_ml_control( p_ml, VLC_ML_ARTIST_SET_FAVORITE, i_artist_id, (int)b_favorite );
2063}
2064
2065static inline int vlc_ml_album_set_favorite( vlc_medialibrary_t* p_ml, int64_t i_album_id, bool b_favorite )
2067 return vlc_ml_control( p_ml, VLC_ML_ALBUM_SET_FAVORITE, i_album_id, (int)b_favorite );
2068}
2069
2070static inline int vlc_ml_genre_set_favorite( vlc_medialibrary_t* p_ml, int64_t i_genre_id, bool b_favorite )
2072 return vlc_ml_control( p_ml, VLC_ML_GENRE_SET_FAVORITE, i_genre_id, (int)b_favorite );
2073}
2074
2075static inline int vlc_ml_playlist_set_favorite( vlc_medialibrary_t *p_ml, int64_t i_playlist_id, bool b_favorite )
2077 return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_SET_FAVORITE, i_playlist_id, (int)b_favorite );
2078}
2079
2080//-------------------------------------------------------------------------------------------------
2081// Favorites
2082
2085 vlc_assert( p_ml != NULL );
2087 if ( vlc_ml_list( p_ml, VLC_ML_LIST_FAVORITE_MEDIA, params, &res ) != VLC_SUCCESS )
2088 return NULL;
2089 return res;
2090}
2091
2092static inline size_t vlc_ml_count_favorite_media( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
2094 vlc_assert( p_ml != NULL );
2095 size_t count;
2096 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_FAVORITE_MEDIA, params, &count ) != VLC_SUCCESS )
2097 return 0;
2098 return count;
2099}
2100
2103 vlc_assert( p_ml != NULL );
2105 if ( vlc_ml_list( p_ml, VLC_ML_LIST_FAVORITE_VIDEOS, params, &res ) != VLC_SUCCESS )
2106 return NULL;
2107 return res;
2108}
2109
2110static inline size_t vlc_ml_count_favorite_videos( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
2112 vlc_assert( p_ml != NULL );
2113 size_t count;
2114 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_FAVORITE_VIDEOS, params, &count ) != VLC_SUCCESS )
2115 return 0;
2116 return count;
2117}
2118
2121 vlc_assert( p_ml != NULL );
2123 if ( vlc_ml_list( p_ml, VLC_ML_LIST_FAVORITE_AUDIOS, params, &res ) != VLC_SUCCESS )
2124 return NULL;
2125 return res;
2126}
2127
2128static inline size_t vlc_ml_count_favorite_audios( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
2130 vlc_assert( p_ml != NULL );
2131 size_t count;
2132 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_FAVORITE_AUDIOS, params, &count ) != VLC_SUCCESS )
2133 return 0;
2134 return count;
2135}
2136
2139 vlc_assert( p_ml != NULL );
2141 if ( vlc_ml_list( p_ml, VLC_ML_LIST_FAVORITE_ALBUMS, params, &res ) != VLC_SUCCESS )
2142 return NULL;
2143 return res;
2144}
2145
2146static inline size_t vlc_ml_count_favorite_albums( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
2148 vlc_assert( p_ml != NULL );
2149 size_t count;
2150 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_FAVORITE_ALBUMS, params, &count ) != VLC_SUCCESS )
2151 return 0;
2152 return count;
2153}
2154
2157 vlc_assert( p_ml != NULL );
2159 if ( vlc_ml_list( p_ml, VLC_ML_LIST_FAVORITE_ARTISTS, params, &res ) != VLC_SUCCESS )
2160 return NULL;
2161 return res;
2162}
2163
2164static inline size_t vlc_ml_count_favorite_artists( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
2166 vlc_assert( p_ml != NULL );
2167 size_t count;
2168 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_FAVORITE_ARTISTS, params, &count ) != VLC_SUCCESS )
2169 return 0;
2170 return count;
2171}
2172
2175 vlc_assert( p_ml != NULL );
2177 if ( vlc_ml_list( p_ml, VLC_ML_LIST_FAVORITE_GENRES, params, &res ) != VLC_SUCCESS )
2178 return NULL;
2179 return res;
2180}
2181
2182static inline size_t vlc_ml_count_favorite_genres( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
2184 vlc_assert( p_ml != NULL );
2185 size_t count;
2186 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_FAVORITE_GENRES, params, &count ) != VLC_SUCCESS )
2187 return 0;
2188 return count;
2189}
2190
2193 vlc_assert( p_ml != NULL );
2195 if ( vlc_ml_list( p_ml, VLC_ML_LIST_FAVORITE_PLAYLISTS, params, &res ) != VLC_SUCCESS )
2196 return NULL;
2197 return res;
2198}
2199
2200static inline size_t vlc_ml_count_favorite_playlists( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
2202 vlc_assert( p_ml != NULL );
2203 size_t count;
2205 return 0;
2206 return count;
2207}
2208
2211 vlc_assert( p_ml != NULL );
2213 if ( vlc_ml_list( p_ml, VLC_ML_LIST_FAVORITE_FOLDERS, params, &res ) != VLC_SUCCESS )
2214 return NULL;
2215 return res;
2216}
2217
2218static inline size_t vlc_ml_count_favorite_folders( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
2220 vlc_assert( p_ml != NULL );
2221 size_t count;
2222 if ( vlc_ml_list( p_ml, VLC_ML_COUNT_FAVORITE_FOLDERS, params, &count ) != VLC_SUCCESS )
2223 return 0;
2224 return count;
2225}
2226
2227#ifdef __cplusplus
2228}
2229#endif /* C++ */
2230
2231#ifndef __cplusplus
2232# define vlc_ml_release( OBJ ) _Generic( ( OBJ ), \
2233 vlc_ml_show_t*: vlc_ml_show_release, \
2234 vlc_ml_artist_t*: vlc_ml_artist_release, \
2235 vlc_ml_album_t*: vlc_ml_album_release, \
2236 vlc_ml_genre_t*: vlc_ml_genre_release, \
2237 vlc_ml_media_t*: vlc_ml_media_release, \
2238 vlc_ml_group_t*: vlc_ml_group_release, \
2239 vlc_ml_folder_t*: vlc_ml_folder_release, \
2240 vlc_ml_playlist_t*: vlc_ml_playlist_release, \
2241 vlc_ml_label_list_t*: vlc_ml_label_list_release, \
2242 vlc_ml_file_list_t*: vlc_ml_file_list_release, \
2243 vlc_ml_artist_list_t*: vlc_ml_artist_list_release, \
2244 vlc_ml_media_list_t*: vlc_ml_media_list_release, \
2245 vlc_ml_album_list_t*: vlc_ml_album_list_release, \
2246 vlc_ml_show_list_t*: vlc_ml_show_list_release, \
2247 vlc_ml_genre_list_t*: vlc_ml_genre_list_release, \
2248 vlc_ml_group_list_t*: vlc_ml_group_list_release, \
2249 vlc_ml_playlist_list_t*: vlc_ml_playlist_list_release, \
2250 vlc_ml_folder_list_t*: vlc_ml_folder_list_release, \
2251 vlc_ml_playback_states_all*: vlc_ml_playback_states_all_release, \
2252 vlc_ml_bookmark_t*: vlc_ml_bookmark_release, \
2253 vlc_ml_bookmark_list_t*: vlc_ml_bookmark_list_release \
2254 )( OBJ )
2255#else
2256static inline void vlc_ml_release( vlc_ml_show_t* show ) { vlc_ml_show_release( show ); }
2257static inline void vlc_ml_release( vlc_ml_artist_t* artist ) { vlc_ml_artist_release( artist ); }
2258static inline void vlc_ml_release( vlc_ml_album_t* album ) { vlc_ml_album_release( album ); }
2259static inline void vlc_ml_release( vlc_ml_genre_t* genre ) { vlc_ml_genre_release( genre ); }
2260static inline void vlc_ml_release( vlc_ml_media_t* media ) { vlc_ml_media_release( media ); }
2261static inline void vlc_ml_release( vlc_ml_group_t* group ) { vlc_ml_group_release( group ); }
2262static inline void vlc_ml_release( vlc_ml_folder_t* folder ) { vlc_ml_folder_release( folder ); }
2263static inline void vlc_ml_release( vlc_ml_playlist_t* playlist ) { vlc_ml_playlist_release( playlist ); }
2274static inline void vlc_ml_release( vlc_ml_playback_states_all* prefs ) { vlc_ml_playback_states_all_release( prefs ); }
2275static inline void vlc_ml_release( vlc_ml_bookmark_t* bookmark ) { vlc_ml_bookmark_release( bookmark ); }
2277#endif
2278
2279#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:292
#define VLC_SUCCESS
No error.
Definition vlc_common.h:480
const char name[16]
Definition httpd.c:1299
int i_type
Definition httpd.c:1300
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
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
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
void vlc_ml_label_list_release(vlc_ml_label_list_t *p_list)
Definition medialibrary.c:297
void vlc_ml_folder_release(vlc_ml_folder_t *p_folder)
Definition medialibrary.c:287
void vlc_ml_bookmark_list_release(vlc_ml_bookmark_list_t *list)
Definition medialibrary.c:413
void vlc_ml_event_unregister_callback(vlc_medialibrary_t *p_ml, vlc_ml_event_callback_t *p_cb)
Unregisters a medialibrary callback.
Definition medialibrary.c:81
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
void vlc_ml_bookmark_release(vlc_ml_bookmark_t *bookmark)
Definition medialibrary.c:405
void vlc_ml_album_release(vlc_ml_album_t *p_album)
Definition medialibrary.c:222
void vlc_ml_folder_list_release(vlc_ml_folder_list_t *p_list)
Definition medialibrary.c:379
void vlc_ml_artist_release(vlc_ml_artist_t *p_artist)
Definition medialibrary.c:206
void vlc_ml_genre_release(vlc_ml_genre_t *p_genre)
Definition medialibrary.c:230
void vlc_ml_genre_list_release(vlc_ml_genre_list_t *p_list)
Definition medialibrary.c:352
void vlc_ml_file_list_release(vlc_ml_file_list_t *p_list)
Definition medialibrary.c:306
void vlc_ml_playback_states_all_release(vlc_ml_playback_states_all *prefs)
Definition medialibrary.c:388
void vlc_ml_show_release(vlc_ml_show_t *p_show)
Definition medialibrary.c:149
void vlc_ml_media_release(vlc_ml_media_t *p_media)
Definition medialibrary.c:273
void vlc_ml_group_release(vlc_ml_group_t *p_group)
Definition medialibrary.c:247
void vlc_ml_event_unregister_from_callback(vlc_medialibrary_t *p_ml, vlc_ml_event_callback_t *p_cb)
Unregisters a medialibrary callback from the said callback.
Definition medialibrary.c:90
void vlc_ml_group_list_release(vlc_ml_group_list_t *p_list)
Definition medialibrary.c:361
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:929
void(* pf_send_event)(vlc_medialibrary_module_t *p_ml, const vlc_ml_event_t *p_event)
Definition vlc_media_library.h:930
Definition vlc_media_library.h:934
void * p_sys
Definition vlc_media_library.h:939
struct vlc_object_t obj
Definition vlc_media_library.h:935
int(* pf_control)(struct vlc_medialibrary_module_t *p_ml, int i_query, va_list args)
Definition vlc_media_library.h:941
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:955
const vlc_medialibrary_callbacks_t * cbs
Definition vlc_media_library.h:967
module_t * p_module
Definition vlc_media_library.h:937
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:848
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@100175376127141160340173157165150253025323140073 media_thumbnail_generated
int i_entity_type
One of VLC_ML_PARENT_* values.
Definition vlc_media_library.h:920
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@021004204135231215140000173112007314127354065023 favorites_changed
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@217065062346363235212267374141070225173335117130 parsing_progress
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@264052320206327241365022247214322271331152174142 entry_point_removed
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@147073252051101120151053067224311231353157143030 entry_point_added
bool b_favorite
true if marked as favorite, false if unmarked
Definition vlc_media_library.h:921
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@363067307340246054313132257355226222375117161004 entry_point_unbanned
uint8_t i_percent
Definition vlc_media_library.h:882
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@130114164132321035250016211131040312226156076367 modification
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@225050374156127356274370151172163211243311062303 discovery_progress
int64_t i_entity_id
Definition vlc_media_library.h:897
union vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@313211241134151145372027320102113223046311015364 creation
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@355001171220073316174235133203126001145252163237 entry_point_banned
bool b_success
Definition vlc_media_library.h:863
const vlc_ml_artist_t * p_artist
Definition vlc_media_library.h:887
vlc_ml_history_type_t history_type
Definition vlc_media_library.h:915
const char * psz_entry_point
Definition vlc_media_library.h:854
int i_type
Definition vlc_media_library.h:849
const vlc_ml_album_t * p_album
Definition vlc_media_library.h:888
const vlc_ml_playlist_t * p_playlist
Definition vlc_media_library.h:890
const vlc_ml_folder_t * p_folder
Definition vlc_media_library.h:893
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@017023224344132155271366316175230366143307024251 history_changed
const vlc_ml_genre_t * p_genre
Definition vlc_media_library.h:891
const vlc_ml_media_t * p_media
Definition vlc_media_library.h:886
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@071064352376216071003326156101133121272207311167 deletion
vlc_ml_thumbnail_size_t i_size
Definition vlc_media_library.h:910
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@253044311227016151235357041376033064251021200024 background_idle_changed
bool b_idle
Definition vlc_media_library.h:905
struct vlc_ml_event_t::@262225132235220100104172034025323022137117241363::@047274311144034374177006072217055301103224053014 discovery_failed
const vlc_ml_group_t * p_group
Definition vlc_media_library.h:889
const vlc_ml_bookmark_t * p_bookmark
Definition vlc_media_library.h:892
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
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
struct vlc_ml_media_t::@223150061033020375341076327163323214055264237025::@375336206277203341300173244245245001112300176140 album_track
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
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
uint32_t i_width
Definition vlc_media_library.h:190
struct vlc_ml_media_track_t::@125130102114102261322020345325035072255331216350::@367025101030321355353176030131366053027253175072 a
char * psz_encoding
Definition vlc_media_library.h:199
struct vlc_ml_media_track_t::@125130102114102261322020345325035072255331216350::@132165267102126257156105002345366146052174363255 s
char * psz_description
Definition vlc_media_library.h:175
struct vlc_ml_media_track_t::@125130102114102261322020345325035072255331216350::@354162276346021031266350110371143205224047276165 v
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:700
char * deinterlace
Definition vlc_media_library.h:709
char * current_audio_track
Definition vlc_media_library.h:705
char * current_video_track
Definition vlc_media_library.h:704
float zoom
Definition vlc_media_library.h:702
int current_title
Definition vlc_media_library.h:703
char * aspect_ratio
Definition vlc_media_library.h:707
char * crop
Definition vlc_media_library.h:708
float rate
Definition vlc_media_library.h:701
char * current_subtitle_track
Definition vlc_media_library.h:706
char * video_filter
Definition vlc_media_library.h:710
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:1192
vlc_medialibrary_t * libvlc_MlCreate(libvlc_int_t *p_libvlc)
Definition medialibrary.c:102
static size_t vlc_ml_count_favorite_albums(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2147
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:1764
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:1451
static int vlc_ml_clear_history(vlc_medialibrary_t *p_ml, vlc_ml_history_type_t type)
Definition vlc_media_library.h:1093
static int vlc_ml_playlist_rename(vlc_medialibrary_t *p_ml, int64_t i_playlist_id, const char *name)
Definition vlc_media_library.h:1309
void * vlc_ml_get(vlc_medialibrary_t *p_ml, int i_query,...)
Definition medialibrary.c:422
static size_t vlc_ml_count_movies(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1692
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:1156
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:1959
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:1922
static vlc_ml_media_t * vlc_ml_get_media(vlc_medialibrary_t *p_ml, int64_t i_media_id)
Definition vlc_media_library.h:1316
static vlc_ml_media_t * vlc_ml_new_external_media(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1098
static vlc_ml_artist_list_t * vlc_ml_list_favorite_artists(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2156
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:2076
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:1541
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:1701
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:1737
static vlc_ml_playlist_t * vlc_ml_playlist_create(vlc_medialibrary_t *p_ml, const char *name)
Definition vlc_media_library.h:1254
static int vlc_ml_remove_stream(vlc_medialibrary_t *p_ml, int64_t i_media_id)
Definition vlc_media_library.h:1114
static size_t vlc_ml_count_favorite_genres(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2183
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:2042
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:1773
vlc_ml_control
Definition vlc_media_library.h:601
@ VLC_ML_MEDIA_SET_ALL_MEDIA_PLAYBACK_STATES
arg1: media id; arg2: const vlc_ml_playback_states_all*
Definition vlc_media_library.h:636
@ VLC_ML_RESUME_BACKGROUND
no args; can't fail
Definition vlc_media_library.h:620
@ VLC_ML_MEDIA_UPDATE_BOOKMARK
arg1: media id; arg2: int64_t; arg3: const char*; arg4: const char*
Definition vlc_media_library.h:649
@ VLC_ML_MEDIA_REMOVE_BOOKMARK
arg1: media id; arg2: int64_t
Definition vlc_media_library.h:647
@ 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:655
@ VLC_ML_MEDIA_ADD_BOOKMARK
arg1: media id; arg2: int64_t
Definition vlc_media_library.h:646
@ VLC_ML_NEW_EXTERNAL_MEDIA
arg1: const char*; arg2(out): vlc_ml_media_t**
Definition vlc_media_library.h:626
@ VLC_ML_FOLDER_SET_FAVORITE
arg1: mrl (const char*); arg2: bool; res: can fail
Definition vlc_media_library.h:661
@ VLC_ML_RELOAD_FOLDER
Reload a specific folder, or all.
Definition vlc_media_library.h:613
@ VLC_ML_MEDIA_SET_MEDIA_PLAYBACK_STATE
arg1: media id; arg2: vlc_ml_playback_state; arg3: const char*;
Definition vlc_media_library.h:634
@ VLC_ML_ADD_FOLDER
arg1: mrl (const char*) res: can't fail
Definition vlc_media_library.h:603
@ VLC_ML_MEDIA_SET_TYPE
arg1: media id; arg2: vlc_ml_media_type_t
Definition vlc_media_library.h:641
@ VLC_ML_MEDIA_REMOVE_LABEL
arg1: media id; arg2: label name
Definition vlc_media_library.h:645
@ VLC_ML_PLAYLIST_APPEND
arg1: playlist id; arg2: pointer on media ids; arg3: media ids count; can fail
Definition vlc_media_library.h:654
@ 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:639
@ VLC_ML_ARTIST_SET_FAVORITE
arg1: artist id; arg2: bool; can fail
Definition vlc_media_library.h:662
@ VLC_ML_REMOVE_FOLDER
arg1: mrl (const char*) res: can't fail
Definition vlc_media_library.h:604
@ VLC_ML_SET_FOLDER_PRIVATE
arg1: mrl (const char *); res: can't fail
Definition vlc_media_library.h:616
@ VLC_ML_GENRE_SET_FAVORITE
arg1: genre id; arg2: bool; can fail
Definition vlc_media_library.h:664
@ VLC_ML_MEDIA_GET_ALL_MEDIA_PLAYBACK_STATES
arg1: media id; arg2(out): vlc_ml_playback_states_all*
Definition vlc_media_library.h:635
@ VLC_ML_BAN_FOLDER
arg1: mrl (const char*) res: can't fail
Definition vlc_media_library.h:605
@ VLC_ML_NEW_STREAM
arg1: const char*; arg2(out): vlc_ml_media_t**
Definition vlc_media_library.h:627
@ VLC_ML_MEDIA_GET_MEDIA_PLAYBACK_STATE
arg1: media id; arg2: vlc_ml_playback_state; arg3: char**;
Definition vlc_media_library.h:633
@ VLC_ML_MEDIA_SET_FAVORITE
arg1: media id; arg2: bool
Definition vlc_media_library.h:643
@ VLC_ML_PLAYLIST_MOVE
arg1: playlist id; arg2: from; arg3: to; arg4: count; can fail
Definition vlc_media_library.h:656
@ VLC_ML_PLAYLIST_CREATE
arg1: const char*; arg2(out): vlc_ml_playlist_t**; can fail
Definition vlc_media_library.h:652
@ VLC_ML_MEDIA_ADD_LABEL
arg1: media id; arg2: label name
Definition vlc_media_library.h:644
@ VLC_ML_SET_FOLDER_PUBLIC
arg1: mrl (const char *); res: can't fail
Definition vlc_media_library.h:615
@ VLC_ML_UNBAN_FOLDER
arg1: mrl (const char*) res: can't fail
Definition vlc_media_library.h:606
@ VLC_ML_PAUSE_BACKGROUND
no args; can't fail
Definition vlc_media_library.h:619
@ VLC_ML_ALBUM_SET_FAVORITE
arg1: album id; arg2: bool; can fail
Definition vlc_media_library.h:663
@ VLC_ML_PLAYLIST_DELETE
arg1: playlist id; can fail
Definition vlc_media_library.h:653
@ VLC_ML_MEDIA_SET_GENRE_THUMBNAIL
arg1: media id; arg2: const char*; arg3: vlc_ml_thumbnail_size_t
Definition vlc_media_library.h:638
@ VLC_ML_PLAYLIST_SET_FAVORITE
arg1: playlist id; arg2: bool; can fail
Definition vlc_media_library.h:665
@ VLC_ML_CLEAR_HISTORY
arg1: vlc_ml_history_type_t; can't fail
Definition vlc_media_library.h:623
@ VLC_ML_MEDIA_SET_PLAYED
arg1: media id; arg2: bool
Definition vlc_media_library.h:642
@ VLC_ML_MEDIA_SET_THUMBNAIL
arg1: media id; arg2: const char*; arg3: vlc_ml_thumbnail_size_t
Definition vlc_media_library.h:637
@ VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS
arg1: media id
Definition vlc_media_library.h:648
@ VLC_ML_MEDIA_ADD_EXTERNAL_MRL
arg1: media id; arg2: const char*; arg3: type(vlc_ml_file_type_t)
Definition vlc_media_library.h:640
@ VLC_ML_REMOVE_STREAM
Definition vlc_media_library.h:629
@ VLC_ML_PLAYLIST_REMOVE
arg1: playlist id; arg2: position; arg3: count; can fail
Definition vlc_media_library.h:657
@ VLC_ML_MEDIA_UPDATE_PROGRESS
arg1: media id; arg2: playback position; can fail
Definition vlc_media_library.h:632
@ VLC_ML_IS_INDEXED
arg1: mrl (const char*) arg2 (out): bool*; res: can fail
Definition vlc_media_library.h:607
@ VLC_ML_PLAYLIST_RENAME
arg1: playlist id; arg2: const char*; can fail
Definition vlc_media_library.h:658
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:2061
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:1073
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:1327
static int vlc_ml_media_add_label(vlc_medialibrary_t *p_ml, int64_t i_media_id, const char *psz_label)
Definition vlc_media_library.h:1119
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:1904
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:2066
static int vlc_ml_reload_folder(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1068
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:1800
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:1149
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:1338
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:1373
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:1469
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:1791
static size_t vlc_ml_count_genres(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1640
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:1656
void(* vlc_ml_callback_t)(void *p_data, const vlc_ml_event_t *p_event)
Definition vlc_media_library.h:926
static int vlc_ml_folder_set_favorite(vlc_medialibrary_t *p_ml, const char *psz_mrl, bool b_favorite)
Definition vlc_media_library.h:2056
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:1550
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:1755
static int vlc_ml_remove_folder(vlc_medialibrary_t *p_ml, const char *psz_folder)
Definition vlc_media_library.h:1047
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:2028
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:1895
#define vlc_ml_instance_get(x)
Definition vlc_media_library.h:974
vlc_ml_event_type
Definition vlc_media_library.h:714
@ VLC_ML_EVENT_ARTIST_UPDATED
Definition vlc_media_library.h:728
@ VLC_ML_EVENT_BOOKMARKS_ADDED
Definition vlc_media_library.h:742
@ VLC_ML_EVENT_RESCAN_STARTED
Sent when an application requested rescan starts being processed.
Definition vlc_media_library.h:838
@ VLC_ML_EVENT_ALBUM_ADDED
Definition vlc_media_library.h:730
@ VLC_ML_EVENT_DISCOVERY_PROGRESS
Sent when a discovery or reload operation starts analyzing a new folder.
Definition vlc_media_library.h:764
@ VLC_ML_EVENT_BACKGROUND_IDLE_CHANGED
Sent when a discoverer or parser threads changes its idle state.
Definition vlc_media_library.h:812
@ VLC_ML_EVENT_BOOKMARKS_DELETED
Definition vlc_media_library.h:744
@ VLC_ML_EVENT_FOLDER_DELETED
Definition vlc_media_library.h:747
@ VLC_ML_EVENT_MEDIA_UPDATED
Definition vlc_media_library.h:725
@ VLC_ML_EVENT_ENTRY_POINT_ADDED
Sent when a new entry point gets added to the database.
Definition vlc_media_library.h:784
@ VLC_ML_EVENT_PLAYLIST_ADDED
Definition vlc_media_library.h:736
@ VLC_ML_EVENT_DISCOVERY_STARTED
A discovery started.
Definition vlc_media_library.h:758
@ VLC_ML_EVENT_MEDIA_THUMBNAIL_GENERATED
Sent after a media thumbnail was generated, or if it's generation failed.
Definition vlc_media_library.h:827
@ VLC_ML_EVENT_GENRE_UPDATED
Definition vlc_media_library.h:740
@ VLC_ML_EVENT_ENTRY_POINT_REMOVED
Sent when an entry point removal request has been processed.
Definition vlc_media_library.h:791
@ VLC_ML_EVENT_HISTORY_CHANGED
Sent after the history gets changed.
Definition vlc_media_library.h:834
@ VLC_ML_EVENT_ENTRY_POINT_BANNED
Sent when an entry point ban request has been processed.
Definition vlc_media_library.h:798
@ VLC_ML_EVENT_GROUP_DELETED
Definition vlc_media_library.h:735
@ VLC_ML_EVENT_GROUP_ADDED
Definition vlc_media_library.h:733
@ VLC_ML_EVENT_GENRE_DELETED
Definition vlc_media_library.h:741
@ VLC_ML_EVENT_GENRE_ADDED
Definition vlc_media_library.h:739
@ VLC_ML_EVENT_ENTRY_POINT_UNBANNED
Sent when an entry point unban request has been processed.
Definition vlc_media_library.h:805
@ VLC_ML_EVENT_ALBUM_DELETED
Definition vlc_media_library.h:732
@ VLC_ML_EVENT_MEDIA_ADDED
Entity modification callbacks.
Definition vlc_media_library.h:724
@ VLC_ML_EVENT_DISCOVERY_FAILED
This event is sent when a discovery failed.
Definition vlc_media_library.h:774
@ VLC_ML_EVENT_ARTIST_DELETED
Definition vlc_media_library.h:729
@ VLC_ML_EVENT_BOOKMARKS_UPDATED
Definition vlc_media_library.h:743
@ VLC_ML_EVENT_PLAYLIST_DELETED
Definition vlc_media_library.h:738
@ VLC_ML_EVENT_FOLDER_ADDED
Definition vlc_media_library.h:745
@ VLC_ML_EVENT_PARSING_PROGRESS_UPDATED
Sent when the parsing progress percentage gets updated.
Definition vlc_media_library.h:820
@ VLC_ML_EVENT_ALBUM_UPDATED
Definition vlc_media_library.h:731
@ VLC_ML_EVENT_ARTIST_ADDED
Definition vlc_media_library.h:727
@ VLC_ML_EVENT_FOLDER_UPDATED
Definition vlc_media_library.h:746
@ VLC_ML_EVENT_FAVORITES_CHANGED
Sent when favorites list changes.
Definition vlc_media_library.h:844
@ VLC_ML_EVENT_PLAYLIST_UPDATED
Definition vlc_media_library.h:737
@ VLC_ML_EVENT_DISCOVERY_COMPLETED
Sent when all queued discovery operations are done being processed.
Definition vlc_media_library.h:768
@ VLC_ML_EVENT_GROUP_UPDATED
Definition vlc_media_library.h:734
@ VLC_ML_EVENT_MEDIA_DELETED
Definition vlc_media_library.h:726
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:1421
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:1728
static vlc_ml_media_list_t * vlc_ml_list_movies(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1683
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:1913
static vlc_ml_query_params_t vlc_ml_query_params_create(void)
Definition vlc_media_library.h:1031
static int vlc_ml_media_update_progress(vlc_medialibrary_t *p_ml, int64_t i_media_id, double progress)
Definition vlc_media_library.h:1133
static vlc_ml_artist_t * vlc_ml_get_artist(vlc_medialibrary_t *p_ml, int64_t i_artist_id)
Definition vlc_media_library.h:1343
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:1971
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:1496
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:1827
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:1198
static size_t vlc_ml_count_favorite_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2093
static int vlc_ml_set_folder_private(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1078
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:1875
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:1406
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:1186
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:1782
static vlc_ml_playlist_list_t * vlc_ml_list_favorite_playlists(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2192
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:1665
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:1144
static int vlc_ml_ban_folder(vlc_medialibrary_t *p_ml, const char *psz_folder)
Definition vlc_media_library.h:1052
int vlc_ml_list(vlc_medialibrary_t *p_ml, int i_query, const vlc_ml_query_params_t *p_params,...)
Definition medialibrary.c:441
static size_t vlc_ml_count_favorite_videos(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2111
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_FAVORITE_ALBUMS
arg1 (out): vlc_ml_album_list_t**
Definition vlc_media_library.h:564
@ VLC_ML_LIST_FAVORITE_AUDIOS
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:562
@ 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:512
@ VLC_ML_LIST_ARTIST_ALBUMS
arg1: The artist id.
Definition vlc_media_library.h:521
@ VLC_ML_LIST_FAVORITE_MEDIA
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:558
@ VLC_ML_LIST_SHOW_EPISODES
arg1: show id; arg2(out): vlc_ml_media_list_t**
Definition vlc_media_library.h:535
@ VLC_ML_LIST_ALBUMS
arg1 (out): vlc_ml_album_list_t**
Definition vlc_media_library.h:489
@ VLC_ML_LIST_ENTRY_POINTS
arg1 bool: list_banned; arg2 (out): vlc_ml_folder_list_t**
Definition vlc_media_library.h:507
@ VLC_ML_LIST_GROUPS
arg1 (out): vlc_ml_group_list_t**
Definition vlc_media_library.h:497
@ VLC_ML_LIST_FOLDER_MEDIA
arg1: folder id; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:554
@ VLC_ML_COUNT_FAVORITE_VIDEOS
arg1 (out): size_t*
Definition vlc_media_library.h:561
@ VLC_ML_COUNT_MOVIES
arg1 (out): size_t*
Definition vlc_media_library.h:486
@ VLC_ML_COUNT_PLAYLIST_MEDIA
arg1: playlist id; arg2 (out): size_t*
Definition vlc_media_library.h:549
@ VLC_ML_LIST_GENRE_ARTISTS
arg1: genre id; arg2 (out): vlc_ml_artist_list_t**
Definition vlc_media_library.h:527
@ VLC_ML_COUNT_GENRES
arg1 (out): size_t*
Definition vlc_media_library.h:492
@ VLC_ML_COUNT_SHOWS
arg1 (out): size_t*
Definition vlc_media_library.h:496
@ VLC_ML_LIST_ALBUMS_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): ml_album_list_t**
Definition vlc_media_library.h:584
@ VLC_ML_LIST_MEDIA_BOOKMARKS
arg1: media id; arg2 (out): vlc_ml_bookmark_list_t**
Definition vlc_media_library.h:541
@ VLC_ML_LIST_PLAYLISTS
arg1 (out): vlc_ml_playlist_list_t**
Definition vlc_media_library.h:499
@ VLC_ML_LIST_ARTISTS_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): ml_artist_list_t**
Definition vlc_media_library.h:582
@ VLC_ML_LIST_AUDIOS
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:487
@ VLC_ML_COUNT_SHOW_EPISODES
arg1: show id; arg2(out): size_t*
Definition vlc_media_library.h:536
@ VLC_ML_LIST_FAVORITE_GENRES
arg1 (out): vlc_ml_genre_list_t**
Definition vlc_media_library.h:568
@ VLC_ML_COUNT_FAVORITE_MEDIA
arg1 (out): size_t*
Definition vlc_media_library.h:559
@ VLC_ML_LIST_SUBFOLDERS
arg1: parent id; arg2 (out): vlc_ml_folder_list_t**
Definition vlc_media_library.h:552
@ VLC_ML_LIST_FAVORITE_FOLDERS
arg1 (out): vlc_ml_folder_list_t**
Definition vlc_media_library.h:572
@ VLC_ML_LIST_ARTISTS
arg1 bool: includeAll; arg2 (out): vlc_ml_genre_list_t**
Definition vlc_media_library.h:493
@ VLC_ML_COUNT_ARTISTS_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:583
@ VLC_ML_COUNT_ARTIST_ALBUMS
arg1: The artist id.
Definition vlc_media_library.h:522
@ VLC_ML_LIST_AUDIO_HISTORY
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:505
@ VLC_ML_COUNT_MEDIA_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:577
@ VLC_ML_COUNT_FAVORITE_GENRES
arg1 (out): size_t*
Definition vlc_media_library.h:569
@ VLC_ML_COUNT_GENRE_TRACKS
arg1: genre id; arg2 (out): size_t*
Definition vlc_media_library.h:530
@ VLC_ML_COUNT_ARTIST_TRACKS
arg1: The artist id.
Definition vlc_media_library.h:524
@ VLC_ML_LIST_GENRE_TRACKS
arg1: genre id; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:529
@ VLC_ML_COUNT_ALBUM_ARTISTS
arg1: The album id.
Definition vlc_media_library.h:518
@ VLC_ML_LIST_MEDIA_LABELS
arg1: media id; arg2 (out): vlc_ml_label_list_t**
Definition vlc_media_library.h:539
@ VLC_ML_COUNT_AUDIOS
arg1 (out): size_t*
Definition vlc_media_library.h:488
@ VLC_ML_COUNT_SUBFOLDERS
arg1: parent id; arg2 (out): size_t*
Definition vlc_media_library.h:553
@ VLC_ML_LIST_HISTORY
arg1 vlc_ml_history_type_t; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:501
@ VLC_ML_COUNT_ARTISTS
arg1 bool: includeAll; arg2 (out): size_t*
Definition vlc_media_library.h:494
@ VLC_ML_LIST_GENRE_ALBUMS
arg1: genre id; arg2 (out): vlc_ml_album_list_t**
Definition vlc_media_library.h:531
@ VLC_ML_COUNT_ALBUMS_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:585
@ VLC_ML_COUNT_GENRE_ALBUMS
arg1: genre id; arg2 (out): size_t*
Definition vlc_media_library.h:532
@ VLC_ML_COUNT_MEDIA_LABELS
arg1: media id; arg2 (out): size_t*
Definition vlc_media_library.h:540
@ VLC_ML_COUNT_FAVORITE_ARTISTS
arg1 (out): size_t*
Definition vlc_media_library.h:567
@ VLC_ML_LIST_GROUP_MEDIA
arg1: playlist id; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:544
@ VLC_ML_COUNT_VIDEO_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:579
@ VLC_ML_LIST_VIDEO_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:578
@ VLC_ML_LIST_FAVORITE_PLAYLISTS
arg1 (out): vlc_ml_playlist_list_t**
Definition vlc_media_library.h:570
@ VLC_ML_LIST_PLAYLIST_MEDIA
arg1: playlist id; arg2 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:548
@ VLC_ML_LIST_FOLDERS
arg1 (out): vlc_ml_folder_list_t**
Definition vlc_media_library.h:509
@ VLC_ML_COUNT_GROUP_MEDIA
arg1: playlist id; arg2 (out): size_t*
Definition vlc_media_library.h:545
@ 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_MOVIES
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:485
@ VLC_ML_COUNT_FAVORITE_ALBUMS
arg1 (out): size_t*
Definition vlc_media_library.h:565
@ VLC_ML_LIST_SHOWS
arg1 (out): vlc_ml_show_list_t**
Definition vlc_media_library.h:495
@ VLC_ML_LIST_FAVORITE_VIDEOS
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:560
@ VLC_ML_COUNT_FOLDER_MEDIA
arg1: folder id; arg2 (out): size_t*
Definition vlc_media_library.h:555
@ VLC_ML_COUNT_AUDIO_HISTORY
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:506
@ VLC_ML_COUNT_FOLDERS
arg1 (out): size_t*
Definition vlc_media_library.h:510
@ VLC_ML_LIST_AUDIO_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:580
@ VLC_ML_COUNT_ENTRY_POINTS
arg1 bool: list_banned; arg2 (out): size_t*
Definition vlc_media_library.h:508
@ VLC_ML_LIST_GENRES
arg1 (out): vlc_ml_genre_list_t**
Definition vlc_media_library.h:491
@ VLC_ML_LIST_ALBUM_TRACKS
arg1: The album id.
Definition vlc_media_library.h:515
@ VLC_ML_COUNT_ALBUMS
arg1 (out): size_t*
Definition vlc_media_library.h:490
@ VLC_ML_LIST_FOLDERS_BY_TYPE
arg1 vlc_ml_media_type_t: the media type.
Definition vlc_media_library.h:511
@ VLC_ML_COUNT_AUDIO_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): size_t*
Definition vlc_media_library.h:581
@ VLC_ML_LIST_FAVORITE_ARTISTS
arg1 (out): vlc_ml_artist_list_t**
Definition vlc_media_library.h:566
@ VLC_ML_COUNT_VIDEO_HISTORY
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:504
@ VLC_ML_LIST_ARTIST_TRACKS
arg1: The artist id.
Definition vlc_media_library.h:523
@ VLC_ML_COUNT_ALBUM_TRACKS
arg1: The album id.
Definition vlc_media_library.h:516
@ VLC_ML_COUNT_FAVORITE_FOLDERS
arg1 (out): size_t*
Definition vlc_media_library.h:573
@ 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:502
@ VLC_ML_LIST_VIDEO_HISTORY
arg1 (out): vlc_ml_media_list_t**
Definition vlc_media_library.h:503
@ VLC_ML_COUNT_PLAYLISTS
arg1 (out): size_t*
Definition vlc_media_library.h:500
@ VLC_ML_COUNT_FAVORITE_PLAYLISTS
arg1 (out): size_t*
Definition vlc_media_library.h:571
@ VLC_ML_COUNT_GROUPS
arg1 (out): size_t*
Definition vlc_media_library.h:498
@ VLC_ML_LIST_ALBUM_ARTISTS
arg1: The album id.
Definition vlc_media_library.h:517
@ VLC_ML_COUNT_GENRE_ARTISTS
arg1: genre id; arg2 (out): size_t*
Definition vlc_media_library.h:528
@ VLC_ML_LIST_MEDIA_OF
arg1: parent entity type; arg2: parent entity id; arg3(out): ml_media_list_t**
Definition vlc_media_library.h:576
@ VLC_ML_COUNT_FAVORITE_AUDIOS
arg1 (out): size_t*
Definition vlc_media_library.h:563
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:1940
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:1237
#define vlc_ml_release(OBJ)
Definition vlc_media_library.h:2233
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:1436
static vlc_ml_genre_t * vlc_ml_get_genre(vlc_medialibrary_t *p_ml, int64_t i_genre_id)
Definition vlc_media_library.h:1348
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:1836
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:1301
vlc_ml_playback_state
User playback settings.
Definition vlc_media_library.h:679
@ VLC_ML_PLAYBACK_STATE_PROGRAM
Definition vlc_media_library.h:684
@ VLC_ML_PLAYBACK_STATE_TITLE
Definition vlc_media_library.h:682
@ VLC_ML_PLAYBACK_STATE_DEINTERLACE
Definition vlc_media_library.h:689
@ VLC_ML_PLAYBACK_STATE_SPEED
Definition vlc_media_library.h:681
@ VLC_ML_PLAYBACK_STATE_VIDEO_FILTER
Definition vlc_media_library.h:690
@ VLC_ML_PLAYBACK_STATE_AUDIO_DELAY
Definition vlc_media_library.h:693
@ VLC_ML_PLAYBACK_STATE_SUBTITLE_DELAY
Definition vlc_media_library.h:695
@ VLC_ML_PLAYBACK_STATE_RATING
Definition vlc_media_library.h:680
@ VLC_ML_PLAYBACK_STATE_APP_SPECIFIC
Definition vlc_media_library.h:696
@ VLC_ML_PLAYBACK_STATE_ASPECT_RATIO
Definition vlc_media_library.h:686
@ VLC_ML_PLAYBACK_STATE_SUBTITLE_TRACK
Definition vlc_media_library.h:694
@ VLC_ML_PLAYBACK_STATE_GAIN
Definition vlc_media_library.h:692
@ VLC_ML_PLAYBACK_STATE_AUDIO_TRACK
Definition vlc_media_library.h:691
@ VLC_ML_PLAYBACK_STATE_CROP
Definition vlc_media_library.h:688
@ VLC_ML_PLAYBACK_STATE_CHAPTER
Definition vlc_media_library.h:683
@ VLC_ML_PLAYBACK_STATE_VIDEO_TRACK
Definition vlc_media_library.h:685
@ VLC_ML_PLAYBACK_STATE_ZOOM
Definition vlc_media_library.h:687
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:1950
static int vlc_ml_resume_background(vlc_medialibrary_t *p_ml)
Definition vlc_media_library.h:1088
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:1931
void vlc_ml_album_release(vlc_ml_album_t *p_album)
Definition medialibrary.c:222
static int vlc_ml_media_remove_label(vlc_medialibrary_t *p_ml, int64_t i_media_id, const char *psz_label)
Definition vlc_media_library.h:1126
static vlc_ml_show_t * vlc_ml_get_show(vlc_medialibrary_t *p_ml, int64_t i_show_id)
Definition vlc_media_library.h:1353
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:1275
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:1283
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:1211
void vlc_ml_artist_release(vlc_ml_artist_t *p_artist)
Definition medialibrary.c:206
static size_t vlc_ml_count_favorite_artists(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2165
static vlc_ml_folder_t * vlc_ml_get_folder(vlc_medialibrary_t *p_ml, int64_t i_folder_id)
Definition vlc_media_library.h:1363
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:1845
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:1809
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:1204
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:1487
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:1631
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:1998
void vlc_ml_bookmark_list_release(vlc_ml_bookmark_list_t *p_list)
Definition medialibrary.c:413
static size_t vlc_ml_count_favorite_audios(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2129
static vlc_ml_group_t * vlc_ml_get_group(vlc_medialibrary_t *p_ml, int64_t i_group_id)
Definition vlc_media_library.h:1358
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:1559
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:1230
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:1710
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:1884
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:1163
static vlc_ml_media_t * vlc_ml_new_stream(vlc_medialibrary_t *p_ml, const char *psz_mrl)
Definition vlc_media_library.h:1106
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:1391
static vlc_ml_genre_list_t * vlc_ml_list_favorite_genres(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2174
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:2071
static int vlc_ml_media_remove_all_bookmarks(vlc_medialibrary_t *p_ml, int64_t i_media_id)
Definition vlc_media_library.h:1247
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:2012
static int vlc_ml_is_indexed(vlc_medialibrary_t *p_ml, const char *psz_mrl, bool *p_res)
Definition vlc_media_library.h:1062
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:1613
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:1514
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:1577
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:1368
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:1719
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:1505
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:1292
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:1857
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:1332
static size_t vlc_ml_count_favorite_playlists(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2201
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:1139
static int vlc_ml_pause_background(vlc_medialibrary_t *p_ml)
Definition vlc_media_library.h:1083
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:1818
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:1176
static vlc_ml_media_list_t * vlc_ml_list_favorite_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2084
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:1674
static int vlc_ml_playlist_delete(vlc_medialibrary_t *p_ml, int64_t i_playlist_id)
Definition vlc_media_library.h:1267
static int vlc_ml_unban_folder(vlc_medialibrary_t *p_ml, const char *psz_folder)
Definition vlc_media_library.h:1057
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:1223
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:1478
void vlc_ml_show_release(vlc_ml_show_t *p_show)
Definition medialibrary.c:149
static vlc_ml_folder_list_t * vlc_ml_list_favorite_folders(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2210
static size_t vlc_ml_count_favorite_folders(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2219
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:1532
static size_t vlc_ml_count_albums(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1622
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:1604
static int vlc_ml_add_folder(vlc_medialibrary_t *p_ml, const char *psz_folder)
Definition vlc_media_library.h:1042
static size_t vlc_ml_count_groups(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1866
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:1460
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:1746
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:1169
static vlc_ml_album_list_t * vlc_ml_list_favorite_albums(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2138
static vlc_ml_media_list_t * vlc_ml_list_favorite_videos(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2102
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:1382
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:1595
static vlc_ml_media_list_t * vlc_ml_list_favorite_audios(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:2120
static size_t vlc_ml_count_media(vlc_medialibrary_t *p_ml, const vlc_ml_query_params_t *params)
Definition vlc_media_library.h:1568
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:1523
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:1586
vlc_ml_parent_type
Definition vlc_media_library.h:589
@ VLC_ML_PARENT_ARTIST
Definition vlc_media_library.h:592
@ VLC_ML_PARENT_ALBUM
Definition vlc_media_library.h:591
@ VLC_ML_PARENT_GROUP
Definition vlc_media_library.h:595
@ VLC_ML_PARENT_FOLDER
Definition vlc_media_library.h:596
@ VLC_ML_PARENT_UNKNOWN
Definition vlc_media_library.h:590
@ VLC_ML_PARENT_PLAYLIST
Definition vlc_media_library.h:597
@ VLC_ML_PARENT_SHOW
Definition vlc_media_library.h:593
@ VLC_ML_PARENT_GENRE
Definition vlc_media_library.h:594
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:1984
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:1321
char psz_label[13]
Definition vout_intf.c:100
char psz_value[8]
Definition vout_intf.c:110