Commit graph

293 commits

Author SHA1 Message Date
Wim Taymans
09a8294d36 pad: add parent to the query function 2011-11-16 17:22:56 +01:00
Wim Taymans
e85198bc32 _query_peer_*() -> _peer_query_*() 2011-11-15 17:50:34 +01:00
Wim Taymans
b5c3e254b1 pad: remove getcaps and use caps query
Remove the getcaps function on the pad and use the CAPS query for
the same effect.
Add PROXY_CAPS to the pad flags. This instructs the default caps event and query
handlers to pass on the CAPS related queries and events. This simplifies a lot
of elements that passtrough caps negotiation.
Make two utility functions to proxy caps queries and aggregate the result. Needs
to use the pad forward function instead later.
Make the _query_peer_ utility functions use the gst_pad_peer_query() function to
make sure the probes are emited properly.
2011-11-15 11:20:48 +01:00
Wim Taymans
4b216bf73a adapter: remove flush from _unmap 2011-11-10 18:18:24 +01:00
Wim Taymans
6cc7254166 remove query types
It was not really useful
2011-11-09 11:47:10 +01:00
Wim Taymans
9c0d8ca718 Merge branch 'master' into 0.11
Conflicts:
	gst/gstelement.h
	gst/gstghostpad.c
	gst/gstminiobject.c
2011-11-08 12:54:15 +01:00
Tim-Philipp Müller
16dcd5e958 docs: fix Since: markers for API added after 0.10.35 2011-11-08 00:32:36 +00:00
Wim Taymans
6c627481b3 utils: remove _found_tags_ API
remove gst_element_found_tags() and gst_element_found_tags_for_pad(), they are
nothing more than a wrapper around gst_pad_push_event()
2011-11-02 12:06:47 +01:00
Tim-Philipp Müller
4f004eff38 pad: rename GstActivateMode to GstPadActivateMode
These might be useful:
sed -i -e 's/GstActivateMode/GstPadActivateMode/g' `git grep GstActivateMode | sed -e 's/:.*//' | sort -u`
sed -i -e 's/GST_ACTIVATE_/GST_PAD_ACTIVATE_/g'    `git grep GST_ACTIVATE_   | sed -e 's/:.*//' | sort -u`
2011-11-01 00:25:02 +00:00
Tim-Philipp Müller
4e7944b0b9 taglist: rename _new() to _new_empty() and new_full*() to new*() 2011-10-30 22:24:25 +00:00
Wim Taymans
852851edab Merge branch 'master' into 0.11
Conflicts:
	libs/gst/base/gstbasetransform.c
2011-10-27 15:27:19 +02:00
Edward Hervey
df6044f7eb Merging origin/master
Conflicts:
	gst/gstbin.c
	gst/gstbus.c
	gst/gstdebugutils.c
	gst/gstpad.c
	libs/gst/base/gstbaseparse.c
	libs/gst/base/gstbasesrc.c
2011-10-21 10:52:46 +02:00
Sebastian Dröge
b046ba6e3a baseparse: Fix documentation, it's pre_push_frame and not pre_push_buffer 2011-10-20 16:59:01 +02:00
Sebastian Dröge
64493d9603 basebarse: Add detect vfunc to allow subclasses to do format detection before anything else
API: GstBaseParseClass::detect()

This is called with the first buffers until the subclass has finished detection
and only afterwards the original buffers are handled as before. The vfunc allows
detection of the stream format without breaking the upstream framing.
2011-10-20 11:48:24 +02:00
Thiago Santos
e3f2d7db71 baseparse: add getcaps function
Adds a getcaps function to the sink pad to make parsers propagate
downstream caps restrictions to upstream.

The pipeline "audiotestsrc num-buffers=100 ! faac ! aacparse !
"audio/mpeg, version=(int)4, stream-format=(string)adts" ! filesink"
wouldn't work because aacparse wouldn't propagate the adts restriction
upstream to faac.

This patch adds a default getcaps to the sink pad to simply proxy
downstream caps and also adds a 'get_sink_caps' function pointer
to GstBaseParseClass for subclasses that need more refined getcaps.

