rtp: Update codes based on 1.18.4
[platform/upstream/gst-plugins-good.git] / gst / rtp / gstrtph263ppay.c
index 9c09ad0..6bb9e4a 100644 (file)
@@ -139,10 +139,10 @@ gst_rtp_h263p_pay_class_init (GstRtpH263PPayClass * klass)
           DEFAULT_FRAGMENTATION_MODE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rtp_h263p_pay_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rtp_h263p_pay_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_rtp_h263p_pay_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_rtp_h263p_pay_sink_template);
 
   gst_element_class_set_static_metadata (gstelement_class, "RTP H263 payloader",
       "Codec/Payloader/Network/RTP",
@@ -151,6 +151,10 @@ gst_rtp_h263p_pay_class_init (GstRtpH263PPayClass * klass)
 
   GST_DEBUG_CATEGORY_INIT (rtph263ppay_debug, "rtph263ppay",
       0, "rtph263ppay (RFC 4629)");
+
+#ifndef TIZEN_FEATURE_GST_UPSTREAM_AVOID_BUILD_BREAK
+  gst_type_mark_as_plugin_api (GST_TYPE_FRAGMENTATION_MODE, 0);
+#endif
 }
 
 static void
@@ -254,8 +258,9 @@ gst_rtp_h263p_pay_sink_getcaps (GstRTPBasePayload * payload, GstPad * pad,
   if (!peercaps || gst_caps_is_any (peercaps)) {
     if (peercaps)
       gst_caps_unref (peercaps);
-    return
+    caps =
         gst_pad_get_pad_template_caps (GST_RTP_BASE_PAYLOAD_SINKPAD (payload));
+    goto done;
   }
 
   /* We basically need to differentiate two use-cases here: One where there's
@@ -264,9 +269,12 @@ gst_rtp_h263p_pay_sink_getcaps (GstRTPBasePayload * payload, GstPad * pad,
    * we want it to produce. The second case is simply payloader ! depayloader
    * where we are dealing with the depayloader's template caps. In this case
    * we should accept any input compatible with our sink template caps. */
-  if (!gst_caps_is_fixed (peercaps))
-    return
+  if (!gst_caps_is_fixed (peercaps)) {
+    gst_caps_unref (peercaps);
+    caps =
         gst_pad_get_pad_template_caps (GST_RTP_BASE_PAYLOAD_SINKPAD (payload));
+    goto done;
+  }
 
   templ = gst_pad_get_pad_template_caps (GST_RTP_BASE_PAYLOAD_SRCPAD (payload));
   intersect = gst_caps_intersect (peercaps, templ);
@@ -601,6 +609,18 @@ gst_rtp_h263p_pay_sink_getcaps (GstRTPBasePayload * payload, GstPad * pad,
 
   gst_caps_unref (intersect);
 
+done:
+
+  if (filter) {
+    GstCaps *tmp;
+
+    GST_DEBUG_OBJECT (payload, "Intersect %" GST_PTR_FORMAT " and filter %"
+        GST_PTR_FORMAT, caps, filter);
+    tmp = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (caps);
+    caps = tmp;
+  }
+
   return caps;
 }
 
@@ -664,7 +684,7 @@ gst_rtp_h263p_pay_flush (GstRtpH263PPay * rtph263ppay)
    *  This algorithm separates large frames at synchronisation points (Segments)
    *  (See RFC 4629 section 6). It would be interesting to have a property such as network
    *  quality to select between both packetization methods */
-  /* TODO Add VRC supprt (See RFC 4629 section 5.2) */
+  /* TODO Add VRC support (See RFC 4629 section 5.2) */
 
   while (avail > 0) {
     guint towrite;
@@ -737,8 +757,7 @@ gst_rtp_h263p_pay_flush (GstRtpH263PPay * rtph263ppay)
     gst_rtp_buffer_unmap (&rtp);
 
     payload_buf = gst_adapter_take_buffer_fast (rtph263ppay->adapter, towrite);
-    gst_rtp_copy_meta (GST_ELEMENT_CAST (rtph263ppay), outbuf, payload_buf,
-        g_quark_from_static_string (GST_META_TAG_VIDEO_STR));
+    gst_rtp_copy_video_meta (rtph263ppay, outbuf, payload_buf);
     outbuf = gst_buffer_append (outbuf, payload_buf);
     avail -= towrite;