rtpsv3vdepay: Only output buffers once we're configured.

This commit is contained in:
Edward Hervey 2009-08-03 19:02:17 +02:00
parent 1743763c0b
commit 65a2871e90
2 changed files with 19 additions and 9 deletions

View file

@ -197,6 +197,10 @@ gst_rtp_sv3v_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
S = (payload[0] & 0x20) == 0x20; S = (payload[0] & 0x20) == 0x20;
E = (payload[0] & 0x10) == 0x10; 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) { if (C) {
GstCaps *caps; GstCaps *caps;
GstBuffer *codec_data; GstBuffer *codec_data;
@ -235,21 +239,25 @@ gst_rtp_sv3v_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
gst_caps_unref (caps); gst_caps_unref (caps);
g_value_unset (&value); g_value_unset (&value);
rtpsv3vdepay->configured = TRUE;
return NULL; return NULL;
} }
/* store data in adapter, stip off 2 bytes header */ if (G_LIKELY (rtpsv3vdepay->configured)) {
outbuf = gst_rtp_buffer_get_payload_subbuffer (buf, 2, -1); /* store data in adapter, stip off 2 bytes header */
gst_adapter_push (rtpsv3vdepay->adapter, outbuf); outbuf = gst_rtp_buffer_get_payload_subbuffer (buf, 2, -1);
gst_adapter_push (rtpsv3vdepay->adapter, outbuf);
if (M) { if (M) {
/* frame is completed: push contents of adapter */ /* frame is completed: push contents of adapter */
guint avail; guint avail;
avail = gst_adapter_available (rtpsv3vdepay->adapter); avail = gst_adapter_available (rtpsv3vdepay->adapter);
outbuf = gst_adapter_take_buffer (rtpsv3vdepay->adapter, avail); outbuf = gst_adapter_take_buffer (rtpsv3vdepay->adapter, avail);
return outbuf; return outbuf;
}
} }
} }
return NULL; return NULL;

View file

@ -46,6 +46,8 @@ struct _GstRtpSV3VDepay
GstAdapter *adapter; GstAdapter *adapter;
gboolean configured;
guint16 nextseq; guint16 nextseq;
guint width; guint width;
guint height; guint height;