diff options
| author | Chang Ying <ying.chang@intel.com> | 2012-09-12 16:21:51 +0800 |
|---|---|---|
| committer | Patrick Tjin <pattjin@google.com> | 2014-07-21 22:02:48 -0700 |
| commit | 28516617d7c679a9d1c4d1a5a29af157eb25cc29 (patch) | |
| tree | fba2aff4bc1bb899fb872247d1f1ab7343e25f7f /videocodec/OMXVideoEncoderMPEG4.cpp | |
| parent | 124cae864848ce34be2113421ca73194802fb029 (diff) | |
| download | android_hardware_intel_common_omx-components-28516617d7c679a9d1c4d1a5a29af157eb25cc29.tar.gz android_hardware_intel_common_omx-components-28516617d7c679a9d1c4d1a5a29af157eb25cc29.tar.bz2 android_hardware_intel_common_omx-components-28516617d7c679a9d1c4d1a5a29af157eb25cc29.zip | |
AVCE: Add AndroidOpaque input color format support
BZ: 34659
Briefly, this implies that encoder can use texture object as
source buffer. On our platform texture object is represented as
buffer_handle_t and in RGB color format, however encoder only supports
YUV color space, so a color space conversion is needed.
Change-Id: Iad91a911184e0c6e66576b3c0bd402f1636b933f
Signed-off-by: Chang Ying <ying.chang@intel.com>
Reviewed-on: http://android.intel.com:8080/66722
Reviewed-by: Jiang, Fei <fei.jiang@intel.com>
Reviewed-by: Shi, PingX <pingx.shi@intel.com>
Tested-by: Shi, PingX <pingx.shi@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
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; } |
