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

Side by Side Diff: webrtc/test/fake_audio_device.h

Issue 1674413004: Added A/V sync tests with drifting clocks. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 10 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/drifting_clock.cc ('k') | webrtc/test/fake_audio_device.cc » ('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 #ifndef WEBRTC_TEST_FAKE_AUDIO_DEVICE_H_ 10 #ifndef WEBRTC_TEST_FAKE_AUDIO_DEVICE_H_
11 #define WEBRTC_TEST_FAKE_AUDIO_DEVICE_H_ 11 #define WEBRTC_TEST_FAKE_AUDIO_DEVICE_H_
12 12
13 #include <string> 13 #include <string>
14 14
15 #include "webrtc/base/criticalsection.h" 15 #include "webrtc/base/criticalsection.h"
16 #include "webrtc/base/platform_thread.h" 16 #include "webrtc/base/platform_thread.h"
17 #include "webrtc/base/scoped_ptr.h" 17 #include "webrtc/base/scoped_ptr.h"
18 #include "webrtc/modules/audio_device/include/fake_audio_device.h" 18 #include "webrtc/modules/audio_device/include/fake_audio_device.h"
19 #include "webrtc/test/drifting_clock.h"
19 #include "webrtc/typedefs.h" 20 #include "webrtc/typedefs.h"
20 21
21 namespace webrtc { 22 namespace webrtc {
22 23
23 class Clock; 24 class Clock;
24 class EventTimerWrapper; 25 class EventTimerWrapper;
25 class FileWrapper; 26 class FileWrapper;
26 class ModuleFileUtility; 27 class ModuleFileUtility;
27 28
28 namespace test { 29 namespace test {
29 30
30 class FakeAudioDevice : public FakeAudioDeviceModule { 31 class FakeAudioDevice : public FakeAudioDeviceModule {
31 public: 32 public:
32 FakeAudioDevice(Clock* clock, const std::string& filename); 33 FakeAudioDevice(Clock* clock, const std::string& filename, float speed);
33 34
34 virtual ~FakeAudioDevice(); 35 virtual ~FakeAudioDevice();
35 36
36 int32_t Init() override; 37 int32_t Init() override;
37 int32_t RegisterAudioCallback(AudioTransport* callback) override; 38 int32_t RegisterAudioCallback(AudioTransport* callback) override;
38 39
39 bool Playing() const override; 40 bool Playing() const override;
40 int32_t PlayoutDelay(uint16_t* delay_ms) const override; 41 int32_t PlayoutDelay(uint16_t* delay_ms) const override;
41 bool Recording() const override; 42 bool Recording() const override;
42 43
43 void Start(); 44 void Start();
44 void Stop(); 45 void Stop();
45 46
46 private: 47 private:
47 static bool Run(void* obj); 48 static bool Run(void* obj);
48 void CaptureAudio(); 49 void CaptureAudio();
49 50
50 static const uint32_t kFrequencyHz = 16000; 51 static const uint32_t kFrequencyHz = 16000;
51 static const size_t kBufferSizeBytes = 2 * kFrequencyHz; 52 static const size_t kBufferSizeBytes = 2 * kFrequencyHz;
52 53
53 AudioTransport* audio_callback_; 54 AudioTransport* audio_callback_;
54 bool capturing_; 55 bool capturing_;
55 int8_t captured_audio_[kBufferSizeBytes]; 56 int8_t captured_audio_[kBufferSizeBytes];
56 int8_t playout_buffer_[kBufferSizeBytes]; 57 int8_t playout_buffer_[kBufferSizeBytes];
58 const float speed_;
57 int64_t last_playout_ms_; 59 int64_t last_playout_ms_;
58 60
59 Clock* clock_; 61 DriftingClock clock_;
60 rtc::scoped_ptr<EventTimerWrapper> tick_; 62 rtc::scoped_ptr<EventTimerWrapper> tick_;
61 rtc::CriticalSection lock_; 63 rtc::CriticalSection lock_;
62 rtc::PlatformThread thread_; 64 rtc::PlatformThread thread_;
63 rtc::scoped_ptr<ModuleFileUtility> file_utility_; 65 rtc::scoped_ptr<ModuleFileUtility> file_utility_;
64 rtc::scoped_ptr<FileWrapper> input_stream_; 66 rtc::scoped_ptr<FileWrapper> input_stream_;
65 }; 67 };
66 } // namespace test 68 } // namespace test
67 } // namespace webrtc 69 } // namespace webrtc
68 70
69 #endif // WEBRTC_TEST_FAKE_AUDIO_DEVICE_H_ 71 #endif // WEBRTC_TEST_FAKE_AUDIO_DEVICE_H_
OLDNEW
« no previous file with comments | « webrtc/test/drifting_clock.cc ('k') | webrtc/test/fake_audio_device.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698