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