summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2015-02-06 12:21:32 -0800
committerMarco Nelissen <marcone@google.com>2015-02-06 21:05:54 +0000
commit41d3f579d2c166984958263533284209b90c87d5 (patch)
tree40b9ed5f373b6515ef828a19cd55fcf2ac1ddef6
parent35395ea6ad11824a4a89cc1ab9ee84f936188296 (diff)
downloadframeworks_av-41d3f579d2c166984958263533284209b90c87d5.zip
frameworks_av-41d3f579d2c166984958263533284209b90c87d5.tar.gz
frameworks_av-41d3f579d2c166984958263533284209b90c87d5.tar.bz2
Fix GSM WAV playback
Bug:19289381 Change-Id: If7bbf1ecf1cb8796188e61bc2c42f8a099510424
-rw-r--r--media/libstagefright/ACodec.cpp17
-rw-r--r--media/libstagefright/WAVExtractor.cpp8
2 files changed, 21 insertions, 4 deletions
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
index 82a228c..e015f1a 100644
--- a/media/libstagefright/ACodec.cpp
+++ b/media/libstagefright/ACodec.cpp
@@ -3805,6 +3805,23 @@ status_t ACodec::getPortFormat(OMX_U32 portIndex, sp<AMessage> &notify) {
break;
}
+ case OMX_AUDIO_CodingGSMFR:
+ {
+ OMX_AUDIO_PARAM_MP3TYPE params;
+ InitOMXParams(&params);
+ params.nPortIndex = portIndex;
+
+ CHECK_EQ(mOMX->getParameter(
+ mNode, OMX_IndexParamAudioPcm,
+ &params, sizeof(params)),
+ (status_t)OK);
+
+ notify->setString("mime", MEDIA_MIMETYPE_AUDIO_MSGSM);
+ notify->setInt32("channel-count", params.nChannels);
+ notify->setInt32("sample-rate", params.nSampleRate);
+ break;
+ }
+
default:
ALOGE("UNKNOWN AUDIO CODING: %d\n", audioDef->eEncoding);
TRESPASS();
diff --git a/media/libstagefright/WAVExtractor.cpp b/media/libstagefright/WAVExtractor.cpp
index a4a651d..335ac84 100644
--- a/media/libstagefright/WAVExtractor.cpp
+++ b/media/libstagefright/WAVExtractor.cpp
@@ -439,10 +439,6 @@ status_t WAVSource::read(
maxBytesToRead = maxBytesAvailable;
}
- // read only integral amounts of audio unit frames.
- const size_t inputUnitFrameSize = mNumChannels * mBitsPerSample / 8;
- maxBytesToRead -= maxBytesToRead % inputUnitFrameSize;
-
if (mWaveFormat == WAVE_FORMAT_MSGSM) {
// Microsoft packs 2 frames into 65 bytes, rather than using separate 33-byte frames,
// so read multiples of 65, and use smaller buffers to account for ~10:1 expansion ratio
@@ -450,6 +446,10 @@ status_t WAVSource::read(
maxBytesToRead = 1024;
}
maxBytesToRead = (maxBytesToRead / 65) * 65;
+ } else {
+ // read only integral amounts of audio unit frames.
+ const size_t inputUnitFrameSize = mNumChannels * mBitsPerSample / 8;
+ maxBytesToRead -= maxBytesToRead % inputUnitFrameSize;
}
ssize_t n = mDataSource->readAt(