Commit graph

4142 commits

Author SHA1 Message Date
Jan Schmidt
968e28a818 subtitleoverlay: Consider all caps for overlays, not just the first.
Check all supported caps on the overlay video pad, not just the
first of (possibly) many.
2014-04-06 22:28:27 +10:00
Jan Schmidt
98482c3a0e playbin: Drop reference to any source element in NULL state
Drop the reference instead of waiting for either finalize(), or
for a new source when reused. Everyone else already forgot about
the old source.
2014-04-04 02:15:53 +11:00
Arun Raghavan
f4cab18ec1 playback: Add video-/audio-filter properties
This provides an audio-filter and video-filter property to allow
applications to set filter elements/bins. The idea is that these will
e
applied if possible -- for non-raw sinks, the filters will be skipped.

If the application wishes to force the application of the filters, this
can be done by setting the new flag introduced on playsink -
GST_PLAY_FLAG_FORCE_FILTERS.

https://bugzilla.gnome.org/show_bug.cgi?id=679031
2014-03-16 18:38:29 +01:00
Sebastian Dröge
1bda077374 Revert "playback: Add video-/audio-filter properties"
This reverts commit fb8fdedb4f.
2014-03-16 18:38:25 +01:00
Arun Raghavan
fb8fdedb4f playback: Add video-/audio-filter properties
This provides an audio-filter and video-filter property to allow
applications to set filter elements/bins. The idea is that these will be
applied if possible -- for non-raw sinks, the filters will be skipped.

If the application wishes to force the application of the filters, this
can be done by setting the new flag introduced on playsink -
GST_PLAY_FLAG_FORCE_FILTERS.

https://bugzilla.gnome.org/show_bug.cgi?id=679031
2014-03-16 18:35:57 +01:00
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
Sebastian Dröge
bc2342e4ad subparse: Add typefinder for LRC subtitles 2013-12-18 15:52:53 +01:00
Stefan Sauer
51038d70aa pbutils: add typefinder and descriptions for audio/x-xi
xi files can be read by libsndfile.
2013-12-17 18:06:12 +01:00
Wim Taymans
6db3b535eb uridecodebin: copy sticky events 2013-11-29 17:30:09 +01:00
Wim Taymans
a7151d0b3e decodebin2: copy sticky events 2013-11-29 17:26:13 +01:00
Tim-Philipp Müller
1d40b1d2bb tcp: fix compilation with MSVC
error C2440 at line 165 of gsttcpserversink.c
type cast error: cannot convert from GSocket* to GstMultiSinkHandle
2013-11-28 16:24:13 +00:00
Wim Taymans
65e492a403 decodebin2: activate ghost pad before targetting
Activate the decodebin2 pad before setting the target. This makes sure
that the events are copied.
2013-11-28 11:27:23 +01:00
Sebastian Dröge
0e9806a03e playsink: Fix visualizations if no visualization plugin was set
https://bugzilla.gnome.org/show_bug.cgi?id=712280
2013-11-26 12:03:24 +01:00
Sebastian Dröge
eb7cae8033 typefind: Add typefinder for OpenEXR 2013-11-23 20:15:09 +01:00
Jihyun Cho
a81b2380cf subparse: fix null pointer access in sami parser
https://bugzilla.gnome.org/show_bug.cgi?id=712805
2013-11-21 16:34:04 +00:00
Tim-Philipp Müller
5d7125413e subparse: g_memmove() is deprecated
Just use plain memmove(), g_memmove() is deprecated in
recent GLib versions.

https://bugzilla.gnome.org/show_bug.cgi?id=712811
2013-11-21 15:19:47 +00:00
Tim-Philipp Müller
b1ff48c1a1 docs: remove old 0.10 Since markers
They're just confusing.
2013-11-16 16:10:07 +00:00
Reynaldo H. Verdejo Pinochet
8d9dc05245 typefind: Fix identification of some MPEG files
Make sure we begin by peeking at MPEG2_MAX_PROBE_LENGTH
bytes.

Fixes:

https://bugzilla.gnome.org/show_bug.cgi?id=678011
2013-11-14 23:46:12 -03:00
Thibault Saunier
ddf4ca2203 playback: Add subpicture/x-dvb as raw caps
https://bugzilla.gnome.org/show_bug.cgi?id=710325
2013-10-30 22:28:43 +01:00
Antonio Ospite
fdfc6baf14 videoscale: fix adding borders when NV12 is used
When the frame buffer is NV12 the borders are not added at all, fix that
and fill them to black.

https://bugzilla.gnome.org/show_bug.cgi?id=711003
2013-10-30 18:38:21 +01:00
Matthieu Bouron
22f411378e videoconvert: remove unneeded guint comparaison
https://bugzilla.gnome.org/show_bug.cgi?id=710760
2013-10-25 12:42:19 +01:00
Thibault Saunier
4305e1c33e encodebin: Handle changes in encoding_profile::restriction during playback
There are cases where we want to change the restrictions caps during
playback, handle that in encodebin.

https://bugzilla.gnome.org/show_bug.cgi?id=709588
2013-10-09 15:25:19 -03:00
Thiago Santos
c2eb3d4e71 videotestsrc: implement duration query
Add duration query to videotestsrc, it can answer this query when
the num-buffers property is set.

https://bugzilla.gnome.org/show_bug.cgi?id=709646
2013-10-08 16:10:54 -03:00
Thiago Santos
866f132821 videotestsrc: implement reverse playback
Decrement the n_frames counter when doing reverse playback to
have timestamps and offsets reducing instead of increasing

https://bugzilla.gnome.org/show_bug.cgi?id=701813
2013-10-08 09:34:47 -04:00
Matej Knopp
12f85c325d audioconvert: Map buffer as READWRITE if the buffer and memory is writable
and only use the input buffer as temporary buffer in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=709408
2013-10-04 14:02:06 +02:00
Sebastian Dröge
dd4fe544bc playsink: If the visualisation is changing and reconfiguration is pending, do it all during reconfiguration
Otherwise we will have two pad blocks that want to use the same mutex
and block each other via the streamlock.

https://bugzilla.gnome.org/show_bug.cgi?id=709210
2013-10-02 15:03:46 +02:00
Sreerenj Balachandran
ebaa714c9f typefind: Add typefind function for H265
https://bugzilla.gnome.org/show_bug.cgi?id=708680
2013-10-01 23:14:33 +02:00
Thiago Santos
f8d8a56d7b playbin: make sure elements are in null before disposing
If a pipeline fails to preroll, it might happen that the sinks are
put into READY state from playbin's sink activation, but they are never
set to playsink, so they aren't being managed by a GstBin and will keep
their READY state until they are unreffed, leading to a warning.

Prevent this by always forcing them to NULL when deactivating a group

https://bugzilla.gnome.org/show_bug.cgi?id=708789
2013-10-01 17:53:05 -03:00
MathieuDuponchelle
f330c01412 adder: Don't take channel mask in consideration in mono or stereo
This could cause negotiation to fail.

