Commit graph

2768 commits

Author SHA1 Message Date
Kipp Cannon
4c52f4e625 audioresample: Don't emit DISCONT buffers if no discontinuity happened
audioresample is derived from GstBaseTransform, and one of
GstBaseTransform's traits is that if the derived element does not
produce an output buffer from some input buffer then the first output
buffer after that gets flaged as a discontinuity, whether or not the
buffer actually is discontinuous from the output buffer that preceded
it. When downsampling, the audioresample element requires more than
one input sample for each output sample, and if the ratio of input to
output sample rates is high enough and the input buffers short enough
it can come to pass that the resampler does not receive enough samples
on its input to produce any output.  Currently the resampler returns
GST_BASE_TRANSFORM_FLOW_DROPPED from the transform() method in this case,
causing the next buffer to be flagged as a discontinuity. If subsequent
elements in the pipeline reset themselves on disconts, this can cause
clicks and other undesireable behaviour.

Fixes bug #665004.
2011-11-28 18:03:22 +01:00
Vincent Penquerc'h
e67aa28de9 typefind: typefind UTF-16 and UTF-32
This avoids the MP3 typefinder from getting the highest score
every time it thinks there's something it might possibly be
able to parse.

https://bugzilla.gnome.org/show_bug.cgi?id=607619
2011-11-28 15:58:29 +00:00
Vincent Penquerc'h
96374054ac various: fix pad template leaks
https://bugzilla.gnome.org/show_bug.cgi?id=662664
2011-11-28 13:09:02 +00:00
Josep Torra
05ecdc1246 playsinkconvertbin: make identiy silent 2011-11-25 15:35:39 +01:00
Tim-Philipp Müller
2dc7c2f676 docs: mention explicitly that playbin2 signals are emitted from a streaming thread 2011-11-25 13:01:47 +00:00
Sebastian Dröge
a5535e76e0 decodebin2: Set the multiqueue limits to the playing limits after overrun too
We don't expect any new pads anymore and prerolling is finished now.
2011-11-25 11:12:10 +01:00
Sebastian Dröge
494b2cb1a7 decodebin2: Cache the upstream seekability for demuxer decode chains and use it for the non-preroll multiqueue limits
After preroll the multiqueue limits are still set to the preroll
limits if use-buffering is set to TRUE. In that case we only want
time limits on the multiqueue if upstream is seekable.
2011-11-25 11:12:10 +01:00
Vincent Penquerc'h
59f5d980f6 decodebin2: fix prerolling for low bitrate streams from hlsdemux
Such streams were detected as seekable, as the query on the typefind
element was testing the m3u8 file listing the actual streams, and
not going through the demuxer(s).

We now check for seekability for each multiqueue following a demuxer,
so the query will flow through the elements which might prevent seeking.

https://bugzilla.gnome.org/show_bug.cgi?id=647769
2011-11-25 11:12:10 +01:00
Sebastian Dröge
c6cffcfa19 videorate: Rename ARG_ enums to PROP_
This is more consistent with other code and these are
properties anyway, not arguments
2011-11-24 14:41:56 +01:00
Sebastian Dröge
ec062ef3f2 videorate: Add property to force an output framerate
API: GstVideoRate:force-fps

Changing the framerate during playback is not possible
with a capsfilter downstream if upstream is not using
gst_pad_alloc_buffer(). In that case there's no way in
0.10 to signal to videorate that the preferred framerate
has changed.

