From 0029faf8f4efbca3844c4174b75d46c432f8f272 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Wed, 9 Nov 2011 10:03:07 -0800 Subject: Don't believe the PV decoder's lies... Change-Id: I97391235255afb8a4890a4ff52d4e8e9ca954f27 --- media/libstagefright/codecs/m4v_h263/dec/SoftMPEG4.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'media/libstagefright/codecs/m4v_h263/dec/SoftMPEG4.cpp') diff --git a/media/libstagefright/codecs/m4v_h263/dec/SoftMPEG4.cpp b/media/libstagefright/codecs/m4v_h263/dec/SoftMPEG4.cpp index ddced5f..aa07e57 100644 --- a/media/libstagefright/codecs/m4v_h263/dec/SoftMPEG4.cpp +++ b/media/libstagefright/codecs/m4v_h263/dec/SoftMPEG4.cpp @@ -421,8 +421,13 @@ void SoftMPEG4::onQueueFilled(OMX_U32 portIndex) { int32_t bufferSize = inHeader->nFilledLen; + // The PV decoder is lying to us, sometimes it'll claim to only have + // consumed a subset of the buffer when it clearly consumed all of it. + // ignore whatever it says... + int32_t tmp = bufferSize; + if (PVDecodeVideoFrame( - mHandle, &bitstream, ×tamp, &bufferSize, + mHandle, &bitstream, ×tamp, &tmp, &useExtTimestamp, outHeader->pBuffer) != PV_TRUE) { LOGE("failed to decode video frame."); -- cgit v1.1