]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/gst-plugin-ducati.git/blobdiff - src/gstducatih264enc.c
ducatih264enc: fix B frames being disabled
[glsdk/gst-plugin-ducati.git] / src / gstducatih264enc.c
index e094a1b10930889b04f7792b015b42d62e5966a2..4df4516a1ebc4e20b862bf5998318210edf00064 100644 (file)
@@ -590,6 +590,12 @@ gst_ducati_h264enc_configure (GstDucatiVidEnc * videnc)
   IH264ENC_DynamicParams *dynParams;
   gboolean ret;
   const char *s;
+  const GstVideoState *state;
+  GstCaps *caps;
+
+  ret = GST_DUCATIVIDENC_CLASS (parent_class)->configure (videnc);
+  if (!ret)
+    return FALSE;
 
   videnc->params->profile = self->profile;
   videnc->params->level = self->level;
@@ -612,27 +618,23 @@ gst_ducati_h264enc_configure (GstDucatiVidEnc * videnc)
   dynParams->rateControlParams.qpMinI = self->qp_min_i;
   dynParams->rateControlParams.HRDBufferSize = self->hrd_buffer_size;
   dynParams->sliceCodingParams.sliceMode = self->slice_mode;
-
-  ret = GST_DUCATIVIDENC_CLASS (parent_class)->configure (videnc);
-  if (ret) {
-    const GstVideoState *state =
-        gst_base_video_encoder_get_state (GST_BASE_VIDEO_ENCODER (videnc));
-    GstCaps *caps = gst_caps_new_simple ("video/x-h264",
-        "width", G_TYPE_INT, videnc->rect.w,
-        "height", G_TYPE_INT, videnc->rect.h,
-        "framerate", GST_TYPE_FRACTION, state->fps_n, state->fps_d,
-        "pixel-aspect-ratio", GST_TYPE_FRACTION, state->par_n, state->par_d,
-        "stream-format", G_TYPE_STRING, "byte-stream",
-        "align", G_TYPE_STRING, "au",
-        NULL);
-    s = get_profile_name (self->profile);
-    if (s)
-      gst_caps_set_simple (caps, "profile", G_TYPE_STRING, s, NULL);
-    s = get_level_name (self->level);
-    if (s)
-      gst_caps_set_simple (caps, "level", G_TYPE_STRING, s, NULL);
-    ret = gst_pad_set_caps (GST_BASE_VIDEO_CODEC_SRC_PAD (self), caps);
-  }
+  videnc->dynParams->interFrameInterval = self->inter_interval;
+
+  state = gst_base_video_encoder_get_state (GST_BASE_VIDEO_ENCODER (videnc));
+  caps = gst_caps_new_simple ("video/x-h264",
+      "width", G_TYPE_INT, videnc->rect.w,
+      "height", G_TYPE_INT, videnc->rect.h,
+      "framerate", GST_TYPE_FRACTION, state->fps_n, state->fps_d,
+      "pixel-aspect-ratio", GST_TYPE_FRACTION, state->par_n, state->par_d,
+      "stream-format", G_TYPE_STRING, "byte-stream",
+      "align", G_TYPE_STRING, "au", NULL);
+  s = get_profile_name (self->profile);
+  if (s)
+    gst_caps_set_simple (caps, "profile", G_TYPE_STRING, s, NULL);
+  s = get_level_name (self->level);
+  if (s)
+    gst_caps_set_simple (caps, "level", G_TYPE_STRING, s, NULL);
+  ret = gst_pad_set_caps (GST_BASE_VIDEO_CODEC_SRC_PAD (self), caps);
 
   return ret;
 }