rtpsv3vdepay: Only output buffers once we're configured.
authorEdward Hervey <bilboed@bilboed.com>
Mon, 3 Aug 2009 17:02:17 +0000 (19:02 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Mon, 3 Aug 2009 19:26:30 +0000 (21:26 +0200)
gst/rtp/gstrtpsv3vdepay.c
gst/rtp/gstrtpsv3vdepay.h

index eb5abf3..ae7cf57 100644 (file)
@@ -197,6 +197,10 @@ gst_rtp_sv3v_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
     S = (payload[0] & 0x20) == 0x20;
     E = (payload[0] & 0x10) == 0x10;
 
+    GST_DEBUG ("M:%d, C:%d, S:%d, E:%d", M, C, S, E);
+
+    GST_MEMDUMP ("incoming buffer", payload, payload_len);
+
     if (C) {
       GstCaps *caps;
       GstBuffer *codec_data;
@@ -235,21 +239,25 @@ gst_rtp_sv3v_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
       gst_caps_unref (caps);
       g_value_unset (&value);
 
+      rtpsv3vdepay->configured = TRUE;
+
       return NULL;
     }
 
-    /* store data in adapter, stip off 2 bytes header */
-    outbuf = gst_rtp_buffer_get_payload_subbuffer (buf, 2, -1);
-    gst_adapter_push (rtpsv3vdepay->adapter, outbuf);
+    if (G_LIKELY (rtpsv3vdepay->configured)) {
+      /* store data in adapter, stip off 2 bytes header */
+      outbuf = gst_rtp_buffer_get_payload_subbuffer (buf, 2, -1);
+      gst_adapter_push (rtpsv3vdepay->adapter, outbuf);
 
-    if (M) {
-      /* frame is completed: push contents of adapter */
-      guint avail;
+      if (M) {
+        /* frame is completed: push contents of adapter */
+        guint avail;
 
-      avail = gst_adapter_available (rtpsv3vdepay->adapter);
-      outbuf = gst_adapter_take_buffer (rtpsv3vdepay->adapter, avail);
+        avail = gst_adapter_available (rtpsv3vdepay->adapter);
+        outbuf = gst_adapter_take_buffer (rtpsv3vdepay->adapter, avail);
 
-      return outbuf;
+        return outbuf;
+      }
     }
   }
   return NULL;
index a5d5486..cbe5d13 100644 (file)
@@ -46,6 +46,8 @@ struct _GstRtpSV3VDepay
 
   GstAdapter *adapter;
 
+  gboolean configured;
+  
   guint16 nextseq;
   guint width;
   guint height;