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