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

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

Issue 2794243002: Making FakeNetworkPipe demux audio and video packets. (Closed)
Patch Set: fixing android Created 3 years, 8 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
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/system_wrappers/include/clock.h" 13 #include "webrtc/system_wrappers/include/clock.h"
14 14
15 namespace webrtc { 15 namespace webrtc {
16 namespace test { 16 namespace test {
17 17
18 DirectTransport::DirectTransport(Call* send_call, MediaType media_type) 18 DirectTransport::DirectTransport(
19 : DirectTransport(FakeNetworkPipe::Config(), send_call, media_type) {} 19 Call* send_call,
20 const std::map<uint8_t, MediaType>& payload_type_map)
21 : DirectTransport(FakeNetworkPipe::Config(), send_call, payload_type_map) {}
22
23 DirectTransport::DirectTransport(
24 const FakeNetworkPipe::Config& config,
25 Call* send_call,
26 const std::map<uint8_t, MediaType>& payload_type_map)
27 : DirectTransport(
28 config,
29 send_call,
30 std::unique_ptr<Demuxer>(new DemuxerImpl(payload_type_map))) {}
20 31
21 DirectTransport::DirectTransport(const FakeNetworkPipe::Config& config, 32 DirectTransport::DirectTransport(const FakeNetworkPipe::Config& config,
22 Call* send_call, MediaType media_type) 33 Call* send_call,
34 std::unique_ptr<Demuxer> demuxer)
23 : send_call_(send_call), 35 : send_call_(send_call),
24 packet_event_(false, false), 36 packet_event_(false, false),
25 thread_(NetworkProcess, this, "NetworkProcess"), 37 thread_(NetworkProcess, this, "NetworkProcess"),
26 clock_(Clock::GetRealTimeClock()), 38 clock_(Clock::GetRealTimeClock()),
27 shutting_down_(false), 39 shutting_down_(false),
28 fake_network_(clock_, config, media_type) { 40 fake_network_(clock_, config, std::move(demuxer)) {
29 thread_.Start(); 41 thread_.Start();
30 if (send_call_) { 42 if (send_call_) {
31 send_call_->SignalChannelNetworkState(MediaType::AUDIO, kNetworkUp); 43 send_call_->SignalChannelNetworkState(MediaType::AUDIO, kNetworkUp);
32 send_call_->SignalChannelNetworkState(MediaType::VIDEO, kNetworkUp); 44 send_call_->SignalChannelNetworkState(MediaType::VIDEO, kNetworkUp);
33 } 45 }
34 } 46 }
35 47
36 DirectTransport::~DirectTransport() { StopSending(); } 48 DirectTransport::~DirectTransport() { StopSending(); }
37 49
38 void DirectTransport::SetConfig(const FakeNetworkPipe::Config& config) { 50 void DirectTransport::SetConfig(const FakeNetworkPipe::Config& config) {
(...skipping 30 matching lines...) Expand all
69 bool DirectTransport::SendRtcp(const uint8_t* data, size_t length) { 81 bool DirectTransport::SendRtcp(const uint8_t* data, size_t length) {
70 fake_network_.SendPacket(data, length); 82 fake_network_.SendPacket(data, length);
71 packet_event_.Set(); 83 packet_event_.Set();
72 return true; 84 return true;
73 } 85 }
74 86
75 int DirectTransport::GetAverageDelayMs() { 87 int DirectTransport::GetAverageDelayMs() {
76 return fake_network_.AverageDelay(); 88 return fake_network_.AverageDelay();
77 } 89 }
78 90
91 DirectTransport::ForceDemuxer::ForceDemuxer(MediaType media_type)
92 : media_type_(media_type) {}
93
94 void DirectTransport::ForceDemuxer::SetReceiver(PacketReceiver* receiver) {
95 packet_receiver_ = receiver;
96 }
97
98 void DirectTransport::ForceDemuxer::DeliverPacket(
99 const NetworkPacket* packet,
100 const PacketTime& packet_time) {
101 if (!packet_receiver_)
102 return;
103 packet_receiver_->DeliverPacket(media_type_, packet->data(),
104 packet->data_length(), packet_time);
105 }
106
79 bool DirectTransport::NetworkProcess(void* transport) { 107 bool DirectTransport::NetworkProcess(void* transport) {
80 return static_cast<DirectTransport*>(transport)->SendPackets(); 108 return static_cast<DirectTransport*>(transport)->SendPackets();
81 } 109 }
82 110
83 bool DirectTransport::SendPackets() { 111 bool DirectTransport::SendPackets() {
84 fake_network_.Process(); 112 fake_network_.Process();
85 int64_t wait_time_ms = fake_network_.TimeUntilNextProcess(); 113 int64_t wait_time_ms = fake_network_.TimeUntilNextProcess();
86 if (wait_time_ms > 0) { 114 if (wait_time_ms > 0) {
87 packet_event_.Wait(static_cast<int>(wait_time_ms)); 115 packet_event_.Wait(static_cast<int>(wait_time_ms));
88 } 116 }
89 rtc::CritScope crit(&lock_); 117 rtc::CritScope crit(&lock_);
90 return shutting_down_ ? false : true; 118 return shutting_down_ ? false : true;
91 } 119 }
92 } // namespace test 120 } // namespace test
93 } // namespace webrtc 121 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698