Commit graph

1672 commits

Author SHA1 Message Date
Sebastian Dröge
0fda329bbb typefind: Improve handling of GAP events
There's still room for improvement though.
2013-04-29 13:24:56 +02:00
Sebastian Dröge
fc4105c1f9 typefind: Forward events that should happen before the caps event directly
There's no point in storing them and sending them later, and doing so would
later require to distinguish between events that should come before caps and
after.

https://bugzilla.gnome.org/show_bug.cgi?id=692784
2013-04-29 13:24:56 +02:00
Sebastian Dröge
cf0566f9ca typefind: Only push pending buffers and events if we have caps 2013-04-29 13:24:56 +02:00
Sebastian Dröge
922815996f typefind: Remove code that would cause caps to be sent twice
Whenever we set typefind->caps we will also send a caps event downstream.
2013-04-29 13:24:56 +02:00
Tim-Philipp Müller
e1c6a56596 typefind: fix caps leak when used in connection with uridecodebin and playbin
Don't leak forced sink caps.
2013-04-27 00:05:45 +01:00
Sebastian Dröge
a257cb6f5b inputselector: Try to not push read-only buffers
We should only increase the refcount before pushing if we're
really going to use the buffer afterwards.
2013-04-25 16:39:52 +02:00
Sebastian Dröge
18a7a1d062 gst: Add better support for static plugins
API: GST_PLUGIN_STATIC_DECLARE()
API: GST_PLUGIN_STATIC_REGISTER()

Based on a patch by Håvard Graff <havard.graff@tandberg.com>.

This now allows GST_PLUGIN_DEFINE() to create a static plugin if
GST_PLUGIN_BUILD_STATIC is defined. The resulting plugin can be
statically linked or dynamically linked during compilation but
can't be dynamically loaded during runtime.

Also adds GST_PLUGIN_STATIC_DECLARE() and GST_PLUGIN_STATIC_REGISTER(),
which allows to register a static linked plugin easily.
It is still required to manually register every single statically linked
plugin from inside the application as this can't be automated in a portable
way.

A new configure parameter --enable-static-plugins was added that allows
to build all plugins we build here as static plugins.

Fixes bug #667305.
2013-04-15 15:52:18 +02:00
Wim Taymans
fa371dad6d multiqueue: ignore empty not-linked queues
We need to ignore the not-linked queues in the underrun and overrun callbacks
because they are expected to be empty.
2013-04-05 10:15:37 +02:00
Wim Taymans
bda406c42f multiqueue: start pushing again on RECONFIGURE
When we got NOT_LINKED before and we receive a RECONFIGURE event, start pushing
again on the source pad.

See https://bugzilla.gnome.org/show_bug.cgi?id=676304
2013-04-04 19:16:23 +02:00
Wim Taymans
9ac409df48 queue2: start pushing again on RECONFIGURE
When we got NOT_LINKED before and we receive a RECONFIGURE event, start pushing
again on the source pad.

See https://bugzilla.gnome.org/show_bug.cgi?id=676304
2013-04-04 19:07:29 +02:00
Wim Taymans
c955ddc712 queue: start pushing again on RECONFIGURE
When we got NOT_LINKED before and we receive a RECONFIGURE event, start pushing
again on the source pad.

See https://bugzilla.gnome.org/show_bug.cgi?id=676304
2013-04-04 19:06:35 +02:00
Alexander Schrab
09bb0c2cdb queue: remove query from queue if queue is flushing
When querying a queue that is flushing we end up adding
a query to the queuearray without taking a reference to
that query (because the normal functionality is to block
until that query is done and discarded from the queue).
This later causes problem if the query is unreffed outside
of the queue before we discard the queue. There is a check
to avoid unreffing any lingering query-objects, but since
the query has been deleted that check fails.

This commit depends on other fixes done to gst_queue_array_find()
and gst_queue_array_drop_element().

https://bugzilla.gnome.org/show_bug.cgi?id=692691
2013-01-30 12:07:52 +00:00
Branko Subasic
17bff49262 multiqueue: correct overrun handling
The control of wheteher a SingleQueue is full is not correct.
Rewrote single_queue_overrun_cb() so it checks the correct variables
when checking if the queue has reached the hard limits, and to
increase the max buffer limit once for each call.

