diff options
author | Alessandro Decina <alessandro.decina@collabora.co.uk> | 2011-10-19 16:16:06 +0200 |
---|---|---|
committer | Alessandro Decina <alessandro.decina@collabora.co.uk> | 2011-10-19 16:16:06 +0200 |
commit | 031257bc8acd79f37e691d8f9aef9a8be933d0eb (patch) | |
tree | d604a523847dd47b582572b4b9f20f9f33b22c6c | |
parent | dfef372881283ab0106668e7a912100b975bbbe2 (diff) |
ducatih264enc: use base VIDENC2 structures where possible
-rw-r--r-- | src/gstducatih264enc.c | 78 | ||||
-rw-r--r-- | src/gstducatih264enc.h | 4 |
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; |