From 1811c04f22a26da3ed2832373a5c92a9786420c3 Mon Sep 17 00:00:00 2001 From: Philip Eliasson Date: Fri, 7 Sep 2018 12:35:23 +0000 Subject: [PATCH] Revert "Remove RTPVideoHeader::vp8() accessors." This reverts commit af7afc66427b0e9109e7d492f2805d63d239b914. Reason for revert: Break downstream projects. Original change's description: > Remove RTPVideoHeader::vp8() accessors. > > Bug: none > Change-Id: Ia7d65148fb36a8f26647bee8a876ce7217ff8a68 > Reviewed-on: https://webrtc-review.googlesource.com/93321 > Reviewed-by: Niels Moller > Reviewed-by: Stefan Holmer > Reviewed-by: Danil Chapovalov > Commit-Queue: Philip Eliasson > Cr-Commit-Position: refs/heads/master@{#24626} TBR=danilchap@webrtc.org,nisse@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,philipel@webrtc.org,holmer@google.com Change-Id: I3f7f19c0ea810c0fd988c59e6556bbea9b756b33 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: none Reviewed-on: https://webrtc-review.googlesource.com/98864 Reviewed-by: Philip Eliasson Commit-Queue: Philip Eliasson Cr-Commit-Position: refs/heads/master@{#24628} --- call/rtp_payload_params.cc | 21 +-- call/rtp_payload_params_unittest.cc | 30 ++-- modules/rtp_rtcp/source/rtp_format_vp8.cc | 23 +-- .../source/rtp_format_vp8_unittest.cc | 27 +-- .../rtp_rtcp/source/rtp_rtcp_impl_unittest.cc | 2 +- .../rtp_rtcp/source/rtp_sender_unittest.cc | 18 +- modules/rtp_rtcp/source/rtp_sender_video.cc | 18 +- modules/rtp_rtcp/source/rtp_video_header.h | 24 ++- .../video_coding/decoding_state_unittest.cc | 158 +++++++++--------- modules/video_coding/encoded_frame.cc | 15 +- .../rtp_frame_reference_finder_unittest.cc | 10 +- modules/video_coding/session_info.cc | 31 +--- .../video_coding/video_receiver_unittest.cc | 7 +- test/configurable_frame_size_encoder.cc | 11 +- test/configurable_frame_size_encoder.h | 3 - test/layer_filtering_transport.cc | 4 +- video/picture_id_tests.cc | 11 +- video/video_analyzer.cc | 4 +- video/video_send_stream_tests.cc | 5 +- 19 files changed, 185 insertions(+), 237 deletions(-) diff --git a/call/rtp_payload_params.cc b/call/rtp_payload_params.cc index 0c8b30755b..0dbe1837c6 100644 --- a/call/rtp_payload_params.cc +++ b/call/rtp_payload_params.cc @@ -27,12 +27,11 @@ void PopulateRtpWithCodecSpecifics(const CodecSpecificInfo& info, rtp->codec = info.codecType; switch (info.codecType) { case kVideoCodecVP8: { - auto& vp8_header = rtp->video_type_header.emplace(); - vp8_header.InitRTPVideoHeaderVP8(); - vp8_header.nonReference = info.codecSpecific.VP8.nonReference; - vp8_header.temporalIdx = info.codecSpecific.VP8.temporalIdx; - vp8_header.layerSync = info.codecSpecific.VP8.layerSync; - vp8_header.keyIdx = info.codecSpecific.VP8.keyIdx; + rtp->vp8().InitRTPVideoHeaderVP8(); + rtp->vp8().nonReference = info.codecSpecific.VP8.nonReference; + rtp->vp8().temporalIdx = info.codecSpecific.VP8.temporalIdx; + rtp->vp8().layerSync = info.codecSpecific.VP8.layerSync; + rtp->vp8().keyIdx = info.codecSpecific.VP8.keyIdx; rtp->simulcastIdx = spatial_index.value_or(0); return; } @@ -172,15 +171,13 @@ void RtpPayloadParams::SetCodecSpecific(RTPVideoHeader* rtp_video_header, state_.picture_id = (static_cast(state_.picture_id) + 1) & 0x7FFF; } if (rtp_video_header->codec == kVideoCodecVP8) { - auto& vp8_header = - absl::get(rtp_video_header->video_type_header); - vp8_header.pictureId = state_.picture_id; + rtp_video_header->vp8().pictureId = state_.picture_id; - if (vp8_header.temporalIdx != kNoTemporalIdx) { - if (vp8_header.temporalIdx == 0) { + if (rtp_video_header->vp8().temporalIdx != kNoTemporalIdx) { + if (rtp_video_header->vp8().temporalIdx == 0) { ++state_.tl0_pic_idx; } - vp8_header.tl0PicIdx = state_.tl0_pic_idx; + rtp_video_header->vp8().tl0PicIdx = state_.tl0_pic_idx; } } if (rtp_video_header->codec == kVideoCodecVP9) { diff --git a/call/rtp_payload_params_unittest.cc b/call/rtp_payload_params_unittest.cc index c125c4ee8f..b0c00277e5 100644 --- a/call/rtp_payload_params_unittest.cc +++ b/call/rtp_payload_params_unittest.cc @@ -61,14 +61,12 @@ TEST(RtpPayloadParamsTest, InfoMappedToRtpVideoHeader_Vp8) { EXPECT_EQ(VideoContentType::SCREENSHARE, header.content_type); EXPECT_EQ(1, header.simulcastIdx); EXPECT_EQ(kVideoCodecVP8, header.codec); - const auto& vp8_header = - absl::get(header.video_type_header); - EXPECT_EQ(kPictureId + 2, vp8_header.pictureId); - EXPECT_EQ(kTemporalIdx, vp8_header.temporalIdx); - EXPECT_EQ(kTl0PicIdx + 1, vp8_header.tl0PicIdx); - EXPECT_EQ(kNoKeyIdx, vp8_header.keyIdx); - EXPECT_TRUE(vp8_header.layerSync); - EXPECT_TRUE(vp8_header.nonReference); + EXPECT_EQ(kPictureId + 2, header.vp8().pictureId); + EXPECT_EQ(kTemporalIdx, header.vp8().temporalIdx); + EXPECT_EQ(kTl0PicIdx + 1, header.vp8().tl0PicIdx); + EXPECT_EQ(kNoKeyIdx, header.vp8().keyIdx); + EXPECT_TRUE(header.vp8().layerSync); + EXPECT_TRUE(header.vp8().nonReference); } TEST(RtpPayloadParamsTest, InfoMappedToRtpVideoHeader_Vp9) { @@ -159,8 +157,7 @@ TEST(RtpPayloadParamsTest, PictureIdIsSetForVp8) { RTPVideoHeader header = params.GetRtpVideoHeader(encoded_image, &codec_info, kDontCare); EXPECT_EQ(kVideoCodecVP8, header.codec); - EXPECT_EQ(kInitialPictureId1 + 1, - absl::get(header.video_type_header).pictureId); + EXPECT_EQ(kInitialPictureId1 + 1, header.vp8().pictureId); // State should hold latest used picture id and tl0_pic_idx. state = params.state(); @@ -183,8 +180,7 @@ TEST(RtpPayloadParamsTest, PictureIdWraps) { RTPVideoHeader header = params.GetRtpVideoHeader(encoded_image, &codec_info, kDontCare); EXPECT_EQ(kVideoCodecVP8, header.codec); - EXPECT_EQ(0, - absl::get(header.video_type_header).pictureId); + EXPECT_EQ(0, header.vp8().pictureId); // State should hold latest used picture id and tl0_pic_idx. EXPECT_EQ(0, params.state().picture_id); // Wrapped. @@ -209,18 +205,16 @@ TEST(RtpPayloadParamsTest, Tl0PicIdxUpdatedForVp8) { params.GetRtpVideoHeader(encoded_image, &codec_info, kDontCare); EXPECT_EQ(kVideoCodecVP8, header.codec); - const auto& vp8_header = - absl::get(header.video_type_header); - EXPECT_EQ(kInitialPictureId1 + 1, vp8_header.pictureId); - EXPECT_EQ(kInitialTl0PicIdx1, vp8_header.tl0PicIdx); + EXPECT_EQ(kInitialPictureId1 + 1, header.vp8().pictureId); + EXPECT_EQ(kInitialTl0PicIdx1, header.vp8().tl0PicIdx); // OnEncodedImage, temporalIdx: 0. codec_info.codecSpecific.VP8.temporalIdx = 0; header = params.GetRtpVideoHeader(encoded_image, &codec_info, kDontCare); EXPECT_EQ(kVideoCodecVP8, header.codec); - EXPECT_EQ(kInitialPictureId1 + 2, vp8_header.pictureId); - EXPECT_EQ(kInitialTl0PicIdx1 + 1, vp8_header.tl0PicIdx); + EXPECT_EQ(kInitialPictureId1 + 2, header.vp8().pictureId); + EXPECT_EQ(kInitialTl0PicIdx1 + 1, header.vp8().tl0PicIdx); // State should hold latest used picture id and tl0_pic_idx. EXPECT_EQ(kInitialPictureId1 + 2, params.state().picture_id); diff --git a/modules/rtp_rtcp/source/rtp_format_vp8.cc b/modules/rtp_rtcp/source/rtp_format_vp8.cc index f40434e7e0..40bc291c7c 100644 --- a/modules/rtp_rtcp/source/rtp_format_vp8.cc +++ b/modules/rtp_rtcp/source/rtp_format_vp8.cc @@ -318,16 +318,16 @@ bool RtpDepacketizerVp8::Parse(ParsedPayload* parsed_payload, beginning_of_partition && (partition_id == 0); parsed_payload->video_header().simulcastIdx = 0; parsed_payload->video_header().codec = kVideoCodecVP8; - auto& vp8_header = parsed_payload->video_header() - .video_type_header.emplace(); - vp8_header.nonReference = (*payload_data & 0x20) ? true : false; // N bit - vp8_header.partitionId = partition_id; - vp8_header.beginningOfPartition = beginning_of_partition; - vp8_header.pictureId = kNoPictureId; - vp8_header.tl0PicIdx = kNoTl0PicIdx; - vp8_header.temporalIdx = kNoTemporalIdx; - vp8_header.layerSync = false; - vp8_header.keyIdx = kNoKeyIdx; + parsed_payload->video_header().vp8().nonReference = + (*payload_data & 0x20) ? true : false; // N bit + parsed_payload->video_header().vp8().partitionId = partition_id; + parsed_payload->video_header().vp8().beginningOfPartition = + beginning_of_partition; + parsed_payload->video_header().vp8().pictureId = kNoPictureId; + parsed_payload->video_header().vp8().tl0PicIdx = kNoTl0PicIdx; + parsed_payload->video_header().vp8().temporalIdx = kNoTemporalIdx; + parsed_payload->video_header().vp8().layerSync = false; + parsed_payload->video_header().vp8().keyIdx = kNoKeyIdx; if (partition_id > 8) { // Weak check for corrupt payload_data: PartID MUST NOT be larger than 8. @@ -344,7 +344,8 @@ bool RtpDepacketizerVp8::Parse(ParsedPayload* parsed_payload, if (extension) { const int parsed_bytes = - ParseVP8Extension(&vp8_header, payload_data, payload_data_length); + ParseVP8Extension(&parsed_payload->video_header().vp8(), payload_data, + payload_data_length); if (parsed_bytes < 0) return false; payload_data += parsed_bytes; diff --git a/modules/rtp_rtcp/source/rtp_format_vp8_unittest.cc b/modules/rtp_rtcp/source/rtp_format_vp8_unittest.cc index f9cc48c776..eb2132d13e 100644 --- a/modules/rtp_rtcp/source/rtp_format_vp8_unittest.cc +++ b/modules/rtp_rtcp/source/rtp_format_vp8_unittest.cc @@ -57,11 +57,9 @@ constexpr RtpPacketizer::PayloadSizeLimits kNoSizeLimits; // +-+-+-+-+-+-+-+-+ void VerifyBasicHeader(RTPVideoHeader* header, bool N, bool S, int part_id) { ASSERT_TRUE(header != NULL); - const auto& vp8_header = - absl::get(header->video_type_header); - EXPECT_EQ(N, vp8_header.nonReference); - EXPECT_EQ(S, vp8_header.beginningOfPartition); - EXPECT_EQ(part_id, vp8_header.partitionId); + EXPECT_EQ(N, header->vp8().nonReference); + EXPECT_EQ(S, header->vp8().beginningOfPartition); + EXPECT_EQ(part_id, header->vp8().partitionId); } void VerifyExtensions(RTPVideoHeader* header, @@ -70,12 +68,10 @@ void VerifyExtensions(RTPVideoHeader* header, uint8_t temporal_idx, /* T */ int key_idx /* K */) { ASSERT_TRUE(header != NULL); - const auto& vp8_header = - absl::get(header->video_type_header); - EXPECT_EQ(picture_id, vp8_header.pictureId); - EXPECT_EQ(tl0_pic_idx, vp8_header.tl0PicIdx); - EXPECT_EQ(temporal_idx, vp8_header.temporalIdx); - EXPECT_EQ(key_idx, vp8_header.keyIdx); + EXPECT_EQ(picture_id, header->vp8().pictureId); + EXPECT_EQ(tl0_pic_idx, header->vp8().tl0PicIdx); + EXPECT_EQ(temporal_idx, header->vp8().temporalIdx); + EXPECT_EQ(key_idx, header->vp8().keyIdx); } } // namespace @@ -272,9 +268,7 @@ TEST_F(RtpDepacketizerVp8Test, TIDAndLayerSync) { VerifyBasicHeader(&payload.video_header(), 0, 0, 8); VerifyExtensions(&payload.video_header(), kNoPictureId, kNoTl0PicIdx, 2, kNoKeyIdx); - EXPECT_FALSE( - absl::get(payload.video_header().video_type_header) - .layerSync); + EXPECT_FALSE(payload.video_header().vp8().layerSync); } TEST_F(RtpDepacketizerVp8Test, KeyIdx) { @@ -357,10 +351,7 @@ TEST_F(RtpDepacketizerVp8Test, TestWithPacketizer) { VerifyExtensions(&payload.video_header(), input_header.pictureId, input_header.tl0PicIdx, input_header.temporalIdx, input_header.keyIdx); - EXPECT_EQ( - absl::get(payload.video_header().video_type_header) - .layerSync, - input_header.layerSync); + EXPECT_EQ(payload.video_header().vp8().layerSync, input_header.layerSync); } TEST_F(RtpDepacketizerVp8Test, TestEmptyPayload) { diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc index 2cd46bb54a..2de6175bc8 100644 --- a/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc +++ b/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc @@ -240,7 +240,7 @@ class RtpRtcpImplTest : public ::testing::Test { rtp_video_header.is_first_packet_in_frame = true; rtp_video_header.simulcastIdx = 0; rtp_video_header.codec = kVideoCodecVP8; - rtp_video_header.video_type_header = vp8_header; + rtp_video_header.vp8() = vp8_header; rtp_video_header.video_timing = {0u, 0u, 0u, 0u, 0u, 0u, false}; const uint8_t payload[100] = {0}; diff --git a/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_unittest.cc index f738a31a85..d143c8700e 100644 --- a/modules/rtp_rtcp/source/rtp_sender_unittest.cc +++ b/modules/rtp_rtcp/source/rtp_sender_unittest.cc @@ -1842,8 +1842,7 @@ TEST_P(RtpSenderVideoTest, RetransmissionTypesH264) { TEST_P(RtpSenderVideoTest, RetransmissionTypesVP8BaseLayer) { RTPVideoHeader header; header.codec = kVideoCodecVP8; - auto& vp8_header = header.video_type_header.emplace(); - vp8_header.temporalIdx = 0; + header.vp8().temporalIdx = 0; EXPECT_EQ(kDontRetransmit, rtp_sender_video_->GetStorageType( @@ -1875,9 +1874,8 @@ TEST_P(RtpSenderVideoTest, RetransmissionTypesVP8HigherLayers) { RTPVideoHeader header; header.codec = kVideoCodecVP8; - auto& vp8_header = header.video_type_header.emplace(); for (int tid = 1; tid <= kMaxTemporalStreams; ++tid) { - vp8_header.temporalIdx = tid; + header.vp8().temporalIdx = tid; EXPECT_EQ(kDontRetransmit, rtp_sender_video_->GetStorageType( header, kRetransmitOff, @@ -1940,9 +1938,8 @@ TEST_P(RtpSenderVideoTest, ConditionalRetransmit) { (RTPSenderVideo::kTLRateWindowSizeMs + (kFrameIntervalMs / 2)) / kFrameIntervalMs; constexpr int kPattern[] = {0, 2, 1, 2}; - auto& vp8_header = header.video_type_header.emplace(); for (size_t i = 0; i < arraysize(kPattern) * kNumRepetitions; ++i) { - vp8_header.temporalIdx = kPattern[i % arraysize(kPattern)]; + header.vp8().temporalIdx = kPattern[i % arraysize(kPattern)]; rtp_sender_video_->GetStorageType(header, kSettings, kRttMs); fake_clock_.AdvanceTimeMilliseconds(kFrameIntervalMs); } @@ -1951,7 +1948,7 @@ TEST_P(RtpSenderVideoTest, ConditionalRetransmit) { // right now. We will wait at most one expected retransmission time before // acknowledging that it did not arrive, which means this frame and the next // will not be retransmitted. - vp8_header.temporalIdx = 1; + header.vp8().temporalIdx = 1; EXPECT_EQ(StorageType::kDontRetransmit, rtp_sender_video_->GetStorageType(header, kSettings, kRttMs)); fake_clock_.AdvanceTimeMilliseconds(kFrameIntervalMs); @@ -1967,7 +1964,7 @@ TEST_P(RtpSenderVideoTest, ConditionalRetransmit) { // Insert a frame for TL2. We just had frame in TL1, so the next one there is // in three frames away. TL0 is still too far in the past. So, allow // retransmission. - vp8_header.temporalIdx = 2; + header.vp8().temporalIdx = 2; EXPECT_EQ(StorageType::kAllowRetransmission, rtp_sender_video_->GetStorageType(header, kSettings, kRttMs)); fake_clock_.AdvanceTimeMilliseconds(kFrameIntervalMs); @@ -1998,9 +1995,8 @@ TEST_P(RtpSenderVideoTest, ConditionalRetransmitLimit) { (RTPSenderVideo::kTLRateWindowSizeMs + (kFrameIntervalMs / 2)) / kFrameIntervalMs; constexpr int kPattern[] = {0, 2, 2, 2}; - auto& vp8_header = header.video_type_header.emplace(); for (size_t i = 0; i < arraysize(kPattern) * kNumRepetitions; ++i) { - vp8_header.temporalIdx = kPattern[i % arraysize(kPattern)]; + header.vp8().temporalIdx = kPattern[i % arraysize(kPattern)]; rtp_sender_video_->GetStorageType(header, kSettings, kRttMs); fake_clock_.AdvanceTimeMilliseconds(kFrameIntervalMs); @@ -2011,7 +2007,7 @@ TEST_P(RtpSenderVideoTest, ConditionalRetransmitLimit) { // we don't store for retransmission because we expect a frame in a lower // layer, but that last frame in TL1 was a long time ago in absolute terms, // so allow retransmission anyway. - vp8_header.temporalIdx = 1; + header.vp8().temporalIdx = 1; EXPECT_EQ(StorageType::kAllowRetransmission, rtp_sender_video_->GetStorageType(header, kSettings, kRttMs)); } diff --git a/modules/rtp_rtcp/source/rtp_sender_video.cc b/modules/rtp_rtcp/source/rtp_sender_video.cc index 0f1fdca6a8..f72740e9a6 100644 --- a/modules/rtp_rtcp/source/rtp_sender_video.cc +++ b/modules/rtp_rtcp/source/rtp_sender_video.cc @@ -466,15 +466,15 @@ StorageType RTPSenderVideo::GetStorageType( } uint8_t RTPSenderVideo::GetTemporalId(const RTPVideoHeader& header) { - struct TemporalIdGetter { - uint8_t operator()(const RTPVideoHeaderVP8& vp8) { return vp8.temporalIdx; } - uint8_t operator()(const RTPVideoHeaderVP9& vp9) { - return vp9.temporal_idx; - } - uint8_t operator()(const RTPVideoHeaderH264&) { return kNoTemporalIdx; } - uint8_t operator()(const absl::monostate&) { return kNoTemporalIdx; } - }; - return absl::visit(TemporalIdGetter(), header.video_type_header); + switch (header.codec) { + case kVideoCodecVP8: + return header.vp8().temporalIdx; + case kVideoCodecVP9: + return absl::get(header.video_type_header) + .temporal_idx; + default: + return kNoTemporalIdx; + } } bool RTPSenderVideo::UpdateConditionalRetransmit( diff --git a/modules/rtp_rtcp/source/rtp_video_header.h b/modules/rtp_rtcp/source/rtp_video_header.h index 6c7a150b43..520f4d4d66 100644 --- a/modules/rtp_rtcp/source/rtp_video_header.h +++ b/modules/rtp_rtcp/source/rtp_video_header.h @@ -21,10 +21,8 @@ #include "modules/video_coding/codecs/vp9/include/vp9_globals.h" namespace webrtc { -using RTPVideoTypeHeader = absl::variant; +using RTPVideoTypeHeader = + absl::variant; struct RTPVideoHeader { struct GenericDescriptorInfo { @@ -44,6 +42,21 @@ struct RTPVideoHeader { ~RTPVideoHeader(); + // TODO(philipel): Remove when downstream projects have been updated. + RTPVideoHeaderVP8& vp8() { + if (!absl::holds_alternative(video_type_header)) + video_type_header.emplace(); + + return absl::get(video_type_header); + } + // TODO(philipel): Remove when downstream projects have been updated. + const RTPVideoHeaderVP8& vp8() const { + if (!absl::holds_alternative(video_type_header)) + video_type_header.emplace(); + + return absl::get(video_type_header); + } + absl::optional generic; uint16_t width = 0; @@ -56,7 +69,8 @@ struct RTPVideoHeader { PlayoutDelay playout_delay; VideoSendTiming video_timing; - RTPVideoTypeHeader video_type_header; + // TODO(philipel): remove mutable when downstream projects have been updated. + mutable RTPVideoTypeHeader video_type_header; }; } // namespace webrtc diff --git a/modules/video_coding/decoding_state_unittest.cc b/modules/video_coding/decoding_state_unittest.cc index 82c6f1202b..0049ca7e1d 100644 --- a/modules/video_coding/decoding_state_unittest.cc +++ b/modules/video_coding/decoding_state_unittest.cc @@ -37,9 +37,7 @@ TEST(TestDecodingState, FrameContinuity) { packet.seqNum = 0xffff; packet.frameType = kVideoFrameDelta; packet.video_header.codec = kVideoCodecVP8; - auto& vp8_header = - packet.video_header.video_type_header.emplace(); - vp8_header.pictureId = 0x007F; + packet.video_header.vp8().pictureId = 0x007F; FrameData frame_data; frame_data.rtt_ms = 0; frame_data.rolling_average_packets_per_frame = -1; @@ -55,17 +53,17 @@ TEST(TestDecodingState, FrameContinuity) { packet.frameType = kVideoFrameDelta; // Use pictureId packet.is_first_packet_in_frame = false; - vp8_header.pictureId = 0x0002; + packet.video_header.vp8().pictureId = 0x0002; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_FALSE(dec_state.ContinuousFrame(&frame)); frame.Reset(); - vp8_header.pictureId = 0; + packet.video_header.vp8().pictureId = 0; packet.seqNum = 10; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_TRUE(dec_state.ContinuousFrame(&frame)); // Use sequence numbers. - vp8_header.pictureId = kNoPictureId; + packet.video_header.vp8().pictureId = kNoPictureId; frame.Reset(); packet.seqNum = dec_state.sequence_num() - 1u; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); @@ -84,9 +82,9 @@ TEST(TestDecodingState, FrameContinuity) { // Insert packet with temporal info. dec_state.Reset(); frame.Reset(); - vp8_header.tl0PicIdx = 0; - vp8_header.temporalIdx = 0; - vp8_header.pictureId = 0; + packet.video_header.vp8().tl0PicIdx = 0; + packet.video_header.vp8().temporalIdx = 0; + packet.video_header.vp8().pictureId = 0; packet.seqNum = 1; packet.timestamp = 1; EXPECT_TRUE(dec_state.full_sync()); @@ -95,9 +93,9 @@ TEST(TestDecodingState, FrameContinuity) { EXPECT_TRUE(dec_state.full_sync()); frame.Reset(); // 1 layer up - still good. - vp8_header.tl0PicIdx = 0; - vp8_header.temporalIdx = 1; - vp8_header.pictureId = 1; + packet.video_header.vp8().tl0PicIdx = 0; + packet.video_header.vp8().temporalIdx = 1; + packet.video_header.vp8().pictureId = 1; packet.seqNum = 2; packet.timestamp = 2; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); @@ -106,18 +104,18 @@ TEST(TestDecodingState, FrameContinuity) { EXPECT_TRUE(dec_state.full_sync()); frame.Reset(); // Lost non-base layer packet => should update sync parameter. - vp8_header.tl0PicIdx = 0; - vp8_header.temporalIdx = 3; - vp8_header.pictureId = 3; + packet.video_header.vp8().tl0PicIdx = 0; + packet.video_header.vp8().temporalIdx = 3; + packet.video_header.vp8().pictureId = 3; packet.seqNum = 4; packet.timestamp = 4; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_FALSE(dec_state.ContinuousFrame(&frame)); // Now insert the next non-base layer (belonging to a next tl0PicId). frame.Reset(); - vp8_header.tl0PicIdx = 1; - vp8_header.temporalIdx = 2; - vp8_header.pictureId = 4; + packet.video_header.vp8().tl0PicIdx = 1; + packet.video_header.vp8().temporalIdx = 2; + packet.video_header.vp8().pictureId = 4; packet.seqNum = 5; packet.timestamp = 5; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); @@ -127,9 +125,9 @@ TEST(TestDecodingState, FrameContinuity) { EXPECT_TRUE(dec_state.full_sync()); // Next base layer (dropped interim non-base layers) - should update sync. frame.Reset(); - vp8_header.tl0PicIdx = 1; - vp8_header.temporalIdx = 0; - vp8_header.pictureId = 5; + packet.video_header.vp8().tl0PicIdx = 1; + packet.video_header.vp8().temporalIdx = 0; + packet.video_header.vp8().pictureId = 5; packet.seqNum = 6; packet.timestamp = 6; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); @@ -139,18 +137,18 @@ TEST(TestDecodingState, FrameContinuity) { // Check wrap for temporal layers. frame.Reset(); - vp8_header.tl0PicIdx = 0x00FF; - vp8_header.temporalIdx = 0; - vp8_header.pictureId = 6; + packet.video_header.vp8().tl0PicIdx = 0x00FF; + packet.video_header.vp8().temporalIdx = 0; + packet.video_header.vp8().pictureId = 6; packet.seqNum = 7; packet.timestamp = 7; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); dec_state.SetState(&frame); EXPECT_FALSE(dec_state.full_sync()); frame.Reset(); - vp8_header.tl0PicIdx = 0x0000; - vp8_header.temporalIdx = 0; - vp8_header.pictureId = 7; + packet.video_header.vp8().tl0PicIdx = 0x0000; + packet.video_header.vp8().temporalIdx = 0; + packet.video_header.vp8().pictureId = 7; packet.seqNum = 8; packet.timestamp = 8; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); @@ -216,11 +214,9 @@ TEST(TestDecodingState, MultiLayerBehavior) { packet.video_header.codec = kVideoCodecVP8; packet.timestamp = 0; packet.seqNum = 0; - auto& vp8_header = - packet.video_header.video_type_header.emplace(); - vp8_header.tl0PicIdx = 0; - vp8_header.temporalIdx = 0; - vp8_header.pictureId = 0; + packet.video_header.vp8().tl0PicIdx = 0; + packet.video_header.vp8().temporalIdx = 0; + packet.video_header.vp8().pictureId = 0; FrameData frame_data; frame_data.rtt_ms = 0; frame_data.rolling_average_packets_per_frame = -1; @@ -230,9 +226,9 @@ TEST(TestDecodingState, MultiLayerBehavior) { frame.Reset(); packet.timestamp = 1; packet.seqNum = 1; - vp8_header.tl0PicIdx = 0; - vp8_header.temporalIdx = 1; - vp8_header.pictureId = 1; + packet.video_header.vp8().tl0PicIdx = 0; + packet.video_header.vp8().temporalIdx = 1; + packet.video_header.vp8().pictureId = 1; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_TRUE(dec_state.ContinuousFrame(&frame)); dec_state.SetState(&frame); @@ -242,9 +238,9 @@ TEST(TestDecodingState, MultiLayerBehavior) { frame.Reset(); packet.timestamp = 3; packet.seqNum = 3; - vp8_header.tl0PicIdx = 0; - vp8_header.temporalIdx = 3; - vp8_header.pictureId = 3; + packet.video_header.vp8().tl0PicIdx = 0; + packet.video_header.vp8().temporalIdx = 3; + packet.video_header.vp8().pictureId = 3; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_FALSE(dec_state.ContinuousFrame(&frame)); dec_state.SetState(&frame); @@ -253,9 +249,9 @@ TEST(TestDecodingState, MultiLayerBehavior) { frame.Reset(); packet.timestamp = 4; packet.seqNum = 4; - vp8_header.tl0PicIdx = 1; - vp8_header.temporalIdx = 0; - vp8_header.pictureId = 4; + packet.video_header.vp8().tl0PicIdx = 1; + packet.video_header.vp8().temporalIdx = 0; + packet.video_header.vp8().pictureId = 4; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_TRUE(dec_state.ContinuousFrame(&frame)); dec_state.SetState(&frame); @@ -267,9 +263,9 @@ TEST(TestDecodingState, MultiLayerBehavior) { packet.is_first_packet_in_frame = 1; packet.timestamp = 5; packet.seqNum = 5; - vp8_header.tl0PicIdx = 2; - vp8_header.temporalIdx = 0; - vp8_header.pictureId = 5; + packet.video_header.vp8().tl0PicIdx = 2; + packet.video_header.vp8().temporalIdx = 0; + packet.video_header.vp8().pictureId = 5; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_TRUE(dec_state.ContinuousFrame(&frame)); dec_state.SetState(&frame); @@ -280,9 +276,9 @@ TEST(TestDecodingState, MultiLayerBehavior) { packet.frameType = kVideoFrameDelta; packet.timestamp = 6; packet.seqNum = 6; - vp8_header.tl0PicIdx = 3; - vp8_header.temporalIdx = 0; - vp8_header.pictureId = 6; + packet.video_header.vp8().tl0PicIdx = 3; + packet.video_header.vp8().temporalIdx = 0; + packet.video_header.vp8().pictureId = 6; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_TRUE(dec_state.ContinuousFrame(&frame)); EXPECT_TRUE(dec_state.full_sync()); @@ -291,9 +287,9 @@ TEST(TestDecodingState, MultiLayerBehavior) { packet.is_first_packet_in_frame = 1; packet.timestamp = 8; packet.seqNum = 8; - vp8_header.tl0PicIdx = 4; - vp8_header.temporalIdx = 0; - vp8_header.pictureId = 8; + packet.video_header.vp8().tl0PicIdx = 4; + packet.video_header.vp8().temporalIdx = 0; + packet.video_header.vp8().pictureId = 8; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_FALSE(dec_state.ContinuousFrame(&frame)); EXPECT_TRUE(dec_state.full_sync()); @@ -306,10 +302,10 @@ TEST(TestDecodingState, MultiLayerBehavior) { packet.is_first_packet_in_frame = 1; packet.timestamp = 9; packet.seqNum = 9; - vp8_header.tl0PicIdx = 4; - vp8_header.temporalIdx = 2; - vp8_header.pictureId = 9; - vp8_header.layerSync = true; + packet.video_header.vp8().tl0PicIdx = 4; + packet.video_header.vp8().temporalIdx = 2; + packet.video_header.vp8().pictureId = 9; + packet.video_header.vp8().layerSync = true; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); dec_state.SetState(&frame); EXPECT_TRUE(dec_state.full_sync()); @@ -327,10 +323,10 @@ TEST(TestDecodingState, MultiLayerBehavior) { packet.markerBit = 1; packet.timestamp = 0; packet.seqNum = 0; - vp8_header.tl0PicIdx = 0; - vp8_header.temporalIdx = 0; - vp8_header.pictureId = 0; - vp8_header.layerSync = false; + packet.video_header.vp8().tl0PicIdx = 0; + packet.video_header.vp8().temporalIdx = 0; + packet.video_header.vp8().pictureId = 0; + packet.video_header.vp8().layerSync = false; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); dec_state.SetState(&frame); EXPECT_TRUE(dec_state.full_sync()); @@ -341,10 +337,10 @@ TEST(TestDecodingState, MultiLayerBehavior) { packet.markerBit = 0; packet.timestamp = 1; packet.seqNum = 1; - vp8_header.tl0PicIdx = 0; - vp8_header.temporalIdx = 2; - vp8_header.pictureId = 1; - vp8_header.layerSync = true; + packet.video_header.vp8().tl0PicIdx = 0; + packet.video_header.vp8().temporalIdx = 2; + packet.video_header.vp8().pictureId = 1; + packet.video_header.vp8().layerSync = true; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_TRUE(dec_state.ContinuousFrame(&frame)); // Layer 1 @@ -354,10 +350,10 @@ TEST(TestDecodingState, MultiLayerBehavior) { packet.markerBit = 1; packet.timestamp = 2; packet.seqNum = 3; - vp8_header.tl0PicIdx = 0; - vp8_header.temporalIdx = 1; - vp8_header.pictureId = 2; - vp8_header.layerSync = true; + packet.video_header.vp8().tl0PicIdx = 0; + packet.video_header.vp8().temporalIdx = 1; + packet.video_header.vp8().pictureId = 2; + packet.video_header.vp8().layerSync = true; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_FALSE(dec_state.ContinuousFrame(&frame)); EXPECT_TRUE(dec_state.full_sync()); @@ -372,11 +368,9 @@ TEST(TestDecodingState, DiscontinuousPicIdContinuousSeqNum) { packet.video_header.codec = kVideoCodecVP8; packet.timestamp = 0; packet.seqNum = 0; - auto& vp8_header = - packet.video_header.video_type_header.emplace(); - vp8_header.tl0PicIdx = 0; - vp8_header.temporalIdx = 0; - vp8_header.pictureId = 0; + packet.video_header.vp8().tl0PicIdx = 0; + packet.video_header.vp8().temporalIdx = 0; + packet.video_header.vp8().pictureId = 0; FrameData frame_data; frame_data.rtt_ms = 0; frame_data.rolling_average_packets_per_frame = -1; @@ -390,8 +384,8 @@ TEST(TestDecodingState, DiscontinuousPicIdContinuousSeqNum) { packet.frameType = kVideoFrameDelta; packet.timestamp += 3000; ++packet.seqNum; - vp8_header.temporalIdx = 1; - vp8_header.pictureId = 2; + packet.video_header.vp8().temporalIdx = 1; + packet.video_header.vp8().pictureId = 2; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_FALSE(dec_state.ContinuousFrame(&frame)); dec_state.SetState(&frame); @@ -427,11 +421,9 @@ TEST(TestDecodingState, PictureIdRepeat) { packet.video_header.codec = kVideoCodecVP8; packet.timestamp = 0; packet.seqNum = 0; - auto& vp8_header = - packet.video_header.video_type_header.emplace(); - vp8_header.tl0PicIdx = 0; - vp8_header.temporalIdx = 0; - vp8_header.pictureId = 0; + packet.video_header.vp8().tl0PicIdx = 0; + packet.video_header.vp8().temporalIdx = 0; + packet.video_header.vp8().pictureId = 0; FrameData frame_data; frame_data.rtt_ms = 0; frame_data.rolling_average_packets_per_frame = -1; @@ -441,15 +433,15 @@ TEST(TestDecodingState, PictureIdRepeat) { frame.Reset(); ++packet.timestamp; ++packet.seqNum; - vp8_header.temporalIdx++; - vp8_header.pictureId++; + packet.video_header.vp8().temporalIdx++; + packet.video_header.vp8().pictureId++; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_TRUE(dec_state.ContinuousFrame(&frame)); frame.Reset(); // Testing only gap in tl0PicIdx when tl0PicIdx in continuous. - vp8_header.tl0PicIdx += 3; - vp8_header.temporalIdx++; - vp8_header.tl0PicIdx = 1; + packet.video_header.vp8().tl0PicIdx += 3; + packet.video_header.vp8().temporalIdx++; + packet.video_header.vp8().tl0PicIdx = 1; EXPECT_LE(0, frame.InsertPacket(packet, 0, kNoErrors, frame_data)); EXPECT_FALSE(dec_state.ContinuousFrame(&frame)); } diff --git a/modules/video_coding/encoded_frame.cc b/modules/video_coding/encoded_frame.cc index 8124b6b8f1..37914e455a 100644 --- a/modules/video_coding/encoded_frame.cc +++ b/modules/video_coding/encoded_frame.cc @@ -56,8 +56,6 @@ void VCMEncodedFrame::CopyCodecSpecific(const RTPVideoHeader* header) { if (header) { switch (header->codec) { case kVideoCodecVP8: { - const auto& vp8_header = - absl::get(header->video_type_header); if (_codecSpecificInfo.codecType != kVideoCodecVP8) { // This is the first packet for this frame. _codecSpecificInfo.codecSpecific.VP8.temporalIdx = 0; @@ -66,14 +64,15 @@ void VCMEncodedFrame::CopyCodecSpecific(const RTPVideoHeader* header) { _codecSpecificInfo.codecType = kVideoCodecVP8; } _codecSpecificInfo.codecSpecific.VP8.nonReference = - vp8_header.nonReference; - if (vp8_header.temporalIdx != kNoTemporalIdx) { + header->vp8().nonReference; + if (header->vp8().temporalIdx != kNoTemporalIdx) { _codecSpecificInfo.codecSpecific.VP8.temporalIdx = - vp8_header.temporalIdx; - _codecSpecificInfo.codecSpecific.VP8.layerSync = vp8_header.layerSync; + header->vp8().temporalIdx; + _codecSpecificInfo.codecSpecific.VP8.layerSync = + header->vp8().layerSync; } - if (vp8_header.keyIdx != kNoKeyIdx) { - _codecSpecificInfo.codecSpecific.VP8.keyIdx = vp8_header.keyIdx; + if (header->vp8().keyIdx != kNoKeyIdx) { + _codecSpecificInfo.codecSpecific.VP8.keyIdx = header->vp8().keyIdx; } break; } diff --git a/modules/video_coding/rtp_frame_reference_finder_unittest.cc b/modules/video_coding/rtp_frame_reference_finder_unittest.cc index 63c94ed2fb..1b9fe1766c 100644 --- a/modules/video_coding/rtp_frame_reference_finder_unittest.cc +++ b/modules/video_coding/rtp_frame_reference_finder_unittest.cc @@ -108,12 +108,10 @@ class TestRtpFrameReferenceFinder : public ::testing::Test, packet.seqNum = seq_num_start; packet.markerBit = (seq_num_start == seq_num_end); packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta; - auto& vp8_header = - packet.video_header.video_type_header.emplace(); - vp8_header.pictureId = pid % (1 << 15); - vp8_header.temporalIdx = tid; - vp8_header.tl0PicIdx = tl0; - vp8_header.layerSync = sync; + packet.video_header.vp8().pictureId = pid % (1 << 15); + packet.video_header.vp8().temporalIdx = tid; + packet.video_header.vp8().tl0PicIdx = tl0; + packet.video_header.vp8().layerSync = sync; ref_packet_buffer_->InsertPacket(&packet); if (seq_num_start != seq_num_end) { diff --git a/modules/video_coding/session_info.cc b/modules/video_coding/session_info.cc index 0887109c0c..a80c7b2898 100644 --- a/modules/video_coding/session_info.cc +++ b/modules/video_coding/session_info.cc @@ -62,9 +62,7 @@ int VCMSessionInfo::PictureId() const { if (packets_.empty()) return kNoPictureId; if (packets_.front().video_header.codec == kVideoCodecVP8) { - return absl::get( - packets_.front().video_header.video_type_header) - .pictureId; + return packets_.front().video_header.vp8().pictureId; } else if (packets_.front().video_header.codec == kVideoCodecVP9) { return absl::get( packets_.front().video_header.video_type_header) @@ -78,9 +76,7 @@ int VCMSessionInfo::TemporalId() const { if (packets_.empty()) return kNoTemporalIdx; if (packets_.front().video_header.codec == kVideoCodecVP8) { - return absl::get( - packets_.front().video_header.video_type_header) - .temporalIdx; + return packets_.front().video_header.vp8().temporalIdx; } else if (packets_.front().video_header.codec == kVideoCodecVP9) { return absl::get( packets_.front().video_header.video_type_header) @@ -94,9 +90,7 @@ bool VCMSessionInfo::LayerSync() const { if (packets_.empty()) return false; if (packets_.front().video_header.codec == kVideoCodecVP8) { - return absl::get( - packets_.front().video_header.video_type_header) - .layerSync; + return packets_.front().video_header.vp8().layerSync; } else if (packets_.front().video_header.codec == kVideoCodecVP9) { return absl::get( packets_.front().video_header.video_type_header) @@ -110,9 +104,7 @@ int VCMSessionInfo::Tl0PicId() const { if (packets_.empty()) return kNoTl0PicIdx; if (packets_.front().video_header.codec == kVideoCodecVP8) { - return absl::get( - packets_.front().video_header.video_type_header) - .tl0PicIdx; + return packets_.front().video_header.vp8().tl0PicIdx; } else if (packets_.front().video_header.codec == kVideoCodecVP9) { return absl::get( packets_.front().video_header.video_type_header) @@ -355,8 +347,7 @@ size_t VCMSessionInfo::DeletePacketData(PacketIterator start, VCMSessionInfo::PacketIterator VCMSessionInfo::FindNextPartitionBeginning( PacketIterator it) const { while (it != packets_.end()) { - if (absl::get((*it).video_header.video_type_header) - .beginningOfPartition) { + if ((*it).video_header.vp8().beginningOfPartition) { return it; } ++it; @@ -368,16 +359,10 @@ VCMSessionInfo::PacketIterator VCMSessionInfo::FindPartitionEnd( PacketIterator it) const { assert((*it).codec == kVideoCodecVP8); PacketIterator prev_it = it; - const int partition_id = - absl::get((*it).video_header.video_type_header) - .partitionId; + const int partition_id = (*it).video_header.vp8().partitionId; while (it != packets_.end()) { - bool beginning = - absl::get((*it).video_header.video_type_header) - .beginningOfPartition; - int current_partition_id = - absl::get((*it).video_header.video_type_header) - .partitionId; + bool beginning = (*it).video_header.vp8().beginningOfPartition; + int current_partition_id = (*it).video_header.vp8().partitionId; bool packet_loss_found = (!beginning && !InSequence(it, prev_it)); if (packet_loss_found || (beginning && current_partition_id != partition_id)) { diff --git a/modules/video_coding/video_receiver_unittest.cc b/modules/video_coding/video_receiver_unittest.cc index 0b32daaaa2..bec1e96bb8 100644 --- a/modules/video_coding/video_receiver_unittest.cc +++ b/modules/video_coding/video_receiver_unittest.cc @@ -129,7 +129,6 @@ TEST_F(TestVideoReceiver, PaddingOnlyFramesWithLosses) { header.header.ssrc = 1; header.header.headerLength = 12; header.video_header().codec = kVideoCodecVP8; - header.video_header().video_type_header.emplace(); // Insert one video frame to get one frame decoded. header.frameType = kVideoFrameKey; header.video_header().is_first_packet_in_frame = true; @@ -181,10 +180,8 @@ TEST_F(TestVideoReceiver, PaddingOnlyAndVideo) { header.header.ssrc = 1; header.header.headerLength = 12; header.video_header().codec = kVideoCodecVP8; - auto& vp8_header = - header.video.video_type_header.emplace(); - vp8_header.pictureId = -1; - vp8_header.tl0PicIdx = -1; + header.video_header().vp8().pictureId = -1; + header.video_header().vp8().tl0PicIdx = -1; for (int i = 0; i < 3; ++i) { // Insert 2 video frames. for (int j = 0; j < 2; ++j) { diff --git a/test/configurable_frame_size_encoder.cc b/test/configurable_frame_size_encoder.cc index c0fe2966e8..c18c93866e 100644 --- a/test/configurable_frame_size_encoder.cc +++ b/test/configurable_frame_size_encoder.cc @@ -24,8 +24,7 @@ ConfigurableFrameSizeEncoder::ConfigurableFrameSizeEncoder( : callback_(NULL), max_frame_size_(max_frame_size), current_frame_size_(max_frame_size), - buffer_(new uint8_t[max_frame_size]), - codec_type_(kVideoCodecGeneric) { + buffer_(new uint8_t[max_frame_size]) { memset(buffer_.get(), 0, max_frame_size); } @@ -51,8 +50,8 @@ int32_t ConfigurableFrameSizeEncoder::Encode( encodedImage.SetTimestamp(inputImage.timestamp()); encodedImage.capture_time_ms_ = inputImage.render_time_ms(); RTPFragmentationHeader* fragmentation = NULL; - CodecSpecificInfo specific{}; - specific.codecType = codec_type_; + CodecSpecificInfo specific; + memset(&specific, 0, sizeof(specific)); callback_->OnEncodedImage(encodedImage, &specific, fragmentation); return WEBRTC_VIDEO_CODEC_OK; @@ -85,9 +84,5 @@ int32_t ConfigurableFrameSizeEncoder::SetFrameSize(size_t size) { return WEBRTC_VIDEO_CODEC_OK; } -void ConfigurableFrameSizeEncoder::SetCodecType(VideoCodecType codec_type) { - codec_type_ = codec_type; -} - } // namespace test } // namespace webrtc diff --git a/test/configurable_frame_size_encoder.h b/test/configurable_frame_size_encoder.h index 1dc9e48f47..4ad6749e1b 100644 --- a/test/configurable_frame_size_encoder.h +++ b/test/configurable_frame_size_encoder.h @@ -44,14 +44,11 @@ class ConfigurableFrameSizeEncoder : public VideoEncoder { int32_t SetFrameSize(size_t size); - void SetCodecType(VideoCodecType codec_type_); - private: EncodedImageCallback* callback_; const size_t max_frame_size_; size_t current_frame_size_; std::unique_ptr buffer_; - VideoCodecType codec_type_; }; } // namespace test diff --git a/test/layer_filtering_transport.cc b/test/layer_filtering_transport.cc index 86d3d3a56e..89fa4a8019 100644 --- a/test/layer_filtering_transport.cc +++ b/test/layer_filtering_transport.cc @@ -103,9 +103,7 @@ bool LayerFilteringTransport::SendRtp(const uint8_t* packet, bool end_of_frame; if (is_vp8) { - temporal_idx = absl::get( - parsed_payload.video_header().video_type_header) - .temporalIdx; + temporal_idx = parsed_payload.video_header().vp8().temporalIdx; spatial_idx = kNoSpatialIdx; num_active_spatial_layers_ = 1; non_ref_for_inter_layer_pred = false; diff --git a/video/picture_id_tests.cc b/video/picture_id_tests.cc index 155da13ae4..b93a7e7db3 100644 --- a/video/picture_id_tests.cc +++ b/video/picture_id_tests.cc @@ -100,14 +100,11 @@ class PictureIdObserver : public test::RtpRtcpObserver { &parsed_payload, &packet[header.headerLength], payload_length)); switch (codec_type_) { - case kVideoCodecVP8: { - const auto& vp8_header = absl::get( - parsed_payload.video_header().video_type_header); - parsed->picture_id = vp8_header.pictureId; - parsed->tl0_pic_idx = vp8_header.tl0PicIdx; - parsed->temporal_idx = vp8_header.temporalIdx; + case kVideoCodecVP8: + parsed->picture_id = parsed_payload.video_header().vp8().pictureId; + parsed->tl0_pic_idx = parsed_payload.video_header().vp8().tl0PicIdx; + parsed->temporal_idx = parsed_payload.video_header().vp8().temporalIdx; break; - } case kVideoCodecVP9: { const auto& vp9_header = absl::get( parsed_payload.video_header().video_type_header); diff --git a/video/video_analyzer.cc b/video/video_analyzer.cc index 05abe1fcf3..bc5210ab9a 100644 --- a/video/video_analyzer.cc +++ b/video/video_analyzer.cc @@ -420,9 +420,7 @@ bool VideoAnalyzer::IsInSelectedSpatialAndTemporalLayer( int temporal_idx; int spatial_idx; if (is_vp8) { - temporal_idx = absl::get( - parsed_payload.video_header().video_type_header) - .temporalIdx; + temporal_idx = parsed_payload.video_header().vp8().temporalIdx; spatial_idx = kNoTemporalIdx; } else { const auto& vp9_header = absl::get( diff --git a/video/video_send_stream_tests.cc b/video/video_send_stream_tests.cc index c015f56142..88482e34ce 100644 --- a/video/video_send_stream_tests.cc +++ b/video/video_send_stream_tests.cc @@ -991,8 +991,6 @@ void VideoSendStreamTest::TestPacketFragmentationSize(VideoFormat format, // Fragmentation required, this test doesn't make sense without it. encoder_.SetFrameSize(start_size); RTC_DCHECK_GT(stop_size, max_packet_size); - if (!test_generic_packetization_) - encoder_.SetCodecType(kVideoCodecVP8); } private: @@ -1129,7 +1127,6 @@ void VideoSendStreamTest::TestPacketFragmentationSize(VideoFormat format, if (!test_generic_packetization_) send_config->rtp.payload_name = "VP8"; - send_config->encoder_settings.encoder_factory = &encoder_factory_; send_config->rtp.max_packet_size = kMaxPacketSize; send_config->post_encode_callback = this; @@ -2179,6 +2176,8 @@ TEST_P(VideoSendStreamTest, VideoSendStreamUpdateActiveSimulcastLayers) { sender_call_->SignalChannelNetworkState(MediaType::VIDEO, kNetworkUp); GetVideoSendConfig()->encoder_settings.encoder_factory = &encoder_factory; + GetVideoSendConfig()->rtp.payload_name = "VP8"; + CreateVideoStreams(); // Inject a frame, to force encoder creation.