summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2013-10-29 22:39:25 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2013-10-29 22:39:25 +0000
commit96aed4fb18e5303b039cc7e5dc252e0827491d09 (patch)
treef66c9466cc3646d013b4ffbc28bf27b5943d65f2
parentd5255d1de125d15afae6cfc35701a5255b5e2933 (diff)
parent67606c31f41959589d46fbd9e845a2974a48e505 (diff)
downloadframeworks_av-96aed4fb18e5303b039cc7e5dc252e0827491d09.zip
frameworks_av-96aed4fb18e5303b039cc7e5dc252e0827491d09.tar.gz
frameworks_av-96aed4fb18e5303b039cc7e5dc252e0827491d09.tar.bz2
Merge "avcenc: Prepend startcodes to output buffers"
-rw-r--r--media/libstagefright/codecs/avc/enc/SoftAVCEncoder.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/media/libstagefright/codecs/avc/enc/SoftAVCEncoder.cpp b/media/libstagefright/codecs/avc/enc/SoftAVCEncoder.cpp
index 1d66120..4a21a3e 100644
--- a/media/libstagefright/codecs/avc/enc/SoftAVCEncoder.cpp
+++ b/media/libstagefright/codecs/avc/enc/SoftAVCEncoder.cpp
@@ -871,7 +871,13 @@ void SoftAVCEncoder::onQueueFilled(OMX_U32 portIndex) {
CHECK(encoderStatus == AVCENC_SUCCESS || encoderStatus == AVCENC_NEW_IDR);
dataLength = outHeader->nAllocLen; // Reset the output buffer length
if (inHeader->nFilledLen > 0) {
+ if (outHeader->nAllocLen >= 4) {
+ memcpy(outPtr, "\x00\x00\x00\x01", 4);
+ outPtr += 4;
+ dataLength -= 4;
+ }
encoderStatus = PVAVCEncodeNAL(mHandle, outPtr, &dataLength, &type);
+ dataLength = outPtr + dataLength - outHeader->pBuffer;
if (encoderStatus == AVCENC_SUCCESS) {
CHECK(NULL == PVAVCEncGetOverrunBuffer(mHandle));
} else if (encoderStatus == AVCENC_PICTURE_READY) {