Commit graph

15519 commits

Author SHA1 Message Date
Joan Pau Beltran
c6722c06a0 appsink: add _pull_sample/preroll() variants with timeout
The _pull_sample() and _pull_preroll() functions block
until a sample is available, EOS happens or the pipeline
is shut down (returning NULL in the last two cases).

This adds _try_pull_sample() and _try_pull_preroll()
functions with a timeout argument to specify the maximum
amount of time to wait for a new sample.

To avoid code duplication, wait forever if the timeout is
GST_CLOCK_TIME_NONE and use that to implement
_pull_sample/_pull_preroll with the original behavior.

Add also corresponding action signals "try-pull-sample"
and "try-pull-preroll".

https://bugzilla.gnome.org/show_bug.cgi?id=768852
2016-07-18 16:55:16 +01:00
Guillaume Desmottes
6c58f5ee2f decodebin3: actually check result of accept caps query
We were just checking if the query was handled, not its result.

Also fix a leak as gst_pad_query() was not consuming the query.

https://bugzilla.gnome.org/show_bug.cgi?id=768811
2016-07-18 14:54:35 +01:00
Tim-Philipp Müller
3273714e0a xvimagesink: only error out if the allocated memory is too small
https://bugzilla.gnome.org/show_bug.cgi?id=767712
2016-07-18 14:20:11 +01:00
Duncan Palmer
f00bbd2ea5 xvimageallocator: const correctness in gst_xvimage_allocator_alloc().
https://bugzilla.gnome.org/show_bug.cgi?id=767712
2016-07-18 14:17:09 +01:00
Duncan Palmer
4e83e894df xvimagesink: error out on buffer size sanity check failure.
If sanity checks on the buffer size allocated by XvShmCreateImage() fail,
call on g_set_error(), rather than just logging a warning, as this
failure is fatal.

Add a sanity check on buffer size when the video format is RGB. This adds to
existing checks on various YUV pixel formats.

https://bugzilla.gnome.org/show_bug.cgi?id=767712
2016-07-18 14:15:10 +01:00
Guillaume Desmottes
9834782afa playbin3: fix stream leak
The stream returned by gst_message_streams_selected_get_stream() is
reffed.

https://bugzilla.gnome.org/show_bug.cgi?id=768811
2016-07-18 13:58:39 +01:00
Guillaume Desmottes
83f30627cd decodebin3: fix collection leak
The collection owned by GstDecodebin3 has to be unreffed when disposing.

gst_event_new_stream_collection() doesn't consume the collection passed
to it so no need to give it an extra ref.

https://bugzilla.gnome.org/show_bug.cgi?id=768811
2016-07-18 13:58:33 +01:00
Guillaume Desmottes
c1db195ba5 decodebin3: fix stream leaks
MultiQueueSlot owns a ref on the active stream so it should release it
when being freed.

DecodebinInputStream owns ref on the active and pending stream so they
should be dropped when being freed.

https://bugzilla.gnome.org/show_bug.cgi?id=768811
2016-07-18 13:57:44 +01:00
Guillaume Desmottes
e2263673d1 decodebin3: fix event leaks
Returning GST_PAD_PROBE_HANDLED means we are taking care of unreffing
the probe info.

https://bugzilla.gnome.org/show_bug.cgi?id=768811
2016-07-18 13:57:44 +01:00
Guillaume Desmottes
51055f1924 decodebin3: fix caps leaks
gst_stream_get_caps() returns a reffed caps.

The caps passed to gst_query_set_caps_result() are not transfered.

The caps in gst_parse_pad_stream_start_event() was either acquired
using gst_pad_get_current_caps() which returns a new ref or
explicitly reffed.

https://bugzilla.gnome.org/show_bug.cgi?id=768811
2016-07-18 13:57:10 +01:00
Tim-Philipp Müller
a80c546628 rtp: rtpbasedepayload: simplify code
Remove unnecessary helper struct for callbacks. The bclass
member of the helper struct was not used, so we can just
remove it and the GET_CLASS() call and simplify the whole
affair by passing the depayloader directly to the callback.
2016-07-15 19:51:20 +01:00
Guillaume Desmottes
c1d55f29a1 playbin3: fix leaks of collection returned by message parse API
gst_message_parse_stream_collection() and
gst_message_parse_streams_selected() actually return a reffed
GstStreamCollection.

