Commit graph

5566 commits

Author SHA1 Message Date
Daniel Kamil Kozar
717f9a287d port teletextdec to 1.0
https://bugzilla.gnome.org/show_bug.cgi?id=733819
2015-12-06 10:39:47 +01:00
Sebastian Dröge
821320fbc4 hlsdemux: Resync live playlists to the 3rd newest fragment if we fall off the playlist
As HLS does not provide any way of knowing the server's clock, and we do
buffering of "live" streams, at some point we will fall behind the server in
many cases and would have to advance to a fragment that is not in the playlist
anymore.

Previously we would've just resynced to the next oldest fragment that is still
there, but this causes problems as from this point onwards we would always
fall off the playlist again all the time.
Instead we now resync and move to the 3rd newest fragment like we would do
when starting playback of a live stream.

https://bugzilla.gnome.org/show_bug.cgi?id=758987
2015-12-04 18:06:30 +02:00
Tim-Philipp Müller
fe1923e1e6 hls: m3u8: remove superfluous gst_m3u8_copy() implementation
No need to implement _copy() when we just copy a list that
we're freeing three lines later anyway. Instead just steal
the new main list.
2015-12-03 18:25:12 +00:00
Maroš Ondrášek
905158a055 hlsdemux: update current variant if connection speed is set
If connection speed is set, playlist according
to connection speed is selected as current playlist.

Problem is that the current variant of main playlist still
points to previously set variant.
If previously set variant doesn't correspond to current
playlist, then it causes unnecessary change of playlist
to the same playlist after first fragment is downloaded,
because of not updated current variant.

To fix this, we need to make sure that current variant
of main playlist corresponds to the current playlist

https://bugzilla.gnome.org/show_bug.cgi?id=758946
2015-12-02 14:39:12 +02:00
Jan Schmidt
77b302b5da hlsdemux: Tell the base class the fragment duration
adaptivedemux uses the fragment duration as a delay
in some cases, so make sure to set it.
2015-12-02 22:29:38 +11:00
Jan Schmidt
952275ad99 hlsdemux: When switching bitrate variants, don't jump back
Don't jump backward to 3 files from the end of the playlist
when switching variants - it just means we downloaded
fragments fast and caught up to the end of the playlist.

Disable that by treating a variant switch as a playlist
update, not a restart due to a seek or so.
2015-12-02 22:29:38 +11:00
Alex Ashley
0745d567a7 hlsdemux: correct the calculation of seek range of non-live streams
The seek range calculation for on-demand streams was incorrectly
excluding the last three segments of the stream. This three segment
rule should only be applied to live streams [1].

[1] https://tools.ietf.org/html/draft-pantos-http-live-streaming-17#section-6.3.3

https://bugzilla.gnome.org/show_bug.cgi?id=758386
2015-12-02 10:16:25 +02:00
Tim-Philipp Müller
64adb1998d hlsdemux: fix crash when decryption key can't be downloaded
Happened with
http://sslhls.m6tv.cdn.sfr.net/hls-live/livepkgr/_definst_/m6_hls_aes/m6_hls_aes_856.m3u8
if glib-networking was not installed (since key has https uri).
2015-12-01 18:01:36 +00:00
Tim-Philipp Müller
97ea56e91c hls: m3u8: remove pointless client_has_main() function
We always have a main list.
2015-12-01 17:51:34 +00:00
Tim-Philipp Müller
0ed4620033 hls: m3u8: remove unused _get_current_fragment_duration() function 2015-12-01 17:51:34 +00:00
Tim-Philipp Müller
e68914eeec hls: m3u8: remove unused m3u8 client update_failed_count field 2015-12-01 17:51:34 +00:00
Tim-Philipp Müller
5443cca406 hls: m3u8: remove helper var that's only used during parsing from structure
Just keep that local to the parsing function.
2015-12-01 17:51:34 +00:00
Tim-Philipp Müller
efe62292a3 hls: rename plugin from fragmented to hls 2015-12-01 17:51:34 +00:00
Sebastian Dröge
fac4ed18d4 hlsdemux: Always give timestamps if we're discont and don't mark stream discont if a playlist change was not successful
If the stream is discont, we must provide a timestamp in any case. Elements
like tsdemux are not going to output anything if we give a NONE timestamp
after a discont.

Also marking a stream as discont if a playlist change was not successful would
lead to the above situation, but in that case we are not required at all to
mark the stream discont as we're still at the old playlist.
2015-12-01 19:47:59 +02:00
Luis de Bethencourt
0767a237ad opusparse: remove unneeded statement
commit da5c41930c removed the two uses of the
new value of data:
  channels = opus_packet_get_nb_channels (data);
  bandwidth = opus_packet_get_bandwidth (data);

Since then, data isn't being used between incrementing it by packet_offset
and going out of scope. Removing this uneeded statement.
2015-11-27 18:51:10 +00:00
Florin Apostol
9a7bf5fbf1 mpdparser: remove gst_mpd_client_check_time_position
https://bugzilla.gnome.org/show_bug.cgi?id=758593
2015-11-24 10:01:58 -03:00
Maroš Ondrášek
b902c4a293 mssdemux: add depth field to audio caps if available
depth field can be retrieved from "BitsPerSample" or
from "WaveFormatEx" structure, if provided in Manifest

https://bugzilla.gnome.org/show_bug.cgi?id=758586
2015-11-24 09:13:06 -03:00
Florin Apostol
650b7b8fce mpdparser: added support for parsing fraction of seconds in dateTime fields
https://bugzilla.gnome.org/show_bug.cgi?id=758410
2015-11-23 11:54:37 -03:00
Thiago Santos
5be46607bb dashdemux: always set presentationTimeOffset
Set it for all types of segment lists (templates / lists / base)
and not only for templates.

https://bugzilla.gnome.org/show_bug.cgi?id=751529
2015-11-20 20:59:16 -03:00
Roman Nowicki
21348cf772 qml: reuse existing GstQSGTexture
Fixes a memory leak leaking the texture objects.

https://bugzilla.gnome.org/show_bug.cgi?id=758286
2015-11-20 11:18:43 +11:00
Matthew Waters
33d98ddf48 qml: activate the wrapped context when binding
Mitigates the following critical

gst_gl_context_thread_add: assertion 'context->priv->active_thread == g_thread_self ()' failed
2015-11-20 11:09:45 +11:00
Roman Nowicki
27c94f3375 qml: proper initialization if scene is already initialized
The scene graph can be initialized when the we receive window handle change
notification and so we will not receive a scenegraph initialization
notification.  Initialize ourself in this case.

https://bugzilla.gnome.org/show_bug.cgi?id=758337
2015-11-20 09:41:56 +11:00
Jimmy Ohn
7093ad482b dashdemux: Add binary search for stream_sidx_seek
Add binary search to optimize in stream_sidx_seek.

https://bugzilla.gnome.org/show_bug.cgi?id=749653
2015-11-19 16:07:31 -03:00
Florin Apostol
ef84f294c0 mpdparser: remove unused functions gst_mpdparser_get_chunk_by_index and gst_mpdparser_find_segment_by_index
https://bugzilla.gnome.org/show_bug.cgi?id=758233
2015-11-19 15:53:30 -03:00
Luis de Bethencourt
49ccb72b47 docs: update gst-launch-0.10 lines
Update references to gst-launch-0.10 to gst-launch-1.0
2015-11-19 17:25:01 +00:00
Reynaldo H. Verdejo Pinochet
86ec812429 Remove unnecessary NULL checks before g_free()
g_free() is NULL-safe
2015-11-18 16:05:42 -08:00
Sebastian Dröge
87b5ad0dfc mpdparser: Also allow '/' in RepresentationID
Used by http://www.bok.net/dash/tears_of_steel/cleartext/stream.mpd

https://bugzilla.gnome.org/show_bug.cgi?id=757903
2015-11-18 19:17:29 +02:00
George Kiagiadakis
c51fe83d42 waylandsink: call gst_video_sink_center_rect with a destination rectangle that starts from (0,0)
The intention of this code is to find the center rectangle relative
to (0,0), since subsurface coordinates are relative to the parent
surface.

The old code used to work but was wrong and broken by
http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/gst-libs/gst/video/gstvideosink.c?id=ff57f6913456ec1991e55517cf1f239e80eeddef
2015-11-18 13:10:45 +01:00
Florin Apostol
fb2d3abca8 dashdemux: fixed illegal memory access in gst_mpd_client_get_last_fragment_timestamp_end
https://bugzilla.gnome.org/show_bug.cgi?id=758188
2015-11-18 09:50:26 +02:00
Sebastian Dröge
527747a077 glimagesink: Remove unused variable
gstglimagesink.c: In function 'gst_glimage_sink_on_draw':
gstglimagesink.c:1959:18: error: unused variable 'sync_meta' [-Werror=unused-variable]
   GstGLSyncMeta *sync_meta = NULL;
                  ^
2015-11-17 17:17:50 +02:00
Matthew Waters
3bf7430411 glimagesink: wait on the correct sync meta when rendering 2015-11-17 15:27:26 +11:00
Matthew Waters
fcd0faa055 glimagesink: add support for rendering external-oes textures
https://bugzilla.gnome.org/show_bug.cgi?id=757285
2015-11-17 15:27:26 +11:00
Vineeth TM
15251e4824 glimagesink: Fix structure memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=758205
2015-11-17 00:14:02 -03:00
Luis de Bethencourt
bd82332f6c opusenc: avoid potential overflow expression
The result of the two expressions will be promoted to guint64 anyway,
perform all the arithmetic in 64 bits to avoid potential overflows.

CID 1338690, CID 1338691
2015-11-12 12:29:33 +00:00
Luis de Bethencourt
7c495b711e opusparse: initialize sample rate to a default
sample_rate might be used uninitialized if !sink_caps is TRUE. Initialize
it to the default used in gst_codec_utils_opus_parse_caps () when there is
no rate defined in the caps.

CID 1338695
2015-11-12 11:23:36 +00:00
Matthew Waters
50b59150fd glviewconvert: remove set_format
We need the caps to be able to
1. check the caps features
2. get the requested texture-target on input/output
2015-11-11 15:16:37 +11:00
Matthew Waters
715f3bb828 glimagesink: fix a memory leak if the view conversion fails 2015-11-11 14:41:38 +11:00
Matthew Waters
2bc391851e glimagesink: balance the creation/destruction of the overlay compositor
Fixes some leaks/possible segfault on when failing to create the compositor.
2015-11-11 14:41:38 +11:00
Matthew Waters
0602539f1b glimagesink: wait on the provided sync meta provided to glimagesink 2015-11-10 15:42:35 +11:00
Matthew Waters
eb4e2de4e8 gtk: add the overlaycomposition feature to the template caps
There is a possibility that the _get_caps impl will be called with the
feature in the filter caps which when interecting with the template,
will return EMPTY and therefore fail negotiation.

https://bugzilla.gnome.org/show_bug.cgi?id=757854
2015-11-10 15:40:25 +11:00
Tim-Philipp Müller
63853b7b0d assrender: don't send flush events on seeks
It's for the upstream element driving the pipeline to
handle seeks and send flush events or not, filters
should not interfere here, otherwise downstream pads
could be flushing before upstream pads are flushing,
which can result in GST_FLOW_ERROR being sent instead
of GST_FLOW_FLUSHING when trying to forward sticky
events at just the wrong moment.
2015-11-06 20:31:31 +00:00
Tim-Philipp Müller
734d5a79c5 Fix code indentation 2015-11-06 19:29:49 +00:00
Tim-Philipp Müller
02c9247d54 glmixerbin: fix minor leak
Don't leak removed list node.
2015-11-06 13:00:55 +00:00
Thibault Saunier
f63fa80407 faac: Initialize debug category soon enough
Avoiding assertions
2015-11-06 13:33:46 +01:00
Tim-Philipp Müller
3015cd75e4 hls: m3u8: don't leak GList nodes when matching up variant lists after master list update 2015-11-06 00:48:42 +00:00
Luis de Bethencourt
5a4c09f791 resindvd: use GST_STIME_FORMAT for GstClockTimeDiff
No need to use G_GINT64_FORMAT for potentially negative values of
GstClockTimeDiff. Since 1.6 these can be handled with GST_STIME_FORMAT.
Plus it creates more readable values in the logs.

https://bugzilla.gnome.org/show_bug.cgi?id=757480
2015-11-05 12:17:58 +00:00
Sebastian Dröge
e7515971a8 opusdec: Update sink pad templates
We always require the channel-mapping-field. If it's 0 we require nothing
else, otherwise we need channels, stream-count and coupled count to be
available.
2015-11-05 12:11:19 +01:00
Sebastian Dröge
7ec953e085 opusenc: Create an empty taglist if there is none
There always have to be 2 buffers in the streamheaders, even if
the comment buffer is basically empty.
2015-11-04 00:14:13 +02:00
Sebastian Dröge
51edbeb9d9 opus: Add proper support for multichannel audio
https://bugzilla.gnome.org/show_bug.cgi?id=757152
2015-11-03 20:35:41 +02:00
Sebastian Dröge
4c8f76f05b opusparse: Fix up pre-skip in OpusHead if upstream using GstAudioClippingMeta
Makes transmuxing from e.g. MPEG-TS to Ogg sample accurate.

https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
8a837c6715 opusdec: Handle GstAudioClippingMeta instead of the pre-skip field in the OpusHead
oggdemux is outputting the meta now, and only outputs if it should really
apply to the current buffer. Previously we would skip N samples also if we
started the decoder in the middle of the stream.

https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
d5389e71ff opusenc: Add GstAudioClippingMeta to buffers that need to be clipped
https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
483cb05af1 opusenc: Disable granule position calculations by the base class
It is doing the wrong thing because of the Opus pre-skip: while the timestamps
are shifted by the pre-skip, the granule positions are not shifted.

oggmux is doing the right thing here already.

https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
619c750222 opusenc: Add some FIXME comments about calculating padding with LPC
https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
f66afc47ac opusenc: Encode exactly the amount of samples we got as input and put correct timestamps on it
The first frame has lookahead less samples, the last frame might have some
padding or we might have to encode another frame of silence to get all our
input into the encoded data.

This is because of a) the lookahead at the beginning of the encoding, which
shifts all data by that amount of samples and b) the padding needed to fill
the very last frame completely.

Ideally we would use LPC to calculate something better than silence for the
padding to make the encoding as smooth as possible.

With this we get exactly the same amount of samples again in an
opusenc ! opusdec pipeline.

https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
c7d785a512 opusenc: Put lookahead/pre-skip into the OpusHead header
https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Stefan Sauer
af27ee3aa7 opencv: cast paramspec flags to fix the build for c++
All the other elements in this plugin do this already.
2015-11-03 09:19:37 -08:00
Hyunil Park
c9aaa4189b waylandsink: Add exception code for setting wl_surface
Waylandsink needs exception code in gst_wayland_sink_set_window_handle().
After making sink->window, User can call
gst_wayland_sink_set_window_handle(). It is the user's fault, but
Waylandsink needs to handle the exception, if not then sink->window is
changed and rendering fails.

https://bugzilla.gnome.org/show_bug.cgi?id=747482
2015-11-03 10:45:05 +00:00
Hyunil Park
d3db3df320 waylandsink: Add exception code for setting wl_display
Waylandsink needs exception code in gst_wayland_sink_set_context(). After
calling gst_wayland_sink_set_context(), below code is set.
GST_ELEMENT_CLASS (parent_class)->set_context (element, context); but, If
user can call onemore. It is user's fault. but waylandsink need to
exception.

https://bugzilla.gnome.org/show_bug.cgi?id=747482
2015-11-03 10:42:14 +00:00
Florin Apostol
19d604e92f dashdemux: remove unreachable code
The stream->cur_seg_template is set to the lowest available segment
template (representation or adaptation or period, in this order).
Because the template elements are inherited, the lowest template will
have all the elements the parents had, so there is no need to check the
parent for an element that is not found in the child (eg initialisation
or index).

https://bugzilla.gnome.org/show_bug.cgi?id=752714
2015-11-02 11:37:19 +00:00
Vincent Penquerc'h
045a03c14a mpdparser: add some checks to duration parsing
https://bugzilla.gnome.org/show_bug.cgi?id=752336
2015-11-02 11:36:12 +00:00
Florin Apostol
7dca9fb3f4 dashdemux: added duration format validation
https://bugzilla.gnome.org/show_bug.cgi?id=752336
2015-11-02 11:36:12 +00:00
Luis de Bethencourt
f28fad6e83 dashdemux: fix memory leak
Free new_mpd, allocated with g_slice_new(), before going out of scope in
goto error.

CID 1338050
2015-11-02 11:27:43 +00:00
Sebastian Dröge
dbd894f133 opusdec: Assume 48kHz if no sample rate is given in the header 2015-11-02 09:36:46 +02:00
Sebastian Dröge
18c8abec6d opusenc: Place 48kHz first in the caps
For all the other sample rates the encoder will have to resample internally.
2015-11-02 09:36:43 +02:00
Vincent Penquerc'h
e48e68416c mpdparser: make durations unsigned where appropriate
The standard does not seem to make any particular explicit not
implicit reference to the signedness of durations, and the code
does not rely on such, nor on the negativity of the -1 value
that's used as a placeholder when a duration property is not
present in the XML.

https://bugzilla.gnome.org/show_bug.cgi?id=750847
2015-10-30 16:29:46 +00:00
Florin Apostol
d6e805a283 dashdemux: inherit bitstreamSwitching from Period to AdaptationSet
https://bugzilla.gnome.org/show_bug.cgi?id=752340
2015-10-30 15:58:36 +00:00
Florin Apostol
fe6adec702 dashdemux: marked PROP_BANDWIDTH_USAGE property as deprecated
https://bugzilla.gnome.org/show_bug.cgi?id=753890
2015-10-30 15:25:14 +00:00
Florin Apostol
013655d886 dashdemux: inherited segment URLs are ignored if they are defined again in a lower SegmentList
According to the standard:
"SegmentBase, SegmentTemplate and SegmentList shall inherit
attributes and elements from the same element on a higher level.
If the same attribute or element is present on both levels,
the one on the lower level shall take precedence over the one
on the higher level."

gst_mpdparser_parse_segment_list_node will now discard any inherited
segment URLs if the parsed element defines some too.

