Mark Nauwelaerts [Tue, 15 Jun 2010 13:33:37 +0000 (15:33 +0200)]
baseparse: prevent arithmetic overflows in pull mode buffer cache handling
Mark Nauwelaerts [Tue, 15 Jun 2010 13:32:34 +0000 (15:32 +0200)]
baseparse: fix seek handling
Allow a few more seek event type combinations, and really use the result
of gst_segment_set_seek to perform the seek. Also add some debug.
Arun Raghavan [Fri, 26 Mar 2010 18:56:49 +0000 (18:56 +0000)]
baseparse: Don't emit bitrate tags too early
We wait to parse a minimum number of frames (10, arbitrarily) before
emiting bitrate tags so that our early estimates are not wildly
inaccurate for streams that start with a silence. If the stream ends
before that, we just emit the tags anyway.
While it _would_ be nicer to be specify the threshold to start pushing
the tags in terms of duration, this would introduce more complexity than
this merits.
https://bugzilla.gnome.org/show_bug.cgi?id=614991
Sebastian Dröge [Fri, 26 Mar 2010 17:20:24 +0000 (18:20 +0100)]
baseparse: Set the last stop to the buffer starttime if the duration is invalid
...instead of not setting it at all.
Joshua M. Doe [Fri, 26 Mar 2010 17:19:00 +0000 (18:19 +0100)]
baseparse: Send NEWSEGMENT event with correct start and position
Instead of taking the last stop (which could be buffer endtime instead
of starttime) always take the buffer starttime.
Fixes bug #614016.
Tim-Philipp Müller [Thu, 25 Mar 2010 17:09:17 +0000 (17:09 +0000)]
audioparsers: remove unused GstBaseParseClassPrivate structure
Arun Raghavan [Thu, 25 Mar 2010 11:22:58 +0000 (11:22 +0000)]
audioparsers: Add bitrate calculation to baseparse
This makes baseparse keep a running average of the stream bitrate, as
well as the minimum and maximum bitrates. Subclasses can override a
vfunc to make sure that per-frame overhead from the container is not
accounted for in the bitrate calculation.
We take care not to override the bitrate, minimum-bitrate, and
maximum-bitrate tags if they have been posted upstream. We also
rate-limit the emission of bitrate so that it is only triggered by a
change of >10 kbps.
Mark Nauwelaerts [Thu, 14 Jan 2010 10:50:33 +0000 (11:50 +0100)]
audioparsers: rename baseparse GType name to avoid possible conflicts
Mark Nauwelaerts [Tue, 5 Jan 2010 14:05:05 +0000 (15:05 +0100)]
audioparsers: documentation fixes
Mark Nauwelaerts [Mon, 21 Dec 2009 17:18:39 +0000 (18:18 +0100)]
baseparse: adjust seek handling and newsegment sending
Perform sanity check on type of seek, and only perform one that is
appropriately supported. Adjust downstream newsegment event
to first buffer timestamp that is sent downstream.
Mark Nauwelaerts [Mon, 21 Dec 2009 10:59:45 +0000 (11:59 +0100)]
baseparse: minor refactor cleanup
Also add some debug logging.
Mark Nauwelaerts [Fri, 18 Dec 2009 20:02:40 +0000 (21:02 +0100)]
baseparse: implement leftover draining in pull mode
Mark Nauwelaerts [Wed, 16 Dec 2009 17:38:33 +0000 (18:38 +0100)]
baseparse: provide default conversion using bps if no fps available
Also store estimated duration as such, rather than pretending otherwise
(e.g. set by subclass).
Mark Nauwelaerts [Fri, 18 Dec 2009 12:30:29 +0000 (13:30 +0100)]
baseparse: check for remaining data when draining in push mode
Mark Nauwelaerts [Fri, 18 Dec 2009 12:30:07 +0000 (13:30 +0100)]
baseparse: fix pull mode cache size comparison
Michael Smith [Fri, 11 Dec 2009 18:25:16 +0000 (10:25 -0800)]
audioparse: fix a format string as reported on irc.
Mark Nauwelaerts [Thu, 29 Oct 2009 14:18:37 +0000 (15:18 +0100)]
baseparse: custom bufferflag indicates not to count frame in stats
Mark Nauwelaerts [Fri, 27 Nov 2009 16:27:32 +0000 (17:27 +0100)]
audioparsers: reference GstBaseParse now lives here
Mark Nauwelaerts [Sat, 28 Nov 2009 17:13:31 +0000 (18:13 +0100)]
audioparsers: rename 'aacparse' plugin to generic 'audioparsers' plugin
Mark Nauwelaerts [Thu, 29 Oct 2009 15:05:00 +0000 (16:05 +0100)]
baseparse: reset passthrough mode to default (disabled) on activation
Mark Nauwelaerts [Thu, 29 Oct 2009 14:16:59 +0000 (15:16 +0100)]
baseparse: ensure buffer metadata is writable
Mark Nauwelaerts [Wed, 28 Oct 2009 13:06:13 +0000 (14:06 +0100)]
baseparse: fix/enhance DISCONT marking
In particular, consider DISCONT == !sync, and allow subclass to query
sync state, as it may want to perform additional checks depending
on whether sync was achieved earlier on.
Also arrange for subclass to query whether leftover data is being drained.
Mark Nauwelaerts [Mon, 23 Nov 2009 14:48:25 +0000 (15:48 +0100)]
baseparse: add timestamp handling, and default conversion
In particular, (optionally) provide baseparse with a notion of frames per second
(and therefore also frame duration) and have it track frame and byte counts.
This way, subclass can provide baseparse with fps and have it provide default
buffer time metadata and conversions, though subclass can still install
callbacks to handle such itself.
Mark Nauwelaerts [Wed, 28 Oct 2009 11:02:03 +0000 (12:02 +0100)]
baseparse: documentation fixes
Mark Nauwelaerts [Wed, 28 Oct 2009 11:00:08 +0000 (12:00 +0100)]
baseparse: use_fixed_caps for src pad
After all, stream is as-is, and there is little molding to downstream's
taste that can be done. If subclass can and wants to do so, it can
still override as such.
Julien Moutte [Fri, 20 Nov 2009 16:32:13 +0000 (17:32 +0100)]
aacparse: Fix compilation warnings
Josep Torra [Sun, 11 Oct 2009 09:22:11 +0000 (11:22 +0200)]
aacparse: fix warnings in macosx snow leopard
Mark Nauwelaerts [Fri, 25 Sep 2009 15:02:53 +0000 (17:02 +0200)]
aacparse: forego (bogus) parsing of already parsed (raw) input
Mark Nauwelaerts [Fri, 7 Aug 2009 11:07:17 +0000 (13:07 +0200)]
baseparse: prevent infinite loop when draining
Mark Nauwelaerts [Fri, 7 Aug 2009 11:06:28 +0000 (13:06 +0200)]
baseparse: fix minor memory leak
Sebastian Dröge [Tue, 14 Jul 2009 12:08:04 +0000 (14:08 +0200)]
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.
Sebastian Dröge [Tue, 14 Jul 2009 12:07:44 +0000 (14:07 +0200)]
baseparse: Fix seek event leaking
Tim-Philipp Müller [Mon, 1 Jun 2009 12:56:18 +0000 (13:56 +0100)]
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.
Tim-Philipp Müller [Mon, 1 Jun 2009 12:47:01 +0000 (13:47 +0100)]
baseparse: don't try to GST_LOG an already-freed caps string
The proper way to log caps is via GST_PTR_FORMAT anyway.
Mark Nauwelaerts [Tue, 26 May 2009 17:43:53 +0000 (19:43 +0200)]
baseparse: fix debug category
Mark Nauwelaerts [Mon, 27 Apr 2009 20:39:15 +0000 (22:39 +0200)]
baseparse: fix (regression in) newsegment handling
(aacparse, amrparse, flacparse). Fixes #580133.
René Stadler [Tue, 7 Apr 2009 01:53:02 +0000 (04:53 +0300)]
baseparse: Fix slightly broken buffer-in-segment check (aacparse, amrparse, flacparse)
René Stadler [Sun, 5 Apr 2009 00:50:19 +0000 (03:50 +0300)]
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).
Mark Nauwelaerts [Tue, 31 Mar 2009 14:07:46 +0000 (16:07 +0200)]
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.
Stefan Kost [Fri, 27 Feb 2009 09:24:37 +0000 (11:24 +0200)]
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.
Stefan Kost [Thu, 26 Feb 2009 09:02:06 +0000 (11:02 +0200)]
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.
Jan Schmidt [Fri, 30 Jan 2009 18:18:10 +0000 (18:18 +0000)]
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
Stefan Kost [Thu, 13 Nov 2008 14:21:39 +0000 (14:21 +0000)]
gst/: Fix baseparse type name.
Original commit message from CVS:
* gst/aacparse/gstbaseparse.c:
* gst/amrparse/gstbaseparse.c:
Fix baseparse type name.
Stefan Kost [Thu, 13 Nov 2008 12:59:34 +0000 (12:59 +0000)]
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.
Havard Graff [Sat, 19 Mar 2011 23:56:08 +0000 (00:56 +0100)]
queue[2]: Make src query MT-safe
It is possible that the element might be going down while the event arrives
Havard Graff [Sat, 19 Mar 2011 23:56:08 +0000 (00:56 +0100)]
basesrc: Make src query MT-safe
It is possible that the element might be going down while the event arrives
Sebastian Dröge [Fri, 8 Apr 2011 12:56:37 +0000 (14:56 +0200)]
queue[2]: Unref events if the parent element disappeared
Havard Graff [Mon, 21 Mar 2011 15:01:05 +0000 (16:01 +0100)]
queue[2]: Make upstream events MT-safe
Sebastian Dröge [Fri, 8 Apr 2011 12:55:09 +0000 (14:55 +0200)]
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.
Havard Graff [Mon, 21 Mar 2011 15:01:05 +0000 (16:01 +0100)]
base: Make upstream events MT-safe
Stian Selnes [Tue, 29 Mar 2011 09:57:06 +0000 (11:57 +0200)]
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.
Sebastian Dröge [Fri, 8 Apr 2011 12:50:10 +0000 (14:50 +0200)]
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.
Havard Graff [Fri, 1 Apr 2011 06:46:14 +0000 (08:46 +0200)]
inputselector: Protect against pad-parent disappearing
Stian Selnes [Tue, 14 Dec 2010 15:06:46 +0000 (16:06 +0100)]
iterator: resync to avoid infinite loop
Sebastian Dröge [Fri, 8 Apr 2011 07:20:28 +0000 (09:20 +0200)]
utils: Fix uninitialized variable compiler warnings
Sebastian Dröge [Fri, 8 Apr 2011 07:15:10 +0000 (09:15 +0200)]
bus: Removed unused GCond
Sebastian Dröge [Fri, 8 Apr 2011 07:07:59 +0000 (09:07 +0200)]
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.
Sebastian Dröge [Thu, 7 Apr 2011 09:24:35 +0000 (11:24 +0200)]
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
Sebastian Dröge [Thu, 7 Apr 2011 09:19:57 +0000 (11:19 +0200)]
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
Tim-Philipp Müller [Thu, 7 Apr 2011 19:47:25 +0000 (20:47 +0100)]
tests: add some basic unit tests for queue2
Tim-Philipp Müller [Thu, 7 Apr 2011 19:45:22 +0000 (20:45 +0100)]
queue2: fix buffer leak on eos when using the ring buffer
Idar Tollefsen [Tue, 11 Jan 2011 13:27:35 +0000 (14:27 +0100)]
queue2: Fixes memory leak on out_flushing error in gst_queue2_create_read.
https://bugzilla.gnome.org/show_bug.cgi?id=646972
Tim-Philipp Müller [Thu, 7 Apr 2011 18:44:44 +0000 (19:44 +0100)]
queue2: fix minor memory leak
Tim-Philipp Müller [Thu, 7 Apr 2011 16:34:10 +0000 (17:34 +0100)]
funnel: minor element description fix
Stefan Kost [Thu, 7 Apr 2011 13:08:34 +0000 (16:08 +0300)]
docs: remove file as we have docs/design/part-missing-plugins.txt
Sebastian Dröge [Thu, 7 Apr 2011 08:48:04 +0000 (10:48 +0200)]
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...
Sebastian Dröge [Thu, 7 Apr 2011 08:40:16 +0000 (10:40 +0200)]
bla
Sebastian Dröge [Thu, 7 Apr 2011 08:29:41 +0000 (10:29 +0200)]
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.
Sebastian Dröge [Wed, 6 Apr 2011 12:06:49 +0000 (14:06 +0200)]
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.
Sebastian Dröge [Wed, 6 Apr 2011 11:56:49 +0000 (13:56 +0200)]
Revert "bus: Only create the signalling socket pair when required"
This reverts commit
4bf8f1524f6e3374b3f3bc57322337723d06b928.
Sebastian Dröge [Wed, 6 Apr 2011 11:56:46 +0000 (13:56 +0200)]
Revert "bus: Check if pending messages are in the queue"
This reverts commit
bd1c40011434c1efaa696dc98ef855ef9cce9b28.
Tim-Philipp Müller [Wed, 6 Apr 2011 10:38:57 +0000 (11:38 +0100)]
checks: make tests_many_bins in bin unit test a bit faster
Not doing expensive checks when linking elements makes things
much faster.
Tim-Philipp Müller [Wed, 6 Apr 2011 10:30:18 +0000 (11:30 +0100)]
checks: add some queues to test_many_bins unit test
To limit the number of calls in a row per thread.
Sebastian Dröge [Wed, 6 Apr 2011 10:03:18 +0000 (12:03 +0200)]
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.
Sebastian Dröge [Wed, 6 Apr 2011 09:45:27 +0000 (11:45 +0200)]
value: GstDate/GDate has a abbreviation now
Tim-Philipp Müller [Sun, 3 Apr 2011 15:11:50 +0000 (16:11 +0100)]
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
Sebastian Dröge [Tue, 5 Apr 2011 14:22:48 +0000 (16:22 +0200)]
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.
Sebastian Dröge [Tue, 5 Apr 2011 12:36:43 +0000 (14:36 +0200)]
structure: Add date as a type abbreviation of GDate
See bug #646696.
Stefan Kost [Mon, 4 Apr 2011 12:56:30 +0000 (15:56 +0300)]
Automatic update of common submodule
From 1ccbe09 to c3cafe1
Andoni Morales Alastruey [Mon, 4 Apr 2011 01:33:46 +0000 (03:33 +0200)]
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.
Sebastian Dröge [Mon, 4 Apr 2011 08:18:14 +0000 (10:18 +0200)]
structure: Don't allow invalid GDates in all structures and don't allow NULL GDates in taglists
Some code (e.g. gstvorbistag.c) assumes non-NULL GDates in taglists and
explodes otherwise and NULL or invalid GDates don't make much sense anyway.
Thomas Kristensen [Fri, 25 Mar 2011 14:56:07 +0000 (15:56 +0100)]
poll: don't call WSAWaitForMultipleEvents with no events
Fixes error caught by Microsoft Application Verifier.
Tim-Philipp Müller [Sun, 3 Apr 2011 15:18:54 +0000 (16:18 +0100)]
docs: add pointer to part-seeking.txt design docs to event seek flags docs
Tim-Philipp Müller [Sun, 3 Apr 2011 15:18:14 +0000 (16:18 +0100)]
checks: ignore new funnel unit test binary
Bastien Nocera [Sat, 2 Apr 2011 13:51:18 +0000 (14:51 +0100)]
utils: Avoid using "type" as name for a variable and a macro argument in GST_BOILERPLATE
This caused "re-declaration" problems.
./clutter-gst-video-sink.c: In function ‘clutter_gst_video_sink_init_interfaces’:
./clutter-gst-video-sink.c:231:1: warning: declaration of ‘ClutterGstVideoSink’ shadows a global declaration [-Wshadow]
./clutter-gst-video-sink.h:64:44: warning: shadowed declaration is here [-Wshadow]
https://bugzilla.gnome.org/show_bug.cgi?id=646531
Sebastian Dröge [Fri, 1 Apr 2011 11:56:09 +0000 (13:56 +0200)]
element: When requesting an existing pad print a g_critical() instead of using an assertion
Some applications are requesting the same pad name multiple times
and the behaviour is undefined and different from element to element
but we don't want to break applications that work just fine.
In 0.11 this check should be an assertion again, although elements
have to do manual checking if the pad already exists again because
it can't be done in a threadsafe way here.
Sebastian Dröge [Fri, 1 Apr 2011 11:53:39 +0000 (13:53 +0200)]
element: Use gint64/guint64 string parsing functions
And check that the requested pad names are inside the valid
gint/guint range.
Josep Torra [Fri, 1 Apr 2011 11:51:31 +0000 (13:51 +0200)]
element: strto[u]l() returns a g[u]long
Tim-Philipp Müller [Thu, 31 Mar 2011 18:25:30 +0000 (19:25 +0100)]
design docs: document expected behaviour for ACCURATE and KEY_UNIT seek flags
Sebastian Dröge [Thu, 31 Mar 2011 08:53:03 +0000 (10:53 +0200)]
gstabi: Add some new structures for x86-64
Sebastian Dröge [Thu, 31 Mar 2011 08:46:40 +0000 (10:46 +0200)]
libsabi: Add lots of new structures for x86-64
Sebastian Dröge [Wed, 30 Mar 2011 08:48:47 +0000 (10:48 +0200)]
multiqueue: Make assignment of queue IDs and pad names threadsafe
Also add a test for naming pads by the caller and return NULL
when requesting an already existing pad.
Andreas Frisch [Tue, 29 Mar 2011 21:58:43 +0000 (23:58 +0200)]
multiqueue: Set the single queue ID to the ID of the requested pad if one was given by the caller
Sebastian Dröge [Tue, 29 Mar 2011 14:22:46 +0000 (16:22 +0200)]
element: Fix sanity checks for request pad templates without %
Sebastian Dröge [Tue, 29 Mar 2011 09:57:58 +0000 (11:57 +0200)]
element: Add some more sanity checks to the pad name checking of request pads in all cases
Especially check if a pad with that name already exists.
Sebastian Dröge [Tue, 29 Mar 2011 09:52:06 +0000 (11:52 +0200)]
element: Check %u too when trying to find a pad template for a request pad
Fraxinas [Mon, 28 Mar 2011 19:01:13 +0000 (21:01 +0200)]
multiqueue: Fix arbitrary sink + source pad naming
Use the string provided by the caller for the sinkpad name
if possible. Note that all sanity checking for this name
is already done in GstElement.
Fixes Bug #645931
Sebastian Dröge [Tue, 29 Mar 2011 09:18:36 +0000 (11:18 +0200)]
funnel: Add some more documentation about the behaviour of funnel
Sebastian Dröge [Tue, 29 Mar 2011 09:08:57 +0000 (11:08 +0200)]
funnel: Send a newsegment event after flush-stop
Sebastian Dröge [Tue, 29 Mar 2011 09:07:48 +0000 (11:07 +0200)]
funnel: Some random cleanup