This new property will force the output framerate to
a specific value and can be changed during playback.
2011-11-24 14:40:38 +01:00
Sebastian Dröge
683735a01e playsinkconvertbin: Reconfigure if we switch from raw to incompatible raw caps
We might need to add converters and worked in passthrough mode before.
2011-11-24 12:38:54 +01:00
Sebastian Dröge
113546b777 playsinkconvertbin: Override acceptcaps function for the two ghostpads
The ghostpad acceptcaps functions are not valid in this case because
we don't only accept the caps accepted by the target but could also
insert converters. Fixes bug #663892.
2011-11-24 12:37:58 +01:00
Sebastian Dröge
8f165b6206 playsinkaudioconvert: use-volume and use-converters are no construct-only properties anymore
Fixes bug #663893.
2011-11-24 11:34:12 +01:00
René Stadler
da69993a49 playsinkconvertbin: avoid removing children from bin twice
GstBin base class removes children in dispose, so we need to do the same.
2011-11-22 10:05:33 +01:00
Tim-Philipp Müller
7b5e1666a4 playsinkconvertbin: fix visualisations again
Make caps writable before merging other caps into them.
2011-11-11 13:32:23 +00:00
Sebastian Dröge
7875ee11a5 subtitleoverlay: Use gst_caps_merge() instead of gst_caps_union()
This keeps the caps order and is more efficient.
2011-11-04 10:38:39 +01:00
Sebastian Dröge
6e9a302eca playsinkconvertbin: Use gst_caps_merge() instead of gst_caps_union()
This keeps the caps order and is more efficient.
2011-11-04 10:38:38 +01:00
Mart Raudsepp
5c58bcfd15 decodebin2: Post all source pads in stream-topology messages as "element-srcpad" values
This allows us to easily get ahold of all pads on a stream-topology message, including
pre-decoder ones, while "pad" only gives us access to the raw pads (as used by discoverer).
2011-11-03 14:41:08 +01:00
Mart Raudsepp
cee8710817 decodebin2: Use existing "caps" quark for one of the structure sets 2011-11-03 14:40:51 +01:00
Sebastian Dröge
b29a3d3cff playsinkconvertbin: Don't add identity multiple times 2011-11-03 10:07:27 +01:00
Vincent Penquerc'h
7eb8a9aaf6 playsink: send flush start/stop event when we switch elements
https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-11-03 10:05:44 +01:00
Vincent Penquerc'h
0cac680fac playsink: re-add identity where appropriate
https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-11-03 10:05:26 +01:00
Vincent Penquerc'h
c3e94d1c08 playsink: lock the new {set,get}_property functions
https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-11-03 10:04:07 +01:00
Thiago Santos
0a07701164 playsinkconvertbin: Be more consistent with ghostpad targets
Set up targets on READY->PAUSED state change to passthrough by
default. This prevents the targets from being unset on the
first run, while the 'raw' variable would mean that some
target is set.
2011-11-03 10:03:07 +01:00
Thiago Santos
f9ea3fdda8 playsinkconvertbin: No need to remove the identity
The identity element should be handled by the GstBin's cleanup,
removing it on the remove_elements function might remove it
too soon, as this function can be called directly from playsink
2011-11-03 10:02:58 +01:00
Thiago Santos
34f72da9cc playsinkconvertbin: Adding some debug messages
Adds a couple debug messages and some g_assert to make debugging
easier
2011-11-03 10:02:49 +01:00
Thiago Santos
80971a3b33 playsink-videoconvert: Fix warning on build
Remove unused variable
2011-11-03 10:02:39 +01:00
Vincent Penquerc'h
ae3ba53391 playsink: handle after-the-fact changes in converters/volume booleans
The playsink was nastily poking a boolean in the structure.
Make those booleans properties, so we are told when they change,
and rebuild the conversion bin when they do.

Some cleanup to go with it too.

https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-11-03 10:02:31 +01:00
Vincent Penquerc'h
c08a23169d playsink: handle NULL cached caps in getcaps
https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-11-03 10:02:01 +01:00
Vincent Penquerc'h
3939457b00 playsink: consider both passthrough and converter caps in getcaps
Since we can switch between both modes.

https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-11-03 10:01:52 +01:00
Vincent Penquerc'h
b34dac9a87 playsink: cache inner converter bin caps
https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-11-03 09:58:03 +01:00
Vincent Penquerc'h
6925c02bc2 playsink: keep both raw and non raw pipelines at all times
and switch between them as needed.

https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-11-03 09:57:46 +01:00
Vincent Penquerc'h
69d98d08c1 playsink: only compare against the media type we expect
ie, audio/x-raw- for audio, video/x-raw- for video.

Add a trailing - to be more specific. I doubt there's anything
like audio/x-rawhide or something, but you never know.