https://bugzilla.gnome.org/show_bug.cgi?id=661874
2011-10-18 08:04:31 -03:00
Sebastian Dröge
1eb73339b9 baseparse: Fix handling of queued frames
gst_base_parse_push_frame() already frees the frame, no need to
do it another time again.
2011-10-18 10:58:57 +02:00
Wim Taymans
216a877825 baseparse: remove the memory from the tmpbuf
We use a tmpbuf to hold a temporary pointer to the adapter memory. We need to
remove that memory when we no longer need it.
2011-10-17 17:04:10 +02:00
Wim Taymans
ea012d3dd7 pad: GST_FLOW_UNEXPECTED -> GST_FLOW_EOS 2011-10-10 11:33:51 +02:00
Wim Taymans
c6f005fef1 Merge branch 'master' into 0.11 2011-10-06 17:27:47 +02:00
Mark Nauwelaerts
49bd7b40ca baseparse: send duration message when updating internal duration 2011-10-06 14:47:54 +02:00
Wim Taymans
544aa9773a Merge branch 'master' into 0.11 2011-10-04 17:39:17 +02:00
Stas Sergeev
fafbc109f1 baseparse: Return success if optional start/stop method is not provided
This allows to not implement the optional start/stop methods.
2011-10-03 11:40:36 +02:00
Wim Taymans
4f8bb4085f Merge branch 'master' into 0.11
Conflicts:
	libs/gst/base/gstbaseparse.c
2011-10-03 10:06:17 +02:00
Tim-Philipp Müller
0ac0b70c15 baseparse: make estimating the position in query handler actually work
No point estimating if we don't set the result afterwards.
2011-09-30 15:25:20 +01:00
Vincent Penquerc'h
f94701261a baseparse: answer position query in stream time and try upstream first
Let the demuxer have first say as well.

https://bugzilla.gnome.org/show_bug.cgi?id=659485
2011-09-30 15:23:33 +01:00
Wim Taymans
5cf8e68944 Merge branch 'master' into 0.11
Conflicts:
	gst/gstmessage.c
	gst/gstquery.c
	gst/gstregistrychunks.c
	gst/gstsegment.c
	libs/gst/base/gstbasetransform.c
	libs/gst/base/gstbasetransform.h
	libs/gst/base/gsttypefindhelper.c
	plugins/elements/gsttypefindelement.c
2011-08-26 14:37:54 +02:00
Josep Torra
81794a4248 baseparse: use the enum values for 0 and don't abuse on gboolean coincidence
Fixes warning #188: enumerated type mixed with another type reported by ICC.
2011-08-26 14:11:15 +02:00
Josep Torra
ab3c6173b3 baseparse: put the arguments of g_return_val_if_fail in the proper order 2011-08-26 14:11:15 +02:00
Wim Taymans
8170c34c94 Merge branch 'master' into 0.11
Conflicts:
	gst/gstbuffer.h
	gst/gstcaps.c
	gst/gstcaps.h
	gst/gstevent.c
2011-08-22 12:33:35 +02:00
Tim-Philipp Müller
c7f2e85d86 baseparse: don't use == in debug string
It messes up GST_DEBUG=*:5 make foo/bar.valgrind, because
our Makefile looks for '==' as marker of valgrind output.
2011-08-18 20:46:01 +01:00
Tim-Philipp Müller
7043bf9d55 baseparse: fix crash on seek from streaming thread on newsegment event
Event if it's not allowed, we can easily prevent it, so let's do
that.

https://bugzilla.gnome.org/show_bug.cgi?id=656771
2011-08-18 20:44:01 +01:00
Josep Torra
178bdccb76 Fix and clarify debug statements
Fixes build on MacOSX

Signed-off-by: Edward Hervey <edward.hervey@collabora.co.uk>
2011-08-10 11:01:58 +02:00
Tim-Philipp Müller
913e5e310c base: update for query API changes 2011-07-28 11:24:19 +01:00
Wim Taymans
92aa4fede9 Merge branch 'master' into 0.11
Conflicts:
	libs/gst/base/gstbaseparse.c
	libs/gst/base/gstbasesink.c