https://bugzilla.gnome.org/show_bug.cgi?id=751832
2015-10-30 14:31:21 +00:00
Matthew Waters
1c05479715 glcolorconvert: remove unused ret variable 2015-10-30 14:43:23 +11:00
Matthew Waters
ccce217502 glcolorconvert: add support for converting texture targets
Solved with a simple shader templating mechanism and string replacements
of the necessary sampler types/texture accesses and texture coordinate
mangling for rectangular and external-oes textures.
2015-10-30 14:24:53 +11:00
Matthew Waters
e61d504556 glmemory: add support for rectangle textures
Add the various tokens/strings for the differnet texture types (2D, rect, oes)

Changes the GLmemory api to include the GstGLTextureTarget in all relevant
functions.

Update the relevant caps/templates for 2D only textures.
2015-10-30 14:24:53 +11:00
Alex Ashley
c8ef39cac7 dashdemux: provide a default suggestedPresentationDelay
If MPD@suggestedPresentationDelay is not present in the manifest,
dashdemux selects the fragment closest to the most recently generated
fragment. This causes a playback issue because this choice does not allow
the DASH client to build up any buffer of downloaded fragments without
pausing playback. This is because by definition new fragments appear on
the server in real-time (e.g. if segment duration is 4 seconds, a new
fragment will appear on the server every 4 seconds). If the starting
playback position was n*segmentDuration seconds behind "now", the DASH
client could download up to 'n' fragments faster than realtime before it
reached the point where it needed to wait for fragments to appear on the
server.

The MPD@suggestedPresentationDelay attribute allows a content publisher
to provide a suggested starting position that is behind the current
"live" position.

If the MPD@suggestedPresentationDelay attribute is not present, provide
a suitable default value as a property of the dashdemux element. To
allow the default presentation delay to be specified either using
fragments or seconds, the property is a string that contains a number
and a unit (e.g. "10 seconds", "4 fragments", "2500ms").
2015-10-29 13:26:46 +00:00
Florin Apostol
e7745a5720 dashdemux: improve detection of stream language
Improved the detection of stream's language if the AdaptationSet
contains more than 1 ContentComponent

https://bugzilla.gnome.org/show_bug.cgi?id=752367
2015-10-29 12:14:50 +00:00
Vincent Penquerc'h
7443f35249 dash_mpd: restrict segment template format strings to %0[0-9]*d as per spec
https://bugzilla.gnome.org/show_bug.cgi?id=751735
2015-10-29 12:04:31 +00:00
Florin Apostol
4eea6c3833 dashdemux: segment template parsing: added support for %d
Added support for %d in template identifier.
Added testcases for %d, %3d, %0-4d identifier formats.
2015-10-29 11:58:47 +00:00
Florin Apostol
933d367440 dashdemux: corrected parsing of segment templates
Corrected the parsing of a segment template string.
Added unit tests to test the segment template parsing.
All reported problems are now correctly handled.

https://bugzilla.gnome.org/show_bug.cgi?id=751735
2015-10-29 11:54:34 +00:00
Florin Apostol
566e84cec1 dashdemux: fixed crash when segment timeline list is greater than segment url list
When building the media segment list using a SegmentList node, the
gst_mpd_client_setup_representation function will iterate through the
list of S nodes and will expect to find a matching SegmentUrl node. If
one does not exist, the code made an illegal memory access.

https://bugzilla.gnome.org/show_bug.cgi?id=752496
2015-10-29 10:20:45 +00:00
Vincent Penquerc'h
5c8f702116 mpdparser: do not dereference profiles is absent
These are used to apply restrictions on what the MPD file may
use, so no profile means no restrictions.

Besides, nothing actually uses the profiles (yet) anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=750869
2015-10-29 10:20:45 +00:00
Florin Apostol
eab158a669 adaptivedemux: fixed multithread support
https://bugzilla.gnome.org/show_bug.cgi?id=755169
2015-10-29 10:20:45 +00:00
Florin Apostol
cdfec06092 dashdemux: parser rejects negative values for mediaPresentationDuration
https://bugzilla.gnome.org/show_bug.cgi?id=752326
2015-10-29 10:20:45 +00:00
Florin Apostol
7c2746f741 dashdemux: corrected parsing of negative values into unsigned data
https://bugzilla.gnome.org/show_bug.cgi?id=752429
2015-10-29 10:20:45 +00:00
Vincent Penquerc'h
54d93f597d mpdparser: forbid negative values for duration
https://bugzilla.gnome.org/show_bug.cgi?id=752492
2015-10-28 15:43:00 +00:00
Florin Apostol
c763d1e8fd dashdemux: parser rejects XMLs with negative period duration
https://bugzilla.gnome.org/show_bug.cgi?id=752329
2015-10-28 15:41:17 +00:00
Vincent Penquerc'h
60133b1472 mpdparser: check segment lists have either duration or timeline
And add error checking along the way.

Add duration where appropriate so unit tests still pass.

https://bugzilla.gnome.org/show_bug.cgi?id=751650
2015-10-28 15:34:29 +00:00
Vincent Penquerc'h
b8df6cc316 mpdparser: validate representation set identifier
It must have no whitespace, and must comply with RFC 1738 when
used to build a URL.

https://bugzilla.gnome.org/show_bug.cgi?id=750852
2015-10-28 15:11:50 +00:00
Matthew Waters
de808c6439 opengl: build/provide glstereomix/split on gles only systems 2015-10-27 15:30:58 +11:00
George Kiagiadakis
c2f34b9814 waylandsink: don't advertise the local wl_display context
This wl_display proxy is temporary only until waylandsink goes NULL,
at which point the connection to the display is disposed. Unfortunately,
if this is advertised as a GstContext, playbin will cache it and re-feed
it to the sink when it goes PLAYING again, but the wl_display pointer
will at that point be invalid and cause a crash.

Another solution to the problem would be to also cache the GstWlDisplay
object inside the GstContext, which would automatically ref-count
the display connection, but I see no reason in doing that at the moment,
as there are no known users of this GstContext outside waylandsink.
It's probably better to avoid chasing hidden refcounts.

https://bugzilla.gnome.org/show_bug.cgi?id=756567
2015-10-26 16:11:56 +01:00
Matthew Waters
09976e021b glviewconvert: expose the element on gles2 platforms
We can do everything with gles3 however gles2 restricts us not allowing
separated or frame-by-frame multiview modes due to multiple draw buffers.
2015-10-26 18:24:59 +11:00
André Draszik
e0b4290998 hlsdemux: don't crash or leak memory on broken master playlist
If a (master) playlist contains a variant list entry without a
URI then during parsing of the next variant list entry we are
a) leaking the entry we're currently parsing (new_list), and
b) free'ing the pointer to the previous list entry (list) without
   updating the pointer.

Hence when then adding the URI for the latest parsed entry, incorrect
information is stored, as the information is used from 'list' which
is not valid memory anymore, also leading to crashes.

Fix this by correctly storing the new variant list entry pointer
as needed.

https://bugzilla.gnome.org/show_bug.cgi?id=756861
2015-10-25 09:26:34 +00:00
Tim-Philipp Müller
344d100b1c hlsdemux: change dispose function to finalize 2015-10-23 18:51:43 +01:00
Tim-Philipp Müller
b8a155c17d hlsdemux: remove helper function only used once 2015-10-23 18:51:43 +01:00
Tim-Philipp Müller
917b034238 hlsdemux: remove deprecated 'fragments-cache' property
It's been non-functional for two cycles now, let's
get rid of it.
2015-10-23 18:51:18 +01:00
Tim-Philipp Müller
1c8d844ece hlsdemux: m3u8: move file lookup by sequence directly into code
Nicer to read, two lines of code less, and also the callback
function should've been a GCompareFunc that returns a gint
and not a boolean (it did work correctly, was just confusing).
2015-10-23 18:20:01 +01:00
Tim-Philipp Müller
28ac033773 hlsdemux: m3u8: clean-up: remove unused argument in function call 2015-10-23 18:19:55 +01:00
Tim-Philipp Müller
da682fc130 hlsdemux: m3u8: clean-up: reindent header for better readability
And remove duplicate define.
2015-10-23 18:19:49 +01:00
Santiago Carot-Nemesio
073bff8ce2 srtp: Fix critical warning trying to retrieve SSRC from a non fb message
https://bugzilla.gnome.org/show_bug.cgi?id=756876
2015-10-23 16:32:03 +03:00
Luis de Bethencourt
ec319bb9d2 opencv: handdetect: no need to get a writable buffer
No need to get a writable buffer inside cv_trans_func of opencv video
filter. GstBaseTransform takes care of this.
2015-10-21 17:06:45 +01:00
Matthew Waters
d81a96c81c glshaderelement: free the vertex and fragment strings on finalize
Fixes a memory leak when using the vertex/fragment properties.
2015-10-21 05:35:03 +11:00
Matthew Waters
71b4ae1f43 glshaderelement: remove unneeded reference to <gst/gl/gstglshadervariables.h> 2015-10-21 05:01:29 +11:00
Matthew Waters
70be81ad92 glimagesink: create a context in NULL_READY
So that it's possible for decoders et al. to request the OpenGL context
in their READY_PAUSED transition with decodebin/playbin.
2015-10-21 04:28:59 +11:00
Matthew Waters
5f4f240ada glshaderelement: implement setting arbitrary uniforms
Currently float and int are supported by default. vec2, vec3, vec4
and mat4 are supported if graphene is used.  Of course if one wants
to set custom uniforms they can also be set using the create-shader
signal.
2015-10-21 04:05:00 +11:00
Luis de Bethencourt
ebeb12d0e8 opencv: handdetect: free best_r with delete
best_r is a cv::Rect, so it should be freed with delete and not with
g_free()
2015-10-20 12:24:13 +01:00
Luis de Bethencourt
1193fc875d opencv: motioncells: remove unnecessary check
We know that the gchar arrays contain at least one string. Furthermore,
g_strfreev() checks if the array is NULL and simply returns if it is.
Hence, there is no need to check if the array is empty before using
g_strfreev().

CID 1327412-1327415
2015-10-20 12:09:01 +01:00
Edward Hervey
f7c4bb5ac6 hls/m3u8: Update current position in all cases
In order to ensure the sequence_position will always be consistently updated,
store the current file duration.

This way, when we advance, we can always increment the position based on what
was previously outputted.

https://bugzilla.gnome.org/show_bug.cgi?id=752132
2015-10-19 14:45:42 +02:00
Matthew Waters
3dfc6899ad gl: be consistent in gobject boilerpate
GST_GL_IS_* vs GST_IS_GL_*

git grep -l 'GST_GL_IS_' | xargs sed -i 's/GST_GL_IS_/GST_IS_GL_/g'
2015-10-19 15:15:30 +11:00
Matthew Waters
b9e1cd3732 glshaderelement: implement on-demand create-shader signalling
One may not have an GstGLContext available or current in the thread where one
would need to update the shader.  Support this by signalling create-shader
whenever the one-shot 'update-shader' is set to TRUE.
2015-10-17 16:10:41 +11:00
Matthew Waters
61b51b82ed gl/calayer: don't leak a gl shader object
We will always overwrite the ca_sink->redisplay_shader without freeing the
object.
2015-10-17 16:10:41 +11:00
Matthew Waters
cfff5d819e gtk: separate out the widget/window destroy callbacks
Fixes assertion due to the sink_finalize() being run before the widget destroy
callback.

https://bugzilla.gnome.org/show_bug.cgi?id=755969
2015-10-17 16:09:53 +11:00
Miguel París Díaz
f19a789b68 srtpdec: skip padding when mapping RTP packets
https://bugzilla.gnome.org/show_bug.cgi?id=756653
2015-10-16 09:17:18 +03:00
Matthew Waters
9ad6872b5b gl/caopengllayersink: port to new GstGLShader API
fixes build error:
"undefined symbols for architecture:
gst_gl_shader_compile_with_default_vf_and_check"
2015-10-15 23:47:11 +11:00
Matthew Waters
7ddb05eab2 glshader: port element to GstGLSLStage
- Provide a shader property to set the full shader pipeline
- Provide vertex and fragment properties for just providing simple
  shader sources.
2015-10-15 21:27:57 +11:00
Matthew Waters
b25807c382 glshader: port to using GstGLSLStage objects for string management
A GstGLShader is now simply a collection of stages that are
compiled and linked together into a program.  The uniform/attribute
interface has remained the same.
2015-10-15 21:27:57 +11:00
Paul Arzelier
0d3ca6391c dtls: Fix name conflict with openssl on win32
https://bugzilla.gnome.org/show_bug.cgi?id=756592
2015-10-15 09:50:19 +03:00
Thiago Santos
d5f79b8529 hls: if media sequence is not specified, use 0
Allows playlists that are missing the mediasequence information to
be correctly parsed. If the playlist was updated without reseting
the mediasequence it would constantly increase over subsequent updates,
leading to issues during playback.
2015-10-14 21:33:27 -03:00
George Kiagiadakis
f78b37e6b2 waylandsink: fix fallback buffer allocation
Copy-paste mistake; the wl_buffer was attached on the wrong buffer...
2015-10-14 22:05:52 +02:00
George Kiagiadakis
abcc8eafed waylandsink: rename GstWlDisplay::formats array to shm_formats
These formats are specific to the wl_shm interface. We are going
to add dmabuf formats later as well.
2015-10-14 22:05:52 +02:00
George Kiagiadakis
28194c0c11 waylandsink: replace the custom GstWlShmMemory with GstFdMemory 2015-10-14 22:05:51 +02:00
Edward Hervey
0e663fca94 hls: Allow debugging of the playlist
Helps debugging issues
2015-10-14 18:01:04 +02:00
Edward Hervey
8d86a8b75d hlsdemux: Avoid negative sequence numbers
For live streams, we want to make sure there's a certain distance
between the sequence to play and the last (earliest) fragment.

The problem is that it assumes there are at least 3 fragments in
the playlist, which might not always be the case (like in the case
of a server restarting and gradually adding fragments).

In order to avoid ending up with negative sequence numbers (which
will just loop forever), limit the new target sequence number to
the highest of:
* either the first sequence number of the playlist (fallback)
* or 3 fragments from the last one (standard behaviour)
2015-10-14 18:01:04 +02:00
Luis de Bethencourt
f58cd983b6 opencv: switch remaining to C++
Switch remaining C files to C++ for consistency with other OpeCV elements,
and support of the new 2.4.11 API.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-14 15:48:51 +01:00
Sebastian Dröge
1f7156d478 mpdparser: Set default last_byte_pos to -1
The value is optional in the range, and if it is absent it means we should
download until the end of stream. Not until position 0.

https://bugzilla.gnome.org/show_bug.cgi?id=748316
2015-10-14 16:57:56 +03:00
Luis de Bethencourt
10085a5d01 opencv: motioncells: Switch to C++
Switch gstmotioncells to C++ for consistency with other OpenCV elements,
and support of the new 2.4.11 API.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-14 14:37:51 +01:00
Luis de Bethencourt
3ffdb8a6e4 textoverlay: Switch to C++
Switch gsttextoverlay to C++ for consistency with other OpenCV elements,
and support of the new 2.4.11 API.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-11 23:45:35 +01:00
Luis de Bethencourt
466966ff6c opencv: pyramidsegment: Switch to C++
Switch gstpyramidsegment to C++ for consistency with other OpenCV elements,
and support of the new 2.4.11 API.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-11 22:15:06 +01:00
Julien Isorce
657f1913c6 dashdemux: fix undefined reference to gst_ntp_clock_new
Found with gst-inspect-1.0 -b in gst-uninstalled env.

https://bugzilla.gnome.org/show_bug.cgi?id=756383
2015-10-11 10:51:24 +01:00
Luis de Bethencourt
61168794ea cvsobel: Switch to C++
Switch gstcvlsobel to C++ for consistency with other OpenCV elements, and
support of the new 2.4.11 API.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-10 18:00:31 +01:00
Luis de Bethencourt
a4429cf769 cvlaplace: Switch to C++
Switch gstcvlaplace to C++ for consistency with other OpenCV elements, and
support of the new 2.4.11 API.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-10 17:02:11 +01:00
Luis de Bethencourt
49287b1e04 cvequalizehist: Switch to C++
Switch gstcvequalizehist to C++ for consistency with other OpenCV elements,
and support of the new 2.4.11 API.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-10 17:02:05 +01:00
Luis de Bethencourt
b2420b0408 cverode: Switch to C++
Switch gstcverode to C++ for consistency with other OpenCV elements, and
support of the new 2.4.11 API.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-10 14:14:32 +01:00
Florin Apostol
1d1094b71b dashdemux: fixed has_next_period
gst_mpd_client_has_next_period now calls gst_mpd_client_setup_media_presentation
to refresh the period information.

https://bugzilla.gnome.org/show_bug.cgi?id=756186
2015-10-07 15:50:08 +01:00
Nirbheek Chauhan
4977ec1189 glvideomixer: Proxy the ignore-eos videoaggregator property as well
Identical to how the z-order property is proxied
2015-10-06 16:57:53 +01:00
Havard Graff
cb20105aa5 rtmpsrc: plug memory-leaks
https://bugzilla.gnome.org/show_bug.cgi?id=756001
2015-10-03 17:52:51 +01:00
Sebastian Dröge
458bafe9e3 resindvd: Port to new GLib mutex/cond API 2015-10-02 22:57:27 +03:00
Sebastian Dröge
f5dd41d710 Update GLib dependency to 2.40.0 2015-10-02 22:24:19 +03:00
Vanessa Chipirrás Navalón
f8e11fe656 cvdilate: Change gstcvdilate to C++
Change the gstcvdilate.c file extension to cpp and add it into Makefile for
consistency with other elements of opencv and because Opencv not support C
language in new API 2.4.11.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-02 19:07:17 +01:00
Vanessa Chipirrás Navalón
7f9aef31cb skindetect: Change gstskindetect to C++
Change the file extension to cpp and add it into Makefile for consistency
with other elements of opencv and because Opencv not support C language in
new API 2.4.11.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-02 18:58:49 +01:00
Vanessa Chipirrás Navalón
1c9763c0eb opencvutils: add extern C, for the opencv elements work.
Adding G_BEGIN_DECLS and G_END_DECLS to gstopencvutils.h
to allow C-style linking.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-02 18:46:38 +01:00
Luis de Bethencourt
e2709ed2ef retinex: use OpenCV namespace
As part of the switch to C++, use the new OpenCV functions.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-02 18:41:45 +01:00
Vanessa Chipirrás Navalón
ae55a537e6 cvsmooth: port to C++
Change the file extension to cpp and add it into Makefile for consistency
with other elements of opencv and because Opencv not support C language in
new API 2.4.11.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-02 18:41:27 +01:00
Vanessa Chipirrás Navalón
936665dfd6 retinex: Change retinex to C++
Change the gstretinex.c file to cpp and add it into Makefile.
It is necessary to migrate the retinex element to C++,
because new Opencv API leaves obsolete functions like cvSmooth.
This element uses this function.

