Commit 360527fc authored by Sergey Ulanov's avatar Sergey Ulanov Committed by Commit Bot

[Fuchsia] Pass extra_data to AudioConsumer

Some codecs require extra_data to be passed from the demuxer to decoder.
FuchsiaAudioDecoder wasn't passing that information to AudioConsumer, so
it wasn't passed to the decoder.

Bug: 1130881
Change-Id: I095c5cdd8fa99a7316af976d9a5cb748ec9027eb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2423304
Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
Commit-Queue: David Dorwin <ddorwin@chromium.org>
Auto-Submit: Sergey Ulanov <sergeyu@chromium.org>
Reviewed-by: default avatarDavid Dorwin <ddorwin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#809174}
parent 1d6daec3
...@@ -23,9 +23,9 @@ namespace { ...@@ -23,9 +23,9 @@ namespace {
// nullopt is returned in case the codec is not supported. nullptr is returned // nullopt is returned in case the codec is not supported. nullptr is returned
// for uncompressed PCM streams. // for uncompressed PCM streams.
base::Optional<std::unique_ptr<fuchsia::media::Compression>> base::Optional<std::unique_ptr<fuchsia::media::Compression>>
GetFuchsiaCompressionFromAudioCodec(AudioCodec codec) { GetFuchsiaCompressionFromDecoderConfig(AudioDecoderConfig config) {
auto compression = std::make_unique<fuchsia::media::Compression>(); auto compression = std::make_unique<fuchsia::media::Compression>();
switch (codec) { switch (config.codec()) {
case kCodecAAC: case kCodecAAC:
compression->type = fuchsia::media::AUDIO_ENCODING_AAC; compression->type = fuchsia::media::AUDIO_ENCODING_AAC;
break; break;
...@@ -48,6 +48,11 @@ GetFuchsiaCompressionFromAudioCodec(AudioCodec codec) { ...@@ -48,6 +48,11 @@ GetFuchsiaCompressionFromAudioCodec(AudioCodec codec) {
default: default:
return base::nullopt; return base::nullopt;
} }
if (!config.extra_data().empty()) {
compression->parameters = config.extra_data();
}
return std::move(compression); return std::move(compression);
} }
...@@ -171,7 +176,7 @@ void FuchsiaAudioRenderer::InitializeStreamSink( ...@@ -171,7 +176,7 @@ void FuchsiaAudioRenderer::InitializeStreamSink(
vmos_for_stream_sink.push_back(std::move(readonly_vmo)); vmos_for_stream_sink.push_back(std::move(readonly_vmo));
} }
auto compression = GetFuchsiaCompressionFromAudioCodec(config.codec()); auto compression = GetFuchsiaCompressionFromDecoderConfig(config);
if (!compression) { if (!compression) {
LOG(ERROR) << "Unsupported audio codec: " << GetCodecName(config.codec()); LOG(ERROR) << "Unsupported audio codec: " << GetCodecName(config.codec());
std::move(init_cb_).Run(AUDIO_RENDERER_ERROR); std::move(init_cb_).Run(AUDIO_RENDERER_ERROR);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment