| 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 |