74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* $XFree86: xc/include/extensions/XvMC.h,v 1.8 2002/01/16 01:15:45 mvojkovi Exp $ */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#ifndef _XVMC_H_
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define _XVMC_H_
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#include <X11/X.h>
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#include <X11/extensions/Xv.h>
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XvMCName "XVideo-MotionCompensation"
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XvMCNumEvents 0
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XvMCNumErrors 3
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XvMCVersion 1
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XvMCRevision 0
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XvMCBadContext 0
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XvMCBadSurface 1
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XvMCBadSubpicture 2
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* Chroma formats */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_CHROMA_FORMAT_420 0x00000001
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_CHROMA_FORMAT_422 0x00000002
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_CHROMA_FORMAT_444 0x00000003
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* XvMCSurfaceInfo Flags */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_OVERLAID_SURFACE 0x00000001
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_BACKEND_SUBPICTURE 0x00000002
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_SUBPICTURE_INDEPENDENT_SCALING 0x00000004
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_INTRA_UNSIGNED 0x00000008
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/* Motion Compensation types */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_MOCOMP 0x00000000
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_IDCT 0x00010000
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_MPEG_1 0x00000001
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_MPEG_2 0x00000002
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_H263 0x00000003
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_MPEG_4 0x00000004
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_MB_TYPE_MOTION_FORWARD 0x02
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_MB_TYPE_MOTION_BACKWARD 0x04
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_MB_TYPE_PATTERN 0x08
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_MB_TYPE_INTRA 0x10
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_PREDICTION_FIELD 0x01
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_PREDICTION_FRAME 0x02
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_PREDICTION_DUAL_PRIME 0x03
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_PREDICTION_16x8 0x02
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_PREDICTION_4MV 0x04
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_SELECT_FIRST_FORWARD 0x01
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_SELECT_FIRST_BACKWARD 0x02
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_SELECT_SECOND_FORWARD 0x04
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_SELECT_SECOND_BACKWARD 0x08
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_DCT_TYPE_FRAME 0x00
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_DCT_TYPE_FIELD 0x01
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_TOP_FIELD 0x00000001
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_BOTTOM_FIELD 0x00000002
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_FRAME_PICTURE (XVMC_TOP_FIELD | XVMC_BOTTOM_FIELD)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_SECOND_FIELD 0x00000004
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_DIRECT 0x00000001
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_RENDERING 0x00000001
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define XVMC_DISPLAYING 0x00000002
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int surface_type_id;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int chroma_format;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short max_width;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short max_height;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short subpicture_max_width;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short subpicture_max_height;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int mc_type;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int flags;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XvMCSurfaceInfo;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XID context_id;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int surface_type_id;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short width;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short height;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XvPortID port;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int flags;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync void * privData; /* private to the library */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XvMCContext;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XID surface_id;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XID context_id;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int surface_type_id;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short width;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short height;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync void *privData; /* private to the library */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XvMCSurface;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XID subpicture_id;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XID context_id;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int xvimage_id;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short width;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short height;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int num_palette_entries;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int entry_bytes;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync char component_order[4];
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync void *privData; /* private to the library */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XvMCSubpicture;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned int num_blocks;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XID context_id;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync void *privData;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync short *blocks;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XvMCBlockArray;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short x;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short y;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned char macroblock_type;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned char motion_type;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned char motion_vertical_field_select;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned char dct_type;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync short PMV[2][2][2];
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned int index;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short coded_block_pattern;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned short pad0;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XvMCMacroBlock;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned int num_blocks;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XID context_id;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync void *privData;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XvMCMacroBlock *macro_blocks;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XvMCMacroBlockArray;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif