+ vlc_dictionary_t tags; /* To be merged with core's meta soon */
+ struct libvlc_media_list_t *p_subitems; /* A media descriptor can have
+ * Sub item */
+ void *p_user_data; /* Allows for VLC.framework to hook into media descriptor without creating a new VLCMedia object. */
+};
+
+struct libvlc_tag_query_t
+{
+ struct libvlc_instance_t *p_libvlc_instance; /* Parent instance */
+ int i_refcount;
+ libvlc_tag_t tag;
+ char * psz_tag_key;
+};
+
+struct libvlc_media_list_t
+{
+ libvlc_event_manager_t * p_event_manager;
+ libvlc_instance_t * p_libvlc_instance;
+ int i_refcount;
+ vlc_mutex_t object_lock;
+ libvlc_media_descriptor_t * p_md; /* The media_descriptor from which the
+ * mlist comes, if any. */
+ vlc_array_t items;
+
+ /* Other way to see that media list */
+ /* Used in flat_media_list.c */
+ libvlc_media_list_t * p_flat_mlist;
+};
+
+typedef void (*libvlc_media_list_view_release_func_t)( libvlc_media_list_view_t * p_mlv ) ;
+
+typedef int (*libvlc_media_list_view_count_func_t)( struct libvlc_media_list_view_t * p_mlv,
+ libvlc_exception_t * ) ;
+
+typedef libvlc_media_descriptor_t *
+ (*libvlc_media_list_view_item_at_index_func_t)(
+ struct libvlc_media_list_view_t * p_mlv,
+ int index,
+ libvlc_exception_t * ) ;
+
+/* A way to see a media list */
+struct libvlc_media_list_view_t
+{
+ libvlc_event_manager_t * p_event_manager;
+ libvlc_instance_t * p_libvlc_instance;
+ int i_refcount;
+ vlc_mutex_t object_lock;
+
+ libvlc_media_list_t * p_mlist;
+
+ struct libvlc_media_list_view_private_t * p_this_view_data;
+
+ /* Accessors */
+ libvlc_media_list_view_count_func_t pf_count;
+ libvlc_media_list_view_item_at_index_func_t pf_item_at_index;
+
+ libvlc_media_list_view_release_func_t pf_release;
+
+ /* Notification callback */
+ void (*pf_ml_item_added)(const libvlc_event_t *, void *);
+ void (*pf_ml_item_removed)(const libvlc_event_t *, void *);
+};
+
+struct libvlc_dynamic_media_list_t
+{
+ libvlc_instance_t * p_libvlc_instance;
+ int i_refcount;
+ libvlc_media_list_t * p_media_provider;
+ libvlc_tag_query_t * p_query;
+ char * psz_tag_key;
+ libvlc_tag_t tag;
+ struct libvlc_media_list_t * p_mlist;
+ struct libvlc_media_list_t * p_provider;