You can see in this link:
http://docs.opencv.org/modules/imgproc/doc/filtering.html?
highlight=cvsmooth#void cvSmooth(const CvArr* src, CvArr* dst,
int smoothtype, int size1, int size2, double sigma1, double sigma2)

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-10-02 18:07:06 +01:00
Vanessa Chipirrás Navalón
31b1938a5f handdetect: remove another unused variable
Memory is reserved for this variable and then released without making any
use of it.

https://bugzilla.gnome.org/show_bug.cgi?id=752528
2015-10-02 17:19:12 +01:00
Luis de Bethencourt
e00461a789 handdetect: CvPoint values changed from uint to int
The x and y values of CvPoint changed from unsigned to signed integers
in OpenCV 2.4.11.

https://bugzilla.gnome.org/show_bug.cgi?id=752528
2015-10-02 17:10:59 +01:00
Luis de Bethencourt
75e38f915f handdetect: need to migrate to C++
The cascade classifier changes its structure on new version of OpenCV 2.4.11.
It is need to migrate to C++ to utilize the new load method of OpenCV which
allows to load the old and new classifiers.

https://bugzilla.gnome.org/show_bug.cgi?id=752528
2015-10-02 17:10:59 +01:00
Luis de Bethencourt
dab249a445 handdetect: Change gsthanddetect to C++
Change the gsthanddetect.c file to cpp and add it into Makefile.
It is necessary to migrate the handdetect plugin to C++,
in order to load new and old classifiers, to make handdetect work
with newer versions of Opencv.

https://bugzilla.gnome.org/show_bug.cgi?id=752528
2015-10-02 17:10:59 +01:00
Polochon_street
b58f711566 dtls: fix printf format on win32 2015-10-02 16:36:14 +01:00
Arnaud Vrac
3b1e095169 assrender: optimize blending
Skip empty source pixels when blending an image. There can be hundreds
of images to blend at each frame, so this brings a nice performance
boost.

https://bugzilla.gnome.org/show_bug.cgi?id=753821
2015-10-02 17:23:57 +03:00
Arnaud Vrac
ecdc7bb37d assrender: Use the window size from downstream
This allows rendering the overlay at a resolution matching the video
resolution.

https://bugzilla.gnome.org/show_bug.cgi?id=753824
2015-10-02 17:18:33 +03:00
Arnaud Vrac
f021d32bef assrender: Improve negotiation
This is mostly a copy/paste of the negotiation function in
basetextoverlay, which was improved recently to handle many more cases.

This will allow us to negotiate a window size with downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=753824
2015-10-02 17:17:24 +03:00
Arnaud Vrac
31c6902373 assrender: render the subtitles with the proper aspect
This bumps the libass version requirement to 0.10.2.

https://bugzilla.gnome.org/show_bug.cgi?id=753824
2015-10-02 17:16:31 +03:00
Paul Arzelier
86443f8ae2 dtls: fix printf format on win32
https://bugzilla.gnome.org/show_bug.cgi?id=755981
2015-10-02 14:21:46 +01:00
John Chang
58cb254450 dashdemux: Correctly assign earliest pts instead of overriding it with first offset
https://bugzilla.gnome.org/show_bug.cgi?id=755824
2015-10-02 16:00:08 +03:00
Matthew Waters
30194cc368 qt: add support for building on osx/ios
Including:
- Necessary configure checks
- Necessary compile time platform checks
- Necessary runtime qt iOS/OSX platform detection

https://bugzilla.gnome.org/show_bug.cgi?id=755100
2015-10-02 22:29:45 +10:00
John Slade
30fa95c6e2 rtmpsrc: Fix indentation with gst-indent
https://bugzilla.gnome.org/show_bug.cgi?id=755732
2015-10-02 15:06:02 +03:00
Matthew Waters
50b690cadb glcolorscale: use glbasefilter vfuncs
Uses less code \o/
Fixes legacy opengl rendering \o/
2015-10-01 23:20:19 +10:00
Philippe Normand
bf1246cb13 mssdemux: activate streams before configuring bitrate
Doing the contrary has no effect and the consequence is that playback
will start with the lowest bitrate even if we can already handle
higher bitrate.

https://bugzilla.gnome.org/show_bug.cgi?id=755108
2015-09-30 16:54:20 +01:00
Philippe Normand
ae7d938842 mssdemux: PlayReady WRM parsing support
If the manifest has a ProtectionHeader node then parse it and emit
protection events according to the specified protection SystemID.

https://bugzilla.gnome.org/show_bug.cgi?id=753613
2015-09-30 16:49:11 +01:00
Philippe Normand
5d4388bf9e mssdemux: always use timescale for gst timestamp calculation
Not doing this can lead the demuxer to attempt downloading fragments
for an invalid start time. The server would then send a HTTP
Precondition failed error, the demuxer would try some more times to
download the invalid fragment and eventually error out.

https://bugzilla.gnome.org/show_bug.cgi?id=754523
2015-09-30 10:04:37 +01:00
Matthew Waters
49e6516550 glupload: remove useless release_buffer
It's a leftover from when we weren't outputting GstBuffer's and
returning raw texture id's.
2015-09-30 13:36:09 +10:00
Matthew Waters
90b0383638 gtk: add some GL debug statements to show up in GL traces 2015-09-30 12:39:47 +10:00
Tim-Philipp Müller
cec0ef105f hls: m3u8playlist: more clean-ups
Remove unused functions; move GstM3U8 struct into .c file,
and indent the header so it's nice to read.
2015-09-30 00:43:26 +01:00
Tim-Philipp Müller
cae2fa0cef hls: m3u8playlist: fix silly queue iteration code 2015-09-30 00:43:26 +01:00
Tim-Philipp Müller
4a9a0da50f hls: m3u8playlist: more minor playlist_render() clean-ups
Move the TAG defines directly into the code, not sure what
their purposes is, these are printf format strings so having
them directly as literals in the code where they're used
makes the code easier to follow.
2015-09-30 00:43:26 +01:00
Tim-Philipp Müller
386f173eaf hls: m3u8playlist: move entry rendering into render_playlist()
Makes the code easier to follow and avoids unnecessary temporary
strings, since we can just append to the playlist GString directly.
2015-09-30 00:43:26 +01:00
Tim-Philipp Müller
54e1753da4 hls: m3u8playlist: simplify gst_m3u8_playlist_render()
Remove playlist_str GString variable from GstM3U8Playlist struct,
since it's only used temporarily in playlist_render(). Might just
as well keep it local then.
2015-09-30 00:43:26 +01:00
Tim-Philipp Müller
019cdea1bd hls: remove unused macro and direct gio usage 2015-09-30 00:43:26 +01:00
Luis de Bethencourt
28b2ac7e65 opencv: erode: remove non-ip transform func
Transform is set to be done in place in gstcvdilateerode.c, so the in-place
transform function is always used and the other is redundant. Removing it.

https://bugzilla.gnome.org/show_bug.cgi?id=753885
2015-09-29 20:41:52 +01:00
Luis de Bethencourt
97ee5abd49 opencv: dilate: remove non-ip transform func
Transform is set to be done in place in gstcvdilateerode.c, so the in-place
transform function is always used and the other is redundant. Removing it.

https://bugzilla.gnome.org/show_bug.cgi?id=753885
2015-09-29 20:38:14 +01:00
Luis de Bethencourt
45d9184c88 opencv: use gst_opencv_video_filter_set_in_place()
Using the gst_base_transform function directly won't work. Need to use
gst_opencv_video_filter_set_in_place().
2015-09-29 20:00:14 +01:00
Luis de Bethencourt
9bb76699e0 handdetect: check for haar cascade files path
When running GStreamer from uninstalled sources, the location of the haar
cascade files will be local. Check if running in uninstalled and set the
file paths accordingly.
2015-09-29 17:01:55 +01:00
Luis de Bethencourt
6bc00355b8 opencv: cvlaplace: add scale and shift properties
Add scale and shift properties so these can be used to tweak the values
used in cvConvertScale() instead of using only defaults.
2015-09-29 13:53:12 +01:00
Luis de Bethencourt
ff8f648f37 qtsink: explicitely fallthrough switch statement
In case ret is False, fallthrough to default case.

CID #1320705
2015-09-29 13:37:08 +01:00
Arnaud Vrac
5d0db38df3 assrender: fix leak of tag samples in the tag list
Move handling of a GstSample in a separate function, and unref the
sample after calling it. libass copies the font data so we don't need to
keep it around.

https://bugzilla.gnome.org/show_bug.cgi?id=755759
2015-09-29 09:38:05 +01:00
Arnaud Vrac
c6ce769a18 assrender: fix gap event leak and invalid return value
We don't want the gap event to be forwarded

https://bugzilla.gnome.org/show_bug.cgi?id=755759
2015-09-29 09:37:59 +01:00
Matthew Waters
da5c0bddb2 gtk: fix assertion when the element has no peer
When proxying keyboard/navigation/mouse events, only unref a successfully
retreived peer pad.

https://bugzilla.gnome.org/show_bug.cgi?id=755738
2015-09-29 00:27:30 +10:00
Matthew Waters
609977a56b gl: chain up to the parent class for GstElement::set_context
https://bugzilla.gnome.org/show_bug.cgi?id=705579
2015-09-28 22:24:04 +10:00
Luis de Bethencourt
86151cbf06 qml: remove overwritten value
Value in tex is overwritten before being used. Removing it.

CID 1320715

https://bugzilla.gnome.org/show_bug.cgi?id=754253
2015-09-28 18:17:22 +10:00
Matthew Waters
18d5ed0408 qt: add support for building/running on android
Including:
- Necessary configure checks
- Necessary compile time platform checks
- Necessary runtime qt android platform detection
- Escaping GLsync definition with Qt's GLES2 implementation

https://bugzilla.gnome.org/show_bug.cgi?id=754466
2015-09-28 16:47:00 +10:00
Matthew Waters
f12caa5c22 qt: don't use CPPFLAGS for tools that cannot use them
For example moc will bail out when given arguments it does not
know about.  The moc specific MOC_CPPFLAGS can still be used
to pass flags to moc.

https://bugzilla.gnome.org/show_bug.cgi?id=754466
2015-09-28 16:47:00 +10:00
Matthew Waters
fdf2a73ec0 qt: rename library to include gst prefix
libqtsink -> libgstqtsink

https://bugzilla.gnome.org/show_bug.cgi?id=754466
2015-09-28 16:47:00 +10:00
Matthew Waters
2195dad288 gl: sprinkle some debug markers to ease debugging 2015-09-28 16:47:00 +10:00
Jan Schmidt
0e18ae586b resindvd: Send gap updates to the segment stop during stills
Ignore the normal gap threshold for laggy streams and
immediately catch all streams up to the end of the segment
when processing gap updates for a segment during a
still frame sequence.

https://bugzilla.gnome.org/show_bug.cgi?id=755680
2015-09-27 13:08:27 +10:00
Jimmy Ohn
89a04915fe sfdec: Fix typo in goto variable name
https://bugzilla.gnome.org/show_bug.cgi?id=754057
2015-09-26 09:47:01 +01:00
Chris Bass
69f86e51b2 dashdemux: create src pads for subtitle streams.
Create src pads for Representations that contain timed-text subtitles,
both when the subtitles are encapsulated in ISO BMFF (i.e., the
Representation has mimeType "application/mp4") and when they are
unencapsulated (i.e., the Representation has mimeType
"application/ttml+xml").

https://bugzilla.gnome.org/show_bug.cgi?id=747774
2015-09-26 00:50:55 +02:00
Sebastian Dröge
93d85bd361 dashdemux: Implement lazy-loading of external periods
https://bugzilla.gnome.org/show_bug.cgi?id=752230
2015-09-25 23:52:28 +02:00
Sebastian Dröge
b70dab8f27 mpdparser: Load OnLoad external resources immediately instead of on demand
https://bugzilla.gnome.org/show_bug.cgi?id=752230
2015-09-25 23:52:28 +02:00
Sebastian Dröge
49931eda69 mpdparser: Add support for loading external SegmentLists
https://bugzilla.gnome.org/show_bug.cgi?id=752230
2015-09-25 23:52:28 +02:00
Sebastian Dröge
51e8624d56 mpdparser: Add support for loading external AdaptationSets
https://bugzilla.gnome.org/show_bug.cgi?id=752230
2015-09-25 23:52:28 +02:00
Sebastian Dröge
97f5b82bf6 mpdparser: Implement loading of external Period nodes
The same has to be done for AdaptationSet and SegmentList nodes still.

Also this does not correctly implement the semantics: by default Period (and
other nodes) should only be loaded when needed, not in the very beginning. We
need to implement lazy loading for them, which means adjusting
gst_mpd_client_setup_media_presentation().

https://bugzilla.gnome.org/show_bug.cgi?id=752230
2015-09-25 23:52:28 +02:00
Sebastian Dröge
572e54574b mpdparser: Store an URI downloader in the parser for downloading additional MPD resources if needed
https://bugzilla.gnome.org/show_bug.cgi?id=752230
2015-09-25 23:52:28 +02:00
Sebastian Dröge
07ee57228b mpdparser: Parse xlink attributes from Period, AdaptationSet and SegmentList
We still have to do something useful with them, like actually loading the
content behind the URL.

https://bugzilla.gnome.org/show_bug.cgi?id=752230
2015-09-25 23:52:28 +02:00
Sebastian Dröge
7c9525830e dashdemux: Properly handle relative and non-HTTP URIs for the headers/indices
gst_uri_join_strings() will return the second parameter if it is an absolute
URI. No need to do a (wrong) check if the URI is absolute or not beforehand.

https://bugzilla.gnome.org/show_bug.cgi?id=755134
2015-09-25 23:52:28 +02:00
Sebastian Dröge
6cafc64416 mpdparser: If no Initialization is present in the SegmentBase, assume it is before the indexRange
https://bugzilla.gnome.org/show_bug.cgi?id=755132
2015-09-25 23:52:28 +02:00
Sebastian Dröge
bcda593f12 gtk: Only run from the main thread in stop() if we created the window
We're not doing anything at all from the main thread in other cases.
2015-09-24 18:51:39 +02:00
Thibault Saunier
4807201b04 gtk: When setting format check if pending format changed
In case the format changed fast and the pending format is different
than the currently set but the currently set is equal to the pending
one we could end up having mismatch between the finally set format
and the data stream format.

https://bugzilla.gnome.org/show_bug.cgi?id=755542
2015-09-24 16:50:38 +02:00
Thibault Saunier
bdcb8208eb gtk: Do not forget to release OBJECT_LOCK on error path
https://bugzilla.gnome.org/show_bug.cgi?id=755542
2015-09-24 15:57:26 +02:00
Thibault Saunier
01057609f1 gtk: Factor out a function to run a function on main thread
https://bugzilla.gnome.org/show_bug.cgi?id=755251
2015-09-24 12:03:01 +02:00
Thibault Saunier
5ad5f5c369 gtk: Marshall state changes in the main thread
Gtk is not MT safe thus we need to make sure that everything is done
in the main thread when working with it.

https://bugzilla.gnome.org/show_bug.cgi?id=755251
2015-09-24 12:03:01 +02:00
Thibault Saunier
3417a15076 gtksink: Do not show window until we reach the PAUSED state
https://bugzilla.gnome.org/show_bug.cgi?id=755459
2015-09-23 12:08:18 +02:00
Sebastian Dröge
a25253130b mpdparser: Only check stream->segments for a repeated last segment if we have a static list of segments
Otherwise we'll crash, trying to derefence NULL. And if we have no static list
of segments, we can't have repeated segments anyway.

Regression introduced by cfe2871a5e

https://bugzilla.gnome.org/show_bug.cgi?id=755411
2015-09-22 15:03:13 +02:00
Arun Raghavan
6835c27e9f x265enc: Drop incorrect stream-format="avc" in template caps 2015-09-21 19:11:42 +05:30
Thibault Saunier
717f922701 gtksink: Do not re destroy the GtkWindow if destroyed by the user
Otherwise we will get an ASSERT.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=755249
2015-09-21 13:03:53 +02:00
Thibault Saunier
a2bdce8df3 gtkglsink: Hide and clean the GtkWindow we might create
When stopping the sink we should always hide the window.

https://bugzilla.gnome.org/show_bug.cgi?id=755249
2015-09-19 12:31:49 +02:00
Philippe Normand
261d8daca0 adaptivedemux: prefix the statistics message name macro
Keep old define around for now.

https://bugzilla.gnome.org/show_bug.cgi?id=754686
2015-09-17 17:39:27 +01:00
Jan Schmidt
587e7c4a23 Don't throw compiler warnings with G_DISABLE_ASSERT
Disable code that warns about unused variables when G_DISABLE_ASSERT
is defined, as it is in tarballs and pre-releases.
2015-09-18 00:29:51 +10:00
Matthew Waters
557ca6fda5 glimagesink: request a resize on caps/3d mode changes
Fixes incorrect aspect ratio on OSX when changing caps or the 3d
output mode.

https://bugzilla.gnome.org/show_bug.cgi?id=755111
2015-09-17 20:26:23 +10:00
Matthew Waters
d088a5294b gl/uploadelement: fail earlier if we could not upload the buffer 2015-09-17 20:21:43 +10:00
Vineeth T M
00438fdff0 gl: Fix GError leaks during failures
https://bugzilla.gnome.org/show_bug.cgi?id=755140
2015-09-17 11:52:55 +02:00
Vincent Penquerc'h
50400fa2a6 mpdparser: support for negative repeat count in segments
Implements negative repeat segment fields, defined in 5.3.9.6.1.
2015-09-16 09:44:20 +01:00
Vincent Penquerc'h
69bfa8222f mpdparser: properly read signed r values for S elements
The spec defines these as signed in 5.3.9.6.1.
Since we don't support this behavior, warn and default to 0
(non repeating), which is the spec's default when the value
is not present.

