XvMC.h revision 17ca54c3
14e8f48c7Smrg#ifndef _XVMC_H_ 2c43cc173Smrg#define _XVMC_H_ 3c43cc173Smrg 44e8f48c7Smrg#include <X11/X.h> 5f1ee322dSmrg#include <X11/extensions/Xv.h> 6c43cc173Smrg 7c43cc173Smrg#define XvMCName "XVideo-MotionCompensation" 8c43cc173Smrg#define XvMCNumEvents 0 9c43cc173Smrg#define XvMCNumErrors 3 10c43cc173Smrg#define XvMCVersion 1 11c43cc173Smrg#define XvMCRevision 1 12c43cc173Smrg 13c43cc173Smrg#define XvMCBadContext 0 14c43cc173Smrg#define XvMCBadSurface 1 15c43cc173Smrg#define XvMCBadSubpicture 2 16c43cc173Smrg 17c43cc173Smrg/* Chroma formats */ 18c43cc173Smrg#define XVMC_CHROMA_FORMAT_420 0x00000001 19c27c18e8Smrg#define XVMC_CHROMA_FORMAT_422 0x00000002 2037eb1ca1Smrg#define XVMC_CHROMA_FORMAT_444 0x00000003 2137eb1ca1Smrg 2237eb1ca1Smrg/* XvMCSurfaceInfo Flags */ 2337eb1ca1Smrg#define XVMC_OVERLAID_SURFACE 0x00000001 2437eb1ca1Smrg#define XVMC_BACKEND_SUBPICTURE 0x00000002 2537eb1ca1Smrg#define XVMC_SUBPICTURE_INDEPENDENT_SCALING 0x00000004 26c27c18e8Smrg#define XVMC_INTRA_UNSIGNED 0x00000008 2737eb1ca1Smrg 2837eb1ca1Smrg/* Motion Compensation types */ 2937eb1ca1Smrg#define XVMC_MOCOMP 0x00000000 30c27c18e8Smrg#define XVMC_IDCT 0x00010000 3137eb1ca1Smrg 3237eb1ca1Smrg#define XVMC_MPEG_1 0x00000001 3337eb1ca1Smrg#define XVMC_MPEG_2 0x00000002 3437eb1ca1Smrg#define XVMC_H263 0x00000003 3537eb1ca1Smrg#define XVMC_MPEG_4 0x00000004 3637eb1ca1Smrg 3737eb1ca1Smrg#define XVMC_MB_TYPE_MOTION_FORWARD 0x02 38c27c18e8Smrg#define XVMC_MB_TYPE_MOTION_BACKWARD 0x04 39c43cc173Smrg#define XVMC_MB_TYPE_PATTERN 0x08 40c43cc173Smrg#define XVMC_MB_TYPE_INTRA 0x10 4148e5ce07Smrg 4248e5ce07Smrg#define XVMC_PREDICTION_FIELD 0x01 4348e5ce07Smrg#define XVMC_PREDICTION_FRAME 0x02 4448e5ce07Smrg#define XVMC_PREDICTION_DUAL_PRIME 0x03 4548e5ce07Smrg#define XVMC_PREDICTION_16x8 0x02 4648e5ce07Smrg#define XVMC_PREDICTION_4MV 0x04 4748e5ce07Smrg 4848e5ce07Smrg#define XVMC_SELECT_FIRST_FORWARD 0x01 4948e5ce07Smrg#define XVMC_SELECT_FIRST_BACKWARD 0x02 5048e5ce07Smrg#define XVMC_SELECT_SECOND_FORWARD 0x04 5148e5ce07Smrg#define XVMC_SELECT_SECOND_BACKWARD 0x08 5206c34b88Smrg 5306c34b88Smrg#define XVMC_DCT_TYPE_FRAME 0x00 5406c34b88Smrg#define XVMC_DCT_TYPE_FIELD 0x01 5506c34b88Smrg 5606c34b88Smrg#define XVMC_TOP_FIELD 0x00000001 5706c34b88Smrg#define XVMC_BOTTOM_FIELD 0x00000002 5806c34b88Smrg#define XVMC_FRAME_PICTURE (XVMC_TOP_FIELD | XVMC_BOTTOM_FIELD) 5906c34b88Smrg 6006c34b88Smrg#define XVMC_SECOND_FIELD 0x00000004 6106c34b88Smrg 6206c34b88Smrg#define XVMC_DIRECT 0x00000001 6306c34b88Smrg 64f1ee322dSmrg#define XVMC_RENDERING 0x00000001 65f1ee322dSmrg#define XVMC_DISPLAYING 0x00000002 6606c34b88Smrg 6706c34b88Smrg 6806c34b88Smrgtypedef struct { 69f1ee322dSmrg int surface_type_id; 7006c34b88Smrg int chroma_format; 7106c34b88Smrg unsigned short max_width; 7206c34b88Smrg unsigned short max_height; 7306c34b88Smrg unsigned short subpicture_max_width; 7406c34b88Smrg unsigned short subpicture_max_height; 7506c34b88Smrg int mc_type; 7606c34b88Smrg int flags; 7706c34b88Smrg} XvMCSurfaceInfo; 7806c34b88Smrg 7906c34b88Smrgtypedef struct { 8006c34b88Smrg XID context_id; 8106c34b88Smrg int surface_type_id; 8206c34b88Smrg unsigned short width; 8306c34b88Smrg unsigned short height; 8406c34b88Smrg XvPortID port; 8506c34b88Smrg int flags; 8606c34b88Smrg void * privData; /* private to the library */ 8706c34b88Smrg} XvMCContext; 8806c34b88Smrg 8906c34b88Smrgtypedef struct { 9006c34b88Smrg XID surface_id; 9106c34b88Smrg XID context_id; 9206c34b88Smrg int surface_type_id; 9306c34b88Smrg unsigned short width; 9406c34b88Smrg unsigned short height; 9506c34b88Smrg void *privData; /* private to the library */ 96c43cc173Smrg} XvMCSurface; 97c43cc173Smrg 98c27c18e8Smrgtypedef struct { 99c27c18e8Smrg XID subpicture_id; 100c43cc173Smrg XID context_id; 101c43cc173Smrg int xvimage_id; 102c43cc173Smrg unsigned short width; 103c43cc173Smrg unsigned short height; 104c43cc173Smrg int num_palette_entries; 105c43cc173Smrg int entry_bytes; 106c43cc173Smrg char component_order[4]; 107c43cc173Smrg void *privData; /* private to the library */ 108c43cc173Smrg} XvMCSubpicture; 109c43cc173Smrg 110c43cc173Smrgtypedef struct { 111c43cc173Smrg unsigned int num_blocks; 112c43cc173Smrg XID context_id; 113c43cc173Smrg void *privData; 11437eb1ca1Smrg short *blocks; 11537eb1ca1Smrg} XvMCBlockArray; 116c27c18e8Smrg 117c43cc173Smrgtypedef struct { 118c43cc173Smrg unsigned short x; 1194e8f48c7Smrg unsigned short y; 1204e8f48c7Smrg unsigned char macroblock_type; 1214e8f48c7Smrg unsigned char motion_type; 1224e8f48c7Smrg unsigned char motion_vertical_field_select; 123c43cc173Smrg unsigned char dct_type; 124c43cc173Smrg short PMV[2][2][2]; 12548e5ce07Smrg unsigned int index; 126c43cc173Smrg unsigned short coded_block_pattern; 127c43cc173Smrg unsigned short pad0; 128c43cc173Smrg} XvMCMacroBlock; 129c27c18e8Smrg 130f1ee322dSmrg 131f1ee322dSmrgtypedef struct { 132f1ee322dSmrg unsigned int num_blocks; 133f1ee322dSmrg XID context_id; 134f1ee322dSmrg void *privData; 135f1ee322dSmrg XvMCMacroBlock *macro_blocks; 136f1ee322dSmrg} XvMCMacroBlockArray; 137f1ee322dSmrg 138f1ee322dSmrg#endif 139f1ee322dSmrg