summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/mpeg2ts/ESQueue.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2011-09-08 14:12:44 -0700
committerAndreas Huber <andih@google.com>2011-09-30 15:26:31 -0700
commit2944eca607304a095ea43ba2b8f0b9de61249f9f (patch)
treef3dbe4e61cc94ec086b098c7387034f226a2ac14 /media/libstagefright/mpeg2ts/ESQueue.cpp
parentd3523f89a867afa111bb332887bf006ec3ae93e6 (diff)
downloadframeworks_av-2944eca607304a095ea43ba2b8f0b9de61249f9f.zip
frameworks_av-2944eca607304a095ea43ba2b8f0b9de61249f9f.tar.gz
frameworks_av-2944eca607304a095ea43ba2b8f0b9de61249f9f.tar.bz2
Support for an MPEG2 Program Stream extractor.
Change-Id: I606d87c278f72b22a5b6d7ee57bce6b02e280d41
Diffstat (limited to 'media/libstagefright/mpeg2ts/ESQueue.cpp')
-rw-r--r--media/libstagefright/mpeg2ts/ESQueue.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/media/libstagefright/mpeg2ts/ESQueue.cpp b/media/libstagefright/mpeg2ts/ESQueue.cpp
index f8a1d84..1045e09 100644
--- a/media/libstagefright/mpeg2ts/ESQueue.cpp
+++ b/media/libstagefright/mpeg2ts/ESQueue.cpp
@@ -581,6 +581,8 @@ sp<ABuffer> ElementaryStreamQueue::dequeueAccessUnitMPEGAudio() {
return NULL;
}
+ unsigned layer = 4 - ((header >> 17) & 3);
+
sp<ABuffer> accessUnit = new ABuffer(frameSize);
memcpy(accessUnit->data(), data, frameSize);
@@ -597,7 +599,24 @@ sp<ABuffer> ElementaryStreamQueue::dequeueAccessUnitMPEGAudio() {
if (mFormat == NULL) {
mFormat = new MetaData;
- mFormat->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_MPEG);
+
+ switch (layer) {
+ case 1:
+ mFormat->setCString(
+ kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_I);
+ break;
+ case 2:
+ mFormat->setCString(
+ kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_II);
+ break;
+ case 3:
+ mFormat->setCString(
+ kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_MPEG);
+ break;
+ default:
+ TRESPASS();
+ }
+
mFormat->setInt32(kKeySampleRate, samplingRate);
mFormat->setInt32(kKeyChannelCount, numChannels);
}