X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgallium%2Finclude%2Fpipe%2Fp_video_state.h;h=2a64ffb560137ce50dc3e6a62d25923517ebb46e;hb=e5f7e09210838376ba64c6c09b6270046b0feab1;hp=1450f3488f9fe4df061b3c6fc6351eceffe8b5dd;hpb=1218430e1200a08cd64b6555d3fd1fd0274ad9e5;p=mesa.git diff --git a/src/gallium/include/pipe/p_video_state.h b/src/gallium/include/pipe/p_video_state.h index 1450f3488f9..2a64ffb5601 100644 --- a/src/gallium/include/pipe/p_video_state.h +++ b/src/gallium/include/pipe/p_video_state.h @@ -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 }