Commit graph

3887 commits

Author SHA1 Message Date
Arun Raghavan
bfb78cee42 playsink: Fix documentation for what the audio chain looks like
https://bugzilla.gnome.org/show_bug.cgi?id=679031
2014-03-16 11:02:43 +01:00
Stefan Sauer
6cc7204f95 adder: set a group-id on the stream-start event
Set a default group-id to fix a warning printed by the sink.
2014-03-11 22:30:28 +01:00
Sebastian Dröge
5e364c1d7b decodebin: Buffer up to 5 seconds in multiqueue buffering mode
2 seconds might be too small for some container formats, e.g.
MPEGTS with some video codec and AAC/ADTS audio with 700ms
long buffers. The video branch of multiqueue can run full while
the audio branch is completely empty, especially because there
are usually more queues downstream on the audio branch.
2014-03-07 17:09:24 +01:00
Sebastian Dröge
539eaf73e5 decodebin: Keep the number of buffers after an adaptive streaming demuxer lower
Usually these buffers are multiple seconds large, and having a maximum
of 5 buffers in the multiqueue there can use a lot of memory. Lower
this to 2 for adaptive streaming demuxers.
2014-03-06 22:45:30 +01:00
Sebastian Dröge
274b4eb870 decodebin: Simplify adaptive streaming demuxer code a bit 2014-03-06 22:45:30 +01:00
Tim-Philipp Müller
61fa4c7bb2 typefindfunctions: lower H.263 typefinder max probability
The typefinder returns LIKELY for as little as one possible
sync and no bad sync (not even taking into account how much
data was looked at for that). It's generally just not fit
for purpose, so should just not return anything like LIKELY
at all ever, even more so since it only recognises one out
of ten H263 files, and likes to mis-detect mp3s as H263.

https://bugzilla.gnome.org/show_bug.cgi?id=700770
https://bugzilla.gnome.org/show_bug.cgi?id=725644
2014-03-05 00:41:20 +00:00
Matthieu Bouron
45dfceacdb playbin: improve autoplug_query_caps return
Makes autoplug_query_caps return
downstream_caps + intersect_first(filter_caps, element_caps)

https://bugzilla.gnome.org/show_bug.cgi?id=724828
2014-02-27 21:23:12 +01:00
Matthieu Bouron
5c1167a2c7 playsinkconvertbin: improve gst_play_sink_convert_bin_getcaps return
If we have the peer caps and a caps filter, return peer_caps +
intersect_first (filter, converter_caps) instead of
intersect_first (filter, peer_caps + converter_caps) and preservers
downstream caps preference order.

https://bugzilla.gnome.org/show_bug.cgi?id=724893
2014-02-26 09:35:04 +01:00
Sebastian Dröge
2df1e56bb7 decodebin: If we have a demuxer without dynamic srcpads, just assume no-more-pads
Otherwise we will wait until the multiqueue after the demuxer will
overrun, which is clearly not needed then.
2014-02-23 00:10:01 +01:00
Sebastian Dröge
f149c27a61 decodebin: Also make sure to not duplicate an element factory after a group
If we are using an adaptive stream demuxer, which outputs a non-container
stream, we are putting another multiqueue after the *parser* following
the adaptive stream demuxer. We do not want to add another instance of
the same parser right after this multiqueue.
2014-02-23 00:10:01 +01:00
Sebastian Dröge
41117606dd decodebin: During pre-rolling always use the auto-preroll limits on multiqueues
Even if we're buffering in the multiqueues.
2014-02-23 00:10:01 +01:00
Sebastian Dröge
2d2aa02b77 decodebin: Pass through the seekability information when setting multiqueue limits 2014-02-23 00:10:01 +01:00
Sebastian Dröge
db771185ed decodebin: During exposing of pads don't set the multiqueue limits multiple times to different values
Instead just set them once in the very end to the correct values.
2014-02-23 00:10:01 +01:00
Sebastian Dröge
c4caeb73ce decodebin: Only enable multiqueue buffering once we're pre-rolled
Otherwise we will emit buffering messages not just from the last
multiqueue but also from previous multiqueues... confusing the
application with different percentages during pre-rolling.
2014-02-23 00:10:01 +01:00
Sebastian Dröge
4f32010916 decodebin: Make sure that we always have a second multiqueue for adaptive streaming demuxers
For adaptive streaming demuxer we insert a multiqueue after
this demuxer. This multiqueue will get one fragment per buffer.
Now for the case where we have a container stream inside these
buffers, another demuxer will be plugged and after this second
demuxer there will be a second multiqueue. This second multiqueue
will get smaller buffers and will be the one emitting buffering
messages.
If we don't have a container stream inside the fragment buffers,
we'll insert a multiqueue below right after the next element after
the adaptive streaming demuxer. This is going to be a parser or
decoder, and will output smaller buffers.
2014-02-23 00:10:00 +01:00
Sebastian Dröge
ad51b38b7c uridecodebin: Always use buffering in multiqueue for adaptive streams 2014-02-23 00:10:00 +01:00
Sebastian Dröge
a2837a22a5 uridecodebin: Only add a queue2 for buffering for non-adaptive streaming streams 2014-02-23 00:10:00 +01:00
Thiago Santos
89c9e23bfe uridecodebin: pass on the buffering property for adaptive streams
Adaptive streams should download its data inside the demuxer, so
we want to use multiqueue's buffering messages to control the
pipeline flow and avoid losing sync if download rates are low;