https://bugzilla.gnome.org/show_bug.cgi?id=768776
2016-07-15 16:43:07 +01:00
Jan Schmidt
657a9c23d6 gst-play: Allow disabling audio/video/subtitle tracks
When cycling through tracks, add 'disable' to the set
of states.
2016-07-15 22:51:35 +10:00
Jan Schmidt
614ddaa739 alsasink: Remove unused hwparam/swparam pointers
The ALSA params structures aren't kept. The pointers
aren't used anywhere, so remove them from the struct.
2016-07-15 22:51:35 +10:00
Guillaume Desmottes
a3c47a0754 tools: fix device leaks in gst-device-monitor
gst_message_parse_device_{added,removed} is actually returning a new ref
on the device.

https://bugzilla.gnome.org/show_bug.cgi?id=768776
2016-07-15 12:58:53 +01:00
Guillaume Desmottes
54e4551cd8 videoscale: fix bus leak in test
gst_bus_add_signal_watch() takes a ref on the bus which should be
released using gst_bus_remove_signal_watch().

https://bugzilla.gnome.org/show_bug.cgi?id=768718
2016-07-12 13:12:19 +03:00
Xabier Rodriguez Calvar
9f594d1562 videoorientation: Use G_DEFINE_INTERFACE instead of a manually written get_type()
https://bugzilla.gnome.org/show_bug.cgi?id=768687
2016-07-12 09:05:32 +03:00
Sebastian Dröge
02a88077fc video: Fix some compiler warnings for out-of-range enum values
https://bugzilla.gnome.org/show_bug.cgi?id=767816
2016-07-12 00:14:13 +03:00
Stefan Sauer
508f593d8a Automatic update of common submodule
From f363b32 to f49c55e
2016-07-11 21:13:37 +02:00
Seungha Yang
50f74daa2f appsrc: Remove trailing whitespace
https://bugzilla.gnome.org/show_bug.cgi?id=768510
2016-07-11 09:54:11 +03:00
Sebastian Dröge
48324cab38 encoding-profile: Remove some more fields from the caps when creating from discoverer info
parsed, framed, stream-format and alignment are only relevant for parsers and
should not matter here. We still want to be able to use an encoder that can
only output byte-stream if the input was avc.

https://bugzilla.gnome.org/show_bug.cgi?id=768566
2016-07-08 16:44:18 +03:00
Sebastian Dröge
0e7cdee6c8 missing-plugins: Remove some other fields when cleaning up caps
Caps are cleaned up for missing plugins, and for creating encoding profiles
and caps descriptions.

Fields like streamheader, parsed, framed, stream-format and alignment are not
relevant here. The last ones all because a parser will take care of them.

https://bugzilla.gnome.org/show_bug.cgi?id=768566
2016-07-08 16:41:12 +03:00
Sebastian Dröge
d31f958d17 pbutils: Mark private functions as G_GNUC_INTERNAL 2016-07-08 15:44:26 +03:00
Víctor Manuel Jáquez Leal
c646c62a02 subparse: don't reset allowed tags
When a discont buffer is processed, the state is re-initialized, which
nullifies the allowed_tags.

The problem is when a subrip string with tags is processed and allowed_tags is
NULL. The function subrip_unescape_formatting() calls g_strjoinv with a
str_array as NULL, leading to a GLib-CRITICAL.

This patch removes the allowed_tags resetting, in parser_state_init(), but
move it into gst_sub_parse_format_autodetect().

https://bugzilla.gnome.org/show_bug.cgi?id=768525
2016-07-07 19:38:07 +02:00
Sergio Torres Soldado
7960bc0380 rtspconnection: Fix potential deadlock caused by blocking read forever
Reset the connection "may_cancel" property to avoid a potential deadlock
if there is no data to read and the socket stays blocked forever.

https://bugzilla.gnome.org/show_bug.cgi?id=768249
2016-07-07 19:15:18 +03:00
Wim Taymans
9144a787df video-converter: fix compilation on big-endian 2016-07-07 17:29:34 +02:00
Edward Hervey
cfc36ba586 videodecoder: More trickmode fix
We need to take into account the input segment flags to know whether
we should drain the decoder after a new keyframe in trick mode.

Otherwise we would have to wait for the next frame to be outputted (and
the segment to be activated) which ... well ... kind of beats the whole
point of this draining :)
2016-07-07 17:12:31 +02:00
Piotr Drąg
ad1a25c358 po: update POTFILES
https://bugzilla.gnome.org/show_bug.cgi?id=768495
2016-07-07 00:30:14 +03:00
Sebastian Dröge
61f59857a7 audio: Ship audio-resampler-neon.h 2016-07-07 00:27:18 +03:00
Thijs Vermeir
b2c6808a7f tests: correctly print guintptr on mac 2016-07-06 16:16:22 +02:00
Sebastian Dröge
ca2205f773 Back to development 2016-07-06 13:51:00 +03:00
Sebastian Dröge
08f993d090 Release 1.9.1 2016-07-06 13:06:06 +03:00
Sebastian Dröge
49c644ce25 Update .po files 2016-07-06 11:42:29 +03:00
Sebastian Dröge
727ad73e2f po: Update translations 2016-07-06 10:18:00 +03:00
Philippe Normand
6338146c06 videodecoder: Take stream lock one time only on drain
When the drain is triggered from the chain function the lock is already
taken so there is no need to take it one more time.

