basevideoencoder: Remove ::get_caps() vfunc
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 12 Aug 2011 10:06:23 +0000 (12:06 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 12 Aug 2011 10:30:07 +0000 (12:30 +0200)
Subclasses can set the caps more efficiently and this only
caused additional indirections.

omx/gstbasevideoencoder.c
omx/gstbasevideoencoder.h

index e4efe6d..7e96e1f 100644 (file)
@@ -91,7 +91,7 @@
  * <itemizedlist>
  *   <listitem><para>Provide pad templates</para></listitem>
  *   <listitem><para>
- *      Provide source pad caps in @get_caps.
+ *      Provide source pad caps before pushing the first buffer
  *   </para></listitem>
  *   <listitem><para>
  *      Accept data in @handle_frame and provide encoded results to
@@ -179,7 +179,6 @@ gst_base_video_encoder_reset (GstBaseVideoEncoder * base_video_encoder)
   base_video_encoder->distance_from_sync = 0;
   base_video_encoder->force_keyframe = FALSE;
 
-  base_video_encoder->set_output_caps = FALSE;
   base_video_encoder->drained = TRUE;
   base_video_encoder->min_latency = 0;
   base_video_encoder->max_latency = 0;
@@ -761,27 +760,6 @@ gst_base_video_encoder_finish_frame (GstBaseVideoEncoder * base_video_encoder,
   GST_LOG_OBJECT (base_video_encoder,
       "finish frame fpn %d", frame->presentation_frame_number);
 
-  /* FIXME get rid of this ?
-   * seems a roundabout way that adds little benefit to simply get
-   * and subsequently set.  subclass is adult enough to set_caps itself ...
-   * so simply check/ensure/assert that src pad caps are set by now */
-  if (!base_video_encoder->set_output_caps) {
-    if (!GST_PAD_CAPS (GST_BASE_VIDEO_CODEC_SRC_PAD (base_video_encoder))) {
-      GstCaps *caps;
-
-      if (base_video_encoder_class->get_caps) {
-        caps = base_video_encoder_class->get_caps (base_video_encoder);
-      } else {
-        caps = gst_caps_new_simple ("video/unknown", NULL);
-      }
-      GST_DEBUG_OBJECT (base_video_encoder, "src caps %" GST_PTR_FORMAT, caps);
-      gst_pad_set_caps (GST_BASE_VIDEO_CODEC_SRC_PAD (base_video_encoder),
-          caps);
-      gst_caps_unref (caps);
-    }
-    base_video_encoder->set_output_caps = TRUE;
-  }
-
   /* Push all pending events that arrived before this frame */
   for (l = base_video_encoder->base_video_codec.frames; l; l = l->next) {
     GstVideoFrame *tmp = l->data;
index 76db3be..7466c47 100644 (file)
@@ -89,7 +89,6 @@ struct _GstBaseVideoEncoder
   /*< private >*/
   /* FIXME move to real private part ?
    * (and introduce a context ?) */
-  gboolean          set_output_caps;
   gboolean          drained;
 
   gint64            min_latency;
@@ -164,8 +163,6 @@ struct _GstBaseVideoEncoderClass
   gboolean      (*event)              (GstBaseVideoEncoder *coder,
                                        GstEvent *event);
 
-  GstCaps *     (*get_caps)           (GstBaseVideoEncoder *coder);
-
   /*< private >*/
   /* FIXME before moving to base */
   gpointer       _gst_reserved[GST_PADDING_LARGE];