| Index: media/gpu/vaapi_video_decode_accelerator.cc
|
| diff --git a/media/gpu/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi_video_decode_accelerator.cc
|
| index 58d0b8f3df5159b07b13a689dcd84a7a3cd180ea..5d4d866f85bf2367af8a8684b3e87c3b0ffda465 100644
|
| --- a/media/gpu/vaapi_video_decode_accelerator.cc
|
| +++ b/media/gpu/vaapi_video_decode_accelerator.cc
|
| @@ -247,8 +247,8 @@ class VaapiVideoDecodeAccelerator::VaapiVP9Accelerator
|
|
|
| bool SubmitDecode(
|
| const scoped_refptr<VP9Picture>& pic,
|
| - const Vp9Segmentation& seg,
|
| - const Vp9LoopFilter& lf,
|
| + const Vp9SegmentationParams& seg,
|
| + const Vp9LoopFilterParams& lf,
|
| const std::vector<scoped_refptr<VP9Picture>>& ref_pictures) override;
|
|
|
| bool OutputPicture(const scoped_refptr<VP9Picture>& pic) override;
|
| @@ -1717,8 +1717,8 @@ VaapiVideoDecodeAccelerator::VaapiVP9Accelerator::CreateVP9Picture() {
|
|
|
| bool VaapiVideoDecodeAccelerator::VaapiVP9Accelerator::SubmitDecode(
|
| const scoped_refptr<VP9Picture>& pic,
|
| - const Vp9Segmentation& seg,
|
| - const Vp9LoopFilter& lf,
|
| + const Vp9SegmentationParams& seg,
|
| + const Vp9LoopFilterParams& lf,
|
| const std::vector<scoped_refptr<VP9Picture>>& ref_pictures) {
|
| VADecPictureParameterBufferVP9 pic_param;
|
| memset(&pic_param, 0, sizeof(pic_param));
|
| @@ -1731,8 +1731,9 @@ bool VaapiVideoDecodeAccelerator::VaapiVP9Accelerator::SubmitDecode(
|
| return false;
|
| }
|
|
|
| - pic_param.frame_width = base::checked_cast<uint16_t>(frame_hdr->width);
|
| - pic_param.frame_height = base::checked_cast<uint16_t>(frame_hdr->height);
|
| + pic_param.frame_width = base::checked_cast<uint16_t>(frame_hdr->frame_width);
|
| + pic_param.frame_height =
|
| + base::checked_cast<uint16_t>(frame_hdr->frame_height);
|
|
|
| CHECK_EQ(ref_pictures.size(), arraysize(pic_param.reference_frames));
|
| for (size_t i = 0; i < arraysize(pic_param.reference_frames); ++i) {
|
| @@ -1757,30 +1758,33 @@ bool VaapiVideoDecodeAccelerator::VaapiVP9Accelerator::SubmitDecode(
|
| FHDR_TO_PP_PF1(error_resilient_mode);
|
| FHDR_TO_PP_PF1(intra_only);
|
| FHDR_TO_PP_PF1(allow_high_precision_mv);
|
| - FHDR_TO_PP_PF2(mcomp_filter_type, frame_hdr->interp_filter);
|
| + FHDR_TO_PP_PF2(mcomp_filter_type, frame_hdr->interpolation_filter);
|
| FHDR_TO_PP_PF1(frame_parallel_decoding_mode);
|
| - FHDR_TO_PP_PF2(reset_frame_context, frame_hdr->reset_context);
|
| + FHDR_TO_PP_PF1(reset_frame_context);
|
| FHDR_TO_PP_PF1(refresh_frame_context);
|
| - FHDR_TO_PP_PF1(frame_context_idx);
|
| + FHDR_TO_PP_PF2(frame_context_idx, frame_hdr->frame_context_idx_to_save_probs);
|
| FHDR_TO_PP_PF2(segmentation_enabled, seg.enabled);
|
| FHDR_TO_PP_PF2(segmentation_temporal_update, seg.temporal_update);
|
| FHDR_TO_PP_PF2(segmentation_update_map, seg.update_map);
|
| - FHDR_TO_PP_PF2(last_ref_frame, frame_hdr->frame_refs[0]);
|
| - FHDR_TO_PP_PF2(last_ref_frame_sign_bias, frame_hdr->ref_sign_biases[0]);
|
| - FHDR_TO_PP_PF2(golden_ref_frame, frame_hdr->frame_refs[1]);
|
| - FHDR_TO_PP_PF2(golden_ref_frame_sign_bias, frame_hdr->ref_sign_biases[1]);
|
| - FHDR_TO_PP_PF2(alt_ref_frame, frame_hdr->frame_refs[2]);
|
| - FHDR_TO_PP_PF2(alt_ref_frame_sign_bias, frame_hdr->ref_sign_biases[2]);
|
| + FHDR_TO_PP_PF2(last_ref_frame, frame_hdr->ref_frame_idx[0]);
|
| + FHDR_TO_PP_PF2(last_ref_frame_sign_bias,
|
| + frame_hdr->ref_frame_sign_bias[Vp9RefType::VP9_FRAME_LAST]);
|
| + FHDR_TO_PP_PF2(golden_ref_frame, frame_hdr->ref_frame_idx[1]);
|
| + FHDR_TO_PP_PF2(golden_ref_frame_sign_bias,
|
| + frame_hdr->ref_frame_sign_bias[Vp9RefType::VP9_FRAME_GOLDEN]);
|
| + FHDR_TO_PP_PF2(alt_ref_frame, frame_hdr->ref_frame_idx[2]);
|
| + FHDR_TO_PP_PF2(alt_ref_frame_sign_bias,
|
| + frame_hdr->ref_frame_sign_bias[Vp9RefType::VP9_FRAME_ALTREF]);
|
| FHDR_TO_PP_PF2(lossless_flag, frame_hdr->quant_params.IsLossless());
|
| #undef FHDR_TO_PP_PF2
|
| #undef FHDR_TO_PP_PF1
|
|
|
| - pic_param.filter_level = lf.filter_level;
|
| - pic_param.sharpness_level = lf.sharpness_level;
|
| - pic_param.log2_tile_rows = frame_hdr->log2_tile_rows;
|
| - pic_param.log2_tile_columns = frame_hdr->log2_tile_cols;
|
| + pic_param.filter_level = lf.level;
|
| + pic_param.sharpness_level = lf.sharpness;
|
| + pic_param.log2_tile_rows = frame_hdr->tile_rows_log2;
|
| + pic_param.log2_tile_columns = frame_hdr->tile_cols_log2;
|
| pic_param.frame_header_length_in_bytes = frame_hdr->uncompressed_header_size;
|
| - pic_param.first_partition_size = frame_hdr->first_partition_size;
|
| + pic_param.first_partition_size = frame_hdr->header_size_in_bytes;
|
|
|
| ARRAY_MEMCPY_CHECKED(pic_param.mb_segment_tree_probs, seg.tree_probs);
|
| ARRAY_MEMCPY_CHECKED(pic_param.segment_pred_probs, seg.pred_probs);
|
| @@ -1797,18 +1801,19 @@ bool VaapiVideoDecodeAccelerator::VaapiVP9Accelerator::SubmitDecode(
|
| slice_param.slice_data_offset = 0;
|
| slice_param.slice_data_flag = VA_SLICE_DATA_FLAG_ALL;
|
|
|
| - static_assert(arraysize(Vp9Segmentation::feature_enabled) ==
|
| + static_assert(arraysize(Vp9SegmentationParams::feature_enabled) ==
|
| arraysize(slice_param.seg_param),
|
| "seg_param array of incorrect size");
|
| for (size_t i = 0; i < arraysize(slice_param.seg_param); ++i) {
|
| VASegmentParameterVP9& seg_param = slice_param.seg_param[i];
|
| #define SEG_TO_SP_SF(a, b) seg_param.segment_flags.fields.a = b
|
| - SEG_TO_SP_SF(segment_reference_enabled,
|
| - seg.FeatureEnabled(i, Vp9Segmentation::SEG_LVL_REF_FRAME));
|
| + SEG_TO_SP_SF(
|
| + segment_reference_enabled,
|
| + seg.FeatureEnabled(i, Vp9SegmentationParams::SEG_LVL_REF_FRAME));
|
| SEG_TO_SP_SF(segment_reference,
|
| - seg.FeatureData(i, Vp9Segmentation::SEG_LVL_REF_FRAME));
|
| + seg.FeatureData(i, Vp9SegmentationParams::SEG_LVL_REF_FRAME));
|
| SEG_TO_SP_SF(segment_reference_skipped,
|
| - seg.FeatureEnabled(i, Vp9Segmentation::SEG_LVL_SKIP));
|
| + seg.FeatureEnabled(i, Vp9SegmentationParams::SEG_LVL_SKIP));
|
| #undef SEG_TO_SP_SF
|
|
|
| ARRAY_MEMCPY_CHECKED(seg_param.filter_level, lf.lvl[i]);
|
|
|