https://bugzilla.gnome.org/show_bug.cgi?id=708633
2013-09-28 13:32:58 +02:00
Matej Knopp
2f0993a95d audiorate: clip buffer before pushing it
https://bugzilla.gnome.org/show_bug.cgi?id=708953
2013-09-28 11:41:07 +02:00
Sebastian Dröge
cac572ec5d playbin: Make sure to cache context types we did not store yet
https://bugzilla.gnome.org/show_bug.cgi?id=708668
2013-09-24 12:47:26 +02:00
Mathieu Duponchelle
663f71a5dd adder: send pending segment out before checking for EOS
Otherwise there would be cases where it would not send its segment
out when the first collected after getting it would already yield EOS.

https://bugzilla.gnome.org/show_bug.cgi?id=708590
2013-09-24 10:04:37 +02:00
Sebastian Dröge
78b0e16773 playbin: Implement context caching for sinks that are not in playsink yet 2013-09-18 22:39:25 +02:00
Sebastian Dröge
e21d3d214a playbin: No need to set the GstContext on the sink before activating it
This is all handled by the GstBin code now.
2013-09-18 22:39:25 +02:00
Wim Taymans
58e6f33e35 videoscale: fix 4tap for RGB15 and RGB16
Fix component ordering, it's wrong in both the scanline and merge
function so it cancels eachother out and isn't really a except for
loss of precision of the green component.
Fix calculation of the filter weight
2013-09-12 12:27:19 +02:00
Wim Taymans
1ede455199 videoscale: optimize merge for RGB15 and RGB16 2013-09-12 12:27:19 +02:00
Wim Taymans
b3e5d55040 videoscale: remove redundant MAX
The checks above make it inpossible for the value to be smaller than
what we check against with the MAX call.
2013-09-12 12:27:19 +02:00
Wim Taymans
a156fe4a1a videoscale: fix RGB15 masks 2013-09-10 16:24:56 +02:00
Wim Taymans
85c572a57e videoscale: simplify YUYV and UYVY linear scaling
Simplify the code and make it handle odd width
2013-09-10 16:24:56 +02:00
Wim Taymans
ccf53052a0 videoscale: small cleanups
Use BLEND macro
Fix NV12 corner case
2013-09-10 16:24:56 +02:00
Wim Taymans
d365b68517 videoscale: fix RGB15 masks 2013-09-10 16:24:56 +02:00
Wim Taymans
d7c02f389f videoscale: simplify nearest scaling
Round the accumulator to avoid later checks
Remove some bound checks that would never trigger
Fix odd width scaling
2013-09-10 16:24:56 +02:00
Wim Taymans
c8cbcb6f02 videoscale: pick nearest line in scaling
Use rounding to pick the nearest line instead of rounding down.
2013-09-10 16:24:55 +02:00
Loïc Minier
8492b956cd playback: fix docs of convert-sample action signal
convert-sample returns a GstSample, not a GstBuffer.

https://bugzilla.gnome.org/show_bug.cgi?id=707660
2013-09-07 14:58:46 +01:00
Wim Taymans
9b4e2b4b36 videoconvert: disable fastpath for odd width on some formats 2013-09-06 12:45:36 +02:00
Wim Taymans
ede804041c videotestsrc: flush pending lines on odd height 2013-09-05 17:46:03 +02:00
Wim Taymans
e97f6401de videoconvert: add additional width/height constraints
Some of the fastpath function can only work with aligned widht/height
so make sure we check this as well when choosing a fastpath.
Add fastpath for I420/YV12 -> BGRx
2013-09-05 17:22:50 +02:00
Wim Taymans
ce2b40670a videoconvert: don't convert too much with odd width 2013-09-05 16:26:33 +02:00
Wim Taymans
700afbf6fd videoconvert: handle lines in one go
Handle odd heights in 1 go when no vertical subsampling is used.
2013-09-05 11:05:36 +02:00
Wim Taymans
ce2ad4ae4a videoconvert: fix height round down 2013-09-05 11:04:03 +02:00
Wim Taymans
22da49a55c videoconvert: also allocate temp lines in fastpath
Some of the fastpath functions need tmplines, so make sure we allocate some in
the fastpath too.

This avoids SEGFAULTs with odd heights.

See https://bugzilla.gnome.org/show_bug.cgi?id=663248
2013-09-04 17:36:29 +02:00
Wim Taymans
579be969e5 videoconvert: add more fastpaths
Also reuse the I420 code for YV12 because it can handle the swapped UV fields
just fine.
2013-09-04 15:10:50 +02:00
Alex Ashley
7240e2e38c typefind: Added "dash" and "avc3" fourCC codes to qt_type_find.
This commit adds detection of the "dash" and "avc3" compatible brands
in qt_type_find.

Amendment 2 of ISO/IEC 14496-15 (AVC file format) is defining a new
structure for fragmented MP4 called "avc3". The principal difference
between AVC1 and AVC3 is the location of the codec initialisation
data (e.g. SPS, PPS). In AVC1 this data is placed in the initial MOOV
box (moov.trak.mdia.minf.stbl.stsd.avc1) but in AVC3 this data goes in
the first sample of every fragment (i.e. the first sample in each mdat
box).  The principal reason for avc3 is to make it easier for client
implementations, because it removes the requirement to insert the
SPS+PPS in to the decoder pipeline every time there is a representation
change.

https://bugzilla.gnome.org/show_bug.cgi?id=702004
2013-09-04 13:33:59 +02:00
Wim Taymans
c731f1cba0 videoconvert: only chroma subsample when needed 2013-09-03 17:37:14 +02:00
Wim Taymans
10b3b88e9c videoconvert: fix handling of chroma resample
Increase the number of temporary lines that we need, it is possible that the
up and downsampling offsets are out of phase and that we need to keep some
extra lines around. Also copy the unhandled output lines for the next round
instead of overwriting them.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=706823
2013-09-03 15:42:44 +02:00
Wim Taymans
cfb7b51c08 videoconvert: improve debug 2013-09-03 15:41:56 +02:00
Tim-Philipp Müller
0715e73725 audioconvert: improve fixate_format function readability even more
Do the flags comparisons only once and re-use the result.
2013-08-23 19:47:57 +01:00
Tim-Philipp Müller
f317061b9c audioconvert: simplify fixate_format function some more
If we have no output format yet, any format will do. The
!out_info condition existed in every path, so just split
it our for clarity. KISS.
2013-08-23 19:43:14 +01:00
Tim-Philipp Müller
7a481c13ae audioconvert: make fixate function more readable
Use some variables to replace accessor macros to make code
a little bit mor readable.
2013-08-23 19:11:17 +01:00
Tim-Philipp Müller
f448977dbd audioconvert: remove unnecessary deep nesting in fixate function
Makes it easier to read and removes two levels of indentation.
2013-08-23 18:53:48 +01:00
Sebastian Dröge
cebae4514a audioconvert: If we have to lose precision, try to lose as less precision as possible
https://bugzilla.gnome.org/show_bug.cgi?id=706624
2013-08-23 18:52:50 +02:00
Sebastian Dröge
ec9b17479d typefind: Add typefinder for video/x-pva
https://bugzilla.gnome.org/show_bug.cgi?id=158719
2013-08-22 14:23:43 +02:00
Carlos Rafael Giani
e8e8fa22f3 typefind: improved and extended typefinder for module music formats
introduced new caps: audio/x-mod, modtype : { xm, okt, mod, ptm, ... }

