From 9b4b24a46f3f76ebb186df8bc01c58848af02108 Mon Sep 17 00:00:00 2001 From: Vignesh Venkatasubramanian Date: Mon, 26 Jan 2015 15:24:16 -0800 Subject: opus: Support for > 2 channels This CL adds support for Opus streams that have more than 2 channels. It also fixes a bug where codec delay and seek preroll are not transferred during metadata to message conversion. Change-Id: Ia9748d4f7024368b2aa3c5cbd27f8016c859ea00 --- media/libstagefright/codecs/opus/dec/SoftOpus.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'media/libstagefright/codecs/opus/dec/SoftOpus.cpp') diff --git a/media/libstagefright/codecs/opus/dec/SoftOpus.cpp b/media/libstagefright/codecs/opus/dec/SoftOpus.cpp index b8084ae..6322dc2 100644 --- a/media/libstagefright/codecs/opus/dec/SoftOpus.cpp +++ b/media/libstagefright/codecs/opus/dec/SoftOpus.cpp @@ -345,9 +345,15 @@ void SoftOpus::onQueueFilled(OMX_U32 portIndex) { } uint8_t channel_mapping[kMaxChannels] = {0}; - memcpy(&channel_mapping, - kDefaultOpusChannelLayout, - kMaxChannelsWithDefaultLayout); + if (mHeader->channels <= kMaxChannelsWithDefaultLayout) { + memcpy(&channel_mapping, + kDefaultOpusChannelLayout, + kMaxChannelsWithDefaultLayout); + } else { + memcpy(&channel_mapping, + mHeader->stream_map, + mHeader->channels); + } int status = OPUS_INVALID_STATE; mDecoder = opus_multistream_decoder_create(kRate, -- cgit v1.1