aboutsummaryrefslogtreecommitdiffstats
path: root/videocodec
diff options
context:
space:
mode:
Diffstat (limited to 'videocodec')
-rwxr-xr-xvideocodec/OMXVideoEncoderAVC.cpp40
-rw-r--r--videocodec/OMXVideoEncoderAVC.h2
-rwxr-xr-xvideocodec/OMXVideoEncoderBase.cpp5
3 files changed, 12 insertions, 35 deletions
diff --git a/videocodec/OMXVideoEncoderAVC.cpp b/videocodec/OMXVideoEncoderAVC.cpp
index 91b68e4..5cf19e7 100755
--- a/videocodec/OMXVideoEncoderAVC.cpp
+++ b/videocodec/OMXVideoEncoderAVC.cpp
@@ -113,7 +113,6 @@ OMXVideoEncoderAVC::OMXVideoEncoderAVC() {
}
}
- mSourceType = IntelMetadataBufferTypeCameraSource;
}
OMXVideoEncoderAVC::~OMXVideoEncoderAVC() {
@@ -294,24 +293,6 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::ProcessorPreEmptyBuffer(OMX_BUFFERHEADERTYPE*
bool BFrameEnabled = IpPeriod > 1;
uint32_t GOP = 0;
- //extract SourceType from first frame in MetadataMode
- if (mStoreMetaDataInBuffers && (mInputPictureCount == 0)) {
- uint8_t* bytes = buffer->pBuffer + buffer->nOffset;
- uint32_t size = buffer->nFilledLen;
-
- IntelMetadataBuffer* buf = NULL;
- if ((buf = new IntelMetadataBuffer()) == NULL)
- return OMX_ErrorUndefined;
-
- if (buf->UnSerialize(bytes, size) == IMB_SUCCESS) {
- buf->GetType(mSourceType);
- delete buf;
- }else{
- delete buf;
- return OMX_ErrorUndefined;
- }
- }
-
if (idrPeriod == 0 || IntraPeriod == 0) {
GOP = 0xFFFFFFFF;
if (IntraPeriod == 0)
@@ -425,25 +406,18 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::ProcessDataRetrieve(
// NaluFormat not set, setting default
if (NaluFormat == 0) {
- if (mStoreMetaDataInBuffers) {
- if(mSourceType == IntelMetadataBufferTypeCameraSource)
- NaluFormat = (OMX_NALUFORMATSTYPE)OMX_NaluFormatLengthPrefixedSeparateFirstHeader;
- else
- NaluFormat = (OMX_NALUFORMATSTYPE)OMX_NaluFormatStartCodesSeparateFirstHeader;
-
- } else {
- NaluFormat = (OMX_NALUFORMATSTYPE)OMX_NaluFormatStartCodesSeparateFirstHeader;
- }
+ NaluFormat = (OMX_NALUFORMATSTYPE)OMX_NaluFormatStartCodesSeparateFirstHeader;
mNalStreamFormat.eNaluFormat = NaluFormat;
}
VideoEncOutputBuffer outBuf;
- outBuf.data = buffers[OUTPORT_INDEX]->pBuffer + buffers[OUTPORT_INDEX]->nOffset;
- outBuf.bufferSize = buffers[OUTPORT_INDEX]->nAllocLen - buffers[OUTPORT_INDEX]->nOffset;
+ outBuf.data = buffers[OUTPORT_INDEX]->pBuffer;
+ outBuf.bufferSize = buffers[OUTPORT_INDEX]->nAllocLen;
outBuf.dataSize = 0;
outBuf.remainingSize = 0;
outBuf.flag = 0;
outBuf.timeStamp = 0;
+ outBuf.offset = 0;
switch (NaluFormat) {
case OMX_NaluFormatStartCodes:
@@ -461,7 +435,7 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::ProcessDataRetrieve(
outBuf.format = OUTPUT_CODEC_DATA;
} else {
if (NaluFormat == OMX_NaluFormatStartCodesSeparateFirstHeader)
- outBuf.format = OUTPUT_EVERYTHING;
+ outBuf.format = OUTPUT_NALULENGTHS_PREFIXED;
else
outBuf.format = OUTPUT_LENGTH_PREFIXED;
}
@@ -485,6 +459,7 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::ProcessDataRetrieve(
LOGV("libMIX getOutput data size= %d, flag=0x%08x", outBuf.dataSize, outBuf.flag);
OMX_U32 outfilledlen = outBuf.dataSize;
+ OMX_U32 outoffset = outBuf.offset;
OMX_S64 outtimestamp = outBuf.timeStamp;
OMX_U32 outflags = 0;
@@ -506,7 +481,7 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::ProcessDataRetrieve(
outflags |= OMX_BUFFERFLAG_ENDOFFRAME;
if ((NaluFormat == OMX_NaluFormatStartCodesSeparateFirstHeader
- || NaluFormat == OMX_NaluFormatLengthPrefixedSeparateFirstHeader ) && mFirstFrame ) {
+ || NaluFormat == OMX_NaluFormatLengthPrefixedSeparateFirstHeader) && mFirstFrame ) {
// This input buffer need to be gotten again
retains[INPORT_INDEX] = BUFFER_RETAIN_GETAGAIN;
mFirstFrame = OMX_FALSE;
@@ -529,6 +504,7 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::ProcessDataRetrieve(
if (outfilledlen > 0) {
retains[OUTPORT_INDEX] = BUFFER_RETAIN_NOT_RETAIN;
+ buffers[OUTPORT_INDEX]->nOffset = outoffset;
buffers[OUTPORT_INDEX]->nFilledLen = outfilledlen;
buffers[OUTPORT_INDEX]->nTimeStamp = outtimestamp;
buffers[OUTPORT_INDEX]->nFlags = outflags;
diff --git a/videocodec/OMXVideoEncoderAVC.h b/videocodec/OMXVideoEncoderAVC.h
index dbcd30c..17308e3 100644
--- a/videocodec/OMXVideoEncoderAVC.h
+++ b/videocodec/OMXVideoEncoderAVC.h
@@ -100,6 +100,7 @@ protected:
DECLARE_HANDLER(OMXVideoEncoderAVC, ConfigIntelSliceNumbers);
DECLARE_HANDLER(OMXVideoEncoderAVC, ParamVideoProfileLevelQuerySupported);
+
private:
enum {
// OMX_PARAM_PORTDEFINITIONTYPE
@@ -140,7 +141,6 @@ private:
ProfileLevelTable mPLTable[MAX_H264_PROFILE];
OMX_U32 mPLTableCount;
- IntelMetadataBufferType mSourceType;
};
#endif /* OMX_VIDEO_ENCODER_AVC_H_ */
diff --git a/videocodec/OMXVideoEncoderBase.cpp b/videocodec/OMXVideoEncoderBase.cpp
index 0960e0c..0885e1e 100755
--- a/videocodec/OMXVideoEncoderBase.cpp
+++ b/videocodec/OMXVideoEncoderBase.cpp
@@ -361,8 +361,9 @@ OMX_ERRORTYPE OMXVideoEncoderBase::ProcessorInit(void) {
ret = SetVideoEncoderParam();
CHECK_STATUS("SetVideoEncoderParam");
- if (mVideoEncoder->start() != ENCODE_SUCCESS) {
- LOGE("Start failed, ret = 0x%08x\n", ret);
+ Encode_Status status = mVideoEncoder->start();
+ if (status != ENCODE_SUCCESS) {
+ LOGE("Start failed, status = 0x%08x\n", status);
return OMX_ErrorUndefined;
}