Merge branch 'master' into 0.11

Conflicts:
	libs/gst/base/gstbaseparse.c
This commit is contained in:
Wim Taymans 2011-10-03 10:06:17 +02:00
commit 4f8bb4085f
5 changed files with 66 additions and 15 deletions

View file

@ -36,6 +36,7 @@
#include <gst/gstenumtypes.h>
#include <gst/gstversion.h>
#include <gst/gstatomicqueue.h>
#include <gst/gstbin.h>
#include <gst/gstbuffer.h>
#include <gst/gstbufferlist.h>

View file

@ -3167,27 +3167,29 @@ gst_base_parse_query (GstPad * pad, GstQuery * query)
GST_DEBUG_OBJECT (parse, "position query");
gst_query_parse_position (query, &format, NULL);
GST_OBJECT_LOCK (parse);
if (format == GST_FORMAT_BYTES) {
dest_value = parse->priv->offset;
res = TRUE;
} else if (format == parse->segment.format &&
GST_CLOCK_TIME_IS_VALID (parse->segment.position)) {
dest_value = parse->segment.position;
res = TRUE;
}
GST_OBJECT_UNLOCK (parse);
if (res)
gst_query_set_position (query, format, dest_value);
else {
res = gst_pad_query_default (pad, query);
/* try upstream first */
res = gst_pad_query_default (pad, query);
if (!res) {
/* Fall back on interpreting segment */
GST_OBJECT_LOCK (parse);
if (format == GST_FORMAT_BYTES) {
dest_value = parse->priv->offset;
res = TRUE;
} else if (format == parse->segment.format &&
GST_CLOCK_TIME_IS_VALID (parse->segment.position)) {
dest_value = gst_segment_to_stream_time (&parse->segment,
parse->segment.format, parse->segment.position);
res = TRUE;
}
GST_OBJECT_UNLOCK (parse);
if (!res) {
/* no precise result, upstream no idea either, then best estimate */
/* priv->offset is updated in both PUSH/PULL modes */
res = gst_base_parse_convert (parse,
GST_FORMAT_BYTES, parse->priv->offset, format, &dest_value);
}
if (res)
gst_query_set_position (query, format, dest_value);
}
break;
}

View file

@ -98,6 +98,7 @@ endif
check_PROGRAMS = \
$(ABI_CHECKS) \
gst/gstatomicqueue \
gst/gstbuffer \
gst/gstbufferlist \
gst/gstmeta \

View file

@ -1,6 +1,7 @@
.dirstamp
gst
gstabi
gstatomicqueue
gstbin
gstbuffer
gstbufferlist

View file

@ -0,0 +1,46 @@
/* GStreamer
* Copyright (C) <2011> Tim-Philipp Müller <tim centricular net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include <gst/check/gstcheck.h>
#include <gst/gstatomicqueue.h>
#include <gst/gst.h>
GST_START_TEST (test_create_free)
{
GstAtomicQueue *aq;
aq = gst_atomic_queue_new (20);
gst_atomic_queue_unref (aq);
}
GST_END_TEST;
static Suite *
gst_atomic_queue_suite (void)
{
Suite *s = suite_create ("GstAtomicQueue");
TCase *tc_chain = tcase_create ("GstAtomicQueue tests");
suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_create_free);
return s;
}
GST_CHECK_MAIN (gst_atomic_queue);