/*****************************************************************************
* video_output.h : video output thread
*****************************************************************************
- * Copyright (C) 1999, 2000 VideoLAN (Centrale Réseaux) and its contributors
+ * Copyright (C) 1999, 2000 the VideoLAN team
* $Id$
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/**
} vout_chroma_t;
+/** Maximum numbers of video filters2 that can be attached to a vout */
+#define MAX_VFILTERS 10
+
/**
* Video output thread descriptor
*
vlc_bool_t b_interface; /**< render interface */
vlc_bool_t b_scale; /**< allow picture scaling */
vlc_bool_t b_fullscreen; /**< toogle fullscreen display */
- vlc_bool_t b_override_aspect; /**< aspect ratio overriden */
uint32_t render_time; /**< last picture render time */
unsigned int i_window_width; /**< video window width */
unsigned int i_window_height; /**< video window height */
unsigned int i_alignment; /**< video alignment in window */
+ unsigned int i_par_num; /**< monitor pixel aspect-ratio */
+ unsigned int i_par_den; /**< monitor pixel aspect-ratio */
intf_thread_t *p_parent_intf; /**< parent interface for embedded
vout (if any) */
char *psz_filter_chain;
vlc_bool_t 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;
+
+ vlc_bool_t b_vfilter_change;
+
/* Misc */
vlc_bool_t b_snapshot; /**< take one snapshot on the next loop */
};
#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 0x1000
+#define VOUT_PICTURE_BUFFERS_CHANGE 0x4000
/**@}*/
/* Alignment flags */
VLC_EXPORT( int, vout_ControlWindow, ( vout_thread_t *, void *, int, va_list ) );
void vout_IntfInit( vout_thread_t * );
+VLC_EXPORT( void, vout_EnableFilter, ( vout_thread_t *, char *,vlc_bool_t , vlc_bool_t ) );
+
static inline int vout_vaControl( vout_thread_t *p_vout, int i_query,
va_list args )
enum output_query_e
{
- VOUT_SET_ZOOM, /* arg1= double res= */
+ 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= vlc_bool_t res= */
VOUT_REPARENT,
VOUT_SNAPSHOT,
VOUT_CLOSE,
- VOUT_SET_FOCUS /* arg1= vlc_bool_t res= */
+ VOUT_SET_FOCUS, /* arg1= vlc_bool_t res= */
+ VOUT_SET_VIEWPORT /* arg1= view rect, arg2=clip rect, res= */
};
/**