https://bugzilla.gnome.org/show_bug.cgi?id=752480
2015-09-16 09:44:19 +01:00
Vincent Penquerc'h
23ea8ccb43 mdpparser: catch failures to parse
https://bugzilla.gnome.org/show_bug.cgi?id=752480
2015-09-16 09:44:19 +01:00
Matthew Waters
7ae0dd2361 glimagesink: avoid updating the viewport in the draw loop
Fixes flashes/incorrect aspect ratio when resizing glimagesink on OSX.
2015-09-16 18:04:51 +10:00
Thiago Santos
7e834a5d85 opusdec: remove check for number of channels
opus decoder can convert from different number of channels, no
need to check, just let it negotiate and create a new decoder if
needed.

https://bugzilla.gnome.org/show_bug.cgi?id=755059
2015-09-15 16:00:43 -03:00
Thiago Santos
bd710e5e1b dashdemux: fix return when trying to advance in subfragmented stream
Even if it doesn't actually advance the subfragment in the default way
for streams that have subfragments, it can help the base class to return
EOS when there is no more fragments instead of signaling it that it should
continue downloading.

https://bugzilla.gnome.org/show_bug.cgi?id=755042
2015-09-15 12:46:31 -03:00
Thibault Saunier
b6ad1b0c22 pitch: Set seqnum on newly created segment event
https://bugzilla.gnome.org/show_bug.cgi?id=755012
2015-09-15 13:41:18 +02:00
Sebastian Dröge
c9f60db2d4 mpdparser: Don't consider period start times in periods with segment lists either
https://bugzilla.gnome.org/show_bug.cgi?id=754222
2015-09-14 19:53:18 +02:00
Sebastian Dröge
0d0455e346 dashdemux: Export the period start time to the base class
https://bugzilla.gnome.org/show_bug.cgi?id=754222
2015-09-14 19:53:03 +02:00
Sebastian Dröge
b5697b8ced Revert "dashdemux: Subtract the period start time from the presentation offset"
This reverts commit 626a8f0a74.

This allows us to get the plain presentation offset and the period start time
separately. We have to adjust the timestamp by the presentation offset, but
the period start time should only adjust the stream time and running time.

https://bugzilla.gnome.org/show_bug.cgi?id=752409
2015-09-14 19:53:03 +02:00
Sebastian Dröge
bb05bbafd5 Revert "dashdemux: Include the period start in the fragment timestamps in all cases"
This reverts commit e671ad25a9.

The timestamps should restart at 0 again for each period, but we have to
adjust the segment to map those timestamps to the actual stream time and
running time of that period.

Otherwise we would have timestamps that conflict with the ones from the tfdt
inside the MP4 container, which are restarting at 0 for each period.

https://bugzilla.gnome.org/show_bug.cgi?id=752409
2015-09-14 19:53:03 +02:00
Sebastian Dröge
cfe2871a5e mpdparser: Consider the repeat count when checking if a segment is the last one
Otherwise we play only the first repetition of the last segment and then EOS.

https://bugzilla.gnome.org/show_bug.cgi?id=752480
2015-09-14 19:49:14 +02:00
Thiago Santos
cc599bb5b5 dashdemux: also check for subfragments on has_next_fragment
In dash isombff profile the fragment is split into subframents where
bitrate switching is possible. Also take that into consideration
when checking if a stream has next fragments.
2015-09-14 13:56:10 -03:00
Miguel París Díaz
25f0787c1c opusenc: improve deprecated properties docs
https://bugzilla.gnome.org/show_bug.cgi?id=754819
2015-09-11 23:33:19 +02:00
Miguel París Díaz
f000cd4963 opusenc: do not throw g_warning when getting deprecated properties
https://bugzilla.gnome.org/show_bug.cgi?id=754819
2015-09-11 23:33:19 +02:00
Matthew Waters
38d360675c gtk, qt: more specifically define the compile time requirements
Otherwise we could include headers/configurations that will
never been installed.

https://bugzilla.gnome.org/show_bug.cgi?id=754732
2015-09-10 13:11:06 +10:00
Matthew Waters
bca1fd1040 qt: use our function table instead of directly calling gl functions
Otherwise when building with --as-needed we would need to link to
a GL or GLES library.

https://bugzilla.gnome.org/show_bug.cgi?id=754732
2015-09-10 00:33:40 +10:00
Vincent Penquerc'h
6d1eda9391 mpdparser: fix period start time scaling
This GstStreamPeriod start value is expressed in nanoseconds,
and the glib time addition function expects microseconds.
There seems to have been a confusion with GstPeriodNode's start
field, which is expressed in milliseconds.

Additionally, add a warning if the timestamp modification did
not succeed, and NULL was returned.
2015-09-07 12:52:03 +01:00
Jan Schmidt
779ad060a4 faac: Add bitrate info to the tags output.
Makes it possible for muxers to know the target bitrate as soon
as encoding starts, which flvmux now uses.
2015-09-05 23:42:50 +10:00
Thibault Saunier
de29038d1e gtk: Do not consider GtkEvents as handled
Applications might still want to use them
after the sink transformed them into
GstNavigation events
2015-09-04 16:25:44 +02:00
Nirbheek Chauhan
77f68f6e10 qmlsink: Ensure that at least one windowing system is available
Otherwise, we'll just crash at runtime because the gl context is NULL

https://bugzilla.gnome.org/show_bug.cgi?id=754108
2015-08-31 23:16:07 +01:00
Tim-Philipp Müller
1cb3e8c591 gtk, qt, gl: fix typo in debug and error messages 2015-08-31 18:06:31 +01:00
Tim-Philipp Müller
536e3742aa Fix file permissions of some files 2015-08-28 19:55:59 +01:00
Vanessa Chipirrás Navalón
1e14ceedb3 edgedetect: Rename gstedgedetect.c to gstedgedetect.cpp for consistency.
Change the file extension to cpp and add it into Makefile for consistency
with other elements of opencv.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-08-28 14:23:02 +01:00
Vanessa Chipirrás Navalón
d53f37cfe3 edgedetect: remove unused and useless functions.
The cvSmooth cvNot functions and do not have the correct input parameters.
Furthermore, cvSmooth function is not necessary for edge detection,
because the Canny function makes the step of smoothing the image.
And cvNot function is useless because there aren't changes if this
function is eliminated.

https://bugzilla.gnome.org/show_bug.cgi?id=754148
2015-08-28 14:20:11 +01:00
Luis de Bethencourt
a77d61edc5 textoverlay: remove unused variable
Memory is reserved for this variable but never used. Removing it.
2015-08-28 12:26:45 +01:00
Vanessa Chipirrás Navalón
ad0d035150 faceblur: remove unused variable.
Memory is reserved for this variable and then released without making any
use of it.

https://bugzilla.gnome.org/show_bug.cgi?id=753994
2015-08-28 12:26:45 +01:00
Vanessa Chipirrás Navalón
02d8a4f4e8 faceblur: need to migrate to C++.
The cascade classifier changes its structure on new version of OpenCV 2.4.11.
It is need to migrate to C++ to utilize the new load method of OpenCV which
allows to load the old and new classifiers.

https://bugzilla.gnome.org/show_bug.cgi?id=753994
2015-08-28 12:26:45 +01:00
Vanessa Chipirrás Navalón
acdcfedde2 faceblur: Check CvHaarClassifierCascade is release before being modified.
For PROP_PROFILE case that exist inside gst_face_blur_set_property
function loads the new XML file in the CvHaarClassifierCascade property
without first checking that it is released because maybe there is an XML
file previously loaded.

https://bugzilla.gnome.org/show_bug.cgi?id=753994
2015-08-28 12:26:45 +01:00
Vanessa Chipirrás Navalón
bbd16144ca faceblur: Code refactoring of gst_face_blur_load_profile.
Changes inside the gst_face_blur_load_profile function, the number of
input parameters and in lines where it is used due to it cannot be used
generically.

https://bugzilla.gnome.org/show_bug.cgi?id=753994
2015-08-28 12:26:45 +01:00
Vanessa Chipirrás Navalón
6193f52f2d faceblur: Change gstfaceblur to C++.
Change the gstfaceblur.c file to cpp and add it into Makefile.
It is necessary to migrate the faceblur plugin to C++,
in order to load new and old classifiers, to make faceblur work
with newer versions of Opencv.

https://bugzilla.gnome.org/show_bug.cgi?id=753994
2015-08-28 12:26:45 +01:00
Tim-Philipp Müller
ef7f5fc4c7 dashdemux: don't meddle with the class struct from an instance
Fix some very dubious code. The class methods should always
be set, and the instance-specific check should then be done
inside the method. For data_received that's there already, for
finish_fragment we need to add it.

https://bugzilla.gnome.org/show_bug.cgi?id=753937
2015-08-27 00:35:02 +01:00
Athanasios Oikonomou
22456ce032 hlsdemux: select correct position for live streams that don't remove fragments
Some live streams (eg youtube) don't remove fragments in order to allow
seeking back in time (live + vod).

When gst_m3u8_client_has_next_fragment is called, we are getting wrong fragment
because current_file points in first file of the fragments list resulting in
watching the stream from the beginning again.

This patch sets current_file to nth fragment for live streams, then on
gst_m3u8_client_has_next_fragment will keep up with the live stream.

https://bugzilla.gnome.org/show_bug.cgi?id=753344
2015-08-26 12:11:57 +03:00
Nicolas Dufresne
ae6f4a261b glupload: Use base class metadata copy function
This allow properly copying selected meta, like the composition
overlay. Note that output buffer need to be readable, but GlUpload
keeps a ref. For now, simply drop GlUpload ref after perform,
leaving that ref has no purpose. The method shall be removed
in the future.

https://bugzilla.gnome.org/show_bug.cgi?id=754047
2015-08-25 13:20:52 -04:00
Nicolas Dufresne
b06fc679ba glcolorconvert: Use base transform metadata copy
Use base class default method instead of only copying flags and
timestamp. This way, selected meta's like compostion overlay will
be passed downstream as expected.

https://bugzilla.gnome.org/show_bug.cgi?id=754047
2015-08-25 13:20:52 -04:00
Nicolas Dufresne
88d7b22d40 glimagesink: update display size before sending event
This is minor issue, as the reconfigure event is asynchronous.
Basically, update width/height before sending the event.
2015-08-22 22:15:36 -07:00
Nicolas Dufresne
206638c439 gl: Let base transform relay the meta api for us
During allocation query, when this element is not passthrough, it must
relay the overlay compostion meta and it's parameters. Fortunatly, base
transform can do this for us.

https://bugzilla.gnome.org/show_bug.cgi?id=753850
2015-08-22 22:15:36 -07:00
Luis de Bethencourt
4a9703b434 dtsdec: remove unused value
length is set to a different value before being read. Remove initial value.
Silences compiler warning.
2015-08-21 11:11:45 +01:00
Vanessa Chipirrás Navalón
aa58ff3e46 facedetect: remove unnecessary variable.
Memory is reserved for this variable and then released without making any
use of it.

https://bugzilla.gnome.org/show_bug.cgi?id=748377
2015-08-21 09:28:15 +01:00
hoonhee.lee
cdd484800a caopengllayersink: Don't chain up to parent's query handling twice for DRAIN query
https://bugzilla.gnome.org/show_bug.cgi?id=753913
2015-08-21 11:10:42 +03:00
Sebastian Dröge
551e7b97f3 dashdemux: Handle encoding specified in the <xml> element when dumping nodes
Previous patch did not handle the case where an encoding (e.g. UTF-8) is
specified in the <xml ?> element. Added an extra test for with and without
encoding.

https://bugzilla.gnome.org/show_bug.cgi?id=753813
2015-08-19 21:33:47 +03:00
Arnaud Vrac
6a884bf08d assrender: check video frame mapping succeeded before blending
If the mapping fails just skip overlay rendering and push the video
frame downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=753822
2015-08-19 16:54:41 +03:00
Alex Ashley
2ebebdbfbb dashdemux: replace xmlNodeDump with xmlNodeDumpOutput
When running on an STB, the function
gst_mpdparser_get_xml_node_as_string causes a segmentation fault. This
code works correctly on a Linux desktop.

Looking at the libxml documentation, the xmlNodeDump is deprecated.
Replacing the use of xmlNodeDump with xmlNodeDumpOutput fixes the
segfault on the STB and removes the use of the deprecated function.
2015-08-19 16:30:58 +03:00
Arnaud Vrac
a4cb032355 hlsdemux: abort playlist update when cancelled
Otherwise the download thread will get stuck, since the downloader is
disabled.
2015-08-19 16:22:44 +03:00
Sebastian Dröge
ea27fe3032 gtk/gl: Use our GL function table instead of directly calling GL functions
Otherwise we would have to link the plugin to the GL libraries directly.
2015-08-19 13:55:00 +03:00
Vanessa Chipirrás Navalón
7dd86c26b2 handdetect: remove unnecessary variable.
Memory is reserved for this variable and then released without making any
use of it.

https://bugzilla.gnome.org/show_bug.cgi?id=752528
2015-08-18 13:52:10 +01:00
Vanessa Chipirrás Navalón
fc03a17430 handdetect: check CvHaarClassifierCascade is release before being modified.
Make sure a previous cascade, if it exists, is released before loading a
new XML file onto it.

https://bugzilla.gnome.org/show_bug.cgi?id=752528
2015-08-18 13:32:54 +01:00
Vanessa Chipirrás Navalón
00a55d1a69 handdetect: code refactoring of gst_handdetect_load_profile.
Change gst_handdetect_load_profile() so it can be used generically.

https://bugzilla.gnome.org/show_bug.cgi?id=752528
2015-08-18 12:24:21 +01:00
Sebastian Dröge
a452ce4099 daalaenc: Fix build
And also only generate the supported caps once, not on every CAPS/ACCEPT_CAPS
query. It's not that cheap.
2015-08-18 11:54:33 +03:00
Thiago Santos
9e99102b48 x265enc: add accept-caps handling
Ovewrite default handling to avoid doing a caps query. Check
the received caps against the possible formats supported by
the x265 library.
2015-08-17 14:39:44 -03:00
Thiago Santos
f2aabb9f89 daalaenc: add accept-caps handling
Ovewrite default handling to avoid doing a caps query. Check
the received caps against the possible formats supported by
the daala library.
2015-08-17 14:39:44 -03:00
Thiago Santos
a6dc5e19a2 videoencoders: use template subset check for accept-caps
It is faster than doing a query that propagates downstream and
should be enough

Elements: openjpegenc, schroenc, webpenc, pnmenc
2015-08-17 14:39:44 -03:00
Luis de Bethencourt
07ee52db5d opencv: support alternative path convention
Some distributions store OpenCV files in /usr/share/opencv and some others
(and default when building from source) install them in
/usr/share/OpenCV. Support both to find cascade files.

https://bugzilla.gnome.org/show_bug.cgi?id=753651
2015-08-17 18:05:50 +01:00
Rico Tzschichholz
dce7ffb04e dashdemux: link against gio for g_resolver and g_inet_address_from_string
Add missing gio-2.0 CFLAGS/LIBS to fix linker failure
2015-08-17 14:15:39 +01:00
Thiago Santos
6517282af7 audioencoders: use template subset check for accept-caps
It is faster than doing a query that propagates downstream and
should be enough

Elements: faac, gsmenc, opusenc, sbcenc, voamrwbenc, adpcmenc, sirenenc
2015-08-17 10:07:54 -03:00
Thiago Santos
6135ebebee voaacenc: Remove custom getcaps and just use the template
We know from the beginning the caps that are acceptable, no need
for custom getcaps or manually generating caps.
2015-08-17 10:07:54 -03:00
Thiago Santos
00b3832b54 voaacenc: add version to gst-launch string on documentation
gst-launch will call the 0.10 version, we want 1.0
2015-08-17 10:07:54 -03:00
Thiago Santos
ba4e6ee1be faac: make template pad caps more accurate and remove custom getcaps
Allows reusing baseclass caps query handling and simplifying negotiation
code.
2015-08-17 10:07:54 -03:00
Tim-Philipp Müller
f3b18a29bf mpg123: still reset pending audio info on hard flush
Follow-up to previous commit.

https://bugzilla.gnome.org/show_bug.cgi?id=752431
2015-08-17 11:50:28 +01:00
Jason Litzinger
8e488e5e49 mpg123: fix handling of sample rate change during playback
If the sample rate of the media changes, the resulting flush will
clear the has_next_audioinfo flag, and the caps won't be sent
downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=752431
2015-08-17 11:33:57 +01:00
Thiago Santos
ae5befef5f dashdemux: fix off by one seeking issue
When seeking to the last second of a mpd it would reject the seek
because the comparison was < instead of <=

This fails the important use case of seeking to the end of a file
to play it back in reverse from the end
2015-08-16 08:49:35 -03:00
Sebastian Dröge
31d381d5f8 mpdparser: Free UTCTiming struct if there are no values associated with it
CID 1316479
2015-08-16 12:52:51 +02:00
Thiago Santos
56b822f9f6 audiodecoders: use default pad accept-caps handling
Avoids useless check of downstream caps when handling an
accept-caps query

Elements: dtsdec, faad, gsmdec, mpg123audiodec, opusdec,
          sbcdec, adpcmdec, sirendec
2015-08-15 13:51:16 -03:00
Thiago Santos
a5ed877783 videodecoders: use default pad accept-caps handling
Avoids useless check of downstream caps when handling an
accept-caps query

Elements: daaladec, libde265dec, openjpegdec, rsvgdec, schrodec,
          webpdec, pnmdec, vmncdec, openexrdec
