diff options
Diffstat (limited to 'videocodec/OMXVideoEncoderMPEG4.cpp')
| -rw-r--r-- | videocodec/OMXVideoEncoderMPEG4.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/videocodec/OMXVideoEncoderMPEG4.cpp b/videocodec/OMXVideoEncoderMPEG4.cpp index ac0225d..d9273f4 100644 --- a/videocodec/OMXVideoEncoderMPEG4.cpp +++ b/videocodec/OMXVideoEncoderMPEG4.cpp @@ -105,6 +105,9 @@ OMX_ERRORTYPE OMXVideoEncoderMPEG4::ProcessorProcess( inBuf.data = buffers[INPORT_INDEX]->pBuffer + buffers[INPORT_INDEX]->nOffset; inBuf.size = buffers[INPORT_INDEX]->nFilledLen; + if (bAndroidOpaqueFormat) { + mCurHandle = rgba2nv12conversion(buffers[INPORT_INDEX]); + } LOGV("inBuf.data=%x, size=%d", (unsigned)inBuf.data, inBuf.size); @@ -222,6 +225,14 @@ out: if (retains[OUTPORT_INDEX] == BUFFER_RETAIN_NOT_RETAIN) mFrameOutputCount ++; + if (bAndroidOpaqueFormat && buffers[INPORT_INDEX]->nFilledLen != 0) { + // Restore input buffer's content + buffers[INPORT_INDEX]->nFilledLen = 4 + sizeof(buffer_handle_t); + memcpy(buffers[INPORT_INDEX]->pBuffer, mBufferHandleMaps[mCurHandle].backBuffer, + buffers[INPORT_INDEX]->nFilledLen); + + } + return oret; } |
