diff options
author | Andreas Huber <andih@google.com> | 2012-11-20 09:27:22 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-11-20 09:27:22 -0800 |
commit | 0ebc0bfbdfeedd9dac023e60524a71af67d0796d (patch) | |
tree | eaae42a860dee5d80c0cc2667086ea8ef5967707 /media | |
parent | 41bc927ed70c7316ece894f0848ab5e4db822766 (diff) | |
parent | 14dda623c8db5f991b8a22dce4f19f8d8b47fea2 (diff) | |
download | frameworks_av-0ebc0bfbdfeedd9dac023e60524a71af67d0796d.zip frameworks_av-0ebc0bfbdfeedd9dac023e60524a71af67d0796d.tar.gz frameworks_av-0ebc0bfbdfeedd9dac023e60524a71af67d0796d.tar.bz2 |
am 14dda623: am 7013209c: Merge "Handle large AVCC chunks"
* commit '14dda623c8db5f991b8a22dce4f19f8d8b47fea2':
Handle large AVCC chunks
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/MPEG4Extractor.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp index cc71d4c..b2afec7 100644 --- a/media/libstagefright/MPEG4Extractor.cpp +++ b/media/libstagefright/MPEG4Extractor.cpp @@ -30,6 +30,7 @@ #include <string.h> #include <media/stagefright/foundation/ABitReader.h> +#include <media/stagefright/foundation/ABuffer.h> #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/DataSource.h> @@ -1221,18 +1222,15 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { case FOURCC('a', 'v', 'c', 'C'): { - char buffer[256]; - if (chunk_data_size > (off64_t)sizeof(buffer)) { - return ERROR_BUFFER_TOO_SMALL; - } + sp<ABuffer> buffer = new ABuffer(chunk_data_size); if (mDataSource->readAt( - data_offset, buffer, chunk_data_size) < chunk_data_size) { + data_offset, buffer->data(), chunk_data_size) < chunk_data_size) { return ERROR_IO; } mLastTrack->meta->setData( - kKeyAVCC, kTypeAVCC, buffer, chunk_data_size); + kKeyAVCC, kTypeAVCC, buffer->data(), chunk_data_size); *offset += chunk_size; break; |