Loading media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +21 −6 Original line number Diff line number Diff line Loading @@ -1946,12 +1946,27 @@ status_t NuPlayer::Renderer::onOpenAudioSink( int32_t numChannels; CHECK(format->findInt32("channel-count", &numChannels)); int32_t rawChannelMask; audio_channel_mask_t channelMask = format->findInt32("channel-mask", &rawChannelMask) ? static_cast<audio_channel_mask_t>(rawChannelMask) // signal to the AudioSink to derive the mask from count. : CHANNEL_MASK_USE_CHANNEL_ORDER; // channel mask info as read from the audio format int32_t channelMaskFromFormat; // channel mask to use for native playback audio_channel_mask_t channelMask; if (format->findInt32("channel-mask", &channelMaskFromFormat)) { // KEY_CHANNEL_MASK follows the android.media.AudioFormat java mask // which is left-bitshifted by 2 relative to the native mask if ((channelMaskFromFormat & 0b11) != 0) { // received an unexpected mask (supposed to follow AudioFormat constants // for output masks with the 2 least-significant bits at 0), but // it may come from an extractor that uses native masks: keeping // the mask as given is ok as it contains at least mono or stereo // and potentially the haptic channels channelMask = static_cast<audio_channel_mask_t>(channelMaskFromFormat); } else { channelMask = static_cast<audio_channel_mask_t>(channelMaskFromFormat >> 2); } } else { // no mask found: the mask will be derived from the channel count channelMask = CHANNEL_MASK_USE_CHANNEL_ORDER; } int32_t sampleRate; CHECK(format->findInt32("sample-rate", &sampleRate)); Loading Loading
media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +21 −6 Original line number Diff line number Diff line Loading @@ -1946,12 +1946,27 @@ status_t NuPlayer::Renderer::onOpenAudioSink( int32_t numChannels; CHECK(format->findInt32("channel-count", &numChannels)); int32_t rawChannelMask; audio_channel_mask_t channelMask = format->findInt32("channel-mask", &rawChannelMask) ? static_cast<audio_channel_mask_t>(rawChannelMask) // signal to the AudioSink to derive the mask from count. : CHANNEL_MASK_USE_CHANNEL_ORDER; // channel mask info as read from the audio format int32_t channelMaskFromFormat; // channel mask to use for native playback audio_channel_mask_t channelMask; if (format->findInt32("channel-mask", &channelMaskFromFormat)) { // KEY_CHANNEL_MASK follows the android.media.AudioFormat java mask // which is left-bitshifted by 2 relative to the native mask if ((channelMaskFromFormat & 0b11) != 0) { // received an unexpected mask (supposed to follow AudioFormat constants // for output masks with the 2 least-significant bits at 0), but // it may come from an extractor that uses native masks: keeping // the mask as given is ok as it contains at least mono or stereo // and potentially the haptic channels channelMask = static_cast<audio_channel_mask_t>(channelMaskFromFormat); } else { channelMask = static_cast<audio_channel_mask_t>(channelMaskFromFormat >> 2); } } else { // no mask found: the mask will be derived from the channel count channelMask = CHANNEL_MASK_USE_CHANNEL_ORDER; } int32_t sampleRate; CHECK(format->findInt32("sample-rate", &sampleRate)); Loading