diff options
-rw-r--r-- | sys/oss/gstosssrc.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/sys/oss/gstosssrc.c b/sys/oss/gstosssrc.c index 748bfb4f..db810f59 100644 --- a/sys/oss/gstosssrc.c +++ b/sys/oss/gstosssrc.c @@ -306,6 +306,20 @@ gst_osssrc_get (GstPad *pad) buf = gst_buffer_new_and_alloc (src->buffersize); + if (!GST_PAD_CAPS (pad)) { + /* nothing was negotiated, we can decide on a format */ + if (!gst_osssrc_negotiate (pad)) { + gst_buffer_unref (buf); + gst_element_error (GST_ELEMENT (src), "could not negotiate format"); + return GST_BUFFER (gst_event_new (GST_EVENT_INTERRUPT)); + } + } + if (src->common.bps == 0) { + gst_buffer_unref (buf); + gst_element_error (GST_ELEMENT (src), "no format negotiated"); + return GST_BUFFER (gst_event_new (GST_EVENT_INTERRUPT)); + } + readbytes = read (src->common.fd,GST_BUFFER_DATA (buf), src->buffersize); if (readbytes < 0) { @@ -321,20 +335,6 @@ gst_osssrc_get (GstPad *pad) return GST_BUFFER (gst_event_new (GST_EVENT_INTERRUPT)); } - if (!GST_PAD_CAPS (pad)) { - /* nothing was negotiated, we can decide on a format */ - if (!gst_osssrc_negotiate (pad)) { - gst_buffer_unref (buf); - gst_element_error (GST_ELEMENT (src), "could not negotiate format"); - return GST_BUFFER (gst_event_new (GST_EVENT_INTERRUPT)); - } - } - if (src->common.bps == 0) { - gst_buffer_unref (buf); - gst_element_error (GST_ELEMENT (src), "no format negotiated"); - return GST_BUFFER (gst_event_new (GST_EVENT_INTERRUPT)); - } - GST_BUFFER_SIZE (buf) = readbytes; GST_BUFFER_OFFSET (buf) = src->curoffset; |