https://bugzilla.gnome.org/show_bug.cgi?id=690557
2012-12-20 15:34:01 +01:00
Wim Taymans
6c968bbdf1 queue2: implement buffering query for all modes
Also implement the buffering query for STREAM mode.
2012-12-20 11:59:54 +01:00
Wim Taymans
7c056a9473 queue2: refactor buffering percent and stats
Make methods to get the current buffering percent and the stats. We will use
this in the query later.
2012-12-20 11:30:25 +01:00
Wim Taymans
fac7eb0a50 NEWSEGMENT -> SEGMENT 2012-12-14 15:24:30 +01:00
Arnaud Vrac
b4a91de1be inputselector: fix clock leak in wait_running_time
https://bugzilla.gnome.org/show_bug.cgi?id=688477
2012-11-17 10:17:58 +00:00
Alessandro Decina
a47e5c72d0 queue: remove unused label. Fixes compiler warning. 2012-11-10 09:51:10 +01:00
Alessandro Decina
c257b19ead queue: don't fail in _sink_event for sticky events
Implement the same behaviour as gst_pad_push_event when pushing sticky events
fails, that is don't fail immediately but fail when data flow resumes and upstream
can aggregate properly.

This fixes segment seeks with decodebin and unlinked audio or video branches.
Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=687899
2012-11-09 18:42:16 +01:00
Tim-Philipp Müller
c99bafae39 elements: fix leading space in plugin description string 2012-11-06 16:58:04 +00:00
Tim-Philipp Müller
666c8c11c6 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 20:44:48 +00:00
Tim-Philipp Müller
af2482b170 queue: add "flush-on-eos" property
In flush-on-eos=true mode any data remaining in the queue is
discarded when an EOS event is received, and the EOS passed
downstream as soon as possible (instead of waiting for all
buffers in the queue to get processed by downstream first).

May or may not be useful in capture/encoding scenarios.
2012-10-31 19:33:30 +00:00
Jan Schmidt
698324d48b multiqueue: Add EOS status to debug output about filled/unfilled 2012-10-30 10:04:14 +11:00
Sebastian Dröge
09982c3c13 dataqueue/queuearray: Make public API again
These are actually used outside of coreelements nowadays.
Also hide lots of internals and add padding and documentation.
2012-10-25 14:03:01 +02:00
Wim Taymans
fc5849ef11 capsfilter: don't prefer passthrough
Basetransform should not try to negotiate in passthrough mode but
respect the order of what we return in the transform_caps method.
A typical case is that you specify some specific new caps in the
caps property but also allow the current caps to pass.
2012-10-04 11:18:19 +02:00
Wim Taymans
701424be9b typefind: send STREAM-START event
Send a STREAM_START event when we are operating in pull mode.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=684424
2012-09-26 13:25:03 +02:00
Mark Nauwelaerts
b14a3ad4ef identity: retimestamp both pts and dts when doing so 2012-09-26 10:55:47 +02:00
Mark Nauwelaerts
8e98ce54e1 identity: also track and store segment info in single segment mode 2012-09-25 15:06:43 +02:00
Josep Torra Valles
111fcc6e31 Make intel compiler happier
https://bugzilla.gnome.org/show_bug.cgi?id=552657
2012-09-25 00:56:26 +01:00
Mark Nauwelaerts
f495fa7a21 identity: transform GAP event in single segment mode 2012-09-19 15:14:35 +02:00
Wim Taymans
3abc720345 docs: fix some docs
from git grep for ffmpegcolorspace and x-raw-
2012-09-13 11:35:41 +02:00
Mark Nauwelaerts
947635d893 filesink: fix build on Cygwin
... where __fbufsize is not available
2012-09-12 17:16:41 +02:00
Tim-Philipp Müller
2fe8ebaae6 queue2: fix possible data corruption in ring buffer mode when seeking
Fix race that could cause data corruption when seeking in ring buffer
mode.

