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

Side by Side Diff: webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.h

Issue 1607353002: Swap use of CriticalSectionWrapper with rtc::CriticalSection in voice_engine/ (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 11 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) 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2011 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 10
11 #ifndef SRC_VOICE_ENGINE_MAIN_TEST_AUTO_TEST_STANDARD_TEST_BASE_AFTER_INIT_H_ 11 #ifndef SRC_VOICE_ENGINE_MAIN_TEST_AUTO_TEST_STANDARD_TEST_BASE_AFTER_INIT_H_
12 #define SRC_VOICE_ENGINE_MAIN_TEST_AUTO_TEST_STANDARD_TEST_BASE_AFTER_INIT_H_ 12 #define SRC_VOICE_ENGINE_MAIN_TEST_AUTO_TEST_STANDARD_TEST_BASE_AFTER_INIT_H_
13 13
14 #include <deque> 14 #include <deque>
15 15
16 #include "webrtc/base/criticalsection.h"
16 #include "webrtc/base/platform_thread.h" 17 #include "webrtc/base/platform_thread.h"
17 #include "webrtc/base/scoped_ptr.h" 18 #include "webrtc/base/scoped_ptr.h"
18 #include "webrtc/common_types.h" 19 #include "webrtc/common_types.h"
19 #include "webrtc/modules/rtp_rtcp/source/byte_io.h" 20 #include "webrtc/modules/rtp_rtcp/source/byte_io.h"
20 #include "webrtc/system_wrappers/include/atomic32.h" 21 #include "webrtc/system_wrappers/include/atomic32.h"
21 #include "webrtc/system_wrappers/include/critical_section_wrapper.h"
22 #include "webrtc/system_wrappers/include/event_wrapper.h" 22 #include "webrtc/system_wrappers/include/event_wrapper.h"
23 #include "webrtc/system_wrappers/include/sleep.h" 23 #include "webrtc/system_wrappers/include/sleep.h"
24 #include "webrtc/voice_engine/test/auto_test/fixtures/before_initialization_fixt ure.h" 24 #include "webrtc/voice_engine/test/auto_test/fixtures/before_initialization_fixt ure.h"
25 25
26 class TestErrorObserver; 26 class TestErrorObserver;
27 27
28 class LoopBackTransport : public webrtc::Transport { 28 class LoopBackTransport : public webrtc::Transport {
29 public: 29 public:
30 LoopBackTransport(webrtc::VoENetwork* voe_network, int channel) 30 LoopBackTransport(webrtc::VoENetwork* voe_network, int channel)
31 : crit_(webrtc::CriticalSectionWrapper::CreateCriticalSection()), 31 : packet_event_(webrtc::EventWrapper::Create()),
32 packet_event_(webrtc::EventWrapper::Create()),
33 thread_(NetworkProcess, this, "LoopBackTransport"), 32 thread_(NetworkProcess, this, "LoopBackTransport"),
34 channel_(channel), 33 channel_(channel),
35 voe_network_(voe_network), 34 voe_network_(voe_network),
36 transmitted_packets_(0) { 35 transmitted_packets_(0) {
37 thread_.Start(); 36 thread_.Start();
38 } 37 }
39 38
40 ~LoopBackTransport() { thread_.Stop(); } 39 ~LoopBackTransport() { thread_.Stop(); }
41 40
42 bool SendRtp(const uint8_t* data, 41 bool SendRtp(const uint8_t* data,
(...skipping 12 matching lines...) Expand all
55 enum { 54 enum {
56 kSleepIntervalMs = 10 55 kSleepIntervalMs = 10
57 }; 56 };
58 int32_t limit = transmitted_packets_.Value() + packet_count; 57 int32_t limit = transmitted_packets_.Value() + packet_count;
59 while (transmitted_packets_.Value() < limit) { 58 while (transmitted_packets_.Value() < limit) {
60 webrtc::SleepMs(kSleepIntervalMs); 59 webrtc::SleepMs(kSleepIntervalMs);
61 } 60 }
62 } 61 }
63 62
64 void AddChannel(uint32_t ssrc, int channel) { 63 void AddChannel(uint32_t ssrc, int channel) {
65 webrtc::CriticalSectionScoped lock(crit_.get()); 64 rtc::CritScope lock(&crit_);
66 channels_[ssrc] = channel; 65 channels_[ssrc] = channel;
67 } 66 }
68 67
69 private: 68 private:
70 struct Packet { 69 struct Packet {
71 enum Type { Rtp, Rtcp, } type; 70 enum Type { Rtp, Rtcp, } type;
72 71
73 Packet() : len(0) {} 72 Packet() : len(0) {}
74 Packet(Type type, const void* data, size_t len) 73 Packet(Type type, const void* data, size_t len)
75 : type(type), len(len) { 74 : type(type), len(len) {
76 assert(len <= 1500); 75 assert(len <= 1500);
77 memcpy(this->data, data, len); 76 memcpy(this->data, data, len);
78 } 77 }
79 78
80 uint8_t data[1500]; 79 uint8_t data[1500];
81 size_t len; 80 size_t len;
82 }; 81 };
83 82
84 void StorePacket(Packet::Type type, 83 void StorePacket(Packet::Type type,
85 const void* data, 84 const void* data,
86 size_t len) { 85 size_t len) {
87 { 86 {
88 webrtc::CriticalSectionScoped lock(crit_.get()); 87 rtc::CritScope lock(&crit_);
89 packet_queue_.push_back(Packet(type, data, len)); 88 packet_queue_.push_back(Packet(type, data, len));
90 } 89 }
91 packet_event_->Set(); 90 packet_event_->Set();
92 } 91 }
93 92
94 static bool NetworkProcess(void* transport) { 93 static bool NetworkProcess(void* transport) {
95 return static_cast<LoopBackTransport*>(transport)->SendPackets(); 94 return static_cast<LoopBackTransport*>(transport)->SendPackets();
96 } 95 }
97 96
98 bool SendPackets() { 97 bool SendPackets() {
99 switch (packet_event_->Wait(10)) { 98 switch (packet_event_->Wait(10)) {
100 case webrtc::kEventSignaled: 99 case webrtc::kEventSignaled:
101 break; 100 break;
102 case webrtc::kEventTimeout: 101 case webrtc::kEventTimeout:
103 break; 102 break;
104 case webrtc::kEventError: 103 case webrtc::kEventError:
105 // TODO(pbos): Log a warning here? 104 // TODO(pbos): Log a warning here?
106 return true; 105 return true;
107 } 106 }
108 107
109 while (true) { 108 while (true) {
110 Packet p; 109 Packet p;
111 int channel = channel_; 110 int channel = channel_;
112 { 111 {
113 webrtc::CriticalSectionScoped lock(crit_.get()); 112 rtc::CritScope lock(&crit_);
114 if (packet_queue_.empty()) 113 if (packet_queue_.empty())
115 break; 114 break;
116 p = packet_queue_.front(); 115 p = packet_queue_.front();
117 packet_queue_.pop_front(); 116 packet_queue_.pop_front();
118 117
119 if (p.type == Packet::Rtp) { 118 if (p.type == Packet::Rtp) {
120 uint32_t ssrc = 119 uint32_t ssrc =
121 webrtc::ByteReader<uint32_t>::ReadBigEndian(&p.data[8]); 120 webrtc::ByteReader<uint32_t>::ReadBigEndian(&p.data[8]);
122 if (channels_[ssrc] != 0) 121 if (channels_[ssrc] != 0)
123 channel = channels_[ssrc]; 122 channel = channels_[ssrc];
(...skipping 12 matching lines...) Expand all
136 break; 135 break;
137 case Packet::Rtcp: 136 case Packet::Rtcp:
138 voe_network_->ReceivedRTCPPacket(channel, p.data, p.len); 137 voe_network_->ReceivedRTCPPacket(channel, p.data, p.len);
139 break; 138 break;
140 } 139 }
141 ++transmitted_packets_; 140 ++transmitted_packets_;
142 } 141 }
143 return true; 142 return true;
144 } 143 }
145 144
146 const rtc::scoped_ptr<webrtc::CriticalSectionWrapper> crit_; 145 mutable rtc::CriticalSection crit_;
147 const rtc::scoped_ptr<webrtc::EventWrapper> packet_event_; 146 const rtc::scoped_ptr<webrtc::EventWrapper> packet_event_;
148 rtc::PlatformThread thread_; 147 rtc::PlatformThread thread_;
149 std::deque<Packet> packet_queue_ GUARDED_BY(crit_.get()); 148 std::deque<Packet> packet_queue_ GUARDED_BY(crit_);
150 const int channel_; 149 const int channel_;
151 std::map<uint32_t, int> channels_ GUARDED_BY(crit_.get()); 150 std::map<uint32_t, int> channels_ GUARDED_BY(crit_);
152 webrtc::VoENetwork* const voe_network_; 151 webrtc::VoENetwork* const voe_network_;
153 webrtc::Atomic32 transmitted_packets_; 152 webrtc::Atomic32 transmitted_packets_;
154 }; 153 };
155 154
156 // This fixture initializes the voice engine in addition to the work 155 // This fixture initializes the voice engine in addition to the work
157 // done by the before-initialization fixture. It also registers an error 156 // done by the before-initialization fixture. It also registers an error
158 // observer which will fail tests on error callbacks. This fixture is 157 // observer which will fail tests on error callbacks. This fixture is
159 // useful to tests that want to run before we have started any form of 158 // useful to tests that want to run before we have started any form of
160 // streaming through the voice engine. 159 // streaming through the voice engine.
161 class AfterInitializationFixture : public BeforeInitializationFixture { 160 class AfterInitializationFixture : public BeforeInitializationFixture {
162 public: 161 public:
163 AfterInitializationFixture(); 162 AfterInitializationFixture();
164 virtual ~AfterInitializationFixture(); 163 virtual ~AfterInitializationFixture();
165 164
166 protected: 165 protected:
167 rtc::scoped_ptr<TestErrorObserver> error_observer_; 166 rtc::scoped_ptr<TestErrorObserver> error_observer_;
168 }; 167 };
169 168
170 #endif // SRC_VOICE_ENGINE_MAIN_TEST_AUTO_TEST_STANDARD_TEST_BASE_AFTER_INIT_H_ 169 #endif // SRC_VOICE_ENGINE_MAIN_TEST_AUTO_TEST_STANDARD_TEST_BASE_AFTER_INIT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698