Commit graph

1008 commits

Author SHA1 Message Date
Matej Knopp
f4040d3f6b baseparse: Clear queued frames with other queues 2011-12-12 13:37:25 +01:00
Sebastian Dröge
a6bb6d0fc3 basetransform: Fix code path to come up with possible caps if incompatible caps are provided to buffer_alloc()
Previous code could almost never work and this should be slightly
better.
2011-12-08 18:11:43 +01:00
Sebastian Dröge
57573d8705 basetransform: Fall back to upstream provided caps if suggested caps are not supported by the sinkpad 2011-12-08 18:11:43 +01:00
Sebastian Dröge
aad7225eb5 basetransform: Fall back to upstream provided caps if fixation of suggested caps failed 2011-12-08 18:11:43 +01:00
Sebastian Dröge
26a1ac0ce7 basetransform: Refactor gst_base_transform_buffer_alloc() code
Don't check if upstream provided caps are compatible with upstream
and don't try to fixate these caps. They must be fixated in any case.
2011-12-08 18:11:42 +01:00
Vincent Penquerc'h
e7b3305f70 baseparse: do not use a byte value instead of a time value when bisecting
This fixes FLAC seeking on some FLAC files.
2011-12-07 17:57:49 +00:00
Sebastian Dröge
7fb67e9d6f basetransform: If suggested caps are not compatible with upstream try to come up with compatible caps
Fixes bug #662199.
2011-12-07 09:51:42 +01:00
Tim-Philipp Müller
2666450864 Suppress deprecation warnings in selected files, for g_static_rec_mutex_* mostly
GStaticRecMutex is part of our API/ABI, not much we can do here in 0.10.
2011-12-04 14:38:26 +00:00
Tim-Philipp Müller
5889260d5a Work around deprecated thread API in glib master
Add private replacements for deprecated functions such as
g_mutex_new(), g_mutex_free(), g_cond_new() etc., mostly
to avoid the deprecation warnings. We can't change most of
these in 0.10 because they're part of our API and ABI.
2011-12-04 13:35:38 +00:00
Sebastian Dröge
e6d2da7cf8 basetransform: Always intersect the suggested sink caps with the peer caps
This makes sure that we get correct and complete caps. The suggested caps
could be incomplete, e.g. video/x-raw-rgb without any fields, and by
intersecting with the peer caps we get something usable.

Fixes bug #662199.
2011-11-30 14:01:22 +01:00
Tim-Philipp Müller
4d2cb74850 libs: sprinkle some G_GNUC_MALLOC
Maybe gcc can do something clever with that, or at least
warn us if we don't save the return value somewhere.
2011-11-26 18:58:38 +00:00
Sebastian Dröge
aa9ba2dd4e baseparse: Return template caps instead of other side's peer caps if get_sink_caps vfunc is not implemented
Using gst_pad_proxy_get_caps() breaks backwards compatibility with old
parsers because it will propagate the other side's fields like "parsed"
and "framed" and also breaks parser/converters.

Fixes bug #664221.
2011-11-23 13:42:56 +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
Sjoerd Simons
e97eeb5cd4 basetransform: Only use the cached transform on strictly equal caps
https://bugzilla.gnome.org/show_bug.cgi?id=663333
2011-11-04 17:49:55 +00:00
Tim-Philipp Müller
2a4fca230f collectpads2: use flags enum instead of guint in structure 2011-11-03 22:51:57 +00:00
Tim-Philipp Müller
cf69ce1df6 adapter: simplify gst_adapter_take_list()
Use a stack-allocated GQueue to assemble our GList.
2011-11-01 14:17:21 +00:00
Sjoerd Simons
1aa5b76a6f basetransform: Also fush the cache when changing the upstream caps suggestion 2011-10-28 11:53:32 +02:00
Sjoerd Simons
383d637f85 basetransform: Add debug output when returning a cached transform 2011-10-28 11:50:23 +02:00
Sebastian Dröge
1eb3380973 collectpads2: Fix refcount handling if a buffer was dropped due to clipping 2011-10-28 10:54:19 +02:00
Sebastian Dröge
2f100e86f6 collectpads2: Merge the clip and prepare_buffer function into one 2011-10-28 10:38:24 +02:00
Sebastian Dröge
415f3dd808 collectpads2: Merge clipping API from old collectpads 2011-10-28 10:38:24 +02:00
Tim-Philipp Müller
ab2d45283e basesink: make default query function name show up in gst-inspect 2011-10-28 09:28:14 +01:00
Mark Nauwelaerts
ce88f417b1 collectpads2: avoid hanging in case of sparse newsegment events
... in the extent that a non-waiting pad (so indicated by newsegment)
turns out to provide the best buffer, which is then forced to waiting
for book-keeping purposes, but that should only be temporary.