https://bugzilla.gnome.org/show_bug.cgi?id=706061
2013-08-19 10:32:26 +02:00
Sebastian Dröge
802d734a27 Revert "typefind: improved and extended typefinder for module music formats"
This reverts commit 4c79f35c7a.

It causes some MP4 files to be detected as mod files.
2013-08-16 12:12:05 +02:00
Carlos Rafael Giani
4c79f35c7a typefind: improved and extended typefinder for module music formats
introduced new caps: audio/x-mod, modtype : { xm, okt, mod, ptm, ... }

https://bugzilla.gnome.org/show_bug.cgi?id=706061
2013-08-16 09:34:48 +02:00
Jie Yang
5640ba17c8 typefind: ADTS/AAC, find more aac sync to select correctly
https://bugzilla.gnome.org/show_bug.cgi?id=691462
2013-08-15 13:26:38 +02:00
Sebastian Dröge
61c1d15ce7 playsink: Don't set sink to NULL if a new one is set while the old one is still in use 2013-08-14 15:43:53 +02:00
Tim-Philipp Müller
a2ebeb8357 gio: fix printf format compiler warning 2013-08-14 11:43:50 +01:00
Sreerenj Balachandran
81782144d9 typefind: Add typefind function for WebP image format
https://bugzilla.gnome.org/show_bug.cgi?id=705826
2013-08-12 14:41:00 +01:00
Jonathan Matthew
cc1de5ae94 gio: make better use of the cached buffer
When playing mp3 files from a smb server, we get 64k read requests
that mostly overlap.  Without using the cache to partially satisfy
these, we send these requests straight to the server, resulting in
a lot more network traffic than necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=705415
2013-08-12 15:24:31 +02:00
Sebastian Dröge
b22f046cbc streamsynchronizer: Set proxy flags on the pads and use default event handler for simplicity
https://bugzilla.gnome.org//show_bug.cgi?id=705555
2013-08-12 13:02:15 +02:00
Thibault Saunier
4afdc04089 adder: Raw buffers DTS should always be CLOCK_TIME_NONE 2013-08-06 15:11:05 +02:00
Thibault Saunier
a174ff25bc adder: set DTS and PTS, sync on DTS 2013-08-06 12:25:44 +02:00
Arnaud Vrac
a8df760c96 playbin: check for tags on the right combiner instance
The get-tags actions are not working in all cases, because the track
number is used to resolve the stream combiner instead of the stream
type.

https://bugzilla.gnome.org/show_bug.cgi?id=705369
2013-08-03 17:17:10 +01:00
Edward Hervey
258aca37dd videotestsrc: Demote ERROR statement back to DEBUG
It crawled in with david's latest commit
2013-08-02 11:00:06 +02:00
David Schleef
0c4beda8f0 videotestsrc: Add pinwheel and spokes patterns 2013-07-31 11:37:33 -07:00
Matej Knopp
496dd67859 videorate: ignore GAP event
videorate automatically fills gaps with the previous frames.

https://bugzilla.gnome.org/show_bug.cgi?id=705048
2013-07-29 08:24:06 +02:00
Matej Knopp
470531d56e audiorate: ignore GAP event
audiorate automatically fills gaps with silence.

https://bugzilla.gnome.org/show_bug.cgi?id=705048
2013-07-29 08:23:43 +02:00
Sebastian Dröge
b12cd5432a multisocketsink: Fix handling of partial writes and WOULD_BLOCK errors 2013-07-28 13:52:28 +02:00
Sebastian Dröge
692fd81ac7 multifdsink: Update current time after every write
Each write will update the last_activity_time and otherwise we would
compare against a too old current time and immediately timeout because
current time is smaller than last activity time (overflow).
2013-07-28 13:23:41 +02:00
Sebastian Dröge
930bfe3cbc multihandlesink: Update current time after every write
Each write will update the last_activity_time and otherwise we would
compare against a too old current time and immediately timeout because
current time is smaller than last activity time (overflow).
2013-07-28 13:22:17 +02:00
Edward Hervey
46ce07333b videotestsrc: Initialize GstVideoInfo in ::start()
Otherwise we end up with bogus values and races
2013-07-26 16:14:05 +02:00
Edward Hervey
96efe720a1 videotestsrc: Don't error on not-negotiated
Base classes will handle re-negotiation if needed, but emitting an
error message will make applications stop.
2013-07-26 16:14:05 +02:00
Edward Hervey
9dd0e6cccc ext/gst: Ensure default query/event handlers are used
And in some cases, just remove our implementation that does nothing
2013-07-26 16:08:35 +02:00
Tim-Philipp Müller
ef5c6d351f typefinding: don't detect mp3 based on just a few bits
Remove dodgy code that detects mp3 with as little as
a valid frame sync at the beginning. This was only used
in some unit tests in -good where there were only a few
bytes after the id3 tag. We now require at least two
frame headers.

Fixes mis-dection of text files with UTF-16 LE BOM as mp3.

https://bugzilla.gnome.org/show_bug.cgi?id=681368
2013-07-25 13:20:11 +01:00
Sebastian Dröge
0bd0c925e3 playsink: Remove two unused variables 2013-07-23 13:42:40 +02:00
Sebastian Dröge
e4b1a58675 subtitleoverlay: Remove some more unneeded segment tracking 2013-07-23 13:41:55 +02:00
Sebastian Dröge
436ea03362 playsinkconvertbin: Remove obsolete segment tracking
This is now all handled automatically with sticky events.
2013-07-23 13:36:09 +02:00
Sebastian Dröge
f92da706fd playbin: Ensure that everything in a GstSourceGroup gets the same group-id
Including streams from external subtitle files. If not everything implements
the group-ids playbin invents its own.
2013-07-23 12:42:50 +02:00
Sebastian Dröge
94fc577dd5 playsink: Fix handling of colorbalance element if the sink does not implement it 2013-07-23 12:35:46 +02:00
Sebastian Dröge
0947c7ab30 playsink: Improve segment handling in the custom flushing for subtitle stream switches
This code needs a lot more work to be improved for 1.0.
2013-07-23 11:13:19 +02:00
Sebastian Dröge
33cba1054d subtitleoverlay: Segment events are sticky now and propagated automatically when needed 2013-07-23 11:11:33 +02:00
Sebastian Dröge
d4b48ec70d streamcombiner: Proxy all sink events downstream
Thanks to Mathieu Duponchelle for noticing this regression
introduced with the last change.

https://bugzilla.gnome.org/show_bug.cgi?id=704706
2013-07-23 09:14:23 +02:00
Sebastian Dröge
2465895266 streamsynchronizer: Implement grouping of streams via the group-id
https://bugzilla.gnome.org/show_bug.cgi?id=704427
https://bugzilla.gnome.org/show_bug.cgi?id=704408
2013-07-22 15:24:13 +02:00
Sebastian Dröge
9bd140d3b7 streamcombiner: Fix locking
We have to hold the streams-lock when iterating over all pads,
also the stream-lock of the pad is already locked when we receive
EOS.