2015-08-15 13:51:16 -03:00
Nicolas Dufresne
f935b2c547 glsink: Enable sync meta on pools we offer
As the upload is asynchronous, we need to enable the sync meta to
gain correct rendering. The buffer pool receiver don't know about
that.
2015-08-15 15:55:08 +02:00
Nicolas Dufresne
74486ab7e1 gtkglsink: Add overlay composition support
Rendering composition overlay in GL with additional high resolution
overlay being added.
2015-08-15 15:55:08 +02:00
Nicolas Dufresne
0b271a863e gtkglsink: Fix unsafe handling of buffer life time
We need to keep the active buffer (the one we have retreive a
texture id from) otherwise it's racy and upstream may upload
new content before we have rendered or during later redisplay.
2015-08-15 15:55:08 +02:00
Nicolas Dufresne
e4cc364a14 gtkglsink: Remove reset path
The reset path is bogus and there is no reason to get rid of these
things during resize.
2015-08-15 15:55:08 +02:00
Nicolas Dufresne
ea484fb968 glimagesink: Move overlay rendering after video rendering
This is mostly cosmetic, but heoretically it reduces the amount of
required object in the context at one point. It also avoids potential
conflicts.
2015-08-15 15:55:08 +02:00
Vanessa Chipirrás Navalón
7a2f5d6b03 facedetect: Refactor the code
Some lines of code are repeated several times, therefore
this lines are simplified with a inline function, that this is
proper style of C++.
2015-08-14 18:28:43 +01:00
Alex Ashley
93edd99bf7 dashdemux: add support for HTTP HEAD method of time sync
The urn:mpeg:dash:utc:http-head:2014 method of time synchronisation
uses an HTTP HEAD request to a specified URL and then parses the
Date: HTTP response header.

This commit adds support to dashdemux for this method of time
synchronisation by making a HEAD request and then parsing the Date:
response.

This commit adds support to gstfragment to return the HTTP headers
and to uridownloader to support HEAD requests. To avoid creating a
new API, the RANGE get function is re-used (abused?) with start=-1
and end=-1 to indicate a HEAD request.

https://bugzilla.gnome.org/show_bug.cgi?id=752413
2015-08-14 06:47:21 -03:00
Alex Ashley
1640ee2b33 dashdemux: post-review fixup of UTCTiming element
This commit addresses the following items from the code review:
    use a portable way to define NTP_TO_UNIX_EPOCH,
    fix memory leak on error, and
    add documentation to UTCTiming parse functions

Using LL is not portable, so the G_GUINT64_CONSTANT needs to be instead.

If an error occurs during DNS resolution, the GError was not being
released, causing a memory leak.

https://bugzilla.gnome.org/show_bug.cgi?id=752413
2015-08-14 06:47:20 -03:00
Alex Ashley
95c705ae8f dashdemux: add support for UTCTiming elements for clock drift compensation
Unless the DASH client can compensate for the difference between its
clock and the clock used by the server, the client might request
fragments that either not yet on the server or fragments that have
already been expired from the server. This is an issue because these
requests can propagate all the way back to the origin

ISO/IEC 23009-1:2014/Amd 1 [PDAM1] defines a new UTCTiming element to allow
a DASH client to track the clock used by the server generating the
DASH stream. Multiple UTCTiming elements might be present, to indicate
support for multiple methods of UTC time gathering. Each element can
contain a white space separated list of URLs that can be contacted
to discover the UTC time from the server's perspective.

This commit provides parsing of UTCTiming elements, unit tests of this
parsing and a function to poll a time server. This function
supports the following methods:
    urn:mpeg:dash:utc:ntp:2014
    urn:mpeg:dash:utc:http-xsdate:2014
    urn:mpeg:dash:utc:http-iso:2014
    urn:mpeg:dash:utc:http-ntp:2014

The manifest update task is used to poll the clock time server,
to save having to create a new thread.

When choosing the starting fragment number and when waiting for a
fragment to become available, the difference between the server's idea
of UTC and the client's idea of UTC is taken into account. For example,
if the server's time is behind the client's idea of UTC, we wait for
longer before requesting a fragment

[PDAM1]: http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=66068

dashdemux: support NTP time servers in UTCTiming elements

Use the gst_ntp_clock to support the use of an NTP server.

https://bugzilla.gnome.org/show_bug.cgi?id=752413
2015-08-14 06:47:20 -03:00
Sebastian Dröge
88f85f6595 Revert "srtpdec: Add support for buffer list"
This reverts commit ff11a1a8a0.

It can't be assumed that all buffers in a buffer list have the same SSRC or
are RTP or RTCP only. It has to be checked for every single buffer, and one
basically has to do the processing that is done by the default chain_list
implementation.
2015-08-13 12:40:14 +02:00
Matthew Waters
b38f107bd3 glimagesink: take into account non 1/1 par for navigation
The current code was ignoring the par/dar aspect when transforming
from window coordinates to stream coordinates resulting in incorrect
coordinates being sent upstream in the navigation events.
2015-08-12 00:25:35 +02:00
Matthew Waters
c867c8505b gtk: fix motion event name
s/motion/mouse/

Fixes hover interaction with DVD menus
2015-08-12 00:25:35 +02:00
Matthew Waters
7d96729feb gtk: correct navigation events for window scaling
i.e. take into account the possiblity of scaling in the sink
or through GDK_SCALE.

Fixes DVD Menus with a scaled gtkwidget
2015-08-12 00:25:35 +02:00
Matthew Waters
988643eb43 gtk: implement GstNavigation interface
Now we can push key/mouse input into the pipeline for DVD use cases.
2015-08-11 13:38:03 +02:00
Sebastian Dröge
711589ebde opus: Copy metadata in the (de)payloader, but only the relevant ones
The payloader didn't copy anything so far, the depayloader copied every
possible meta. Let's make it consistent and just copy all metas without tags or
with only the audio tag.

https://bugzilla.gnome.org/show_bug.cgi?id=751774
2015-08-11 12:46:06 +02:00
Vanessa Chipi
32942c99d8 facedetect: wrong form to write the delete operator
The delete operator is written this way: delete (cascade). This way is
misspelled, it is an operator, not a function. Delete the parentheses.
2015-08-11 11:26:17 +01:00
vanechipi
28f9ff1312 facedetect: simplify repeated code.
Store the value of r.height / 2 instead of repeating the operation line
three times.
2015-08-11 11:18:50 +01:00
vanechipi
73bc2cf7b0 facedetect: Redundancy exists in code.
Checking the vector is not empty and checking the vector size is greater
than zero are the same thing, this is a redundancy in the code. Only
checking the vector is not empty is sufficient, therefore removing the
other check.
2015-08-11 11:13:23 +01:00
Matthew Waters
b7777b9181 gl: use gles2 shaders everywhere
This effectively limits a glfilter subclass to be > GL(ES) 2.0.
rather than a possible GL 1.4.
2015-08-10 16:38:32 +02:00
Lubosz Sarnecki
80d77aa0a5 gltransformation: implement pivot point for rotation and scale
https://bugzilla.gnome.org/show_bug.cgi?id=744763

Add a pivot vector for setting the origin of rotations and scales.

With the pivot point the rotation and scale operations can have
different origins. This adds the ability to rotate around different points.
Currently the default (0, 0) pivot point is possible,
a rotation around the center, and zooming into and out of the center.

With an pivot point this is optional.
I defined the following image coordinates for the pivot point:

	 (-1,1) ------------------------- (1,1)
		|			|
		|			|
		|			|
		|	  (0,0)		|
		|			|
		|			|
		|			|
	(-1,-1) ------------------------- (1,-1)

Example:

	Rotate the video at the bottom left corner

	gst-launch-1.0 videotestsrc \
			! gltransformation \
		 		scale-x=0.5 \
				scale-y=0.5 \
				rotation-z=25.0 \
				pivot-x=-1.0 \
				pivot-y=-1.0 \
			! glimagesink

The pivot-z option defines the pivot point in 3D space.
This only affects rotation, since we have no Z data to scale.
With this option a video can be rotated around a point in 3D space.

Example:

	Rotate around point behind the video:

    	gst-launch-1.0 videotestsrc \
			! gltransformation \
				rotation-x=10.0 \
				pivot-z=-4.0 \
			! glimagesink
2015-08-08 16:32:53 -04:00
Matthew Waters
6b8cf8419d qml: implement the required multiple GL context synchonisation
From GStreamer's GL context into the QML context
2015-08-08 17:30:42 +02:00
Luis de Bethencourt
3a765e0805 facedetect: fix profile loading check
Since the profile gchar depends on DEFAULT_FACE_PROFILE, it should never be
NULL. Furthermore CascadeClassifier accepts any input, even
an empty one, but if the profile fails to load it returns an empty cascade.
Check for this instead, and inform the user if there was an Error.
2015-08-07 15:51:40 +01:00
Thiago Santos
bc33d22635 hlsdemux: don't warn about duration if it is not known
And also print the values in case of warning
2015-08-07 11:24:52 -03:00
Luis de Bethencourt
316657a2f8 configure: update OpenCV requirements to 2.3.0
With facedetect ported to C++ the minimum version of OpenCV
supported is 2.3.0

https://bugzilla.gnome.org/show_bug.cgi?id=748377
2015-08-07 13:14:11 +01:00
Florin Apostol
93c10d3f0e dashdemux: Fix leak in gst_dash_demux_stream_update_fragment_info()
The gst_dash_demux_stream_update_fragment_info function could call
gst_dash_demux_stream_update_headers_info function twice. The
gst_dash_demux_stream_update_headers_info function will set header_uri and
index_uri to some newly allocated strings. The values set by the first call of
gst_dash_demux_stream_update_headers_info will leak when the function is
called for a second time.

The solution is to call gst_adaptive_demux_stream_fragment_clear before the
second call of gst_dash_demux_stream_update_headers_info

https://bugzilla.gnome.org/show_bug.cgi?id=753188
2015-08-06 01:24:28 +03:00
Luis de Bethencourt
0113029fb9 opencv: facedetect: free IplImage with cvReleaseImage
Using delete() with IplImage will fail to free some of the structure's
contents. cvReleaseImage() is the proper way of freeing the memory.
2015-08-05 11:56:37 +01:00
Luis de Bethencourt
cc8af753b9 opencv: facedetect: check pointer before using it
Check if profile is NULL before dereferencing it with new. Also, new will
never return NULL; if allocation fails, a std::bad_alloc exception will be
thrown instead. Remove check for a NULL return.

CID #1315258
2015-08-05 11:39:03 +01:00
Luis de Bethencourt
ca52600ccb x265enc: remove dead code
level_ok is only used in a check that will never be true, removing it.

CID #1315255
2015-08-05 11:14:51 +01:00
Luis de Bethencourt
54b317ef78 x265enc: fix memory leak
Free vps_nal before returning.

CID #1315257
2015-08-05 11:11:14 +01:00
Carlos Garnacho
3129396643 rsvg: Don't leak a GstVideoCodecState
There's already the output_state variable with it, no need to
call gst_video_decoder_get_output_state() and get a new ref.

https://bugzilla.gnome.org/show_bug.cgi?id=753262
2015-08-04 19:14:43 -04:00
Tim-Philipp Müller
0e70f8c94f opencv: facedetect: fix crashes in finalize
Fixes gst-inspect-1.0 -a crashing.
2015-08-04 14:30:17 +01:00
Jan Schmidt
bd30d516a8 opencv: Fix 32-bit build / format strings.
Use G_GSIZE_FORMAT for format strings where relevant
2015-08-04 00:20:27 +10:00
Matthew Waters
374cd2a570 glvideomixer: swap control binding proxy
The ref_object and object parameters were the wrong way around.

For the typical use case where an application is setting a
GstControlBinding on the returned ghost pad:
1. our control binding would be removed when the new one was set
2. sync_values calls were not being forwarded from the internal
   pad to the ghost pad.

If an application attempts to perform other control binding
operations (get_* family of functions) on the internal pad, they
will also be forwarded to the ghost pad where a possible
GstControlBinding will provide the necessary values.
2015-08-03 20:08:52 +10:00
Thiago Santos
620af5b04b dash: mpdparser: plug leak in segmenttemplate parsing
Only copy the values from the parent if the current node doesn't
have that value, they were being copied from the parent and
then overwriten by the child node, leaking the parent's copy
2015-08-01 16:11:07 -03:00
Thiago Santos
2df67f9da0 templatematch: revert rename of property
The property doesn't need to have its name changed because of C++,
just the instance variables.
2015-08-01 11:52:12 -03:00
Luis de Bethencourt
2111f50a6f templatematch: rename conflicting variable
With the switch of gstopencv.c to C++, all OpenCV elements are built with
g++. The template variable clashes with C++'s feature of the same name.
Rename template to templ to avoid any clash.
2015-07-31 16:49:35 +01:00
Vanessa Chipirrás
78d0c5f01e facedetect: need to migrate to C++
The cascade classifier changes its structure on new version of OpenCV.
The need to migrate to C++ to utilize the new load method of OpenCV which
allows to load the new classifiers.

https://bugzilla.gnome.org/show_bug.cgi?id=748377
2015-07-31 16:49:17 +01:00
Vineeth TM
9115a750f7 dtsdec: fix taglist leak
taglist merge doesnt take ownership. So should free the tags after use

https://bugzilla.gnome.org/show_bug.cgi?id=753086
2015-07-31 10:00:13 +01:00
Luis de Bethencourt
22baf364fe gstglfilterbin: remove unused variable
res is set multiple times but never used or returned. Removing it.
2015-07-30 11:12:26 +01:00
Luis de Bethencourt
82a2b43bdd glstereomix: remove redundant initialization
v is initialized in the for loop init, no need to do it twice. Removing
first initialization.
2015-07-29 17:49:01 +01:00
Florin Apostol
a7751aa967 dashdemux: gst_mpdparser_get_xml_prop_duration sets default value in case of parsing errors
The gst_mpdparser_get_xml_prop_duration function will set the
property_value to the default_value in case the parsing fails.

https://bugzilla.gnome.org/show_bug.cgi?id=752426
2015-07-27 12:37:09 -03:00
Nirbheek Chauhan
4be7e0377b opuscommon: Use GString instead of snprintf for concating
Safer, easier to understand, and more portable. Also, skip
all this if the log level is too low.
2015-07-27 15:24:19 +01:00
Florin Apostol
90b7c137b6 dahdemux: avoid overflows in computation of segment start time and duration
Used gst_util_uint64_scale to avoid overflows when segment start time
or duration is computed.

https://bugzilla.gnome.org/show_bug.cgi?id=752620
2015-07-24 10:09:19 -03:00
Thiago Santos
2ed8a819f6 hlsdemux: demote error to warning
It is not fatal and can be quite normal when the network is
too slow
2015-07-24 10:09:19 -03:00
Miguel París Díaz
7db723831d srtpenc: do not check input buffers
With this we avoid an unnecessary and considerable overhead.

https://bugzilla.gnome.org/show_bug.cgi?id=752774
2015-07-24 09:28:01 +01:00
Julien Isorce
fb6457e90a caopengllayersink: remove unused label context_creation_error
Build error introduced by commit
5457e55f25

https://bugzilla.gnome.org/show_bug.cgi?id=750310
2015-07-24 00:02:32 +01:00
Tim-Philipp Müller
2992ff98e5 glimagesink: fix allocation meta structure leak
gst_query_add_allocation_meta() does not take ownership
of the structure, for some reason.

CID 1312135
2015-07-23 11:23:41 +01:00
Olivier Crête
6edf8dbaa6 glvideomixer: Add GstControlBinding proxy
This is used to proxy GstControlBinding to the pad on the
parent object. This avoid having to sync the values in the proxy pad,
this is too early if you have a queue between the pad and the actual
aggregation operation.

https://bugzilla.gnome.org/show_bug.cgi?id=734060
2015-07-22 20:59:50 -04:00
Nicolas Dufresne
4f4aedecf3 glupload: Forward composition meta even without params
When the sink does not know the window size (e.g not created yet)
it will not add any param to the the composition meta. This is no
reason not to forward this meta API. Fixes issue where it could not
attach until we resize the window.

https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-22 17:00:25 -04:00
Nicolas Dufresne
17788157a1 composition-overlay: Positions are relative to texture
The coordinate are relative to the texture dimension and not
the window dimension now. There is no need to pass the window
dimension or to update the overlay if the dimension changes.

https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-22 13:17:18 -04:00
Lubosz Sarnecki
b155f5d73e gloverlaycompositor: Create own shader object
Make gloverlaycompositor independent of the shader used in the sink.

https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-22 13:16:39 -04:00
Nicolas Dufresne
e8c31619c4 glimagesink: Properly handle compsositor life time
Should be created in READY_TO_PAUSED, not PAUSED_TO_PLAYING.
Should be cleared in PAUSED_TO_READY.

https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-22 13:07:58 -04:00
Edward Hervey
3b751bf775 qt: Don't dist files that might not exist
We only require moc building at build time.
2015-07-22 15:14:28 +02:00
Edward Hervey
5f8633b6f3 qt: Tidy up makefile a bit more
Separate generated files, from disted files
2015-07-22 08:06:19 +02:00
Julien Isorce
6125ea7e97 gstglwidget: use gst_gl_display_create_context
Also handle the failure case.

https://bugzilla.gnome.org/show_bug.cgi?id=750310
2015-07-21 15:06:34 +01:00
Julien Isorce
5457e55f25 caopengllayersink: use gst_gl_display_create_context
https://bugzilla.gnome.org/show_bug.cgi?id=750310
2015-07-21 14:55:35 +01:00
Julien Isorce
6fc5b18138 glstereosplit: use gst_gl_display_create_context
Also unlock the lock on error.

https://bugzilla.gnome.org/show_bug.cgi?id=750310
2015-07-21 14:55:11 +01:00
Julien Isorce
57f389d9ce gl: use gst_gl_display_create_context in more elements.
glbasefilter, glbasemixer and gltestsrc.

https://bugzilla.gnome.org/show_bug.cgi?id=750310
2015-07-21 11:37:21 +01:00
Lubosz Sarnecki
2b7542400c glimagesink: Send reconfigure event when window size changes
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-20 14:41:12 -04:00
Lubosz Sarnecki
2fb862b34f glimagesinkbin: Add allocation query for GstVideoOverlayComposition
Adds an GST_VIDEO_OVERLAY_COMPOSITION_META_API_TYPE query to glupload
and glimagesink.  Detects the query from the downstream elements, so
it is executed only when downstream supports the overlay API.

