Commit graph

15658 commits

Author SHA1 Message Date
Alessandro Decina
fe4e9bb02c decodebin: an element can negotiate before we block it
When we initialize an element in decodebin, we 1) set it to PAUSED and
push sticky events on its sinkpad to trigger negotiation 2) block its
src pad(s) to detect CAPS events. We can't block before 1) as that
would lead to a deadlock.

It's possible (and common) tho that an element configures its srcpad
during 1) and before 2). Therefore before this change we would
typically block and expose an element's pad only once the element
output its first buffer, triggering sticky events to be resent. One
consequence of this behaviour is that it sometimes broke
renegotiation.

With this change now we consider a pad ready to be exposed when it's
->blocked or has fixed caps (which were set before we could block it).

https://bugzilla.gnome.org/show_bug.cgi?id=765456
2016-05-04 10:13:44 +03:00
Thiago Santos
60c765174f opusdec: intersect with the filter before returning on getcaps
So upstream gets a smaller set to decide upon as it is what it requested
with the filter

https://bugzilla.gnome.org/show_bug.cgi?id=765684
2016-05-02 14:29:25 -03:00
Thiago Santos
7a5797d3a6 opusdec: improve getcaps to return all possible rates
The library is capable of converting to different rates.

Includes tests.

https://bugzilla.gnome.org/show_bug.cgi?id=765684
2016-05-02 14:29:25 -03:00
Thiago Santos
823832e293 opusdec: remove artificial restriction on rate negotiation
Remove restrictions when rate is 48000, the underlying lib supports
converting any of the input to any of the output rates.

https://bugzilla.gnome.org/show_bug.cgi?id=765684
2016-05-02 14:29:25 -03:00
Thiago Santos
b1153e0f7d opusdec: refactor getcaps repeated code into a function
Easier to read and maintain
2016-05-02 14:23:54 -03:00
Thiago Santos
8375ed7763 tests: opus: remove apparently useless macro in tests 2016-05-02 14:23:54 -03:00
Sebastian Dröge
9e60877108 encoding-profile: Fix caps memory leak 2016-04-29 11:06:49 +03:00
Sebastian Dröge
e2bde252a6 encoding-profile: Recurse into nested container profiles and only add the final audio/video streams
If we e.g. have AVI with DV container with video/audio inside the DV
container, we can't handle this at this point with an encoding profile.
Instead of erroring out, flatten the container hierarchy.

https://bugzilla.gnome.org/show_bug.cgi?id=765708
2016-04-29 10:12:06 +03:00
Sebastian Dröge
4c2e7ae051 encoding-profile: Fail to create encoding profile from discoverer info if no streams could be added
https://bugzilla.gnome.org/show_bug.cgi?id=765708
2016-04-29 10:12:06 +03:00
Sebastian Dröge
436adc68e0 encoding-profile: Move adding of each stream to a helper function
https://bugzilla.gnome.org/show_bug.cgi?id=765708
2016-04-29 10:12:06 +03:00
Aurélien Zanelli
928bb3b6f4 exiftag: handle GST_TAG_CAPTURING_FOCAL_LENGTH_35_MM tag
This tag match the EXIF_TAG_FOCAL_LENGTH_IN_35_MM_FILM exif tag and is
stored on a short. Hence there is a precision loss compared to the
GstTag which is a double value.

https://bugzilla.gnome.org/show_bug.cgi?id=753930
2016-04-28 12:13:15 -03:00
Aurélien Zanelli
c5a4a83828 tag: add GST_TAG_CAPTURING_FOCAL_LENGTH_35_MM tag
It is the 35 mm equivalent focal length of the lens, mainly used in
photography. Tag value is stored in a double value to be consistent with
GST_TAG_CAPTURING_FOCAL_LENGTH.

https://bugzilla.gnome.org/show_bug.cgi?id=753930
2016-04-28 12:13:15 -03:00
Guillaume Desmottes
8d6e315b01 opusdec: fix caps leaks
The caps returned by gst_pad_get_allowed_caps() was leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=765706
2016-04-28 09:18:53 +01:00
Kipp Cannon
f7a31a79f4 audio: Add const to segment parameter of gst_audio_buffer_clip()
e.g., allows this to be used with the reference retrieved by
gst_event_parse_segment().

https://bugzilla.gnome.org/show_bug.cgi?id=765663
2016-04-27 12:26:07 +03:00
Jakub Adam
59d7f9c62e ximagesink: generate reconfigure on window handle change
When ximagesink is given a new window handle, it should check
its geometry and if the size of the new window differs from
the previous one, create reconfigure event in order to get
a chance to negotiate a more suitable image resolution with
the upstream elements.

We can't rely on receiving Expose or ConfigureNotify from
the X server for the newly assigned window, which would also
generate reconfigure.

https://bugzilla.gnome.org/show_bug.cgi?id=765424
2016-04-26 11:13:01 +03:00
Sebastian Dröge
7ba7c58f99 smartencoder: Only accept TIME segments for real
... and don't try to push pending data without ever having received a SEGMENT
event before EOS

