summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/test/fake_encoded_frame.cc
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/test/fake_encoded_frame.cc')
-rw-r--r--third_party/libwebrtc/test/fake_encoded_frame.cc144
1 files changed, 144 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..32fa5d8ccf
--- /dev/null
+++ b/third_party/libwebrtc/test/fake_encoded_frame.cc
@@ -0,0 +1,144 @@
+/*
+ * 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.Timestamp()
+ << " 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->SetTimestamp(*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