home *** CD-ROM | disk | FTP | other *** search
/ mail.altrad.com / 2015.02.mail.altrad.com.tar / mail.altrad.com / TEST / vlc-2-0-5-win32.exe / sdk / include / vlc / plugins / vlc_vout.h < prev    next >
C/C++ Source or Header  |  2012-12-12  |  5KB  |  165 lines

  1. /*****************************************************************************
  2.  * vlc_video.h: common video definitions
  3.  *****************************************************************************
  4.  * Copyright (C) 1999 - 2008 VLC authors and VideoLAN
  5.  * $Id: d3995508b243fe9aec8b6983b928bf12a0e2f8c3 $
  6.  *
  7.  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  8.  *          Samuel Hocevar <sam@via.ecp.fr>
  9.  *          Olivier Aubert <oaubert 47 videolan d07 org>
  10.  *
  11.  * This program is free software; you can redistribute it and/or modify it
  12.  * under the terms of the GNU Lesser General Public License as published by
  13.  * the Free Software Foundation; either version 2.1 of the License, or
  14.  * (at your option) any later version.
  15.  *
  16.  * This program is distributed in the hope that it will be useful,
  17.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19.  * GNU Lesser General Public License for more details.
  20.  *
  21.  * You should have received a copy of the GNU Lesser General Public License
  22.  * along with this program; if not, write to the Free Software Foundation,
  23.  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  24.  *****************************************************************************/
  25.  
  26. #ifndef VLC_VOUT_H_
  27. #define VLC_VOUT_H_ 1
  28.  
  29. /**
  30.  * \file
  31.  * This file defines common video output structures and functions in vlc
  32.  */
  33.  
  34. #include <vlc_picture.h>
  35. #include <vlc_filter.h>
  36. #include <vlc_subpicture.h>
  37.  
  38. /*****************************************************************************
  39.  * Prototypes
  40.  *****************************************************************************/
  41.  
  42. /**
  43.  * \defgroup video_output Video Output
  44.  * This module describes the programming interface for video output threads.
  45.  * It includes functions allowing to open a new thread, send pictures to a
  46.  * thread, and destroy a previously opened video output thread.
  47.  * @{
  48.  */
  49.  
  50. /**
  51.  * Vout configuration
  52.  */
  53. typedef struct {
  54.     vout_thread_t        *vout;
  55.     vlc_object_t         *input;
  56.     bool                 change_fmt;
  57.     const video_format_t *fmt;
  58.     unsigned             dpb_size;
  59. } vout_configuration_t;
  60.  
  61. /**
  62.  * Video output thread private structure
  63.  */
  64. typedef struct vout_thread_sys_t vout_thread_sys_t;
  65.  
  66. /**
  67.  * Video output thread descriptor
  68.  *
  69.  * Any independent video output device, such as an X11 window or a GGI device,
  70.  * is represented by a video output thread, and described using the following
  71.  * structure.
  72.  */
  73. struct vout_thread_t {
  74.     VLC_COMMON_MEMBERS
  75.  
  76.     /* Private vout_thread data */
  77.     vout_thread_sys_t *p;
  78. };
  79.  
  80. /* Alignment flags */
  81. #define VOUT_ALIGN_LEFT         0x0001
  82. #define VOUT_ALIGN_RIGHT        0x0002
  83. #define VOUT_ALIGN_HMASK        0x0003
  84. #define VOUT_ALIGN_TOP          0x0004
  85. #define VOUT_ALIGN_BOTTOM       0x0008
  86. #define VOUT_ALIGN_VMASK        0x000C
  87.  
  88. /*****************************************************************************
  89.  * Prototypes
  90.  *****************************************************************************/
  91.  
  92. /**
  93.  * Returns a suitable vout or release the given one.
  94.  *
  95.  * If cfg->fmt is non NULL and valid, a vout will be returned, reusing cfg->vout
  96.  * is possible, otherwise it returns NULL.
  97.  * If cfg->vout is not used, it will be closed and released.
  98.  *
  99.  * You can release the returned value either by vout_Request or vout_Close()
  100.  * followed by a vlc_object_release() or shorter vout_CloseAndRelease()
  101.  *
  102.  * \param object a vlc object
  103.  * \param cfg the video configuration requested.
  104.  * \return a vout
  105.  */
  106. VLC_API vout_thread_t * vout_Request( vlc_object_t *object, const vout_configuration_t *cfg );
  107. #define vout_Request(a,b) vout_Request(VLC_OBJECT(a),b)
  108.  
  109. /**
  110.  * This function will close a vout created by vout_Request.
  111.  * The associated vout module is closed.
  112.  * Note: It is not released yet, you'll have to call vlc_object_release()
  113.  * or use the convenient vout_CloseAndRelease().
  114.  *
  115.  * \param p_vout the vout to close
  116.  */
  117. VLC_API void vout_Close( vout_thread_t *p_vout );
  118.  
  119. /**
  120.  * This function will close a vout created by vout_Create
  121.  * and then release it.
  122.  *
  123.  * \param p_vout the vout to close and release
  124.  */
  125. static inline void vout_CloseAndRelease( vout_thread_t *p_vout )
  126. {
  127.     vout_Close( p_vout );
  128.     vlc_object_release( p_vout );
  129. }
  130.  
  131. /**
  132.  * This function will handle a snapshot request.
  133.  *
  134.  * pp_image, pp_picture and p_fmt can be NULL otherwise they will be
  135.  * set with returned value in case of success.
  136.  *
  137.  * pp_image will hold an encoded picture in psz_format format.
  138.  *
  139.  * i_timeout specifies the time the function will wait for a snapshot to be
  140.  * available.
  141.  *
  142.  */
  143. VLC_API int vout_GetSnapshot( vout_thread_t *p_vout,
  144.                               block_t **pp_image, picture_t **pp_picture,
  145.                               video_format_t *p_fmt,
  146.                               const char *psz_format, mtime_t i_timeout );
  147.  
  148. /* */
  149. VLC_API picture_t * vout_GetPicture( vout_thread_t * );
  150. VLC_API void vout_PutPicture( vout_thread_t *, picture_t * );
  151.  
  152. VLC_API void vout_HoldPicture( vout_thread_t *, picture_t * );
  153. VLC_API void vout_ReleasePicture( vout_thread_t *, picture_t * );
  154.  
  155. /* */
  156. VLC_API void vout_PutSubpicture( vout_thread_t *, subpicture_t * );
  157. VLC_API int vout_RegisterSubpictureChannel( vout_thread_t * );
  158. VLC_API void vout_FlushSubpictureChannel( vout_thread_t *, int );
  159.  
  160. VLC_API void vout_EnableFilter( vout_thread_t *, const char *,bool , bool  );
  161.  
  162. /**@}*/
  163.  
  164. #endif /* _VLC_VIDEO_H */
  165.