Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(436)

Side by Side Diff: media/renderers/audio_renderer_impl.cc

Issue 1942803002: Caching AudioOutputDevice instances in mixer manager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase, fix for sleep() compile error on win and a bit of cleanup around timeouts. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "media/renderers/audio_renderer_impl.h" 5 #include "media/renderers/audio_renderer_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
(...skipping 17 matching lines...) Expand all
28 #include "media/base/timestamp_constants.h" 28 #include "media/base/timestamp_constants.h"
29 #include "media/filters/audio_clock.h" 29 #include "media/filters/audio_clock.h"
30 #include "media/filters/decrypting_demuxer_stream.h" 30 #include "media/filters/decrypting_demuxer_stream.h"
31 31
32 namespace media { 32 namespace media {
33 33
34 AudioRendererImpl::AudioRendererImpl( 34 AudioRendererImpl::AudioRendererImpl(
35 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 35 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
36 media::AudioRendererSink* sink, 36 media::AudioRendererSink* sink,
37 ScopedVector<AudioDecoder> decoders, 37 ScopedVector<AudioDecoder> decoders,
38 const AudioHardwareConfig& hardware_config,
39 const scoped_refptr<MediaLog>& media_log) 38 const scoped_refptr<MediaLog>& media_log)
40 : task_runner_(task_runner), 39 : task_runner_(task_runner),
41 expecting_config_changes_(false), 40 expecting_config_changes_(false),
42 sink_(sink), 41 sink_(sink),
43 audio_buffer_stream_( 42 audio_buffer_stream_(
44 new AudioBufferStream(task_runner, std::move(decoders), media_log)), 43 new AudioBufferStream(task_runner, std::move(decoders), media_log)),
45 hardware_config_(hardware_config),
46 media_log_(media_log), 44 media_log_(media_log),
47 tick_clock_(new base::DefaultTickClock()), 45 tick_clock_(new base::DefaultTickClock()),
48 last_audio_memory_usage_(0), 46 last_audio_memory_usage_(0),
49 last_decoded_sample_rate_(0), 47 last_decoded_sample_rate_(0),
50 playback_rate_(0.0), 48 playback_rate_(0.0),
51 state_(kUninitialized), 49 state_(kUninitialized),
52 buffering_state_(BUFFERING_HAVE_NOTHING), 50 buffering_state_(BUFFERING_HAVE_NOTHING),
53 rendering_(false), 51 rendering_(false),
54 sink_playing_(false), 52 sink_playing_(false),
55 pending_read_(false), 53 pending_read_(false),
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 334
337 // Always post |init_cb_| because |this| could be destroyed if initialization 335 // Always post |init_cb_| because |this| could be destroyed if initialization
338 // failed. 336 // failed.
339 init_cb_ = BindToCurrentLoop(init_cb); 337 init_cb_ = BindToCurrentLoop(init_cb);
340 338
341 buffering_state_cb_ = buffering_state_cb; 339 buffering_state_cb_ = buffering_state_cb;
342 ended_cb_ = ended_cb; 340 ended_cb_ = ended_cb;
343 error_cb_ = error_cb; 341 error_cb_ = error_cb;
344 statistics_cb_ = statistics_cb; 342 statistics_cb_ = statistics_cb;
345 343
346 const AudioParameters& hw_params = hardware_config_.GetOutputConfig(); 344 const AudioParameters& hw_params =
345 sink_->GetOutputDeviceInfo().output_params();
347 expecting_config_changes_ = stream->SupportsConfigChanges(); 346 expecting_config_changes_ = stream->SupportsConfigChanges();
348 if (!expecting_config_changes_ || !hw_params.IsValid() || 347 if (!expecting_config_changes_ || !hw_params.IsValid() ||
Guido Urdaneta 2016/05/11 10:49:29 Should we also check if GetOutputDeviceInfo().devi
o1ka 2016/05/11 11:47:10 Good question. If the status is not OK, we won't g
349 hw_params.format() == AudioParameters::AUDIO_FAKE) { 348 hw_params.format() == AudioParameters::AUDIO_FAKE) {
350 // The actual buffer size is controlled via the size of the AudioBus 349 // The actual buffer size is controlled via the size of the AudioBus
351 // provided to Render(), so just choose something reasonable here for looks. 350 // provided to Render(), so just choose something reasonable here for looks.
352 int buffer_size = stream->audio_decoder_config().samples_per_second() / 100; 351 int buffer_size = stream->audio_decoder_config().samples_per_second() / 100;
353 audio_parameters_.Reset( 352 audio_parameters_.Reset(
354 AudioParameters::AUDIO_PCM_LOW_LATENCY, 353 AudioParameters::AUDIO_PCM_LOW_LATENCY,
355 stream->audio_decoder_config().channel_layout(), 354 stream->audio_decoder_config().channel_layout(),
356 stream->audio_decoder_config().samples_per_second(), 355 stream->audio_decoder_config().samples_per_second(),
357 stream->audio_decoder_config().bits_per_channel(), 356 stream->audio_decoder_config().bits_per_channel(),
358 buffer_size); 357 buffer_size);
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 << buffering_state; 901 << buffering_state;
903 DCHECK_NE(buffering_state_, buffering_state); 902 DCHECK_NE(buffering_state_, buffering_state);
904 lock_.AssertAcquired(); 903 lock_.AssertAcquired();
905 buffering_state_ = buffering_state; 904 buffering_state_ = buffering_state;
906 905
907 task_runner_->PostTask(FROM_HERE, 906 task_runner_->PostTask(FROM_HERE,
908 base::Bind(buffering_state_cb_, buffering_state_)); 907 base::Bind(buffering_state_cb_, buffering_state_));
909 } 908 }
910 909
911 } // namespace media 910 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698