2011-07-21 16:49:13 +02:00
Tim-Philipp Müller
59441b36b6 baseparse: fix printf format in debug message 2011-07-14 12:45:33 +01:00
Mark Nauwelaerts
e3446a74e0 baseparse: eat incoming caps event
... as it is typically up to baseclass to set proper src caps.
2011-07-11 11:59:18 +02:00
Tim-Philipp Müller
f47c3472df baseparse: fix invalid memory access in debug messages
Don't use buffers that we've given away or unrefed in debug messages.
2011-07-07 14:57:18 +01:00
Koop Mast
ef1b2b0e8f baseparse: fix seekstop
See #653137
2011-06-22 17:05:27 +02:00
Wim Taymans
54fd50bfe1 buffer: add index to _take_memory()
Add an index to gst_buffer_take_memory() so that we can also insert memory at a
certain offset. This is mostly interesting to prepend a header memory block to
the buffer.
2011-06-13 16:31:53 +02:00
Wim Taymans
bbfec45ecc event: add reset_time boolean to flush_stop event
Add a boolean to the flush_stop event to make it possible to implement flushes
that don't reset_time.
Make basesink post async_done with the reset_time property from the flush stop
event.
Fix some unit tests
2011-06-10 11:55:08 +02:00
Wim Taymans
3cbeb3848c baseparse: use caps event instead of setcaps 2011-06-02 19:24:26 +02:00
Wim Taymans
7e6d579301 scheduling: port to new scheduling query 2011-05-24 17:39:56 +02:00
Sebastian Dröge
a46c9c2a62 event: Make SEGMENT event parsing API more consistent with the others 2011-05-18 16:56:43 +02:00
Wim Taymans
e39182a085 Merge branch 'master' into 0.11
Conflicts:
	gst/gstminiobject.c
	gst/gstpad.c
	gst/gstpad.h
	gst/gstplugin.h
	libs/gst/base/gstbaseparse.c
2011-05-18 13:14:57 +02:00
Mark Nauwelaerts
35567592ef baseparse: maintain frame state during frame parsing round
See #650093.
2011-05-18 09:49:35 +02:00
Mark Nauwelaerts
af5061e943 baseparse: provide latency query support 2011-05-18 09:49:22 +02:00
Mark Nauwelaerts
82a6cb39ae baseparse: make minimum frame size handling more efficient and convenient
While some formats allow subclass to determine a specific subsequent
needed frame size, others may to need to scan for markers and can only
request 'additional data' by whatever reasonable available step.

In push mode, trying to minimize additional latency leads to step size
being the next input buffer.  In pull mode, any reasonable step size
(such as already used by buffer caching) can be applied.
2011-05-18 09:49:12 +02:00
Mark Nauwelaerts
ee3344824c baseparse: set correct buffer size 2011-05-18 09:49:02 +02:00
Sebastian Dröge
3d2127f865 Revert "query: allow _make_writable on query handlers"
This reverts commit cf4fbc005c.

This change did not improve the situation for bindings because
queries are usually created, then directly passed to a function
and not stored elsewhere, and the writability problem with
miniobjects usually happens with buffers or caps instead.
2011-05-17 11:21:41 +02:00
Wim Taymans
bdbc069348 Rework GstSegment handling
Improve GstSegment, rename some fields. The idea is to have the GstSegment
structure represent the timing structure of the buffers as they are generated by
the source or demuxer element.
gst_segment_set_seek() -> gst_segment_do_seek()
Rename the NEWSEGMENT event to SEGMENT.
Make parsing of the SEGMENT event into a GstSegment structure.
Pass a GstSegment structure when making a new SEGMENT event. This allows us to
pass the timing info directly to the next element. No accumulation is needed in
the receiving element, all the info is inside the element.
Remove gst_segment_set_newsegment(): This function as used to accumulate
segments received from upstream, which is now not needed anymore because the
segment event contains the complete timing information.
2011-05-16 11:37:52 +02:00
Wim Taymans
cf4fbc005c query: allow _make_writable on query handlers
Pass a GstQuery ** to the query handlers so that they can make the query
writable before using a setter on it.
Port code to new API.
2011-05-10 18:36:33 +02:00
Wim Taymans
c07b57fc05 segment: remove _full version
Rename the _full versions of the functions to the normal function names.
2011-05-09 17:51:07 +02:00
Wim Taymans
24573211c6 Merge branch 'master' into 0.11 2011-05-08 13:14:55 +02:00
Tim-Philipp Müller
dccde2652f baseparse: don't post loads of empty taglists
Only post bitrate updates if there's something to post, don't
post empty taglists if nothing changed.
2011-05-06 23:44:15 +01:00
Wim Taymans
02e5feb2bf pad: avoid using the old GST_PAD_CAPS
Don't use GST_PAD_CAPS but instead use the new gst_pad_get_current_caps()
method.
Avoid setting caps on buffers.
2011-05-06 19:04:54 +02:00
Wim Taymans
c4751ec8c1 Revert "context: use context on buffers instead of caps"
This reverts commit 9ef1346b1f.