See bug #415754.
2011-10-28 09:39:00 +02:00
Sebastian Dröge
2a13275985 collectpads2: Use G_DEFINE_TYPE instead of GST_BOILERPLATE 2011-10-28 09:38:35 +02:00
Sebastian Dröge
6f231f89d6 base: Add collectpads2
This handles muxing of sparse/subtitle streams and has
lots of cleanup. Still missing is special support for
live streams but this can be added later without breaking
API/ABI.

Based on the version from the videomixer plugin.
https://bugzilla.gnome.org/show_bug.cgi?id=415754
2011-10-28 09:36:06 +02:00
Jan Schmidt
9a5109b86e basetransform: Fix refcount leak
Don't leak peercaps and a ref to the basetransform when returning
the cached caps.
2011-10-27 23:08:14 +11: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
Vincent Penquerc'h
168e5c0abb basetransform: cache transformed caps where appropriate
Speeds up negotiation a fair bit on a contrived pipeline
with a dozen colorspace conversions.

Hopefully clears out the cache every time it ought to.

https://bugzilla.gnome.org/show_bug.cgi?id=662291
2011-10-20 16:54:27 +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
4c1397d572 baseparse: add since doc to new getcaps function 2011-10-18 18:58:14 -03:00
Stefan Sauer
2e6b434730 logging: more logging and prefer human readable details over memory locations 2011-10-18 15:24:21 +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
Wim Taymans
f08b2203c8 basesrc: also update the stream time 2011-10-18 12:39:03 +02: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
cdd3c303f1 basesrc: properly adjust start time
When we do a non-flushing seek and closed the current segment,
make sure that we open the next segment from where we closed.
2011-10-12 17:17:53 +02:00
Mark Nauwelaerts
49bd7b40ca baseparse: send duration message when updating internal duration 2011-10-06 14:47:54 +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
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
Vincent Penquerc'h
01172b8126 basetransform: send delayed events earlier
Some elements (such as videorate) might push buffers early,
for instance in in transform_ip. We want events (and in particular
any NEWSEGMENT event) to be pushed before that.

This fixes transmageddon wedging on converting a file starting
with a non zero offset to Ogg.

https://bugzilla.gnome.org/show_bug.cgi?id=660165
2011-09-27 12:00:23 +02:00
Vincent Penquerc'h
56b3acb043 basetransform: delay serialized events when src caps are not set yet
https://bugzilla.gnome.org/show_bug.cgi?id=659571
2011-09-21 13:22:02 +02:00
Nicolas Dufresne
f0219b327d basesink: make it easy to override the pad query
Add a vmethod to handle the pad query.
Install a default handler for the pad query.
Use the new query function in filesink
2011-09-08 14:46:59 +02:00
Sebastian Dröge
0bc6d49c95 Revert "basetransform: Use check for subsets and not non-empty intersection to check if caps are compatible"
This reverts commit 5e5cc5e89e.

See bug #658541.
2011-09-08 13:42:52 +02:00
Piotr Fusik
14f5518f3d docs, gst: typo fixes
https://bugzilla.gnome.org/show_bug.cgi?id=658449
2011-09-07 18:03:17 +01:00
Sebastian Dröge
a121713f0c basetransform: If there's no peer we still have to transform ANY caps in getcaps()
Otherwise elements like capsfilter will return ANY caps if no
peer is present instead of the filter caps. The transform_caps()
vfunc could do transformations to the template caps that do not
result in the unmodified template caps.
2011-09-07 16:05:07 +02:00
Sebastian Dröge
5e5cc5e89e basetransform: Use check for subsets and not non-empty intersection to check if caps are compatible 2011-09-06 12:37:16 +02:00
Josep Torra
306e317ae9 typefind: add GST_TYPE_FIND_NONE and use it
Fixes warning #188: enumerated type mixed with another type reported by ICC.
2011-08-26 14:11:15 +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
Sjoerd Simons
0c0dc0441f basetransform: Fix bodged previous commit 2011-08-26 13:02:34 +01:00