summaryrefslogtreecommitdiff
path: root/libavcodec/vdpau_h264.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec/vdpau_h264.c')
-rw-r--r--libavcodec/vdpau_h264.c54
1 files changed, 28 insertions, 26 deletions
diff --git a/libavcodec/vdpau_h264.c b/libavcodec/vdpau_h264.c
index d03d127ee5..877e4e6435 100644
--- a/libavcodec/vdpau_h264.c
+++ b/libavcodec/vdpau_h264.c
@@ -120,6 +120,8 @@ static int vdpau_h264_start_frame(AVCodecContext *avctx,
const uint8_t *buffer, uint32_t size)
{
H264Context * const h = avctx->priv_data;
+ const PPS *pps = h->ps.pps;
+ const SPS *sps = h->ps.sps;
H264Picture *pic = h->cur_pic_ptr;
struct vdpau_picture_context *pic_ctx = pic->hwaccel_picture_private;
VdpPictureInfoH264 *info = &pic_ctx->info.h264;
@@ -135,37 +137,37 @@ static int vdpau_h264_start_frame(AVCodecContext *avctx,
info->frame_num = h->frame_num;
info->field_pic_flag = h->picture_structure != PICT_FRAME;
info->bottom_field_flag = h->picture_structure == PICT_BOTTOM_FIELD;
- info->num_ref_frames = h->sps.ref_frame_count;
- info->mb_adaptive_frame_field_flag = h->sps.mb_aff && !info->field_pic_flag;
- info->constrained_intra_pred_flag = h->pps.constrained_intra_pred;
- info->weighted_pred_flag = h->pps.weighted_pred;
- info->weighted_bipred_idc = h->pps.weighted_bipred_idc;
- info->frame_mbs_only_flag = h->sps.frame_mbs_only_flag;
- info->transform_8x8_mode_flag = h->pps.transform_8x8_mode;
- info->chroma_qp_index_offset = h->pps.chroma_qp_index_offset[0];
- info->second_chroma_qp_index_offset = h->pps.chroma_qp_index_offset[1];
- info->pic_init_qp_minus26 = h->pps.init_qp - 26;
- info->num_ref_idx_l0_active_minus1 = h->pps.ref_count[0] - 1;
- info->num_ref_idx_l1_active_minus1 = h->pps.ref_count[1] - 1;
- info->log2_max_frame_num_minus4 = h->sps.log2_max_frame_num - 4;
- info->pic_order_cnt_type = h->sps.poc_type;
- info->log2_max_pic_order_cnt_lsb_minus4 = h->sps.poc_type ? 0 : h->sps.log2_max_poc_lsb - 4;
- info->delta_pic_order_always_zero_flag = h->sps.delta_pic_order_always_zero_flag;
- info->direct_8x8_inference_flag = h->sps.direct_8x8_inference_flag;
+ info->num_ref_frames = sps->ref_frame_count;
+ info->mb_adaptive_frame_field_flag = sps->mb_aff && !info->field_pic_flag;
+ info->constrained_intra_pred_flag = pps->constrained_intra_pred;
+ info->weighted_pred_flag = pps->weighted_pred;
+ info->weighted_bipred_idc = pps->weighted_bipred_idc;
+ info->frame_mbs_only_flag = sps->frame_mbs_only_flag;
+ info->transform_8x8_mode_flag = pps->transform_8x8_mode;
+ info->chroma_qp_index_offset = pps->chroma_qp_index_offset[0];
+ info->second_chroma_qp_index_offset = pps->chroma_qp_index_offset[1];
+ info->pic_init_qp_minus26 = pps->init_qp - 26;
+ info->num_ref_idx_l0_active_minus1 = pps->ref_count[0] - 1;
+ info->num_ref_idx_l1_active_minus1 = pps->ref_count[1] - 1;
+ info->log2_max_frame_num_minus4 = sps->log2_max_frame_num - 4;
+ info->pic_order_cnt_type = sps->poc_type;
+ info->log2_max_pic_order_cnt_lsb_minus4 = sps->poc_type ? 0 : sps->log2_max_poc_lsb - 4;
+ info->delta_pic_order_always_zero_flag = sps->delta_pic_order_always_zero_flag;
+ info->direct_8x8_inference_flag = sps->direct_8x8_inference_flag;
#ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
- info2->qpprime_y_zero_transform_bypass_flag = h->sps.transform_bypass;
- info2->separate_colour_plane_flag = h->sps.residual_color_transform_flag;
+ info2->qpprime_y_zero_transform_bypass_flag = sps->transform_bypass;
+ info2->separate_colour_plane_flag = sps->residual_color_transform_flag;
#endif
- info->entropy_coding_mode_flag = h->pps.cabac;
- info->pic_order_present_flag = h->pps.pic_order_present;
- info->deblocking_filter_control_present_flag = h->pps.deblocking_filter_parameters_present;
- info->redundant_pic_cnt_present_flag = h->pps.redundant_pic_cnt_present;
+ info->entropy_coding_mode_flag = pps->cabac;
+ info->pic_order_present_flag = pps->pic_order_present;
+ info->deblocking_filter_control_present_flag = pps->deblocking_filter_parameters_present;
+ info->redundant_pic_cnt_present_flag = pps->redundant_pic_cnt_present;
- memcpy(info->scaling_lists_4x4, h->pps.scaling_matrix4,
+ memcpy(info->scaling_lists_4x4, pps->scaling_matrix4,
sizeof(info->scaling_lists_4x4));
- memcpy(info->scaling_lists_8x8[0], h->pps.scaling_matrix8[0],
+ memcpy(info->scaling_lists_8x8[0], pps->scaling_matrix8[0],
sizeof(info->scaling_lists_8x8[0]));
- memcpy(info->scaling_lists_8x8[1], h->pps.scaling_matrix8[3],
+ memcpy(info->scaling_lists_8x8[1], pps->scaling_matrix8[3],
sizeof(info->scaling_lists_8x8[1]));
vdpau_h264_set_reference_frames(avctx);