The patch: ? .gst-plugins-base.spec.swp ? gdp.patch ? ogg.patch ? oggparse.patch ? patch ? docs/plugins/gst-plugins-base-plugins.args.new ? docs/plugins/gst-plugins-base-plugins.hierarchy.new ? docs/plugins/gst-plugins-base-plugins.interfaces.new ? docs/plugins/gst-plugins-base-plugins.prerequisites.new ? docs/plugins/gst-plugins-base-plugins.signals.new ? ext/ogg/oggdemux.patch ? gst/tcp/2.patch ? gst/tcp/NOTES ? gst/tcp/mfd.old.patch ? gst/tcp/mfd.patch ? gst/tcp/now.patch ? gst/tcp/out ? gst-libs/gst/rtp/.gstbasertpaudiopayload.c.swp ? tests/check/out ? tests/check/elements/revert.patch ? tests/check/elements/videorate.c.release Index: ext/ogg/gstoggmux.c =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ext/ogg/gstoggmux.c,v retrieving revision 1.83 diff -r1.83 gstoggmux.c 1469a1470,1498 > /** all_pads_eos: > * > * Checks if all pads are EOS'd by peeking. > * > * Returns TRUE if all pads are EOS. > */ > static gboolean > all_pads_eos (GstCollectPads * pads) > { > GSList * walk; > gboolean alleos = TRUE; > > walk = pads->data; > while (walk) { > GstBuffer * buf; > GstCollectData * data = (GstCollectData *) walk->data; > > buf = gst_collect_pads_peek (pads, data); > if (buf) { > alleos = FALSE; > gst_buffer_unref (buf); > goto beach; > } > walk = walk->next; > } > beach: > return alleos; > } > 1484a1514 > gint activebefore; 1487a1518,1519 > activebefore = ogg_mux->active_pads; > 1501,1512c1533,1552 < /* if all the pads have been removed, flush all pending data */ < if ((ret == GST_FLOW_OK) && (ogg_mux->active_pads == 0)) { < GST_LOG_OBJECT (ogg_mux, "no pads remaining, flushing data"); < < do { < best = gst_ogg_mux_queue_pads (ogg_mux); < if (best) < ret = gst_ogg_mux_process_best_pad (ogg_mux, best); < } while ((ret == GST_FLOW_OK) && (best != NULL)); < < GST_DEBUG_OBJECT (ogg_mux, "Pushing EOS"); < gst_pad_push_event (ogg_mux->srcpad, gst_event_new_eos ()); --- > if (ogg_mux->active_pads < activebefore) { > /* If the active pad count went down, this mean at least one pad has gone > * EOS. Since CollectPads only calls _collected() once when all pads are > * EOS, and our code doesn't _pop() from all pads we need to check that by > * peeking on all pads, else we won't be called again and the muxing will > * not terminate (push out EOS). */ > > /* if all the pads have been removed, flush all pending data */ > if ((ret == GST_FLOW_OK) && all_pads_eos(pads)) { > GST_LOG_OBJECT (ogg_mux, "no pads remaining, flushing data"); > > do { > best = gst_ogg_mux_queue_pads (ogg_mux); > if (best) > ret = gst_ogg_mux_process_best_pad (ogg_mux, best); > } while ((ret == GST_FLOW_OK) && (best != NULL)); > > GST_DEBUG_OBJECT (ogg_mux, "Pushing EOS"); > gst_pad_push_event (ogg_mux->srcpad, gst_event_new_eos ()); > } The error trace: gstoggmux.lo -MD -MP -MF .deps/libgstogg_la-gstoggmux.Tpo -c gstoggmux.c -fPIC -DPIC -o .libs/libgstogg_la-gstoggmux.o gstoggmux.c: In function 'gst_ogg_mux_process_best_pad': gstoggmux.c:1478: error: invalid storage class for function 'all_pads_eos' gstoggmux.c: In function 'gst_ogg_mux_collected': gstoggmux.c:1557: error: 'activebefore' undeclared (first use in this function) gstoggmux.c:1557: error: (Each undeclared identifier is reported only once gstoggmux.c:1557: error: for each function it appears in.) gstoggmux.c:1565: warning: implicit declaration of function 'all_pads_eos' make: *** [libgstogg_la-gstoggmux.lo] Error 1