oggdemux: Don't reset the pad when pushing resulted in NOT_LINKED
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 30 Aug 2010 13:50:26 +0000 (15:50 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 30 Aug 2010 13:50:26 +0000 (15:50 +0200)
The pad might be linked later and after resetting it it will
only work after resetting all of oggdemux.

ext/ogg/gstoggdemux.c

index 6716c15..cb1f2dd 100644 (file)
@@ -992,7 +992,9 @@ gst_ogg_pad_stream_out (GstOggPad * pad, gint npackets)
       case 1:
         GST_LOG_OBJECT (ogg, "packetout gave packet of size %ld", packet.bytes);
         result = gst_ogg_pad_submit_packet (pad, &packet);
-        if (result != GST_FLOW_OK)
+        if (result == GST_FLOW_NOT_LINKED)
+          goto not_linked;
+        else if (result <= GST_FLOW_UNEXPECTED)
           goto could_not_submit;
         break;
       default:
@@ -1010,6 +1012,16 @@ gst_ogg_pad_stream_out (GstOggPad * pad, gint npackets)
   return result;
 
   /* ERRORS */
+not_linked:
+  {
+    GST_WARNING_OBJECT (ogg,
+        "could not submit packet for stream %08lx, error: %d",
+        pad->map.serialno, result);
+    /* Not resetting the pad here because it might be linked
+     * later and should work without problems then.
+     */
+    return result;
+  }
 could_not_submit:
   {
     GST_WARNING_OBJECT (ogg,