Call gst_pad_event_default() for the correct default handling of
events.
2013-07-22 08:08:27 +02:00
Mathieu Duponchelle
2f8b0f1e34 encoding: fix EOS handling in streamsplitter / combiner.
This commit adds a streamcombinerpad with an is_eos field.
When streamcombiner receives an EOS on one of its pads, it
forwards it all its other pads are EOS.
This commit also removes the notion of "stream-switching-eos".
2013-07-21 20:25:54 -04:00
Tim-Philipp Müller
7d16f95730 subparse: use g_strdup() and friends
Fixes build issue on windows, but is also better seeing that
these string are going to get freed with g_free() and not free().
2013-07-17 09:04:47 +01:00
Tim-Philipp Müller
3eea81e4a2 subparse: don't leak parse context for sami and qttext
In gst_sub_parse_dispose() parser_type will be UNKNOWN,
so these deinit calls were never executed. And we should
clean up the parser state in the downwards state change
anyway.
2013-07-16 18:31:46 +01:00
Young-Ho Cha
f597efe24b subparse: remove libxml dependency for sami parser and re-enable sami parser
To celebrate 2013.gnome.asia, updated sami parser for gstreamer 1.x. :D

Remove conditional block for check libxml usage and
implement a simple html markup parser for the sami
parser.

https://bugzilla.gnome.org/show_bug.cgi?id=693056
2013-07-16 18:04:02 +01:00
Sebastian Dröge
432b092247 playbin: Don't prefer decoders for which we found a matching sink
It doesn't make much sense.
2013-07-16 12:21:44 +02:00
Sebastian Dröge
4cfda00120 playbin: Also consider possible converters for raw streams when selecting compatible sink/source combinations
https://bugzilla.gnome.org/show_bug.cgi?id=704285
2013-07-16 11:22:35 +02:00
Sebastian Dröge
5ee98c146e playbin: Fix sorting for decoder factories for which we didn't find a compatible sink
They might just need some converters for raw audio/video.

https://bugzilla.gnome.org/show_bug.cgi?id=704285
2013-07-16 09:32:31 +02:00
Sebastian Dröge
10c91ea5b5 playbin: Don't print a warning when setting a sink to NULL
https://bugzilla.gnome.org/show_bug.cgi?id=704194
2013-07-15 09:10:30 +02:00
Sebastian Dröge
edecd7eec3 playbin: Properly destroy and set to NULL sinks that don't work 2013-07-12 12:05:37 +02:00
Alban Browaeys
f174c450c9 playbin: Fix logic to detect if a stream-change is currently pending
Fixes duration reporting in gapless playback between files.

https://bugzilla.gnome.org/show_bug.cgi?id=585969
2013-07-12 09:54:06 +02:00
Sebastian Dröge
9ab6ab4257 playbin: Only give sinks a new bus if they have no parent yet
Otherwise we will remove the bus that would proxy messages to playsink
and never set it again. If the sink is already in playsink, all failures
are fatal anyway as it's either a sink that worked before or one that
was set by the user.

https://bugzilla.gnome.org/show_bug.cgi?id=701997
2013-07-10 17:17:05 +02:00
Sebastian Dröge
d7f1d9954f playbin: Store a/v/t sinks locally too, not just in playsink 2013-07-10 13:22:04 +02:00
Sebastian Dröge
4c1fc76407 playsink: ref_sink() any sinks that are set on playsink
Otherwise the behaviour of the properties is inconsistent.
2013-07-10 13:21:29 +02:00
Sebastian Dröge
043c1888f3 streamsynchronizer: Non-TIME segment streams are not waiting automatically
This was leftover code from porting to 1.0 and fixes the playbin
unit test.

https://bugzilla.gnome.org/show_bug.cgi?id=701943
2013-07-10 13:00:21 +02:00
Sebastian Dröge
f68b6c2626 playbin: Change sink ownership handling to be a bit more sane
playbin will now only activate the sinks in a single place and
will never change the states of any sinks that are owned by
playsink.

Also handle text-sinks the same way as audio/video sinks inside
playbin.
2013-07-09 14:57:05 +02:00
Thibault Saunier
38790e5757 adder: Do not send flush_start event with the stream lock taken
FLUSH_START is not serialized, so the lock should not be taken when
sending it.
2013-07-04 22:10:13 -04:00
Tim-Philipp Müller
ba32b2e16b audioresample: make explicit that neon is disabled and why
https://bugzilla.gnome.org/show_bug.cgi?id=703477
2013-07-03 09:44:32 +01:00
Carlos Rafael Giani
1b48d431f4 audioresample: disable 16-bit integer NEON support
it seems to be broken (produces no audio), plus the performance gain
is small

Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
2013-07-03 08:14:42 +02:00
Sebastian Dröge
7c28c180ec playbin: If we had a previous autoplugged sink, try to reuse it
https://bugzilla.gnome.org/show_bug.cgi?id=701997
2013-07-02 14:25:28 +02:00
Sebastian Dröge
b3a15872b7 playsink: If we switch sinks, make sure that the old sink is set to NULL 2013-07-02 14:18:20 +02:00
Sebastian Dröge
841d738f7c playbin: Don't change the state of sinks that we passed to playsink already 2013-07-02 14:02:57 +02:00
Sebastian Dröge
c725591010 playsink: Consider new audio/video sinks when reconfiguring 2013-07-02 14:01:52 +02:00
Sebastian Dröge
a0e61534ef playbin: Improve debug output regarding sink selection 2013-07-02 12:27:03 +02:00
Brendan Long
d3acb2b01a playbin: Post an error message if a stream combiner doesn't return a request pad. 2013-07-02 09:34:19 +02:00
Sebastian Dröge
f39d1dc3b4 playbin: Only intersect to check if a sink can handle raw caps
Doing a subset check requires fixed caps, which we might not have here.

https://bugs.webkit.org/show_bug.cgi?id=116042
2013-07-01 13:46:51 +02:00
Vincent Penquerc'h
5a064ca423 typefind: avoid too low mpeg/ts probability on small amount of data
With the current test, we get into problems when we try to typefind
a MPEG stream from a small amount of data, which can happen when
we get data pushed from a HTTP source. We thus make a second test
to give higher probability if all the potential headers were either
pack or pes headers (ie, no potential header was unrecognized).

This fixes an issue with a MPEG1/MP2 stream being properly discovered
as video/mpeg from a file, but as audio/mpeg from souphttpsrc.

