Commit graph

15163 commits

Author SHA1 Message Date
Wim Taymans
cc6ffdbe06 queue2: don't truncate the temp file on shutdown
We want to keep the downloaded file untruncated so that we can use it
again later.

Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=724373
2014-02-18 15:57:23 +01:00
Wim Taymans
b73769e673 queue2: Fix merging of ranges
Make a method to get the seeking threshold. If data is further away from
this threshold we want to perform a seek upstream.
When the current downloaded range can merge with the next range,
actually include the data of the next range into the current range
instead of discarding it. Also decide if we seek to the write position
of the merged range or continue reading.
2014-02-18 15:57:23 +01:00
Sebastian Dröge
a77aafc54b error: GST_RESOURCE_ERROR_NOT_AUTHORIZED will be available since 1.2.4 2014-02-11 13:28:13 +01:00
Sebastian Dröge
93bf011a74 error: Add RESOURCE_NOT_AUTHORIZED error
This allows to distinguish normal read failures from read failures
where we miss authorization.
2014-02-11 13:28:12 +01:00
Sebastian Dröge
3461ae6d95 Release 1.2.3 2014-02-08 11:36:27 +01:00
Sebastian Dröge
ae87b4fb6c Update .po files 2014-02-08 11:35:15 +01:00
Arnaud Vrac
7e3815e3ab multiqueue: do not reduce single queue below current level
When the single queue size was just bumped by 1 to allow more buffers to
be added, the buffers limit could be reduced to the current level when
setting the max-size-buffers property. This would result in a stall
since the queue would not grow anymore at this point.

Prevent this by not reducing a single queue size below the current
number of buffers + 1.

https://bugzilla.gnome.org/show_bug.cgi?id=712597
2014-02-04 17:01:41 +01:00
Sebastian Dröge
a7420fe0ec po: Update translations 2014-02-04 16:20:34 +01:00
Thiago Santos
c6f8d25557 pad: fix sticky event leak after sticky_events_foreach
events_foreach adds an extra ref when giving the event to the
user function. In case it was unrefed by the user, this extra ref
disappeared, but events_foreach still should unref again to
lose its own ref before removing the event from the array.

https://bugzilla.gnome.org/show_bug.cgi?id=722467
2014-01-17 23:13:47 -03:00
Thiago Santos
ddc76753e0 multiqueue: prevent buffering forever with playbin
When prerolling/buffering, multiqueue has its buffers limit set
to 0, this means it can take an infinite amount of buffers.

When prerolling/buffering finishes, its limit is set back to 5, but
only if the current level is lower than 5. It should (almost) never be
and this will cause prerolling/buffering to need to wait to reach the
hard bytes and time limits, which are much higher.

This can lead to a very long startup time. This patch fixes this
by setting the single queues to the max(current, new_value) instead
of simply ignoring the new value and letting it as infinite(0)

https://bugzilla.gnome.org/show_bug.cgi?id=712597
2014-01-15 10:01:59 -03:00
Sebastian Dröge
87cdd96270 segment: gst_segment_offset_running_time() will be available in 1.2.3 2014-01-15 11:14:48 +01:00
Wim Taymans
13c6f035ed tests: improve check, also check stream-time 2014-01-15 11:13:06 +01:00
Wim Taymans
202ba1025f tests: add unit test for segment _offset_running_time()
Add a unit test to check that positive and negative offsets are applied
correctly in various cases.
2014-01-15 11:12:58 +01:00
Wim Taymans
313949a6a6 pad: use new segment offset method to apply the offset
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=721422
2014-01-15 11:12:43 +01:00
Wim Taymans
f8582e27da segment: add method to offset the segment running-time
Add a method that can apply an offset to the calculated running-time of
a segment.
2014-01-15 11:12:28 +01:00
Thiago Santos
05eaa6bc1b baseparse: do not ignore TIME segments
TIME segments are being ignored and a standard initialized
segment is used instead. This causes issues as not properly detecting
reverse playback or not cliping output based on the segment.

