From daf29e461e5e2fc20321a67e2af1d05269861cec Mon Sep 17 00:00:00 2001 From: Tony Herre Date: Tue, 14 Feb 2023 17:55:43 +0100 Subject: [PATCH] Create a Header from metadata in clone of encoded sender video frames This means sender frames cloned from received frames have a valid header from the start, rather than callers needing to later call SetMetadata. Bug: webrtc:14708 Change-Id: Ie25fbd6609928a9555b6db688ab451ff61fa7147 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/293041 Reviewed-by: Stefan Holmer Commit-Queue: Tony Herre Reviewed-by: Tove Petersson Cr-Commit-Position: refs/heads/main@{#39317} --- ...sender_video_frame_transformer_delegate.cc | 22 +++---------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc b/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc index bcdfc1f829..b34d2f7221 100644 --- a/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc +++ b/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.cc @@ -207,27 +207,11 @@ std::unique_ptr CloneSenderVideoFrame( original->GetData().data(), original->GetData().size()); EncodedImage encoded_image; encoded_image.SetEncodedData(encoded_image_buffer); - RTPVideoHeader new_header; - absl::optional new_codec_type; - // TODO(bugs.webrtc.org/14708): Figure out a way to get the header information - // without casting to TransformableVideoSenderFrame. - if (original->GetDirection() == - TransformableFrameInterface::Direction::kSender) { - // TODO(bugs.webrtc.org/14708): Figure out a way to bulletproof this cast. - auto original_as_sender = - static_cast(original); - new_header = original_as_sender->GetHeader(); - new_codec_type = original_as_sender->GetCodecType(); - } else { - // TODO(bugs.webrtc.org/14708): Make this codec dependent - new_header.video_type_header.emplace(); - new_codec_type = kVideoCodecVP8; - // TODO(bugs.webrtc.org/14708): Fill in the new_header when it's not - // `Direction::kSender` - } + RTPVideoHeader new_header = + RTPVideoHeader::FromMetadata(original->GetMetadata()); // TODO(bugs.webrtc.org/14708): Fill in other EncodedImage parameters return std::make_unique( - encoded_image, new_header, original->GetPayloadType(), new_codec_type, + encoded_image, new_header, original->GetPayloadType(), new_header.codec, original->GetTimestamp(), absl::nullopt, // expected_retransmission_time_ms original->GetSsrc(), original->GetMetadata().GetCsrcs());