/*
|
* Copyright 2015 Rockchip Electronics Co. LTD
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*/
|
|
#ifndef __M2VD_SYNTAX_H__
|
#define __M2VD_SYNTAX_H__
|
|
#include "rk_type.h"
|
|
typedef struct _DXVA_PicEntry_M2V {
|
union {
|
struct {
|
RK_U8 Index7Bits : 7;
|
RK_U8 AssociatedFlag : 1;
|
};
|
RK_U8 bPicEntry;
|
};
|
} DXVA_PicEntry_M2V;
|
|
|
/* ISO/IEC 13818-2 section 6.2.2.1: sequence_Dxvaer() */
|
typedef struct M2VDDxvaSeq_t {
|
RK_U32 decode_width; //horizontal_size_value
|
RK_U32 decode_height; //vertical_size_value
|
RK_S32 aspect_ratio_information;
|
RK_S32 frame_rate_code;
|
RK_S32 bit_rate_value;
|
RK_S32 vbv_buffer_size;
|
RK_S32 constrained_parameters_flag;
|
RK_U32 load_intra_quantizer_matrix; //[TEMP]
|
RK_U32 load_non_intra_quantizer_matrix; //[TEMP]
|
} M2VDDxvaSeq;
|
|
/* ISO/IEC 13818-2 section 6.2.2.3: sequence_extension() */
|
typedef struct M2VDDxvaSeqExt_t {
|
RK_S32 profile_and_level_indication;
|
RK_S32 progressive_sequence;
|
RK_S32 chroma_format;
|
RK_S32 low_delay;
|
RK_S32 frame_rate_extension_n;
|
RK_S32 frame_rate_extension_d;
|
} M2VDDxvaSeqExt;
|
|
/* ISO/IEC 13818-2 section 6.2.2.6: group_of_pictures_Dxvaer() */
|
typedef struct M2VDDxvaGop_t {
|
RK_S32 drop_flag;
|
RK_S32 hour;
|
RK_S32 minute;
|
RK_S32 sec;
|
RK_S32 frame;
|
RK_S32 closed_gop;
|
RK_S32 broken_link;
|
} M2VDDxvaGop;
|
|
|
/* ISO/IEC 13818-2 section 6.2.3: picture_Dxvaer() */
|
typedef struct M2VDDxvaPic_t {
|
RK_S32 temporal_reference;
|
RK_S32 picture_coding_type;
|
RK_S32 pre_picture_coding_type;
|
RK_S32 vbv_delay;
|
RK_S32 full_pel_forward_vector;
|
RK_S32 forward_f_code;
|
RK_S32 full_pel_backward_vector;
|
RK_S32 backward_f_code;
|
RK_S32 pre_temporal_reference;
|
} M2VDDxvaPic;
|
|
|
/* ISO/IEC 13818-2 section 6.2.2.4: sequence_display_extension() */
|
typedef struct M2VDDxvaSeqDispExt_t {
|
RK_S32 video_format;
|
RK_S32 color_description;
|
RK_S32 color_primaries;
|
RK_S32 transfer_characteristics;
|
RK_S32 matrix_coefficients;
|
} M2VDDxvaSeqDispExt;
|
|
/* ISO/IEC 13818-2 section 6.2.3.1: picture_coding_extension() Dxvaer */
|
typedef struct M2VDDxvaPicCodeExt_t {
|
RK_S32 f_code[2][2];
|
RK_S32 intra_dc_precision;
|
RK_S32 picture_structure;
|
RK_S32 top_field_first;
|
RK_S32 frame_pred_frame_dct;
|
RK_S32 concealment_motion_vectors;
|
RK_S32 q_scale_type;
|
RK_S32 intra_vlc_format;
|
RK_S32 alternate_scan;
|
RK_S32 repeat_first_field;
|
RK_S32 chroma_420_type;
|
RK_S32 progressive_frame;
|
RK_S32 composite_display_flag;
|
RK_S32 v_axis;
|
RK_S32 field_sequence;
|
RK_S32 sub_carrier;
|
RK_S32 burst_amplitude;
|
RK_S32 sub_carrier_phase;
|
} M2VDDxvaPicCodeExt;
|
|
|
/* ISO/IEC 13818-2 section 6.2.3.3: picture_display_extension() Dxvaer */
|
typedef struct M2VDDxvaPicDispExt_t {
|
RK_S32 frame_center_horizontal_offset[3];
|
RK_S32 frame_center_vertical_offset[3];
|
} M2VDDxvaPicDispExt;
|
|
|
typedef struct M2VDDxvaParam_t {
|
RK_U32 bitstream_length;
|
RK_U32 bitstream_start_bit;
|
RK_U32 bitstream_offset;
|
RK_U8 *qp_tab;
|
|
DXVA_PicEntry_M2V CurrPic;
|
DXVA_PicEntry_M2V frame_refs[4];
|
|
RK_U32 seq_ext_head_dec_flag;
|
|
M2VDDxvaSeq seq;
|
M2VDDxvaSeqExt seq_ext;
|
M2VDDxvaGop gop;
|
M2VDDxvaPic pic;
|
M2VDDxvaSeqDispExt seq_disp_ext;
|
M2VDDxvaPicCodeExt pic_code_ext;
|
M2VDDxvaPicDispExt pic_disp_ext;
|
} M2VDDxvaParam;
|
|
#endif
|