diff options
author | dalecurtis@google.com <dalecurtis@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-28 04:20:26 +0000 |
---|---|---|
committer | dalecurtis@google.com <dalecurtis@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-28 04:20:26 +0000 |
commit | f9a4287463d5a7495248e97516ec135a807cc034 (patch) | |
tree | c8ee4cc9367bb8e81f920a7a8ac8a56a82ec6b08 /media/tools | |
parent | 995378aeaea1c7aa261559be6201f04c9d123166 (diff) | |
download | chromium_src-f9a4287463d5a7495248e97516ec135a807cc034.zip chromium_src-f9a4287463d5a7495248e97516ec135a807cc034.tar.gz chromium_src-f9a4287463d5a7495248e97516ec135a807cc034.tar.bz2 |
Add support for midstream audio configuration changes.
This introduces a new class, AudioBufferConverter, which takes AudioBuffers of arbitrary formats and converts them to AudioBuffers of a common format.
To support config changes seamlessly we use the AudioBufferConverter to convert incoming AudioBuffers to the hardware output format as we get them from the AudioBufferStream. This way the rest of the audio pipeline doesn't need to handle config changes.
We only enable this conversion step for DemuxerStreams that support config changes (namely ChunkDemuxerStream).
BUG=347270
TEST=AudioBufferConverterTest
NOTRY=true
R=dalecurtis@chromium.org
Review URL: https://codereview.chromium.org/177333003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@260071 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/tools')
-rw-r--r-- | media/tools/player_x11/player_x11.cc | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/media/tools/player_x11/player_x11.cc b/media/tools/player_x11/player_x11.cc index 26834ea..0cec7b82 100644 --- a/media/tools/player_x11/player_x11.cc +++ b/media/tools/player_x11/player_x11.cc @@ -16,6 +16,7 @@ #include "base/threading/thread.h" #include "media/audio/audio_manager.h" #include "media/audio/null_audio_sink.h" +#include "media/base/audio_hardware_config.h" #include "media/base/decryptor.h" #include "media/base/filter_collection.h" #include "media/base/media.h" @@ -137,11 +138,21 @@ void InitPipeline( ScopedVector<media::AudioDecoder> audio_decoders; audio_decoders.push_back(new media::FFmpegAudioDecoder(task_runner)); - scoped_ptr<media::AudioRenderer> audio_renderer(new media::AudioRendererImpl( - task_runner, - new media::NullAudioSink(task_runner), - audio_decoders.Pass(), - media::SetDecryptorReadyCB())); + media::AudioParameters out_params( + media::AudioParameters::AUDIO_PCM_LOW_LATENCY, + media::CHANNEL_LAYOUT_STEREO, + 44100, + 16, + 512); + media::AudioHardwareConfig hardware_config(out_params, out_params); + + scoped_ptr<media::AudioRenderer> audio_renderer( + new media::AudioRendererImpl(task_runner, + new media::NullAudioSink(task_runner), + audio_decoders.Pass(), + media::SetDecryptorReadyCB(), + &hardware_config)); + collection->SetAudioRenderer(audio_renderer.Pass()); base::WaitableEvent event(true, false); |