Register filter loop parameters' start position in VP9 frame header.

This is needed in order to create corruptions (by altering the filter loop params) to test the corruption detection algorithm.

Bug: webrtc:358039777
Change-Id: Ib26e9c0187b79c13b9862898625742def4091b91
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/360780
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Emil Vardar (xWF) <vardar@google.com>
Cr-Commit-Position: refs/heads/main@{#42890}
This commit is contained in:
Emil Vardar 2024-08-29 12:09:50 +00:00 committed by WebRTC LUCI CQ
parent 427b712a49
commit 2c637aa16f
3 changed files with 6 additions and 0 deletions

View File

@ -488,6 +488,8 @@ void Parse(BitstreamReader& br,
// Frame context index.
frame_info->frame_context_idx = br.ReadBits(2);
frame_info->loop_filter_params_offset_bits =
total_buffer_size_bits - br.RemainingBitCount();
Vp9ReadLoopfilter(br);
// Read base QP.

View File

@ -106,6 +106,9 @@ struct Vp9UncompressedHeader {
size_t tile_cols_log2 = 0; // tile_cols = 1 << tile_cols_log2
size_t tile_rows_log2 = 0; // tile_rows = 1 << tile_rows_log2
absl::optional<size_t> render_size_offset_bits;
// Number of bits from the start of the frame header to where the loop filter
// parameters are located.
absl::optional<size_t> loop_filter_params_offset_bits;
Vp9InterpolationFilter interpolation_filter =
Vp9InterpolationFilter::kEightTap;
bool allow_high_precision_mv = false;

View File

@ -56,6 +56,7 @@ TEST(Vp9UncompressedHeaderParserTest, FrameWithSegmentation) {
EXPECT_EQ(frame_info->tile_cols_log2, 0u);
EXPECT_EQ(frame_info->tile_rows_log2, 0u);
EXPECT_EQ(frame_info->render_size_offset_bits, 64u);
EXPECT_EQ(frame_info->loop_filter_params_offset_bits, 100u);
EXPECT_EQ(frame_info->compressed_header_size, 23u);
EXPECT_EQ(frame_info->uncompressed_header_size, 37u);