diff --git a/autogen.sh b/autogen.sh index 6a06491806..b2e9ee46fd 100755 --- a/autogen.sh +++ b/autogen.sh @@ -35,7 +35,9 @@ then ln -s ../../common/hooks/pre-commit.hook .git/hooks/pre-commit fi - +# GNU gettext automake support doesn't get along with git. +# https://bugzilla.gnome.org/show_bug.cgi?id=661128 +touch -t 200001010000 po/gstreamer-0.10.pot CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-failing-tests --enable-poisoning --enable-gtk-doc --enable-docbook' diff --git a/docs/plugins/inspect/plugin-coreindexers.xml b/docs/plugins/inspect/plugin-coreindexers.xml index 80f072e2a5..8356f0c9e4 100644 --- a/docs/plugins/inspect/plugin-coreindexers.xml +++ b/docs/plugins/inspect/plugin-coreindexers.xml @@ -3,11 +3,11 @@ GStreamer core indexers ../../plugins/indexers/.libs/libgstcoreindexers.so libgstcoreindexers.so - 0.10.35.1 + 0.10.36.1 LGPL gstreamer GStreamer git Unknown package origin - + \ No newline at end of file diff --git a/gst/gstregistrybinary.c b/gst/gstregistrybinary.c index 348b3a7267..c358f31c73 100644 --- a/gst/gstregistrybinary.c +++ b/gst/gstregistrybinary.c @@ -219,10 +219,11 @@ gst_registry_binary_cache_write (BinaryRegistryCache * cache, { long written; if (offset != cache->currentoffset) { - if (lseek (cache->cache_fd, offset, SEEK_SET) != 0) { - GST_ERROR ("Seeking to new offset failed"); - return FALSE; + if (lseek (cache->cache_fd, offset, SEEK_SET) < 0) { + GST_ERROR ("Seeking to new offset failed: %s", g_strerror (errno)); + return -1; } + GST_LOG ("Seeked from offset %lu to %lu", offset, cache->currentoffset); cache->currentoffset = offset; } @@ -245,12 +246,13 @@ gst_registry_binary_cache_finish (BinaryRegistryCache * cache, gboolean success) if (close (cache->cache_fd) < 0) goto close_failed; - if (success) { - /* Only do the rename if we wrote the entire file successfully */ - if (g_rename (cache->tmp_location, cache->location) < 0) { - GST_ERROR ("g_rename() failed: %s", g_strerror (errno)); - goto rename_failed; - } + if (!success) + goto fail_after_close; + + /* Only do the rename if we wrote the entire file successfully */ + if (g_rename (cache->tmp_location, cache->location) < 0) { + GST_ERROR ("g_rename() failed: %s", g_strerror (errno)); + goto rename_failed; } g_free (cache->tmp_location); diff --git a/libs/gst/base/gstcollectpads2.c b/libs/gst/base/gstcollectpads2.c index a133c7f757..4f3ef75016 100644 --- a/libs/gst/base/gstcollectpads2.c +++ b/libs/gst/base/gstcollectpads2.c @@ -277,10 +277,10 @@ gst_collect_pads2_finalize (GObject * object) * * Create a new instance of #GstCollectsPads. * - * Returns: a new #GstCollectPads2, or NULL in case of an error. - * * MT safe. * + * Returns: (transfer full): a new #GstCollectPads2, or NULL in case of an error. + * * Since: 0.10.36 */ GstCollectPads2 * @@ -306,7 +306,7 @@ gst_collect_pads2_set_buffer_function_locked (GstCollectPads2 * pads, * gst_collect_pads2_set_buffer_function: * @pads: the collectpads to use * @func: the function to set - * @user_data: user data passed to the function + * @user_data: (closure): user data passed to the function * * Set the callback function and user data that will be called with * the oldest buffer when all pads have been collected. @@ -331,7 +331,7 @@ gst_collect_pads2_set_buffer_function (GstCollectPads2 * pads, * gst_collect_pads2_set_compare_function: * @pads: the pads to use * @func: the function to set - * @user_data: user data passed to the function + * @user_data: (closure): user data passed to the function * * Set the timestamp comparison function. * @@ -515,7 +515,7 @@ gst_collect_pads2_set_clip_function (GstCollectPads2 * pads, /** * gst_collect_pads2_add_pad: * @pads: the collectspads to use - * @pad: the pad to add + * @pad: (transfer none): the pad to add * @size: the size of the returned #GstCollectData2 structure * * Add a pad to the collection of collect pads. The pad has to be @@ -529,14 +529,14 @@ gst_collect_pads2_set_clip_function (GstCollectPads2 * pads, * The pad will be automatically activated in push mode when @pads is * started. * - * This function calls gst_collect_pads2_add_pad() passing a value of NULL + * This function calls gst_collect_pads2_add_pad_full() passing a value of NULL * for destroy_notify and TRUE for locked. * + * MT safe. + * * Returns: a new #GstCollectData2 to identify the new pad. Or NULL * if wrong parameters are supplied. * - * MT safe. - * * Since: 0.10.36 */ GstCollectData2 * @@ -548,7 +548,7 @@ gst_collect_pads2_add_pad (GstCollectPads2 * pads, GstPad * pad, guint size) /** * gst_collect_pads2_add_pad_full: * @pads: the collectspads to use - * @pad: the pad to add + * @pad: (transfer none): the pad to add * @size: the size of the returned #GstCollectData2 structure * @destroy_notify: function to be called before the returned #GstCollectData2 * structure is freed @@ -578,12 +578,12 @@ gst_collect_pads2_add_pad (GstCollectPads2 * pads, GstPad * pad, guint size) * The pad will be automatically activated in push mode when @pads is * started. * + * MT safe. + * * Since: 0.10.36 * * Returns: a new #GstCollectData2 to identify the new pad. Or NULL * if wrong parameters are supplied. - * - * MT safe. */ GstCollectData2 * gst_collect_pads2_add_pad_full (GstCollectPads2 * pads, GstPad * pad, @@ -646,7 +646,7 @@ find_pad (GstCollectData2 * data, GstPad * pad) /** * gst_collect_pads2_remove_pad: * @pads: the collectspads to use - * @pad: the pad to remove + * @pad: (transfer none): the pad to remove * * Remove a pad from the collection of collect pads. This function will also * free the #GstCollectData2 and all the resources that were allocated with @@ -654,10 +654,10 @@ find_pad (GstCollectData2 * data, GstPad * pad) * * The pad will be deactivated automatically when @pads is stopped. * - * Returns: %TRUE if the pad could be removed. - * * MT safe. * + * Returns: %TRUE if the pad could be removed. + * * Since: 0.10.36 */ gboolean @@ -741,10 +741,10 @@ unknown_pad: * * This function is currently not implemented. * - * Returns: %TRUE if the pad is active. - * * MT safe. * + * Returns: %TRUE if the pad is active. + * * Since: 0.10.36 */ gboolean @@ -769,10 +769,10 @@ gst_collect_pads2_is_active (GstCollectPads2 * pads, GstPad * pad) * * This function is currently not implemented. * - * Returns: #GstFlowReturn of the operation. - * * MT safe. * + * Returns: #GstFlowReturn of the operation. + * * Since: 0.10.36 */ GstFlowReturn @@ -797,10 +797,10 @@ gst_collect_pads2_collect (GstCollectPads2 * pads) * * This function is currently not implemented. * - * Returns: #GstFlowReturn of the operation. - * * MT safe. * + * Returns: #GstFlowReturn of the operation. + * * Since: 0.10.36 */ GstFlowReturn @@ -860,7 +860,6 @@ gst_collect_pads2_set_flushing_unlocked (GstCollectPads2 * pads, * * MT safe. * - * * Since: 0.10.36 */ void @@ -987,11 +986,11 @@ gst_collect_pads2_stop (GstCollectPads2 * pads) * should be called with the @pads STREAM_LOCK held, such as in the callback * handler. * + * MT safe. + * * Returns: The buffer in @data or NULL if no buffer is queued. * should unref the buffer after usage. * - * MT safe. - * * Since: 0.10.36 */ GstBuffer * @@ -1021,11 +1020,11 @@ gst_collect_pads2_peek (GstCollectPads2 * pads, GstCollectData2 * data) * should be called with the @pads STREAM_LOCK held, such as in the callback * handler. * - * Returns: The buffer in @data or NULL if no buffer was queued. - * You should unref the buffer after usage. - * * MT safe. * + * Returns: (transfer full): The buffer in @data or NULL if no buffer was + * queued. You should unref the buffer after usage. + * * Since: 0.10.36 */ GstBuffer * @@ -1075,11 +1074,11 @@ gst_collect_pads2_clear (GstCollectPads2 * pads, GstCollectData2 * data) * This function should be called with @pads STREAM_LOCK held, such as * in the callback. * + * MT safe. + * * Returns: The maximum number of bytes queued on all pads. This function * returns 0 if a pad has no queued buffer. * - * MT safe. - * * Since: 0.10.36 */ /* we might pre-calculate this in some struct field, @@ -1146,11 +1145,11 @@ not_filled: * This function should be called with @pads STREAM_LOCK held, such as * in the callback. * + * MT safe. + * * Returns: The number of bytes flushed This can be less than @size and * is 0 if the pad was end-of-stream. * - * MT safe. - * * Since: 0.10.36 */ guint @@ -1194,13 +1193,13 @@ gst_collect_pads2_flush (GstCollectPads2 * pads, GstCollectData2 * data, * This function should be called with @pads STREAM_LOCK held, such as in the * callback. * + * MT safe. + * * Since: 0.10.36 * - * Returns: A sub buffer. The size of the buffer can be less that requested. + * Returns: (transfer full): A sub buffer. The size of the buffer can be less that requested. * A return of NULL signals that the pad is end-of-stream. * Unref the buffer after use. - * - * MT safe. */ GstBuffer * gst_collect_pads2_read_buffer (GstCollectPads2 * pads, GstCollectData2 * data, @@ -1235,13 +1234,13 @@ gst_collect_pads2_read_buffer (GstCollectPads2 * pads, GstCollectData2 * data, * This function should be called with @pads STREAM_LOCK held, such as in the * callback. * + * MT safe. + * * Since: 0.10.36 * * Returns: A sub buffer. The size of the buffer can be less that requested. * A return of NULL signals that the pad is end-of-stream. * Unref the buffer after use. - * - * MT safe. */ GstBuffer * gst_collect_pads2_take_buffer (GstCollectPads2 * pads, GstCollectData2 * data, diff --git a/plugins/elements/gstfakesink.c b/plugins/elements/gstfakesink.c index a509cdb04d..a43f50e134 100644 --- a/plugins/elements/gstfakesink.c +++ b/plugins/elements/gstfakesink.c @@ -131,6 +131,7 @@ static GstFlowReturn gst_fake_sink_preroll (GstBaseSink * bsink, static GstFlowReturn gst_fake_sink_render (GstBaseSink * bsink, GstBuffer * buffer); static gboolean gst_fake_sink_event (GstBaseSink * bsink, GstEvent * event); +static gboolean gst_fake_sink_query (GstBaseSink * bsink, GstQuery * query); static guint gst_fake_sink_signals[LAST_SIGNAL] = { 0 }; @@ -232,6 +233,7 @@ gst_fake_sink_class_init (GstFakeSinkClass * klass) gstbase_sink_class->event = GST_DEBUG_FUNCPTR (gst_fake_sink_event); gstbase_sink_class->preroll = GST_DEBUG_FUNCPTR (gst_fake_sink_preroll); gstbase_sink_class->render = GST_DEBUG_FUNCPTR (gst_fake_sink_render); + gstbase_sink_class->query = GST_DEBUG_FUNCPTR (gst_fake_sink_query); } static void @@ -510,6 +512,29 @@ eos: } } +static gboolean +gst_fake_sink_query (GstBaseSink * bsink, GstQuery * query) +{ + gboolean ret; + + switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_SEEKING:{ + GstFormat fmt; + + /* we don't supporting seeking */ + gst_query_parse_seeking (query, &fmt, NULL, NULL, NULL); + gst_query_set_seeking (query, fmt, FALSE, 0, -1); + ret = TRUE; + break; + } + default: + ret = GST_BASE_SINK_CLASS (parent_class)->query (bsink, query); + break; + } + + return ret; +} + static GstStateChangeReturn gst_fake_sink_change_state (GstElement * element, GstStateChange transition) { diff --git a/plugins/elements/gstfdsink.c b/plugins/elements/gstfdsink.c index bfe4c71419..3831b09c5b 100644 --- a/plugins/elements/gstfdsink.c +++ b/plugins/elements/gstfdsink.c @@ -208,6 +208,16 @@ gst_fd_sink_query (GstBaseSink * bsink, GstQuery * query) gst_query_set_uri (query, fdsink->uri); res = TRUE; break; + case GST_QUERY_SEEKING: + gst_query_parse_seeking (query, &format, NULL, NULL, NULL); + if (format == GST_FORMAT_BYTES || format == GST_FORMAT_DEFAULT) { + gst_query_set_seeking (query, GST_FORMAT_BYTES, fdsink->seekable, 0, + -1); + } else { + gst_query_set_seeking (query, format, FALSE, 0, -1); + } + res = TRUE; + break; default: res = GST_BASE_SINK_CLASS (parent_class)->query (bsink, query); break; @@ -384,6 +394,9 @@ gst_fd_sink_start (GstBaseSink * basesink) fdsink->bytes_written = 0; fdsink->current_pos = 0; + fdsink->seekable = gst_fd_sink_do_seek (fdsink, 0); + GST_INFO_OBJECT (fdsink, "seeking supported: %d", fdsink->seekable); + return TRUE; /* ERRORS */ diff --git a/plugins/elements/gstfdsink.h b/plugins/elements/gstfdsink.h index 90913b4d5b..59393d0247 100644 --- a/plugins/elements/gstfdsink.h +++ b/plugins/elements/gstfdsink.h @@ -59,6 +59,8 @@ struct _GstFdSink { int fd; guint64 bytes_written; guint64 current_pos; + + gboolean seekable; }; struct _GstFdSinkClass { diff --git a/plugins/elements/gstfilesink.c b/plugins/elements/gstfilesink.c index d4badbd7d7..6888b39278 100644 --- a/plugins/elements/gstfilesink.c +++ b/plugins/elements/gstfilesink.c @@ -482,6 +482,16 @@ gst_file_sink_query (GstBaseSink * bsink, GstQuery * query) res = TRUE; break; + case GST_QUERY_SEEKING: + gst_query_parse_seeking (query, &format, NULL, NULL, NULL); + if (format == GST_FORMAT_BYTES || format == GST_FORMAT_DEFAULT) { + gst_query_set_seeking (query, GST_FORMAT_BYTES, self->seekable, 0, -1); + } else { + gst_query_set_seeking (query, format, FALSE, 0, -1); + } + res = TRUE; + break; + default: res = GST_BASE_SINK_CLASS (parent_class)->query (bsink, query); break;