⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vlc_vout.h

📁 mips版本的VLC视频服务器
💻 H
📖 第 1 页 / 共 2 页
字号:
VLC_EXPORT( void, subpicture_region_ChainDelete, ( subpicture_region_t *p_head ) );/** * Video subtitle * * Any subtitle destined to be displayed by a video output thread should * be stored in this structure from it's creation to it's effective display. * Subtitle type and flags should only be modified by the output thread. Note * that an empty subtitle MUST have its flags set to 0. */struct subpicture_t{    /** \name Channel ID */    /**@{*/    int             i_channel;                    /**< subpicture channel ID */    /**@}*/    /** \name Type and flags       Should NOT be modified except by the vout thread */    /**@{*/    int64_t         i_order;                 /** an increasing unique number */    subpicture_t *  p_next;               /**< next subtitle to be displayed */    /**@}*/    /** \name Date properties */    /**@{*/    mtime_t         i_start;                  /**< beginning of display date */    mtime_t         i_stop;                         /**< end of display date */    bool            b_ephemer;    /**< If this flag is set to true the subtitle                                will be displayed untill the next one appear */    bool            b_fade;                               /**< enable fading */    /**@}*/    subpicture_region_t *p_region;  /**< region list composing this subtitle */    /** \name Display properties     * These properties are only indicative and may be     * changed by the video output thread, or simply ignored depending of the     * subtitle type. */    /**@{*/    int          i_original_picture_width;  /**< original width of the movie */    int          i_original_picture_height;/**< original height of the movie */    bool         b_subtitle;            /**< the picture is a movie subtitle */    bool         b_absolute;                       /**< position is absolute */    int          i_alpha;                                  /**< transparency */     /**@}*/    /** Pointer to function that renders this subtitle in a picture */    void ( *pf_render )  ( vout_thread_t *, picture_t *, const subpicture_t * );    /** Pointer to function that cleans up the private data of this subtitle */    void ( *pf_destroy ) ( subpicture_t * );    /** Pointer to functions for region management */    void (*pf_pre_render)    ( spu_t *, subpicture_t *, const video_format_t * );    void (*pf_update_regions)( spu_t *,                               subpicture_t *, const video_format_t *, mtime_t );    /** Private data - the subtitle plugin might want to put stuff here to     * keep track of the subpicture */    subpicture_sys_t *p_sys;                              /* subpicture data */};/** * This function create a new empty subpicture. * * You must use subpicture_Delete to destroy it. */VLC_EXPORT( subpicture_t *, subpicture_New, ( void ) );/** * This function delete a subpicture created by subpicture_New. * You may give it NULL. */VLC_EXPORT( void,  subpicture_Delete, ( subpicture_t *p_subpic ) );/* Default subpicture channel ID */#define DEFAULT_CHAN           1/***************************************************************************** * Prototypes *****************************************************************************//** * Initialise different fields of a picture_t (but does not allocate memory). * \param p_this a vlc object * \param p_pic pointer to the picture structure. * \param i_chroma the wanted chroma for the picture. * \param i_width the wanted width for the picture. * \param i_height the wanted height for the picture. * \param i_aspect the wanted aspect ratio for the picture. */#define vout_InitPicture(a,b,c,d,e,f) \        __vout_InitPicture(VLC_OBJECT(a),b,c,d,e,f)VLC_EXPORT( int, __vout_InitPicture, ( vlc_object_t *p_this, picture_t *p_pic, uint32_t i_chroma, int i_width, int i_height, int i_aspect ) );/** * Initialise different fields of a picture_t and allocates the picture buffer. * \param p_this a vlc object * \param p_pic pointer to the picture structure. * \param i_chroma the wanted chroma for the picture. * \param i_width the wanted width for the picture. * \param i_height the wanted height for the picture. * \param i_aspect the wanted aspect ratio for the picture. */#define vout_AllocatePicture(a,b,c,d,e,f) \        __vout_AllocatePicture(VLC_OBJECT(a),b,c,d,e,f)VLC_EXPORT( int, __vout_AllocatePicture,( vlc_object_t *p_this, picture_t *p_pic, uint32_t i_chroma, int i_width, int i_height, int i_aspect ) );/** * \defgroup video_output Video Output * This module describes the programming interface for video output threads. * It includes functions allowing to open a new thread, send pictures to a * thread, and destroy a previously opened video output thread. * @{ *//** * Video ouput thread private structure */typedef struct vout_thread_sys_t vout_thread_sys_t;/** * Video output thread descriptor * * Any independent video output device, such as an X11 window or a GGI device, * is represented by a video output thread, and described using the following * structure. */struct vout_thread_t{    VLC_COMMON_MEMBERS    /** \name Thread properties and locks */    /**@{*/    vlc_mutex_t         picture_lock;                 /**< picture heap lock */    vlc_mutex_t         change_lock;                 /**< thread change lock */    vout_sys_t *        p_sys;                     /**< system output method */    /**@}*/    /** \name Current display properties */    /**@{*/    uint16_t            i_changes;          /**< changes made to the thread.                                                      \see \ref vout_changes */    bool                b_scale;                  /**< allow picture scaling */    bool                b_fullscreen;         /**< toogle fullscreen display */    unsigned int        i_window_width;              /**< video window width */    unsigned int        i_window_height;            /**< video window height */    unsigned int        i_alignment;          /**< video alignment in window */    struct vout_window_t *p_window;   /**< window for embedded vout (if any) */    /**@}*/    /** \name Plugin used and shortcuts to access its capabilities */    /**@{*/    module_t *   p_module;    int       ( *pf_init )       ( vout_thread_t * );    void      ( *pf_end )        ( vout_thread_t * );    int       ( *pf_manage )     ( vout_thread_t * );    void      ( *pf_render )     ( vout_thread_t *, picture_t * );    void      ( *pf_display )    ( vout_thread_t *, picture_t * );    void      ( *pf_swap )       ( vout_thread_t * );         /* OpenGL only */    int       ( *pf_lock )       ( vout_thread_t * );         /* OpenGL only */    void      ( *pf_unlock )     ( vout_thread_t * );         /* OpenGL only */    int       ( *pf_control )    ( vout_thread_t *, int, va_list );    /**@}*/    /** \name Video heap and translation tables */    /**@{*/    int                 i_heap_size;                          /**< heap size */    picture_heap_t      render;                       /**< rendered pictures */    picture_heap_t      output;                          /**< direct buffers */    video_format_t      fmt_render;      /* render format (from the decoder) */    video_format_t      fmt_in;            /* input (modified render) format */    video_format_t      fmt_out;     /* output format (for the video output) */    /**@}*/    /* Picture heap */    picture_t           p_picture[2*VOUT_MAX_PICTURES+1];      /**< pictures */    /* Subpicture unit */    spu_t          *p_spu;    /* Video output configuration */    config_chain_t *p_cfg;    /* Private vout_thread data */    vout_thread_sys_t *p;};#define I_OUTPUTPICTURES p_vout->output.i_pictures#define PP_OUTPUTPICTURE p_vout->output.pp_picture#define I_RENDERPICTURES p_vout->render.i_pictures#define PP_RENDERPICTURE p_vout->render.pp_picture/** \defgroup vout_changes Flags for changes * These flags are set in the vout_thread_t::i_changes field when another * thread changed a variable * @{ *//** b_info changed */#define VOUT_INFO_CHANGE        0x0001/** b_interface changed */#define VOUT_INTF_CHANGE        0x0004/** b_scale changed */#define VOUT_SCALE_CHANGE       0x0008/** b_cursor changed */#define VOUT_CURSOR_CHANGE      0x0020/** b_fullscreen changed */#define VOUT_FULLSCREEN_CHANGE  0x0040/** size changed */#define VOUT_SIZE_CHANGE        0x0200/** depth changed */#define VOUT_DEPTH_CHANGE       0x0400/** change chroma tables */#define VOUT_CHROMA_CHANGE      0x0800/** cropping parameters changed */#define VOUT_CROP_CHANGE        0x1000/** aspect ratio changed */#define VOUT_ASPECT_CHANGE      0x2000/** change/recreate picture buffers */#define VOUT_PICTURE_BUFFERS_CHANGE 0x4000/**@}*//* Alignment flags */#define VOUT_ALIGN_LEFT         0x0001#define VOUT_ALIGN_RIGHT        0x0002#define VOUT_ALIGN_HMASK        0x0003#define VOUT_ALIGN_TOP          0x0004#define VOUT_ALIGN_BOTTOM       0x0008#define VOUT_ALIGN_VMASK        0x000C#define MAX_JITTER_SAMPLES      20/***************************************************************************** * Prototypes *****************************************************************************//** * This function will *  - returns a suitable vout (if requested by a non NULL p_fmt) *  - recycles an old vout (if given) by either destroying it or by saving it *  for latter usage. * * The purpose of this function is to avoid unnecessary creation/destruction of * vout (and to allow optional vout reusing). * * You can call vout_Request on a vout created by vout_Create or by a previous * call to vout_Request. * You can release the returned value either by vout_Request or vout_Close() * followed by a vlc_object_release() or shorter vout_CloseAndRelease() * * \param p_this a vlc object * \param p_vout a vout candidate * \param p_fmt the video format requested or NULL * \return a vout if p_fmt is non NULL and the request is successfull, NULL * otherwise */#define vout_Request(a,b,c) __vout_Request(VLC_OBJECT(a),b,c)VLC_EXPORT( vout_thread_t *, __vout_Request,    ( vlc_object_t *p_this, vout_thread_t *p_vout, video_format_t *p_fmt ) );/** * This function will create a suitable vout for a given p_fmt. It will never * reuse an already existing unused vout. * * You have to call either vout_Close or vout_Request on the returned value * \param p_this a vlc object to which the returned vout will be attached * \param p_fmt the video format requested * \return a vout if the request is successfull, NULL otherwise */#define vout_Create(a,b) __vout_Create(VLC_OBJECT(a),b)VLC_EXPORT( vout_thread_t *, __vout_Create,       ( vlc_object_t *p_this, video_format_t *p_fmt ) );/** * This function will close a vout created by vout_Create or vout_Request. * The associated vout module is closed. * Note: It is not released yet, you'll have to call vlc_object_release() * or use the convenient vout_CloseAndRelease(). * * \param p_vout the vout to close */VLC_EXPORT( void,            vout_Close,        ( vout_thread_t *p_vout ) );/** * This function will close a vout created by vout_Create * and then release it. * * \param p_vout the vout to close and release */static inline void vout_CloseAndRelease( vout_thread_t *p_vout ){    vout_Close( p_vout );    vlc_object_release( p_vout );}/* */VLC_EXPORT( int,             vout_ChromaCmp,      ( uint32_t, uint32_t ) );VLC_EXPORT( picture_t *,     vout_CreatePicture,  ( vout_thread_t *, bool, bool, unsigned int ) );VLC_EXPORT( void,            vout_InitFormat,     ( video_frame_format_t *, uint32_t, int, int, int ) );VLC_EXPORT( void,            vout_DestroyPicture, ( vout_thread_t *, picture_t * ) );VLC_EXPORT( void,            vout_DisplayPicture, ( vout_thread_t *, picture_t * ) );VLC_EXPORT( void,            vout_LinkPicture,    ( vout_thread_t *, picture_t * ) );VLC_EXPORT( void,            vout_UnlinkPicture,  ( vout_thread_t *, picture_t * ) );VLC_EXPORT( void,            vout_PlacePicture,   ( vout_thread_t *, unsigned int, unsigned int, unsigned int *, unsigned int *, unsigned int *, unsigned int * ) );VLC_EXPORT( int, vout_vaControlDefault, ( vout_thread_t *, int, va_list ) );VLC_EXPORT( void *, vout_RequestWindow, ( vout_thread_t *, int *, int *, unsigned int *, unsigned int * ) );VLC_EXPORT( void,   vout_ReleaseWindow, ( vout_thread_t *, void * ) );VLC_EXPORT( int, vout_ControlWindow, ( vout_thread_t *, void *, int, va_list ) );void vout_IntfInit( vout_thread_t * );VLC_EXPORT( int, vout_Snapshot, ( vout_thread_t *p_vout, picture_t *p_pic ) );VLC_EXPORT( void, vout_EnableFilter, ( vout_thread_t *, char *,bool , bool  ) );static inline int vout_vaControl( vout_thread_t *p_vout, int i_query,                                  va_list args ){    if( p_vout->pf_control )        return p_vout->pf_control( p_vout, i_query, args );    else        return VLC_EGENERIC;}static inline int vout_Control( vout_thread_t *p_vout, int i_query, ... ){    va_list args;    int i_result;    va_start( args, i_query );    i_result = vout_vaControl( p_vout, i_query, args );    va_end( args );    return i_result;}enum output_query_e{    VOUT_GET_SIZE,         /* arg1= unsigned int*, arg2= unsigned int*, res= */    VOUT_SET_SIZE,         /* arg1= unsigned int, arg2= unsigned int, res= */    VOUT_SET_STAY_ON_TOP,  /* arg1= bool       res=    */    VOUT_REPARENT,    VOUT_SNAPSHOT,    VOUT_CLOSE,    VOUT_SET_FOCUS,         /* arg1= bool       res=    */    VOUT_SET_VIEWPORT,      /* arg1= view rect, arg2=clip rect, res= */    VOUT_REDRAW_RECT,       /* arg1= area rect, res= */};typedef struct snapshot_t {  char *p_data;  /* Data area */  int i_width;       /* In pixels */  int i_height;      /* In pixels */  int i_datasize;    /* In bytes */  mtime_t date;      /* Presentation time */} snapshot_t;/**@}*/#endif /* _VLC_VIDEO_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -