Merge "Skip incorrect MPEG audio frame"
diff --git a/media/libstagefright/mpeg2ts/ESQueue.cpp b/media/libstagefright/mpeg2ts/ESQueue.cpp
index b91edcd..5af7b23 100644
--- a/media/libstagefright/mpeg2ts/ESQueue.cpp
+++ b/media/libstagefright/mpeg2ts/ESQueue.cpp
@@ -1526,6 +1526,7 @@
header, &frameSize, &samplingRate, &numChannels,
&bitrate, &numSamples)) {
ALOGE("Failed to get audio frame size");
+ mBuffer->setRange(0, 0);
return NULL;
}
@@ -1550,6 +1551,22 @@
return NULL;
}
+ if (mFormat != NULL) {
+ const char *mime;
+ if (mFormat->findCString(kKeyMIMEType, &mime)) {
+ if ((layer == 1) && strcmp (mime, MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_I)) {
+ ALOGE("Audio layer is not MPEG_LAYER_I");
+ return NULL;
+ } else if ((layer == 2) && strcmp (mime, MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_II)) {
+ ALOGE("Audio layer is not MPEG_LAYER_II");
+ return NULL;
+ } else if ((layer == 3) && strcmp (mime, MEDIA_MIMETYPE_AUDIO_MPEG)) {
+ ALOGE("Audio layer is not AUDIO_MPEG");
+ return NULL;
+ }
+ }
+ }
+
accessUnit->meta()->setInt64("timeUs", timeUs);
accessUnit->meta()->setInt32("isSync", 1);