From f361a0d7b773112b60b80028aeaa2f42385d8487 Mon Sep 17 00:00:00 2001 From: "henrika@chromium.org" Date: Thu, 19 Jun 2014 12:38:56 +0000 Subject: Modifies AudioInputCallback::OnData and use media::AudioBus instead of plain byte vector (Relanding). Second attempt to land https://codereview.chromium.org/314713002/ which has been reverted. TBR=dalecurtis BUG=375155 TEST=WebRTC and WebSpeech demos Review URL: https://codereview.chromium.org/344583002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278345 0039d316-1c4b-4281-b951-d872f2087c98 --- content/browser/speech/speech_recognizer_impl.cc | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'content/browser/speech/speech_recognizer_impl.cc') diff --git a/content/browser/speech/speech_recognizer_impl.cc b/content/browser/speech/speech_recognizer_impl.cc index 3ba1f08..e49d301 100644 --- a/content/browser/speech/speech_recognizer_impl.cc +++ b/content/browser/speech/speech_recognizer_impl.cc @@ -37,10 +37,10 @@ class SpeechRecognizerImpl::OnDataConverter const AudioParameters& output_params); virtual ~OnDataConverter(); - // Converts input |data| buffer into an AudioChunk where the input format + // Converts input audio |data| bus into an AudioChunk where the input format // is given by |input_parameters_| and the output format by // |output_parameters_|. - scoped_refptr Convert(const uint8* data, size_t size); + scoped_refptr Convert(const AudioBus* data); private: // media::AudioConverter::InputCallback implementation. @@ -132,11 +132,10 @@ SpeechRecognizerImpl::OnDataConverter::~OnDataConverter() { } scoped_refptr SpeechRecognizerImpl::OnDataConverter::Convert( - const uint8* data, size_t size) { - CHECK_EQ(size, static_cast(input_parameters_.GetBytesPerBuffer())); + const AudioBus* data) { + CHECK_EQ(data->frames(), input_parameters_.frames_per_buffer()); - input_bus_->FromInterleaved( - data, input_bus_->frames(), input_parameters_.bits_per_sample() / 8); + data->CopyTo(input_bus_.get()); waiting_for_input_ = true; audio_converter_.Convert(output_bus_.get()); @@ -272,13 +271,10 @@ void SpeechRecognizerImpl::OnError(AudioInputController* controller, } void SpeechRecognizerImpl::OnData(AudioInputController* controller, - const uint8* data, uint32 size) { - if (size == 0) // This could happen when audio capture stops and is normal. - return; - + const AudioBus* data) { // Convert audio from native format to fixed format used by WebSpeech. FSMEventArgs event_args(EVENT_AUDIO_DATA); - event_args.audio_data = audio_converter_->Convert(data, size); + event_args.audio_data = audio_converter_->Convert(data); BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind(&SpeechRecognizerImpl::DispatchEvent, -- cgit v1.1