diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/media/renderers/audio_renderer_impl.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/media/renderers/audio_renderer_impl.cc')
-rw-r--r-- | chromium/media/renderers/audio_renderer_impl.cc | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/chromium/media/renderers/audio_renderer_impl.cc b/chromium/media/renderers/audio_renderer_impl.cc index 95308f4a746..0c1e6b03bd9 100644 --- a/chromium/media/renderers/audio_renderer_impl.cc +++ b/chromium/media/renderers/audio_renderer_impl.cc @@ -48,7 +48,7 @@ AudioRendererImpl::AudioRendererImpl( media::AudioRendererSink* sink, const CreateAudioDecodersCB& create_audio_decoders_cb, MediaLog* media_log, - const TranscribeAudioCallback& transcribe_audio_callback) + SpeechRecognitionClient* speech_recognition_client) : task_runner_(task_runner), expecting_config_changes_(false), sink_(sink), @@ -70,8 +70,12 @@ AudioRendererImpl::AudioRendererImpl( received_end_of_stream_(false), rendered_end_of_stream_(false), is_suspending_(false), +#if defined(OS_ANDROID) + is_passthrough_(false) { +#else is_passthrough_(false), - transcribe_audio_callback_(transcribe_audio_callback) { + speech_recognition_client_(speech_recognition_client) { +#endif DCHECK(create_audio_decoders_cb_); // PowerObserver's must be added and removed from the same thread, but we @@ -369,6 +373,14 @@ void AudioRendererImpl::Initialize(DemuxerStream* stream, sink_->GetOutputDeviceInfoAsync( base::BindOnce(&AudioRendererImpl::OnDeviceInfoReceived, weak_factory_.GetWeakPtr(), demuxer_stream_, cdm_context)); + +#if !defined(OS_ANDROID) + if (speech_recognition_client_) { + speech_recognition_client_->SetOnReadyCallback( + base::BindOnce(&AudioRendererImpl::EnableSpeechRecognition, + weak_factory_.GetWeakPtr())); + } +#endif } void AudioRendererImpl::OnDeviceInfoReceived( @@ -619,6 +631,8 @@ void AudioRendererImpl::OnAudioDecoderStreamInitialized(bool success) { algorithm_->Initialize(audio_parameters_, is_encrypted_); if (latency_hint_) algorithm_->SetLatencyHint(latency_hint_); + + algorithm_->SetPreservesPitch(preserves_pitch_); ConfigureChannelMask(); ChangeState_Locked(kFlushed); @@ -708,6 +722,15 @@ void AudioRendererImpl::SetLatencyHint( } } +void AudioRendererImpl::SetPreservesPitch(bool preserves_pitch) { + base::AutoLock auto_lock(lock_); + + preserves_pitch_ = preserves_pitch; + + if (algorithm_) + algorithm_->SetPreservesPitch(preserves_pitch); +} + void AudioRendererImpl::OnSuspend() { base::AutoLock auto_lock(lock_); is_suspending_ = true; @@ -871,8 +894,10 @@ bool AudioRendererImpl::HandleDecodedBuffer_Locked( if (first_packet_timestamp_ == kNoTimestamp) first_packet_timestamp_ = buffer->timestamp(); - if (!transcribe_audio_callback_.is_null()) +#if !defined(OS_ANDROID) + if (transcribe_audio_callback_) transcribe_audio_callback_.Run(buffer); +#endif if (state_ != kUninitialized) algorithm_->EnqueueBuffer(std::move(buffer)); @@ -1281,4 +1306,20 @@ void AudioRendererImpl::ConfigureChannelMask() { algorithm_->SetChannelMask(std::move(channel_mask)); } +void AudioRendererImpl::EnableSpeechRecognition() { +#if !defined(OS_ANDROID) + DCHECK(task_runner_->BelongsToCurrentThread()); + transcribe_audio_callback_ = base::BindRepeating( + &AudioRendererImpl::TranscribeAudio, weak_factory_.GetWeakPtr()); +#endif +} + +void AudioRendererImpl::TranscribeAudio( + scoped_refptr<media::AudioBuffer> buffer) { +#if !defined(OS_ANDROID) + DCHECK(task_runner_->BelongsToCurrentThread()); + if (speech_recognition_client_) + speech_recognition_client_->AddAudio(std::move(buffer)); +#endif +} } // namespace media |