https://bugzilla.gnome.org/show_bug.cgi?id=707636
2014-02-23 00:10:00 +01:00
Sebastian Dröge
a5918b0ab5 playbin: Keep inputselector around until we release its pads
Otherwise there's an interesting race condition when we destroy
the inputselector (actually it will be destroyed later when its state
change message gets destroyed) and afterwards release its sinkpad.

This is the code path when the last channel is removed from the
input selector.

Gave this warning sometimes, for chained oggs or whenever else
we change decode groups:
GStreamer-CRITICAL **: Padname '':sink_0 does not belong to element inputselector0 when removing
2014-02-18 15:06:25 +01:00
Tim-Philipp Müller
6c6619a669 audioconvert: never do mixing for 1->1 channel conversions
MONO and NONE position are the same, for example, but in
general there isn't much to do here for such a conversion.

Fixes problem in audioconvert, which would end up using
a mixmatrix when converting between different mono format
because it thinks MONO positioning is different from
unpositioned channels, which is not the case in this
special case. The mixmatrix would end up being 0.0 so
audioconvert would convert to silence samples.

https://bugzilla.gnome.org/show_bug.cgi?id=724509
2014-02-18 10:48:07 +00:00
Sebastian Dröge
4dd30bbd16 playsink: Only remove the complete text chain if the text pad goes away
If the text pads does not go away we just set the overlay to silent, which
allows us to immediately re-enable subs later again. However before this
change we also released the streamsynchronizer text pads, which deadlocked
because there was still dataflow going on. Just do this only if we remove
the complete chain.

https://bugzilla.gnome.org/show_bug.cgi?id=683504
2014-02-16 15:35:31 +01:00
Sebastian Dröge
2ddc07e93e uridecodebin: Don't leak pad references 2014-02-12 17:34:32 +01:00
Sebastian Dröge
a02678057e playbin: First try to get the pad's current caps, then query caps
The caps query might give us ANY caps while the pad has fixed caps
configured currently.
2014-02-11 16:36:20 +01:00
Sebastian Dröge
57295753d5 playbin: Fix memory leak in autoplugging code
We should not leak element factories ideally.
2014-02-10 16:33:50 +01:00
Sebastian Dröge
c91a4af9ab subtitleoverlay: Remove unused function 2014-02-09 23:17:03 +01:00
Julien Isorce
c9b493b853 videotestsrc: ensure having caps when setting the buffer pool config
It happens if downstream does not propose a buffer pool.
GST_DEBUG=2 gst-launch-1.0 videotestsrc ! fakesink

https://bugzilla.gnome.org/show_bug.cgi?id=723271
2014-01-31 14:09:03 +00:00
Thiago Santos
2fbc04e7bc streamsplitter: push pending events before eos
Push any pending events downstream before pushing eos
2014-01-29 13:58:07 -03:00
Alessandro Decina
6a699b6c40 decodebin: make it possible to register multiple handlers for autoplug-select
Change the way autoplug-select is accumulated so that it's possible to have
multiple handlers. The handlers keep getting called as long as they keep
returning GST_AUTOPLUG_SELECT_TRY.

One practical example of when this is needed is when hooking into playbin's
uridecodebin, which is perhaps not very elegant but the only way to influence
which streams playbin autoplugs/exposes.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=723096
2014-01-28 13:45:07 +11:00
Sjoerd Simons
43237ad0e2 uridecodebin: Drop hardcoded list of media suitable for download buffering
Discussion on IRC indicated that the main reason for this list was to
prevent demuxers that can trigger a lot of seeking from using
progressive buffering using queue2 (which due to being seekable triggers
that behaviour).

However given that upstream can indicate seeks are possible but should
be avoided via a scheduling query, this extra whitelisting shouldn't be
necessary for well-behaved demuxers.

https://bugzilla.gnome.org/show_bug.cgi?id=704933
2014-01-24 22:34:51 +01:00
Wim Taymans
4c8e211e57 videoconvert: tweak the scoring algorithm
Make a little table of conversions and manually score them. Use this
info to define better weights for the scoring algorithm.
give separate scores for doing changes and the impact of the change,
This allows us to avoid conversion when we can but still allow fairly
lossless changes.
The old code did not penalize GRAY conversions, PAL conversions were
punished too low and depth conversions too high.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=722656
2014-01-24 12:19:43 +01:00
Sebastian Dröge
4e3d101aa8 audioresample: It's HAVE_EMMINTRIN_H, not HAVE_XMMINTRIN_H for SSE2 2014-01-20 16:11:04 +01:00
Antoine Jacoutot
daa194b71e audioresample: Fix build on x86 if emmintrin.h is available but can't be used
On i386, EMMINTRIN is defined but not usable without SSE so check for
__SSE__ and __SSE2__ as well.

