diff options
Diffstat (limited to 'videocodec/OMXVideoEncoderH263.cpp')
| -rw-r--r-- | videocodec/OMXVideoEncoderH263.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/videocodec/OMXVideoEncoderH263.cpp b/videocodec/OMXVideoEncoderH263.cpp index dbc5861..15572a4 100644 --- a/videocodec/OMXVideoEncoderH263.cpp +++ b/videocodec/OMXVideoEncoderH263.cpp @@ -108,6 +108,10 @@ OMX_ERRORTYPE OMXVideoEncoderH263::ProcessorProcess( goto out; } + if (bAndroidOpaqueFormat) { + mCurHandle = rgba2nv12conversion(buffers[INPORT_INDEX]); + } + inBuf.data = buffers[INPORT_INDEX]->pBuffer + buffers[INPORT_INDEX]->nOffset; inBuf.size = buffers[INPORT_INDEX]->nFilledLen; @@ -215,6 +219,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); + + } + LOGV_IF(oret == OMX_ErrorNone, "%s(),%d: exit, encode is done\n", __func__, __LINE__); return oret; |