https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-11-03 09:57:32 +01:00
Vincent Penquerc'h
fd27e34582 playsink: refactor the converter bins since they are almost identical
https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-11-03 09:57:21 +01:00
Vincent Penquerc'h
c8e0d215cb playsink: fix passthrough mode (hopefully)
The code was doing counterintuitive rewiring of pads when the
bin did not contain any elements. We now add an identity element
in that case, which makes it simpler, and should fix the AC3
passthrough mode when using pulseaudio (but I don't see the bug
here so can't test).

https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-11-03 09:56:40 +01:00
Vincent Penquerc'h
2b84b328b1 playsink: handle NULL ghost pad target
For the src pad anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=661262
2011-11-03 09:56:26 +01:00
Sebastian Dröge
a583b63722 Revert "playsinkaudioconvert: Fix warning when there is no target pad yet"
This reverts commit f35c51c149.

Better patch coming soon.
2011-11-03 09:56:14 +01:00
Tim-Philipp Müller
b6c424018b subtitleoverlay: don't use soon-to-be-deprecated gst_filter_run() 2011-10-30 20:00:47 +00:00
Philip Jägenstedt
88491ff2e7 typefind: extract SOF marker in jpeg typefinder
The SOF types are defined by http://www.w3.org/Graphics/JPEG/itu-t81.pdf

This is needed to make sure that we plug a jpeg decoder that
can handle the type of JPEG we have (e.g. lossless JPEG)

https://bugzilla.gnome.org/show_bug.cgi?id=556648
2011-10-28 09:45:02 +01:00
Jan Schmidt
f35c51c149 playsinkaudioconvert: Fix warning when there is no target pad yet 2011-10-27 00:23:27 +11:00
Nicolas Dufresne
cf9da5c280 decodebin2: Link elements before testing if they can reach the READY state
This is made possible by filtering errors. This is required to let
harware accelerated element query the video context. The video context
is used to determine if the HW is capable, and thus if the element is
supported or not.

Fixes bug #662330.
2011-10-22 08:27:31 +02:00
René Stadler
54be243757 playbasebin: remove avoidable call to gst_object_set_name 2011-10-21 22:24:14 +02:00
René Stadler
0a5fcbb080 audioconvert: bury dead test program 2011-10-21 22:24:14 +02:00
René Stadler
6ffaccd284 subtitleoverlay: fix leaks of pad templates and internal proxy pads 2011-10-19 19:47:38 +02:00
René Stadler
56419cce77 subtitleoverlay: fix leak of element reference through pad block
If the pad block never happens because there is no data flow at all, the
callback is never fired and the reference is never released. This causes a
reference cycle between the pad and element, so valgrind is not very vocal
about it (memory is still reachable).
2011-10-19 19:47:38 +02:00
René Stadler
becba526d9 subtitleoverlay: fix event unref in (rare) error case 2011-10-18 13:02:43 +02:00
Vincent Penquerc'h
5e9862b2ba decodebin2: fire drained signal where appropriate
This will allow playbin2 to send its about-to-finish signal.
Taken out (apparently by mistake) by the EOS rewrite in july.

https://bugzilla.gnome.org/show_bug.cgi?id=661202
2011-10-17 15:36:25 +02:00
Brian Cameron
ded27cc61a videotestsrc: fix LDADD missing GST_LIBS 2011-10-10 13:11:59 +02:00
Vincent Penquerc'h
70239887e8 audiotestsrc: add missing break
And make violet noise usable

https://bugzilla.gnome.org/show_bug.cgi?id=661105
2011-10-06 20:45:09 +02:00
Vincent Penquerc'h
8d617f4037 playsink: fix caps negotiation through the new convenience bins
The bins' getcaps was bypassing the inner elements, and thus
failing to account for the caps transformations they allow,
which caused YUV video pipelines to fail with ximagesink, which
does not support YUV, even though the convenience bin includes
a colorspace converter for just this purpose.

https://bugzilla.gnome.org/show_bug.cgi?id=660816
2011-10-06 20:43:43 +02:00