https://bugzilla.gnome.org/show_bug.cgi?id=670690
2014-01-20 16:08:41 +01:00
Wonchul Lee
c2746d753e playbin: Remove unnecessary assignment
Remove duplicated assignment

https://bugzilla.gnome.org/show_bug.cgi?id=722491
2014-01-18 13:33:57 +01:00
Sebastian Dröge
4f8f5918be playbin: Insert decoders without GstAVElement information between the other decoders
Otherwise they would be preferred over all decoders independent
of their ranks.

https://bugzilla.gnome.org/show_bug.cgi?id=722316
2014-01-18 13:33:57 +01:00
Sebastian Dröge
6b46019abf playbin: Only put parsers and sinks first, not all non-decoders
https://bugzilla.gnome.org/show_bug.cgi?id=722316
2014-01-18 13:33:57 +01:00
Wim Taymans
5df274f824 streamsplitter: handle ACCEPT_CAPS query correctly
We can accept a caps when one of the downstream peers can accept the
caps. This is not the same as checking a subset of the getcaps
result because parsers might accept broader caps than what their getcaps
function returns (See https://bugzilla.gnome.org/show_bug.cgi?id=677401).

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=722330
2014-01-16 16:32:34 +01:00
Wim Taymans
1fa70ac02d videoconvert: don't interpolate chroma in I420 -> RGB
Don't try to interpolate the chroma samples, the used algorithm only
works for horizontal cositing. Let's switch to a faster and safer
version until we handle chroma siting correctly in the fastpaths.
2014-01-13 17:24:01 +01:00
Vincent Penquerc'h
0d66d05c98 videotestsrc: fix unit test breaking on duration query
The new switch caused breaks to not break of the main switch
anymore, causing fall through.
2014-01-10 14:24:12 +00:00
Sebastian Dröge
b21a67f99e videoconvert: Update disted orc files once again 2014-01-10 15:06:23 +01:00
Vincent Penquerc'h
1185fbd29a videotestsrc: do not set TIME duration when asked for another format
This fixes asserts in pipelines such as:

gst-launch-1.0 videotestsrc num-buffers=1000 ! x264enc ! h264parse ! \
   matroskamux name=mux ! filesink location=test.mkv
2014-01-10 09:56:34 +00:00
Sebastian Dröge
4ff4c1c10a videoconvert: Update disted orc files 2014-01-10 09:21:30 +01:00
Wim Taymans
14b5999bca videoconvert: rework YUV->RGB fastpaths
Rework the orc code to be around 10% faster and support arbitrary matrices.
Pass the matrix parameters to the YUV->RGB functions to make them work
for all matrices. This enables more and faster fastpath conversions.

See https://bugzilla.gnome.org/show_bug.cgi?id=721701
2014-01-09 18:19:59 +01:00
Wim Taymans
5ca04cb798 videoconvert: fix I420 to BGRA fast-path some more
Calculate alpha value differently so that we can avoid running out
of registers.
2014-01-09 18:08:41 +01:00
Wim Taymans
38e1541466 videoconvert: remove unused code 2014-01-08 16:20:12 +01:00
Stefan Sauer
86e6f10781 typefind: add support of BWF RF64 a 64bit wav variant
Detect and describe the RF64 Broadcast Wave Format.
Fixes #519220
2014-01-05 23:35:52 +01:00
Sebastian Dröge
eff7866dd0 videotestsrc: Always set pixel-aspect-ratio and interlace-mode in the fixed caps
Otherwise our caps will not be compatible with elements that require a
1/1 pixel-aspect-ratio or progressive video.

https://bugzilla.gnome.org/show_bug.cgi?id=721103
2013-12-30 19:48:29 +01:00
Edward Hervey
ed59e06c57 videorate: Remove useless assignement
Was already set before
2013-12-30 13:45:04 +01:00
Matthieu Bouron
98e0dec715 playback: add ANY caps features to default audio/video raw caps
Allows elements using audio/video caps features to be used by playbin.
2013-12-30 11:25:49 +01:00
Sebastian Dröge
cd4602ecfa videoconvert: Fix I420 to BGRA fast-path alpha setting
This fast-path was adding 128 to every component including
alpha while it should only be done for all components except
alpha. This caused wrong alpha values to be generated.

Also remove the high-quality I420 to BGRA fast-path as it needs
the same fix, which causes an additional instruction, which causes
orc to emit more than 96 variables, which then just crashes.
This can only be fixed in orc by breaking ABI and allowing more
variables.
2013-12-23 14:56:15 +01:00
Sebastian Dröge
218d0702c9 subparse: Add support for parsing LRC subtitles
https://bugzilla.gnome.org/show_bug.cgi?id=678590
2013-12-18 15:52:53 +01:00