In perform_seek_to_offset(), called from the demuxer's pull_range
request, we drop the lock, tell upstream (usually a http source)
to seek to a different offset, then re-acquire the lock before we
do things to the ranges. However, between us sending the seek event
and re-acquiring the lock, the source thread might already have pushed
some data and moved along the range's writing_pos beyond the seek
offset. In that case we don't want to set the writing position back
to the requested seek position, as it would cause data to be written
to the wrong offset in the file or ring buffer.

Reproducible doing seek-emulated fast-forward/backward on 006653.

Conflicts:
	plugins/elements/gstqueue2.c
2012-09-12 12:59:50 +01:00
Tim-Philipp Müller
a85991eeb8 baseparse, typefind: only activate in pull mode if upstream is seekable
Upstream might support pull mode, but only sequential pulls,
which isn't gonna do much for us.

https://bugzilla.gnome.org/show_bug.cgi?id=634927
2012-09-11 01:40:53 +01:00
Jan Schmidt
8d8608c23b ghostpad: Make some debugging more verbose
Also, remove an unnecessary #include in input-selector
2012-08-31 06:25:37 -07:00
Arnaud Vrac
dc86e65265 inputselector: fix clock leak
https://bugzilla.gnome.org/show_bug.cgi?id=682997
2012-08-30 19:47:57 +01:00
Edward Hervey
0eb13f146f inputselector: Wait for other streams to advance on unselected pads
Otherwise we end up dropping a lot of data in the case where data starts
arriving on the non-selected pad, resulting in big gaps in stream switching
2012-08-14 18:44:38 +02:00
Edward Hervey
6b447acc3c inputselector: More debug statements 2012-08-14 18:43:54 +02:00
Edward Hervey
c33d2f7aba inputselector: Don't forward stream-start sticky events
Only one STREAM_START event should be let through, else it will
confuse downstream elements that think a new stream is starting
whereas in fact we are just switching to a different input.

In the future we might want to let them through but with the same
sequence number.
2012-08-14 18:42:31 +02:00
Edward Hervey
ea761a24b4 inputselector: Use the first created pad by default
This guarantees a bit more consistency in which input stream will
be selected by default. It would previously be the first pad on which
an event/buffer/query was received ... which was racy and non-predictable.
2012-08-06 11:36:29 +02:00
Tim-Philipp Müller
a9d1c529f6 input-selector: use generic marshaller for "block" action signal 2012-08-05 16:48:27 +01:00
Tim-Philipp Müller
ba39106758 typefind: send segment_done event in addition to segment_done message 2012-08-02 00:22:29 +01:00
Sebastian Dröge
389ec66946 basesrc: Add default handler for URI query in GstURIHandler subclasses 2012-07-31 17:26:37 +02:00
Wim Taymans
f05b0e222f Update for new seeking variable name
When seeking, the start value and type are now called start and start_type.
2012-07-27 15:24:52 +02:00
Wim Taymans
a1f1bbd363 typefind: require bytes before typefinding
Require that we have some bytes in the adapter before we attempt to typefind.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=680479
2012-07-24 12:38:15 +02:00
Wim Taymans
a21575d640 plugins: print flags better
print the buffer flags as a hex number so that it becomes easier to see what
flags are set.
2012-07-23 13:40:38 +02:00
Wim Taymans
b5caa93f6d queue2: set buffering-left to 0 on 100% buffering
Set the buffering-left field in the query to 0 when we are completely buffered.
Improve the debug.
2012-07-19 12:42:05 +02:00
Wim Taymans
60091bf225 queue2: fix buffering query
Fix the buffering query, fill in the right buffering-left and estimated-total
values.
2012-07-19 12:14:29 +02:00
Wim Taymans
14550f2ee2 queue2: fix the buffering-left in the buffering message
The buffering-left field in the buffering message should contain a time estimate
in milliseconds about for long the buffering is going to take. We can calculate
this value when we do rate_estimates.
2012-07-19 11:13:45 +02:00
Tim-Philipp Müller
eecaca9140 queue: answer SCHEDULING query
Instead of letting the default query handler fail.
2012-07-18 09:15:51 +01:00