Remove RTPVideoHeader::vp9() accessors.

TBR=stefan@webrtc.org

Bug: none
Change-Id: Ia2f728ea3377754a16a0b081e25c4479fe211b3e
Reviewed-on: https://webrtc-review.googlesource.com/93024
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24243}
This commit is contained in:
philipel
2018-08-08 14:26:00 +02:00
committed by Commit Bot
parent 527ff1eec2
commit 29d8846df9
18 changed files with 326 additions and 265 deletions

View File

@ -34,9 +34,12 @@ RtpPacketizer* RtpPacketizer::Create(VideoCodecType type,
case kVideoCodecVP8:
return new RtpPacketizerVp8(rtp_video_header->vp8(), max_payload_len,
last_packet_reduction_len);
case kVideoCodecVP9:
return new RtpPacketizerVp9(rtp_video_header->vp9(), max_payload_len,
case kVideoCodecVP9: {
const auto& vp9 =
absl::get<RTPVideoHeaderVP9>(rtp_video_header->video_type_header);
return new RtpPacketizerVp9(vp9, max_payload_len,
last_packet_reduction_len);
}
case kVideoCodecGeneric:
return new RtpPacketizerGeneric(frame_type, max_payload_len,
last_packet_reduction_len);

View File

@ -719,41 +719,42 @@ bool RtpDepacketizerVp9::Parse(ParsedPayload* parsed_payload,
parsed_payload->frame_type = p_bit ? kVideoFrameDelta : kVideoFrameKey;
RTPVideoHeaderVP9* vp9 = &parsed_payload->video_header().vp9();
vp9->InitRTPVideoHeaderVP9();
vp9->inter_pic_predicted = p_bit ? true : false;
vp9->flexible_mode = f_bit ? true : false;
vp9->beginning_of_frame = b_bit ? true : false;
vp9->end_of_frame = e_bit ? true : false;
vp9->ss_data_available = v_bit ? true : false;
vp9->non_ref_for_inter_layer_pred = z_bit ? true : false;
auto& vp9_header = parsed_payload->video_header()
.video_type_header.emplace<RTPVideoHeaderVP9>();
vp9_header.InitRTPVideoHeaderVP9();
vp9_header.inter_pic_predicted = p_bit ? true : false;
vp9_header.flexible_mode = f_bit ? true : false;
vp9_header.beginning_of_frame = b_bit ? true : false;
vp9_header.end_of_frame = e_bit ? true : false;
vp9_header.ss_data_available = v_bit ? true : false;
vp9_header.non_ref_for_inter_layer_pred = z_bit ? true : false;
// Parse fields that are present.
if (i_bit && !ParsePictureId(&parser, vp9)) {
if (i_bit && !ParsePictureId(&parser, &vp9_header)) {
RTC_LOG(LS_ERROR) << "Failed parsing VP9 picture id.";
return false;
}
if (l_bit && !ParseLayerInfo(&parser, vp9)) {
if (l_bit && !ParseLayerInfo(&parser, &vp9_header)) {
RTC_LOG(LS_ERROR) << "Failed parsing VP9 layer info.";
return false;
}
if (p_bit && f_bit && !ParseRefIndices(&parser, vp9)) {
if (p_bit && f_bit && !ParseRefIndices(&parser, &vp9_header)) {
RTC_LOG(LS_ERROR) << "Failed parsing VP9 ref indices.";
return false;
}
if (v_bit) {
if (!ParseSsData(&parser, vp9)) {
if (!ParseSsData(&parser, &vp9_header)) {
RTC_LOG(LS_ERROR) << "Failed parsing VP9 SS data.";
return false;
}
if (vp9->spatial_layer_resolution_present) {
if (vp9_header.spatial_layer_resolution_present) {
// TODO(asapersson): Add support for spatial layers.
parsed_payload->video_header().width = vp9->width[0];
parsed_payload->video_header().height = vp9->height[0];
parsed_payload->video_header().width = vp9_header.width[0];
parsed_payload->video_header().height = vp9_header.height[0];
}
}
parsed_payload->video_header().is_first_packet_in_frame =
b_bit && (!l_bit || !vp9->inter_layer_predicted);
b_bit && (!l_bit || !vp9_header.inter_layer_predicted);
uint64_t rem_bits = parser.RemainingBitCount();
assert(rem_bits % 8 == 0);

View File

@ -82,7 +82,9 @@ void ParseAndCheckPacket(const uint8_t* packet,
RtpDepacketizer::ParsedPayload parsed;
ASSERT_TRUE(depacketizer->Parse(&parsed, packet, expected_length));
EXPECT_EQ(kVideoCodecVP9, parsed.video_header().codec);
VerifyHeader(expected, parsed.video_header().vp9());
auto& vp9_header =
absl::get<RTPVideoHeaderVP9>(parsed.video_header().video_type_header);
VerifyHeader(expected, vp9_header);
const size_t kExpectedPayloadLength = expected_length - expected_hdr_length;
VerifyPayload(parsed, packet + expected_hdr_length, kExpectedPayloadLength);
}

View File

@ -1891,8 +1891,9 @@ TEST_P(RtpSenderVideoTest, RetransmissionTypesVP9) {
RTPVideoHeader header;
header.codec = kVideoCodecVP9;
auto& vp9_header = header.video_type_header.emplace<RTPVideoHeaderVP9>();
for (int tid = 1; tid <= kMaxTemporalStreams; ++tid) {
header.vp9().temporal_idx = tid;
vp9_header.temporal_idx = tid;
EXPECT_EQ(kDontRetransmit, rtp_sender_video_->GetStorageType(
header, kRetransmitOff,

View File

@ -471,7 +471,8 @@ uint8_t RTPSenderVideo::GetTemporalId(const RTPVideoHeader& header) {
case kVideoCodecVP8:
return header.vp8().temporalIdx;
case kVideoCodecVP9:
return header.vp9().temporal_idx;
return absl::get<RTPVideoHeaderVP9>(header.video_type_header)
.temporal_idx;
default:
return kNoTemporalIdx;
}

View File

@ -44,20 +44,6 @@ struct RTPVideoHeader {
return absl::get<RTPVideoHeaderVP8>(video_type_header);
}
// TODO(philipel): Remove when downstream projects have been updated.
RTPVideoHeaderVP9& vp9() {
if (!absl::holds_alternative<RTPVideoHeaderVP9>(video_type_header))
video_type_header.emplace<RTPVideoHeaderVP9>();
return absl::get<RTPVideoHeaderVP9>(video_type_header);
}
// TODO(philipel): Remove when downstream projects have been updated.
const RTPVideoHeaderVP9& vp9() const {
if (!absl::holds_alternative<RTPVideoHeaderVP9>(video_type_header))
video_type_header.emplace<RTPVideoHeaderVP9>();
return absl::get<RTPVideoHeaderVP9>(video_type_header);
}
// Information for generic codec descriptor.
int64_t frame_id = 0;