summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/test/fake_encoded_frame.cc
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /third_party/libwebrtc/test/fake_encoded_frame.cc
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/test/fake_encoded_frame.cc')
-rw-r--r--third_party/libwebrtc/test/fake_encoded_frame.cc145
1 files changed, 145 insertions, 0 deletions
diff --git a/third_party/libwebrtc/test/fake_encoded_frame.cc b/third_party/libwebrtc/test/fake_encoded_frame.cc
new file mode 100644
index 0000000000..7ab63cbc76
--- /dev/null
+++ b/third_party/libwebrtc/test/fake_encoded_frame.cc
@@ -0,0 +1,145 @@
+/*
+ * Copyright (c) 2022 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "test/fake_encoded_frame.h"
+
+#include <memory>
+
+#include "api/video/video_frame_type.h"
+
+namespace webrtc {
+
+void PrintTo(const EncodedFrame& frame,
+ std::ostream* os) /* no-presubmit-check TODO(webrtc:8982) */ {
+ *os << "EncodedFrame with id=" << frame.Id()
+ << " rtp=" << frame.RtpTimestamp() << " size=" << frame.size()
+ << " refs=[";
+ for (size_t ref = 0; ref < frame.num_references; ++ref) {
+ *os << frame.references[ref] << ",";
+ }
+ *os << "]";
+}
+
+namespace test {
+
+int64_t FakeEncodedFrame::ReceivedTime() const {
+ return received_time_;
+}
+
+int64_t FakeEncodedFrame::RenderTime() const {
+ return _renderTimeMs;
+}
+
+void FakeEncodedFrame::SetReceivedTime(int64_t received_time) {
+ received_time_ = received_time;
+}
+
+void FakeEncodedFrame::SetPayloadType(int payload_type) {
+ _payloadType = payload_type;
+}
+
+FakeFrameBuilder& FakeFrameBuilder::Time(uint32_t rtp_timestamp) {
+ rtp_timestamp_ = rtp_timestamp;
+ return *this;
+}
+
+FakeFrameBuilder& FakeFrameBuilder::Id(int64_t frame_id) {
+ frame_id_ = frame_id;
+ return *this;
+}
+
+FakeFrameBuilder& FakeFrameBuilder::AsLast() {
+ last_spatial_layer_ = true;
+ return *this;
+}
+
+FakeFrameBuilder& FakeFrameBuilder::Refs(
+ const std::vector<int64_t>& references) {
+ references_ = references;
+ return *this;
+}
+
+FakeFrameBuilder& FakeFrameBuilder::PlayoutDelay(
+ VideoPlayoutDelay playout_delay) {
+ playout_delay_ = playout_delay;
+ return *this;
+}
+
+FakeFrameBuilder& FakeFrameBuilder::SpatialLayer(int spatial_layer) {
+ spatial_layer_ = spatial_layer;
+ return *this;
+}
+
+FakeFrameBuilder& FakeFrameBuilder::ReceivedTime(Timestamp receive_time) {
+ received_time_ = receive_time;
+ return *this;
+}
+
+FakeFrameBuilder& FakeFrameBuilder::Size(size_t size) {
+ size_ = size;
+ return *this;
+}
+
+std::unique_ptr<FakeEncodedFrame> FakeFrameBuilder::Build() {
+ RTC_CHECK_LE(references_.size(), EncodedFrame::kMaxFrameReferences);
+
+ auto frame = std::make_unique<FakeEncodedFrame>();
+ frame->is_last_spatial_layer = last_spatial_layer_;
+ frame->SetEncodedData(EncodedImageBuffer::Create(size_));
+
+ if (rtp_timestamp_)
+ frame->SetRtpTimestamp(*rtp_timestamp_);
+ if (frame_id_)
+ frame->SetId(*frame_id_);
+ if (playout_delay_)
+ frame->SetPlayoutDelay(*playout_delay_);
+ frame->SetFrameType(references_.empty() ? VideoFrameType::kVideoFrameKey
+ : VideoFrameType::kVideoFrameDelta);
+ for (int64_t ref : references_) {
+ frame->references[frame->num_references] = ref;
+ frame->num_references++;
+ }
+ if (spatial_layer_)
+ frame->SetSpatialIndex(spatial_layer_);
+ if (received_time_)
+ frame->SetReceivedTime(received_time_->ms());
+ if (payload_type_)
+ frame->SetPayloadType(*payload_type_);
+ if (ntp_time_)
+ frame->ntp_time_ms_ = ntp_time_->ms();
+ if (rotation_)
+ frame->rotation_ = *rotation_;
+ if (packet_infos_)
+ frame->SetPacketInfos(*packet_infos_);
+ return frame;
+}
+
+FakeFrameBuilder& FakeFrameBuilder::PayloadType(int payload_type) {
+ payload_type_ = payload_type;
+ return *this;
+}
+
+FakeFrameBuilder& FakeFrameBuilder::NtpTime(Timestamp ntp_time) {
+ ntp_time_ = ntp_time;
+ return *this;
+}
+
+FakeFrameBuilder& FakeFrameBuilder::Rotation(VideoRotation rotation) {
+ rotation_ = rotation;
+ return *this;
+}
+
+FakeFrameBuilder& FakeFrameBuilder::PacketInfos(RtpPacketInfos packet_infos) {
+ packet_infos_ = packet_infos;
+ return *this;
+}
+
+} // namespace test
+} // namespace webrtc