https://bugzilla.gnome.org/show_bug.cgi?id=765541
2016-04-25 17:17:00 +03:00
Sebastian Dröge
155222017a codec-utils: H265 level idc 0 is not valid
Don't put level=0 into the caps, it confuses other elements.

https://bugzilla.gnome.org/show_bug.cgi?id=765538
2016-04-25 16:49:20 +03:00
Sebastian Dröge
7741e56db4 codec-utils: H264 level idc 0 is not valid
Don't put level=0 into the caps, it confuses other elements.

https://bugzilla.gnome.org/show_bug.cgi?id=765538
2016-04-25 16:49:20 +03:00
Sebastian Dröge
fc99a61774 encoding-profile: Remove codec_data and streamheader fields from constraint caps
When converting discoverer output to an encoding profile, it makes sense to
omit these. It's very very unlikely that our encoder is going to produce bit
by bit the same codec_data or streamheader.

https://bugzilla.gnome.org/show_bug.cgi?id=765534
2016-04-25 16:07:50 +03:00
Sebastian Dröge
fd32d5812a encoding-profile: Don't put G_BEGIN_DECLS around #include statements
It should only be around our own declarations.
2016-04-25 15:06:23 +03:00
Wim Taymans
a12f51c3de video-converter: add more fastpaths for I420 -> RGB
Use the I420->BGRA and a new I420->ARGB to speed up any I420 to RGB
operation.
2016-04-22 15:30:19 +02:00
Josep Torra
1439b61694 sdp: update since markers to 1.8.1 for some new APIs
As we decided to backport some fixes we update the since markers.
2016-04-19 17:36:20 +02:00
Tim-Philipp Müller
694423fd3c tests: vorbisenc: fix with CK_FORK=no 2016-04-19 14:18:07 +01:00
Vivia Nikolaidou
2b53646715 decodebin: Always add a multiqueue in single-stream use-buffering pipelines
If we are configured to use buffering and there is no demuxer in the chain, we
still want a multiqueue, otherwise we will ignore the use-buffering property.
In that case, we will insert a multiqueue after the parser or decoder - not
elsewhere, otherwise we won't have timestamps.

https://bugzilla.gnome.org/show_bug.cgi?id=764948
2016-04-19 10:19:07 +03:00
Guillaume Desmottes
ef1a99d4d8 gst-play: call gst_deinit()
So we can use gst-play to track memory leaks.

https://bugzilla.gnome.org/show_bug.cgi?id=765216
2016-04-18 11:36:39 -04:00
Tim-Philipp Müller
de60d195c0 win32: update .def for new API 2016-04-15 17:48:26 +01:00
Jan Schmidt
802eae296a Revert "audioringbuffer: start ringbuffer if needed upon commit"
This reverts commit 13ee94ef10.

Causes audio glitches at startup by starting to output segments
from the ringbuffer before it has been filled / fully prerolled.

https://bugzilla.gnome.org/show_bug.cgi?id=657076
2016-04-16 02:13:15 +10:00
Aleix Conchillo Flaqué
28cf2f02e7 sdpmessage: new gst_sdp_media_parse_keymgmt/gst_sdp_media_parse_keymgmt
We add a couple of new functions gst_sdp_media_parse_keymgmt and
gst_sdp_media_parse_keymgmt. We also implement
gst_sdp_message_attributes_to_caps and gst_sdp_media_attributes_to_caps
in terms of these new functions and also gst_mikey_message_to_caps.
2016-04-15 15:28:47 +02:00
Aleix Conchillo Flaqué
7a864c177f mikey: add new function gst_mikey_message_to_caps 2016-04-15 15:21:23 +02:00
Vincent Penquerc'h
d1ecd3cfa7 subparse: fix build with GCC 4.6.3
gstsubparse.c: In function ‘parse_subrip’:
gstsubparse.c:988:7: error: ignoring return value of ‘strtol’, declared with attribute warn_unused_result [-Werror=unused-result]
cc1: all warnings being treated as errors

https://bugzilla.gnome.org/show_bug.cgi?id=765042
2016-04-15 13:33:41 +01:00
Josep Torra
62655029c8 .gitignore: add test-resample binary 2016-04-15 13:08:38 +02:00
Aleix Conchillo Flaqué
62e0e74759 mikey: allow passing srtp or srtcp to create mikey message
Current implementation requires all srtp and srtcp parameters to be
given in the caps. MIKEY uses only one algorithm for encryption and one
for authentication so we now allow passing srtp or srtcp parameters. If
both are given srtp parametres will be preferred.

https://bugzilla.gnome.org/show_bug.cgi?id=765027
2016-04-15 12:33:43 +02:00
Julien Isorce
cf63a900a9 Automatic update of common submodule
From 6f2d209 to ac2f647
2016-04-14 10:00:06 +01:00
Sebastian Dröge
a82ef8983e videometa: Initialize all fields of all metas with default values
The metas are not allocated with all fields initialized to zeroes.

https://bugzilla.gnome.org/show_bug.cgi?id=764902
2016-04-13 10:10:51 +03:00
Arjen Veenhuizen
c5ed98a35b videometa: Explicitly initialize GstVideoCropMeta on init
It is not allocated with all fields initialized to 0.