This makes pipelines with textoverlay ! glupload ! gldownload ! xvimagesink possible.
Uses allocation meta struct for passing the window size upstream.

https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-20 14:41:12 -04:00
Lubosz Sarnecki
a7d1b7fcad glimagesinkbin: Add GstVideoOverlayCompositionMeta caps features
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-20 14:41:12 -04:00
Lubosz Sarnecki
778ad10518 glimagesink: Upload and draw overlays with GstGLOverlayCompositor
Receives the GstOverlayComposition buffer in the glimagesink and draws them.

https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-20 14:41:11 -04:00
Carlos Rafael Giani
a595874aac opusdec: Fix PLC frame size calculations
Previously, PLC frames always had a length of 120ms, which caused audio
quality degradation and synchronization errors. Fix this by calculating an
appropriate length for the PLC frame.

The length must be a multiple of 2.5ms. Calculate a multiple of 2.5ms that
is nearest to the current PLC length. Any leftover PLC length that didn't
make it into this frame is accumulated for the next PLC frame.

https://bugzilla.gnome.org/show_bug.cgi?id=725167
2015-07-20 13:25:43 -04:00
Alex Ashley
71a1e3669a dashdemux: add support for generating Protection events from ContentProtection elements
If a ContentProtection element is present in an AdaptationSet element,
send Protection events on the source pad, so that qtdemux can use this
information to correctly generate its source caps for DASH CENC
encrypted streams.

This allows qtdemux to support CENC encrypted DASH streams where the
content protection specific information is carried in the MPD file
rather than in pssh boxes in the initialisation segments.

This commit adds a new function to the adaptivedemux base class to allow
a GstEvent to be queued for a stream. The queue of events are sent the
next time a buffer is pushed for that stream.

https://bugzilla.gnome.org/show_bug.cgi?id=705991
2015-07-20 16:04:22 +01:00
Tim-Philipp Müller
f8b7c38bed voaacenc: fix output caps for stream-format=ADTS
Should have framed=true in caps. Fixes voaacenc ! mpegtsmux.
2015-07-20 12:43:36 +01:00
Thibault Saunier
c683f2fffe gtk: Log GDK GL error when failling creating GdkGLContext 2015-07-20 11:09:20 +02:00
Matthew Waters
d5996de5d7 glcontext: fix get_current_gl_api on x11/nvidia drivers
They require to get_proc_address some functions through the
platform specific {glX,egl}GetProcAddress rather than the default
GL library symbol lookup.
2015-07-18 18:18:22 +10:00
Matthew Waters
0aaf9db1df glcolorconvertelement: propagate failure to convert buffer upstream
Rather than just silently continuing
2015-07-18 16:32:15 +10:00
Nicolas Dufresne
1d0c3fd070 gtkgstglwidget: Cleanup unused private member
new_buffer has been moved to base class. Also cleanup
the properties comment, which are also all moved into
the base class.
2015-07-17 16:00:01 -04:00
Nicolas Dufresne
df021c1a4b gtksink: "widget" must be access from main thread
Document that "widget" property must be accessed from the
main thread (where GTK is running). This is the same for
state transition on these elements. It is very natural to
do so un GTK applications.
2015-07-17 15:57:37 -04:00
Nicolas Dufresne
5e87b9f9af gtkglsink: Don't leak vertex array and buffers
This is now possible since reset is always called from the
main thread.

https://bugzilla.gnome.org/show_bug.cgi?id=752441
2015-07-17 15:41:09 -04:00
Nicolas Dufresne
410ffd5c62 gtkgstbasewidget: Fix black frame on resize
This is solved by only applying the new format when the next
buffer is to be rendered and on the GTK thread.

https://bugzilla.gnome.org/show_bug.cgi?id=752441
2015-07-17 15:41:07 -04:00
Nicolas Dufresne
d0fd6a0b0b gtkgstbasewidget: Pass already parsed VideoInfo
As the base sink already parse the caps into VideoInfo it
makes sense to pass in VideoInfo to the widget instead.

https://bugzilla.gnome.org/show_bug.cgi?id=752441
2015-07-17 15:40:22 -04:00
Nicolas Dufresne
785b7bd8e4 gtkglsink: Port to GstGtkBaseSink base class
https://bugzilla.gnome.org/show_bug.cgi?id=752441
2015-07-17 15:14:09 -04:00
Nicolas Dufresne
84bc5adbc9 gtksink: Port to GstGtkBaseSink
https://bugzilla.gnome.org/show_bug.cgi?id=752441
2015-07-17 15:14:09 -04:00
Nicolas Dufresne
0fc6765b70 gtkbasesink: Create a base class
This contains all the common code between the gtkglsink and
gtksink.

https://bugzilla.gnome.org/show_bug.cgi?id=752441
2015-07-17 15:13:12 -04:00
Nicolas Dufresne
13ae5cb2f5 gtkglsink: Port to GtkGstBaseWidget
https://bugzilla.gnome.org/show_bug.cgi?id=752441
2015-07-17 15:13:11 -04:00
Nicolas Dufresne
b53f859b59 gtksink: Port to GtkGstBaseWidget
https://bugzilla.gnome.org/show_bug.cgi?id=752441
2015-07-16 17:12:30 -04:00
Nicolas Dufresne
ad45bcdd34 gtk: Add GtkGstBaseWidget
This is a "pseudo" base class. Basically it's a shared instance
and class structure and a shared set of function between the
two widget. It cannot have it's own type like normal base class
since the one instance will implement GtkGLArea while the other
implements GtkDrawingAreay. To workaround this, the parent instance
and class is a union of both.

https://bugzilla.gnome.org/show_bug.cgi?id=752441
2015-07-16 17:12:30 -04:00
Nicolas Dufresne
04beac6e0f uploadelement: Protect against NULL pointer
I notice that if you stop the pipeline during a renegotiation
the upload may be NULL while an allocation query is being run.
In that scenario, returning FALSE to the allocation query is the
best thing.
2015-07-16 17:05:36 -04:00
Nicolas Dufresne
fecef40463 gtkgstglwidget: Remove unused gl_caps 2015-07-16 17:05:36 -04:00
Nicolas Dufresne
4be2229ba6 gtksink: Create a window if the widget is unparented
The same way as it's now done with the gtkglsink, create a top
level window if the widget is not parented.

https://bugzilla.gnome.org/show_bug.cgi?id=751104
2015-07-16 17:05:36 -04:00
Nicolas Dufresne
dae8008d8b gtksink: Ensure the copy pasted code remains the same
Move back the default property at the same place they are in the
other sink. This helps when using a diff viewer to synchronized
this unfortunate copy paste.

https://bugzilla.gnome.org/show_bug.cgi?id=751104
2015-07-16 17:05:36 -04:00
Nicolas Dufresne
0bc7e9a240 gtk: Fix race between queue_draw and destroy
In GTK dispose can be called before the last ref is reached. This
happens when you close the container window. The dispose will be
explicitly called, and destroyed notify will be fired. This patch
fixes this race by properly tracking the widget state.

In the sink, we now set the widget pointer to NULL, so the widget
will properly get created again if you set your pipeline to NULL
state after the widget was destroy, and set it back to PLAYING.

https://bugzilla.gnome.org/show_bug.cgi?id=751104
2015-07-16 17:05:36 -04:00
Tim-Philipp Müller
53a431a323 dashdemux: remove typefinder, move it to typefindfunctions in -base
Otherwise this plugin will be loaded pretty much whenever
there's anything to typefind. And the code was pretty much
copy'n'paste from -base anyway.
2015-07-16 21:28:28 +01:00
Florin Apostol
e12d3d9be2 dashdemux: default timescale is 1
default timescale value should be 1, not 0.

https://bugzilla.gnome.org/show_bug.cgi?id=752414
2015-07-16 20:05:58 +01:00
Florin Apostol
8b558d68cb dashdemux: free prop_string only after it's no longer needed
https://bugzilla.gnome.org/show_bug.cgi?id=752419
2015-07-16 19:57:40 +01:00
Nicolas Dufresne
e4f9009103 gtkgstwidget: Add missing break in get_property 2015-07-15 11:47:51 -04:00
Nicolas Dufresne
6bfbadc0f9 gtksinks: Remove undefined private structure
The classes contains a private structure which are not defined,
hence unused.
2015-07-15 11:44:30 -04:00
Edward Hervey
7cb734b1cd configure/qt: Fix build without Qt5X11Extras 2015-07-10 14:01:59 +02:00
Sebastian Dröge
a6507de48e mpdparse: g_slice_new() can't return NULL
It will abort() if allocation fails.
2015-07-10 13:26:51 +03:00
Sebastian Dröge
77b618ca77 mpdparser: Don't allow network access when reading the XML data 2015-07-10 13:20:26 +03:00
Matthew Waters
769fffa3d9 new qt5 qml GL video sink
Very much in the same spirit as the Gtk GL sink

Two things are provided
1. A QQuickItem subclass that renders out RGBA filled GstGLMemory
   buffers that is instantiated from qml.
2. A sink element that will push buffers into (1)

To use
1. Declare the GstGLVideoItem in qml with an appropriate
   objectName property set.
2. Get the aforementioned GstGLVideoItem from qml using something like

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

QObject *rootObject = engine.rootObjects().first();
QQuickItem *videoItem = rootObject->findChild<QQuickItem *> ("videoItem");

3. Set the videoItem on the sink

https://bugzilla.gnome.org/show_bug.cgi?id=752185
2015-07-10 15:25:26 +10:00
Matthew Waters
abde710f42 gtk: add to the generic/states test 2015-07-09 16:40:19 +10:00
Xavier Claessens
d95fd04960 GstGtkGLSink: Ensure widget has a toplevel parent
Checking for a parent is not enough, it must have a toplevel one.
If widget has no toplevel parent then add it in a GtkWindow, that
make it usable from gst-launch-1.0.

https://bugzilla.gnome.org/show_bug.cgi?id=751104
2015-07-09 16:40:19 +10:00
Xavier Claessens
b71b7dc9e6 GstGtkGLSink: Post error if widget gets destroyed
https://bugzilla.gnome.org/show_bug.cgi?id=751104
2015-07-09 16:40:19 +10:00
Xavier Claessens
72b48a39d8 GstGtkGLSink: fix possible warning in finalize
If the element is finalized before going in READY state
the widget could still be NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=751104
2015-07-09 16:40:19 +10:00
Sebastian Dröge
cd47556351 mpdparser: Fix some memory leaks in the MPD parser and unit test 2015-07-08 23:15:14 +03:00
Sebastian Dröge
a755fbb440 Revert "Revert "dashdemux: fixed gst_mpd_client_advance_segment to return GST_FLOW_EOS""
This reverts commit 4875ddf585.

This was based on a misunderstanding of the code.

https://bugzilla.gnome.org/show_bug.cgi?id=752085
2015-07-08 16:33:50 +03:00
Luis de Bethencourt
a01133dd8f dashdemux: remove redundant else statement
Else statement is redundant when the if block finishes with an return.
2015-07-08 11:33:04 +01:00
Sebastian Dröge
4875ddf585 Revert "dashdemux: fixed gst_mpd_client_advance_segment to return GST_FLOW_EOS"
This reverts commit dfe37ffc59.

https://bugzilla.gnome.org/show_bug.cgi?id=752085
2015-07-07 19:51:39 +03:00
Sebastian Dröge
07d27d906a mpdparser: Fix off-by-one in has-next-segment calculation 2015-07-07 19:51:39 +03:00
Matthew Waters
d5a39896dc download: only start a download transfer for sysmem caps features 2015-07-07 22:38:08 +10:00
Florin Apostol
cc9885ef4e dashdemux: added parsing of bitstreamSwitching@AdaptationSet
https://bugzilla.gnome.org/show_bug.cgi?id=751170
2015-07-07 14:08:04 +03:00
Florin Apostol
581ae1d24d dashdemux: regrouped functions in gstmpdparser.h file
Moved gst_mpd_client_get_next_segment_availability_end_time and
gst_mpd_client_add_time_difference functions to be grouped with
functions from the same category.

https://bugzilla.gnome.org/show_bug.cgi?id=752027
2015-07-07 14:02:10 +03:00
Florin Apostol
dfe37ffc59 dashdemux: fixed gst_mpd_client_advance_segment to return GST_FLOW_EOS
Fixed gst_mpd_client_advance_segment to return GST_FLOW_EOS if the
new index is out of range.

https://bugzilla.gnome.org/show_bug.cgi?id=751850
2015-07-07 13:30:07 +03:00
Matthew Waters
2b9dddbafe gltransformation: correct vao usage
keep the vao bound after uploading the new vertex data

fixes a mesa GL error "no vertex array object bound" on caps changes
2015-07-07 15:32:13 +10:00
Matthew Waters
26df88cd24 gl: consolidate egl header includes to egl-only headers
They may conflict with other headers.
2015-07-07 13:12:49 +10:00
Thibault Saunier
31b770af0b gtkglsink: Release the widget lock when trying to get the GL context
Otherwise we might be waiting for the lock on the main loop (for
example in the ->render vmethod) and thus we will deadlock.
2015-07-06 19:33:35 +02:00
Luis de Bethencourt
9fb7add179 curlsshsink: remove redundant else statement
Else statement is redundant when the if block finishes with an return.
2015-07-06 15:25:16 +01:00
Florin Apostol
8551f74a05 dashdemux: fixed segment start when specified by SegmentTimeline
@t attribute in segment Timeline is relative to the period start.
Corrected the code to take this into account when computing segment
timestamp.

https://bugzilla.gnome.org/show_bug.cgi?id=751841
2015-07-05 13:54:00 -03:00
Florin Apostol
8e82129875 dashdemux: wrong segment duration computed by gst_mpd_client_setup_representation
Corrected computation of segment start and duration.

https://bugzilla.gnome.org/show_bug.cgi?id=751914
2015-07-05 13:31:38 -03:00
Florin Apostol
5151c42085 dashdemux: corrected search for audio languages
Corrected the initialisation of mimeType in
gst_mpdparser_get_list_and_nb_of_audio_language: the variable is used
in a loop, so it must be set to NULL at the beginning of each iteration.

https://bugzilla.gnome.org/show_bug.cgi?id=751911
2015-07-05 13:25:12 -03:00
Olivier Crête
81b9d1531d glvideomixer, glmixer: Add description and klass 2015-07-03 12:28:47 -04:00
Sebastian Dröge
9e7454a90a openh264dec: Unref video frames and codec state in all cases 2015-07-02 18:51:44 +02:00
Nicolas Dufresne
fe283a9aeb gl: Don't leak pool if set_config failed 2015-07-02 09:40:05 -04:00
Sebastian Dröge
5109d9930c openh264dec: Uninitializing the decoder can't fail and will always return 0 == cmResultSuccess
... but when we cast cmResultSuccess to a gboolean it will be FALSE, and make
GstVideoDecoder::stop() fail for no reason.
2015-07-02 14:16:05 +02:00
Vineeth TM
8ec2e0ad62 glimagesink: use g_clear_error instead of g_error_free
replace g_error_free with g_clear_error, as it internally
checks if error variable is valid or not.

https://bugzilla.gnome.org/show_bug.cgi?id=751823
2015-07-02 11:34:10 +01:00
Miguel París Díaz
3a3c01e7c7 srtpdec: Add config for the replay window size
https://bugzilla.gnome.org/show_bug.cgi?id=751729
2015-06-30 16:14:25 +02:00
Florin Apostol
0f37768626 dashdemux: corrected parsing of %u in segment templates
https://bugzilla.gnome.org/show_bug.cgi?id=751716
2015-06-30 15:24:28 +02:00
Florin Apostol
e2d1126391 dashdemux: corrected recognition of $$$ in segment templates
fixed recognition of $$ after a $ that ends an identifier, eg $Time$$$

https://bugzilla.gnome.org/show_bug.cgi?id=751682
2015-06-29 19:28:56 -03:00
Luis de Bethencourt
be664ae40d gl: add missing break
gst_gl_view_convert_element_set_property() is missing a break at the end
of the PROP_OUTPUT_DOWNMIX_MODE case. Adding it.

CID #1308949
2015-06-29 16:10:50 +01:00
Nicolas Dufresne
11150e3bea glimagesink: Don't leak pool
gst_query_add_allocation_pool is transfer none. Also unref
if there was a configuration error.
2015-06-26 14:59:15 -04:00
Florin Apostol
e09cf2f3b6 dashdemux: corrected next fragment duration validation
Before returning the next fragment duration value, the
gst_mpd_client_get_next_fragment_duration function tries to validate it.
But the condition was incorrect.

https://bugzilla.gnome.org/show_bug.cgi?id=751539
2015-06-26 10:43:42 -03:00
Sebastian Dröge
626a8f0a74 dashdemux: Subtract the period start time from the presentation offset
We're interested in the offset between the period start timestamp and the
actual media timestamp so that we can properly correct for it. The absolute
presentation offset to timestamp 0 is useless as the only thing we really
care about is the offset between the current fragment timestamp and the
media timestamp.
2015-06-25 23:36:10 +02:00
Sebastian Dröge
95eb1aa49c dashdemux: Subtract the period start when seeking based on a template
Otherwise we will look for segments after the period usually. The seek
timestamp is relative to the start of the first period and we have to
select a segment relative to the current period's start.
2015-06-25 23:36:09 +02:00
Sebastian Dröge
e671ad25a9 dashdemux: Include the period start in the fragment timestamps in all cases
We didn't do this for fragments that are generated on demand from a template,
only for the other cases when they were all generated upfront. This caused
fragment timestamps to start from 0 again for each new period.
2015-06-25 23:35:46 +02:00
Sebastian Dröge
9e8e1c452d dashdemux: Seek on the new streams if the seek caused a period switch
Seeking on the old streams is pointless, they are going to be freed on the
next opportunity.
2015-06-25 23:35:02 +02:00
Florin Apostol
fa9b03186a dash: Correct check for valid timeShiftBufferDepth
If not set, the timeShiftBufferDepth has a default value of -1.
The standard says that this should be interpreted as infinite.

The gst_mpd_client_check_time_position function incorrectly compares
timeShiftBufferDepth with 0 instead of -1 to determine if it was set.

