libvlc_media_list.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:8k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * libvlc_media_list.h:  libvlc_media_list API
  3.  *****************************************************************************
  4.  * Copyright (C) 1998-2008 the VideoLAN team
  5.  * $Id: b9cc188e1e627e9cee7fd0fe708487b7220254a7 $
  6.  *
  7.  * Authors: Pierre d'Herbemont
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23. #ifndef LIBVLC_MEDIA_LIST_H
  24. #define LIBVLC_MEDIA_LIST_H 1
  25. /**
  26.  * file
  27.  * This file defines libvlc_media_list API
  28.  */
  29. # ifdef __cplusplus
  30. extern "C" {
  31. # endif
  32. /*****************************************************************************
  33.  * Media List
  34.  *****************************************************************************/
  35. /** defgroup libvlc_media_list libvlc_media_list
  36.  * ingroup libvlc
  37.  * LibVLC Media List, a media list holds multiple media descriptors
  38.  * @{
  39.  */
  40. typedef struct libvlc_media_list_t libvlc_media_list_t;
  41. typedef struct libvlc_media_list_view_t libvlc_media_list_view_t;
  42. /**
  43.  * Create an empty media list.
  44.  *
  45.  * param p_libvlc libvlc instance
  46.  * param p_e an initialized exception pointer
  47.  * return empty media list
  48.  */
  49. VLC_PUBLIC_API libvlc_media_list_t *
  50.     libvlc_media_list_new( libvlc_instance_t *, libvlc_exception_t * );
  51. /**
  52.  * Release media list created with libvlc_media_list_new().
  53.  *
  54.  * param p_ml a media list created with libvlc_media_list_new()
  55.  */
  56. VLC_PUBLIC_API void
  57.     libvlc_media_list_release( libvlc_media_list_t * );
  58. /**
  59.  * Retain reference to a media list
  60.  *
  61.  * param p_ml a media list created with libvlc_media_list_new()
  62.  */
  63. VLC_PUBLIC_API void
  64.     libvlc_media_list_retain( libvlc_media_list_t * );
  65. VLC_DEPRECATED_API void
  66.     libvlc_media_list_add_file_content( libvlc_media_list_t * p_mlist,
  67.                                         const char * psz_uri,
  68.                                         libvlc_exception_t * p_e );
  69. /**
  70.  * Associate media instance with this media list instance.
  71.  * If another media instance was present it will be released.
  72.  * The libvlc_media_list_lock should NOT be held upon entering this function.
  73.  *
  74.  * param p_ml a media list instance
  75.  * param p_mi media instance to add
  76.  * param p_e initialized exception object
  77.  */
  78. VLC_PUBLIC_API void
  79.     libvlc_media_list_set_media( libvlc_media_list_t *,
  80.                                             libvlc_media_t *,
  81.                                             libvlc_exception_t *);
  82. /**
  83.  * Get media instance from this media list instance. This action will increase
  84.  * the refcount on the media instance.
  85.  * The libvlc_media_list_lock should NOT be held upon entering this function.
  86.  *
  87.  * param p_ml a media list instance
  88.  * param p_e initialized exception object
  89.  * return media instance
  90.  */
  91. VLC_PUBLIC_API libvlc_media_t *
  92.     libvlc_media_list_media( libvlc_media_list_t *,
  93.                                         libvlc_exception_t *);
  94. /**
  95.  * Add media instance to media list
  96.  * The libvlc_media_list_lock should be held upon entering this function.
  97.  *
  98.  * param p_ml a media list instance
  99.  * param p_mi a media instance
  100.  * param p_e initialized exception object
  101.  */
  102. VLC_PUBLIC_API void
  103.     libvlc_media_list_add_media( libvlc_media_list_t *,
  104.                                             libvlc_media_t *,
  105.                                             libvlc_exception_t * );
  106. /**
  107.  * Insert media instance in media list on a position
  108.  * The libvlc_media_list_lock should be held upon entering this function.
  109.  *
  110.  * param p_ml a media list instance
  111.  * param p_mi a media instance
  112.  * param i_pos position in array where to insert
  113.  * param p_e initialized exception object
  114.  */
  115. VLC_PUBLIC_API void
  116.     libvlc_media_list_insert_media( libvlc_media_list_t *,
  117.                                                libvlc_media_t *,
  118.                                                int,
  119.                                                libvlc_exception_t * );
  120. /**
  121.  * Remove media instance from media list on a position
  122.  * The libvlc_media_list_lock should be held upon entering this function.
  123.  *
  124.  * param p_ml a media list instance
  125.  * param i_pos position in array where to insert
  126.  * param p_e initialized exception object
  127.  */
  128. VLC_PUBLIC_API void
  129.     libvlc_media_list_remove_index( libvlc_media_list_t *, int,
  130.                                     libvlc_exception_t * );
  131. /**
  132.  * Get count on media list items
  133.  * The libvlc_media_list_lock should be held upon entering this function.
  134.  *
  135.  * param p_ml a media list instance
  136.  * param p_e initialized exception object
  137.  * return number of items in media list
  138.  */
  139. VLC_PUBLIC_API int
  140.     libvlc_media_list_count( libvlc_media_list_t * p_mlist,
  141.                              libvlc_exception_t * p_e );
  142. /**
  143.  * List media instance in media list at a position
  144.  * The libvlc_media_list_lock should be held upon entering this function.
  145.  *
  146.  * param p_ml a media list instance
  147.  * param i_pos position in array where to insert
  148.  * param p_e initialized exception object
  149.  * return media instance at position i_pos and libvlc_media_retain() has been called to increase the refcount on this object.
  150.  */
  151. VLC_PUBLIC_API libvlc_media_t *
  152.     libvlc_media_list_item_at_index( libvlc_media_list_t *, int,
  153.                                      libvlc_exception_t * );
  154. /**
  155.  * Find index position of List media instance in media list.
  156.  * Warning: the function will return the first matched position.
  157.  * The libvlc_media_list_lock should be held upon entering this function.
  158.  *
  159.  * param p_ml a media list instance
  160.  * param p_mi media list instance
  161.  * param p_e initialized exception object
  162.  * return position of media instance
  163.  */
  164. VLC_PUBLIC_API int
  165.     libvlc_media_list_index_of_item( libvlc_media_list_t *,
  166.                                      libvlc_media_t *,
  167.                                      libvlc_exception_t * );
  168. /**
  169.  * This indicates if this media list is read-only from a user point of view
  170.  *
  171.  * param p_ml media list instance
  172.  * return 0 on readonly, 1 on readwrite
  173.  */
  174. VLC_PUBLIC_API int
  175.     libvlc_media_list_is_readonly( libvlc_media_list_t * p_mlist );
  176. /**
  177.  * Get lock on media list items
  178.  *
  179.  * param p_ml a media list instance
  180.  */
  181. VLC_PUBLIC_API void
  182.     libvlc_media_list_lock( libvlc_media_list_t * );
  183. /**
  184.  * Release lock on media list items
  185.  * The libvlc_media_list_lock should be held upon entering this function.
  186.  *
  187.  * param p_ml a media list instance
  188.  */
  189. VLC_PUBLIC_API void
  190.     libvlc_media_list_unlock( libvlc_media_list_t * );
  191. /**
  192.  * Get a flat media list view of media list items
  193.  *
  194.  * param p_ml a media list instance
  195.  * param p_ex an excpetion instance
  196.  * return flat media list view instance
  197.  */
  198. VLC_PUBLIC_API libvlc_media_list_view_t *
  199.     libvlc_media_list_flat_view( libvlc_media_list_t *,
  200.                                  libvlc_exception_t * );
  201. /**
  202.  * Get a hierarchical media list view of media list items
  203.  *
  204.  * param p_ml a media list instance
  205.  * param p_ex an excpetion instance
  206.  * return hierarchical media list view instance
  207.  */
  208. VLC_PUBLIC_API libvlc_media_list_view_t *
  209.     libvlc_media_list_hierarchical_view( libvlc_media_list_t *,
  210.                                          libvlc_exception_t * );
  211. VLC_PUBLIC_API libvlc_media_list_view_t *
  212.     libvlc_media_list_hierarchical_node_view( libvlc_media_list_t * p_ml,
  213.                                               libvlc_exception_t * p_ex);
  214. /**
  215.  * Get libvlc_event_manager from this media list instance.
  216.  * The p_event_manager is immutable, so you don't have to hold the lock
  217.  *
  218.  * param p_ml a media list instance
  219.  * param p_ex an excpetion instance
  220.  * return libvlc_event_manager
  221.  */
  222. VLC_PUBLIC_API libvlc_event_manager_t *
  223.     libvlc_media_list_event_manager( libvlc_media_list_t *,
  224.                                      libvlc_exception_t * );
  225. /** @} media_list */
  226. # ifdef __cplusplus
  227. }
  228. # endif
  229. #endif /* _LIBVLC_MEDIA_LIST_H */