From 206cd3aaa9886149b9c4abdde0dff7557b7dcbd4 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Kempf Date: Mon, 25 Feb 2008 20:01:42 +0000 Subject: [PATCH] XvMC Vout: Fix the macroblocks_t definition. Still not compiling because of subpictures_sys_t not defined. --- modules/video_output/x11/xcommon.h | 233 +++++++++++++++-------------- 1 file changed, 118 insertions(+), 115 deletions(-) diff --git a/modules/video_output/x11/xcommon.h b/modules/video_output/x11/xcommon.h index 4e4eeacbd9..17833ab8e6 100644 --- a/modules/video_output/x11/xcommon.h +++ b/modules/video_output/x11/xcommon.h @@ -55,6 +55,7 @@ #include #endif + /***************************************************************************** * x11_window_t: X11 window descriptor ***************************************************************************** @@ -81,6 +82,123 @@ typedef struct x11_window_t } x11_window_t; +/***************************************************************************** + * Xxmc defines + *****************************************************************************/ + +#ifdef MODULE_NAME_IS_xvmc + +typedef struct +{ /* CLUT == Color LookUp Table */ + uint8_t cb; + uint8_t cr; + uint8_t y; + uint8_t foo; +} clut_t; + +#define XX44_PALETTE_SIZE 32 +#define OVL_PALETTE_SIZE 256 +#define XVMC_MAX_SURFACES 16 +#define XVMC_MAX_SUBPICTURES 4 +#define FOURCC_IA44 0x34344149 +#define FOURCC_AI44 0x34344941 + +typedef struct +{ + unsigned size; + unsigned max_used; + uint32_t cluts[XX44_PALETTE_SIZE]; + /* cache palette entries for both colors and clip_colors */ + int lookup_cache[OVL_PALETTE_SIZE*2]; +} xx44_palette_t; + +/* + * Functions to handle the vlc-specific palette. + */ + +void clear_xx44_palette( xx44_palette_t *p ); + +/* + * Convert the xine-specific palette to something useful. + */ + +void xx44_to_xvmc_palette( const xx44_palette_t *p,unsigned char *xvmc_palette, + unsigned first_xx44_entry, unsigned num_xx44_entries, + unsigned num_xvmc_components, char *xvmc_components ); + +typedef struct +{ + vlc_macroblocks_t vlc_mc; + XvMCBlockArray blocks; /* pointer to memory for dct block array */ + int num_blocks; + XvMCMacroBlock *macroblockptr; /* pointer to current macro block */ + XvMCMacroBlock *macroblockbaseptr; /* pointer to base MacroBlock in MB array */ + XvMCMacroBlockArray macro_blocks; /* pointer to memory for macroblock array */ + int slices; +} xvmc_macroblocks_t; + +typedef struct +{ + unsigned int mpeg_flags; + unsigned int accel_flags; + unsigned int max_width; + unsigned int max_height; + unsigned int sub_max_width; + unsigned int sub_max_height; + int type_id; + XvImageFormatValues subPicType; + int flags; +} xvmc_capabilities_t; + +typedef struct xvmc_surface_handler_s +{ + XvMCSurface surfaces[XVMC_MAX_SURFACES]; + int surfInUse[XVMC_MAX_SURFACES]; + int surfValid[XVMC_MAX_SURFACES]; + XvMCSubpicture subpictures[XVMC_MAX_SUBPICTURES]; + int subInUse[XVMC_MAX_SUBPICTURES]; + int subValid[XVMC_MAX_SUBPICTURES]; + pthread_mutex_t mutex; +} xvmc_surface_handler_t; + +typedef struct context_lock_s +{ + pthread_mutex_t mutex; + pthread_cond_t cond; + int num_readers; +} context_lock_t; + +#define XVMCLOCKDISPLAY(display) XLockDisplay(display); +#define XVMCUNLOCKDISPLAY(display) XUnlockDisplay(display); + +void xvmc_context_reader_unlock( context_lock_t *c ); +void xvmc_context_reader_lock( context_lock_t *c ); +void xvmc_context_writer_lock( context_lock_t *c ); +void xvmc_context_writer_unlock( context_lock_t *c ); +void free_context_lock( context_lock_t *c ); +void xxmc_dispose_context( vout_thread_t *p_vout ); + +int xxmc_xvmc_surface_valid( vout_thread_t *p_vout, XvMCSurface *surf ); +void xxmc_xvmc_free_surface( vout_thread_t *p_vout, XvMCSurface *surf ); + +void xvmc_vld_slice( picture_t *picture ); +void xvmc_vld_frame( picture_t *picture ); + +void xxmc_do_update_frame( picture_t *picture, uint32_t width, uint32_t height, + double ratio, int format, int flags); + +int checkXvMCCap( vout_thread_t *p_vout); + +XvMCSubpicture *xxmc_xvmc_alloc_subpicture( vout_thread_t *p_vout, + XvMCContext *context, unsigned short width, unsigned short height, + int xvimage_id ); + +void xxmc_xvmc_free_subpicture( vout_thread_t *p_vout, XvMCSubpicture *sub ); +void blend_xx44( uint8_t *dst_img, subpicture_t *sub_img, int dst_width, + int dst_height, int dst_pitch, xx44_palette_t *palette,int ia44); + +#endif /* XvMC defines */ + /***************************************************************************** * vout_sys_t: video output method descriptor ***************************************************************************** @@ -274,119 +392,4 @@ typedef struct mwmhints_t # define MAX_DIRECTBUFFERS 2 #endif -/***************************************************************************** - * Xxmc defines - *****************************************************************************/ - -#ifdef MODULE_NAME_IS_xvmc - -typedef struct -{ /* CLUT == Color LookUp Table */ - uint8_t cb; - uint8_t cr; - uint8_t y; - uint8_t foo; -} clut_t; - -#define XX44_PALETTE_SIZE 32 -#define OVL_PALETTE_SIZE 256 -#define XVMC_MAX_SURFACES 16 -#define XVMC_MAX_SUBPICTURES 4 -#define FOURCC_IA44 0x34344149 -#define FOURCC_AI44 0x34344941 - -typedef struct -{ - unsigned size; - unsigned max_used; - uint32_t cluts[XX44_PALETTE_SIZE]; - /* cache palette entries for both colors and clip_colors */ - int lookup_cache[OVL_PALETTE_SIZE*2]; -} xx44_palette_t; - -/* - * Functions to handle the vlc-specific palette. - */ - -void clear_xx44_palette( xx44_palette_t *p ); - -/* - * Convert the xine-specific palette to something useful. - */ - -void xx44_to_xvmc_palette( const xx44_palette_t *p,unsigned char *xvmc_palette, - unsigned first_xx44_entry, unsigned num_xx44_entries, - unsigned num_xvmc_components, char *xvmc_components ); - -typedef struct -{ - vlc_macroblocks_t vlc_mc; - XvMCBlockArray blocks; /* pointer to memory for dct block array */ - int num_blocks; - XvMCMacroBlock *macroblockptr; /* pointer to current macro block */ - XvMCMacroBlock *macroblockbaseptr; /* pointer to base MacroBlock in MB array */ - XvMCMacroBlockArray macro_blocks; /* pointer to memory for macroblock array */ - int slices; -} xvmc_macroblocks_t; - -typedef struct -{ - unsigned int mpeg_flags; - unsigned int accel_flags; - unsigned int max_width; - unsigned int max_height; - unsigned int sub_max_width; - unsigned int sub_max_height; - int type_id; - XvImageFormatValues subPicType; - int flags; -} xvmc_capabilities_t; - -typedef struct xvmc_surface_handler_s -{ - XvMCSurface surfaces[XVMC_MAX_SURFACES]; - int surfInUse[XVMC_MAX_SURFACES]; - int surfValid[XVMC_MAX_SURFACES]; - XvMCSubpicture subpictures[XVMC_MAX_SUBPICTURES]; - int subInUse[XVMC_MAX_SUBPICTURES]; - int subValid[XVMC_MAX_SUBPICTURES]; - pthread_mutex_t mutex; -} xvmc_surface_handler_t; - -typedef struct context_lock_s -{ - pthread_mutex_t mutex; - pthread_cond_t cond; - int num_readers; -} context_lock_t; - -#define XVMCLOCKDISPLAY(display) XLockDisplay(display); -#define XVMCUNLOCKDISPLAY(display) XUnlockDisplay(display); - -void xvmc_context_reader_unlock( context_lock_t *c ); -void xvmc_context_reader_lock( context_lock_t *c ); -void xvmc_context_writer_lock( context_lock_t *c ); -void xvmc_context_writer_unlock( context_lock_t *c ); -void free_context_lock( context_lock_t *c ); -void xxmc_dispose_context( vout_thread_t *p_vout ); - -int xxmc_xvmc_surface_valid( vout_thread_t *p_vout, XvMCSurface *surf ); -void xxmc_xvmc_free_surface( vout_thread_t *p_vout, XvMCSurface *surf ); - -void xvmc_vld_slice( picture_t *picture ); -void xvmc_vld_frame( picture_t *picture ); -void xxmc_do_update_frame( picture_t *picture, uint32_t width, uint32_t height, - double ratio, int format, int flags); - -int checkXvMCCap( vout_thread_t *p_vout); - -XvMCSubpicture *xxmc_xvmc_alloc_subpicture( vout_thread_t *p_vout, - XvMCContext *context, unsigned short width, unsigned short height, - int xvimage_id ); - -void xxmc_xvmc_free_subpicture( vout_thread_t *p_vout, XvMCSubpicture *sub ); -void blend_xx44( uint8_t *dst_img, subpicture_t *sub_img, int dst_width, - int dst_height, int dst_pitch, xx44_palette_t *palette,int ia44); - -#endif -- 2.39.2