Way to much for one commit and I'm not sure we want to get rid of the pad caps
just like that. It's nice to have the buffer and its type in onw nice bundle
without having to drag the complete context with it.
2011-05-05 13:17:08 +02:00
Sebastian Dröge
65eafd9340 Merge branch 'master' into 0.11
Conflicts:
	docs/gst/gstreamer-sections.txt
	gst/gstelementfactory.c
	gst/gstminiobject.c
2011-05-05 12:27:51 +02:00
Wim Taymans
9ef1346b1f context: use context on buffers instead of caps
Put the srcpad context on buffers instead of caps. This allows us to associate
all the relevant info contained in events with a buffer.
2011-05-04 18:59:47 +02:00
Stefan Kost
511f556915 docs: it its %TRUE (constant)
As spotted by Tim.
2011-05-03 14:01:57 +03:00
Stefan Kost
217b209aba docs: add missing parameter docs 2011-05-03 13:03:21 +03:00
Josep Torra
5ccda2f8f4 Small cosmetic cleanups
Make sure the return values from g_return_* are of the right type.
2011-04-25 11:10:47 +02:00
Wim Taymans
24bb414035 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
2011-04-19 16:21:15 +02:00
Tim-Philipp Müller
b35d54dcd1 baseparse: don't deadlock when setting external index
Protect index with its own lock. gst_index_get_writer_id() may take
the object lock internally (the default resolver, GST_INDEX_RESOLVER_PATH,
will anyway), so if we're using that to protect the index as well,
we'll deadlock.

https://bugzilla.gnome.org/show_bug.cgi?id=646811
2011-04-19 13:05:53 +01:00
Tim-Philipp Müller
c364539620 baseparse: make fmtlist constant 2011-04-19 11:51:30 +01:00
Tim-Philipp Müller
94c0bc74ce docs: remove reference to baseparse API that didn't make it 2011-04-16 15:20:08 +01:00
Sebastian Dröge
8bfdd8c817 Merge branch 'master' into 0.11 2011-04-16 09:33:06 +02:00
Sebastian Dröge
f51a23a83c Merge branch 'master' into 0.11 2011-04-16 08:59:58 +02:00
Tim-Philipp Müller
886246661f baseparse: expose gst_base_parse_frame_free() for completeness
API: gst_base_parse_frame_free()
2011-04-15 19:07:55 +01:00
Tim-Philipp Müller
84a92464cf baseparse: init frames on the stack with gst_base_parse_frame_init()
Frames must now be inited this way, can't just zero them
out and use them.
2011-04-15 18:52:18 +01:00
Tim-Philipp Müller
127df9a586 baseparse: more debug logging, minor clean-up
Trace frames, split out code to queue a frame for later.
2011-04-15 18:38:46 +01:00
Tim-Philipp Müller
8fe1924678 baseparse: change gst_base_parse_frame_init() to not take a GstBaseParse argument 2011-04-15 18:00:21 +01:00
Tim-Philipp Müller
e8ccbf4ca9 baseparse: make GstBaseParseFrame handling more bindings-friendly
Change semantics of gst_base_parse_push_frame() and make it take
ownership of the whole frame, not just the frame contents. This
is more in line with how gst_pad_push() etc. work. Just transfering
the content, but not the container of something that's not really
known to be a container is hard to annotate properly and probably
won't work. We mark frames allocated on the stack now with a private
flag in gst_base_parse_frame_init(), so gst_base_parse_frame_free()
only frees the contents in that case but not the frame struct itself.

https://bugzilla.gnome.org/show_bug.cgi?id=518857

API: gst_base_parse_frame_new()
2011-04-15 17:50:46 +01:00
Tim-Philipp Müller
37d7857e18 baseparse: register boxed type for GstBaseFrameParse
To make this usable for bindings.

https://bugzilla.gnome.org/show_bug.cgi?id=518857
2011-04-15 17:47:22 +01:00
Robert Swain
223a1f62be baseparse: Remove unused but set variable
GCC 4.6.0 spits warnings about these.
2011-04-15 10:53:56 +02:00
Wim Taymans
62329c606a baseparse: port to 0.11 2011-04-11 10:53:39 +02:00
Tim-Philipp Müller
d353ddf38e docs: minor fixes for baseparse docs
Class vfunc references still aren't right, no idea what
the correct markup for those is.
2011-04-09 23:02:50 +01:00
Tim-Philipp Müller
2401fe36fd baseparse: minor variable name clean-up 2011-04-08 19:07:02 +01:00
Tim-Philipp Müller
9d98c62f0e baseparse: rename _set_frame_props() to _set_frame_rate()
Seems like the best fit to what it does, and is shorter than
set_frame_properties() which might also have been confusing
because of GstBaseParseFrame.

