diff --git a/modules/video_coding/codecs/vp8/screenshare_layers.cc b/modules/video_coding/codecs/vp8/screenshare_layers.cc index 1c4c6c331e..27d070fc45 100644 --- a/modules/video_coding/codecs/vp8/screenshare_layers.cc +++ b/modules/video_coding/codecs/vp8/screenshare_layers.cc @@ -320,6 +320,7 @@ void ScreenshareLayers::OnEncodeDone(size_t stream_index, if (number_of_temporal_layers_ == 1) { vp8_info.temporalIdx = kNoTemporalIdx; vp8_info.layerSync = false; + generic_frame_info.temporal_id = 0; generic_frame_info.decode_target_indications = {kSwitch}; generic_frame_info.encoder_buffers.emplace_back( 0, /*referenced=*/!is_keyframe, /*updated=*/true); @@ -329,6 +330,7 @@ void ScreenshareLayers::OnEncodeDone(size_t stream_index, vp8_info.temporalIdx = dependency_info->frame_config.packetizer_temporal_idx; vp8_info.layerSync = dependency_info->frame_config.layer_sync; + generic_frame_info.temporal_id = vp8_info.temporalIdx; generic_frame_info.decode_target_indications = dependency_info->decode_target_indications; } else { @@ -344,6 +346,7 @@ void ScreenshareLayers::OnEncodeDone(size_t stream_index, active_layer_ = 1; info->template_structure = GetTemplateStructure(number_of_temporal_layers_); + generic_frame_info.temporal_id = vp8_info.temporalIdx; generic_frame_info.decode_target_indications = {kSwitch, kSwitch}; } else if (active_layer_ >= 0 && layers_[active_layer_].state == TemporalLayer::State::kKeyFrame) { diff --git a/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc b/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc index 88ef9b8c14..dd2dad6f86 100644 --- a/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc +++ b/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc @@ -218,18 +218,20 @@ TEST_F(ScreenshareLayerTest, 1Layer) { // belong to the base layer. const int kSingleLayerFlags = 0; auto info = std::make_unique(); - int flags = EncodeFrame(false, info.get()); + int flags = EncodeFrame(/*base_sync=*/false, info.get()); timestamp_ += kTimestampDelta5Fps; EXPECT_EQ(static_cast(kNoTemporalIdx), info->codecSpecific.VP8.temporalIdx); EXPECT_FALSE(info->codecSpecific.VP8.layerSync); + EXPECT_EQ(info->generic_frame_info->temporal_id, 0); info = std::make_unique(); - flags = EncodeFrame(false, info.get()); + flags = EncodeFrame(/*base_sync=*/false, info.get()); EXPECT_EQ(kSingleLayerFlags, flags); EXPECT_EQ(static_cast(kNoTemporalIdx), info->codecSpecific.VP8.temporalIdx); EXPECT_FALSE(info->codecSpecific.VP8.layerSync); + EXPECT_EQ(info->generic_frame_info->temporal_id, 0); } TEST_F(ScreenshareLayerTest, 2LayersPeriodicSync) { @@ -337,7 +339,9 @@ TEST_F(ScreenshareLayerTest, 2LayersToggling) { int tl1_frames = 0; for (int i = 0; i < 50; ++i) { CodecSpecificInfo info; - EncodeFrame(false, &info); + EncodeFrame(/*base_sync=*/false, &info); + EXPECT_EQ(info.codecSpecific.VP8.temporalIdx, + info.generic_frame_info->temporal_id); timestamp_ += kTimestampDelta5Fps; switch (info.codecSpecific.VP8.temporalIdx) { case 0: