summaryrefslogtreecommitdiffstats
path: root/media/tools
diff options
context:
space:
mode:
authordalecurtis@google.com <dalecurtis@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-28 04:20:26 +0000
committerdalecurtis@google.com <dalecurtis@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-28 04:20:26 +0000
commitf9a4287463d5a7495248e97516ec135a807cc034 (patch)
treec8ee4cc9367bb8e81f920a7a8ac8a56a82ec6b08 /media/tools
parent995378aeaea1c7aa261559be6201f04c9d123166 (diff)
downloadchromium_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.cc21
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);