summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Decina <alessandro.decina@collabora.co.uk>2011-10-19 16:16:06 +0200
committerAlessandro Decina <alessandro.decina@collabora.co.uk>2011-10-19 16:16:06 +0200
commit031257bc8acd79f37e691d8f9aef9a8be933d0eb (patch)
treed604a523847dd47b582572b4b9f20f9f33b22c6c
parentdfef372881283ab0106668e7a912100b975bbbe2 (diff)
ducatih264enc: use base VIDENC2 structures where possible
-rw-r--r--src/gstducatih264enc.c78
-rw-r--r--src/gstducatih264enc.h4
2 files changed, 36 insertions, 46 deletions
diff --git a/src/gstducatih264enc.c b/src/gstducatih264enc.c
index d1f226d..7fbdccb 100644
--- a/src/gstducatih264enc.c
+++ b/src/gstducatih264enc.c
@@ -361,10 +361,9 @@ static gboolean
gst_ducati_h264enc_configure (GstDucatiH264Enc * self)
{
int err, i, max_out_size = 0;
- VIDENC2_DynamicParams *baseDynParams;
+ VIDENC2_DynamicParams *dynParams;
VIDENC2_Params *baseParams;
IH264ENC_Params *params;
- IH264ENC_DynamicParams *dynParams;
const GstVideoState *state;
state = gst_base_video_encoder_get_state (GST_BASE_VIDEO_ENCODER (self));
@@ -392,12 +391,7 @@ gst_ducati_h264enc_configure (GstDucatiH264Enc * self)
baseParams->metadataType[i] = IVIDEO_METADATAPLANE_NONE;
}
- params->rateControlParams.rateControlParamsPreset =
- IH264_RATECONTROLPARAMS_DEFAULT;
- params->interCodingParams.interCodingPreset = IH264_INTERCODING_DEFAULT;
- params->intraCodingParams.intraCodingPreset = IH264_INTRACODING_DEFAULT;
- params->nalUnitControlParams.naluControlPreset = IH264_NALU_CONTROL_DEFAULT;
- params->fmoCodingParams.fmoCodingPreset = IH264_FMOCODING_DEFAULT;
+ /* this is the only non-base field strictly required */
params->maxIntraFrameInterval = 0x7fffffff;
if (self->codec == NULL) {
@@ -410,44 +404,40 @@ gst_ducati_h264enc_configure (GstDucatiH264Enc * self)
}
dynParams = self->dynParams;
- baseDynParams = (VIDENC2_DynamicParams *) self->dynParams;
- baseDynParams->size = sizeof (IH264ENC_DynamicParams);
- baseDynParams = &dynParams->videnc2DynamicParams;
+ dynParams = (VIDENC2_DynamicParams *) self->dynParams;
+ dynParams->size = sizeof (IVIDENC2_DynamicParams);
- baseDynParams->refFrameRate =
+ dynParams->refFrameRate =
gst_util_uint64_scale (1000, state->fps_n, state->fps_d);
- baseDynParams->targetFrameRate = baseDynParams->refFrameRate;
- baseDynParams->inputWidth = state->width;
- baseDynParams->inputHeight = state->height;
- baseDynParams->targetBitRate = self->bitrate;
- baseDynParams->intraFrameInterval = 15;
- baseDynParams->captureWidth = baseDynParams->inputWidth;
- baseDynParams->forceFrame = IVIDEO_NA_FRAME;
- baseDynParams->interFrameInterval = 1;
- baseDynParams->mvAccuracy = IVIDENC2_MOTIONVECTOR_QUARTERPEL;
- baseDynParams->sampleAspectRatioHeight = 1;
- baseDynParams->sampleAspectRatioWidth = 1;
- baseDynParams->generateHeader = XDM_ENCODE_AU;
- baseDynParams->ignoreOutbufSizeFlag = 1;
- baseDynParams->lateAcquireArg = -1;
-
- dynParams->rateControlParams.rateControlParamsPreset = 2;
- dynParams->interCodingParams.interCodingPreset = 2;
+ dynParams->targetFrameRate = dynParams->refFrameRate;
+ dynParams->inputWidth = state->width;
+ dynParams->inputHeight = state->height;
+ dynParams->targetBitRate = self->bitrate;
+ dynParams->intraFrameInterval = 15;
+ dynParams->captureWidth = dynParams->inputWidth;
+ dynParams->forceFrame = IVIDEO_NA_FRAME;
+ dynParams->interFrameInterval = 1;
+ dynParams->mvAccuracy = IVIDENC2_MOTIONVECTOR_QUARTERPEL;
+ dynParams->sampleAspectRatioHeight = 1;
+ dynParams->sampleAspectRatioWidth = 1;
+ dynParams->generateHeader = XDM_ENCODE_AU;
+ dynParams->ignoreOutbufSizeFlag = 1;
+ dynParams->lateAcquireArg = -1;
err = VIDENC2_control (self->codec,
- XDM_SETPARAMS, baseDynParams, (IVIDENC2_Status *) self->status);
+ XDM_SETPARAMS, dynParams, self->status);
if (err) {
GST_ERROR_OBJECT (self, "XDM_SETPARAMS err=%d, extendedError=%08x",
- err, self->status->videnc2Status.extendedError);
+ err, self->status->extendedError);
return FALSE;
}
err = VIDENC2_control (self->codec,
- XDM_GETBUFINFO, baseDynParams, (IVIDENC2_Status *) self->status);
+ XDM_GETBUFINFO, dynParams, self->status);
if (err) {
GST_ERROR_OBJECT (self, "XDM_GETBUFINFO err=%d, extendedError=%08x",
- err, self->status->videnc2Status.extendedError);
+ err, self->status->extendedError);
return FALSE;
}
@@ -455,9 +445,9 @@ gst_ducati_h264enc_configure (GstDucatiH264Enc * self)
self->inBufs->chromaFormat = XDM_YUV_420SP;
self->inBufs->numPlanes = 2;
- self->outBufs->numBufs = self->status->videnc2Status.bufInfo.minNumOutBufs;
+ self->outBufs->numBufs = self->status->bufInfo.minNumOutBufs;
for (i = 0; i < self->outBufs->numBufs; i++) {
- int size = self->status->videnc2Status.bufInfo.minOutBufSize[i].bytes;
+ int size = self->status->bufInfo.minOutBufSize[i].bytes;
if (size > max_out_size)
max_out_size = size;
}
@@ -493,13 +483,13 @@ gst_ducati_h264enc_alloc_dce (GstDucatiH264Enc * self)
self->codec = NULL;
- self->dynParams = dce_alloc (sizeof (IH264ENC_DynamicParams));
- memset (self->dynParams, 0, sizeof (IH264ENC_DynamicParams));
- self->dynParams->videnc2DynamicParams.size = sizeof (IH264ENC_DynamicParams);
+ self->dynParams = dce_alloc (sizeof (IVIDENC2_DynamicParams));
+ memset (self->dynParams, 0, sizeof (IVIDENC2_DynamicParams));
+ self->dynParams->size = sizeof (IVIDENC2_DynamicParams);
- self->status = dce_alloc (sizeof (IH264ENC_Status));
- memset (self->status, 0, sizeof (IH264ENC_Status));
- self->status->videnc2Status.size = sizeof (IH264ENC_Status);
+ self->status = dce_alloc (sizeof (IVIDENC2_Status));
+ memset (self->status, 0, sizeof (IVIDENC2_Status));
+ self->status->size = sizeof (IVIDENC2_Status);
self->inBufs = dce_alloc (sizeof (IVIDEO2_BufDesc));
memset (self->inBufs, 0, sizeof (IVIDEO2_BufDesc));
@@ -679,14 +669,14 @@ gst_ducati_h264enc_handle_frame (GstBaseVideoEncoder * base_video_encoder,
self->inArgs, self->outArgs);
if (err) {
GST_WARNING_OBJECT (self, "process failed: err=%d, extendedError=%08x",
- err, self->status->videnc2Status.extendedError);
+ err, self->status->extendedError);
err = VIDENC2_control (self->codec,
XDM_GETSTATUS, (IVIDENC2_DynamicParams *) self->dynParams,
- (IVIDENC2_Status *) self->status);
+ self->status);
GST_WARNING_OBJECT (self, "XDM_GETSTATUS: err=%d, extendedError=%08x",
- err, self->status->videnc2Status.extendedError);
+ err, self->status->extendedError);
return GST_FLOW_ERROR;
}
diff --git a/src/gstducatih264enc.h b/src/gstducatih264enc.h
index 0e03f71..84d445f 100644
--- a/src/gstducatih264enc.h
+++ b/src/gstducatih264enc.h
@@ -54,8 +54,8 @@ struct _GstDucatiH264Enc
Engine_Handle engine;
VIDENC2_Handle codec;
IH264ENC_Params *params;
- IH264ENC_DynamicParams *dynParams;
- IH264ENC_Status *status;
+ IVIDENC2_DynamicParams *dynParams;
+ IVIDENC2_Status *status;
IVIDEO2_BufDesc *inBufs;
XDM2_BufDesc *outBufs;
IVIDENC2_InArgs *inArgs;