https://bugzilla.gnome.org/show_bug.cgi?id=751500
2015-06-25 16:27:18 +02:00
Luis de Bethencourt
bf2f4f5c8c docs: decodebin2 -> decodebin 2015-06-25 11:02:45 +01:00
Florin Apostol
dbf12ab760 dashdemux: Corrected duration argument for gst_mpd_client_add_media_segment call
The last parameter of gst_mpd_client_add_media_segment function is a
duration. But when called from gst_mpd_client_setup_representation, the
last argument was wrongly set to PeriodEnd

https://bugzilla.gnome.org/show_bug.cgi?id=751449
2015-06-25 10:16:24 +02:00
Florin Apostol
93f08347de dashdemux: incorrect use of period start
The period start information, calculated in gst_mpd_client_setup_media_presentation
function is stored in stream_period->start. The information read from
xml file and stored in stream_period->period->start is not changed.

If the xml file does not contain the period start information,
stream_period->period->start will be -1.

The function gst_mpd_client_get_next_segment_availability_end_time wants to
use period start time, but incorrectly uses stream_period->period->start
(value from xml file, which could be -1) instead of stream_period->start
(computed value)

https://bugzilla.gnome.org/show_bug.cgi?id=751465
2015-06-25 10:14:30 +02:00
Nicolas Dufresne
55a5c5f7df motioncells: Port to g_get_current_time
This is more portable.

https://bugzilla.gnome.org/show_bug.cgi?id=751221
2015-06-22 15:48:51 -04:00
Mersad Jelacic
a573cc4004 opusenc: Add bitrate to the tags
https://bugzilla.gnome.org/show_bug.cgi?id=750992
2015-06-22 13:49:34 +02:00
Florin Apostol
8336d7a60b dashdemux: corrected computation of period's duration
According to ISO/IEC 23009-1:2014(E), chapter 5.3.2.1
"The Period extends until the PeriodStart of the next Period, or until
the end of the Media Presentation in the case of the last Period."

This means that a configured value for optional attribute period duration
should be ignored if the next period contains a start attribute or it is
the last period and the MPD contains a mediaPresentationDuration attribute.

https://bugzilla.gnome.org/show_bug.cgi?id=750797
2015-06-22 13:47:54 +02:00
Julien Isorce
66d833fcf2 gldisplay: add gst_gl_display_create_context
It also emits a create-context signal so that an application
can provide an external GstGLContext backend.

https://bugzilla.gnome.org/show_bug.cgi?id=750310
2015-06-19 13:10:30 +01:00
Julien Isorce
5b003b68ca Revert "gl: add GstGLContextGPUProcess backend"
This reverts commit b377112ee3.
2015-06-19 13:08:49 +01:00
Jan Schmidt
b973f9473e glimagesink: Remove duplicate, useless line of code 2015-06-19 14:37:24 +10:00
Nicolas Dufresne
c2b49fa732 opengl: glstero* are only built with full OpenGL
Don't try to register the elements unless they are built.
2015-06-18 22:11:05 -04:00
Jan Schmidt
eefdb2ed86 gl: Add glviewconvert, glstereomix and glstereosplit elements
Conversion elements for transforming multiview/stereoscopic video

https://bugzilla.gnome.org/show_bug.cgi?id=611157
2015-06-19 01:49:33 +10:00
Jan Schmidt
00d6fe9068 glimagesink: Support multiview/stereoscopic video
Support video with multiview info in the caps, transform
it to mono anaglyph by default, but allow for configuring
other output modes and handoff to the app via
the draw signal.

https://bugzilla.gnome.org/show_bug.cgi?id=611157
2015-06-19 01:49:33 +10:00
Florin Apostol
d268f812eb dashdemux: added warnings in gst_mpd_client_setup_streaming function
Added some warning messages in gst_mpd_client_setup_streaming to help
debug situations when the function will return FALSE.

Renamed a wrongly spelled variable.

https://bugzilla.gnome.org/show_bug.cgi?id=751149
2015-06-18 12:40:01 -03:00
Florin Apostol
e4d6e96c82 dashdemux: corrected comments in gstmpdparser.h
Corrected some comments in gstmpdparser.h file.
Moved gst_mpd_client_get_adaptation_sets function to be grouped with
other functions from AdaptationSet group

https://bugzilla.gnome.org/show_bug.cgi?id=751149
2015-06-18 12:40:01 -03:00
Florin Apostol
9f56cc27ab dashdemux: fixed getting representation based on max bandwidth
The gst_mpdparser_get_rep_idx_with_max_bandwidth function assumes
representations are ordered by bandwidth and incorrectly returns the
first one when wanting the one with minimum bandwidth.

Corrected gst_mpdparser_get_rep_idx_with_max_bandwidth function to get the
correct representation in case max_bandwidth parameter is 0.

https://bugzilla.gnome.org/show_bug.cgi?id=751153
2015-06-18 11:29:45 -03:00
Sebastian Dröge
9841cd5e58 gtkglwidget: Const'ify another array 2015-06-15 21:32:43 +02:00
Sebastian Dröge
aa37a70efb gtkglwidget: Calculate the viewport size ourselves
Getting the current viewport and modifying it relatively will produce an
interesting feedback loop during widget resizing. Over a few frames we
will gradually move the viewport a bit until it converged again, adding
unnecessary additional borders at the top and left.
2015-06-15 21:29:46 +02:00
Sebastian Dröge
8b821e0cf3 gtk: Use the display width/height for the widget's preferred width/height 2015-06-15 21:24:01 +02:00
Sebastian Dröge
df034766c5 gtksink: Add support for xRGB/BGRx 2015-06-15 20:45:11 +02:00
Sebastian Dröge
60ea4c079d gtk: Cairo color formats are in native endianness, GStreamer's in memory order
CAIRO_FORMAT_ARGB32 is ARGB on big endian and BGRA on little endian.
2015-06-15 20:39:59 +02:00
Sebastian Dröge
ea8aa5ff1b gtk: Implement ignore-alpha property and enable it by default 2015-06-15 20:35:38 +02:00
Sebastian Dröge
6b731584a5 gtk: Sync properties from the sink to the widget upon widget creation 2015-06-15 20:13:57 +02:00
Matthew Waters
890de823e6 glimagesink: add missing handle-events/ignore-alpha property to the bin 2015-06-15 22:44:31 +10:00
Matthew Waters
64f3446907 gtk: implement pixel and display aspect ratio handling 2015-06-15 22:39:07 +10:00
Matthew Waters
e34638112f gtk: silence unused variable warnings for unsupported winsys' 2015-06-15 14:41:24 +10:00
Matthew Waters
874b578d05 gtk: implement basic wayland GL support 2015-06-15 14:41:05 +10:00
Matthew Waters
4796cef882 glmixerbin: implement proper dynamic pad removal
https://bugzilla.gnome.org/show_bug.cgi?id=750881
2015-06-13 18:47:13 +10:00
Nicolas Dufresne
c72213ff8b glimagesink: Don't do pool caching
We now know that pool caching can cause renegotiation issues
when an element in the pipeline change from passthrough to not
passthrough. As it's not needed, don't cache existing pools.

https://bugzilla.gnome.org/show_bug.cgi?id=748344
2015-06-12 20:14:37 -04:00
Florin Apostol
b23e4452a2 dashdemux: fixed segfault for missing default namespace
Added a check for a_node->ns before accessing a_node->ns->href in
gst_mpdparser_get_xml_node_namespace. This could happen if the xml
is missing the default namespace.

https://bugzilla.gnome.org/show_bug.cgi?id=750866
2015-06-12 22:45:51 +02:00
Thibault Saunier
7634a77611 gtk: Do not try to activate a NULL GLContext
At that point in the code nothing guarantees it exists
2015-06-12 15:40:29 +02:00
Matthew Waters
c3a47c910d glmemory: separate pbo transfer from texture transfers
When supported, the potentially longer pbo upload/download can be
initiated before the texture upload/download, potentially increasing
throughput.
2015-06-12 16:59:20 +10:00
Matthew Waters
b97f2e6e6a gtk: implement video aspect-ratio handling
For both the software and the GL sink's.

Doesn't deal with the pixel-aspect-ratio field at all yet.
2015-06-12 15:17:30 +10:00
Matthew Waters
adce0220a8 gtk: fix a couple of typos 2015-06-12 12:40:50 +10:00
Matthew Waters
d99b7d4219 gtkglsink: reset the context/display in READY_TO_NULL
Fixes context propagation in pipelines with upstream GL elements.
2015-06-12 12:32:06 +10:00
Alex Ashley
5beeccdba2 dashdemux: fix error calculating large presentationTimeOffset values
If the presentationTimeOffset attribute of a DASH manifest contains
a value that is larger than 2^32, gstmpdparser incorrectly calculates
the stream's presentation time offset. This is due to two bugs:

1: Using gst_mpdparser_get_xml_prop_unsigned_integer rather than
   gst_mpdparser_get_xml_prop_unsigned_integer_64 to parse the
   attribute
2: gst_mpd_client_setup_representation multiplying the value by
   GST_SECOND and then dividing by timescale

https://bugzilla.gnome.org/show_bug.cgi?id=750804
2015-06-11 19:41:11 +02:00
Nicolas Dufresne
b14fea7fb8 gstgtk: Allow doing gst-inspect-1.0 on these elements
This patch allow going gst-inspect-1.0 on these elements removing
ugly crash that was previously occurring. The method consist of
making the widget creation as lazy as possible. This way we don't
endup doing gtk_init() before the application. We also ref_sink()
the widget, so we don't crash if the parent widget is discarded,
and cleanly error out with GL if the widget has no parent window,
because calling gtk_widget_realized() can only be done if the widget
has been parented to a window).
2015-06-11 12:41:49 -04:00
Matthew Waters
cd2669fad1 gl: move basesink properties from glimagesinkbin to glsinkbin 2015-06-12 00:34:58 +10:00
Sebastian Dröge
e8a97877b4 gl: Use gst_object_ref_sink() for gl{filter,mixer,src}bin too 2015-06-11 15:22:04 +02:00
Sebastian Dröge
c1b43742bf glsinkbin: Use gst_object_ref_sink() for consistency with the video-sink property on playbin 2015-06-11 15:17:55 +02:00
Thibault Saunier
59e298a6fb gtk: Do not try to initialize display if we have not have a GLContext yet 2015-06-11 15:07:24 +02:00
Matthew Waters
23fb666dd7 Implement gtk sinks
two sinks are provided.  gtksink which is a cairo/software based renderer
and gtkglsink which utilises the GL support in gtk and gstreamer.
2015-06-11 22:01:03 +10:00
Sebastian Dröge
1a15c2e426 dash: Add $(GST_PLUGINS_BASE_LIBS) to LIBADD
https://bugzilla.gnome.org/show_bug.cgi?id=750619
2015-06-09 12:12:25 +02:00
Jimmy Ohn
1270afae44 hlsdemux: Fix wrong gst-launch command in the description
Fix wrong gst-lauch command in the description.
This patch may help people to get right testing results using the script.

https://bugzilla.gnome.org/show_bug.cgi?id=750143
2015-06-05 12:21:41 -03:00
Luis de Bethencourt
e04ced027e dfbvideosink: remove ignored assignments
Remove assignments to DFBResult res that are never read.
2015-06-05 14:49:38 +01:00
Thiago Santos
045bfa10fe Fix a common typo: retreive -> retrieve
Seems to have been copy pasted around a few places
2015-06-05 09:43:35 -03:00
Thiago Santos
0a63fa7a01 hlsdemux: drop TODO that doesn't need a solution
Connection speed is only checked at that point in hlsdemux so there
is no real need to refactor it.

https://bugzilla.gnome.org/show_bug.cgi?id=749328
2015-06-05 09:43:31 -03:00
Thiago Santos
581d8c0b8d Revert "hlsdemux: Simplify logic in process_manifest"
This reverts commit 4ca3a22b6b.

The connection-speed=0 is used as a special value in the property
of hlsdemux to mean 'automatic' selection, m3u8.c doesn't need
to know about that as it should be as simple as possible.

So this patch hides this automatic selection documented in hlsdemux
into m3u8 logic and I think the gets harder to understand the code.

It also makes the hlsdemux unit tests work again

https://bugzilla.gnome.org/show_bug.cgi?id=749328
2015-06-05 09:43:10 -03:00
Sebastian Dröge
9bcddde9bc mpdparser: Fix inverted logic introduced in last commit 2015-06-05 14:33:57 +02:00
Sebastian Dröge
15de547760 mpdparser: Calculate the number of segments we have when a segment template instead of a list is used
Otherwise we would just continue downloading new files forever until we get
404 for the first one, and then error out instead of going EOS.
2015-06-05 14:11:47 +02:00
Sebastian Dröge
ec226e856d Revert "mpdparser: Don't consider streams with a known media presentation duration as live"
This reverts commit 37011e5198.

This change was actually completely unnecessary, the streams in question are
marked as static and are not considered live anyway.
2015-06-05 13:28:39 +02:00
Sebastian Dröge
37011e5198 mpdparser: Don't consider streams with a known media presentation duration as live 2015-06-05 13:21:55 +02:00
Jose Antonio Santos Cadenas
adcf3f48a5 srtp: Allow getting ssrc of more package types than RR and SR
This allows decrypting reduce size packages. See RFC 5506

https://bugzilla.gnome.org/show_bug.cgi?id=750326
2015-06-05 10:19:51 +02:00
Sebastian Dröge
2b207c0b65 mpdparser: Don't crash in debug output if stream->segments is NULL 2015-06-04 15:58:46 +02:00
Tim-Philipp Müller
4238f62975 libde265dec: fix up plugin name and decoder description 2015-06-04 12:53:57 +01:00
Sebastian Dröge
64a2dcf582 mpdparse: Clamp seek times to the availabilityStartTime
Otherwise we will seek to negative times, which are interpreted as unsigned
integers later.
2015-06-04 13:36:05 +02:00
Sebastian Dröge
f9ada426d4 mpdparser: Improve debug output a bit when advancing segments 2015-06-04 13:13:39 +02:00
Sebastian Dröge
1ba8f82b94 opusdec: If channel/rate negotiation fails, fall back to stereo and 48kHz 2015-06-04 11:54:24 +02:00
Sebastian Dröge
bd8b25f08b opusparse: Set up default header with 48kHz sample rate instead of 0 2015-06-04 11:52:40 +02:00
Sebastian Dröge
96ee9b274c opusdec: gst_structure_fixate_field_nearest_int() only works if the structure has this field
Just set the rate/channels directly if the caps don't have this field.
2015-06-04 11:45:05 +02:00
Sebastian Dröge
60047b6b92 mpdparser: Use 64 bit integer format strings when passing a 64 bit integer
Otherwise we'll only get half of its bits printed on 32 bit architectures.

For this, promote the %d-style format strings to something that accepts
64 bit integers with G_GINT64_MODIFIER.
2015-06-04 11:05:07 +02:00
Sebastian Dröge
1be223fdc3 mpdparse: Validate format strings before using them
Using format strings from an untrusted source without validation is
calling for problems, and at least allows to remotely crash your application.
If not worse.
2015-06-04 10:47:07 +02:00
Sebastian Dröge
88d8dfd9c6 mpdparser: Add the startNumber as offset to the segment index when using a template 2015-06-03 20:03:59 +02:00
Santiago Carot-Nemesio
f530aac115 dtlsdec: Fix critical warning "got data flow before stream-start event"
Forward sticky events on requested src pad.

https://bugzilla.gnome.org/show_bug.cgi?id=750348
2015-06-03 17:12:49 +02:00
Reynaldo H. Verdejo Pinochet
79d9c34205 zbar: don't ignore zbar_scan_image() errors 2015-06-02 12:27:10 -03:00
Matthew Waters
d914cc6e72 gl: consolidate internal_rgba_format into glmemory
Expose some useful value format conversion functions available in
GstGLMemory.
2015-06-02 16:33:44 +10:00
Edward Hervey
86c500a47a rtmpsink: Initialize GstMapInfo
Avoids doing a call to unmap with it uninitialized

CID #1302834
2015-06-01 13:56:03 +02:00
Reynaldo H. Verdejo Pinochet
1246d93f3e zbar: add frame sample to barcode message
New attach-frame property enables barcode frame
dumping when set to true.

https://bugzilla.gnome.org/show_bug.cgi?id=747557
2015-05-31 20:01:10 -03:00
Matthew Waters
fac0cdc7ac glwindow: handle gst_video_overlay_set_render_rectangle 2015-05-31 16:04:13 +10:00
Vivia Nikolaidou
fba7c97135 rtmpsink: Do not crash when receiving buffers after GST_FLOW_ERROR
If the RTMP URI is invalid, the rtmpsink will return GST_FLOW_ERROR.
If it still receives buffers after that, it shouldn't crash.

https://bugzilla.gnome.org/show_bug.cgi?id=750104
2015-05-30 00:25:37 +10:00
Thiago Santos
53451500ee dashdemux: avoid assertion when splitting buffer
Pass size=-1 as is if that is the case instead of subtracting
the offset. Otherwise we have an invalid size passed for that
buffer.
2015-05-29 09:02:42 -03:00
Santiago Carot-Nemesio
ed21506896 dtlssrtpdec: Release requested pads
https://bugzilla.gnome.org/show_bug.cgi?id=750036
2015-05-28 22:46:47 +02:00
Santiago Carot-Nemesio
29c17a96f7 dtlsdec: Remove unnecessary ref/unref operations
https://bugzilla.gnome.org/show_bug.cgi?id=750036
2015-05-28 22:46:47 +02:00
Santiago Carot-Nemesio
665031751d dtlsdec: Fix release request pad function
Don't unref the pad reference we don't own and just remove the pad.

https://bugzilla.gnome.org/show_bug.cgi?id=750036
2015-05-28 22:46:47 +02:00
Edward Hervey
04b010a883 hlsdemux: Search more when advancing fragment
In live situations, it is not uncommon for the current fragment to end
up out of the (updated) play range (lowest/highest sequence). But the next
fragment to play *is* present in the play range.

When advancing, if we can't find the current GstM3U8MediaFile, don't abort
straight away. Instead, look if a GstM3U8MediaFile with the next sequence value
is present, and if so switch to it.

