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 <stefan@webrtc.org> Commit-Queue: Tony Herre <herre@google.com> Reviewed-by: Tove Petersson <tovep@google.com> Cr-Commit-Position: refs/heads/main@{#39317}
This commit is contained in:
parent
56c67555f1
commit
daf29e461e
@ -207,27 +207,11 @@ std::unique_ptr<TransformableVideoFrameInterface> CloneSenderVideoFrame(
|
||||
original->GetData().data(), original->GetData().size());
|
||||
EncodedImage encoded_image;
|
||||
encoded_image.SetEncodedData(encoded_image_buffer);
|
||||
RTPVideoHeader new_header;
|
||||
absl::optional<VideoCodecType> 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<TransformableVideoSenderFrame*>(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<RTPVideoHeaderVP8>();
|
||||
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<TransformableVideoSenderFrame>(
|
||||
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());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user