mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
Merge branch 'master' into 0.11
Conflicts: libs/gst/base/gstbaseparse.c
This commit is contained in:
commit
4f8bb4085f
5 changed files with 66 additions and 15 deletions
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -98,6 +98,7 @@ endif
|
|||
|
||||
check_PROGRAMS = \
|
||||
$(ABI_CHECKS) \
|
||||
gst/gstatomicqueue \
|
||||
gst/gstbuffer \
|
||||
gst/gstbufferlist \
|
||||
gst/gstmeta \
|
||||
|
|
1
tests/check/gst/.gitignore
vendored
1
tests/check/gst/.gitignore
vendored
|
@ -1,6 +1,7 @@
|
|||
.dirstamp
|
||||
gst
|
||||
gstabi
|
||||
gstatomicqueue
|
||||
gstbin
|
||||
gstbuffer
|
||||
gstbufferlist
|
||||
|
|
46
tests/check/gst/gstatomicqueue.c
Normal file
46
tests/check/gst/gstatomicqueue.c
Normal 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);
|
Loading…
Reference in a new issue