diff options
author | Andreas Huber <andih@google.com> | 2010-01-04 14:48:21 -0800 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2010-01-04 14:51:01 -0800 |
commit | 6be8b14e25718372e37bf9f1e09db37215db666e (patch) | |
tree | 9174a6fe9ee5fb242b25e6239852ab99eec19420 /media/libstagefright/codecs/avc | |
parent | 3bf657a22bc46f06a9b73d2c5d256f48205849d6 (diff) | |
download | frameworks_base-6be8b14e25718372e37bf9f1e09db37215db666e.zip frameworks_base-6be8b14e25718372e37bf9f1e09db37215db666e.tar.gz frameworks_base-6be8b14e25718372e37bf9f1e09db37215db666e.tar.bz2 |
Fix avc software decoder to properly handle SEI nalType and access unit delimiter.
Diffstat (limited to 'media/libstagefright/codecs/avc')
-rw-r--r-- | media/libstagefright/codecs/avc/dec/AVCDecoder.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/media/libstagefright/codecs/avc/dec/AVCDecoder.cpp b/media/libstagefright/codecs/avc/dec/AVCDecoder.cpp index 484c742..22e6188 100644 --- a/media/libstagefright/codecs/avc/dec/AVCDecoder.cpp +++ b/media/libstagefright/codecs/avc/dec/AVCDecoder.cpp @@ -262,6 +262,8 @@ status_t AVCDecoder::read( &nalType, &nalRefIdc); if (res != AVCDEC_SUCCESS) { + LOGE("cannot determine nal type"); + mInputBuffer->release(); mInputBuffer = NULL; @@ -375,18 +377,19 @@ status_t AVCDecoder::read( mInputBuffer->release(); mInputBuffer = NULL; - if (res == AVCDEC_PICTURE_READY) { + if (res == AVCDEC_PICTURE_READY || res == AVCDEC_SUCCESS) { *out = new MediaBuffer(0); return OK; } else { + LOGE("failed to decode frame (res = %d)", res); return UNKNOWN_ERROR; } } case AVC_NALTYPE_SEI: { - res = PVAVCDecodeSlice( + res = PVAVCDecSEI( mHandle, const_cast<uint8_t *>(inPtr), mInputBuffer->range_length()); @@ -404,6 +407,9 @@ status_t AVCDecoder::read( case AVC_NALTYPE_AUD: { + mInputBuffer->release(); + mInputBuffer = NULL; + *out = new MediaBuffer(0); return OK; |