https://bugzilla.gnome.org/show_bug.cgi?id=703256
2013-07-01 11:08:24 +02:00
Patricia Muscalu
f9acd972ef videotestsrc: do not leak lines
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703177
2013-06-27 12:39:47 +02:00
Sreerenj Balachandran
8a2dbeb1ef playsink: Fix the block diagram of deinterlace bin.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702465
2013-06-17 16:28:44 +02:00
Brendan Long
b5f7a621bb playbin: Emit {audio,text,video}-changed signals when pads are removed
https://bugzilla.gnome.org/show_bug.cgi?id=702195
2013-06-14 14:23:11 +02:00
Sebastian Dröge
eb09e561c4 videoconvert: Fix leaking of the chroma resample helper objects 2013-06-11 15:24:05 +02:00
Sebastian Dröge
15375861b5 adder: Reject segments that have a different rate than the output segment
adder does no rate conversion.
2013-06-09 19:20:20 +02:00
Sebastian Dröge
4465741222 playbin: When activating a fixed sink, proxy error messages too
If activating a fixed sink fails, everything will fail later anyway
and we can just error out early.
2013-06-08 23:51:13 +02:00
Sebastian Dröge
44352deadb playbin: Improve autoplugging of decoder/sink combinations by trying to activate the sink
And if that fails don't bother autoplugging that sink. Also gives
us more accurate sink caps.
2013-06-08 23:34:53 +02:00
Sebastian Dröge
ff8839d97b playbin: Proxy the playbin context to the sinks 2013-06-08 23:22:54 +02:00
Sebastian Dröge
77af24c493 playbin: Proxy sink messages if we activate a sink in playbin already
This makes sure the application gets any context related messages and
can do whatever is required to a) get the sink a context or b) share
the context with other elements in the pipeline.

The proxying is necessary because the sink is not a child element of
playbin, but instead will at a later point be a child of some bin
inside playsink.

https://bugzilla.gnome.org/show_bug.cgi?id=700967
2013-06-08 23:22:54 +02:00
Sebastian Dröge
c49531f1b7 decodebin: Let serialize queries before caps events through
Otherwise we're going to deadlock forever because no autoplugging
happens without having caps, but caps can never be send because
we're blocking.

Serialized queries before caps should never be sent unless really
necessary.
2013-06-06 15:57:49 +02:00
Sebastian Dröge
ff5d3313d4 Release 1.1.1 2013-06-05 18:31:27 +02:00
Sebastian Dröge
cc5a476fc6 adder: Add GstChildProxy interface for the sinkpads
This allows to set the sinkpad properties more easily.

Next step: Implement proper synchronization in adder, almost done!
2013-05-30 23:56:52 +02:00
Sebastian Dröge
349174b48e adder: Hold object lock in setcaps a bit longer to prevent race conditions 2013-05-30 23:56:52 +02:00
Sebastian Dröge
dde8d8919d adder: Simplify segment event handling
We don't care about upstream segments but generate our own. This
makes the code more similar to videomixer again.
2013-05-30 23:56:52 +02:00
Sebastian Dröge
2953810ba5 adder: Use gst_audio_info_is_equal() to check if we get the same caps 2013-05-30 23:56:52 +02:00
Sebastian Dröge
0693b78e86 adder: Don't calls gst_pad_set_caps() on sinkpads
It doesn't make much sense and the CAPS query handling
on the sinkpads should handle this.
2013-05-30 23:56:52 +02:00
Sebastian Dröge
5e63a0f674 adder: Set GAP flag on silence buffers we created 2013-05-30 23:56:52 +02:00
Sebastian Dröge
667b856cbc adder: Remove caching of the processing function
The compiler will generate a hashtable from the switch-case, and
we need to call functions explicitely for the volume!=1.0 cases
anyway.
2013-05-30 23:56:52 +02:00
Sebastian Dröge
a76ade2d78 adder: Add support for per-stream volumes 2013-05-30 23:56:52 +02:00
Sebastian Dröge
addb07bc58 adder: Add optimized orc code for F64 processing 2013-05-30 23:56:52 +02:00
Sebastian Dröge
308c8fef68 adder: The output buffer must be readable and writable 2013-05-30 23:56:51 +02:00
Sebastian Dröge
509246cbac adder: Add support for muting individual pads 2013-05-30 23:56:51 +02:00
Sebastian Dröge
3974379a7f adder: Sync pad properties with the GstController 2013-05-30 23:56:51 +02:00
Sebastian Dröge
561ce54b27 adder: Add custom GstPad subclass to hold additional data and properties
This will later allow to set per-stream volumes and mute status.
2013-05-30 23:56:51 +02:00
Wim Taymans
00bbca2f9f videoconvert: free tmplines correctly
Keep track of how many tmplines we allocated and use that to free the
correct amount of lines.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701234
2013-05-30 05:27:31 +02:00
Daniel Drake
d32d2f0b14 playsink: pass translated color balance value to channel
We found a case where untranslated values were being passed from the
proxy to the underlying channel, causing bad color balance values
in some setups.

Thanks to Sebastian Dröge for clarifying how the code works, and
suggesting the fix.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701202
2013-05-29 20:20:10 +02:00
Brendan Long
96aab6d8a5 playbin: Don't take an extra reference to the custom stream combiners
They are automatically reffed when added to the bin because they're
already not floating anymore.
2013-05-29 20:12:48 +02:00
Sebastian Dröge
0dee7777ff playbin: Set custom stream-combiners to NULL and unref before finalizing 2013-05-29 10:35:11 +02:00
Brendan Long
53caa99a59 playbin: Rename select to combine and selector to combiner in playbin 2013-05-29 09:53:34 +02:00
Brendan Long
ba5f6cfe72 playbin: Add support for custom stream-combiners
This allows to chose something else than input-selector
for multiple audio/video/text streams, e.g. an adder could
be used for audio.

It is needed for example to implement some of the more
advanced HTML5 video features.

