vlc.h
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:13k
源码类别:

多媒体

开发平台:

MultiPlatform

  1. /*****************************************************************************
  2.  * vlc.h: global header for vlc
  3.  *****************************************************************************
  4.  * Copyright (C) 1998-2004 VideoLAN
  5.  * $Id: vlc.h 8880 2004-10-01 15:56:10Z gbazin $
  6.  *
  7.  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  8.  *          Samuel Hocevar <sam@zoy.org>
  9.  *          Gildas Bazin <gbazin@netcourrier.com>
  10.  *          Derk-Jan Hartman <hartman at videolan dot org>
  11.  *
  12.  * This program is free software; you can redistribute it and/or modify
  13.  * it under the terms of the GNU General Public License as published by
  14.  * the Free Software Foundation; either version 2 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 General Public License for more details.
  21.  *
  22.  * You should have received a copy of the GNU General Public License
  23.  * along with this program; if not, write to the Free Software
  24.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  25.  *****************************************************************************/
  26. /**
  27.  * defgroup libvlc Libvlc
  28.  * This is libvlc, the base library of the VLC program.
  29.  *
  30.  * @{
  31.  */
  32. #ifndef _VLC_VLC_H
  33. #define _VLC_VLC_H 1
  34. # ifdef __cplusplus
  35. extern "C" {
  36. # endif
  37. /*****************************************************************************
  38.  * Our custom types
  39.  *****************************************************************************/
  40. typedef int vlc_bool_t;
  41. typedef struct vlc_list_t vlc_list_t;
  42. typedef struct vlc_object_t vlc_object_t;
  43. /**
  44.  * VLC value structure
  45.  */
  46. typedef union
  47. {
  48.     int             i_int;
  49.     vlc_bool_t      b_bool;
  50.     float           f_float;
  51.     char *          psz_string;
  52.     void *          p_address;
  53.     vlc_object_t *  p_object;
  54.     vlc_list_t *    p_list;
  55. #if (defined( WIN32 ) && !defined( __MINGW32__ )) || defined( UNDER_CE )
  56.     signed __int64   i_time;
  57. # else
  58.     signed long long i_time;
  59. #endif
  60.     struct { char *psz_name; int i_object_id; } var;
  61.    /* Make sure the structure is at least 64bits */
  62.     struct { char a, b, c, d, e, f, g, h; } padding;
  63. } vlc_value_t;
  64. /**
  65.  * VLC list structure
  66.  */
  67. struct vlc_list_t
  68. {
  69.     int             i_count;
  70.     vlc_value_t *   p_values;
  71.     int *           pi_types;
  72. };
  73. /*****************************************************************************
  74.  * Error values
  75.  *****************************************************************************/
  76. #define VLC_SUCCESS         -0                                   /* No error */
  77. #define VLC_ENOMEM          -1                          /* Not enough memory */
  78. #define VLC_ETHREAD         -2                               /* Thread error */
  79. #define VLC_ETIMEOUT        -3                                    /* Timeout */
  80. #define VLC_ENOMOD         -10                           /* Module not found */
  81. #define VLC_ENOOBJ         -20                           /* Object not found */
  82. #define VLC_EBADOBJ        -21                            /* Bad object type */
  83. #define VLC_ENOVAR         -30                         /* Variable not found */
  84. #define VLC_EBADVAR        -31                         /* Bad variable value */
  85. #define VLC_EEXIT         -255                             /* Program exited */
  86. #define VLC_EGENERIC      -666                              /* Generic error */
  87. /*****************************************************************************
  88.  * Booleans
  89.  *****************************************************************************/
  90. #define VLC_FALSE 0
  91. #define VLC_TRUE  1
  92. /*****************************************************************************
  93.  * Playlist
  94.  *****************************************************************************/
  95. /* Used by VLC_AddTarget() */
  96. #define PLAYLIST_INSERT          0x0001
  97. #define PLAYLIST_REPLACE         0x0002
  98. #define PLAYLIST_APPEND          0x0004
  99. #define PLAYLIST_GO              0x0008
  100. #define PLAYLIST_CHECK_INSERT    0x0010
  101. #define PLAYLIST_END           -666
  102. /*****************************************************************************
  103.  * Required internal headers
  104.  *****************************************************************************/
  105. #if defined( __VLC__ )
  106. #   include "vlc_common.h"
  107. #endif
  108. /*****************************************************************************
  109.  * Exported libvlc API
  110.  *****************************************************************************/
  111. /**
  112.  * Retrieve libvlc version
  113.  *
  114.  * return a string containing the libvlc version
  115.  */
  116. char const * VLC_Version ( void );
  117. /**
  118.  * Return an error string
  119.  *
  120.  * param i_err an error code
  121.  * return an error string
  122.  */
  123. char const * VLC_Error ( int i_err );
  124. /**
  125.  * Initialize libvlc
  126.  *
  127.  * This function allocates a vlc_t structure and returns a negative value
  128.  * in case of failure. Also, the thread system is initialized
  129.  *
  130.  * return vlc object id or an error code
  131.  */
  132. int     VLC_Create( void );
  133. /**
  134.  * Initialize a vlc_t structure
  135.  *
  136.  * This function initializes a previously allocated vlc_t structure:
  137.  *  - CPU detection
  138.  *  - gettext initialization
  139.  *  - message queue, module bank and playlist initialization
  140.  *  - configuration and commandline parsing
  141.  *
  142.  *  param i_object a vlc object id
  143.  *  param i_argc the number of arguments
  144.  *  param ppsz_argv an array of arguments
  145.  *  return VLC_SUCCESS on success
  146.  */
  147. int     VLC_Init( int, int, char *[] );
  148. /**
  149.  * Add an interface
  150.  *
  151.  * This function opens an interface plugin and runs it. If b_block is set
  152.  * to 0, VLC_AddIntf will return immediately and let the interface run in a
  153.  * separate thread. If b_block is set to 1, VLC_AddIntf will continue until
  154.  * user requests to quit.
  155.  *
  156.  * param i_object a vlc object id
  157.  * param psz_module a vlc module name of an interface
  158.  * param b_block make this interface blocking
  159.  * param b_play start playing when the interface is done loading
  160.  * return VLC_SUCCESS on success
  161.  */
  162. int     VLC_AddIntf( int, char const *, vlc_bool_t, vlc_bool_t );
  163. /**
  164.  * Ask vlc to die
  165.  *
  166.  * This function sets p_vlc->b_die to VLC_TRUE, but does not do any other
  167.  * task. It is your duty to call VLC_CleanUp and VLC_Destroy afterwards.
  168.  *
  169.  * param i_object a vlc object id
  170.  * return VLC_SUCCESS on success
  171.  */
  172. int     VLC_Die( int );
  173. /**
  174.  * Clean up all the intf, playlist, vout and aout
  175.  *
  176.  * This function requests all intf, playlist, vout and aout objects to finish
  177.  * and CleanUp. Only a blank VLC object should remain after this.
  178.  *
  179.  * note This function was previously called VLC_Stop
  180.  *
  181.  * param i_object a vlc object id
  182.  * return VLC_SUCCESS on success
  183.  */
  184. int     VLC_CleanUp( int );
  185. /**
  186.  * Destroy all threads and the VLC object
  187.  *
  188.  * This function requests the running threads to finish, waits for their
  189.  * termination, and destroys their structure.
  190.  * Then it will de-init all VLC object initializations. 
  191.  *
  192.  * param i_object a vlc object id
  193.  * return VLC_SUCCESS on success
  194.  */
  195. int     VLC_Destroy( int );
  196. /**
  197.  * Set a VLC variable
  198.  *
  199.  * This function sets a variable of VLC
  200.  *
  201.  * note Was previously called VLC_Set
  202.  *
  203.  * param i_object a vlc object id
  204.  * param psz_var a vlc variable name
  205.  * param value a vlc_value_t structure
  206.  * return VLC_SUCCESS on success
  207.  */
  208. int     VLC_VariableSet( int, char const *, vlc_value_t );
  209. /**
  210.  * Get a VLC variable
  211.  *
  212.  * This function gets the value of a variable of VLC
  213.  * It stores it in the p_value argument
  214.  *
  215.  * note Was previously called VLC_Get
  216.  *
  217.  * param i_object a vlc object id
  218.  * param psz_var a vlc variable name
  219.  * param p_value a pointer to a vlc_value_t structure
  220.  * return VLC_SUCCESS on success
  221.  */
  222. int     VLC_VariableGet( int, char const *, vlc_value_t * );
  223. /**
  224.  * Add a target to the current playlist
  225.  *
  226.  * This funtion will add a target to the current playlist. If a playlist does
  227.  * not exist, it will be created.
  228.  *
  229.  * param i_object a vlc object id
  230.  * param psz_target the URI of the target to play
  231.  * param ppsz_options an array of strings with input options (ie. :input-repeat)
  232.  * param i_options the amount of options in the ppsz_options array
  233.  * param i_mode the insert mode to insert the target into the playlist (PLAYLIST_* defines)
  234.  * param i_pos the position at which to add the new target (PLAYLIST_END for end)
  235.  * return VLC_SUCCESS on success
  236.  */
  237. int     VLC_AddTarget( int, char const *, const char **, int, int, int );
  238. /**
  239.  * Start the playlist and play the currently selected playlist item
  240.  *
  241.  * If there is something in the playlist, and the playlist is not running,
  242.  * then start the playlist and play the currently selected playlist item.
  243.  * If an item is currently paused, then resume it.
  244.  *
  245.  * param i_object a vlc object id
  246.  * return VLC_SUCCESS on success
  247.  */
  248. int     VLC_Play( int );
  249. /**
  250.  * Pause the currently playing item. Resume it if already paused
  251.  *
  252.  * If an item is currently playing then pause it.
  253.  * If the item is already paused, then resume playback.
  254.  *
  255.  * param i_object a vlc object id
  256.  * return VLC_SUCCESS on success
  257.  */
  258. int     VLC_Pause( int );
  259. /**
  260.  * Stop the playlist
  261.  *
  262.  * If an item is currently playing then stop it.
  263.  * Set the playlist to a stopped state.
  264.  *
  265.  * note This function is new. The old VLC_Stop is now called VLC_CleanUp
  266.  *
  267.  * param i_object a vlc object id
  268.  * return VLC_SUCCESS on success
  269.  */
  270. int             VLC_Stop( int );
  271. /**
  272.  * Tell if VLC is playing
  273.  *
  274.  * If an item is currently playing, it returns
  275.  * VLC_TRUE, else VLC_FALSE
  276.  *
  277.  * param i_object a vlc object id
  278.  * return VLC_TRUE or VLC_FALSE
  279.  */
  280. vlc_bool_t      VLC_IsPlaying( int );
  281. /**
  282.  * Get the current position in a input
  283.  *
  284.  * Return the current position as a float
  285.  * This method should be used for time sliders etc
  286.  * note For some inputs, this will be unknown.
  287.  *
  288.  * param i_object a vlc object id
  289.  * return a float in the range of 0.0 - 1.0
  290.  */
  291. float           VLC_PositionGet( int );
  292. /**
  293.  * Set the current position in a input
  294.  *
  295.  * Set the current position as a float
  296.  * This method should be used for time sliders etc
  297.  * note For some inputs, this will be unknown.
  298.  *
  299.  * param i_object a vlc object id
  300.  * param i_position a float in the range of 0.0 - 1.0
  301.  * return a float in the range of 0.0 - 1.0
  302.  */
  303. float           VLC_PositionSet( int, float );
  304. /**
  305.  * Get the current position in a input
  306.  *
  307.  * Return the current position in seconds from the start.
  308.  * note For some inputs, this will be unknown.
  309.  *
  310.  * param i_object a vlc object id
  311.  * return the offset from 0:00 in seconds
  312.  */
  313. int             VLC_TimeGet( int );
  314. /**
  315.  * Seek to a position in the current input
  316.  *
  317.  * Seek i_seconds in the current input. If b_relative is set,
  318.  * then the seek will be relative to the current position, otherwise
  319.  * it will seek to i_seconds from the beginning of the input.
  320.  * note For some inputs, this will be unknown.
  321.  *
  322.  * param i_object a vlc object id
  323.  * param i_seconds seconds from current position or from beginning of input
  324.  * param b_relative seek relative from current position
  325.  * return VLC_SUCCESS on success
  326.  */
  327. int             VLC_TimeSet( int, int, vlc_bool_t );
  328. /**
  329.  * Get the total length of a input
  330.  *
  331.  * Return the total length in seconds from the current input.
  332.  * note For some inputs, this will be unknown.
  333.  *
  334.  * param i_object a vlc object id
  335.  * return the length in seconds
  336.  */
  337. int             VLC_LengthGet( int );
  338. /**
  339.  * Play the input faster than realtime
  340.  *
  341.  * 2x, 4x, 8x faster than realtime
  342.  * note For some inputs, this will be impossible.
  343.  *
  344.  * param i_object a vlc object id
  345.  * return the current speedrate
  346.  */
  347. float           VLC_SpeedFaster( int );
  348. /**
  349.  * Play the input slower than realtime
  350.  *
  351.  * 1/2x, 1/4x, 1/8x slower than realtime
  352.  * note For some inputs, this will be impossible.
  353.  *
  354.  * param i_object a vlc object id
  355.  * return the current speedrate
  356.  */
  357. float           VLC_SpeedSlower( int );
  358. /**
  359.  * Return the current playlist item
  360.  *
  361.  * param i_object a vlc object id
  362.  * return the index of the playlistitem that is currently selected for play
  363.  */
  364. int             VLC_PlaylistIndex( int );
  365. /**
  366.  * Total amount of items in the playlist
  367.  *
  368.  * param i_object a vlc object id
  369.  * return amount of playlist items
  370.  */
  371. int             VLC_PlaylistNumberOfItems( int );
  372. /**
  373.  * Next playlist item
  374.  *
  375.  * Skip to the next playlistitem and play it.
  376.  *
  377.  * param i_object a vlc object id
  378.  * return VLC_SUCCESS on success
  379.  */
  380. int             VLC_PlaylistNext( int );
  381. /**
  382.  * Previous playlist item
  383.  *
  384.  * Skip to the previous playlistitem and play it.
  385.  *
  386.  * param i_object a vlc object id
  387.  * return VLC_SUCCESS on success
  388.  */
  389. int             VLC_PlaylistPrev( int );
  390. /**
  391.  * Clear the contents of the playlist
  392.  *
  393.  * Completly empty the entire playlist.
  394.  *
  395.  * note Was previously called VLC_ClearPlaylist
  396.  *
  397.  * param i_object a vlc object id
  398.  * return VLC_SUCCESS on success
  399.  */
  400. int             VLC_PlaylistClear( int );
  401. /**
  402.  * Change the volume
  403.  *
  404.  * param i_object a vlc object id
  405.  * param i_volume something in a range from 0-200
  406.  * return the new volume (range 0-200 %)
  407.  */
  408. int             VLC_VolumeSet( int, int );
  409. /**
  410.  * Get the current volume
  411.  *
  412.  * Retrieve the current volume.
  413.  *
  414.  * param i_object a vlc object id
  415.  * return the current volume (range 0-200 %)
  416.  */
  417. int             VLC_VolumeGet( int );
  418. /**
  419.  * Mute/Unmute the volume
  420.  *
  421.  * param i_object a vlc object id
  422.  * return VLC_SUCCESS on success
  423.  */
  424. int            VLC_VolumeMute( int );
  425. /**
  426.  * Toggle Fullscreen mode
  427.  *
  428.  * Switch between normal and fullscreen video
  429.  *
  430.  * param i_object a vlc object id
  431.  * return VLC_SUCCESS on success
  432.  */
  433. int             VLC_FullScreen( int );
  434. # ifdef __cplusplus
  435. }
  436. # endif
  437. #endif /* <vlc/vlc.h> */