/*****************************************************************************
* vlc_video.h: common video definitions
*****************************************************************************
- * Copyright (C) 1999 - 2005 the VideoLAN team
+ * Copyright (C) 1999 - 2008 the VideoLAN team
* $Id$
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
-#if !defined( __LIBVLC__ )
- #error You are not libvlc or one of its plugins. You cannot include this file
-#endif
-
#ifndef _VLC_VOUT_H_
#define _VLC_VOUT_H_ 1
#include <vlc_es.h>
+#include <vlc_filter.h>
/** Description of a planar graphic field */
typedef struct plane_t
* @{*/
int i_status; /**< picture flags */
int i_type; /**< is picture a direct buffer ? */
- bool b_slow; /**< is picture in slow memory ? */
+ bool b_slow; /**< is picture in slow memory ? */
int i_matrix_coefficients; /**< in YUV type, encoding type */
/**@}*/
/**@{*/
unsigned i_refcount; /**< link reference counter */
mtime_t date; /**< display date */
- bool b_force;
+ bool b_force;
/**@}*/
/** \name Picture dynamic properties
* Those properties can be changed by the decoder
* @{
*/
- bool b_progressive; /**< is it a progressive frame ? */
+ bool b_progressive; /**< is it a progressive frame ? */
unsigned int i_nb_fields; /**< # of displayed fields */
- bool b_top_field_first; /**< which field is first */
+ bool b_top_field_first; /**< which field is first */
/**@}*/
/** The picture heap we are attached to */
/* Real pictures */
picture_t* pp_picture[VOUT_MAX_PICTURES]; /**< pictures */
int i_last_used_pic; /**< last used pic in heap */
- bool b_allow_modify_pics;
+ bool b_allow_modify_pics;
/* Stuff used for truecolor RGB planes */
uint32_t i_rmask; int i_rrshift, i_lrshift;
/**@{*/
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
+ 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 */
- bool b_pausable; /**< subpicture will be paused if
+ bool b_fade; /**< enable fading */
+ bool b_pausable; /**< subpicture will be paused if
stream is paused */
/**@}*/
int i_alpha; /**< transparency */
int i_original_picture_width; /**< original width of the movie */
int i_original_picture_height;/**< original height of the movie */
- bool b_absolute; /**< position is absolute */
+ bool b_absolute; /**< position is absolute */
int i_flags; /**< position flags */
/**@}*/
* @{
*/
-/**
- * Chroma conversion function
- *
- * This is the prototype common to all conversion functions.
- * \param p_vout video output thread
- * \param p_source source picture
- * \param p_dest destination picture
- * Picture width and source dimensions must be multiples of 16.
- */
-typedef void (vout_chroma_convert_t)( vout_thread_t *,
- picture_t *, picture_t * );
-
-typedef struct vout_chroma_t
-{
- /** conversion functions */
- vout_chroma_convert_t *pf_convert;
-
- /** Private module-dependant data */
- chroma_sys_t * p_sys; /* private data */
-
- /** Plugin used and shortcuts to access its capabilities */
- module_t * p_module;
-
-} vout_chroma_t;
-
-/** Maximum numbers of video filters2 that can be attached to a vout */
-#define MAX_VFILTERS 10
-
/**
* Video output thread descriptor
*
- * Any independant video output device, such as an X11 window or a GGI device,
+ * 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.
*/
uint16_t i_changes; /**< changes made to the thread.
\see \ref vout_changes */
float f_gamma; /**< gamma */
- bool b_grayscale; /**< color or grayscale display */
- bool b_info; /**< print additional information */
- bool b_interface; /**< render interface */
- bool b_scale; /**< allow picture scaling */
- bool b_fullscreen; /**< toogle fullscreen display */
+ bool b_grayscale; /**< color or grayscale display */
+ bool b_info; /**< print additional information */
+ bool b_interface; /**< render interface */
+ bool b_scale; /**< allow picture scaling */
+ bool b_fullscreen; /**< toogle fullscreen display */
uint32_t render_time; /**< last picture render time */
unsigned int i_window_width; /**< video window width */
unsigned int i_window_height; /**< video window height */
int i_heap_size; /**< heap size */
picture_heap_t render; /**< rendered pictures */
picture_heap_t output; /**< direct buffers */
- bool b_direct; /**< rendered are like direct ? */
- vout_chroma_t chroma; /**< translation tables */
+ bool b_direct; /**< rendered are like direct ? */
+ filter_t *p_chroma; /**< translation tables */
video_format_t fmt_render; /* render format (from the decoder) */
video_format_t fmt_in; /* input (modified render) format */
picture_t p_picture[2*VOUT_MAX_PICTURES+1]; /**< pictures */
/* Subpicture unit */
- spu_t *p_spu;
+ spu_t *p_spu;
/* Statistics */
- count_t c_loops;
- count_t c_pictures, c_late_pictures;
- mtime_t display_jitter; /**< average deviation from the PTS */
- count_t c_jitter_samples; /**< number of samples used
+ count_t c_loops;
+ count_t c_pictures, c_late_pictures;
+ mtime_t display_jitter; /**< average deviation from the PTS */
+ count_t c_jitter_samples; /**< number of samples used
for the calculation of the
jitter */
/** delay created by internal caching */
- int i_pts_delay;
+ int i_pts_delay;
/* Filter chain */
- char *psz_filter_chain;
- bool b_filter_change;
-
- /* Video filter2 chain
- * these are handled like in transcode.c
- * XXX: we might need to merge the two chains (v1 and v2 filters) */
- char *psz_vfilters[MAX_VFILTERS];
- config_chain_t *p_vfilters_cfg[MAX_VFILTERS];
- int i_vfilters_cfg;
-
- filter_t *pp_vfilters[MAX_VFILTERS];
- int i_vfilters;
+ char *psz_filter_chain;
+ bool b_filter_change;
- bool b_vfilter_change;
+ /* Video filter2 chain */
+ filter_chain_t *p_vf2_chain;
+ char *psz_vf2;
/* Misc */
- bool b_snapshot; /**< take one snapshot on the next loop */
+ bool b_snapshot; /**< take one snapshot on the next loop */
/* Video output configuration */
config_chain_t *p_cfg;
/* Show media title on videoutput */
- bool b_title_show;
+ bool b_title_show;
mtime_t i_title_timeout;
int i_title_position;
};
VLC_EXPORT( vout_thread_t *, __vout_Request, ( vlc_object_t *, vout_thread_t *, video_format_t * ) );
#define vout_Create(a,b) __vout_Create(VLC_OBJECT(a),b)
VLC_EXPORT( vout_thread_t *, __vout_Create, ( vlc_object_t *, video_format_t * ) );
-VLC_EXPORT( void, vout_Destroy, ( vout_thread_t * ) );
VLC_EXPORT( int, vout_VarCallback, ( vlc_object_t *, const char *, vlc_value_t, vlc_value_t, void * ) );
VLC_EXPORT( int, vout_ChromaCmp, ( uint32_t, uint32_t ) );