diff options
author | Steve Kondik <steve@cyngn.com> | 2015-12-17 15:18:04 -0500 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-12-17 18:34:03 -0500 |
commit | 7b3a9daba71708d54434c8fb8e967b4853e01707 (patch) | |
tree | 2e1c0913650b03e6246da68f8b7dd149f965a613 /media/libavextensions | |
parent | 53ac41b011537674ae823bc38df2fea7b369c894 (diff) | |
download | frameworks_av-7b3a9daba71708d54434c8fb8e967b4853e01707.zip frameworks_av-7b3a9daba71708d54434c8fb8e967b4853e01707.tar.gz frameworks_av-7b3a9daba71708d54434c8fb8e967b4853e01707.tar.bz2 |
nuplayer: Error checks for PCM format extensions
Change-Id: Ie9a3a8c335611d11c84bf24cb50c73c1644ad381
Diffstat (limited to 'media/libavextensions')
-rw-r--r-- | media/libavextensions/mediaplayerservice/AVNuUtils.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/media/libavextensions/mediaplayerservice/AVNuUtils.cpp b/media/libavextensions/mediaplayerservice/AVNuUtils.cpp index 3354d23..34abd0a 100644 --- a/media/libavextensions/mediaplayerservice/AVNuUtils.cpp +++ b/media/libavextensions/mediaplayerservice/AVNuUtils.cpp @@ -202,7 +202,8 @@ bool AVNuUtils::isVorbisFormat(const sp<MetaData> &) { int AVNuUtils::updateAudioBitWidth(audio_format_t audioFormat, const sp<AMessage> &format){ int bits = 16; - if (audio_is_linear_pcm(audioFormat) || audio_is_offload_pcm(audioFormat)) { + if (format.get() && + (audio_is_linear_pcm(audioFormat) || audio_is_offload_pcm(audioFormat))) { bits = audio_bytes_per_sample(audioFormat) * 8; format->setInt32("bits-per-sample", bits); } @@ -211,42 +212,45 @@ int AVNuUtils::updateAudioBitWidth(audio_format_t audioFormat, audio_format_t AVNuUtils::getKeyPCMFormat(const sp<MetaData> &meta) { audio_format_t pcmFormat = AUDIO_FORMAT_INVALID; - meta->findInt32('pfmt', (int32_t *)&pcmFormat); + if (meta.get()) + meta->findInt32('pfmt', (int32_t *)&pcmFormat); return pcmFormat; } void AVNuUtils::setKeyPCMFormat(const sp<MetaData> &meta, audio_format_t audioFormat) { - if (meta != NULL && audio_is_linear_pcm(audioFormat)) + if (meta.get() && audio_is_linear_pcm(audioFormat)) meta->setInt32('pfmt', audioFormat); } audio_format_t AVNuUtils::getPCMFormat(const sp<AMessage> &format) { audio_format_t pcmFormat = AUDIO_FORMAT_INVALID; - format->findInt32("pcm-format", (int32_t *)&pcmFormat); + if (format.get()) + format->findInt32("pcm-format", (int32_t *)&pcmFormat); return pcmFormat; } void AVNuUtils::setPCMFormat(const sp<AMessage> &format, audio_format_t audioFormat) { - if (audio_is_linear_pcm(audioFormat) || audio_is_offload_pcm(audioFormat)) + if (format.get() && + (audio_is_linear_pcm(audioFormat) || audio_is_offload_pcm(audioFormat))) format->setInt32("pcm-format", audioFormat); } void AVNuUtils::setSourcePCMFormat(const sp<MetaData> &audioMeta) { - if (!isRAWFormat(audioMeta)) + if (!audioMeta.get() || !isRAWFormat(audioMeta)) return; audio_format_t pcmFormat = getKeyPCMFormat(audioMeta); - ALOGI("setSourcePCMFormat fmt=%x", pcmFormat); - audioMeta->dumpToLog(); if (pcmFormat == AUDIO_FORMAT_INVALID) { int32_t bits = 16; if (audioMeta->findInt32(kKeyBitsPerSample, &bits)) { if (bits == 8) pcmFormat = AUDIO_FORMAT_PCM_8_BIT; - if (bits == 24) + else if (bits == 24) pcmFormat = AUDIO_FORMAT_PCM_32_BIT; - if (bits == 32) + else if (bits == 32) pcmFormat = AUDIO_FORMAT_PCM_FLOAT; + else + pcmFormat = AUDIO_FORMAT_PCM_16_BIT; setKeyPCMFormat(audioMeta, pcmFormat); } } |