https://bugzilla.gnome.org/show_bug.cgi?id=518857
2011-04-08 15:44:58 +01:00
Tim-Philipp Müller
5073948380 baseparse: replace format flags with gst_base_parse_set_{passthrough,syncable,has_timing_info}
This is more in line with e.g. GstBaseTransform's API, and makes for nicer
to read code. No getters for now since I don't see any use case for them,
the API is for subclasses, which usually know what format they're
dealing with already and hence know what they've set.

https://bugzilla.gnome.org/show_bug.cgi?id=518857
2011-04-08 15:44:58 +01:00
Tim-Philipp Müller
1874d63808 baseparse: make DRAIN and SYNC flags on baseparse, not the frame, and change to DRAINING and LOST_SYNC
The first because it seems a better fit conceptually, the second
to express booleanness. Also change the accessor macros for subclasses
to GST_BASE_PARSE_DRAINING and GST_BASE_PARSE_LOST_SYNC.

https://bugzilla.gnome.org/show_bug.cgi?id=518857
2011-04-08 15:44:58 +01:00
Tim-Philipp Müller
251dfa402c baseparse: use GQueue instead of GList for queued frames
and make buffer metadata writable before setting caps on queued
buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=646341
2011-04-08 15:44:57 +01:00
Zaheer Abbas Merali
783dbb9a71 baseparse: add GST_BASE_PARSE_FLOW_QUEUED to queue buffers until caps are known
This is useful for parser like flacparse or h264parse which may need to process
some buffers before they can construct the final caps, in which case they may
want to delay pushing the initial buffers until the full and proper caps are
known.

https://bugzilla.gnome.org/show_bug.cgi?id=646341
2011-04-08 15:44:57 +01:00
Tim-Philipp Müller
22b7dfc800 baseparse: add to docs and fix up gtk-doc markup a little
And add Since markers.
2011-04-08 15:44:57 +01:00
Tim-Philipp Müller
4709a26473 baseparse: replace set_seek() with _set_average_bitrate() and FLAG_SYNCABLE
This makes more sense conceptually, since the bitrate may be used
to estimate a seek position if there's no seek table or just for
duration reporting/estimation if we can't seek. Also, even if the
format is not syncable, we could still seek by pushing data from the
start and using the segment to make downstream clip.

https://bugzilla.gnome.org/show_bug.cgi?id=518857
2011-04-08 15:44:57 +01:00
Tim-Philipp Müller
de16d5adb3 baseparse: rename GstBaseFormat to GstBaseFormatFlags and fix up associated API
Also change gst_base_parse_set_format(parse,flags,switch_on) to
gst_base_parse_set_format_flags(parse,flags) which is more in line
with the rest of our API and how the function is used.
2011-04-08 15:44:57 +01:00
Tim-Philipp Müller
f691be223e baseparse: don't expose GstAdapter in public header
None of the existing subclasses needs access to that, so there's
no reason to expose it for now.

https://bugzilla.gnome.org/show_bug.cgi?id=518857
2011-04-08 15:44:57 +01:00
Tim-Philipp Müller
e2bf3647f8 baseparse: move various segment-related members into the private instance struct
If none of the existing subclasses uses these, there's probably no
need to expose them at the moment. Keep the segment itself exposed
though.

https://bugzilla.gnome.org/show_bug.cgi?id=518857
2011-04-08 15:44:57 +01:00
Tim-Philipp Müller
c88a143cb6 baseparse: fix up GType name and make _get_type() function thread-safe
Rename GType from GstBaseParseBad to GstBaseParse.
2011-04-08 15:44:57 +01:00
David Schleef
d6847fd4a1 baseparse: make_metadata_writable() fix 2011-04-08 15:44:56 +01:00
Tim-Philipp Müller
940a47ae09 baseparse: rename GType from GstAudioBaseParseBad to GstBaseParseBad
We use it for video as well now.
2011-04-08 15:44:56 +01:00
Stefan Kost
0774878e92 baseparse: trim trailing whitespace 2011-04-08 15:44:56 +01:00
Stefan Kost
e8f04e76b7 baseparse: use delta-unit flags instead of none 2011-04-08 15:44:56 +01:00
David Schleef
e57cb6b47a baseparse: Create baseparse library 2011-04-08 15:44:56 +01:00
Renamed from gst/audioparsers/gstbaseparse.c (Browse further)