github.com/rajveermalviya/gamen@v0.1.2-0.20220930195403-9be15877c1aa/internal/xkbcommon/include/X11/extensions/XvMC.h (about)

     1  #ifndef _XVMC_H_
     2  #define _XVMC_H_
     3  
     4  #include <X11/X.h>
     5  #include <X11/extensions/Xv.h>
     6  
     7  #define XvMCName "XVideo-MotionCompensation"
     8  #define XvMCNumEvents 0
     9  #define XvMCNumErrors 3
    10  #define XvMCVersion 1
    11  #define XvMCRevision 1
    12  
    13  #define XvMCBadContext          0
    14  #define XvMCBadSurface          1
    15  #define XvMCBadSubpicture       2
    16  
    17  /* Chroma formats */
    18  #define XVMC_CHROMA_FORMAT_420          0x00000001
    19  #define XVMC_CHROMA_FORMAT_422          0x00000002
    20  #define XVMC_CHROMA_FORMAT_444          0x00000003
    21  
    22  /* XvMCSurfaceInfo Flags */
    23  #define XVMC_OVERLAID_SURFACE                   0x00000001
    24  #define XVMC_BACKEND_SUBPICTURE                 0x00000002
    25  #define XVMC_SUBPICTURE_INDEPENDENT_SCALING     0x00000004
    26  #define XVMC_INTRA_UNSIGNED                     0x00000008
    27  
    28  /* Motion Compensation types */
    29  #define XVMC_MOCOMP                     0x00000000
    30  #define XVMC_IDCT                       0x00010000
    31  
    32  #define XVMC_MPEG_1                     0x00000001
    33  #define XVMC_MPEG_2                     0x00000002
    34  #define XVMC_H263                       0x00000003
    35  #define XVMC_MPEG_4                     0x00000004
    36  
    37  #define XVMC_MB_TYPE_MOTION_FORWARD     0x02
    38  #define XVMC_MB_TYPE_MOTION_BACKWARD    0x04
    39  #define XVMC_MB_TYPE_PATTERN            0x08
    40  #define XVMC_MB_TYPE_INTRA              0x10
    41  
    42  #define XVMC_PREDICTION_FIELD           0x01
    43  #define XVMC_PREDICTION_FRAME           0x02
    44  #define XVMC_PREDICTION_DUAL_PRIME      0x03
    45  #define XVMC_PREDICTION_16x8            0x02
    46  #define XVMC_PREDICTION_4MV             0x04
    47  
    48  #define XVMC_SELECT_FIRST_FORWARD       0x01
    49  #define XVMC_SELECT_FIRST_BACKWARD      0x02
    50  #define XVMC_SELECT_SECOND_FORWARD      0x04
    51  #define XVMC_SELECT_SECOND_BACKWARD     0x08
    52  
    53  #define XVMC_DCT_TYPE_FRAME             0x00
    54  #define XVMC_DCT_TYPE_FIELD             0x01
    55  
    56  #define XVMC_TOP_FIELD          0x00000001
    57  #define XVMC_BOTTOM_FIELD       0x00000002
    58  #define XVMC_FRAME_PICTURE      (XVMC_TOP_FIELD | XVMC_BOTTOM_FIELD)
    59  
    60  #define XVMC_SECOND_FIELD       0x00000004
    61  
    62  #define XVMC_DIRECT             0x00000001
    63  
    64  #define XVMC_RENDERING          0x00000001
    65  #define XVMC_DISPLAYING         0x00000002
    66  
    67  
    68  typedef struct {
    69     int surface_type_id;
    70     int chroma_format;
    71     unsigned short max_width;
    72     unsigned short max_height;
    73     unsigned short subpicture_max_width;
    74     unsigned short subpicture_max_height;
    75     int mc_type;
    76     int flags;
    77  } XvMCSurfaceInfo;
    78  
    79  typedef struct {
    80     XID context_id;
    81     int surface_type_id;
    82     unsigned short width;
    83     unsigned short height;
    84     XvPortID port;
    85     int flags;
    86     void * privData;  /* private to the library */
    87  } XvMCContext;
    88  
    89  typedef struct {
    90    XID surface_id;
    91    XID context_id;
    92    int surface_type_id;
    93    unsigned short width;
    94    unsigned short height;
    95    void *privData;  /* private to the library */
    96  } XvMCSurface;
    97  
    98  typedef struct {
    99    XID subpicture_id;
   100    XID context_id;
   101    int xvimage_id;
   102    unsigned short width;
   103    unsigned short height;
   104    int num_palette_entries;
   105    int entry_bytes;
   106    char component_order[4];
   107    void *privData;    /* private to the library */
   108  } XvMCSubpicture;
   109  
   110  typedef struct {
   111    unsigned int num_blocks;
   112    XID context_id;
   113    void *privData;
   114    short *blocks;
   115  } XvMCBlockArray;
   116  
   117  typedef struct {
   118     unsigned short x;
   119     unsigned short y;
   120     unsigned char macroblock_type;
   121     unsigned char motion_type;
   122     unsigned char motion_vertical_field_select;
   123     unsigned char dct_type;
   124     short PMV[2][2][2];
   125     unsigned int index;
   126     unsigned short coded_block_pattern;
   127     unsigned short pad0;
   128  } XvMCMacroBlock;
   129  
   130  
   131  typedef struct {
   132    unsigned int num_blocks;
   133    XID context_id;
   134    void *privData;
   135    XvMCMacroBlock *macro_blocks;
   136  } XvMCMacroBlockArray;
   137  
   138  #endif