Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(478)

Side by Side Diff: webrtc/test/direct_transport.cc

Issue 2997393002: Move rtp dump writer from quality test to test transport (Closed)
Patch Set: Deps Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/test/direct_transport.h ('k') | webrtc/test/layer_filtering_transport.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 #include "webrtc/test/direct_transport.h" 10 #include "webrtc/test/direct_transport.h"
11 11
12 #include "webrtc/call/call.h" 12 #include "webrtc/call/call.h"
13 #include "webrtc/rtc_base/ptr_util.h" 13 #include "webrtc/rtc_base/ptr_util.h"
14 #include "webrtc/system_wrappers/include/clock.h" 14 #include "webrtc/system_wrappers/include/clock.h"
15 #include "webrtc/test/single_threaded_task_queue.h" 15 #include "webrtc/test/single_threaded_task_queue.h"
16 16
17 namespace webrtc { 17 namespace webrtc {
18 namespace test { 18 namespace test {
19 19
20 DirectTransport::DirectTransport( 20 DirectTransport::DirectTransport(
21 SingleThreadedTaskQueueForTesting* task_queue, 21 SingleThreadedTaskQueueForTesting* task_queue,
22 Call* send_call, 22 Call* send_call,
23 const std::map<uint8_t, MediaType>& payload_type_map) 23 const std::map<uint8_t, MediaType>& payload_type_map)
24 : DirectTransport(task_queue, 24 : DirectTransport(task_queue,
25 FakeNetworkPipe::Config(), 25 FakeNetworkPipe::Config(),
26 send_call, 26 send_call,
27 payload_type_map) { 27 payload_type_map,
28 } 28 std::unique_ptr<test::RtpFileWriter>()) {}
29 29
30 DirectTransport::DirectTransport( 30 DirectTransport::DirectTransport(
31 SingleThreadedTaskQueueForTesting* task_queue, 31 SingleThreadedTaskQueueForTesting* task_queue,
32 const FakeNetworkPipe::Config& config, 32 const FakeNetworkPipe::Config& config,
33 Call* send_call, 33 Call* send_call,
34 const std::map<uint8_t, MediaType>& payload_type_map) 34 const std::map<uint8_t, MediaType>& payload_type_map,
35 std::unique_ptr<test::RtpFileWriter> rtp_file_writer)
35 : DirectTransport( 36 : DirectTransport(
36 task_queue, 37 task_queue,
37 config, 38 config,
38 send_call, 39 send_call,
39 std::unique_ptr<Demuxer>(new DemuxerImpl(payload_type_map))) { 40 std::unique_ptr<Demuxer>(new DemuxerImpl(payload_type_map)),
40 } 41 std::move(rtp_file_writer)) {}
41 42
42 DirectTransport::DirectTransport(SingleThreadedTaskQueueForTesting* task_queue, 43 DirectTransport::DirectTransport(
43 const FakeNetworkPipe::Config& config, 44 SingleThreadedTaskQueueForTesting* task_queue,
44 Call* send_call, 45 const FakeNetworkPipe::Config& config,
45 std::unique_ptr<Demuxer> demuxer) 46 Call* send_call,
47 std::unique_ptr<Demuxer> demuxer,
48 std::unique_ptr<test::RtpFileWriter> rtp_file_writer)
46 : send_call_(send_call), 49 : send_call_(send_call),
47 clock_(Clock::GetRealTimeClock()), 50 clock_(Clock::GetRealTimeClock()),
48 task_queue_(task_queue), 51 task_queue_(task_queue),
49 fake_network_(clock_, config, std::move(demuxer)) { 52 fake_network_(clock_, config, std::move(demuxer)),
53 receiver_(nullptr),
54 start_ms_(rtc::TimeMillis()),
55 rtp_file_writer_(std::move(rtp_file_writer)) {
50 RTC_DCHECK(task_queue); 56 RTC_DCHECK(task_queue);
57
58 if (rtp_file_writer_.get()) {
59 // Set us up as proxy receiver so that we can dump rtp packets.
60 fake_network_.SetReceiver(this);
61 }
62
51 if (send_call_) { 63 if (send_call_) {
52 send_call_->SignalChannelNetworkState(MediaType::AUDIO, kNetworkUp); 64 send_call_->SignalChannelNetworkState(MediaType::AUDIO, kNetworkUp);
53 send_call_->SignalChannelNetworkState(MediaType::VIDEO, kNetworkUp); 65 send_call_->SignalChannelNetworkState(MediaType::VIDEO, kNetworkUp);
54 } 66 }
55 SendPackets(); 67 SendPackets();
56 } 68 }
57 69
58 DirectTransport::~DirectTransport() { 70 DirectTransport::~DirectTransport() {
59 RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_); 71 RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
60 // Constructor updates |next_scheduled_task_|, so it's guaranteed to 72 // Constructor updates |next_scheduled_task_|, so it's guaranteed to
61 // be initialized. 73 // be initialized.
62 task_queue_->CancelTask(next_scheduled_task_); 74 task_queue_->CancelTask(next_scheduled_task_);
63 } 75 }
64 76
65 void DirectTransport::SetConfig(const FakeNetworkPipe::Config& config) { 77 void DirectTransport::SetConfig(const FakeNetworkPipe::Config& config) {
66 fake_network_.SetConfig(config); 78 fake_network_.SetConfig(config);
67 } 79 }
68 80
69 void DirectTransport::StopSending() { 81 void DirectTransport::StopSending() {
70 RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_); 82 RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
71 task_queue_->CancelTask(next_scheduled_task_); 83 task_queue_->CancelTask(next_scheduled_task_);
72 } 84 }
73 85
74 void DirectTransport::SetReceiver(PacketReceiver* receiver) { 86 void DirectTransport::SetReceiver(PacketReceiver* receiver) {
75 RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_); 87 RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
76 fake_network_.SetReceiver(receiver); 88 if (rtp_file_writer_.get()) {
89 // Will be called from DeliverPacket() in this instance instead.
90 receiver_ = receiver;
91 } else {
92 fake_network_.SetReceiver(receiver_);
93 }
77 } 94 }
78 95
79 bool DirectTransport::SendRtp(const uint8_t* data, 96 bool DirectTransport::SendRtp(const uint8_t* data,
80 size_t length, 97 size_t length,
81 const PacketOptions& options) { 98 const PacketOptions& options) {
82 if (send_call_) { 99 if (send_call_) {
83 rtc::SentPacket sent_packet(options.packet_id, 100 rtc::SentPacket sent_packet(options.packet_id,
84 clock_->TimeInMilliseconds()); 101 clock_->TimeInMilliseconds());
85 send_call_->OnSentPacket(sent_packet); 102 send_call_->OnSentPacket(sent_packet);
86 } 103 }
87 fake_network_.SendPacket(data, length); 104 fake_network_.SendPacket(data, length);
88 return true; 105 return true;
89 } 106 }
90 107
91 bool DirectTransport::SendRtcp(const uint8_t* data, size_t length) { 108 bool DirectTransport::SendRtcp(const uint8_t* data, size_t length) {
92 fake_network_.SendPacket(data, length); 109 fake_network_.SendPacket(data, length);
93 return true; 110 return true;
94 } 111 }
95 112
96 int DirectTransport::GetAverageDelayMs() { 113 int DirectTransport::GetAverageDelayMs() {
97 return fake_network_.AverageDelay(); 114 return fake_network_.AverageDelay();
98 } 115 }
99 116
117 PacketReceiver::DeliveryStatus DirectTransport::DeliverPacket(
118 MediaType media_type,
119 const uint8_t* packet,
120 size_t length,
121 const PacketTime& packet_time) {
122 if (rtp_file_writer_.get()) {
123 RtpPacket rtp_packet;
124 memcpy(rtp_packet.data, packet, length);
125 rtp_packet.length = length;
126 rtp_packet.original_length = length;
127 rtp_packet.time_ms = rtc::TimeMillis() - start_ms_;
128 rtp_file_writer_->WritePacket(&rtp_packet);
129 }
130
131 if (!receiver_)
132 return PacketReceiver::DELIVERY_PACKET_ERROR;
133 return receiver_->DeliverPacket(media_type, packet, length, packet_time);
134 }
135
100 void DirectTransport::SendPackets() { 136 void DirectTransport::SendPackets() {
101 RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_); 137 RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
102 138
103 fake_network_.Process(); 139 fake_network_.Process();
104 140
105 int64_t delay_ms = fake_network_.TimeUntilNextProcess(); 141 int64_t delay_ms = fake_network_.TimeUntilNextProcess();
106 next_scheduled_task_ = task_queue_->PostDelayedTask([this]() { 142 next_scheduled_task_ = task_queue_->PostDelayedTask([this]() {
107 SendPackets(); 143 SendPackets();
108 }, delay_ms); 144 }, delay_ms);
109 } 145 }
110 } // namespace test 146 } // namespace test
111 } // namespace webrtc 147 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/test/direct_transport.h ('k') | webrtc/test/layer_filtering_transport.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698