OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "media/audio/virtual_audio_sink.h" | |
6 | |
7 #include "media/audio/virtual_audio_input_stream.h" | |
8 | |
9 namespace media { | |
10 | |
11 static const base::TimeDelta kBufferSize = base::TimeDelta::FromSeconds(1); | |
12 static const base::TimeDelta kClockAccuracy = | |
13 base::TimeDelta::FromMilliseconds(1); | |
14 static const base::TimeDelta kAdjustTime = base::TimeDelta::FromSeconds(1); | |
15 | |
16 VirtualAudioSink::VirtualAudioSink(AudioParameters param, | |
17 VirtualAudioInputStream* target, | |
18 AfterCloseCallback callback) | |
19 : started_(false), | |
20 params_(param), | |
21 target_(target), | |
22 shifter_(new AudioShifter(kBufferSize, | |
23 kClockAccuracy, | |
24 kAdjustTime, | |
25 param.sample_rate(), | |
26 param.channels())), | |
27 after_close_callback_(callback) {} | |
28 | |
29 VirtualAudioSink::~VirtualAudioSink() {} | |
30 | |
31 void VirtualAudioSink::Start() { | |
32 started_ = true; | |
33 target_->AddOutputStream(this, params_); | |
34 } | |
35 | |
36 void VirtualAudioSink::Stop() { | |
37 target_->RemoveOutputStream(this, params_); | |
38 started_ = false; | |
39 } | |
40 | |
41 void VirtualAudioSink::Close() { | |
42 if (started_) | |
43 Stop(); | |
44 AfterCloseCallback cb = after_close_callback_; | |
miu
2016/04/21 00:15:25
nit: The rest of this method should be (using exis
qiangchen
2016/04/28 00:00:56
Done.
| |
45 if (!cb.is_null()) | |
46 cb.Run(this); | |
47 } | |
48 | |
49 void VirtualAudioSink::OnData(const AudioBus* source) { | |
50 std::unique_ptr<AudioBus> source_copy = AudioBus::Create(params_); | |
51 source->CopyTo(source_copy.get()); | |
52 shifter_->Push(std::move(source_copy), base::TimeTicks::Now()); | |
53 } | |
54 | |
55 double VirtualAudioSink::ProvideInput(AudioBus* audio_bus, | |
56 base::TimeDelta buffer_delay) { | |
57 shifter_->Pull(audio_bus, base::TimeTicks::Now()); | |
miu
2016/04/21 00:15:25
|buffer_delay| must be accounted for in the second
qiangchen
2016/04/28 00:00:56
Done.
| |
58 return 1; | |
59 } | |
60 } | |
OLD | NEW |