Add accessors to the types in the RTPVideoTypeHeader in RTPVideoHeader.
This CL is in preparation to change the RTPVideoTypeHeader into an absl::variant.
Bug: none
Change-Id: I1672d866df0395f3417d8e278cc67f017ab0ff98
Reviewed-on: https://webrtc-review.googlesource.com/87261
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23856}
diff --git a/modules/video_coding/decoding_state_unittest.cc b/modules/video_coding/decoding_state_unittest.cc
index 3ed2e89..740c384 100644
--- a/modules/video_coding/decoding_state_unittest.cc
+++ b/modules/video_coding/decoding_state_unittest.cc
@@ -37,7 +37,7 @@
packet.seqNum = 0xffff;
packet.frameType = kVideoFrameDelta;
packet.video_header.codec = kVideoCodecVP8;
- packet.video_header.codecHeader.VP8.pictureId = 0x007F;
+ packet.video_header.vp8().pictureId = 0x007F;
FrameData frame_data;
frame_data.rtt_ms = 0;
frame_data.rolling_average_packets_per_frame = -1;
@@ -53,17 +53,17 @@
packet.frameType = kVideoFrameDelta;
// Use pictureId
packet.is_first_packet_in_frame = false;
- packet.video_header.codecHeader.VP8.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();
- packet.video_header.codecHeader.VP8.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.
- packet.video_header.codecHeader.VP8.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));
@@ -82,9 +82,9 @@
// Insert packet with temporal info.
dec_state.Reset();
frame.Reset();
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0;
- packet.video_header.codecHeader.VP8.temporalIdx = 0;
- packet.video_header.codecHeader.VP8.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());
@@ -93,9 +93,9 @@
EXPECT_TRUE(dec_state.full_sync());
frame.Reset();
// 1 layer up - still good.
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0;
- packet.video_header.codecHeader.VP8.temporalIdx = 1;
- packet.video_header.codecHeader.VP8.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));
@@ -104,18 +104,18 @@
EXPECT_TRUE(dec_state.full_sync());
frame.Reset();
// Lost non-base layer packet => should update sync parameter.
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0;
- packet.video_header.codecHeader.VP8.temporalIdx = 3;
- packet.video_header.codecHeader.VP8.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();
- packet.video_header.codecHeader.VP8.tl0PicIdx = 1;
- packet.video_header.codecHeader.VP8.temporalIdx = 2;
- packet.video_header.codecHeader.VP8.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));
@@ -125,9 +125,9 @@
EXPECT_TRUE(dec_state.full_sync());
// Next base layer (dropped interim non-base layers) - should update sync.
frame.Reset();
- packet.video_header.codecHeader.VP8.tl0PicIdx = 1;
- packet.video_header.codecHeader.VP8.temporalIdx = 0;
- packet.video_header.codecHeader.VP8.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));
@@ -137,18 +137,18 @@
// Check wrap for temporal layers.
frame.Reset();
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0x00FF;
- packet.video_header.codecHeader.VP8.temporalIdx = 0;
- packet.video_header.codecHeader.VP8.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();
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0x0000;
- packet.video_header.codecHeader.VP8.temporalIdx = 0;
- packet.video_header.codecHeader.VP8.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));
@@ -214,9 +214,9 @@
packet.video_header.codec = kVideoCodecVP8;
packet.timestamp = 0;
packet.seqNum = 0;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0;
- packet.video_header.codecHeader.VP8.temporalIdx = 0;
- packet.video_header.codecHeader.VP8.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;
@@ -226,9 +226,9 @@
frame.Reset();
packet.timestamp = 1;
packet.seqNum = 1;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0;
- packet.video_header.codecHeader.VP8.temporalIdx = 1;
- packet.video_header.codecHeader.VP8.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);
@@ -238,9 +238,9 @@
frame.Reset();
packet.timestamp = 3;
packet.seqNum = 3;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0;
- packet.video_header.codecHeader.VP8.temporalIdx = 3;
- packet.video_header.codecHeader.VP8.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);
@@ -249,9 +249,9 @@
frame.Reset();
packet.timestamp = 4;
packet.seqNum = 4;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 1;
- packet.video_header.codecHeader.VP8.temporalIdx = 0;
- packet.video_header.codecHeader.VP8.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);
@@ -263,9 +263,9 @@
packet.is_first_packet_in_frame = 1;
packet.timestamp = 5;
packet.seqNum = 5;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 2;
- packet.video_header.codecHeader.VP8.temporalIdx = 0;
- packet.video_header.codecHeader.VP8.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);
@@ -276,9 +276,9 @@
packet.frameType = kVideoFrameDelta;
packet.timestamp = 6;
packet.seqNum = 6;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 3;
- packet.video_header.codecHeader.VP8.temporalIdx = 0;
- packet.video_header.codecHeader.VP8.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());
@@ -287,9 +287,9 @@
packet.is_first_packet_in_frame = 1;
packet.timestamp = 8;
packet.seqNum = 8;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 4;
- packet.video_header.codecHeader.VP8.temporalIdx = 0;
- packet.video_header.codecHeader.VP8.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());
@@ -302,10 +302,10 @@
packet.is_first_packet_in_frame = 1;
packet.timestamp = 9;
packet.seqNum = 9;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 4;
- packet.video_header.codecHeader.VP8.temporalIdx = 2;
- packet.video_header.codecHeader.VP8.pictureId = 9;
- packet.video_header.codecHeader.VP8.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());
@@ -323,10 +323,10 @@
packet.markerBit = 1;
packet.timestamp = 0;
packet.seqNum = 0;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0;
- packet.video_header.codecHeader.VP8.temporalIdx = 0;
- packet.video_header.codecHeader.VP8.pictureId = 0;
- packet.video_header.codecHeader.VP8.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());
@@ -337,10 +337,10 @@
packet.markerBit = 0;
packet.timestamp = 1;
packet.seqNum = 1;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0;
- packet.video_header.codecHeader.VP8.temporalIdx = 2;
- packet.video_header.codecHeader.VP8.pictureId = 1;
- packet.video_header.codecHeader.VP8.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
@@ -350,10 +350,10 @@
packet.markerBit = 1;
packet.timestamp = 2;
packet.seqNum = 3;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0;
- packet.video_header.codecHeader.VP8.temporalIdx = 1;
- packet.video_header.codecHeader.VP8.pictureId = 2;
- packet.video_header.codecHeader.VP8.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());
@@ -368,9 +368,9 @@
packet.video_header.codec = kVideoCodecVP8;
packet.timestamp = 0;
packet.seqNum = 0;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0;
- packet.video_header.codecHeader.VP8.temporalIdx = 0;
- packet.video_header.codecHeader.VP8.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;
@@ -384,8 +384,8 @@
packet.frameType = kVideoFrameDelta;
packet.timestamp += 3000;
++packet.seqNum;
- packet.video_header.codecHeader.VP8.temporalIdx = 1;
- packet.video_header.codecHeader.VP8.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);
@@ -421,9 +421,9 @@
packet.video_header.codec = kVideoCodecVP8;
packet.timestamp = 0;
packet.seqNum = 0;
- packet.video_header.codecHeader.VP8.tl0PicIdx = 0;
- packet.video_header.codecHeader.VP8.temporalIdx = 0;
- packet.video_header.codecHeader.VP8.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;
@@ -433,15 +433,15 @@
frame.Reset();
++packet.timestamp;
++packet.seqNum;
- packet.video_header.codecHeader.VP8.temporalIdx++;
- packet.video_header.codecHeader.VP8.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.
- packet.video_header.codecHeader.VP8.tl0PicIdx += 3;
- packet.video_header.codecHeader.VP8.temporalIdx++;
- packet.video_header.codecHeader.VP8.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));
}
@@ -458,7 +458,7 @@
packet.dataPtr = data;
packet.video_header.codec = kVideoCodecVP9;
- RTPVideoHeaderVP9& vp9_hdr = packet.video_header.codecHeader.VP9;
+ RTPVideoHeaderVP9& vp9_hdr = packet.video_header.vp9();
vp9_hdr.picture_id = 10;
vp9_hdr.flexible_mode = true;
@@ -501,7 +501,7 @@
packet.dataPtr = data;
packet.video_header.codec = kVideoCodecVP9;
- RTPVideoHeaderVP9& vp9_hdr = packet.video_header.codecHeader.VP9;
+ RTPVideoHeaderVP9& vp9_hdr = packet.video_header.vp9();
vp9_hdr.picture_id = 10;
vp9_hdr.flexible_mode = true;
@@ -556,7 +556,7 @@
packet.dataPtr = data;
packet.video_header.codec = kVideoCodecVP9;
- RTPVideoHeaderVP9& vp9_hdr = packet.video_header.codecHeader.VP9;
+ RTPVideoHeaderVP9& vp9_hdr = packet.video_header.vp9();
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 a3d93b2..ebaa83b 100644
--- a/modules/video_coding/encoded_frame.cc
+++ b/modules/video_coding/encoded_frame.cc
@@ -64,16 +64,15 @@
_codecSpecificInfo.codecType = kVideoCodecVP8;
}
_codecSpecificInfo.codecSpecific.VP8.nonReference =
- header->codecHeader.VP8.nonReference;
- if (header->codecHeader.VP8.temporalIdx != kNoTemporalIdx) {
+ header->vp8().nonReference;
+ if (header->vp8().temporalIdx != kNoTemporalIdx) {
_codecSpecificInfo.codecSpecific.VP8.temporalIdx =
- header->codecHeader.VP8.temporalIdx;
+ header->vp8().temporalIdx;
_codecSpecificInfo.codecSpecific.VP8.layerSync =
- header->codecHeader.VP8.layerSync;
+ header->vp8().layerSync;
}
- if (header->codecHeader.VP8.keyIdx != kNoKeyIdx) {
- _codecSpecificInfo.codecSpecific.VP8.keyIdx =
- header->codecHeader.VP8.keyIdx;
+ if (header->vp8().keyIdx != kNoKeyIdx) {
+ _codecSpecificInfo.codecSpecific.VP8.keyIdx = header->vp8().keyIdx;
}
break;
}
@@ -87,50 +86,48 @@
_codecSpecificInfo.codecType = kVideoCodecVP9;
}
_codecSpecificInfo.codecSpecific.VP9.inter_pic_predicted =
- header->codecHeader.VP9.inter_pic_predicted;
+ header->vp9().inter_pic_predicted;
_codecSpecificInfo.codecSpecific.VP9.flexible_mode =
- header->codecHeader.VP9.flexible_mode;
+ header->vp9().flexible_mode;
_codecSpecificInfo.codecSpecific.VP9.num_ref_pics =
- header->codecHeader.VP9.num_ref_pics;
- for (uint8_t r = 0; r < header->codecHeader.VP9.num_ref_pics; ++r) {
+ header->vp9().num_ref_pics;
+ for (uint8_t r = 0; r < header->vp9().num_ref_pics; ++r) {
_codecSpecificInfo.codecSpecific.VP9.p_diff[r] =
- header->codecHeader.VP9.pid_diff[r];
+ header->vp9().pid_diff[r];
}
_codecSpecificInfo.codecSpecific.VP9.ss_data_available =
- header->codecHeader.VP9.ss_data_available;
- if (header->codecHeader.VP9.temporal_idx != kNoTemporalIdx) {
+ header->vp9().ss_data_available;
+ if (header->vp9().temporal_idx != kNoTemporalIdx) {
_codecSpecificInfo.codecSpecific.VP9.temporal_idx =
- header->codecHeader.VP9.temporal_idx;
+ header->vp9().temporal_idx;
_codecSpecificInfo.codecSpecific.VP9.temporal_up_switch =
- header->codecHeader.VP9.temporal_up_switch;
+ header->vp9().temporal_up_switch;
}
- if (header->codecHeader.VP9.spatial_idx != kNoSpatialIdx) {
+ if (header->vp9().spatial_idx != kNoSpatialIdx) {
_codecSpecificInfo.codecSpecific.VP9.spatial_idx =
- header->codecHeader.VP9.spatial_idx;
+ header->vp9().spatial_idx;
_codecSpecificInfo.codecSpecific.VP9.inter_layer_predicted =
- header->codecHeader.VP9.inter_layer_predicted;
+ header->vp9().inter_layer_predicted;
}
- if (header->codecHeader.VP9.gof_idx != kNoGofIdx) {
- _codecSpecificInfo.codecSpecific.VP9.gof_idx =
- header->codecHeader.VP9.gof_idx;
+ if (header->vp9().gof_idx != kNoGofIdx) {
+ _codecSpecificInfo.codecSpecific.VP9.gof_idx = header->vp9().gof_idx;
}
- if (header->codecHeader.VP9.ss_data_available) {
+ if (header->vp9().ss_data_available) {
_codecSpecificInfo.codecSpecific.VP9.num_spatial_layers =
- header->codecHeader.VP9.num_spatial_layers;
+ header->vp9().num_spatial_layers;
_codecSpecificInfo.codecSpecific.VP9
.spatial_layer_resolution_present =
- header->codecHeader.VP9.spatial_layer_resolution_present;
- if (header->codecHeader.VP9.spatial_layer_resolution_present) {
- for (size_t i = 0; i < header->codecHeader.VP9.num_spatial_layers;
- ++i) {
+ 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) {
_codecSpecificInfo.codecSpecific.VP9.width[i] =
- header->codecHeader.VP9.width[i];
+ header->vp9().width[i];
_codecSpecificInfo.codecSpecific.VP9.height[i] =
- header->codecHeader.VP9.height[i];
+ header->vp9().height[i];
}
}
_codecSpecificInfo.codecSpecific.VP9.gof.CopyGofInfoVP9(
- header->codecHeader.VP9.gof);
+ header->vp9().gof);
}
break;
}
diff --git a/modules/video_coding/h264_sps_pps_tracker.cc b/modules/video_coding/h264_sps_pps_tracker.cc
index 2b247c9..51931f8 100644
--- a/modules/video_coding/h264_sps_pps_tracker.cc
+++ b/modules/video_coding/h264_sps_pps_tracker.cc
@@ -36,7 +36,7 @@
const uint8_t* data = packet->dataPtr;
const size_t data_size = packet->sizeBytes;
const RTPVideoHeader& video_header = packet->video_header;
- RTPVideoHeaderH264* codec_header = &packet->video_header.codecHeader.H264;
+ RTPVideoHeaderH264* codec_header = &packet->video_header.h264();
bool append_sps_pps = false;
auto sps = sps_data_.end();
diff --git a/modules/video_coding/h264_sps_pps_tracker_unittest.cc b/modules/video_coding/h264_sps_pps_tracker_unittest.cc
index 0ad85ac..4b43955 100644
--- a/modules/video_coding/h264_sps_pps_tracker_unittest.cc
+++ b/modules/video_coding/h264_sps_pps_tracker_unittest.cc
@@ -53,9 +53,9 @@
VCMPacket GetDefaultPacket() {
VCMPacket packet;
packet.codec = kVideoCodecH264;
- packet.video_header.codecHeader.H264.nalus_length = 0;
+ packet.video_header.h264().nalus_length = 0;
packet.video_header.is_first_packet_in_frame = false;
- packet.video_header.codecHeader.H264.packetization_type = kH264SingleNalu;
+ packet.video_header.h264().packetization_type = kH264SingleNalu;
return packet;
}
@@ -68,8 +68,8 @@
data->push_back(H264::NaluType::kSps);
data->push_back(sps_id); // The sps data, just a single byte.
- packet->video_header.codecHeader.H264
- .nalus[packet->video_header.codecHeader.H264.nalus_length++] = info;
+ packet->video_header.h264()
+ .nalus[packet->video_header.h264().nalus_length++] = info;
}
void AddPps(VCMPacket* packet,
@@ -83,8 +83,8 @@
data->push_back(H264::NaluType::kPps);
data->push_back(pps_id); // The pps data, just a single byte.
- packet->video_header.codecHeader.H264
- .nalus[packet->video_header.codecHeader.H264.nalus_length++] = info;
+ packet->video_header.h264()
+ .nalus[packet->video_header.h264().nalus_length++] = info;
}
void AddIdr(VCMPacket* packet, int pps_id) {
@@ -93,8 +93,8 @@
info.sps_id = -1;
info.pps_id = pps_id;
- packet->video_header.codecHeader.H264
- .nalus[packet->video_header.codecHeader.H264.nalus_length++] = info;
+ packet->video_header.h264()
+ .nalus[packet->video_header.h264().nalus_length++] = info;
}
protected:
@@ -104,7 +104,7 @@
TEST_F(TestH264SpsPpsTracker, NoNalus) {
uint8_t data[] = {1, 2, 3};
VCMPacket packet = GetDefaultPacket();
- packet.video_header.codecHeader.H264.packetization_type = kH264FuA;
+ packet.video_header.h264().packetization_type = kH264FuA;
packet.dataPtr = data;
packet.sizeBytes = sizeof(data);
@@ -116,7 +116,7 @@
TEST_F(TestH264SpsPpsTracker, FuAFirstPacket) {
uint8_t data[] = {1, 2, 3};
VCMPacket packet = GetDefaultPacket();
- packet.video_header.codecHeader.H264.packetization_type = kH264FuA;
+ packet.video_header.h264().packetization_type = kH264FuA;
packet.video_header.is_first_packet_in_frame = true;
packet.dataPtr = data;
packet.sizeBytes = sizeof(data);
@@ -132,7 +132,7 @@
TEST_F(TestH264SpsPpsTracker, StapAIncorrectSegmentLength) {
uint8_t data[] = {0, 0, 2, 0};
VCMPacket packet = GetDefaultPacket();
- packet.video_header.codecHeader.H264.packetization_type = kH264StapA;
+ packet.video_header.h264().packetization_type = kH264StapA;
packet.video_header.is_first_packet_in_frame = true;
packet.dataPtr = data;
packet.sizeBytes = sizeof(data);
@@ -158,7 +158,7 @@
TEST_F(TestH264SpsPpsTracker, IdrNoSpsPpsInserted) {
std::vector<uint8_t> data = {1, 2, 3};
VCMPacket packet = GetDefaultPacket();
- packet.video_header.codecHeader.H264.packetization_type = kH264FuA;
+ packet.video_header.h264().packetization_type = kH264FuA;
AddIdr(&packet, 0);
packet.dataPtr = data.data();
@@ -244,7 +244,7 @@
TEST_F(TestH264SpsPpsTracker, SpsPpsIdrInStapA) {
std::vector<uint8_t> data;
VCMPacket packet = GetDefaultPacket();
- packet.video_header.codecHeader.H264.packetization_type = kH264StapA;
+ packet.video_header.h264().packetization_type = kH264StapA;
packet.video_header.is_first_packet_in_frame = true; // Always true for StapA
data.insert(data.end(), {0}); // First byte is ignored
@@ -289,13 +289,13 @@
AddIdr(&idr_packet, 0);
idr_packet.dataPtr = kData;
idr_packet.sizeBytes = sizeof(kData);
- EXPECT_EQ(1u, idr_packet.video_header.codecHeader.H264.nalus_length);
+ EXPECT_EQ(1u, idr_packet.video_header.h264().nalus_length);
EXPECT_EQ(H264SpsPpsTracker::kInsert,
tracker_.CopyAndFixBitstream(&idr_packet));
- EXPECT_EQ(3u, idr_packet.video_header.codecHeader.H264.nalus_length);
+ EXPECT_EQ(3u, idr_packet.video_header.h264().nalus_length);
EXPECT_EQ(320, idr_packet.width);
EXPECT_EQ(240, idr_packet.height);
- ExpectSpsPpsIdr(idr_packet.video_header.codecHeader.H264, 0, 0);
+ ExpectSpsPpsIdr(idr_packet.video_header.h264(), 0, 0);
if (idr_packet.dataPtr != kData) {
// In case CopyAndFixBitStream() prepends SPS/PPS nalus to the packet, it
diff --git a/modules/video_coding/jitter_buffer.cc b/modules/video_coding/jitter_buffer.cc
index 5f45ece..b98fd92 100644
--- a/modules/video_coding/jitter_buffer.cc
+++ b/modules/video_coding/jitter_buffer.cc
@@ -124,10 +124,10 @@
}
bool Vp9SsMap::Insert(const VCMPacket& packet) {
- if (!packet.video_header.codecHeader.VP9.ss_data_available)
+ if (!packet.video_header.vp9().ss_data_available)
return false;
- ss_map_[packet.timestamp] = packet.video_header.codecHeader.VP9.gof;
+ ss_map_[packet.timestamp] = packet.video_header.vp9().gof;
return true;
}
@@ -175,7 +175,7 @@
// TODO(asapersson): Update according to updates in RTP payload profile.
bool Vp9SsMap::UpdatePacket(VCMPacket* packet) {
- uint8_t gof_idx = packet->video_header.codecHeader.VP9.gof_idx;
+ uint8_t gof_idx = packet->video_header.vp9().gof_idx;
if (gof_idx == kNoGofIdx)
return false; // No update needed.
@@ -186,7 +186,7 @@
if (gof_idx >= it->second.num_frames_in_gof)
return false; // Assume corresponding SS not yet received.
- RTPVideoHeaderVP9* vp9 = &packet->video_header.codecHeader.VP9;
+ 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];
diff --git a/modules/video_coding/jitter_buffer_unittest.cc b/modules/video_coding/jitter_buffer_unittest.cc
index 45b2c2d..db4ede0 100644
--- a/modules/video_coding/jitter_buffer_unittest.cc
+++ b/modules/video_coding/jitter_buffer_unittest.cc
@@ -50,12 +50,12 @@
packet_.frameType = kVideoFrameKey;
packet_.codec = kVideoCodecVP9;
packet_.video_header.codec = kVideoCodecVP9;
- packet_.video_header.codecHeader.VP9.flexible_mode = false;
- packet_.video_header.codecHeader.VP9.gof_idx = 0;
- packet_.video_header.codecHeader.VP9.temporal_idx = kNoTemporalIdx;
- packet_.video_header.codecHeader.VP9.temporal_up_switch = false;
- packet_.video_header.codecHeader.VP9.ss_data_available = true;
- packet_.video_header.codecHeader.VP9.gof.SetGofInfoVP9(
+ 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(
kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2..
}
@@ -69,7 +69,7 @@
}
TEST_F(Vp9SsMapTest, Insert_NoSsData) {
- packet_.video_header.codecHeader.VP9.ss_data_available = false;
+ packet_.video_header.vp9().ss_data_available = false;
EXPECT_FALSE(map_.Insert(packet_));
}
@@ -146,52 +146,52 @@
}
TEST_F(Vp9SsMapTest, UpdatePacket_NoSsData) {
- packet_.video_header.codecHeader.VP9.gof_idx = 0;
+ packet_.video_header.vp9().gof_idx = 0;
EXPECT_FALSE(map_.UpdatePacket(&packet_));
}
TEST_F(Vp9SsMapTest, UpdatePacket_NoGofIdx) {
EXPECT_TRUE(map_.Insert(packet_));
- packet_.video_header.codecHeader.VP9.gof_idx = kNoGofIdx;
+ packet_.video_header.vp9().gof_idx = kNoGofIdx;
EXPECT_FALSE(map_.UpdatePacket(&packet_));
}
TEST_F(Vp9SsMapTest, UpdatePacket_InvalidGofIdx) {
EXPECT_TRUE(map_.Insert(packet_));
- packet_.video_header.codecHeader.VP9.gof_idx = 4;
+ packet_.video_header.vp9().gof_idx = 4;
EXPECT_FALSE(map_.UpdatePacket(&packet_));
}
TEST_F(Vp9SsMapTest, UpdatePacket) {
EXPECT_TRUE(map_.Insert(packet_)); // kTemporalStructureMode3: 0-2-1-2..
- packet_.video_header.codecHeader.VP9.gof_idx = 0;
+ packet_.video_header.vp9().gof_idx = 0;
EXPECT_TRUE(map_.UpdatePacket(&packet_));
- EXPECT_EQ(0, packet_.video_header.codecHeader.VP9.temporal_idx);
- EXPECT_FALSE(packet_.video_header.codecHeader.VP9.temporal_up_switch);
- EXPECT_EQ(1U, packet_.video_header.codecHeader.VP9.num_ref_pics);
- EXPECT_EQ(4, packet_.video_header.codecHeader.VP9.pid_diff[0]);
+ 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]);
- packet_.video_header.codecHeader.VP9.gof_idx = 1;
+ packet_.video_header.vp9().gof_idx = 1;
EXPECT_TRUE(map_.UpdatePacket(&packet_));
- EXPECT_EQ(2, packet_.video_header.codecHeader.VP9.temporal_idx);
- EXPECT_TRUE(packet_.video_header.codecHeader.VP9.temporal_up_switch);
- EXPECT_EQ(1U, packet_.video_header.codecHeader.VP9.num_ref_pics);
- EXPECT_EQ(1, packet_.video_header.codecHeader.VP9.pid_diff[0]);
+ 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]);
- packet_.video_header.codecHeader.VP9.gof_idx = 2;
+ packet_.video_header.vp9().gof_idx = 2;
EXPECT_TRUE(map_.UpdatePacket(&packet_));
- EXPECT_EQ(1, packet_.video_header.codecHeader.VP9.temporal_idx);
- EXPECT_TRUE(packet_.video_header.codecHeader.VP9.temporal_up_switch);
- EXPECT_EQ(1U, packet_.video_header.codecHeader.VP9.num_ref_pics);
- EXPECT_EQ(2, packet_.video_header.codecHeader.VP9.pid_diff[0]);
+ 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]);
- packet_.video_header.codecHeader.VP9.gof_idx = 3;
+ packet_.video_header.vp9().gof_idx = 3;
EXPECT_TRUE(map_.UpdatePacket(&packet_));
- EXPECT_EQ(2, packet_.video_header.codecHeader.VP9.temporal_idx);
- EXPECT_TRUE(packet_.video_header.codecHeader.VP9.temporal_up_switch);
- EXPECT_EQ(1U, packet_.video_header.codecHeader.VP9.num_ref_pics);
- EXPECT_EQ(1, packet_.video_header.codecHeader.VP9.pid_diff[0]);
+ 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]);
}
class TestBasicJitterBuffer : public ::testing::TestWithParam<std::string>,
@@ -924,20 +924,20 @@
packet_->video_header.codec = kVideoCodecVP9;
packet_->is_first_packet_in_frame = true;
packet_->markerBit = true;
- packet_->video_header.codecHeader.VP9.flexible_mode = false;
- packet_->video_header.codecHeader.VP9.spatial_idx = 0;
- packet_->video_header.codecHeader.VP9.beginning_of_frame = true;
- packet_->video_header.codecHeader.VP9.end_of_frame = true;
- packet_->video_header.codecHeader.VP9.temporal_up_switch = false;
+ 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;
packet_->seqNum = 65485;
packet_->timestamp = 1000;
packet_->frameType = kVideoFrameKey;
- packet_->video_header.codecHeader.VP9.picture_id = 5;
- packet_->video_header.codecHeader.VP9.tl0_pic_idx = 200;
- packet_->video_header.codecHeader.VP9.temporal_idx = 0;
- packet_->video_header.codecHeader.VP9.ss_data_available = true;
- packet_->video_header.codecHeader.VP9.gof.SetGofInfoVP9(
+ 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(
kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2..
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
@@ -945,10 +945,10 @@
packet_->seqNum = 65489;
packet_->timestamp = 13000;
packet_->frameType = kVideoFrameDelta;
- packet_->video_header.codecHeader.VP9.picture_id = 9;
- packet_->video_header.codecHeader.VP9.tl0_pic_idx = 201;
- packet_->video_header.codecHeader.VP9.temporal_idx = 0;
- packet_->video_header.codecHeader.VP9.ss_data_available = false;
+ 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;
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
VCMEncodedFrame* frame_out = DecodeCompleteFrame();
@@ -977,26 +977,26 @@
packet_->video_header.codec = kVideoCodecVP9;
packet_->is_first_packet_in_frame = true;
packet_->markerBit = true;
- packet_->video_header.codecHeader.VP9.flexible_mode = false;
- packet_->video_header.codecHeader.VP9.spatial_idx = 0;
- packet_->video_header.codecHeader.VP9.beginning_of_frame = true;
- packet_->video_header.codecHeader.VP9.end_of_frame = true;
- packet_->video_header.codecHeader.VP9.tl0_pic_idx = 200;
+ 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;
packet_->seqNum = 65486;
packet_->timestamp = 6000;
packet_->frameType = kVideoFrameDelta;
- packet_->video_header.codecHeader.VP9.picture_id = 6;
- packet_->video_header.codecHeader.VP9.temporal_idx = 2;
- packet_->video_header.codecHeader.VP9.temporal_up_switch = true;
+ packet_->video_header.vp9().picture_id = 6;
+ packet_->video_header.vp9().temporal_idx = 2;
+ packet_->video_header.vp9().temporal_up_switch = true;
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
packet_->seqNum = 65487;
packet_->timestamp = 9000;
packet_->frameType = kVideoFrameDelta;
- packet_->video_header.codecHeader.VP9.picture_id = 7;
- packet_->video_header.codecHeader.VP9.temporal_idx = 1;
- packet_->video_header.codecHeader.VP9.temporal_up_switch = true;
+ packet_->video_header.vp9().picture_id = 7;
+ packet_->video_header.vp9().temporal_idx = 1;
+ packet_->video_header.vp9().temporal_up_switch = true;
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
// Insert first frame with SS data.
@@ -1005,11 +1005,11 @@
packet_->frameType = kVideoFrameKey;
packet_->width = 352;
packet_->height = 288;
- packet_->video_header.codecHeader.VP9.picture_id = 5;
- packet_->video_header.codecHeader.VP9.temporal_idx = 0;
- packet_->video_header.codecHeader.VP9.temporal_up_switch = false;
- packet_->video_header.codecHeader.VP9.ss_data_available = true;
- packet_->video_header.codecHeader.VP9.gof.SetGofInfoVP9(
+ 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(
kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2..
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
@@ -1051,30 +1051,30 @@
bool re = false;
packet_->codec = kVideoCodecVP9;
packet_->video_header.codec = kVideoCodecVP9;
- packet_->video_header.codecHeader.VP9.flexible_mode = false;
- packet_->video_header.codecHeader.VP9.beginning_of_frame = true;
- packet_->video_header.codecHeader.VP9.end_of_frame = true;
- packet_->video_header.codecHeader.VP9.tl0_pic_idx = 200;
+ 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;
packet_->is_first_packet_in_frame = true;
packet_->markerBit = false;
packet_->seqNum = 65486;
packet_->timestamp = 6000;
packet_->frameType = kVideoFrameDelta;
- packet_->video_header.codecHeader.VP9.spatial_idx = 0;
- packet_->video_header.codecHeader.VP9.picture_id = 6;
- packet_->video_header.codecHeader.VP9.temporal_idx = 1;
- packet_->video_header.codecHeader.VP9.temporal_up_switch = true;
+ 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;
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.codecHeader.VP9.spatial_idx = 1;
- packet_->video_header.codecHeader.VP9.picture_id = 6;
- packet_->video_header.codecHeader.VP9.temporal_idx = 1;
- packet_->video_header.codecHeader.VP9.temporal_up_switch = true;
+ 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;
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
packet_->is_first_packet_in_frame = false;
@@ -1082,10 +1082,10 @@
packet_->seqNum = 65485;
packet_->timestamp = 3000;
packet_->frameType = kVideoFrameKey;
- packet_->video_header.codecHeader.VP9.spatial_idx = 1;
- packet_->video_header.codecHeader.VP9.picture_id = 5;
- packet_->video_header.codecHeader.VP9.temporal_idx = 0;
- packet_->video_header.codecHeader.VP9.temporal_up_switch = false;
+ 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;
EXPECT_EQ(kIncomplete, jitter_buffer_->InsertPacket(*packet_, &re));
// Insert first frame with SS data.
@@ -1095,12 +1095,12 @@
packet_->frameType = kVideoFrameKey;
packet_->width = 352;
packet_->height = 288;
- packet_->video_header.codecHeader.VP9.spatial_idx = 0;
- packet_->video_header.codecHeader.VP9.picture_id = 5;
- packet_->video_header.codecHeader.VP9.temporal_idx = 0;
- packet_->video_header.codecHeader.VP9.temporal_up_switch = false;
- packet_->video_header.codecHeader.VP9.ss_data_available = true;
- packet_->video_header.codecHeader.VP9.gof.SetGofInfoVP9(
+ 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(
kTemporalStructureMode2); // kTemporalStructureMode3: 0-1-0-1..
EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
@@ -1160,11 +1160,11 @@
packet_->markerBit = true;
packet_->codec = kVideoCodecH264;
packet_->video_header.codec = kVideoCodecH264;
- packet_->video_header.codecHeader.H264.nalu_type = H264::NaluType::kIdr;
- packet_->video_header.codecHeader.H264.nalus[0].type = H264::NaluType::kIdr;
- packet_->video_header.codecHeader.H264.nalus[0].sps_id = -1;
- packet_->video_header.codecHeader.H264.nalus[0].pps_id = 0;
- packet_->video_header.codecHeader.H264.nalus_length = 1;
+ packet_->video_header.h264().nalu_type = H264::NaluType::kIdr;
+ packet_->video_header.h264().nalus[0].type = H264::NaluType::kIdr;
+ packet_->video_header.h264().nalus[0].sps_id = -1;
+ packet_->video_header.h264().nalus[0].pps_id = 0;
+ packet_->video_header.h264().nalus_length = 1;
bool retransmitted = false;
EXPECT_EQ(kCompleteSession,
jitter_buffer_->InsertPacket(*packet_, &retransmitted));
@@ -1180,14 +1180,14 @@
packet_->markerBit = false;
packet_->codec = kVideoCodecH264;
packet_->video_header.codec = kVideoCodecH264;
- packet_->video_header.codecHeader.H264.nalu_type = H264::NaluType::kStapA;
- packet_->video_header.codecHeader.H264.nalus[0].type = H264::NaluType::kSps;
- packet_->video_header.codecHeader.H264.nalus[0].sps_id = 0;
- packet_->video_header.codecHeader.H264.nalus[0].pps_id = -1;
- packet_->video_header.codecHeader.H264.nalus[1].type = H264::NaluType::kPps;
- packet_->video_header.codecHeader.H264.nalus[1].sps_id = 0;
- packet_->video_header.codecHeader.H264.nalus[1].pps_id = 0;
- packet_->video_header.codecHeader.H264.nalus_length = 2;
+ packet_->video_header.h264().nalu_type = H264::NaluType::kStapA;
+ packet_->video_header.h264().nalus[0].type = H264::NaluType::kSps;
+ packet_->video_header.h264().nalus[0].sps_id = 0;
+ packet_->video_header.h264().nalus[0].pps_id = -1;
+ packet_->video_header.h264().nalus[1].type = H264::NaluType::kPps;
+ packet_->video_header.h264().nalus[1].sps_id = 0;
+ packet_->video_header.h264().nalus[1].pps_id = 0;
+ packet_->video_header.h264().nalus_length = 2;
// Not complete since the marker bit hasn't been received.
EXPECT_EQ(kIncomplete,
jitter_buffer_->InsertPacket(*packet_, &retransmitted));
@@ -1199,11 +1199,11 @@
packet_->markerBit = true;
packet_->codec = kVideoCodecH264;
packet_->video_header.codec = kVideoCodecH264;
- packet_->video_header.codecHeader.H264.nalu_type = H264::NaluType::kIdr;
- packet_->video_header.codecHeader.H264.nalus[0].type = H264::NaluType::kIdr;
- packet_->video_header.codecHeader.H264.nalus[0].sps_id = -1;
- packet_->video_header.codecHeader.H264.nalus[0].pps_id = 0;
- packet_->video_header.codecHeader.H264.nalus_length = 1;
+ packet_->video_header.h264().nalu_type = H264::NaluType::kIdr;
+ packet_->video_header.h264().nalus[0].type = H264::NaluType::kIdr;
+ packet_->video_header.h264().nalus[0].sps_id = -1;
+ packet_->video_header.h264().nalus[0].pps_id = 0;
+ packet_->video_header.h264().nalus_length = 1;
// Complete and decodable since the pps and sps are received in the first
// packet of this frame.
EXPECT_EQ(kCompleteSession,
@@ -1221,11 +1221,11 @@
packet_->markerBit = true;
packet_->codec = kVideoCodecH264;
packet_->video_header.codec = kVideoCodecH264;
- packet_->video_header.codecHeader.H264.nalu_type = H264::NaluType::kSlice;
- packet_->video_header.codecHeader.H264.nalus[0].type = H264::NaluType::kSlice;
- packet_->video_header.codecHeader.H264.nalus[0].sps_id = -1;
- packet_->video_header.codecHeader.H264.nalus[0].pps_id = 0;
- packet_->video_header.codecHeader.H264.nalus_length = 1;
+ packet_->video_header.h264().nalu_type = H264::NaluType::kSlice;
+ packet_->video_header.h264().nalus[0].type = H264::NaluType::kSlice;
+ packet_->video_header.h264().nalus[0].sps_id = -1;
+ packet_->video_header.h264().nalus[0].pps_id = 0;
+ packet_->video_header.h264().nalus_length = 1;
// Complete and decodable since sps, pps and key frame has been received.
EXPECT_EQ(kCompleteSession,
jitter_buffer_->InsertPacket(*packet_, &retransmitted));
diff --git a/modules/video_coding/packet_buffer.cc b/modules/video_coding/packet_buffer.cc
index 8960b1c..28ade46 100644
--- a/modules/video_coding/packet_buffer.cc
+++ b/modules/video_coding/packet_buffer.cc
@@ -304,7 +304,7 @@
if (is_h264 && !is_h264_keyframe) {
const RTPVideoHeaderH264& header =
- data_buffer_[start_index].video_header.codecHeader.H264;
+ data_buffer_[start_index].video_header.h264();
if (header.nalus_length >= kMaxNalusPerPacket)
return found_frames;
diff --git a/modules/video_coding/rtp_frame_reference_finder_unittest.cc b/modules/video_coding/rtp_frame_reference_finder_unittest.cc
index a8f1539..0d63a1d 100644
--- a/modules/video_coding/rtp_frame_reference_finder_unittest.cc
+++ b/modules/video_coding/rtp_frame_reference_finder_unittest.cc
@@ -108,10 +108,10 @@
packet.seqNum = seq_num_start;
packet.markerBit = (seq_num_start == seq_num_end);
packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta;
- packet.video_header.codecHeader.VP8.pictureId = pid % (1 << 15);
- packet.video_header.codecHeader.VP8.temporalIdx = tid;
- packet.video_header.codecHeader.VP8.tl0PicIdx = tl0;
- packet.video_header.codecHeader.VP8.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) {
@@ -140,21 +140,21 @@
packet.seqNum = seq_num_start;
packet.markerBit = (seq_num_start == seq_num_end);
packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta;
- packet.video_header.codecHeader.VP9.flexible_mode = false;
- packet.video_header.codecHeader.VP9.picture_id = pid % (1 << 15);
- packet.video_header.codecHeader.VP9.temporal_idx = tid;
- packet.video_header.codecHeader.VP9.spatial_idx = sid;
- packet.video_header.codecHeader.VP9.tl0_pic_idx = tl0;
- packet.video_header.codecHeader.VP9.temporal_up_switch = up_switch;
+ 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;
if (ss != nullptr) {
- packet.video_header.codecHeader.VP9.ss_data_available = true;
- packet.video_header.codecHeader.VP9.gof = *ss;
+ packet.video_header.vp9().ss_data_available = true;
+ packet.video_header.vp9().gof = *ss;
}
ref_packet_buffer_->InsertPacket(&packet);
if (seq_num_start != seq_num_end) {
packet.markerBit = true;
- packet.video_header.codecHeader.VP9.ss_data_available = false;
+ packet.video_header.vp9().ss_data_available = false;
packet.seqNum = seq_num_end;
ref_packet_buffer_->InsertPacket(&packet);
}
@@ -179,15 +179,15 @@
packet.seqNum = seq_num_start;
packet.markerBit = (seq_num_start == seq_num_end);
packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta;
- packet.video_header.codecHeader.VP9.inter_layer_predicted = inter;
- packet.video_header.codecHeader.VP9.flexible_mode = true;
- packet.video_header.codecHeader.VP9.picture_id = pid % (1 << 15);
- packet.video_header.codecHeader.VP9.temporal_idx = tid;
- packet.video_header.codecHeader.VP9.spatial_idx = sid;
- packet.video_header.codecHeader.VP9.tl0_pic_idx = tl0;
- packet.video_header.codecHeader.VP9.num_ref_pics = refs.size();
+ 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();
for (size_t i = 0; i < refs.size(); ++i)
- packet.video_header.codecHeader.VP9.pid_diff[i] = refs[i];
+ packet.video_header.vp9().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 74db4e7..1b6f732 100644
--- a/modules/video_coding/session_info.cc
+++ b/modules/video_coding/session_info.cc
@@ -60,9 +60,9 @@
if (packets_.empty())
return kNoPictureId;
if (packets_.front().video_header.codec == kVideoCodecVP8) {
- return packets_.front().video_header.codecHeader.VP8.pictureId;
+ return packets_.front().video_header.vp8().pictureId;
} else if (packets_.front().video_header.codec == kVideoCodecVP9) {
- return packets_.front().video_header.codecHeader.VP9.picture_id;
+ return packets_.front().video_header.vp9().picture_id;
} else {
return kNoPictureId;
}
@@ -72,9 +72,9 @@
if (packets_.empty())
return kNoTemporalIdx;
if (packets_.front().video_header.codec == kVideoCodecVP8) {
- return packets_.front().video_header.codecHeader.VP8.temporalIdx;
+ return packets_.front().video_header.vp8().temporalIdx;
} else if (packets_.front().video_header.codec == kVideoCodecVP9) {
- return packets_.front().video_header.codecHeader.VP9.temporal_idx;
+ return packets_.front().video_header.vp9().temporal_idx;
} else {
return kNoTemporalIdx;
}
@@ -84,9 +84,9 @@
if (packets_.empty())
return false;
if (packets_.front().video_header.codec == kVideoCodecVP8) {
- return packets_.front().video_header.codecHeader.VP8.layerSync;
+ return packets_.front().video_header.vp8().layerSync;
} else if (packets_.front().video_header.codec == kVideoCodecVP9) {
- return packets_.front().video_header.codecHeader.VP9.temporal_up_switch;
+ return packets_.front().video_header.vp9().temporal_up_switch;
} else {
return false;
}
@@ -96,9 +96,9 @@
if (packets_.empty())
return kNoTl0PicIdx;
if (packets_.front().video_header.codec == kVideoCodecVP8) {
- return packets_.front().video_header.codecHeader.VP8.tl0PicIdx;
+ return packets_.front().video_header.vp8().tl0PicIdx;
} else if (packets_.front().video_header.codec == kVideoCodecVP9) {
- return packets_.front().video_header.codecHeader.VP9.tl0_pic_idx;
+ return packets_.front().video_header.vp9().tl0_pic_idx;
} else {
return kNoTl0PicIdx;
}
@@ -110,9 +110,8 @@
return std::vector<NaluInfo>();
std::vector<NaluInfo> nalu_infos;
for (const VCMPacket& packet : packets_) {
- for (size_t i = 0; i < packet.video_header.codecHeader.H264.nalus_length;
- ++i) {
- nalu_infos.push_back(packet.video_header.codecHeader.H264.nalus[i]);
+ for (size_t i = 0; i < packet.video_header.h264().nalus_length; ++i) {
+ nalu_infos.push_back(packet.video_header.h264().nalus[i]);
}
}
return nalu_infos;
@@ -121,18 +120,15 @@
void VCMSessionInfo::SetGofInfo(const GofInfoVP9& gof_info, size_t idx) {
if (packets_.empty() ||
packets_.front().video_header.codec != kVideoCodecVP9 ||
- packets_.front().video_header.codecHeader.VP9.flexible_mode) {
+ packets_.front().video_header.vp9().flexible_mode) {
return;
}
- packets_.front().video_header.codecHeader.VP9.temporal_idx =
- gof_info.temporal_idx[idx];
- packets_.front().video_header.codecHeader.VP9.temporal_up_switch =
+ 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.codecHeader.VP9.num_ref_pics =
- gof_info.num_ref_pics[idx];
+ packets_.front().video_header.vp9().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.codecHeader.VP9.pid_diff[i] =
- gof_info.pid_diff[idx][i];
+ packets_.front().video_header.vp9().pid_diff[i] = gof_info.pid_diff[idx][i];
}
}
@@ -180,7 +176,7 @@
const size_t kH264NALHeaderLengthInBytes = 1;
const size_t kLengthFieldLength = 2;
if (packet.video_header.codec == kVideoCodecH264 &&
- packet.video_header.codecHeader.H264.packetization_type == kH264StapA) {
+ packet.video_header.h264().packetization_type == kH264StapA) {
size_t required_length = 0;
const uint8_t* nalu_ptr = packet_buffer + kH264NALHeaderLengthInBytes;
while (nalu_ptr < packet_buffer + packet.sizeBytes) {
@@ -336,7 +332,7 @@
VCMSessionInfo::PacketIterator VCMSessionInfo::FindNextPartitionBeginning(
PacketIterator it) const {
while (it != packets_.end()) {
- if ((*it).video_header.codecHeader.VP8.beginningOfPartition) {
+ if ((*it).video_header.vp8().beginningOfPartition) {
return it;
}
++it;
@@ -348,10 +344,10 @@
PacketIterator it) const {
assert((*it).codec == kVideoCodecVP8);
PacketIterator prev_it = it;
- const int partition_id = (*it).video_header.codecHeader.VP8.partitionId;
+ const int partition_id = (*it).video_header.vp8().partitionId;
while (it != packets_.end()) {
- bool beginning = (*it).video_header.codecHeader.VP8.beginningOfPartition;
- int current_partition_id = (*it).video_header.codecHeader.VP8.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_packet_buffer_unittest.cc b/modules/video_coding/video_packet_buffer_unittest.cc
index 95bc171..58611ff 100644
--- a/modules/video_coding/video_packet_buffer_unittest.cc
+++ b/modules/video_coding/video_packet_buffer_unittest.cc
@@ -512,17 +512,13 @@
packet.timestamp = timestamp;
if (keyframe == kKeyFrame) {
if (sps_pps_idr_is_keyframe_) {
- packet.video_header.codecHeader.H264.nalus[0].type =
- H264::NaluType::kSps;
- packet.video_header.codecHeader.H264.nalus[1].type =
- H264::NaluType::kPps;
- packet.video_header.codecHeader.H264.nalus[2].type =
- H264::NaluType::kIdr;
- packet.video_header.codecHeader.H264.nalus_length = 3;
+ packet.video_header.h264().nalus[0].type = H264::NaluType::kSps;
+ packet.video_header.h264().nalus[1].type = H264::NaluType::kPps;
+ packet.video_header.h264().nalus[2].type = H264::NaluType::kIdr;
+ packet.video_header.h264().nalus_length = 3;
} else {
- packet.video_header.codecHeader.H264.nalus[0].type =
- H264::NaluType::kIdr;
- packet.video_header.codecHeader.H264.nalus_length = 1;
+ packet.video_header.h264().nalus[0].type = H264::NaluType::kIdr;
+ packet.video_header.h264().nalus_length = 1;
}
}
packet.is_first_packet_in_frame = first == kFirst;
@@ -596,12 +592,12 @@
new uint8_t[sizeof(data_data) + EncodedImage::kBufferPaddingBytesH264]);
VCMPacket packet;
- packet.video_header.codecHeader.H264.nalus_length = 1;
- packet.video_header.codecHeader.H264.nalus[0].type = H264::NaluType::kIdr;
+ packet.video_header.h264().nalus_length = 1;
+ packet.video_header.h264().nalus[0].type = H264::NaluType::kIdr;
packet.seqNum = seq_num;
packet.codec = kVideoCodecH264;
packet.insertStartCode = true;
- packet.video_header.codecHeader.H264.packetization_type = kH264SingleNalu;
+ packet.video_header.h264().packetization_type = kH264SingleNalu;
packet.dataPtr = data;
packet.sizeBytes = sizeof(data_data);
packet.is_first_packet_in_frame = true;
@@ -759,7 +755,7 @@
EXPECT_TRUE(packet_buffer_->InsertPacket(&packet));
packet.codec = kVideoCodecH264;
- packet.video_header.codecHeader.H264.nalus_length = 1;
+ packet.video_header.h264().nalus_length = 1;
packet.timestamp = 3;
packet.seqNum = 3;
EXPECT_TRUE(packet_buffer_->InsertPacket(&packet));
@@ -782,7 +778,7 @@
packet.frameType = kVideoFrameKey;
packet.is_first_packet_in_frame = true;
packet.markerBit = true;
- packet.video_header.codecHeader.H264.nalus_length = kMaxNalusPerPacket;
+ packet.video_header.h264().nalus_length = kMaxNalusPerPacket;
packet.sizeBytes = 0;
packet.dataPtr = nullptr;
EXPECT_TRUE(packet_buffer_->InsertPacket(&packet));
@@ -877,8 +873,8 @@
};
TEST_F(TestPacketBufferH264IdrIsKeyframe, IdrIsKeyframe) {
- packet_.video_header.codecHeader.H264.nalus[0].type = H264::NaluType::kIdr;
- packet_.video_header.codecHeader.H264.nalus_length = 1;
+ packet_.video_header.h264().nalus[0].type = H264::NaluType::kIdr;
+ packet_.video_header.h264().nalus_length = 1;
packet_buffer_->InsertPacket(&packet_);
@@ -887,10 +883,10 @@
}
TEST_F(TestPacketBufferH264IdrIsKeyframe, SpsPpsIdrIsKeyframe) {
- packet_.video_header.codecHeader.H264.nalus[0].type = H264::NaluType::kSps;
- packet_.video_header.codecHeader.H264.nalus[1].type = H264::NaluType::kPps;
- packet_.video_header.codecHeader.H264.nalus[2].type = H264::NaluType::kIdr;
- packet_.video_header.codecHeader.H264.nalus_length = 3;
+ packet_.video_header.h264().nalus[0].type = H264::NaluType::kSps;
+ packet_.video_header.h264().nalus[1].type = H264::NaluType::kPps;
+ packet_.video_header.h264().nalus[2].type = H264::NaluType::kIdr;
+ packet_.video_header.h264().nalus_length = 3;
packet_buffer_->InsertPacket(&packet_);
@@ -906,8 +902,8 @@
};
TEST_F(TestPacketBufferH264SpsPpsIdrIsKeyframe, IdrIsNotKeyframe) {
- packet_.video_header.codecHeader.H264.nalus[0].type = H264::NaluType::kIdr;
- packet_.video_header.codecHeader.H264.nalus_length = 1;
+ packet_.video_header.h264().nalus[0].type = H264::NaluType::kIdr;
+ packet_.video_header.h264().nalus_length = 1;
packet_buffer_->InsertPacket(&packet_);
@@ -916,9 +912,9 @@
}
TEST_F(TestPacketBufferH264SpsPpsIdrIsKeyframe, SpsPpsIsNotKeyframe) {
- packet_.video_header.codecHeader.H264.nalus[0].type = H264::NaluType::kSps;
- packet_.video_header.codecHeader.H264.nalus[1].type = H264::NaluType::kPps;
- packet_.video_header.codecHeader.H264.nalus_length = 2;
+ packet_.video_header.h264().nalus[0].type = H264::NaluType::kSps;
+ packet_.video_header.h264().nalus[1].type = H264::NaluType::kPps;
+ packet_.video_header.h264().nalus_length = 2;
packet_buffer_->InsertPacket(&packet_);
@@ -927,10 +923,10 @@
}
TEST_F(TestPacketBufferH264SpsPpsIdrIsKeyframe, SpsPpsIdrIsKeyframe) {
- packet_.video_header.codecHeader.H264.nalus[0].type = H264::NaluType::kSps;
- packet_.video_header.codecHeader.H264.nalus[1].type = H264::NaluType::kPps;
- packet_.video_header.codecHeader.H264.nalus[2].type = H264::NaluType::kIdr;
- packet_.video_header.codecHeader.H264.nalus_length = 3;
+ packet_.video_header.h264().nalus[0].type = H264::NaluType::kSps;
+ packet_.video_header.h264().nalus[1].type = H264::NaluType::kPps;
+ packet_.video_header.h264().nalus[2].type = H264::NaluType::kIdr;
+ packet_.video_header.h264().nalus_length = 3;
packet_buffer_->InsertPacket(&packet_);
diff --git a/modules/video_coding/video_receiver_unittest.cc b/modules/video_coding/video_receiver_unittest.cc
index a95b150..8b64e77 100644
--- a/modules/video_coding/video_receiver_unittest.cc
+++ b/modules/video_coding/video_receiver_unittest.cc
@@ -183,8 +183,8 @@
header.header.ssrc = 1;
header.header.headerLength = 12;
header.video_header().codec = kVideoCodecVP8;
- header.video_header().codecHeader.VP8.pictureId = -1;
- header.video_header().codecHeader.VP8.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) {