summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/avc
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-01-04 14:48:21 -0800
committerAndreas Huber <andih@google.com>2010-01-04 14:51:01 -0800
commit6be8b14e25718372e37bf9f1e09db37215db666e (patch)
tree9174a6fe9ee5fb242b25e6239852ab99eec19420 /media/libstagefright/codecs/avc
parent3bf657a22bc46f06a9b73d2c5d256f48205849d6 (diff)
downloadframeworks_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.cpp10
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;