https://bugzilla.gnome.org/show_bug.cgi?id=698851
2013-05-29 09:52:32 +02:00
Sebastian Dröge
14192c031a decodebin: Don't call autoplug-query on shutdown
And remove leftover debug code
2013-05-28 13:32:23 +02:00
Sebastian Dröge
e482b5b8e6 playbin: In autoplug-queries, add the actual decoder/parser/etc template caps
Add the actual decoder/parser/etc caps at the very end to
make sure we don't cause empty caps to be returned, e.g.
if a parser asks us but a decoder is required after it
because no sink can handle the format directly.
2013-05-28 13:23:40 +02:00
Sebastian Dröge
a4ec6fe0b7 playbin: Forward CONTEXT queries to the corresponding sink if we have one
https://bugzilla.gnome.org/show_bug.cgi?id=700967
2013-05-28 13:14:15 +02:00
Sebastian Dröge
e5064ee723 playbin: Refactor autoplug-query handling
We now only check sinks and factories of the corresponding media
type. It doesn't make sense to pass audio/subtitle caps to a video
decoder.
2013-05-28 13:08:00 +02:00
Sebastian Dröge
d366613401 decodebin: Block on serialized queries too
Otherwise we will only block after the serialized, non-sticky event
after the CAPS event or the first buffer. If we're waiting for another
pad to finish autoplugging after we got final caps on this pad, it
will mean that we will let the ALLOCATION query pass although the
pad is not exposed yet.
2013-05-28 13:06:15 +02:00
Sebastian Dröge
9513b770f4 decodebin: Pass the element in the autoplug-query signal too 2013-05-28 12:10:33 +02:00
Sebastian Dröge
730e633d58 decodebin: Need to lock the chain mutex in autoplug_query 2013-05-28 11:40:51 +02:00
Sebastian Dröge
b86267b5be playsinkconvertbin: Fix leak of the downstream caps filter 2013-05-28 11:36:58 +02:00
Sebastian Dröge
db8d53bc17 playbin: Refactor autoplug-query handling a bit 2013-05-28 11:05:21 +02:00
Wim Taymans
7b8ff707b6 videoconvert: run chroma resamplers
Run the chroma upsampler after unpack and the chroma subsampler
before pack for higher quality conversions and correct chroma siting.
2013-05-27 11:05:08 +02:00
Wim Taymans
e5bc2b0d05 videotestsrc: subsample chroma before packing
Run the chroma subsampler before packing.
2013-05-27 11:05:08 +02:00
Wim Taymans
4f2e1b46a7 videoconvert: reformat 2013-05-27 11:05:06 +02:00
Wim Taymans
620e3aad07 videoconvert: actually use the input pixels
Operate on the provided pixels array instead of the temp array.
2013-05-27 11:05:06 +02:00
Sebastian Dröge
92af499eb7 typefind: Ensure we have enough data when reading the sync marker in the AAC/LOAS typefinder 2013-05-24 17:43:53 +02:00
Sebastian Dröge
fa7ad8743c decodebin: Lock the state of child elements as long as we manage their states
https://bugzilla.gnome.org/show_bug.cgi?id=690420
2013-05-24 13:41:46 +02:00
Sebastian Dröge
be4dba23ea Revert "decodebin2: use NO_RESYNC flag"
This reverts commit 0feecef275.
2013-05-24 11:47:13 +02:00
Sebastian Dröge
ca1279e4a3 decodebin: Use signal handler IDs instead of disconnecting by function
This is cleaner and faster.
2013-05-22 17:29:17 +02:00
Sebastian Dröge
504e57ccc5 decodebin: Connect and disconnect the have-type signal of typefind before starting/shutting down 2013-05-22 13:49:18 +02:00
Sebastian Dröge
f4952a9baf typefind: Add variant=itu to the h263 typefinder caps
https://bugzilla.gnome.org/show_bug.cgi?id=700770
2013-05-22 10:58:10 +02:00
Sebastian Dröge
1756f86042 playsink: Use signal handler IDs instead of disconnecting/blocking by function
This is cleaner and faster.
2013-05-21 16:35:18 +02:00
Sebastian Dröge
d802c7395a playback: Only do a subset filtering for the factories if we have fixed caps
Otherwise we're plugging a parser/converter currently and have unfixed caps.
2013-05-15 17:15:18 +02:00
Sebastian Dröge
062246fc6e decodebin: Return immediately from checking if a chain is complete if we're shutting down 2013-05-15 14:51:16 +02:00
Sebastian Dröge
83f2476976 decodebin: Hold the expose lock when freeing a chain
https://bugzilla.gnome.org/show_bug.cgi?id=700342
2013-05-15 14:47:53 +02:00
Sebastian Dröge
74a31a02fc playbin: Fix deadlock caused by lock order inversion
First the source group lock, then the elements list lock.
2013-05-15 13:38:32 +02:00
Sebastian Dröge
450a47c0a5 playback: Use subset checks instead of intersection
https://bugzilla.gnome.org/show_bug.cgi?id=700272
2013-05-14 10:07:44 +02:00
Sebastian Dröge
b19d64d785 subparse/ssaparse: Fix event handling and order 2013-05-10 12:21:31 +02:00
Mathieu Duponchelle
aec0e48aa1 videorate: Reset base timestamp and out_frame_count in any case on SEGMENT_EVENT
Fixes #699187
2013-05-09 16:22:13 +02:00
Sebastian Dröge
b0ec886cb9 playbin2: Chose more balanced metric to compare ranks of decoder/sink combinations 2013-05-09 15:05:21 +02:00
Sebastian Dröge
b23f4e4ab9 playbin: Fix infinite loop in GSequence iteration code 2013-05-08 21:27:17 +02:00
Sebastian Dröge
4c52518ef5 uridecodebin: Always store queue2 elements for later removal
Otherwise we accumulate more and more queue2 elements, and let each
of them start a thread doing nothing but waiting each time uridecodebin
goes to PAUSED.

https://bugzilla.gnome.org/show_bug.cgi?id=699794
2013-05-08 14:52:18 +02:00
Andoni Morales Alastruey
3ad2dec005 typefind: fix detection of HLS playlists with alternative renditions
https://bugzilla.gnome.org/show_bug.cgi?id=699923
2013-05-08 13:23:52 +02:00
Sebastian Dröge
7ff4f8f4d4 playbin: Use the GSequence more efficiently
This makes it possible to take advantage of the O(log n) lookups
of GSequence on the ~1000 element lists and only do iterations
on <10 element lists. Previously the code iterated over ~1000 element
lists multiple times.
2013-05-07 15:23:05 +02:00
Sreerenj Balachandran
52c5115ff0 playbin: Use GSequence instead of GList to store the GstAVElement list.
The GstAVElement list might be big. Use GSequence to optimize it.
2013-05-07 15:23:05 +02:00
Sreerenj Balachandran
a8d1b45491 playbin: autoplug the audio/video decoders and sinks based on capsfeatures.
Autoplug the decoder elements and sink elements based on
the number of common capsfeatures if the ranks are the same.
This will also helps to autoplug the h/w_decoder and h/w_renderer.

https://bugzilla.gnome.org/show_bug.cgi?id=698712
2013-05-07 15:23:05 +02:00
Sebastian Dröge
b719dd9f89 decodebin: Expose pads when they receive EOS before any buffers
Stops decodebin from waiting forever to expose a pad if there
is never data on it.

https://bugzilla.gnome.org/show_bug.cgi?id=691072
2013-05-06 15:49:00 +02:00
Thibault Saunier
b940cba826 streamsplitter: Keep srcpad alive while querying peer 2013-05-02 12:29:48 +01:00
Thibault Saunier
372eddf00e adder: Get collectpad stream lock when fowarding flush events
Fixes #698410
2013-05-02 12:29:48 +01:00
Tim-Philipp Müller
04a70ea835 typefindfunctions: minor SSA typefinder clean-up
Remove code that doesn't make sense as it is. If there's
a 2-byte UTF-16 BOM or a 4-byte UTF-32 BOM, the following
text won't be 8-bit ASCII.
2013-04-28 18:56:28 +01:00
Sebastian Dröge
7f6e1bdfdb tcp: Use the generic marshaller instead of generating custom ones 2013-04-25 09:20:29 +02:00
Sebastian Dröge
e06cc5295a tcp: Add FIXME comment for 2.0 to rename "host" to "bind-address" for the server elements 2013-04-25 09:06:33 +02:00
Sebastian Dröge
9c5c0ca878 streamsynchronizer: Fix check for belonging to another stream
https://bugzilla.gnome.org/show_bug.cgi?id=697820
2013-04-24 11:11:41 +02:00
Tim-Philipp Müller
88acbd60cd typefindfunctions: fix crash in new MSS typefinder
Fixes icydemux test_first_buf_offset_when_merged_for_typefinding
unit test segfaulting on a NULL pointer.
2013-04-24 00:08:15 +01:00
Wim Taymans
c5840ebbd9 decodebin2: also remove the bytes limit
Remove the byte limit for adaptive http streaming. Because some fragments might
be very big, we might need a lot of buffering. I also suspect another problem
where data is actually missing and things go out of sync somehow.
2013-04-23 11:20:28 -03:00
Wim Taymans
26c5bc1ce4 decodebin2: update buffer size in multiqueue
When we disable buffering in the more upstream multiqueue elements,
we need to also update the queue limits. In particular, the max_size_time should
be set to 0 or else we might simply deadlock.
2013-04-23 11:20:28 -03:00
Thiago Santos
5cd07bd2af decodebin2: only allow 'lower' multiqueues to emit buffering messages
When we have a scenario of demuxers linked to demuxers, decodebin2
will create multiqueue at different levels of the pipeline. The problem
is that only the lowest multiqueue's should do the buffering messaging,
as they will handle with the raw streams data.

