gallium: don't use enum bitfields in p_video_state.h
[mesa.git] / src / gallium / include / pipe / p_video_state.h
index 1450f3488f9fe4df061b3c6fc6351eceffe8b5dd..2a64ffb560137ce50dc3e6a62d25923517ebb46e 100644 (file)
@@ -50,81 +50,73 @@ enum pipe_mpeg12_picture_type
    PIPE_MPEG12_PICTURE_TYPE_FRAME
 };
 
-enum pipe_mpeg12_macroblock_type
+enum pipe_mpeg12_dct_intra
 {
-   PIPE_MPEG12_MACROBLOCK_TYPE_INTRA,
-   PIPE_MPEG12_MACROBLOCK_TYPE_FWD,
-   PIPE_MPEG12_MACROBLOCK_TYPE_BKWD,
-   PIPE_MPEG12_MACROBLOCK_TYPE_BI,
-
-   PIPE_MPEG12_MACROBLOCK_NUM_TYPES
+   PIPE_MPEG12_DCT_DELTA = 0,
+   PIPE_MPEG12_DCT_INTRA = 1
 };
 
-enum pipe_mpeg12_motion_type
+enum pipe_mpeg12_dct_type
 {
-   PIPE_MPEG12_MOTION_TYPE_FIELD,
-   PIPE_MPEG12_MOTION_TYPE_FRAME,
-   PIPE_MPEG12_MOTION_TYPE_DUALPRIME,
-   PIPE_MPEG12_MOTION_TYPE_16x8
+   PIPE_MPEG12_DCT_TYPE_FRAME = 0,
+   PIPE_MPEG12_DCT_TYPE_FIELD = 1
 };
 
-enum pipe_mpeg12_dct_type
+enum pipe_video_field_select
 {
-   PIPE_MPEG12_DCT_TYPE_FIELD,
-   PIPE_MPEG12_DCT_TYPE_FRAME
+   PIPE_VIDEO_FRAME = 0,
+   PIPE_VIDEO_TOP_FIELD = 1,
+   PIPE_VIDEO_BOTTOM_FIELD = 3,
+
+   /* TODO
+   PIPE_VIDEO_DUALPRIME
+   PIPE_VIDEO_16x8
+   */
 };
 
+enum pipe_video_mv_weight
+{
+   PIPE_VIDEO_MV_WEIGHT_MIN = 0,
+   PIPE_VIDEO_MV_WEIGHT_HALF = 128,
+   PIPE_VIDEO_MV_WEIGHT_MAX = 256
+};
 
-struct pipe_macroblock
+/* bitfields because this is used as a vertex buffer element */
+struct pipe_motionvector
 {
-   enum pipe_video_codec codec;
+   struct {
+      short x, y;
+      ushort field_select; /**< enum pipe_video_field_select */
+      ushort weight;  /**< enum pipe_video_mv_weight  */
+   } top, bottom;
 };
 
-struct pipe_mpeg12_macroblock
+/* bitfields because this is used as a vertex buffer element */
+struct pipe_ycbcr_block
 {
-   struct pipe_macroblock base;
-
-   unsigned mbx;
-   unsigned mby;
-   enum pipe_mpeg12_macroblock_type mb_type;
-   enum pipe_mpeg12_motion_type mo_type;
-   enum pipe_mpeg12_dct_type dct_type;
-   signed pmv[2][2][2];
-   unsigned cbp;
-   short *blocks;
+   ubyte x, y;
+   ubyte intra;  /**< enum pipe_mpeg12_dct_intra */
+   ubyte coding; /**< enum pipe_mpeg12_dct_type */
 };
 
-#if 0
 struct pipe_picture_desc
 {
-   enum pipe_video_format format;
+   enum pipe_video_profile profile;
 };
 
 struct pipe_mpeg12_picture_desc
 {
    struct pipe_picture_desc base;
 
-   /* TODO: Use bitfields where possible? */
-   struct pipe_surface *forward_reference;
-   struct pipe_surface *backward_reference;
    unsigned picture_coding_type;
-   unsigned fcode;
-   unsigned intra_dc_precision;
    unsigned picture_structure;
-   unsigned top_field_first;
    unsigned frame_pred_frame_dct;
-   unsigned concealment_motion_vectors;
    unsigned q_scale_type;
-   unsigned intra_vlc_format;
    unsigned alternate_scan;
-   unsigned full_pel_forward_vector;
-   unsigned full_pel_backward_vector;
-   struct pipe_buffer *intra_quantizer_matrix;
-   struct pipe_buffer *non_intra_quantizer_matrix;
-   struct pipe_buffer *chroma_intra_quantizer_matrix;
-   struct pipe_buffer *chroma_non_intra_quantizer_matrix;
+   unsigned intra_vlc_format;
+   unsigned concealment_motion_vectors;
+   unsigned f_code[2][2];
 };
-#endif
 
 #ifdef __cplusplus
 }