https://bugzilla.gnome.org/show_bug.cgi?id=764902
2016-04-13 10:10:46 +03:00
Guillaume Desmottes
6e7fa6659f alsa: properly convert position-less channels from ALSA
The only way for ALSA to expose a position-less multi channels is to
return an array full of SND_CHMAP_MONO. Converting this to a
GST_AUDIO_CHANNEL_POSITION_MONO array would be invalid as
GST_AUDIO_CHANNEL_POSITION_MONO is meant to be used only with one
channel.

Fix this by using GST_AUDIO_CHANNEL_POSITION_NONE which is meant to be
used for position-less channels.

https://bugzilla.gnome.org/show_bug.cgi?id=763799
2016-04-12 14:48:30 -04:00
Guillaume Desmottes
7c5dfd713c audioringbuffer: don't attempt to reorder position-less channels
As said in its doc GST_AUDIO_CHANNEL_POSITION_NONE is meant to be used
for "position-less channels, e.g. from a sound card that records 1024
channels; mutually exclusive with any other channel position".

But at the moment using such positions would raise a
'g_return_if_reached' warning as gst_audio_get_channel_reorder_map()
would reject it.

Fix this by preventing any attempt to reorder in such case as that's not
what we want anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=763799
2016-04-12 14:48:30 -04:00
Guillaume Desmottes
1c56cfa144 audio: add debug output if channels mapping does not match
https://bugzilla.gnome.org/show_bug.cgi?id=763985
2016-04-12 14:48:30 -04:00
Guillaume Desmottes
eef7312169 alsa: add some debugging output to alsa_detect_channels_mapping()
https://bugzilla.gnome.org/show_bug.cgi?id=763985
2016-04-12 14:48:30 -04:00
Guillaume Desmottes
3cb08304da gst-audio: add gst_audio_channel_positions_to_string()
We currently don't log much about channel positions making debugging
harder as it should be. This is the first step in my attempt to improve
this.

https://bugzilla.gnome.org/show_bug.cgi?id=763985
2016-04-12 14:48:30 -04:00
Guillaume Desmottes
d9268a50f1 alsa: factor out alsa_detect_channels_mapping()
This code was duplicated in alsasrc and alsasink.

https://bugzilla.gnome.org/show_bug.cgi?id=763985
2016-04-12 14:34:13 -04:00
Guillaume Desmottes
592b87a463 alsa: coding style fix
Was using tabs instead of spaces.

https://bugzilla.gnome.org/show_bug.cgi?id=763985
2016-04-12 14:34:13 -04:00
Vivia Nikolaidou
a0cf3b4262 fdmemory, rtpbasedepayload: Ran gst-indent
https://bugzilla.gnome.org/show_bug.cgi?id=764948
2016-04-12 17:34:18 +03:00
Vivia Nikolaidou
9d96959dde decodebin: Rename misleading variable is_parser_converter into is_parser
In that place, the variable isn't checking whether the element is a
converter, only if it is a parser.

https://bugzilla.gnome.org/show_bug.cgi?id=764948
2016-04-12 17:34:18 +03:00
Fabrice Bellet
bfcd0737b7 audio: Fix a race with the audioringbuffer thread
There is a small window of time where the audio ringbuffer thread
can access the parent thread variable, before it's initialized
by the parent thread. The patch replaces this variable use by
g_thread_self().

https://bugzilla.gnome.org/show_bug.cgi?id=764865
2016-04-11 21:43:13 +10:00
Tim-Philipp Müller
f05ea1e6a6 tests: libscpp: test RTP/RTCP buffer init macros with C++ compiler 2016-04-06 17:57:28 +01:00
Jan Schmidt
2dd399356f subtitleoverlay: Don't complain when stream-start is the first event.
When blocking the subtitle pad, it's expected that stream-start
is the first event, and that it can precede caps arriving on the
peer pad - in fact the caps can only have arrived on the peer
pad when it was pre-primed with sticky events previously.

Instead, just pass the stream-start and don't block, because
stream-start is sticky anyway.
2016-04-06 21:03:19 +10:00
Jan Schmidt
c27df799bf subparse: WebVTT Cue identifiers are optional
Don't require a cue identifier preceding the time range line
when parsing WebVTT. We could also store the CueID, but it's
not using anywhere, so just ignore it for now.
2016-04-06 21:00:10 +10:00
Sebastian Dröge
4a9be62ec6 win32: Add new libgstaudio symbols 2016-04-05 14:26:55 +03:00
Víctor Manuel Jáquez Leal
37c4915109 libs: audio: split allocation query caps and pad caps
Since the allocation query caps contains memory size and the pad's caps
contains the display size, an audio encoder or decoder might need to allocate
a different buffer size than the size negotiated in the caps.

This patch splits this logic distinction for audiodecoder and audioencoder.

Thus the user, if needs a different allocation caps, should set it through
gst_audio_{encoder,decoder}_set_allocation_cap() before calling the negotiate()
vmethod. Otherwise the allocation_caps will be the same as the caps in the
src pad.

https://bugzilla.gnome.org/show_bug.cgi?id=764421
2016-04-05 11:37:15 +02:00