When all multiqueues are doing buffering, the upper ones can handle
large buffers that easily fill them, moving from 0% to 100% from
buffer to buffer, causing too much buffering messages to be posted.
This hangs the pipeline unnecessarily and might lead to deadlocks.
2013-04-23 11:20:28 -03:00
Thiago Santos
6382d4c0ad decodebin2: do not handle the next-groups list as if it was a single item
Decodebin2's chains store a next_groups list that was being handled as
it could only have a single element. This is true for most of the
chaining streams scenarios where streams change not very often.

In more stressfull changing scenarios, like adaptive streams, those
changes can happen very often, and in short time intervals. This could
confuse decodebin2 as this list was always being used as a single
element list.

This patches makes it handle as a real list, using iteration instead
of picking the first element as the correct one always.
2013-04-23 10:32:19 -03:00
Thiago Santos
054ffc6e2b decodebin2: preserve next groups order 2013-04-23 10:32:19 -03:00
Thiago Santos
42db7c7b08 decodebin2: still report chain as drained when not 'handled'
Even if the chain hasn't been 'handled' in this switching round,
report it as drained so upper chains/groups know abou it.

This makes switching happen on upper levels of the groups/chain
trees
2013-04-23 10:32:19 -03:00
Thiago Santos
ce20bc1dc0 typefind: add smoothstreaming manifest typefinding
Checks if the received XML is a smoothstreaming manifest
in both UTF8 and UTF16 formats. The check is made for a
SmoothStreamingMedia top level element.

Conflicts:
	gst/typefind/gsttypefindfunctions.c
2013-04-23 10:32:19 -03:00
Sebastian Dröge
d77f76049e streamsynchronizer: Don't consider a stream added for an already running one as "new"
Fixes enabling visualizations after disabling them after they were enabled already.
2013-04-23 13:54:49 +02:00
Sebastian Dröge
2e017bd595 streamsynchronizer: If a stream belongs to an already running stream, don't wait
This fixes enabling visualizations after the audio stream already started.

https://bugzilla.gnome.org/show_bug.cgi?id=697820
2013-04-23 13:19:38 +02:00
Tim-Philipp Müller
f5c0d61be7 Update disted orc backup files
Generated with 0.4.17 now.
2013-04-22 13:58:33 +01:00
Tim-Philipp Müller
830926e47d uridecodebin: don't report 'no uri handler found' if the URI was rejected by a source
If a source element could be created for a URI, but all elements rejected
the URI for some reason, propagate the error from the URI handler instead
of reporting a 'no uri handler found for protocol xyz' error, which is
confusing. Fixes error reporting with dvb:// URIs when the channel config
file could not be found or not be parsed or the channel isn't listed.

https://bugzilla.gnome.org/show_bug.cgi?id=678892
2013-04-21 17:30:58 +01:00
Thibault Saunier
fbe80a688d adder: Do not try to wait for flush_stop after receiving a segment event
+ Add a simple test
2013-04-21 16:11:41 +02:00
Stefan Sauer
fa9c0cdf6e volume: skip controlled processing if we have no timestamp 2013-04-21 16:11:41 +02:00
Sreerenj Balachandran
9c94a1812f playbin: use _plugin_feature_rank_compare API instead of duplicating the code. 2013-04-18 13:59:52 +02:00
Sreerenj Balachandran
8cf6049643 decodebin: use _plugin_feature_rank_compare API instead of duplicating the code. 2013-04-18 13:59:36 +02:00
Philippe Normand
26fb72cf65 uridecodebin: query bandwidth capability to source element
Use a scheduling query to check if the source element has some
bandwidth limitations. If this is the case on-disk buffering might be
used. If the source element doesn't handle the scheduling query then
fallback to checking the URI protocol against the hardcoded list of
protocols known to handle buffering already.