This seems to be a regression from one of the GstSegment/GstEvent
redesigns on the 0.10 -> 1.0 transition
2014-01-14 13:07:59 +01:00
Wim Taymans
3f88d10f3e segment: take offset into account in _to_position()
Take the offset into account when converting between running-time and
segment positions.
2014-01-14 13:07:40 +01:00
Wim Taymans
ca5852456a collectpads: take offset into account for expected segment position
The firt valid segment position is start + offset.
Also add some more debug and a FIXME
2014-01-14 13:07:15 +01:00
Thiago Santos
3f2bea0d47 tests: baseparse: add test for reverse playback on passthrough
Baseparse stores buffers for reverse playback to push on the next
DISCONT, the issue was that it wouldn't ever check for a discont
on passthrough mode as it skips all real parsing. This test
was create to verify this issue and prevent it from happening again

https://bugzilla.gnome.org/show_bug.cgi?id=721941
2014-01-13 09:28:04 -03:00
Thiago Santos
cd51c9c6d3 tests: baseparse: add basic test for baseparse
Just a small test to check that basic playback works
2014-01-13 09:28:04 -03:00
Thiago Santos
8f2a972071 baseparse: do not accumulate buffers on passthrough mode
If on passthrough during reverse playback, do not accumulate buffers as
baseparse will never check for DISCONT flag to push those buffers.
So just push buffers downstream as if it was forward playback.

https://bugzilla.gnome.org/show_bug.cgi?id=721941
2014-01-13 09:28:04 -03:00
Thiago Santos
c8196719e7 baseparse: remove pending_segment as it was being misused
It wasn't required, instead baseparse was using it to check the media
caps to identify if it was handling audio or video.

The pending_segment was removed and a checked_media boolean
replaced it for a more accurate naming.

https://bugzilla.gnome.org/show_bug.cgi?id=721350
2014-01-08 13:59:21 -03:00
Thiago Santos
5705e1ec33 baseparse: push pending events before GAP event
A GAP event is handled as an empty buffer by sinks and they expect
to receive start up events before GAP events (like a segment).

This is important specially if there is a GAP at the beginning of
a stream (before any buffers) so that the segment event can be
pushed downstream before the GAP

https://bugzilla.gnome.org/show_bug.cgi?id=721350
2014-01-08 13:59:21 -03:00
Thiago Santos
7513fab9e6 baseparse: refactor pending events pushing
Refactor code repeated 3 times to a common function

https://bugzilla.gnome.org/show_bug.cgi?id=721350
2014-01-08 13:59:21 -03:00
Sebastian Rasmussen
c4a85142cd docs: add missing files for distribution
* add some documentation files in docs/design
 * add docs/list-ulink.xsl so check in docs/manual works

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=719814
2014-01-08 14:19:20 +01:00
YanpingZhang
0c7ed542a1 multiqueue: Fix hanging if shut down while handling a serialized query
https://bugzilla.gnome.org/show_bug.cgi?id=721253
2014-01-06 11:01:12 +01:00
Sebastian Dröge
b416f4f141 pad: Add unit test for adding/removing blocking probes while a pad is blocked
And make sure that these new probes are actually called if they should
instead of silently blocking the pad forever.

https://bugzilla.gnome.org/show_bug.cgi?id=721289
2014-01-03 09:44:34 +01:00
Sebastian Dröge
2f2485d6c9 pad: Check if new probes need to be called when adding/removing some
This allows blocking a pad, add a new blocking probe, removing
the first probe and then having the second probe called. Which
could then decide that data-flow should actually continue
instead of blocking now.

https://bugzilla.gnome.org/show_bug.cgi?id=721289
2014-01-03 09:44:27 +01:00
Sebastian Dröge
612918c43c tee: Remove dyn lock
It was used for pad-alloc in 0.10 but currently is completely unused
and not necessary. All pad access is protected by the tee object lock
and keeping another reference to the current pad.
2014-01-03 09:44:18 +01:00
Sebastian Dröge
bdf3f4237d tee: Keep another ref to our one and only srcpad around while pushing
A pad probe on that pad might otherwise just release the pad, drop
the last reference and cause great misery.

https://bugzilla.gnome.org/show_bug.cgi?id=721300
2014-01-03 09:44:11 +01:00
Sebastian Dröge
0716b35219 pad: Keep an extra ref of the pad when calling an IDLE probe immediately
The callback might destroy the pad.
2013-12-31 11:28:34 +01:00
Sebastian Dröge
fac8b48c27 pad: Only call IDLE probes if we are actually idle
Also only check the data types for non-IDLE probes. When we
are idle, we have no data type obviously.

