diff options
author | Shivaprasad Hongal <shongal@codeaurora.org> | 2015-10-26 19:05:35 -0700 |
---|---|---|
committer | Shivaprasad Hongal <shongal@codeaurora.org> | 2015-10-26 19:05:35 -0700 |
commit | dcd760385776f0e4176cf763c8042d56af7e4503 (patch) | |
tree | 1521f07411d1a26906fad15ac826d5ce3ea7926a /media/libstagefright/avc_utils.cpp | |
parent | 04fdb627d164cc81c8fa2830db1b20cf1261aea4 (diff) | |
download | frameworks_av-dcd760385776f0e4176cf763c8042d56af7e4503.zip frameworks_av-dcd760385776f0e4176cf763c8042d56af7e4503.tar.gz frameworks_av-dcd760385776f0e4176cf763c8042d56af7e4503.tar.bz2 |
Stagefright: use set buffers mode.
Use set buffers mode if parser supports it.
Change-Id: Ia3d12f15fa28f25e1ccb724158cc91ce26fc81ed
Diffstat (limited to 'media/libstagefright/avc_utils.cpp')
-rw-r--r-- | media/libstagefright/avc_utils.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/media/libstagefright/avc_utils.cpp b/media/libstagefright/avc_utils.cpp index 8c371ba..98b5c0e 100644 --- a/media/libstagefright/avc_utils.cpp +++ b/media/libstagefright/avc_utils.cpp @@ -25,6 +25,7 @@ #include <media/stagefright/foundation/hexdump.h> #include <media/stagefright/MediaDefs.h> #include <media/stagefright/MediaErrors.h> +#include <media/stagefright/MediaBuffer.h> #include <media/stagefright/MetaData.h> #include <utils/misc.h> @@ -443,25 +444,34 @@ bool IsIDR(const sp<ABuffer> &buffer) { } bool IsAVCReferenceFrame(const sp<ABuffer> &accessUnit) { - const uint8_t *data = accessUnit->data(); + MediaBuffer *mediaBuffer = + (MediaBuffer *)(accessUnit->getMediaBufferBase()); + const uint8_t *data = + (mediaBuffer != NULL) ? (uint8_t *) mediaBuffer->data() : accessUnit->data(); size_t size = accessUnit->size(); const uint8_t *nalStart; size_t nalSize; + bool bIsReferenceFrame = true; while (getNextNALUnit(&data, &size, &nalStart, &nalSize, true) == OK) { CHECK_GT(nalSize, 0u); unsigned nalType = nalStart[0] & 0x1f; if (nalType == 5) { - return true; + bIsReferenceFrame = true; + break; } else if (nalType == 1) { unsigned nal_ref_idc = (nalStart[0] >> 5) & 3; - return nal_ref_idc != 0; + bIsReferenceFrame = (nal_ref_idc != 0); + break; } } - return true; + if (mediaBuffer != NULL) { + mediaBuffer->release(); + } + return bIsReferenceFrame; } sp<MetaData> MakeAACCodecSpecificData( |