Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(756)

Unified Diff: media/gpu/vaapi_video_decode_accelerator.cc

Issue 2133993002: Parse VP9 compressed header (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: reset curr_frame_info_ when Reset Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/vp9_uncompressed_header_parser.cc ('k') | media/gpu/vp9_decoder.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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]);
« no previous file with comments | « media/filters/vp9_uncompressed_header_parser.cc ('k') | media/gpu/vp9_decoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698