Calculate VP9 references to wrap at kPicIdLength instead of 16 bits.
Bug: webrtc:8293
Change-Id: Iedc09a10548c2112e99247a5845a02c1bd3e7b80
Reviewed-on: https://webrtc-review.googlesource.com/4200
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20017}
diff --git a/modules/video_coding/rtp_frame_reference_finder.cc b/modules/video_coding/rtp_frame_reference_finder.cc
index b62d497..23e8c81 100644
--- a/modules/video_coding/rtp_frame_reference_finder.cc
+++ b/modules/video_coding/rtp_frame_reference_finder.cc
@@ -422,7 +422,7 @@
frame->num_references = codec_header.num_ref_pics;
for (size_t i = 0; i < frame->num_references; ++i) {
frame->references[i] =
- Subtract<1 << 16>(frame->picture_id, codec_header.pid_diff[i]);
+ Subtract<kPicIdLength>(frame->picture_id, codec_header.pid_diff[i]);
}
UnwrapPictureIds(frame);
diff --git a/modules/video_coding/rtp_frame_reference_finder_unittest.cc b/modules/video_coding/rtp_frame_reference_finder_unittest.cc
index bd21ff1..5a81987 100644
--- a/modules/video_coding/rtp_frame_reference_finder_unittest.cc
+++ b/modules/video_coding/rtp_frame_reference_finder_unittest.cc
@@ -1313,5 +1313,12 @@
CheckReferencesVp9(8, 1, 7);
}
+TEST_F(TestRtpFrameReferenceFinder, WrappingFlexReference) {
+ InsertVp9Flex(0, 0, false, 0, 0, 0, 0, false, {1});
+
+ ASSERT_EQ(1UL, frames_from_callback_.size());
+ CheckReferencesVp9(1, 0, 0);
+}
+
} // namespace video_coding
} // namespace webrtc