Fixes bug 693484.
2013-04-16 16:47:28 +02:00
Sebastian Dröge
948a4a3632 gst: Add better support for static plugins 2013-04-15 15:52:58 +02:00
Sreerenj Balachandran
9b33c75cd4 playbin: use ascending order for name based sorting of pluginfeatures.
The compare_factories_func() should return negative value
if the rank of both PluginFeatures are equal and the name of
first PluginFeature comes before the second one (== ascending order).
2013-04-15 12:05:22 +02:00
Sreerenj Balachandran
f07eb23728 decodebin: use ascending order for name based sorting of pluginfeatures.
The _decode_bin_compare_factories_func() should return negative
value if the rank of both PluginFeatures are equal and the name of
first PluginFeature comes before the second one (== ascending order).
2013-04-15 12:05:16 +02:00
Tim-Philipp Müller
1c0288db38 playbin: fix jpeg passthrough to decoder sinks by marking image/* as video stream 2013-04-12 11:51:30 +01:00
Sebastian Dröge
882677eb8e videoscale: Allow passthrough for ANY caps features 2013-04-08 08:30:38 +02:00
Sebastian Dröge
d0133a2d11 videoconvert: Allow passthrough for ANY caps features 2013-04-08 08:30:38 +02:00
David Schleef
c07efdabd8 videoscale: set reasonable limits on properties
Properties sharpen, sharpness, and envelope are only useful
near their default values.  Decrease ranges to avoid brokenness.

https://bugzilla.gnome.org/show_bug.cgi?id=682171
2013-04-06 13:19:44 -07:00
Stefan Sauer
c2b34b05de videoscale: set min value to DBL_MIN to avoid a value of 0.0 that would crash 2013-04-05 22:39:43 +02:00
Wim Taymans
92b77c5aa4 decodebin2: forward all sticky events to decodepad
Forward all sticky events to the decodepad before exposing the pads. This makes
sure all sticky events are on the exposed pad.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=696915
2013-04-04 15:00:52 +02:00
Wim Taymans
c082c06b6c decodebin: debug sticky events on exposed pads 2013-04-04 14:53:32 +02:00
Wim Taymans
08dd2454cd decodebin2: small cleanup
Take the event from the probe just once.
2013-04-04 14:37:15 +02:00
Wim Taymans
34eea4d5f2 streamsynchronizer: update position for reverse
When doing reverse playback the positino advances from timestamp_end to
timestamp.
2013-03-31 12:57:35 +02:00
Edward Hervey
b3d94bd0e4 encodebin: Add action signal to get pad for a given profile
This allows getting a pad for a specific encoding profile, which can
be useful when there are several stream profiles of the same type.

Also update the encodebin unit tests so that we check that the returned
pad has the right caps.

https://bugzilla.gnome.org/show_bug.cgi?id=689845
2013-03-31 12:02:05 +02:00
Wim Taymans
bc4238f959 videoconvert: use one matrix function
Use only one matrix function pointer, let the implementation cast the pixels to
the right size.
2013-03-30 19:14:40 +01:00
Wim Taymans
43a9bfae78 videoconvert: use one temp array for lines
Use only one temporary array for pixels.
2013-03-30 19:14:40 +01:00
Sebastian Dröge
3475d4f457 decodebin: Remove GstdecodePads that are not going to be exposed
This makes sure that they're unlnked and don't cause any errors or
block the pipeline.
2013-03-30 17:17:04 +01:00
Sebastian Dröge
7f78f7f9e3 playbin: Ignore caps from audio/video sink factories if there are fixed sinks already 2013-03-30 12:15:38 +01:00
Sebastian Dröge
57a0806b3a playbin: Handle caps queries from unlinked elements
Pass them to all possible sinks and the current sinks to
allow elements to chose a more optimal initial caps.
2013-03-30 11:49:42 +01:00
Sebastian Dröge
0932391d3f decodebin: Add autoplug-query signal to handle queries for yet unconnected elements
This allows playbin to answer the CAPS query with the possible sink
caps for example, and allows decoders to chose more optimal caps.
2013-03-30 11:49:42 +01:00
Sebastian Dröge
9ce0818c7d decodebin: Don't add a children to a decode group twice
This can happen if a demuxer does not provide fixed caps from the
beginning but only sets them later.
2013-03-30 11:49:42 +01:00
Stefan Sauer
fbf2647f3e audiotestsrc: fix a comment typo from previous commit 2013-03-29 17:16:17 +01:00
Stefan Sauer
f68c95ebaa audiotestssrc: truncate the seek pos to the sample and round the time
Before it was done the other way around and that can trigger the assert that
already is in place. This also makes more sense; when seeking to time x, we want
then sample that is <= that pos.
2013-03-29 16:46:14 +01:00
Wim Taymans
701ae2f144 videoconvert: respect the pack_lines when packing
Packing is supposed to happen on the amount of lines specified in the format
info. It's currently all set to 1 but that will change.
2013-03-28 18:16:09 +01:00
Wim Taymans
33a54ba4f3 videoconvert: be smarter when selecting a conversion
Try to select the conversion that would result in the minimal amount of quality
loss. Quality loss is calculated rather arbitrarily but it avoids doing
something really stupid in most cases.
2013-03-28 18:15:24 +01:00
Wim Taymans
3532323817 videoconvert: small cleanup 2013-03-28 18:15:24 +01:00
Stefan Sauer
f19acfc60b uridecodebin: remove commented code
This is dead since ~6 years.
2013-03-28 12:36:51 +01:00
Stefan Sauer
8c390fe80a audiotestsrc: simplify the caps
Drop channel-mask as we only do mon/stereo and channel-mask is optional in these
cases.
2013-03-25 16:47:02 +01:00
Simon Berg
f18d2a5a9a audiotestsrc: fix rounding errors that might cause segments to be one sample too short
https://bugzilla.gnome.org/show_bug.cgi?id=676884
2013-03-24 20:53:05 +00:00
Simon Berg
d8b42e993b audiotestsrc: fix buffer size of last buffer
The last buffer before EOS may be smaller than the maximum
size. The current code doesn't adjust for this, it only sets
the duration and offsets.

https://bugzilla.gnome.org/show_bug.cgi?id=696411
2013-03-24 20:53:05 +00:00
Wim Taymans
a092cbee5e videoconvert: avoid double free
Set variable to NULL after free so that we don't free twice.
2013-03-24 00:38:22 +01:00
Wim Taymans
b1950b6409 Revert "videoconvert: prevent bad interlaced conversions"
This reverts commit adc9694ed7.

No need to restrict the conversion, we can handle interlace correctly. We
basically unpack each field, then convert each field to the target colorspace
and pack and interleave each field to the target format. We also disable any
fast path that can't deal with interlaced formats.
2013-03-24 00:21:36 +01:00
David Schleef
adc9694ed7 videoconvert: prevent bad interlaced conversions
Don't allow conversion that changes vertical subsampling if video
is interlaced.
2013-03-22 17:24:43 -07:00
Arnaud Vrac
4816885ce3 subparse: fix off by one offset calculation
Do not use the buffer start offset when it is invalid, otherwise a
discontinuity is detected on the next buffer, and the subtitle parser
reset and some subtitle lines are not shown.

Also remove unused next_offset field.

https://bugzilla.gnome.org/show_bug.cgi?id=693981
2013-03-22 11:09:11 +00:00
Tim-Philipp Müller
c7855b5505 typefinding: fix y4m caps
We need to specify the y4mversion field now.

https://bugzilla.gnome.org/show_bug.cgi?id=696282
2013-03-22 09:35:21 +00:00
Sebastian Dröge
383f58b0ed subtitleoverlay: Return ANY caps for the GET_CAPS query
subtitleoverlay handles any caps, not just the ones
for which a subtitle parser/renderer exist. It will
just ignore any unsupported streams instead of causing
an error.

https://bugzilla.gnome.org/show_bug.cgi?id=688476
2013-03-21 15:37:31 +01:00
Sebastian Dröge
9084bc151b playsinkconvertbin: Make sure to return all allowed caps in the GET_CAPS query
Add all the caps that we can convert to to the filter caps,
otherwise downstream might just return EMPTY caps because
it doesn't handle the filter caps but we could still convert
to these caps, causing us to return EMPTY caps although
conversion would be possible.

https://bugzilla.gnome.org/show_bug.cgi?id=688803
2013-03-21 13:42:41 +01:00
Sebastian Dröge
d06c332655 playsinkconvertbin: Use gst_caps_is_subset() for handling the ACCEPT_CAPS query 2013-03-21 11:42:43 +01:00
Sebastian Dröge
575f0640ed videoscale: Let the add-borders property default to TRUE
It's undesirable most of the time that the display aspect ratio
is changed.
2013-03-21 11:14:41 +01:00
Jan Schole
8e791d52aa videoscale: Correct DAR and border calculations
changed: gst_video_scale_set_info in gst/videoscale/gstvideoscale.c
DAR on sink side now calculated with PAR on sink side
ratio of output width/height now calculated with inverse PAR
additional condition that borders are 0:0 for passthrough mode

https://bugzilla.gnome.org/show_bug.cgi?id=696019
2013-03-21 11:13:49 +01:00
Stefan Sauer
60ccc2f17f adder: add a missing break 2013-03-11 22:46:45 +01:00
Stefan Sauer
c6c27b9926 videotestsrc: make colors controlable
Also trim since markers.
2013-03-07 09:39:14 +01:00
Tim-Philipp Müller
7dd2fad888 uridecodebin: minor GValue handling optimisation 2013-03-03 17:44:11 +00:00