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