OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_audio
_encoder.h" | 5 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_audio
_encoder.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 // WiFiDisplayMediaEncoder | 44 // WiFiDisplayMediaEncoder |
45 WiFiDisplayElementaryStreamInfo CreateElementaryStreamInfo() const override; | 45 WiFiDisplayElementaryStreamInfo CreateElementaryStreamInfo() const override; |
46 | 46 |
47 // content::MediaStreamAudioSink | 47 // content::MediaStreamAudioSink |
48 void OnData(const media::AudioBus& input_bus, | 48 void OnData(const media::AudioBus& input_bus, |
49 base::TimeTicks estimated_capture_time) override; | 49 base::TimeTicks estimated_capture_time) override; |
50 void OnSetFormat(const media::AudioParameters& params) override; | 50 void OnSetFormat(const media::AudioParameters& params) override; |
51 | 51 |
52 // media::AudioConverter::InputCallback | 52 // media::AudioConverter::InputCallback |
53 double ProvideInput(media::AudioBus* audio_bus, | 53 double ProvideInput(media::AudioBus* audio_bus, |
54 base::TimeDelta buffer_delay) override; | 54 uint32_t frames_delayed) override; |
55 | 55 |
56 LPCMAudioStreamDescriptor::SamplingFrequency GetOutputSamplingFrequency() | 56 LPCMAudioStreamDescriptor::SamplingFrequency GetOutputSamplingFrequency() |
57 const; | 57 const; |
58 | 58 |
59 private: | 59 private: |
60 const int output_sample_rate_; | 60 const int output_sample_rate_; |
61 | 61 |
62 // These members are accessed on the real-time audio time only. | 62 // These members are accessed on the real-time audio time only. |
63 std::unique_ptr<media::AudioConverter> converter_; | 63 std::unique_ptr<media::AudioConverter> converter_; |
64 const media::AudioBus* current_input_bus_; | 64 const media::AudioBus* current_input_bus_; |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 fifo_bus_ = media::AudioBus::Create( | 198 fifo_bus_ = media::AudioBus::Create( |
199 kOutputChannels, | 199 kOutputChannels, |
200 WiFiDisplayMediaPacketizer::LPCM::kChannelSamplesPerUnit); | 200 WiFiDisplayMediaPacketizer::LPCM::kChannelSamplesPerUnit); |
201 fifo_end_frame_ = 0; | 201 fifo_end_frame_ = 0; |
202 fifo_frames_out_ = 0; | 202 fifo_frames_out_ = 0; |
203 input_frames_in_ = 0; | 203 input_frames_in_ = 0; |
204 } | 204 } |
205 | 205 |
206 // Called on real-time audio thread by |converter_| invoked by |OnData|. | 206 // Called on real-time audio thread by |converter_| invoked by |OnData|. |
207 double WiFiDisplayAudioEncoderLPCM::ProvideInput(media::AudioBus* audio_bus, | 207 double WiFiDisplayAudioEncoderLPCM::ProvideInput(media::AudioBus* audio_bus, |
208 base::TimeDelta buffer_delay) { | 208 uint32_t frames_delayed) { |
209 DCHECK(current_input_bus_); | 209 DCHECK(current_input_bus_); |
210 current_input_bus_->CopyTo(audio_bus); | 210 current_input_bus_->CopyTo(audio_bus); |
211 current_input_bus_ = nullptr; | 211 current_input_bus_ = nullptr; |
212 return 1.0; | 212 return 1.0; |
213 } | 213 } |
214 | 214 |
215 LPCMAudioStreamDescriptor::SamplingFrequency | 215 LPCMAudioStreamDescriptor::SamplingFrequency |
216 WiFiDisplayAudioEncoderLPCM::GetOutputSamplingFrequency() const { | 216 WiFiDisplayAudioEncoderLPCM::GetOutputSamplingFrequency() const { |
217 switch (GetAudioCodecMode()) { | 217 switch (GetAudioCodecMode()) { |
218 case wds::LPCM_44_1K_16B_2CH: | 218 case wds::LPCM_44_1K_16B_2CH: |
219 return LPCMAudioStreamDescriptor::SAMPLING_FREQUENCY_44_1K; | 219 return LPCMAudioStreamDescriptor::SAMPLING_FREQUENCY_44_1K; |
220 case wds::LPCM_48K_16B_2CH: | 220 case wds::LPCM_48K_16B_2CH: |
221 return LPCMAudioStreamDescriptor::SAMPLING_FREQUENCY_48K; | 221 return LPCMAudioStreamDescriptor::SAMPLING_FREQUENCY_48K; |
222 default: | 222 default: |
223 NOTREACHED(); | 223 NOTREACHED(); |
224 return LPCMAudioStreamDescriptor::SAMPLING_FREQUENCY_44_1K; | 224 return LPCMAudioStreamDescriptor::SAMPLING_FREQUENCY_44_1K; |
225 } | 225 } |
226 } | 226 } |
227 | 227 |
228 } // namespace | 228 } // namespace |
229 | 229 |
230 void WiFiDisplayAudioEncoder::CreateLPCM( | 230 void WiFiDisplayAudioEncoder::CreateLPCM( |
231 const wds::AudioCodec& audio_codec, | 231 const wds::AudioCodec& audio_codec, |
232 const AudioEncoderCallback& encoder_callback) { | 232 const AudioEncoderCallback& encoder_callback) { |
233 encoder_callback.Run( | 233 encoder_callback.Run( |
234 make_scoped_refptr(new WiFiDisplayAudioEncoderLPCM(audio_codec))); | 234 make_scoped_refptr(new WiFiDisplayAudioEncoderLPCM(audio_codec))); |
235 } | 235 } |
236 | 236 |
237 } // namespace extensions | 237 } // namespace extensions |
OLD | NEW |