diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2014-06-22 19:28:35 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-06-22 19:34:12 +0200 |
commit | 5b1835190a9876c671a95867fd3d3b25c79211be (patch) | |
tree | 160897f1828fb615fa81ee959d64081b59ea9c9a | |
parent | c76ea2887bd94236aae13cc8f8d796d6a3c661d2 (diff) |
New upstream development release.debian/1.3.3-1
-rw-r--r-- | debian/changelog | 6 | ||||
-rw-r--r-- | debian/patches/0001-Revert-avdemux-use-GstFlowCombiner.patch | 165 | ||||
-rw-r--r-- | debian/patches/03_gst-1.2.patch | 6 | ||||
-rw-r--r-- | debian/patches/series | 1 | ||||
-rwxr-xr-x | debian/rules | 2 |
5 files changed, 175 insertions, 5 deletions
diff --git a/debian/changelog b/debian/changelog index 787d80c..eed8508 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +gst-libav1.0 (1.3.3-1) experimental; urgency=medium + + * New upstream development release. + + -- Sebastian Dröge <slomo@debian.org> Sun, 22 Jun 2014 19:25:04 +0200 + gst-libav1.0 (1.3.2-1) unstable; urgency=medium * New upstream development release. diff --git a/debian/patches/0001-Revert-avdemux-use-GstFlowCombiner.patch b/debian/patches/0001-Revert-avdemux-use-GstFlowCombiner.patch new file mode 100644 index 0000000..18157a4 --- /dev/null +++ b/debian/patches/0001-Revert-avdemux-use-GstFlowCombiner.patch @@ -0,0 +1,165 @@ +From a2a6edfd743701806dcb62009880a7d66aa3067f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com> +Date: Sun, 22 Jun 2014 19:33:22 +0200 +Subject: [PATCH] Revert "avdemux: use GstFlowCombiner" + +This reverts commit 66588ae60df40c60052a9f094444b15b5faf9c07. +--- + ext/libav/gstavdemux.c | 57 ++++++++++++++++++++++++++++++++++++-------------- + 1 file changed, 41 insertions(+), 16 deletions(-) + +diff --git a/ext/libav/gstavdemux.c b/ext/libav/gstavdemux.c +index 917838c..f4e2300 100644 +--- a/ext/libav/gstavdemux.c ++++ b/ext/libav/gstavdemux.c +@@ -28,7 +28,6 @@ + #include <libavformat/avformat.h> + /* #include <ffmpeg/avi.h> */ + #include <gst/gst.h> +-#include <gst/base/gstflowcombiner.h> + + #include "gstav.h" + #include "gstavcodecmap.h" +@@ -50,6 +49,7 @@ struct _GstFFStream + GstClockTime last_ts; + gboolean discont; + gboolean eos; ++ GstFlowReturn last_flow; + + GstTagList *tags; /* stream tags */ + }; +@@ -69,8 +69,6 @@ struct _GstFFMpegDemux + + GstFFStream *streams[MAX_STREAMS]; + +- GstFlowCombiner *flowcombiner; +- + gint videopads, audiopads; + + GstClockTime start_time; +@@ -284,8 +282,6 @@ gst_ffmpegdemux_init (GstFFMpegDemux * demux) + demux->seek_event = NULL; + gst_segment_init (&demux->segment, GST_FORMAT_TIME); + +- demux->flowcombiner = gst_flow_combiner_new (); +- + /* push based data */ + g_mutex_init (&demux->ffpipe.tlock); + g_cond_init (&demux->ffpipe.cond); +@@ -305,8 +301,6 @@ gst_ffmpegdemux_finalize (GObject * object) + + demux = (GstFFMpegDemux *) object; + +- gst_flow_combiner_free (demux->flowcombiner); +- + g_mutex_clear (&demux->ffpipe.tlock); + g_cond_clear (&demux->ffpipe.cond); + gst_object_unref (demux->ffpipe.adapter); +@@ -332,10 +326,8 @@ gst_ffmpegdemux_close (GstFFMpegDemux * demux) + + stream = demux->streams[n]; + if (stream) { +- if (stream->pad) { +- gst_flow_combiner_remove_pad (demux->flowcombiner, stream->pad); ++ if (stream->pad) + gst_element_remove_pad (GST_ELEMENT (demux), stream->pad); +- } + if (stream->tags) + gst_tag_list_unref (stream->tags); + g_free (stream); +@@ -610,9 +602,15 @@ gst_ffmpegdemux_perform_seek (GstFFMpegDemux * demux, GstEvent * event) + + /* and prepare to continue streaming */ + if (flush) { ++ gint n; ++ + /* send flush stop, peer will accept data and events again. We + * are not yet providing data as we still have the STREAM_LOCK. */ + gst_ffmpegdemux_push_event (demux, gst_event_new_flush_stop (TRUE)); ++ for (n = 0; n < MAX_STREAMS; ++n) { ++ if (demux->streams[n]) ++ demux->streams[n]->last_flow = GST_FLOW_OK; ++ } + } + /* if successfull seek, we update our real segment and push + * out the new segment. */ +@@ -892,6 +890,34 @@ gst_ffmpegdemux_src_convert (GstPad * pad, + } + #endif + ++static GstFlowReturn ++gst_ffmpegdemux_aggregated_flow (GstFFMpegDemux * demux) ++{ ++ gint n; ++ GstFlowReturn res = GST_FLOW_OK; ++ gboolean have_ok = FALSE; ++ ++ for (n = 0; n < MAX_STREAMS; n++) { ++ GstFFStream *s = demux->streams[n]; ++ ++ if (s) { ++ res = MIN (res, s->last_flow); ++ ++ if (s->last_flow == GST_FLOW_OK) ++ have_ok = TRUE; ++ } ++ } ++ ++ /* NOT_LINKED is OK, if at least one pad is linked */ ++ if (res == GST_FLOW_NOT_LINKED && have_ok) ++ res = GST_FLOW_OK; ++ ++ GST_DEBUG_OBJECT (demux, "Returning aggregated value of %s", ++ gst_flow_get_name (res)); ++ ++ return res; ++} ++ + static gchar * + gst_ffmpegdemux_create_padname (const gchar * templ, gint n) + { +@@ -938,6 +964,7 @@ gst_ffmpegdemux_get_stream (GstFFMpegDemux * demux, AVStream * avstream) + stream->discont = TRUE; + stream->avstream = avstream; + stream->last_ts = GST_CLOCK_TIME_NONE; ++ stream->last_flow = GST_FLOW_OK; + stream->tags = NULL; + + switch (ctx->codec_type) { +@@ -1023,7 +1050,6 @@ gst_ffmpegdemux_get_stream (GstFFMpegDemux * demux, AVStream * avstream) + + /* activate and add */ + gst_element_add_pad (GST_ELEMENT (demux), pad); +- gst_flow_combiner_add_pad (demux->flowcombiner, pad); + + /* metadata */ + if ((codec = gst_ffmpeg_get_codecid_longname (ctx->codec_id))) { +@@ -1333,7 +1359,6 @@ gst_ffmpegdemux_loop (GstFFMpegDemux * demux) + GstClockTime timestamp, duration; + gint outsize; + gboolean rawvideo; +- GstFlowReturn stream_last_flow; + + /* open file if we didn't so already */ + if (!demux->opened) +@@ -1456,13 +1481,13 @@ gst_ffmpegdemux_loop (GstFFMpegDemux * demux) + "Sending out buffer time:%" GST_TIME_FORMAT " size:%" G_GSIZE_FORMAT, + GST_TIME_ARGS (timestamp), gst_buffer_get_size (outbuf)); + +- ret = stream_last_flow = gst_pad_push (srcpad, outbuf); ++ ret = stream->last_flow = gst_pad_push (srcpad, outbuf); + + /* if a pad is in e.g. WRONG_STATE, we want to pause to unlock the STREAM_LOCK */ +- if (((ret = gst_flow_combiner_update_flow (demux->flowcombiner, +- ret)) != GST_FLOW_OK)) { ++ if ((ret != GST_FLOW_OK) ++ && ((ret = gst_ffmpegdemux_aggregated_flow (demux)) != GST_FLOW_OK)) { + GST_WARNING_OBJECT (demux, "stream_movi flow: %s / %s", +- gst_flow_get_name (stream_last_flow), gst_flow_get_name (ret)); ++ gst_flow_get_name (stream->last_flow), gst_flow_get_name (ret)); + goto pause; + } + +-- +2.0.0 + diff --git a/debian/patches/03_gst-1.2.patch b/debian/patches/03_gst-1.2.patch index f26a6a6..5bc9dcf 100644 --- a/debian/patches/03_gst-1.2.patch +++ b/debian/patches/03_gst-1.2.patch @@ -3,11 +3,11 @@ Index: gst-libav1.0/configure.ac --- gst-libav1.0.orig/configure.ac +++ gst-libav1.0/configure.ac @@ -45,8 +45,8 @@ AG_GST_LIBTOOL_PREPARE - AS_LIBTOOL(GST, 302, 0, 302) + AS_LIBTOOL(GST, 303, 0, 303) dnl *** required versions of GStreamer stuff *** --GST_REQ=1.3.2 --GST_PBREQ=1.3.2 +-GST_REQ=1.3.3 +-GST_PBREQ=1.3.3 +GST_REQ=1.2.4 +GST_PBREQ=1.2.4 diff --git a/debian/patches/series b/debian/patches/series index 9471ad9..4d4309d 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,2 +1,3 @@ 02_plugin-dependencies.patch 03_gst-1.2.patch +0001-Revert-avdemux-use-GstFlowCombiner.patch diff --git a/debian/rules b/debian/rules index 1544ac1..b4f1c94 100755 --- a/debian/rules +++ b/debian/rules @@ -7,8 +7,6 @@ include /usr/share/cdbs/1/rules/autoreconf.mk DEB_DH_AUTORECONF_ARGS += --as-needed -export AUTOPOINT=true - export DEB_BUILD_MAINT_OPTIONS=hardening=-all include /usr/share/dpkg/buildflags.mk |