Previously we were calling IDLE probes during data flow whenever
a non-blocking probe would be called. The pad was usually not idle
at that time.
2013-12-31 11:28:27 +01:00
Sebastian Dröge
ec090a3af8 pad: Don't ignore probe callback return value when immediately calling IDLE probe
https://bugzilla.gnome.org/show_bug.cgi?id=721096
2013-12-31 11:28:18 +01:00
Pedro Côrte-Real
a142ddc5c5 scripts: git-update.sh: fix for non-master branches
Pull from tracking branch instead of origin/master, so
that this works with e.g. 1.2 as well.
2013-12-29 14:06:55 +00:00
Sebastian Dröge
8f01a7c6f8 Release 1.2.2 2013-12-26 17:34:18 +01:00
Sebastian Dröge
bdc192923d Update .po files 2013-12-26 17:31:38 +01:00
Sebastian Dröge
18ad2105bb po: Update translations 2013-12-26 16:44:57 +01:00
Sebastian Dröge
69841d9ce8 funnel: Setting the PROXY_CAPS flag on the srcpad does not make much sense
funnel outputs whatever one of the upstreams currently outputs, a caps
query to a random upstream does not give the right answer here.
2013-12-26 09:00:27 +01:00
Sebastian Dröge
7e62ff2dc6 funnel: Proxy CAPS and ALLOCATION queries 2013-12-26 09:00:19 +01:00
Thiago Santos
1c7809bc0d multiqueue: post 100% buffering if single queue is not linked
This makes buffering stop in case a stream switch happens. This is
important for adaptive streams that can disable not-linked streams
to avoid consuming the network bandwidth.

https://bugzilla.gnome.org/show_bug.cgi?id=719575
2013-12-26 08:59:58 +01:00
Wim Taymans
df459aa3c5 queue: don't ignore event return value
Pass the event return value upstream.
Remove strange goto construct.
2013-12-13 14:25:20 +01:00
Tim-Philipp Müller
24f79307cd tests: fix GstBus unit test with latest GLib
g_source_remove() works on the default main context, and
we're doing things with a custom context. Fixes warning
with newer GLib versions.
2013-12-06 23:45:51 +00:00
Tim-Philipp Müller
f2e68a23d7 tools: gst-launch: don't try to remove already-removed GSource from main loop
It's considered a programming error in recent GLib versions now.
We may already have removed the source by returning FALSE from
the callback if it was fired. Fixes warning with newer GLibs
when interrupting a pipeline with Control-C.
2013-12-06 23:37:23 +00:00
Olivier Crête
d935be2d78 multiqueue: Wake up on reconfigure event
After patch bda406c4, the state of the singlequeue was set to OK, but nothing
would then wake up the thread, as the other wakeup functions only look at
singlequeues that are marked as having received as not-linked.

https://bugzilla.gnome.org/show_bug.cgi?id=708200
2013-12-03 15:42:59 -05:00
Thiago Santos
8bc7f086e4 gstpad: drop assertion on gst_pad_peer_query_position
It is a 'both' query, so it can be sent both ways
2013-11-29 15:31:57 -03:00
Thiago Santos
34a28274b5 inputselector: handle gap events
Use gap events to advance the selector's pad position.

This is relevant to keep sync_streams mode working when one of the
streams doesn't have data all the time.
2013-11-29 15:31:57 -03:00
Wim Taymans
4be591c2f8 Revert "ghostpad: copy sticky events to SRC ghostpads"
This reverts commit 8162a583a4.

Automatically copying the sticky events makes it impossible for apps
and elements to filter the events with event probes. This causes
regressions (See #719437). The best option is to let the app/element
copy and filter the events themselves after the ghostpad target is
set.
2013-11-29 19:33:10 +01:00
Sebastian Dröge
5bc3de3af4 bin: Resync iterator if necessary 2013-11-26 12:43:18 +01:00
Mark Nauwelaerts
d544b074b3 baseparse: ensure to preserve upstream timestamps
... rather than have subclass coming up with an internally parsed one.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=707230
2013-11-26 12:40:57 +01:00
Wim Taymans
19c98d0b79 ghostpad: copy sticky events to SRC ghostpads
Update the sticky events on SRC ghostpads when retargeting. This ensures
that the ghostpad has the exect same sticky events as the target pad. We
don't want to do this for SINK ghostpads, they got the events from
downstream and we don't want to overwrite them with the target pad
events.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=707621
2013-11-26 12:39:01 +01:00