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}
diff --git a/modules/video_coding/decoding_state_unittest.cc b/modules/video_coding/decoding_state_unittest.cc
index 740c384..0049ca7 100644
--- a/modules/video_coding/decoding_state_unittest.cc
+++ b/modules/video_coding/decoding_state_unittest.cc
@@ -458,7 +458,8 @@
packet.dataPtr = data;
packet.video_header.codec = kVideoCodecVP9;
- RTPVideoHeaderVP9& vp9_hdr = packet.video_header.vp9();
+ auto& vp9_hdr =
+ packet.video_header.video_type_header.emplace<RTPVideoHeaderVP9>();
vp9_hdr.picture_id = 10;
vp9_hdr.flexible_mode = true;
@@ -501,7 +502,8 @@
packet.dataPtr = data;
packet.video_header.codec = kVideoCodecVP9;
- RTPVideoHeaderVP9& vp9_hdr = packet.video_header.vp9();
+ auto& vp9_hdr =
+ packet.video_header.video_type_header.emplace<RTPVideoHeaderVP9>();
vp9_hdr.picture_id = 10;
vp9_hdr.flexible_mode = true;
@@ -556,7 +558,8 @@
packet.dataPtr = data;
packet.video_header.codec = kVideoCodecVP9;
- RTPVideoHeaderVP9& vp9_hdr = packet.video_header.vp9();
+ auto& vp9_hdr =
+ packet.video_header.video_type_header.emplace<RTPVideoHeaderVP9>();
vp9_hdr.picture_id = 10;
vp9_hdr.flexible_mode = true;
diff --git a/modules/video_coding/encoded_frame.cc b/modules/video_coding/encoded_frame.cc
index ebaa83b..2cb7936 100644
--- a/modules/video_coding/encoded_frame.cc
+++ b/modules/video_coding/encoded_frame.cc
@@ -77,6 +77,8 @@
break;
}
case kVideoCodecVP9: {
+ const auto& vp9_header =
+ absl::get<RTPVideoHeaderVP9>(header->video_type_header);
if (_codecSpecificInfo.codecType != kVideoCodecVP9) {
// This is the first packet for this frame.
_codecSpecificInfo.codecSpecific.VP9.temporal_idx = 0;
@@ -86,48 +88,48 @@
_codecSpecificInfo.codecType = kVideoCodecVP9;
}
_codecSpecificInfo.codecSpecific.VP9.inter_pic_predicted =
- header->vp9().inter_pic_predicted;
+ vp9_header.inter_pic_predicted;
_codecSpecificInfo.codecSpecific.VP9.flexible_mode =
- header->vp9().flexible_mode;
+ vp9_header.flexible_mode;
_codecSpecificInfo.codecSpecific.VP9.num_ref_pics =
- header->vp9().num_ref_pics;
- for (uint8_t r = 0; r < header->vp9().num_ref_pics; ++r) {
+ vp9_header.num_ref_pics;
+ for (uint8_t r = 0; r < vp9_header.num_ref_pics; ++r) {
_codecSpecificInfo.codecSpecific.VP9.p_diff[r] =
- header->vp9().pid_diff[r];
+ vp9_header.pid_diff[r];
}
_codecSpecificInfo.codecSpecific.VP9.ss_data_available =
- header->vp9().ss_data_available;
- if (header->vp9().temporal_idx != kNoTemporalIdx) {
+ vp9_header.ss_data_available;
+ if (vp9_header.temporal_idx != kNoTemporalIdx) {
_codecSpecificInfo.codecSpecific.VP9.temporal_idx =
- header->vp9().temporal_idx;
+ vp9_header.temporal_idx;
_codecSpecificInfo.codecSpecific.VP9.temporal_up_switch =
- header->vp9().temporal_up_switch;
+ vp9_header.temporal_up_switch;
}
- if (header->vp9().spatial_idx != kNoSpatialIdx) {
+ if (vp9_header.spatial_idx != kNoSpatialIdx) {
_codecSpecificInfo.codecSpecific.VP9.spatial_idx =
- header->vp9().spatial_idx;
+ vp9_header.spatial_idx;
_codecSpecificInfo.codecSpecific.VP9.inter_layer_predicted =
- header->vp9().inter_layer_predicted;
+ vp9_header.inter_layer_predicted;
}
- if (header->vp9().gof_idx != kNoGofIdx) {
- _codecSpecificInfo.codecSpecific.VP9.gof_idx = header->vp9().gof_idx;
+ if (vp9_header.gof_idx != kNoGofIdx) {
+ _codecSpecificInfo.codecSpecific.VP9.gof_idx = vp9_header.gof_idx;
}
- if (header->vp9().ss_data_available) {
+ if (vp9_header.ss_data_available) {
_codecSpecificInfo.codecSpecific.VP9.num_spatial_layers =
- header->vp9().num_spatial_layers;
+ vp9_header.num_spatial_layers;
_codecSpecificInfo.codecSpecific.VP9
.spatial_layer_resolution_present =
- header->vp9().spatial_layer_resolution_present;
- if (header->vp9().spatial_layer_resolution_present) {
- for (size_t i = 0; i < header->vp9().num_spatial_layers; ++i) {
+ vp9_header.spatial_layer_resolution_present;
+ if (vp9_header.spatial_layer_resolution_present) {
+ for (size_t i = 0; i < vp9_header.num_spatial_layers; ++i) {
_codecSpecificInfo.codecSpecific.VP9.width[i] =
- header->vp9().width[i];
+ vp9_header.width[i];
_codecSpecificInfo.codecSpecific.VP9.height[i] =
- header->vp9().height[i];
+ vp9_header.height[i];
}
}
_codecSpecificInfo.codecSpecific.VP9.gof.CopyGofInfoVP9(
- header->vp9().gof);
+ vp9_header.gof);
}
break;
}
diff --git a/modules/video_coding/jitter_buffer.cc b/modules/video_coding/jitter_buffer.cc
index 83f90e3..03a9845 100644
--- a/modules/video_coding/jitter_buffer.cc
+++ b/modules/video_coding/jitter_buffer.cc
@@ -127,10 +127,12 @@
Vp9SsMap::~Vp9SsMap() {}
bool Vp9SsMap::Insert(const VCMPacket& packet) {
- if (!packet.video_header.vp9().ss_data_available)
+ const auto& vp9_header =
+ absl::get<RTPVideoHeaderVP9>(packet.video_header.video_type_header);
+ if (!vp9_header.ss_data_available)
return false;
- ss_map_[packet.timestamp] = packet.video_header.vp9().gof;
+ ss_map_[packet.timestamp] = vp9_header.gof;
return true;
}
@@ -178,7 +180,9 @@
// TODO(asapersson): Update according to updates in RTP payload profile.
bool Vp9SsMap::UpdatePacket(VCMPacket* packet) {
- uint8_t gof_idx = packet->video_header.vp9().gof_idx;
+ auto& vp9_header =
+ absl::get<RTPVideoHeaderVP9>(packet->video_header.video_type_header);
+ uint8_t gof_idx = vp9_header.gof_idx;
if (gof_idx == kNoGofIdx)
return false; // No update needed.
@@ -189,14 +193,13 @@
if (gof_idx >= it->second.num_frames_in_gof)
return false; // Assume corresponding SS not yet received.
- RTPVideoHeaderVP9* vp9 = &packet->video_header.vp9();
- vp9->temporal_idx = it->second.temporal_idx[gof_idx];
- vp9->temporal_up_switch = it->second.temporal_up_switch[gof_idx];
+ vp9_header.temporal_idx = it->second.temporal_idx[gof_idx];
+ vp9_header.temporal_up_switch = it->second.temporal_up_switch[gof_idx];
// TODO(asapersson): Set vp9.ref_picture_id[i] and add usage.
- vp9->num_ref_pics = it->second.num_ref_pics[gof_idx];
+ vp9_header.num_ref_pics = it->second.num_ref_pics[gof_idx];
for (uint8_t i = 0; i < it->second.num_ref_pics[gof_idx]; ++i) {
- vp9->pid_diff[i] = it->second.pid_diff[gof_idx][i];
+ vp9_header.pid_diff[i] = it->second.pid_diff[gof_idx][i];
}
return true;
}
diff --git a/modules/video_coding/jitter_buffer_unittest.cc b/modules/video_coding/jitter_buffer_unittest.cc
index 756dc52..d1744d5 100644
--- a/modules/video_coding/jitter_buffer_unittest.cc
+++ b/modules/video_coding/jitter_buffer_unittest.cc
@@ -41,6 +41,8 @@
Vp9SsMapTest() : packet_() {}
virtual void SetUp() {
+ auto& vp9_header =
+ packet_.video_header.video_type_header.emplace<RTPVideoHeaderVP9>();
packet_.is_first_packet_in_frame = true;
packet_.dataPtr = data_;
packet_.sizeBytes = 1400;
@@ -50,12 +52,12 @@
packet_.frameType = kVideoFrameKey;
packet_.codec = kVideoCodecVP9;
packet_.video_header.codec = kVideoCodecVP9;
- packet_.video_header.vp9().flexible_mode = false;
- packet_.video_header.vp9().gof_idx = 0;
- packet_.video_header.vp9().temporal_idx = kNoTemporalIdx;
- packet_.video_header.vp9().temporal_up_switch = false;
- packet_.video_header.vp9().ss_data_available = true;
- packet_.video_header.vp9().gof.SetGofInfoVP9(
+ vp9_header.flexible_mode = false;
+ vp9_header.gof_idx = 0;
+ vp9_header.temporal_idx = kNoTemporalIdx;
+ vp9_header.temporal_up_switch = false;
+ vp9_header.ss_data_available = true;
+ vp9_header.gof.SetGofInfoVP9(
kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2..
}
@@ -69,7 +71,8 @@
}
TEST_F(Vp9SsMapTest, Insert_NoSsData) {
- packet_.video_header.vp9().ss_data_available = false;
+ absl::get<RTPVideoHeaderVP9>(packet_.video_header.video_type_header)
+ .ss_data_available = false;
EXPECT_FALSE(map_.Insert(packet_));
}
@@ -146,52 +149,57 @@
}
TEST_F(Vp9SsMapTest, UpdatePacket_NoSsData) {
- packet_.video_header.vp9().gof_idx = 0;
+ absl::get<RTPVideoHeaderVP9>(packet_.video_header.video_type_header).gof_idx =
+ 0;
EXPECT_FALSE(map_.UpdatePacket(&packet_));
}
TEST_F(Vp9SsMapTest, UpdatePacket_NoGofIdx) {
EXPECT_TRUE(map_.Insert(packet_));
- packet_.video_header.vp9().gof_idx = kNoGofIdx;
+ absl::get<RTPVideoHeaderVP9>(packet_.video_header.video_type_header).gof_idx =
+ kNoGofIdx;
EXPECT_FALSE(map_.UpdatePacket(&packet_));
}
TEST_F(Vp9SsMapTest, UpdatePacket_InvalidGofIdx) {
EXPECT_TRUE(map_.Insert(packet_));
- packet_.video_header.vp9().gof_idx = 4;
+ absl::get<RTPVideoHeaderVP9>(packet_.video_header.video_type_header).gof_idx =
+ 4;
EXPECT_FALSE(map_.UpdatePacket(&packet_));
}
TEST_F(Vp9SsMapTest, UpdatePacket) {
+ auto& vp9_header =
+ absl::get<RTPVideoHeaderVP9>(packet_.video_header.video_type_header);
EXPECT_TRUE(map_.Insert(packet_)); // kTemporalStructureMode3: 0-2-1-2..
- packet_.video_header.vp9().gof_idx = 0;
+ vp9_header.gof_idx = 0;
EXPECT_TRUE(map_.UpdatePacket(&packet_));
- EXPECT_EQ(0, packet_.video_header.vp9().temporal_idx);
- EXPECT_FALSE(packet_.video_header.vp9().temporal_up_switch);
- EXPECT_EQ(1U, packet_.video_header.vp9().num_ref_pics);
- EXPECT_EQ(4, packet_.video_header.vp9().pid_diff[0]);
+ EXPECT_EQ(0, vp9_header.temporal_idx);
+ EXPECT_FALSE(vp9_header.temporal_up_switch);
+ EXPECT_EQ(1U, vp9_header.num_ref_pics);
+ EXPECT_EQ(4, vp9_header.pid_diff[0]);
- packet_.video_header.vp9().gof_idx = 1;
+ vp9_header.gof_idx = 1;
EXPECT_TRUE(map_.UpdatePacket(&packet_));
- EXPECT_EQ(2, packet_.video_header.vp9().temporal_idx);
- EXPECT_TRUE(packet_.video_header.vp9().temporal_up_switch);
- EXPECT_EQ(1U, packet_.video_header.vp9().num_ref_pics);
- EXPECT_EQ(1, packet_.video_header.vp9().pid_diff[0]);
+ EXPECT_EQ(2, vp9_header.temporal_idx);
+ EXPECT_TRUE(vp9_header.temporal_up_switch);
+ EXPECT_EQ(1U, vp9_header.num_ref_pics);
+ EXPECT_EQ(1, vp9_header.pid_diff[0]);
- packet_.video_header.vp9().gof_idx = 2;
+ vp9_header.gof_idx = 2;
EXPECT_TRUE(map_.UpdatePacket(&packet_));
- EXPECT_EQ(1, packet_.video_header.vp9().temporal_idx);
- EXPECT_TRUE(packet_.video_header.vp9().temporal_up_switch);
- EXPECT_EQ(1U, packet_.video_header.vp9().num_ref_pics);
- EXPECT_EQ(2, packet_.video_header.vp9().pid_diff[0]);
+ EXPECT_EQ(1, vp9_header.temporal_idx);
+ EXPECT_TRUE(vp9_header.temporal_up_switch);
+ EXPECT_EQ(1U, vp9_header.num_ref_pics);
+ EXPECT_EQ(2, vp9_header.pid_diff[0]);
- packet_.video_header.vp9().gof_idx = 3;
+ vp9_header.gof_idx = 3;
EXPECT_TRUE(map_.UpdatePacket(&packet_));
- EXPECT_EQ(2, packet_.video_header.vp9().temporal_idx);
- EXPECT_TRUE(packet_.video_header.vp9().temporal_up_switch);
- EXPECT_EQ(1U, packet_.video_header.vp9().num_ref_pics);
- EXPECT_EQ(1, packet_.video_header.vp9().pid_diff[0]);
+ EXPECT_EQ(2, vp9_header.temporal_idx);
+ EXPECT_TRUE(vp9_header.temporal_up_switch);
+ EXPECT_EQ(1U, vp9_header.num_ref_pics);
+ EXPECT_EQ(1, vp9_header.pid_diff[0]);
}
class TestBasicJitterBuffer : public ::testing::TestWithParam<std::string>,
@@ -920,25 +928,28 @@
// -------------------------------------------------
// |<----------tl0idx:200--------->|<---tl0idx:201---
+ auto& vp9_header =
+ packet_->video_header.video_type_header.emplace<RTPVideoHeaderVP9>();
+
bool re = false;
packet_->codec = kVideoCodecVP9;
packet_->video_header.codec = kVideoCodecVP9;
packet_->is_first_packet_in_frame = true;
packet_->markerBit = true;
- packet_->video_header.vp9().flexible_mode = false;
- packet_->video_header.vp9().spatial_idx = 0;
- packet_->video_header.vp9().beginning_of_frame = true;
- packet_->video_header.vp9().end_of_frame = true;
- packet_->video_header.vp9().temporal_up_switch = false;
+ vp9_header.flexible_mode = false;
+ vp9_header.spatial_idx = 0;
+ vp9_header.beginning_of_frame = true;
+ vp9_header.end_of_frame = true;
+ vp9_header.temporal_up_switch = false;
packet_->seqNum = 65485;
packet_->timestamp = 1000;
packet_->frameType = kVideoFrameKey;
- packet_->video_header.vp9().picture_id = 5;
- packet_->video_header.vp9().tl0_pic_idx = 200;
- packet_->video_header.vp9().temporal_idx = 0;
- packet_->video_header.vp9().ss_data_available = true;
- packet_->video_header.vp9().gof.SetGofInfoVP9(
+ vp9_header.picture_id = 5;
+ vp9_header.tl0_pic_idx = 200;
+ vp9_header.temporal_idx = 0;
+ vp9_header.ss_data_available = true;
+ vp9_header.gof.SetGofInfoVP9(
kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2..
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
@@ -946,10 +957,10 @@
packet_->seqNum = 65489;
packet_->timestamp = 13000;
packet_->frameType = kVideoFrameDelta;
- packet_->video_header.vp9().picture_id = 9;
- packet_->video_header.vp9().tl0_pic_idx = 201;
- packet_->video_header.vp9().temporal_idx = 0;
- packet_->video_header.vp9().ss_data_available = false;
+ vp9_header.picture_id = 9;
+ vp9_header.tl0_pic_idx = 201;
+ vp9_header.temporal_idx = 0;
+ vp9_header.ss_data_available = false;
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
VCMEncodedFrame* frame_out = DecodeCompleteFrame();
@@ -973,31 +984,34 @@
// --------------------------------
// |<--------tl0idx:200--------->|
+ auto& vp9_header =
+ packet_->video_header.video_type_header.emplace<RTPVideoHeaderVP9>();
+
bool re = false;
packet_->codec = kVideoCodecVP9;
packet_->video_header.codec = kVideoCodecVP9;
packet_->is_first_packet_in_frame = true;
packet_->markerBit = true;
- packet_->video_header.vp9().flexible_mode = false;
- packet_->video_header.vp9().spatial_idx = 0;
- packet_->video_header.vp9().beginning_of_frame = true;
- packet_->video_header.vp9().end_of_frame = true;
- packet_->video_header.vp9().tl0_pic_idx = 200;
+ vp9_header.flexible_mode = false;
+ vp9_header.spatial_idx = 0;
+ vp9_header.beginning_of_frame = true;
+ vp9_header.end_of_frame = true;
+ vp9_header.tl0_pic_idx = 200;
packet_->seqNum = 65486;
packet_->timestamp = 6000;
packet_->frameType = kVideoFrameDelta;
- packet_->video_header.vp9().picture_id = 6;
- packet_->video_header.vp9().temporal_idx = 2;
- packet_->video_header.vp9().temporal_up_switch = true;
+ vp9_header.picture_id = 6;
+ vp9_header.temporal_idx = 2;
+ vp9_header.temporal_up_switch = true;
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
packet_->seqNum = 65487;
packet_->timestamp = 9000;
packet_->frameType = kVideoFrameDelta;
- packet_->video_header.vp9().picture_id = 7;
- packet_->video_header.vp9().temporal_idx = 1;
- packet_->video_header.vp9().temporal_up_switch = true;
+ vp9_header.picture_id = 7;
+ vp9_header.temporal_idx = 1;
+ vp9_header.temporal_up_switch = true;
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
// Insert first frame with SS data.
@@ -1006,11 +1020,11 @@
packet_->frameType = kVideoFrameKey;
packet_->width = 352;
packet_->height = 288;
- packet_->video_header.vp9().picture_id = 5;
- packet_->video_header.vp9().temporal_idx = 0;
- packet_->video_header.vp9().temporal_up_switch = false;
- packet_->video_header.vp9().ss_data_available = true;
- packet_->video_header.vp9().gof.SetGofInfoVP9(
+ vp9_header.picture_id = 5;
+ vp9_header.temporal_idx = 0;
+ vp9_header.temporal_up_switch = false;
+ vp9_header.ss_data_available = true;
+ vp9_header.gof.SetGofInfoVP9(
kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2..
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
@@ -1049,33 +1063,36 @@
// -----------------------------------------
// |<-----------tl0idx:200------------>|
+ auto& vp9_header =
+ packet_->video_header.video_type_header.emplace<RTPVideoHeaderVP9>();
+
bool re = false;
packet_->codec = kVideoCodecVP9;
packet_->video_header.codec = kVideoCodecVP9;
- packet_->video_header.vp9().flexible_mode = false;
- packet_->video_header.vp9().beginning_of_frame = true;
- packet_->video_header.vp9().end_of_frame = true;
- packet_->video_header.vp9().tl0_pic_idx = 200;
+ vp9_header.flexible_mode = false;
+ vp9_header.beginning_of_frame = true;
+ vp9_header.end_of_frame = true;
+ vp9_header.tl0_pic_idx = 200;
packet_->is_first_packet_in_frame = true;
packet_->markerBit = false;
packet_->seqNum = 65486;
packet_->timestamp = 6000;
packet_->frameType = kVideoFrameDelta;
- packet_->video_header.vp9().spatial_idx = 0;
- packet_->video_header.vp9().picture_id = 6;
- packet_->video_header.vp9().temporal_idx = 1;
- packet_->video_header.vp9().temporal_up_switch = true;
+ vp9_header.spatial_idx = 0;
+ vp9_header.picture_id = 6;
+ vp9_header.temporal_idx = 1;
+ vp9_header.temporal_up_switch = true;
EXPECT_EQ(kIncomplete, jitter_buffer_->InsertPacket(*packet_, &re));
packet_->is_first_packet_in_frame = false;
packet_->markerBit = true;
packet_->seqNum = 65487;
packet_->frameType = kVideoFrameDelta;
- packet_->video_header.vp9().spatial_idx = 1;
- packet_->video_header.vp9().picture_id = 6;
- packet_->video_header.vp9().temporal_idx = 1;
- packet_->video_header.vp9().temporal_up_switch = true;
+ vp9_header.spatial_idx = 1;
+ vp9_header.picture_id = 6;
+ vp9_header.temporal_idx = 1;
+ vp9_header.temporal_up_switch = true;
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
packet_->is_first_packet_in_frame = false;
@@ -1083,10 +1100,10 @@
packet_->seqNum = 65485;
packet_->timestamp = 3000;
packet_->frameType = kVideoFrameKey;
- packet_->video_header.vp9().spatial_idx = 1;
- packet_->video_header.vp9().picture_id = 5;
- packet_->video_header.vp9().temporal_idx = 0;
- packet_->video_header.vp9().temporal_up_switch = false;
+ vp9_header.spatial_idx = 1;
+ vp9_header.picture_id = 5;
+ vp9_header.temporal_idx = 0;
+ vp9_header.temporal_up_switch = false;
EXPECT_EQ(kIncomplete, jitter_buffer_->InsertPacket(*packet_, &re));
// Insert first frame with SS data.
@@ -1096,12 +1113,12 @@
packet_->frameType = kVideoFrameKey;
packet_->width = 352;
packet_->height = 288;
- packet_->video_header.vp9().spatial_idx = 0;
- packet_->video_header.vp9().picture_id = 5;
- packet_->video_header.vp9().temporal_idx = 0;
- packet_->video_header.vp9().temporal_up_switch = false;
- packet_->video_header.vp9().ss_data_available = true;
- packet_->video_header.vp9().gof.SetGofInfoVP9(
+ vp9_header.spatial_idx = 0;
+ vp9_header.picture_id = 5;
+ vp9_header.temporal_idx = 0;
+ vp9_header.temporal_up_switch = false;
+ vp9_header.ss_data_available = true;
+ vp9_header.gof.SetGofInfoVP9(
kTemporalStructureMode2); // kTemporalStructureMode3: 0-1-0-1..
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
diff --git a/modules/video_coding/rtp_frame_reference_finder_unittest.cc b/modules/video_coding/rtp_frame_reference_finder_unittest.cc
index 83454eb..9d26a2c 100644
--- a/modules/video_coding/rtp_frame_reference_finder_unittest.cc
+++ b/modules/video_coding/rtp_frame_reference_finder_unittest.cc
@@ -135,26 +135,28 @@
bool up_switch = false,
GofInfoVP9* ss = nullptr) {
VCMPacket packet;
+ auto& vp9_header =
+ packet.video_header.video_type_header.emplace<RTPVideoHeaderVP9>();
packet.timestamp = pid;
packet.codec = kVideoCodecVP9;
packet.seqNum = seq_num_start;
packet.markerBit = (seq_num_start == seq_num_end);
packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta;
- packet.video_header.vp9().flexible_mode = false;
- packet.video_header.vp9().picture_id = pid % (1 << 15);
- packet.video_header.vp9().temporal_idx = tid;
- packet.video_header.vp9().spatial_idx = sid;
- packet.video_header.vp9().tl0_pic_idx = tl0;
- packet.video_header.vp9().temporal_up_switch = up_switch;
+ vp9_header.flexible_mode = false;
+ vp9_header.picture_id = pid % (1 << 15);
+ vp9_header.temporal_idx = tid;
+ vp9_header.spatial_idx = sid;
+ vp9_header.tl0_pic_idx = tl0;
+ vp9_header.temporal_up_switch = up_switch;
if (ss != nullptr) {
- packet.video_header.vp9().ss_data_available = true;
- packet.video_header.vp9().gof = *ss;
+ vp9_header.ss_data_available = true;
+ vp9_header.gof = *ss;
}
ref_packet_buffer_->InsertPacket(&packet);
if (seq_num_start != seq_num_end) {
packet.markerBit = true;
- packet.video_header.vp9().ss_data_available = false;
+ vp9_header.ss_data_available = false;
packet.seqNum = seq_num_end;
ref_packet_buffer_->InsertPacket(&packet);
}
@@ -174,20 +176,22 @@
bool inter = false,
std::vector<uint8_t> refs = std::vector<uint8_t>()) {
VCMPacket packet;
+ auto& vp9_header =
+ packet.video_header.video_type_header.emplace<RTPVideoHeaderVP9>();
packet.timestamp = pid;
packet.codec = kVideoCodecVP9;
packet.seqNum = seq_num_start;
packet.markerBit = (seq_num_start == seq_num_end);
packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta;
- packet.video_header.vp9().inter_layer_predicted = inter;
- packet.video_header.vp9().flexible_mode = true;
- packet.video_header.vp9().picture_id = pid % (1 << 15);
- packet.video_header.vp9().temporal_idx = tid;
- packet.video_header.vp9().spatial_idx = sid;
- packet.video_header.vp9().tl0_pic_idx = tl0;
- packet.video_header.vp9().num_ref_pics = refs.size();
+ vp9_header.inter_layer_predicted = inter;
+ vp9_header.flexible_mode = true;
+ vp9_header.picture_id = pid % (1 << 15);
+ vp9_header.temporal_idx = tid;
+ vp9_header.spatial_idx = sid;
+ vp9_header.tl0_pic_idx = tl0;
+ vp9_header.num_ref_pics = refs.size();
for (size_t i = 0; i < refs.size(); ++i)
- packet.video_header.vp9().pid_diff[i] = refs[i];
+ vp9_header.pid_diff[i] = refs[i];
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 b0066ab..a80c7b2 100644
--- a/modules/video_coding/session_info.cc
+++ b/modules/video_coding/session_info.cc
@@ -64,7 +64,9 @@
if (packets_.front().video_header.codec == kVideoCodecVP8) {
return packets_.front().video_header.vp8().pictureId;
} else if (packets_.front().video_header.codec == kVideoCodecVP9) {
- return packets_.front().video_header.vp9().picture_id;
+ return absl::get<RTPVideoHeaderVP9>(
+ packets_.front().video_header.video_type_header)
+ .picture_id;
} else {
return kNoPictureId;
}
@@ -76,7 +78,9 @@
if (packets_.front().video_header.codec == kVideoCodecVP8) {
return packets_.front().video_header.vp8().temporalIdx;
} else if (packets_.front().video_header.codec == kVideoCodecVP9) {
- return packets_.front().video_header.vp9().temporal_idx;
+ return absl::get<RTPVideoHeaderVP9>(
+ packets_.front().video_header.video_type_header)
+ .temporal_idx;
} else {
return kNoTemporalIdx;
}
@@ -88,7 +92,9 @@
if (packets_.front().video_header.codec == kVideoCodecVP8) {
return packets_.front().video_header.vp8().layerSync;
} else if (packets_.front().video_header.codec == kVideoCodecVP9) {
- return packets_.front().video_header.vp9().temporal_up_switch;
+ return absl::get<RTPVideoHeaderVP9>(
+ packets_.front().video_header.video_type_header)
+ .temporal_up_switch;
} else {
return false;
}
@@ -100,7 +106,9 @@
if (packets_.front().video_header.codec == kVideoCodecVP8) {
return packets_.front().video_header.vp8().tl0PicIdx;
} else if (packets_.front().video_header.codec == kVideoCodecVP9) {
- return packets_.front().video_header.vp9().tl0_pic_idx;
+ return absl::get<RTPVideoHeaderVP9>(
+ packets_.front().video_header.video_type_header)
+ .tl0_pic_idx;
} else {
return kNoTl0PicIdx;
}
@@ -122,17 +130,19 @@
}
void VCMSessionInfo::SetGofInfo(const GofInfoVP9& gof_info, size_t idx) {
- if (packets_.empty() ||
- packets_.front().video_header.codec != kVideoCodecVP9 ||
- packets_.front().video_header.vp9().flexible_mode) {
+ if (packets_.empty())
return;
- }
- packets_.front().video_header.vp9().temporal_idx = gof_info.temporal_idx[idx];
- packets_.front().video_header.vp9().temporal_up_switch =
- gof_info.temporal_up_switch[idx];
- packets_.front().video_header.vp9().num_ref_pics = gof_info.num_ref_pics[idx];
+
+ auto* vp9_header = absl::get_if<RTPVideoHeaderVP9>(
+ &packets_.front().video_header.video_type_header);
+ if (!vp9_header || vp9_header->flexible_mode)
+ return;
+
+ vp9_header->temporal_idx = gof_info.temporal_idx[idx];
+ vp9_header->temporal_up_switch = gof_info.temporal_up_switch[idx];
+ vp9_header->num_ref_pics = gof_info.num_ref_pics[idx];
for (uint8_t i = 0; i < gof_info.num_ref_pics[idx]; ++i) {
- packets_.front().video_header.vp9().pid_diff[i] = gof_info.pid_diff[idx][i];
+ vp9_header->pid_diff[i] = gof_info.pid_diff[idx][i];
}
}