/*****************************************************************************
* video_output.h : video output thread
- * (c)1999 VideoLAN
- *****************************************************************************
* 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 oppenned video output thread.
+ *****************************************************************************
+ * Copyright (C) 1999, 2000 VideoLAN
+ *
+ * Authors:
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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.
*****************************************************************************/
/*****************************************************************************
- * vout_yuv_convert_t: YUV convertion function
+ * vout_yuv_convert_t: YUV conversion function
*****************************************************************************
- * This is the prototype common to all convertion functions. The type of p_pic
- * will change depending of the screen depth treated.
+ * This is the prototype common to all conversion functions. The type of p_pic
+ * will change depending on the processed screen depth.
* Parameters:
* p_vout video output thread
* p_pic picture address
int i_matrix_coefficients );
/*****************************************************************************
- * vout_yuv_t: pre-calculated YUV convertion tables
+ * vout_yuv_t: pre-calculated YUV conversion tables
*****************************************************************************
- * These tables are used by convertion and scaling functions.
+ * These tables are used by conversion and scaling functions.
*****************************************************************************/
typedef struct vout_yuv_s
{
- /* Convertion functions */
+ /* conversion functions */
vout_yuv_convert_t * p_Convert420; /* YUV 4:2:0 converter */
vout_yuv_convert_t * p_Convert422; /* YUV 4:2:2 converter */
vout_yuv_convert_t * p_Convert444; /* YUV 4:4:4 converter */
- /* Pre-calculated convertion tables */
+ /* Pre-calculated conversion tables */
void * p_base; /* base for all conversion tables */
union
{
u32 * p_rgb32; /* RGB 32 bits table */
} yuv;
- /* Temporary convertion buffer and offset array */
- void * p_buffer; /* convertion buffer */
+ /* Temporary conversion buffer and offset array */
+ void * p_buffer; /* conversion buffer */
int * p_offset; /* offset array */
} vout_yuv_t;
/*****************************************************************************
* vout_buffer_t: rendering buffer
*****************************************************************************
- * This structure store informations about a buffer. Buffers are not completely
+ * This structure stores information about a buffer. Buffers are not completely
* cleared between displays, and modified areas need to be stored.
*****************************************************************************/
typedef struct vout_buffer_s
{
/* Picture area */
int i_pic_x, i_pic_y; /* picture position */
- int i_pic_width, i_pic_height; /* picture extension */
+ int i_pic_width, i_pic_height; /* picture size */
/* Other areas - only vertical extensions of areas are stored */
int i_areas; /* number of areas */
* structure.
*****************************************************************************/
typedef int (vout_sys_create_t) ( p_vout_thread_t p_vout,
- char *psz_display, int i_root_window );
+ char *psz_display,
+ int i_root_window, void *p_data );
typedef int (vout_sys_init_t) ( p_vout_thread_t p_vout );
typedef void (vout_sys_end_t) ( p_vout_thread_t p_vout );
typedef void (vout_sys_destroy_t) ( p_vout_thread_t p_vout );
typedef int (vout_sys_manage_t) ( p_vout_thread_t p_vout );
typedef void (vout_sys_display_t) ( p_vout_thread_t p_vout );
+
typedef void (vout_set_palette_t) ( p_vout_thread_t p_vout, u16 *red,
u16 *green, u16 *blue, u16 *transp );
+typedef int (yuv_sys_init_t) ( p_vout_thread_t p_vout );
+typedef int (yuv_sys_reset_t) ( p_vout_thread_t p_vout );
+typedef void (yuv_sys_end_t) ( p_vout_thread_t p_vout );
+
typedef struct vout_thread_s
{
/* Thread properties and lock */
vlc_mutex_t change_lock; /* thread change lock */
int * pi_status; /* temporary status flag */
p_vout_sys_t p_sys; /* system output method */
- int i_method; /* display method */
/* Current display properties */
u16 i_changes; /* changes made to the thread */
u32 i_gray_pixel; /* gray */
u32 i_blue_pixel; /* blue */
- /* method-dependant functions */
+ /* Plugins */
vout_sys_create_t * p_sys_create; /* allocate output method */
vout_sys_init_t * p_sys_init; /* initialize output method */
vout_sys_end_t * p_sys_end; /* terminate output method */
vout_sys_destroy_t * p_sys_destroy; /* destroy output method */
vout_sys_manage_t * p_sys_manage; /* handle events */
vout_sys_display_t * p_sys_display; /* display rendered image */
- vout_set_palette_t * p_set_palette; /* sets 8bpp palette */
+
+ vout_set_palette_t * p_set_palette; /* set 8bpp palette */
+
+ yuv_sys_init_t * p_yuv_init; /* initialize YUV tables */
+ yuv_sys_reset_t * p_yuv_reset; /* reset YUV tables */
+ yuv_sys_end_t * p_yuv_end; /* free YUV tables */
/* Pictures and rendering properties */
boolean_t b_grayscale; /* color or grayscale display */
- boolean_t b_info; /* print additionnal informations */
+ boolean_t b_info; /* print additional information */
boolean_t b_interface; /* render interface */
boolean_t b_scale; /* allow picture scaling */
int i_buffer_index; /* buffer index */
vout_buffer_t p_buffer[2]; /* buffers properties */
- /* Videos heap and translation tables */
+ /* Video heap and translation tables */
picture_t p_picture[VOUT_MAX_PICTURES]; /* pictures */
subpicture_t p_subpicture[VOUT_MAX_PICTURES]; /* subpictures */
int i_pictures; /* current heap size */
p_vout_font_t p_default_font; /* default font */
p_vout_font_t p_large_font; /* large font */
- /* Synchronisation informations - synchro level is updated by the vout
+ /* Synchronization informations - synchro level is updated by the vout
* thread and read by decoder threads */
- int i_synchro_level; /* trashing level */
+ int i_synchro_level; /* trashing level */
} vout_thread_t;
-/* Output methods */
-#define VOUT_DUMMY_METHOD 0x0000 /* dummy video output */
-#define VOUT_X11_METHOD 0x0001 /* X11 */
-#define VOUT_GGI_METHOD 0x0002 /* General Graphics Interface */
-#define VOUT_FB_METHOD 0x0003 /* Linux framebuffer */
-#define VOUT_GLIDE_METHOD 0x0004 /* Voodoo 3dfx */
-#define VOUT_DGA_METHOD 0x0005 /* X11 DGA extension */
-#define VOUT_BEOS_METHOD 0x0006 /* BeOS rendering */
-
-/* Get the fallback method */
-#ifdef VIDEO_X11
-#define VOUT_DEFAULT_METHOD "x11"
-#else
-#ifdef VIDEO_FB
-#define VOUT_DEFAULT_METHOD "fb"
-#else
-#ifdef VIDEO_GGI
-#define VOUT_DEFAULT_METHOD "ggi"
-#else
-#ifdef VIDEO_GLIDE
-#define VOUT_DEFAULT_METHOD "glide"
-#else
-#ifdef VIDEO_DGA
-#define VOUT_DEFAULT_METHOD "dga"
-#else
-#ifdef VIDEO_BEOS
-#define VOUT_DEFAULT_METHOD "beos"
-#else
-#define VOUT_DEFAULT_METHOD "dummy"
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif
-
/* Flags for changes - these flags are set in the i_changes field when another
* thread changed a variable */
#define VOUT_INFO_CHANGE 0x0001 /* b_info changed */
* Prototypes
*****************************************************************************/
vout_thread_t * vout_CreateThread ( char *psz_display, int i_root_window,
- int i_width, int i_height, int *pi_status, int i_method );
+ int i_width, int i_height, int *pi_status,
+ int i_method, void *p_data );
void vout_DestroyThread ( vout_thread_t *p_vout, int *pi_status );
picture_t * vout_CreatePicture ( vout_thread_t *p_vout, int i_type,
int i_width, int i_height );