summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/WAVExtractor.cpp
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2012-05-02 10:16:13 -0700
committerJean-Michel Trivi <jmtrivi@google.com>2012-05-02 10:28:52 -0700
commit72b2b9ba68ee85a3054a0de3a8414b8dfb217aeb (patch)
treeb35a3d2501ee1086af4823e8d974313a4618a356 /media/libstagefright/WAVExtractor.cpp
parent83faee053cfd4251dbb591b62039f563ffdac399 (diff)
downloadframeworks_av-72b2b9ba68ee85a3054a0de3a8414b8dfb217aeb.zip
frameworks_av-72b2b9ba68ee85a3054a0de3a8414b8dfb217aeb.tar.gz
frameworks_av-72b2b9ba68ee85a3054a0de3a8414b8dfb217aeb.tar.bz2
Tolerate 0 valid bits value in WAV_EXT
Some WAV_EXT writers don't properly set the "valid bits per sample" value and set it to 0. Don't return an error when such a header is parsed. Change-Id: I21763087af4f3fc8c62a24b883aae53b23ae71d4
Diffstat (limited to 'media/libstagefright/WAVExtractor.cpp')
-rw-r--r--media/libstagefright/WAVExtractor.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/media/libstagefright/WAVExtractor.cpp b/media/libstagefright/WAVExtractor.cpp
index c35a77a..96b2cf0 100644
--- a/media/libstagefright/WAVExtractor.cpp
+++ b/media/libstagefright/WAVExtractor.cpp
@@ -227,9 +227,15 @@ status_t WAVExtractor::init() {
if (mWaveFormat == WAVE_FORMAT_EXTENSIBLE) {
uint16_t validBitsPerSample = U16_LE_AT(&formatSpec[18]);
if (validBitsPerSample != mBitsPerSample) {
- ALOGE("validBits(%d) != bitsPerSample(%d) are not supported",
- validBitsPerSample, mBitsPerSample);
- return ERROR_UNSUPPORTED;
+ if ((validBitsPerSample != 0) {
+ ALOGE("validBits(%d) != bitsPerSample(%d) are not supported",
+ validBitsPerSample, mBitsPerSample);
+ return ERROR_UNSUPPORTED;
+ } else {
+ // we only support valitBitsPerSample == bitsPerSample but some WAV_EXT
+ // writers don't correctly set the valid bits value, and leave it at 0.
+ ALOGW("WAVE_EXT has 0 valid bits per sample, ignoring");
+ }
}
mChannelMask = U32_LE_AT(&formatSpec[20]);