Commit 206cd3aa authored by Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf

XvMC Vout: Fix the macroblocks_t definition. Still not compiling because of...

XvMC Vout: Fix the macroblocks_t definition. Still not compiling because of subpictures_sys_t not defined.

parent 28094cb6
......@@ -55,6 +55,7 @@
#include <libosso.h>
#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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment