Sebastian Dröge
bd50c29658
aacparse: Add function for the baseparse subclass to push buffers downstream
...
Also handle the case gracefully where the subclass decides to drop
the first buffers and has no caps set yet. It's still required to
have valid caps set when the first buffer should be passed downstream.
2011-04-08 15:44:47 +01:00
Sebastian Dröge
2e4ed802a7
baseparse: Fix seek event leaking
2011-04-08 15:44:47 +01:00
Tim-Philipp Müller
d49e8731c0
baseparse: propagate return value of GstBaseParse::set_sink_caps()
...
gst_base_parse_sink_setcaps() presumably should fail if the subclass
returns FALSE from its ::set_sink_caps() function.
2011-04-08 15:44:47 +01:00
Tim-Philipp Müller
09243a12bd
baseparse: don't try to GST_LOG an already-freed caps string
...
The proper way to log caps is via GST_PTR_FORMAT anyway.
2011-04-08 15:44:46 +01:00
Mark Nauwelaerts
56605e51a7
baseparse: fix debug category
2011-04-08 15:44:46 +01:00
Mark Nauwelaerts
ae1956092f
baseparse: fix (regression in) newsegment handling
...
(aacparse, amrparse, flacparse). Fixes #580133 .
2011-04-08 15:44:46 +01:00
René Stadler
922c644bf3
baseparse: Fix slightly broken buffer-in-segment check (aacparse, amrparse, flacparse)
2011-04-08 15:44:46 +01:00
René Stadler
da8fb9be91
baseparse: Fix push mode seeking (aacparse, amrparse)
...
Sending the flush-start event forward before taking the stream lock actually
works, in contrast to deadlocking in downstream preroll_wait (hunk 1).
After that we get the chain function being stuck in a busy loop. This is fixed
by updating the minimum frame size inside the synchronization loop because the
subclass asks for more data in this way (hunk 2).
Finally, this leads to a very probable crash because the subclass can find a
valid frame with a size greater than the currently available data in the
adapter. This makes the subsequent gst_adapter_take_buffer call return NULL,
which is not expected (hunk 3).
2011-04-08 15:44:46 +01:00
Mark Nauwelaerts
1b93e8ec03
baseparse: Delay newsegment as long as possible.
...
If newsegment is sent (too) early, caps may not yet be fixed/set,
and downstream may not have been linked.
2011-04-08 15:44:46 +01:00
Stefan Kost
5a971be3aa
baseparse: revert last change and properly fix
...
Baseparse internaly breaks the semantics of a _chain function by calling it with
buffer==NULL. The reson I belived it was okay to remove it was that there is
also an unchecked access to buffer later in _chain. Actually that code is wrong,
as it most probably wants to set discont on the outgoing buffer.
2011-04-08 15:44:46 +01:00
Stefan Kost
c0f1db7ebe
baseparse: remove checks for buffer==NULL
...
Accordifn to docs for GstPadChainFunction buffer cannot be NULL. If we would
leave the check, we would also need more such check below.
2011-04-08 15:44:46 +01:00
Jan Schmidt
2f2e8a1c33
Fix the return value of the default parse_frame function.
...
Fix the return value of the default parse_frame function in both
copies of GstBaseParse
2011-04-08 15:44:46 +01:00
Stefan Kost
e9da652db6
gst/: Fix baseparse type name.
...
Original commit message from CVS:
* gst/aacparse/gstbaseparse.c:
* gst/amrparse/gstbaseparse.c:
Fix baseparse type name.
2011-04-08 15:44:46 +01:00
Stefan Kost
e37b6081ed
Add two new baseparse based parsers (aac and amr) from Bug #518857 .
...
Original commit message from CVS:
* configure.ac:
* gst/aacparse/Makefile.am:
* gst/aacparse/gstaacparse.c:
* gst/aacparse/gstaacparse.h:
* gst/aacparse/gstbaseparse.c:
* gst/aacparse/gstbaseparse.h:
* gst/amrparse/Makefile.am:
* gst/amrparse/gstamrparse.c:
* gst/amrparse/gstamrparse.h:
* gst/amrparse/gstbaseparse.c:
* gst/amrparse/gstbaseparse.h:
Add two new baseparse based parsers (aac and amr) from Bug #518857 .
2011-04-08 15:44:46 +01:00
Havard Graff
d092e3b9ff
queue[2]: Make src query MT-safe
...
It is possible that the element might be going down while the event arrives
2011-04-08 14:58:51 +02:00
Havard Graff
3d833e42b6
basesrc: Make src query MT-safe
...
It is possible that the element might be going down while the event arrives
2011-04-08 14:58:41 +02:00
Sebastian Dröge
1dac816e9c
queue[2]: Unref events if the parent element disappeared
2011-04-08 14:57:18 +02:00
Havard Graff
d5485786a4
queue[2]: Make upstream events MT-safe
2011-04-08 14:57:05 +02:00
Sebastian Dröge
237e54d4fe
base: Unref events if the parent element disappeared
...
And also unref events if the basetransform subclass has no
event handler and the event is not forwarded at all.
2011-04-08 14:57:05 +02:00
Havard Graff
0daedb7409
base: Make upstream events MT-safe
2011-04-08 14:57:00 +02:00
Stian Selnes
339df347a0
gstqueue, gstqueue2: check if parent of pad is NULL in _getcaps
...
Parent of the pad (the queue) may be set to NULL while there is
a buffer alloc going on.
2011-04-08 14:51:06 +02:00
Sebastian Dröge
ba6054b862
inputselector: Fix getcaps and event function from last commit
...
Return ANY caps if the parent disappeared, i.e. the template caps
and don't leak events if the parent disappeared.
2011-04-08 14:50:10 +02:00
Havard Graff
297407438a
inputselector: Protect against pad-parent disappearing
2011-04-08 14:48:16 +02:00
Stian Selnes
c19f44e1d2
iterator: resync to avoid infinite loop
2011-04-08 14:43:21 +02:00
Sebastian Dröge
b17537d14d
utils: Fix uninitialized variable compiler warnings
2011-04-08 09:20:28 +02:00
Sebastian Dröge
43cdbc17e6
bus: Removed unused GCond
2011-04-08 09:15:56 +02:00
Sebastian Dröge
6d97652903
multiqueue: Add another check for the flushing flag after taking the lock
...
This prevents another potential deadlock when flushing the pad
at exactly the right time.
2011-04-08 09:15:56 +02:00
Sebastian Dröge
80eb160e0f
bus: Immediately drop messages after calling the sync handler if this is a synchronous bus
...
Otherwise we might wait forever for the message to be popped from
the queue if a sync handler returned GST_BUS_ASYNC.
https://bugzilla.gnome.org/show_bug.cgi?id=647005
2011-04-08 09:15:56 +02:00
Sebastian Dröge
c41b0ade28
bus: Use a construct-only property to distinguish between child buses and normal buses
...
This allows to only create the socketpair when it is really required instead
of always creating it and immediately destroying it again for child buses.
https://bugzilla.gnome.org/show_bug.cgi?id=647005
2011-04-08 09:15:56 +02:00
Tim-Philipp Müller
5c75330fea
tests: add some basic unit tests for queue2
2011-04-07 20:50:04 +01:00
Tim-Philipp Müller
12249e99c2
queue2: fix buffer leak on eos when using the ring buffer
2011-04-07 20:50:04 +01:00
Idar Tollefsen
46a786cee6
queue2: Fixes memory leak on out_flushing error in gst_queue2_create_read.
...
https://bugzilla.gnome.org/show_bug.cgi?id=646972
2011-04-07 20:50:04 +01:00
Tim-Philipp Müller
419d117851
queue2: fix minor memory leak
2011-04-07 20:50:04 +01:00
Tim-Philipp Müller
01d016e720
funnel: minor element description fix
2011-04-07 20:50:04 +01:00
Stefan Kost
7bb40c3ada
docs: remove file as we have docs/design/part-missing-plugins.txt
2011-04-07 16:09:49 +03:00
Sebastian Dröge
7945821f92
basesrc: Handle tag and custom downstream events the same
...
Especially drop tag events when flushing to not send them over
and over again.
Should've been in the last commit already but I forgot to call
git rebase --continue...
2011-04-07 10:48:04 +02:00
Sebastian Dröge
c7c3e46b08
bla
2011-04-07 10:40:16 +02:00
Sebastian Dröge
1d9cd86af6
basesrc: Send syncronized custom downstream/both events downstream from the streaming thread
...
Instead of just silently dropping them. The same was done for tag events
before already.
Fixes bug #635718 .
2011-04-07 10:29:41 +02:00
Sebastian Dröge
874d60e589
bus: Add private API to set a GstBus in child mode
...
This is used by GstBin to create a child bus without
a socketpair because child buses will always work
synchronous. Otherwise too many sockets could be
created and the limit of file descriptors for the
process could be reached.
Fixes bug #646624 .
2011-04-06 14:18:35 +02:00
Sebastian Dröge
79370d4b17
Revert "bus: Only create the signalling socket pair when required"
...
This reverts commit 4bf8f1524f
.
2011-04-06 14:12:26 +02:00
Sebastian Dröge
2cb3e52351
Revert "bus: Check if pending messages are in the queue"
...
This reverts commit bd1c400114
.
2011-04-06 14:12:26 +02:00
Tim-Philipp Müller
6a5f8a1b2d
checks: make tests_many_bins in bin unit test a bit faster
...
Not doing expensive checks when linking elements makes things
much faster.
2011-04-06 11:41:14 +01:00
Tim-Philipp Müller
da5d6712a2
checks: add some queues to test_many_bins unit test
...
To limit the number of calls in a row per thread.
2011-04-06 11:30:18 +01:00
Sebastian Dröge
bd1c400114
bus: Check if pending messages are in the queue
...
We can't rely completely on the poll fd because the fd might be
created after messages were posted to the bus.
2011-04-06 12:03:18 +02:00
Sebastian Dröge
ec0de993c6
value: GstDate/GDate has a abbreviation now
2011-04-06 11:45:27 +02:00
Tim-Philipp Müller
d7ff4ee6cb
checks: add GstBin unit test that creates a lot of bins
...
Currently fails (in normal circumstances) because we create a
socket pair for each bin's bus and exhaust the number of available
file descriptors.
https://bugzilla.gnome.org/show_bug.cgi?id=646624
2011-04-05 16:30:59 +02:00
Sebastian Dröge
4bf8f1524f
bus: Only create the signalling socket pair when required
...
Otherwise a new one would be created for every single bus and
the process could easily run out of file descriptors.
Fixes bug #646624 .
2011-04-05 16:30:55 +02:00
Sebastian Dröge
5860734aaf
structure: Add date as a type abbreviation of GDate
...
See bug #646696 .
2011-04-05 14:37:55 +02:00
Stefan Kost
95737e2811
Automatic update of common submodule
...
From 1ccbe09 to c3cafe1
2011-04-04 15:56:30 +03:00
Andoni Morales Alastruey
7c6d9c2725
gstpoll: retry reading the control socket to release properly all wakeups
...
if set->control_pending is set to 0 but we didn't not succed reading
the control socket, future calls to gst_poll_wait() will be awaiken
by the control socket which will not be released properly because
set->control_pending is already 0, causing an infinite loop.
2011-04-04 11:05:45 +02:00