Wim Taymans [Wed, 11 Apr 2012 10:34:55 +0000 (12:34 +0200)]
queue2: signal delete before waiting
When we don't have the requested data in the ringbuffer and we move our read
pointer to the requested position, signal the delete cond to inform the writer
that we changed the current fill level. If we don't, the writer might stay
blocked and we might wait forever.
Wim Taymans [Wed, 11 Apr 2012 10:15:37 +0000 (12:15 +0200)]
queue2: add test for ringbuffer deadlock
Wim Taymans [Wed, 11 Apr 2012 10:02:50 +0000 (12:02 +0200)]
queue2: update current read position before waiting
When we don't have enough bytes in the ringbuffer to satisfy the current
request, first update the current read position before waiting. If we don't do
that, the ringbuffer might appear full and the writer will never write more
bytes to wake us up.
Wim Taymans [Wed, 11 Apr 2012 10:00:10 +0000 (12:00 +0200)]
queue2: add range only on sinkpad
Only add the range when we receive a segment event on the sinkpad. The add_range
method will modify the write position, which only makes sense to do on the
sinkpad.
Wim Taymans [Wed, 11 Apr 2012 09:55:56 +0000 (11:55 +0200)]
queue2: fix debug message
We're not writing to the offset of the buffer
Wim Taymans [Wed, 11 Apr 2012 09:55:28 +0000 (11:55 +0200)]
queue2: add_range already updates the level
Alexander Saprykin [Tue, 10 Apr 2012 10:11:26 +0000 (14:11 +0400)]
toc: fix memory leaks while copying content
Alexander Saprykin [Tue, 10 Apr 2012 10:18:48 +0000 (14:18 +0400)]
tocsetter: fix memory leaks in unit test
Alexander Saprykin [Tue, 10 Apr 2012 10:16:50 +0000 (14:16 +0400)]
toc: fix memory leaks in unit test
Wim Taymans [Tue, 10 Apr 2012 14:04:54 +0000 (16:04 +0200)]
queue2: clear seeking flag in all cases
Also clear the seeking flag when downstream is in pull mode.
Wim Taymans [Tue, 10 Apr 2012 10:49:04 +0000 (12:49 +0200)]
gst: add toc entry ref/unref
Wim Taymans [Tue, 10 Apr 2012 10:09:53 +0000 (12:09 +0200)]
queue2: set seeking flag with the queue lock
Wim Taymans [Tue, 10 Apr 2012 09:20:09 +0000 (11:20 +0200)]
queue2: Keep track of the seeking state
Set the seeking flag right before we send a seek event upstream and discard all
data untill we see a flush-stop again. We need to do this because we activate
the range that we seek to immediately after sending the seek event and it is
possible that we receive data in our chain function from before the seek
which would then be added to the wrong range resulting in data corruption.
Wim Taymans [Tue, 10 Apr 2012 09:16:14 +0000 (11:16 +0200)]
queue2: make range on newsegment for ringbuffer
When using the ringbuffer, handle the newsegment event like we handle it when
using the temp-file mode: create a new range for the new byte segment. The new
segment should normally already be created when we do a seek.
Sebastian Dröge [Mon, 9 Apr 2012 14:40:47 +0000 (16:40 +0200)]
multiqueue: Don't use buffer after pushing it downstream
Sebastian Dröge [Mon, 9 Apr 2012 13:58:21 +0000 (15:58 +0200)]
element: Fail if a pad for a non-request template is requested
Tim-Philipp Müller [Sat, 7 Apr 2012 15:06:22 +0000 (16:06 +0100)]
win32: add new TOC API to libgstreamer.def
Fixes 'make check'.
Tim-Philipp Müller [Sat, 7 Apr 2012 15:05:33 +0000 (16:05 +0100)]
tests: add new toc test binaries to .gitignore
Tim-Philipp Müller [Sat, 7 Apr 2012 15:04:14 +0000 (16:04 +0100)]
gst: don't export private TOC functions
Wim Taymans [Fri, 24 Feb 2012 14:24:42 +0000 (15:24 +0100)]
atomicqueue: fix race
After a writer has written to its reserved write location, it can only make the
location available for reading if all of the writers with lower locations have
finished.
Wim Taymans [Fri, 24 Feb 2012 11:51:24 +0000 (12:51 +0100)]
atomicqueue: fix subtle race
Fix a race where the reader would see the updated the tail pointer before the
write could write the data into the queue. Fix this by having a separate reader
tail pointer that is only incremented after the writer wrote the data.
Tim-Philipp Müller [Sat, 7 Apr 2012 14:20:05 +0000 (15:20 +0100)]
filesrc: set default block size from local define
Doesn't actually change the default value, just makes use of the
define there is. Superficial testing with fakesink and jpegdec did
not reveal improved performance for bigger block sizes, so leave
default as it is.
Wim Taymans [Fri, 6 Apr 2012 14:46:58 +0000 (16:46 +0200)]
queue2: don't update the current reading_pos in flush
A flush from the upstream element should not make buffering go to 0, the next
pull request might be inside a range that we have and then we don't need to
buffer at all. If the next pull is outside anything we have, buffering will
happen as usual anyway.
Wim Taymans [Fri, 6 Apr 2012 10:32:49 +0000 (12:32 +0200)]
queue2: check the pad mode on the right pad
Wim Taymans [Fri, 6 Apr 2012 10:24:22 +0000 (12:24 +0200)]
queue2: forward flush events correctly
We want to forward the flush events received on the sinkpad whenever the srcpad
is activated in pushmode, which can also happen when using the RINGBUFFER or
DOWNLOAD mode and downstream failed to activate us in pull mode.
Wim Taymans [Thu, 5 Apr 2012 08:03:02 +0000 (10:03 +0200)]
queue2: stop waiting for more data after EOS
When we have EOS, read the remaining bytes in the buffer and make sure we don't
wait for more data. Also clip the output buffer to the amount of remaining
bytes.
Wim Taymans [Thu, 5 Apr 2012 07:56:52 +0000 (09:56 +0200)]
queue2: check for filled buffer correctly
When using the ringbuffer mode, the buffer is filled when we reached the
max_level.bytes mark or the total size of the ringbuffer, whichever is smaller.
Wim Taymans [Wed, 4 Apr 2012 11:07:27 +0000 (13:07 +0200)]
queue2: avoid waiting for a filled buffer
Use a threshold variable to hold the maximum distance from the current position
for with we will wait instead of doing a seek.
When using the ringbuffer and the requested offset is not available, avoid
waiting until the complete ringbuffer is filled but instead do a seek when the
requested data is further than the threshold.
Avoid doing the seek twice in the ringbuffer case.
Use the same threshold for ringbuffer and download buffering.
Tim-Philipp Müller [Mon, 2 Apr 2012 22:17:21 +0000 (23:17 +0100)]
tools: fix compiler warning
gst-launch.c: In function ‘print_toc_entry’:
gst-launch.c:446:3: error: the size of array ‘spc’ can’t be evaluated [-Werror=vla]
gst-launch.c:446:3: error: variable-sized object may not be initialized
Stefan Sauer [Thu, 22 Mar 2012 07:36:02 +0000 (08:36 +0100)]
gst-launch: add -c, --toc to print the toc
Print the nested chapter and edition structure of the chapters message.
Alexander Saprykin [Wed, 28 Mar 2012 19:15:41 +0000 (23:15 +0400)]
docs: add overview of GstToc usage
Alexander Saprykin [Wed, 14 Mar 2012 17:14:23 +0000 (21:14 +0400)]
docs: Add GstToc and GstTocSetter sections with related functions
Alexander Saprykin [Wed, 14 Mar 2012 17:13:22 +0000 (21:13 +0400)]
gstchecks: Add unit test for the GstTocSetter
Alexander Saprykin [Wed, 14 Mar 2012 17:12:22 +0000 (21:12 +0400)]
gstchecks: Add unit test for the GstToc
Alexander Saprykin [Wed, 14 Mar 2012 16:45:35 +0000 (20:45 +0400)]
Add new GstTocSetter interface
Alexander Saprykin [Wed, 14 Mar 2012 16:42:56 +0000 (20:42 +0400)]
Add new TOC query
Alexander Saprykin [Wed, 14 Mar 2012 16:41:48 +0000 (20:41 +0400)]
Add new TOC message
Alexander Saprykin [Wed, 14 Mar 2012 16:40:32 +0000 (20:40 +0400)]
Add new TOC and TOC select events
Alexander Saprykin [Wed, 14 Mar 2012 16:01:51 +0000 (20:01 +0400)]
Add generic table of contents (TOC) support
Edward Hervey [Mon, 2 Apr 2012 13:13:24 +0000 (15:13 +0200)]
baseparse: always attempt to push if not-linked
This avoids ending up with plenty of pending data (since we'll only
try to parse/push one frame from the incoming buffer).
Fixes increasing memory consumption when parsers aren't linked
Sebastian Dröge [Thu, 29 Mar 2012 12:45:41 +0000 (14:45 +0200)]
multiqueue: Wake up all not-linked streams when a stream switches from linked to not-linked
We reset all the waiting streams, let them push another buffer to
see if they're now active again. This allows faster switching
between streams and prevents deadlocks if downstream does any
waiting too.
Also improve locking a bit, srcresult must be protected by the
multiqueue lock too because it's used/set from random threads.
Sebastian Dröge [Thu, 29 Mar 2012 12:32:24 +0000 (14:32 +0200)]
multiqueue: Recompute high-time too when flushing, not only high-id
Sebastian Dröge [Thu, 29 Mar 2012 11:39:40 +0000 (13:39 +0200)]
inputselector: Only wait until the active pad's running time is reached if the active pad already saw data
Otherwise we might block forever because upstream (e.g. multiqueue) is waiting
for the previously active stream to return forever (which is waiting here
in inputselector) before pushing something on the newly selected stream.
Olivier Crête [Tue, 27 Mar 2012 19:24:49 +0000 (15:24 -0400)]
gstpad: Fix typo in docstring
Stefan Sauer [Thu, 22 Mar 2012 07:35:25 +0000 (08:35 +0100)]
gst-launch: don't shadow global variable
Tim-Philipp Müller [Mon, 12 Mar 2012 23:05:01 +0000 (23:05 +0000)]
configure: bump AS_LIBTOOL version
API was added to collectpads2
Tim-Philipp Müller [Mon, 12 Mar 2012 23:02:48 +0000 (23:02 +0000)]
configure: backport AS_LIBTOOL version from 0.10.36 release
Might fix issues with missing symbols for people who install GStreamer
from source and at some point jumped back and forth between git master
and the 0.10.36 release (or 0.10. branch).
Stefan Sauer [Mon, 12 Mar 2012 22:08:00 +0000 (23:08 +0100)]
docs: fix function name and typo
Christian Fredrik Kalager Schaller [Mon, 12 Mar 2012 09:03:42 +0000 (09:03 +0000)]
update license link to point to 2.1 license, instead of just generic lgpl file, which is always the latest and thus not correct for gstreamer
Tim-Philipp Müller [Thu, 8 Mar 2012 16:30:49 +0000 (16:30 +0000)]
pad, task: improve debug logging
Tim-Philipp Müller [Thu, 8 Mar 2012 16:26:44 +0000 (16:26 +0000)]
pads, collectpads2: get rid of superfluous brackets around static rec mutex calls
Makes it possible to define those calls to something for tracing.
Tim-Philipp Müller [Thu, 8 Mar 2012 16:25:20 +0000 (16:25 +0000)]
common: update common module
For make foo/bar.check-norepeat target.
Tim-Philipp Müller [Thu, 8 Mar 2012 15:23:56 +0000 (15:23 +0000)]
tests: add minimal basesrc ! sink seeking unit test
Should reproduce 'GStreamer-WARNING **: wrong STREAM_LOCK count 0'
warnings (with make pipelines/seek.torture or pipelines/seek.forever
anyway, since it appears to be racy).
https://bugzilla.gnome.org/show_bug.cgi?id=670846
Sebastian Dröge [Tue, 6 Mar 2012 11:28:02 +0000 (12:28 +0100)]
baseparse: Fix 'self-comparison always evaluates to true'
This was really a bug.
Sebastian Dröge [Tue, 6 Mar 2012 11:24:53 +0000 (12:24 +0100)]
tee: Fix 'use of logical '&&' with constant operand' compiler warning
This is actually a real bug.
Sebastian Dröge [Tue, 6 Mar 2012 11:23:15 +0000 (12:23 +0100)]
basetransform: Fix 'equality comparison with extraneous parentheses' compiler warning
Sebastian Dröge [Tue, 6 Mar 2012 11:16:19 +0000 (12:16 +0100)]
gst: Fix 'comparison of unsigned enum expression >= 0 is always true' compiler warning
Sebastian Dröge [Mon, 5 Mar 2012 13:41:12 +0000 (14:41 +0100)]
baseparse: Fix handling of multiple newsegment events
Previously only the last would be pushed, which would cause
invalid running times downstream. This also fixes the handling
of update newsegment events.
Sebastian Dröge [Mon, 5 Mar 2012 13:25:57 +0000 (14:25 +0100)]
baseparse: Also flush the close_segment
Pushing this after flushing will confuse downstream.
Sebastian Dröge [Mon, 5 Mar 2012 13:23:17 +0000 (14:23 +0100)]
baseparse: Remove obsolete code and move gap handling to the correct place
The segment start adjustment code in pull mode should never trigger
anymore because the bisection code earlier would have already made
sure that we're at the desired position.
Also move the gap handling some lines below after sending the currently
configured segments. Otherwise we might fill gaps in a segment that is
not configured downstream yet.
Sebastian Dröge [Mon, 5 Mar 2012 12:12:18 +0000 (13:12 +0100)]
baseparse: Clear some more state when receiving FLUSH_STOP
Like pending serialized events and the currently cached buffer.
Sebastian Dröge [Mon, 5 Mar 2012 12:00:38 +0000 (13:00 +0100)]
baseparse: Only queue serialized events for sending them later
Tim-Philipp Müller [Mon, 5 Mar 2012 00:34:36 +0000 (00:34 +0000)]
libgstcheck: export gst_consistency_checker_add_pad()
Fix build of the adder unit test in -base again.
Stefan Sauer [Fri, 2 Mar 2012 11:16:03 +0000 (12:16 +0100)]
consitencychecker: don't fail on multiple flush_start events
This seems to be okay after a irc discussion.
Stefan Sauer [Wed, 29 Feb 2012 20:57:00 +0000 (21:57 +0100)]
consitencychecker: add handling for sink-pads
Add a pad-probe for sink-pads. One can now add extra pads (belonging to the same
element) to a checker. This allows us to extend the checks.
Stefan Sauer [Wed, 29 Feb 2012 07:44:04 +0000 (08:44 +0100)]
consistencychecker: also check for duplicated flush_starts
Stefan Sauer [Tue, 28 Feb 2012 19:36:59 +0000 (20:36 +0100)]
collectpads2: add more logging
Edward Hervey [Mon, 27 Feb 2012 12:35:10 +0000 (13:35 +0100)]
Suppress deprecation warnings in selected files, for g_value_array_* mostly
Tim-Philipp Müller [Tue, 21 Feb 2012 20:43:48 +0000 (20:43 +0000)]
tests: make datetime test more reliably when comparing two almost identical nows
Account for rounding errors in some places, and that two nows are
not always entirely identical, so allow some leeway when comparing
microseconds and seconds. Ran into this too often, esp. when the
system is under load.
Stefan Sauer [Sun, 26 Feb 2012 22:11:23 +0000 (23:11 +0100)]
collectpads2: rescue the annotation from collectpads
Stefan Sauer [Sun, 26 Feb 2012 22:10:58 +0000 (23:10 +0100)]
docs: fix a typo in comment
Stefan Sauer [Sun, 26 Feb 2012 21:57:02 +0000 (22:57 +0100)]
collectpads2: move "MT save" tags to doc body
It is not useful to have "MT safe" tags randomly in body, returns or since paragraphs.
Tim-Philipp Müller [Sat, 25 Feb 2012 15:18:00 +0000 (15:18 +0000)]
fdsink: implement GstBaseSink::query instead of messing with the pad
Tim-Philipp Müller [Sat, 25 Feb 2012 15:08:55 +0000 (15:08 +0000)]
fdsink: implement SEEKING query
We may or may not support seeking. stdout to a
terminal doesn't support seeking, for example, but
... ! fdsink > file.foo just might.
Tim-Philipp Müller [Sat, 25 Feb 2012 15:07:43 +0000 (15:07 +0000)]
filesink: implement SEEKING query
We may or may not do seeking, depends on the
output file/device really, it doesn't have to
be a file after all.
Tim-Philipp Müller [Sat, 25 Feb 2012 15:07:05 +0000 (15:07 +0000)]
fakesink: answer SEEKING query
We don't do seeking, in case anyone wants to know.
Tim-Philipp Müller [Fri, 24 Feb 2012 23:39:30 +0000 (23:39 +0000)]
registry: fix lseek() return code handling
lseek() returns the offset if successful, and this is != 0 and
does not indicate an error. And if it does actually fail, don't
return FALSE (0) as an int, but -1. None of these things are
likely to have made a difference, ever. I don't think the offset
seek can ever actually happen, the current file position and the
current offset should always be increased in lock step, unless
there was an error in which case we'd just error out.
Tim-Philipp Müller [Fri, 24 Feb 2012 23:19:51 +0000 (23:19 +0000)]
registry: don't forget to clean up registry temp file in another error case
Also clean up temp file if we get an error during write() rather
than just when doing fsync() or close().
Tim-Philipp Müller [Thu, 23 Feb 2012 12:09:31 +0000 (12:09 +0000)]
Update NEWS and RELEASE as well
Tim-Philipp Müller [Thu, 23 Feb 2012 10:36:57 +0000 (10:36 +0000)]
Bump version after releases
Ryan Lortie [Thu, 2 Feb 2012 18:45:25 +0000 (13:45 -0500)]
build: avoid touching .po files during 'make'
A simple workaround to deal with GNU gettext automake integration
failing to deal with git.
https://bugzilla.gnome.org/show_bug.cgi?id=669207
Mark Nauwelaerts [Mon, 13 Feb 2012 17:09:51 +0000 (18:09 +0100)]
baseparse: fix reverse playback
... especially for all-keyframe (audio) cases.
Mark Nauwelaerts [Tue, 7 Feb 2012 10:28:41 +0000 (11:28 +0100)]
baseparse: bitrate mechanics should not deal with duration update
... since that is already handled by _update_duration, or should not be done
altogether if the duration is determined by non-estimated means.
Fixes #669502.
Havard Graff [Wed, 4 Jan 2012 16:10:15 +0000 (17:10 +0100)]
registry: fix compilation with --disable-registry
__registry_reuse_plugin_scanner is only defined when
GST_DISABLE_REGISTRY is not defined.
gstregistry.c: In function 'gst_registry_scan_plugin_file':
gstregistry.c:1131:8: error: '__registry_reuse_plugin_scanner' undeclared (first use in this function)
https://bugzilla.gnome.org/show_bug.cgi?id=667284
Vincent Penquerc'h [Thu, 2 Feb 2012 17:18:22 +0000 (17:18 +0000)]
bin: reset the EOS detection machinery after sending an EOS message
This will allow detecting further EOS, for instance after looping
a stream without changing states.
https://bugzilla.gnome.org/show_bug.cgi?id=668289
Ryan Lortie [Sun, 8 Jan 2012 04:00:12 +0000 (23:00 -0500)]
autogen.sh: allow calling from out-of-tree
https://bugzilla.gnome.org/show_bug.cgi?id=667664
João Paulo Pizani Flor [Mon, 30 Jan 2012 16:48:44 +0000 (14:48 -0200)]
Fixes the lack of an include directive in gst/gstpreset.h
It blocked the build of external libraries depending on gstreamer-core (namely, gstreamermm).
Complete bug report at https://bugzilla.gnome.org/show_bug.cgi?id=669036
Sebastian Dröge [Fri, 27 Jan 2012 14:02:52 +0000 (15:02 +0100)]
collectpads2: Move private fields from the public structs to private structs
Fixes bug #668764.
Vincent Penquerc'h [Fri, 27 Jan 2012 11:32:12 +0000 (11:32 +0000)]
gstplugin: add a few consts to read only data
Tim-Philipp Müller [Sat, 21 Jan 2012 12:56:50 +0000 (12:56 +0000)]
scripts: set GI_TYPELIB_PATH in gst-uninstalled
So pygi finds/uses the local g-i files.
Vincent Penquerc'h [Fri, 20 Jan 2012 18:06:04 +0000 (18:06 +0000)]
libcheck: make the definition of fail not fail with non GCC compilers
Colin Walters [Tue, 17 Jan 2012 21:23:33 +0000 (16:23 -0500)]
build: add --disable-fatal-warnings configure option
It's reasonable to build from git, but not want to turn all compiler
warnings into fatal errors. For example, GNOME's jhbuild helps people
get newer versions of software than came from their distribution, but
they may not necessarily want to hack on it.
Mark Nauwelaerts [Thu, 19 Jan 2012 11:57:48 +0000 (12:57 +0100)]
tests: clockstress: perform sanity check on thread number argument
Vincent Penquerc'h [Fri, 13 Jan 2012 10:43:12 +0000 (10:43 +0000)]
gst-inspect: plug factory leak on error
Antoine Tremblay [Thu, 12 Jan 2012 19:53:11 +0000 (19:53 +0000)]
baseparse: clear adapter in reset so baseparse is reusable
GstBaseParse was not clearing its adapter on reset causing
problems when a pipeline went for example from PLAYING to NULL
state and then back to PLAYING again. The data from the last
stream would be used in the parser.
https://bugzilla.gnome.org/show_bug.cgi?id=667444
Vincent Penquerc'h [Thu, 12 Jan 2012 15:50:53 +0000 (15:50 +0000)]
gstinspect: fix features and list leaks
Vincent Penquerc'h [Wed, 11 Jan 2012 12:19:20 +0000 (12:19 +0000)]
gststructure: clarify _get docs about the returned reference
https://bugzilla.gnome.org/show_bug.cgi?id=667689
Havard Graff [Tue, 29 Nov 2011 13:22:44 +0000 (14:22 +0100)]
basesink: don't compensate for render-delay twice
https://bugzilla.gnome.org/show_bug.cgi?id=667298
Idar Tollefsen [Sun, 1 Jan 2012 15:32:27 +0000 (16:32 +0100)]
build: don't output configure options via autogen if $NOCONFIGURE is set
https://bugzilla.gnome.org/show_bug.cgi?id=667296
Tim-Philipp Müller [Thu, 5 Jan 2012 00:30:30 +0000 (00:30 +0000)]
gst: include locale.h before any other i18n headers
This is also how we do it in -base.
https://bugzilla.gnome.org/show_bug.cgi?id=667290