https://bugzilla.gnome.org/show_bug.cgi?id=767641
2016-07-05 19:38:40 +03:00
Sebastian Dröge
e18a9d9b5f videodecoder: fix criticals fixating a non existent field
https://bugzilla.gnome.org/show_bug.cgi?id=766970
2016-07-04 11:16:55 +02:00
Sebastian Dröge
e5d7064b29 audiodecoder: Protect samples_in/bytes_out and audio info with object lock
It might cause invalid calculations during the CONVERT query otherwise.
2016-07-04 11:12:55 +02:00
Sebastian Dröge
5cbd1a7bca audioencoder: Protect samples_in/bytes_out and audio info with object lock
It might cause invalid calculations during the CONVERT query otherwise.
2016-07-04 11:12:55 +02:00
Sebastian Dröge
8d8262a00c audioencoder/decoder: Move encoded audio conversion function to a common place
No need to duplicate this non-trivial function.
2016-07-04 11:12:55 +02:00
Vincent Penquerc'h
c76e8c77eb audiodecoder: fix criticals fixating a non existent field
https://bugzilla.gnome.org/show_bug.cgi?id=766970
2016-07-04 10:05:45 +01:00
Sebastian Dröge
66342c5c86 videodecoder: Use the object lock to protect bytes/time tracking
And especially don't use the stream lock for that, as otherwise non-serialized
queries (CONVERT) will cause the stream lock to be taken and easily causes the
application to deadlock.

https://bugzilla.gnome.org/show_bug.cgi?id=768361
2016-07-04 10:55:07 +02:00
Sebastian Dröge
3cabd3fe55 videoencoder: Use the object lock to protect bytes/time tracking 2016-07-04 10:52:24 +02:00
Sebastian Dröge
d8111778bd videoencoder/decoder: Move conversion utility functions to a common header and use consistently in encoder/decoder 2016-07-04 10:47:36 +02:00
Sebastian Dröge
1032f5c1b3 appsrc: If do-timestamp=TRUE, capture the time when the buffer was pushed to the source
... instead of the time when it was pushed further downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=763630
2016-07-01 14:32:26 +02:00
Zaheer Abbas Merali
0f609bc6c6 basertpdepayload: create valid segment when given non-time segment
This will become an error in 1.10.

https://bugzilla.gnome.org/show_bug.cgi?id=765796
2016-07-01 14:16:46 +02:00
Tim-Philipp Müller
a2c050a4be tagdemux: fix handling of very short files in push mode
By default we'll wait for a certain amount of data before
attempting typefinding. However, if the stream is fairly
short, we might get EOS before we ever attempted any
typefinding, so at this point we should force typefinding
and output any pending data if we manage to detect the
type.

https://bugzilla.gnome.org//show_bug.cgi?id=768178
2016-06-30 18:53:07 +01:00
Tim-Philipp Müller
130e78dbd8 tagdemux: fix erroring out if we reach EOS without detecting type
In 0.10 the source pad was a dynamic pad that was only added once
the type had been detected, but in 1.x it's an always source pad,
so checking whether it's still NULL won't work to detect if the
type has been detected.

Makes tagdemux error out when we get EOS but haven't managed to
identify the format of the data after the tag.

https://bugzilla.gnome.org//show_bug.cgi?id=768178
2016-06-30 18:53:02 +01:00
Edward Hervey
4b6e43fa5b parsebin: Fix authors and description 2016-06-30 17:28:02 +02:00
Edward Hervey
5baae6df6f playback: Remove uridecodebin3
This was committed by mistake. The solution forward is to use the
appropriate combination of urisourcebin and decodebin3
2016-06-30 17:27:53 +02:00
Edward Hervey
d514e79bee playback: New elements
With contributions from Jan Schmidt <jan@centricular.com>

* decodebin3 and playbin3 have the same purpose as the decodebin and
playbin elements, except make usage of more 1.x features and the new
GstStream API. This allows them to be more memory/cpu efficient.

* parsebin is a new element that demuxers/depayloads/parses an incoming
stream and exposes elementary streams. It is used by decodebin3.
It also automatically creates GstStream and GstStreamCollection for
elements that don't natively create them and sends the corresponding
events and messages

* Any application using playbin can use playbin3 by setting the env
variable USE_PLAYBIN3=1 without reconfiguration/recompilation.
2016-06-30 14:15:47 +02:00