https://bugzilla.gnome.org/show_bug.cgi?id=750028
2015-05-28 14:56:36 +02:00
Julien Isorce
b377112ee3 gl: add GstGLContextGPUProcess backend
It builds its GL vtable from a proc address provided
by the application.
2015-05-27 17:22:40 +01:00
Julien Isorce
ba5bf50d5f gl: add and use gst_gl_internal_format_rgba
Previously when compiling GstGL with both GL and GLES2,
GL_RGBA8 was picked from GL/gl.h. But a clash may happen at
runtime when one is selecting GLES2.

gst_gl_internal_format_rgba allows to check at runtime
if it should use GL_RGBA or GL_RGBA8.
2015-05-27 17:20:05 +01:00
Luis de Bethencourt
9c729ef678 opencv: 'for' loop initial declaration
'for' loop initial declarations are not allowed in C89, moving the declarations
to before the 'for' loops.
2015-05-27 13:10:35 +01:00
Luis de Bethencourt
666a80236c gleffects: 'for' loop initial declaration
'for' loop initial declarations are not allowed in C89, moving the declarations
to before the 'for' loops.
2015-05-27 13:05:15 +01:00
Luis de Bethencourt
ecf8f97316 resindvd: remove unused value
The data variable is incremented but never read again. Remove the unused value
assignment.
2015-05-27 12:03:45 +01:00
Thiago Santos
6f1c58dedf hlsdemux: remove more unused attributes
Those are not used or only read
2015-05-27 06:17:49 -03:00
Thiago Santos
030700a24b hlsdemux: remove unused attribute
It is never read for anything useful
2015-05-27 05:36:10 -03:00
Xavier Claessens
2bb01f9601 gloverlay: fix a leak
https://bugzilla.gnome.org/show_bug.cgi?id=749846
2015-05-26 16:49:55 -04:00
Xavier Claessens
53cd9e3e0e gloverlay: properly handle errors while loading file
Post an error on the bus if anything bad happens while reading
and parsing the image file.

https://bugzilla.gnome.org/show_bug.cgi?id=749846
2015-05-26 16:49:55 -04:00
Xavier Claessens
02b2c2edf6 gloverlay: remove unused type_file field
https://bugzilla.gnome.org/show_bug.cgi?id=749846
2015-05-26 16:49:55 -04:00
Matthew Waters
db9e0cf5c7 gleffects: properly initialize the shaders across contexts implementing multiple API's 2015-05-26 12:50:58 +10:00
Matthew Waters
cb482f13be gleffects_laplacian: fix shader compilation in gl3/gles2
https://bugzilla.gnome.org/show_bug.cgi?id=748393
2015-05-26 12:50:58 +10:00
Patricia Muscalu
c1bad1be5d curlsink: handle socket callback for active FTP connections as well
Since version 7.28.0, libcurl allows application to set
socket options for active FTP connections.

Bump libcurl requirement to version tested.

https://bugzilla.gnome.org/show_bug.cgi?id=749815
2015-05-25 19:37:53 +01:00
David Waring
c4ff5359aa dashdemux: Fix segfault introduced by segment iteration refactoring (2105a310).
The functions to get the next fragment, next fragment timestamp and to advance
to the next fragment need to work differently when stream->segments is NULL.
Use logic similar to that introduced by commit 2105a310 to perform these
functions.

https://bugzilla.gnome.org/show_bug.cgi?id=749684
2015-05-25 10:02:07 -03:00
Thiago Santos
0910540d58 dashdemux: use signed integet to represent segment index
We need to be able to represent -1 to check when we are EOS
on reverse playback and unsigned integer won't allow that.

CID #1298193
CID #1298194
CID #1298195

https://bugzilla.gnome.org/show_bug.cgi?id=749534
2015-05-25 09:02:30 -03:00
Suhwang Kim
f6cc8d13e0 dashdemux: fix outdated example launch line
https://bugzilla.gnome.org/show_bug.cgi?id=749809
2015-05-25 11:12:47 +01:00
Matthew Waters
9dcefacb3d gltransformation: fix DrawElements call for element array buffers
https://bugzilla.gnome.org/show_bug.cgi?id=749734
2015-05-25 17:39:08 +10:00
Jimmy Ohn
be90a12916 dashdemux: remove unnecessary semicolon
https://bugzilla.gnome.org/show_bug.cgi?id=749691
2015-05-22 09:40:35 +01:00
Sebastian Dröge
3230e51993 compositor/glvideomixer: Don't calculate PAR/DAR with unset GstVideoInfos
Otherwise we divide by zero.
2015-05-21 16:24:48 +03:00
Matthew Waters
d1419afef1 compositor/glvideomixer: fix up par handling
We were using the wrong formula

https://bugzilla.gnome.org/show_bug.cgi?id=749634
2015-05-21 01:04:38 +10:00
Thijs Vermeir
8d728abd8c x265enc: Only copy VPS/SPS/PPS NAL units in header buffer
Previously the VPS unit was detected and all next packets where copied
into the header buffer assuming only SPS and PPS would follow.  This is
not always true, also other types of NAL units follow the VPS unit and
where copied to the header buffer. Now the VPS/SPS/PPS are explicitely
detected and copied in the header buffer.
2015-05-20 13:16:01 +02:00
Thijs Vermeir
db766de135 x265enc: Fix tune parameter mismatch
There was a mismatch between the tune parameter in x265 and the enum
used in this element. The value in the enum is the x265 tune
parameter + 1.
2015-05-20 11:32:52 +02:00
Matthew Waters
8157574d0f caopengllayersink: static const the indices array
the contents will never change anyway.
2015-05-20 00:56:44 +10:00
Matthew Waters
057130b93d caopengllayersink: correctly use the sync meta across multiple contexts
1. Set the sync point after the (possible) upload has occured
2. Wait in the correct GL context (the draw context)

Note: We don't add the GL sync meta to the input buffer as it's not
writable and a copy would be expensive.

Similar to the change with the same name for glimagesink
2015-05-20 00:36:48 +10:00
Matthew Waters
49c4d0850d caopengllayersink: update for GL3 element array buffer usage
fixes blank output
2015-05-20 00:36:48 +10:00
Matthew Waters
6a2d12bf47 glimagesink: correctly use the sync meta across multiple contexts
1. Set the sync point after the (possible) upload has occured
2. Wait in the correct GL context (the draw context)

Note: We don't add the GL sync meta to the input buffer as it's not
writable and a copy would be expensive.
2015-05-20 00:36:48 +10:00
Jimmy Ohn
4ca3a22b6b hlsdemux: Simplify logic in process_manifest
Simplify logic in process_manifest and remove a TODO item.

https://bugzilla.gnome.org/show_bug.cgi?id=749328
2015-05-18 10:52:35 +03:00
Vineeth T M
6b43d7f770 cvsmooth: rename properties
The properties are named as param1 to param4, which makes very little sense
hence renamed the properties according to what it is doing.

https://bugzilla.gnome.org/show_bug.cgi?id=749523
2015-05-18 10:50:23 +03:00
Vineeth T M
1fa8e75f44 cvsmooth: Wrong assignment of prop leads to crash
when setting param2 property, it is wrongly being assigned to param1.
This leads to wrong behavior and a crash when param2 is set as 0.

https://bugzilla.gnome.org/show_bug.cgi?id=749523
2015-05-18 10:48:49 +03:00
Vineeth T M
8df641016e pyramidsegment: wrong value of level property
The property level has a minimum value of 0. But when we set the level as 0,
it gets an assertion error. The function icvPyrSegmentation8uC3R returns false
if level is set as 0, since the minimum level cant be 0 and thus results in error.
Hence changing the minimum value to 1.

https://bugzilla.gnome.org/show_bug.cgi?id=749525
2015-05-18 10:47:45 +03:00
Jose Antonio Santos Cadenas
d625770a18 dtls: Fix memory leak
Keys were not correctly released when it was get as a property
nor when a second key was received

https://bugzilla.gnome.org/show_bug.cgi?id=749380
2015-05-15 15:47:39 +03:00
Matthew Waters
c6abd1632f glimagesink: free the vertex buffer when done
fixes a memory leak
2015-05-14 21:21:01 +10:00
Matthew Waters
0870e8785e gl: remove useless gl{En,Dis}able (GL_TEXTURE_*) calls
We are using shaders everywhere and so they are not needed
2015-05-14 16:42:09 +10:00
Matthew Waters
1f89d1dce2 glimagesink: cleanup properties
remove unused "display-name"
ensure defaults between the bin/element are the same
2015-05-14 15:10:59 +10:00
Matthew Waters
a852146624 gleffects: only try the GL2 shader init path if we have a GL2 context 2015-05-14 14:58:07 +10:00
Matthew Waters
7f7a9dd3ec gl: element buffers are part of vao state
Use them as such.  They are also required for GL3 core profile support
with glDrawElements on OS X.
2015-05-14 14:58:07 +10:00
Thiago Santos
f4789d0430 dashdemux: avoid busy-looping when waiting for new fragment
When all fragments have already been downloaded on a live stream
dashdemux would busy loop as the default implementation of
has_next_fragment would return TRUE. Implement it to correctly
signal if adaptivedemux should wait for the manifest update before
trying to get new fragments.
2015-05-13 13:39:32 -03:00
Thiago Santos
23ad922b64 dashdemux: Improve live stream manifest update repositioning
When updating the manifest the timestamps on it might have changed a little
due to rounding and timescale conversions. If the change makes the timestamp
of the current segment to go up it makes dashdemux reposition to the previous
one causing one extra unnecessary download.

So when repositioning add an extra 10 microseconds to cover for that rounding
issues and increase the chance of falling in the same segment.

Additionally, also improve the time used when the client is already after the
last segment. Instead of using the last segment starting timestamp use the
final timestamp to make it reposition to the next one and not to the one that
has already been downloaded.
2015-05-13 13:39:31 -03:00
Thiago Santos
7de9fbc122 dashdemux: add more protection when acessing gptrarray entries
The glib structure doesn't do range checking so we have to do it
ourselves.

Also adds some more debugging messages
2015-05-13 13:39:24 -03:00
Thiago Santos
f298fca8ad dashdemux: remove unused functions
These functions of directly getting and setting segment indexes
are no longer useful as now we need 2 indexes: repeat and segment
index.

The only operations needed are advance_segment, going back to the
first one or seeking for a timestamp.
2015-05-13 13:39:18 -03:00
Thiago Santos
d617139ee7 dashdemux: reuse seeking function to reduce repeated code
Instead of writing a seek routine, just use the mpdparser function.

Also remove function that is not needed anymore
2015-05-13 13:35:14 -03:00
Thiago Santos
57a2105a31 dashdemux: refactor segment iteration for better performance
Segments are now stored with their repeat counts instead of spanding
them to multiple segments. This caused advancing to the next segment
using a single index to have to iterate over the whole list every time.

This commit addresses this by storing both the segment index as well
as the repeat index and makes advancing to next segment just an
increment of the repeat or the segment index.
2015-05-13 13:35:14 -03:00
Thiago Santos
6344f86e44 dashdemux: improve mpd parsing for repeated segment entries
Use a single segment to represent it internally to avoid using too
much memory. This has the drawback of issuing a linear search to
find the correct segment to play but this can be fixed by using
binary searches or caching the current position and just looking
for the next one.

https://bugzilla.gnome.org/show_bug.cgi?id=748369
2015-05-13 13:35:14 -03:00
Jose Antonio Santos Cadenas
aae1a5e2ce dtlsenc: Fix memory leak releasing connection_id
https://bugzilla.gnome.org/show_bug.cgi?id=749318
2015-05-13 19:14:34 +03:00
Jose Antonio Santos Cadenas
6b0183b7bf dtlsenc: Fix memory leak while setting connection-id
https://bugzilla.gnome.org/show_bug.cgi?id=749318
2015-05-13 19:14:17 +03:00
Jose Antonio Santos Cadenas
3c3d6e8828 dtlsdec: Fix memory leak, release previous pem
https://bugzilla.gnome.org/show_bug.cgi?id=749322
2015-05-13 19:12:51 +03:00
Jose Antonio Santos Cadenas
2173f9f15d dtlsdec: Fix memory leak on dispose
Parent dispose function was not called

https://bugzilla.gnome.org/show_bug.cgi?id=749322
2015-05-13 19:12:32 +03:00
Jose Antonio Santos Cadenas
c44acd8bde dtlsconnection: Fix memory leak while setting closure
https://bugzilla.gnome.org/show_bug.cgi?id=749325
2015-05-13 19:10:34 +03:00
Matthew Waters
1853e455ac gl: don't deadlock on context creation failure
https://bugzilla.gnome.org/show_bug.cgi?id=749284
2015-05-13 23:56:48 +10:00
Sebastian Dröge
5f6bddf719 glmixerbin: Don't unref pad templates
Otherwise we unref the reference that is owned by the element class.
2015-05-13 15:42:50 +03:00
Tim-Philipp Müller
9adefac59b srtpenc: fix failure return values from create_session()
create_session() returns an err_status_t with
err_status_ok=0 and err_status_fail=1, so
returning TRUE/FALSE is not quite right.

https://bugzilla.gnome.org/show_bug.cgi?id=749304
2015-05-13 12:32:53 +01:00
Miguel París Díaz
481e1f76e8 srtpenc: fix over unlocking
Called should call function with lock, and is
also responsible for unlocking it later.

https://bugzilla.gnome.org/show_bug.cgi?id=749304
2015-05-13 12:29:21 +01:00
Matthew Waters
725c1147bc glvideomixer: implement par handling
We were previously ignoring it completely
2015-05-13 17:44:08 +10:00
Matthew Waters
21a6cfcc18 glvideomixer: don't upload the vertex data every frame
Add the missing cache tracking statement.
2015-05-13 17:44:04 +10:00
Nicolas Dufresne
f01d47d0f2 gluploadelement: Remove uneeded header and defines 2015-05-12 16:36:58 -04:00
Nicolas Dufresne
df3d415906 gltestsrc: Use default get_caps implementation
The custom code is wrong as it ignores the templates, which leads to
missing fields in the result. Instead, simply use the default get_caps
implementation which does it correctly (get the template, intersect
with filter and return).

https://bugzilla.gnome.org/show_bug.cgi?id=749237
2015-05-11 15:02:02 -04:00
Sebastian Dröge
b8941efc4a glmixer: Implement GstVideoAggregator::find_best_format()
Without this, we will fixate weird pixel-aspect-ratios like 1/2147483647. But
in the end, all the negotiation code in videoaggregator needs a big cleanup
and videoaggregator needs to get rid of the software-mixer specific things
everywhere.
2015-05-11 16:34:26 +03:00
Matthew Waters
628d8d9599 gl: demote upload/convert/download elements to none
Copy paste error
2015-05-11 22:58:45 +10:00
Matthew Waters
bd1a0cfec2 gl: expose internal glvideomixerelement\
We might want more control over the exact pipeline
Also reduces overhead
2015-05-11 22:58:45 +10:00
Matthew Waters
d2a6e8a92e gl: expose internal glimagesinkelement
We might want more control over the exact pipeline.
Also reduces overhead.
2015-05-11 22:58:37 +10:00
Sebastian Dröge
c534c8899c dtlssrtpdec: Don't merge RTP and RTCP streams that were just split by srtpdec
The funnel has some overhead, and later rtpbin will have to split both streams
again anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=748723
2015-05-07 21:04:30 +02:00
Sebastian Dröge
541c3049dc Revert "Revert "glimagesink: add pixel-aspect-ratio property on the bin""
This reverts commit d96e43b034.
2015-05-06 15:47:27 +02:00
Sebastian Dröge
8c28a51ee1 Revert "Revert "glimagesink: forward ALL the properties on the bin""
This reverts commit 59fb0f830f.
2015-05-06 15:47:20 +02:00
Sebastian Dröge
35d5c648c6 Revert "Revert "glimagesink: implement as a bin""
This reverts commit be938f92d9.
2015-05-06 15:47:04 +02:00
Sebastian Dröge
53c79cbf86 Revert "gl: readd glupload/download onto element pads"
This reverts commit 87d8270f30.
2015-05-06 15:46:49 +02:00
Sebastian Dröge
21413ff3fc Revert "Revert "glvideomixer: implement with glmixerbin""
This reverts commit b4bd11f2f3.
2015-05-06 15:43:32 +02:00
Sebastian Dröge
3d6a79b08b srtpdec: Actually set the caps on the srcpad instead of just calling the default event handler for the sinkpad
Fixes up dafa11b9d2
2015-05-06 12:59:33 +02:00
Matthew Waters
8ef4b12ab8 glimagesink: handle the local_context query
so that upstream elements can get the GL context from glimagesink
2015-05-04 23:44:17 +10:00
Sebastian Dröge
c7d92b6cf5 opusdepay: Set multistream=FALSE on the Opus caps
The RTP Opus mapping only allows mono/stereo, and not multistream Opus
streams.
2015-05-04 11:23:16 +02:00
Jose Antonio Santos Cadenas
de827c792d opusheader: Do not include rate in caps if it is 0
As expressed in gst_opus_header_create_caps, value 0 means unset.
Setting rate value to 0 make negotiation with decoder fail.

https://bugzilla.gnome.org/show_bug.cgi?id=748875
2015-05-04 10:50:42 +02:00
Sebastian Dröge
dafa11b9d2 srtpdec: Make sure to send caps events downstream before any segment events
Upstream might not give us a caps event (dtlssrtpdec) because it might be an
RTP/RTCP mixed stream, but we split the two streams anyway and should report
proper caps downstream if possible.

Fixes "sticky event misordering" warnings with dtlssrtpdec.
2015-04-30 21:34:54 +02:00
Matthew Waters
87d8270f30 gl: readd glupload/download onto element pads
Allows insertion of gl elements into non-gl pipelines without converter
(upload/download) elements.

https://bugzilla.gnome.org/show_bug.cgi?id=743974
2015-04-30 11:26:33 +10:00
Matthew Waters
b4bd11f2f3 Revert "glvideomixer: implement with glmixerbin"
This reverts commit 0fb56738a1.
2015-04-30 11:26:33 +10:00
Matthew Waters
be938f92d9 Revert "glimagesink: implement as a bin"
This reverts commit 8a0017e21d.
2015-04-30 11:26:33 +10:00
Matthew Waters
59fb0f830f Revert "glimagesink: forward ALL the properties on the bin"
This reverts commit 4be45e5f30.
2015-04-30 11:26:32 +10:00