Commit graph

5707 commits

Author SHA1 Message Date
Sebastian Dröge
18e5e64b05 dashdemux: When doing chunked downloading on SIDX, clip requests on the SIDX entry boundaries
https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Sebastian Dröge
9c04d1e13c dashdemux: Collect average moof and first sync sample sizes
And always request those in the beginning so that ideally we get the moof and
the first sync sample all together with the first HTTP request.

https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Sebastian Dröge
7f1f777b92 dashdemux: Download any sync-sample following the moof directly in key-units only mode
We don't have to do yet another additional request but can just download the
data directly.

Also unify the key-unit only mode buffer pushing and extract it into its own
function now that it became more complicated.

https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Sebastian Dröge
f8eddabe29 dashdemux: If a fragment contains no sync samples, disable key-unit mode
https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Sebastian Dröge
cfad48ce5a dashdemux: Remember if for a stream we could do key-units only mode
This makes sure we don't even try going into that mode if we previously saw
that the stream does not have the suitable metadata.

https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Sebastian Dröge
b936c00f51 dashdemux: Also allow key-unit only mode if (some) sample flags are given by trex but we can still find sync frames
https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Sebastian Dröge
47ef88f20e dashdemux: Use chunked downloading for the moof in KEY_UNITS mode
Allows us to reuse the HTTP connection and reduce latencies a lot.

https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Sebastian Dröge
7b4fe1e02f dashdemux: Mark every first buffer of moov, sidx, moof and mdat as DISCONT in keyframe-only mode
We need to mark every first buffer of a key unit as discont, and also every
first buffer of a moov and moof. This ensures that qtdemux takes note of our
buffer offsets for each of those buffers instead of keeping track of them
itself from the first buffer. We need offsets to be consistent between moof
and mdat

https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Sebastian Dröge
12c2415251 dashdemux: Only enable key-unit trick mode for video streams
https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Sebastian Dröge
9dd8789323 dashdemux: Only do keyframe-only playback if the corresponding seek flag is given
https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Sebastian Dröge
70bc183a52 dashdemux: Implement downloading of only sync samples
https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Sebastian Dröge
5b943135ac dashdemux: Store parsed moof and extract offsets of sync samples in it
https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Sebastian Dröge
fff814bbe5 dashdemux: Implement parsing of moof box
https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:54 +02:00
Sebastian Dröge
7d4f6ca0a9 dashdemux: Move code around to keep all sidx related functions together
https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:54 +02:00
Sebastian Dröge
c4ad30d6b4 dashdemux: Store box fourccs in the header at a central place
https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:54 +02:00
Sebastian Dröge
0b0a1a52d3 dashdemux: Implement parsing of ISOBMFF boxes
https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:54 +02:00
Sebastian Dröge
37ff8abe1c dash: Add helper for parsing box headers
https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:54 +02:00
xlazom00
00ac1c7eb4 x265enc: Enable aspect ratio
x265 encoder need aspectRatioIdc == X265_EXTENDED_SAR if we want to use
sarWidth/sarHeight

https://bugzilla.gnome.org/show_bug.cgi?id=769716
2016-08-11 10:19:56 +02:00
Josep Torra
ee5aa3d8b5 openjpegenc: use the corrent enumeration
Fixes the following error when building in osx.

error: implicit conversion from enumeration type
'GstJPEG2000Colorspace' to different enumeration type
'GstJPEG2000Sampling'
2016-08-08 13:10:12 +02:00
Tim-Philipp Müller
31fffdad10 fdkaac: actually build and dist 2016-08-07 20:53:30 +01:00
xlazom00
94d11f87c7 hls, timecode: fix linking
https://bugzilla.gnome.org//show_bug.cgi?id=769587
2016-08-07 16:45:25 +01:00
Sebastian Dröge
cb20432f9f fdkaac: Add FDK AAC based decoder element
Missing is support for error concealment, etc.
2016-08-07 15:42:15 +03:00
Sebastian Dröge
ff83eceb13 fdkaac: Add FDK AAC based encoder element
This currently only handles LC profile and exposes a bitrate property, but
handles up to 7.1 channels. See TODO list for missing features.
2016-08-07 15:41:04 +03:00
Sebastian Dröge
24501c6358 fdkaac: Initial plugin skeleton 2016-08-07 15:31:09 +03:00
Edward Hervey
aea2c13fc1 Revert "dashdemux: When doing SIDX seeking, return instead of overriding the timestamp with 0 from the MPD seeking method"
This reverts commit 947656cfd2.

This makes all dash seeking tests fail. Needs more testing to fully understand
what's going wrong. Revert ok'd by Sebastian
2016-08-05 09:16:58 +02:00
Jan Schmidt
f2dc791479 hls: Avoid potential NULL pointer dereference.
Fixes CID 1364753
2016-08-04 22:28:13 +10:00
Jan Schmidt
d78686f7d4 hls: Avoid coverity warning about access off the end of an array.
Fixes CID 1364755
2016-08-04 22:22:44 +10:00
Sebastian Dröge
947656cfd2 dashdemux: When doing SIDX seeking, return instead of overriding the timestamp with 0 from the MPD seeking method
We don't need to call the latter at all as we're definitely in this period and
the segment is selected via the SIDX.

This is especially important when doing SNAP seeks, as otherwise we would
always start from the beginning of the period (usually 0) again.
2016-08-04 15:10:02 +03:00
Luis de Bethencourt
2ed4135237 hls: m3u8: remove impossible condition
After the check in line 1,111,  media->uri can't be NULL. So the two checks
for GST_HLS_MEDIA_TYPE_CLOSED_CAPTIONS are the same, removing the redundant
one which goes to cc_unsupported.

CID 1364752
2016-08-04 11:17:56 +01:00
Jan Schmidt
35c82fee32 hlsdemux: Don't output pending data after error
If the last_ret status is not OK, skip output
of any pending PCR scan buffer, similarly to how
the pending decryption buffer is handled above.
2016-08-04 04:53:50 +10:00
Jan Schmidt
2df53e5a7d hlsdemux: Include config.h and add header in utils
In gsthlsdemux-util.c, include config.h before any
other headers, and add a copyright / license header.
2016-08-04 01:54:28 +10:00
Jan Schmidt
ebab5b17f4 hls: Fix compiler warning for possibly uninit variable 2016-08-03 23:51:14 +10:00
Michael Olbrich
89727ee9a3 hlsdemux: seek all streams 2016-08-03 23:49:54 +10:00
Michael Olbrich
decafb5f4c hlsdemux: simplify gst_hls_demux_seek()
Don't initialize current_sequence. It is always overwritten in the walk
loop.
2016-08-03 23:49:54 +10:00
Michael Olbrich
4704634f43 hlsdemux: don't download the last fragment when seeking beyond the end of the track
It's not used anyways.
2016-08-03 23:49:54 +10:00
Jan Schmidt
1d4eb71a05 hlsdemux: Add support for ID3 tag parsing
Parse start PTS out of the ID3 tags in
audio fragments. Informational only for now.
2016-08-03 23:49:54 +10:00
Jan Schmidt
8cf50dbc44 hlsdemux: Do some reading and dumping of PCRs
Read PCRs out of the MPEG-TS stream in a basic way
and (for now) just log them
2016-08-03 23:49:54 +10:00
Jan Schmidt
d9daa5d0b3 hlsdemux: Only use the primary stream for bitrate selection.
When playing alternate rendition auxilliary streams, ignore
them in bitrate measurement (for now).
2016-08-03 23:49:54 +10:00
Jan Schmidt
e91bddbcfd hlsdemux: Only select video and audio streams by default
Ignore subtitle streams for now, because the
different fragment duration causes problems
switching bitrates w/ decodebin2 group draining.
2016-08-03 23:49:54 +10:00
Jan Schmidt
216195b7b2 hlsdemux: Publish all media for alternate renditions.
Create an output stream for each media when alternate renditions
are present. Update the manifests for all those streams, and
make sure that typefinding is still done for files smaller than 2KB
such as small WebVTT files.
2016-08-03 23:49:54 +10:00
Jan Schmidt
f32c7aa88a hlsdemux: Adjust downstream buffer offsets
When fetching a byte-region from a server resource,
adjust the downstream buffer offsets so that downstream
doesn't know. This is because id3demux insists on the
first offset being 0. Later we might strip ID3 headers
entirely and this will be unneeded.
2016-08-03 23:49:54 +10:00
Jan Schmidt
f3397e0d54 hlsdemux: Choose the default variant and track it when updating
Modify playlist updating to track information across updates
better, although still hackish.

When connection_speed == 0, choose the default variant
not the first one in the (now sorted) variant list, as that
will have the lowest bitrate.
2016-08-03 23:49:54 +10:00
Tim-Philipp Müller
4df6f1ee93 hlsdemux: move variant list handling over to new master playlist code
Adapt hlsdemux for the m3u8 playlist changes.
2016-08-03 23:49:54 +10:00
Tim-Philipp Müller
f0fcf1d718 hls: m3u8: Rework m3u8 parsing and storage.
Make M3U8 and GstM3U8MediaFile refcounted. The contents
of it and GstM3U8MediaFile are pretty much immutable
already, but if we make it refcounted we can just
return a ref to the media file from _get_next_fragment()
instead of copying over all fields one-by-one, and then
copying them all into the adaptive stream structure fields again.

Move state from client into m3u8 structure.  This will
be useful later when we'll have multiple media playlists
being streamed at the same time, as will be the case with
alternative renditions.

This has the downside that we need to copy over some
state when we switch between variant streams.

The GstM3U8Client structure is gone, and main/current
lists are not directly in hlsdemux. hlsdemux had as
many CLIENT_LOCK/UNLOCK as the m3u8 code anyway...
2016-08-03 23:49:54 +10:00
Haihua Hu
0b23bb5a59 qt: implement qmlglsrc for qml view grab
[Matthew Waters]: gst-indent sources

https://bugzilla.gnome.org/show_bug.cgi?id=768160
2016-08-03 22:11:11 +10:00
Alex Ashley
d9bcf4dbd9 dashdemux: include segment duration when calculating seek range
The gst_dash_demux_get_live_seek_range () function returns a stop value
that is beyond the available range. The functions
gst_mpd_client_check_time_position() and
gst_mpd_client_get_next_segment_availability_end_time() in
gstmpdparser.c include the segment duration when checking if a segment
is available. The gst_dash_demux_get_live_seek_range() function
in gstdashdemux.c ignores the segment duration.

According to the DASH specification, if maxSegmentDuration is not present,
then the maximum Segment duration is the maximum duration of any Segment
documented in the MPD.

https://bugzilla.gnome.org/show_bug.cgi?id=753751
2016-08-02 12:52:34 +01:00
Haihua Hu
87a86b78b5 glimagesink: Fix horizontal/vertical flip matrizes
They were swapped.

https://bugzilla.gnome.org/show_bug.cgi?id=769371
2016-08-02 14:51:33 +03:00
Sebastian Dröge
a7adb5cb60 dashdemux: Skip audio streams if TRICKMODE_NO_AUDIO is given in the seek event
We just don't expose pads for audio streams, or even download them.
2016-07-28 20:44:29 +03:00
Sebastian Dröge
269a8c5fdf dashdemux: Reset number of subtitle streams counter on reset() too
Otherwise we will continue increasing forever the number of subtitle streams
when reusing the element for another DASH manifest.
2016-07-28 11:17:15 +03:00
Matthew Waters
dba5d3a37a caopengllayersink: remove unused to_quit variable
It was always 0 and never set to anything meaningful.
2016-07-26 16:02:11 +10:00
Matthew Waters
5da138d1ae glfilter: rewrite subclasses for filter_texture() occuring on GL thread
There's no need for the jump to an extra thread in most cases, especially
when relying solely on a shader to render.  We can use the provided
render_to_target() functions to simplify filter writing.
2016-07-26 14:07:24 +10:00
Matthew Waters
06b4b52a20 glcontext: remove not thread-safe get/set_error()
Use GError's instead if necessary.
2016-07-26 14:07:24 +10:00
Matthew Waters
518e8a3fd2 glframebuffer: rewrite for a more consistent API
Facilities are given to create fbo's and attach GL memory (renderbuffers
or textures).  It also keeps track of the renderable size for use with
effective use with glViewport().
2016-07-26 14:07:24 +10:00
Matthew Waters
aa109016a3 gl: use GLMemory for accessing textures everywhere
This simplifies and consolidates a lot of duplicated code creating
and modifying textures.
2016-07-26 14:07:24 +10:00
Matthew Waters
f10a67ec44 glfilter: rename draw_texture to draw_fullscreen_quad
And remove unused arguments.
2016-07-26 14:07:24 +10:00
Matthew Waters
e9df4f0890 gleffects: fix xray to use the correct function
Instead of duplicating the sin effect
2016-07-26 14:07:24 +10:00
Tim-Philipp Müller
9f2dfaaa7a openh264: fix up for API changes in v1.6.0
Update for API changes in v1.6.0.

https://bugzilla.gnome.org/show_bug.cgi?id=768771
2016-07-18 18:36:42 +01:00
Jan Schmidt
41644cfa70 hlsdemux: Fix clearing of decryption state
Don't clear decryption state immediately after
initialising it in the start_fragment. Don't clear
the state of all streams when we want to only clear
the current stream.

https://bugzilla.gnome.org//show_bug.cgi?id=768757
2016-07-19 02:14:17 +10:00
Tim-Philipp Müller
6697feae5f hlsdemux: make decryption key handling per-stream
Add demuxer instance-wide decryption key cache. The current and
last key url are per-stream, so make a shared cache. Move the
decryption handling into the stream object, and use the shared
cache for the keys.
2016-07-15 14:33:23 +10:00
Jan Schmidt
463f48c148 hlsdemux: add hlsdemux-specific AdaptiveDemuxStream subclass
Prepare hlsdemux for more than one single stream. Currently hlsdemux
assumes there'll only ever be one stream and most of the stream-specific
state is actually in the hlsdemux structure. Add a stream subclass
instead and move some stream-specific members there instead.
2016-07-15 14:33:23 +10:00
Stefan Sauer
ea443a3fcc lv2: make it build with older lilv
Implementing the removal of presets is unfortunately not feasibla with
versions < 0.22.
Fixes #768595
2016-07-14 19:40:57 +02:00
Nicolas Dufresne
74c0d5fdd2 webrtcdsp: Add delay-agnostic property
In this mode, we let WebRTC Audio Processing figure-out the delay. This
is useful when the latency reported by the stack cannot be trusted. Note
that in this mode, the leaking of echo during packet lost is much worst.
It is recommanded to use PLC (e.g. spanplc, or opus built-in plc).

In this mode, we don't do any synchronization. Instead, we simply process all
the available reverse stream data as it comes.
2016-07-13 23:17:21 -04:00
Stefan Sauer
8330f7aa26 lv2: planning update 2016-07-10 20:44:19 +02:00
Stefan Sauer
13d963fbf0 lv2: keep working with older versions
Provide a fallback impl. for the only new function we were using from 0.22.
Fixes #768595
2016-07-10 20:44:19 +02:00
Luis de Bethencourt
87a133aad2 musepackdeck: unsigned can't be less than zero
Less-than-zero comparison of an unsigned value, guint64, is never true

CID 1363334
2016-07-06 12:19:32 +01:00
Nicolas Dufresne
d992f49cb7 webrtcdsp: Workaround GCC/MingW 4.7 limitations
It refuses to initialize a classes using brackets notation. This is
to allow building using our mingw version.
2016-07-05 09:23:11 -04:00
Stefan Sauer
adf2092b3d lv2: add support for saving presets
Plugns supporting the state interface can now save their presets under '.lv2'.
2016-07-04 21:18:28 +02:00
Stefan Sauer
e9a2c4f1e1 lv2: support for loading presets
Detect if plugins can do presets. Lazily read a list of presets and add support
for loading.
2016-07-04 21:18:28 +02:00
Wim Taymans
6b511fdcd1 musepackdec: port to 1.0 2016-07-04 16:54:53 +02:00
Tim-Philipp Müller
013eaee06b qt: fix build some more when QPA is not available
Compiler would complain about include directory that didn't
exist because QPA_INCLUDE_PATH gets subst-ed regardless
(and if it didn't we'd have just an empty -I argument).

https://bugzilla.gnome.org/show_bug.cgi?id=767553
2016-07-01 19:29:49 +01:00
Sebastian Dröge
91e398ddd6 dashdemux: Implement SIDX tracking based on buffer offset
This simplifies the code but also removes a bug with tracking of the remaining
size for the initial subfragment: we were not considering the size between the
index and the start of the first moof here.

https://bugzilla.gnome.org/show_bug.cgi?id=764684
2016-07-01 14:10:31 +02:00
Sebastian Dröge
9374643089 dashdemux: Properly keep track of current offset
GstAdapter does not guarantee to pass through all the offsets, we have to keep
track of it ourselves.

https://bugzilla.gnome.org/show_bug.cgi?id=764684
2016-07-01 14:10:31 +02:00
Sebastian Dröge
8344854c4c hlsdemux: Properly keep track of current offset
GstAdapter does not guarantee to pass through all the offsets, we have to keep
track of it ourselves.

https://bugzilla.gnome.org/show_bug.cgi?id=764684
2016-07-01 14:10:31 +02:00
Sebastian Dröge
3469104a47 hlsdemux: Clear pending data when needed
When switching fragments we don't want to keep any data around from the last
one, and also forget about all data when doing flushing seeks or selecting new
bitrates.

https://bugzilla.gnome.org/show_bug.cgi?id=764684
2016-07-01 14:10:31 +02:00
Sebastian Dröge
ca9f62e1d0 adaptivedemux: Get rid of internal stream adapter and let subclasses handle this directly
This allows subclasses to have more control and especially ensure that they
push data downstream with the correct offsets.

https://bugzilla.gnome.org/show_bug.cgi?id=764684
2016-07-01 14:10:31 +02:00
Sebastian Dröge
659032b3d9 openh264enc: Set frame timestamps before sending to the encoder 2016-06-30 23:38:26 +02:00
Sebastian Dröge
27c0a9306e openh264enc: Fix initial time-per-frame calculation 2016-06-30 23:35:33 +02:00
Sebastian Dröge
593ed6f3d7 openh264enc: Remove meaningless drop bitrate handling
This doesn't even have a property.
2016-06-30 23:33:38 +02:00
Sebastian Dröge
1e242edeb4 openh264enc: Expose maximum bitrate setting 2016-06-30 23:30:13 +02:00
Sebastian Dröge
c8666c58e8 openh264enc: Actually hook up the rate-control property 2016-06-30 23:30:13 +02:00
Sebastian Dröge
f5f437b707 openh264enc: Use a constant SPS/PPS ID no matter if openh264 older or newer than 1.4 is used 2016-06-30 23:30:13 +02:00
Sebastian Dröge
4cba0d5fab openh264enc: Make slice settings more explicit and don't set any number if not a fixed number of slices is selected 2016-06-30 23:30:13 +02:00
Nicolas Dufresne
71c9cdeff4 webrtcdsp: Rewrite echo data synchronization
The previous code would run out of sync if there was packet lost
or clock skews. When that happened, the echo cancellation feature would
completely stop working. As this is crucial for audio calls, this patch
re-implement synchronization completely.

Instead of letting it drift until next discont, we now synchronize
against the record data at every iteration. This way we simply never
let the stream drift for longer then 10ms period. We also shorter the
delay by using the latency up the probe (basically excluding the sink
latency. This is a decent delay to avoid starving in the probe queue.

https://bugzilla.gnome.org/show_bug.cgi?id=768009
2016-06-30 09:27:03 -04:00
Nicolas Dufresne
e35e23b734 webrtcdsp: We now fail if there is no echo probe
When echo cancel is enabled, we now fail the pipeline if there is
not echo probe. For this reason there is no need to check if probe
pointer is set anymore.
2016-06-30 09:27:03 -04:00
Sebastian Dröge
e7f8c62d42 openh264enc: Remove broken byte-stream to avc conversion and just output byte-stream as generated by the encoder
The byte-stream to avc conversion did not consider NAL sizes bigger than 2^16,
multiple layers, multiple NALs per layer, and various other things. This
caused corrupted streams in higher bitrates and other circumstances.

Let's just forward byte-stream as generated by the encoder and let h264parse
handle conversion to avc if needed. That way we only have to keep around one
version of the conversion and don't have to fix it in multiple places.
2016-06-30 10:37:08 +02:00
Matthew Waters
989200820d glmemory: add the texture type to allocate to parameters
Rather than assuming something.  e.g. zerocopy on iOS with GLES3 requires
the use of Luminance/Luminance Alpha formats and does not work with
Red/RG textures.
2016-06-29 18:04:28 +10:00
Haihua Hu
d60b071474 qmlglsink: Fix build error when don't have QPA installed.
Check header file existance and wrap the header file include
in the necessary #ifdef to avoid build error.

https://bugzilla.gnome.org/show_bug.cgi?id=767553
2016-06-27 22:44:56 +10:00
Tim-Philipp Müller
ab2281be0f openjpeg: fix more broken includes 2016-06-24 09:41:18 +01:00
Aaron Boxer
e7e6a3579d jpeg2000parse: use enums for colorspace and sampling, rather than strings
Also, move gstjpeg2000sampling to codecparsers project

https://bugzilla.gnome.org/show_bug.cgi?id=767908
2016-06-24 11:23:31 +03:00
Nicolas Dufresne
c551a853b3 webrtcdsp: Offset timestamp with duration
The saved timestamp is used to compute the delay of the probe data.
As it's used at the following incoming buffer, it needs to be offset
with the duration of the buffer to represent the end position. Also,
properly initialize the saved timestamp and protect against TIME_NONE.
2016-06-23 08:04:18 -04:00
Nicolas Dufresne
86aa3b5f9c webrtcdsp: Synchronize with delays
Until now, we were synchronizing both DSP and Probe adapter by
waiting and clipping the probe adapter data. This increases the CPU
usage, can cause copies if the audio is not 10ms aligned and the worst
is that it prevents the processing from compensating for inaccurate
latency. This is also a step forward toward supporting playback
filters.
2016-06-22 22:34:25 -04:00
Nicolas Dufresne
fb8662eb5c webrtdsp: Remove restriction on channels number
Unlike 0.1, in 0.2 the reverse stream can have different number of
channels. Remove the check that restrict it.
2016-06-22 22:34:25 -04:00
Nicolas Dufresne
89b193c0a9 webrtcdsp: Style fix 2016-06-22 22:34:25 -04:00
Matthew Waters
ba69afdc47 qmlglsink: add win32 support
The current state of c++ ABI's on Window's and Gst's/Qt's conflicting
mingw builds means that we cannot use mingw for building the qt plugin.

Instead, a qmake .pro file is provided that is expected to be used with the
msvc binaries provided by Qt like so:

(with the PATH environment variable containing the path to the qt biniaries
and PKG_CONFIG_PATH containing the path to GStreamer modules)
cd /path/to/sources/gst-plugins-bad/ext/qt
qmake -tp vc

Then open the resulting VS project and build the library.  Then

cp debug/libgstqtsink.dll /path/to/prefix/lib/gstreamer-1.0/libgstqtsink.cll

https://bugzilla.gnome.org/show_bug.cgi?id=761260
2016-06-22 14:26:05 +10:00
Nicolas Dufresne
398f7059fc webrtcdsp: Add WebRTC Audio Processing support
This DSP library can be used to enhance voice signal for real time
communication call. In implements multiple filters like noise reduction,
high pass filter, echo cancellation, automatic gain control, etc.

The webrtcdsp element can be used along, or with the help of the
webrtcechoprobe if echo cancellation is enabled. The echo probe should
be placed as close as possible to the audio sink, while the DSP is
generally place close to the audio capture. For local testing, one can
use an echo loop pipeline like the following:

  autoaudiosrc ! webrtcdsp ! webrtcechoprobe ! autoaudiosink

This pipeline should produce a single echo rather then repeated echo.
Those elements works if they are placed in the same top level pipeline.

https://bugzilla.gnome.org/show_bug.cgi?id=767800
2016-06-21 13:46:00 -04:00
Aaron Boxer
74dcb59025 openjpegdec: use sampling field to determine RGB channel
https://bugzilla.gnome.org/show_bug.cgi?id=767402
2016-06-21 11:43:04 +03:00
Joan Pau Beltran
dc762166f3 dc1394src: check for disabled transmission in _stop_cam
For symetry with _start_cam, check that the transmission
is effectively disabled in _stop_cam.

https://bugzilla.gnome.org/show_bug.cgi?id=763026
2016-06-20 21:46:23 +01:00
Sergey Borovkov
180405714c qml: Enable qmlglsink for eglfs
https://bugzilla.gnome.org/show_bug.cgi?id=763044
2016-06-16 01:49:16 +10:00
Matthew Waters
14c6fece09 qmlglsink: propagate GL context creation failure upwards
Otherwise an application cannot know if the qmlglsink will be displaying frames
incorrectly/at all.
2016-06-16 01:49:16 +10:00
Matthew Waters
ef508b8461 qmlglsink: also allow wayland-egl as a platform name 2016-06-16 01:49:16 +10:00
Haihua Hu
3903406304 qmlglsink: Add Wayland support
Don't use gstgldisplay to get wayland display. Should use QPA on wayland
to get wayland display for QT.

https://bugzilla.gnome.org/show_bug.cgi?id=767553
2016-06-16 01:49:16 +10:00
Stefan Sauer
976cb234bc ladspa: simplify registry cache structure creation
Create and fill structure in one go.
2016-06-15 12:14:30 +02:00
Haihua Hu
5e8a650130 gleffects: fix little rectangle that appears at the center of squeeze and tunnel effects
These two shader will calculate the vector length and use it as denominator.
But length could be zero which will cause undefine behaviour. Add protection for
this condition

https://bugzilla.gnome.org/show_bug.cgi?id=767635
2016-06-15 19:18:15 +10:00
Matthew Waters
4010faf4a1 gldeinterlace: remove dead code accessing filter->in_tex_id
It's not set by anyone or anything and gldeinterlace is the only user of it now.
2016-06-15 15:08:39 +10:00
Aleix Conchillo Flaqué
15a3b0f6ce srtpenc: remove get-rollover-counter signal and add stats property
We remove get-rollover-counter signal in favor of the "stats"
property. The "stats" property is a GstStructure with caps
application/x-srtp-encoder-stats that contains an array of
structures with caps application/x-srtp-stream.
Each stream structure contains "ssrc" and "roc" fields.

https://bugzilla.gnome.org/show_bug.cgi?id=733265
2016-06-13 14:55:25 +02:00
Sebastian Rasmussen
c7e4217121 curlsmtpsink: Lock and don't send final boundary upon error
Previously GstCurlSmtpSink could cause the pipeline thread to end up
waiting for a stopped thread to perform work.

The scenario was that the sink could be rendering a buffer and waiting
for the curl transfer thread to have sent the data. As soon as the
transfer thread has copied all data to curl's data buffer in
gst_curl_base_sink_transfer_read_cb() then the render call would stop
waiting and return GST_FLOW_OK. While this takes place the transfer
thread may suffer from an error e.g. due gst_poll_wait() timing out.
This causes the transfer thread to record the error, claim (it is not
really true since there was an error) that the data has been sent and
that a response has been received by trying to signal the pipeline
thread (but this has already stopped waiting). Finally the transfer
thread stops itself. A short while later the pipeline thread may attempt
to push an EOS event into GstCurlSmtpSink. Since there is no check in
gst_curl_smtp_sink_event() to check if the sink has suffered from any
error it may attempt to add a final boundary and ask the, now deceased,
transfer thread to transfer the new data. Next the sink element would
have waited for the transfer to complete (using a different mechanism
than normal transfers through GstCurlBaseSink). In this case there was
an error check to avoid waiting if an error had already been seen.
Finally GstCurlSmtpSink would chain up to GstCurlBaseSink which would
then block waiting for a response (normally this would be prevented by
the transfer thread suffering the error claiming that it had been
received, but GstCurlSmtpSink clobbered this flag after the fact).

Now GstCurlSmtpSink avoids this by locking over the entire event handing
(preventing simultaneous changes to flags by the two threads) and also
by avoiding to initiate transfer of final boundary if an error has
already been seen.

Also add GST_FIXME() for remaining similar issue where the pipeline
thread may block indefinitely waiting for transfer thread to transfer
data but the transfer thread errors out and fails to notify the pipeline
thread that the transfer failed.

https://bugzilla.gnome.org/show_bug.cgi?id=767501
2016-06-11 11:25:13 +01:00
Heinrich Fink
3107f5df76 facedetect: Fix compiler warning with clang 3.8
Use namespace only after it was actually defined by a header.

gstfacedetect.cpp:79:17: error: using directive refers to implicitly-defined namespace 'std' [-Werror]
using namespace std;
                ^
2016-06-10 11:33:52 +03:00
Tim-Philipp Müller
faf6e5a1eb dc1394src: minor clean-up
We always call _parse_caps() with non-NULL out vars.
2016-06-09 22:01:45 +01:00
Tim-Philipp Müller
09737d1874 dc1394src: fix some more c99-isms 2016-06-09 22:01:13 +01:00
Joan Pau Beltran
3355f5b3ab dc1394src: prefix and file names according to Gstreamer conventions
Replace the type and function prefix to follow the conventions:

  - Use `GST_TYPE_DC1394_SRC` instead of `GST_TYPE_DC1394`.

  - Use `GstDC1394Src` and `GstDC1394SrcClass` instead of
    `GstDc1394` and `GstDc1394Class`.

  - Use `gst_dc1394_src` instead of `gst_dc1394`.

https://bugzilla.gnome.org/show_bug.cgi?id=763026
2016-06-09 21:47:58 +01:00
Joan Pau Beltran
e28b123608 dc1394src: port to 1.X
The dc1394src is a PushSrc element for IIDC cameras based on libdc1394.
The implementation from the 0.x series is deffective:
caps negotiation does not work, and some video formats
provided by the camera are not supported.

Refactor the code to port it to 1.X and enhance the support
for the full set of video options of IIDC cameras:

  - The IIDC specification includes a set of camera video modes
    (video format, frame size, and frame rates).
    They do not map perfectly to Gstreamer formats, but those that
    do not match are very rare (if used at all by any camera).
    In addition, although the specification includes a raw format,
    some cameras use mono video formats to capture in Bayer format.
    Map corresponding video modes to Gstreamer formats in capabilities,
    allowing both gray raw and Bayer video formats for mono video modes.

  - The specification includes scalable video modes (Format7),
    where the frame size and rate can be set to arbitrary values
    (within the limits of the camera and the bus transport).
    Allow the use of such mode, using the frame size and rate
    from the negotiatied caps, and set the camera frame rate
    adjusting the packet size as in:
    <http://damien.douxchamps.net/ieee1394/libdc1394/faq/#How_do_I_set_the_frame_rate>

    The scalable modes also allow for a custom ROI offset.
    Support for it can be easily added later using properties.

  - Camera operation using libdc1394 is as follows:

      1. Enumerate cameras on the system and open the camera
         identified the enumeration index or by a GUID (64bit hex code).

      2. Query the video formats supported by the camera.

      3. Configure the camera for the desired video format.

      4. Setup the capture resources for the configured video format
         and start the camera transmission.

      5. Capture frames from the camera and release them when not used.

      6. Stop the camera transmission and clear the capture resources.

      7. Close the camera freeing its resources.

    Do steps 2 and 3 when getting and setting the caps respectively.
    Ideally 4 and 6 would be done when going from PAUSED to PLAYING
    and viceversa, but since caps might not be set yet, the video mode
    is not properly configured leaving the camera in a broken state.
    Hence, setup capture and start transmission in the set caps method,
    and consequently clear the capture and stop the transmission
    when going from PAUSED to READY (instead of PLAYING to PAUSED).
    Symmetrycally, open the camera when going from READY to PAUSED,
    allowing to probe the camera caps in the negotiation stage.
    Implement that using the `start` and `stop` methods of `GstBaseSrc`,
    instead of the `change-state` method of `GstElement`.
    Stop the camera before setting new caps and restarting it again
    to handle caps reconfiguration while in PLAYING (it has no effect
    if the camera is not started).

  - Create buffers copying the bytes of the captured frames.
    Alternatively, the buffers could just wrap the bytes of the frames,
    releasing the frame in the buffer's destroy notify function,
    if all buffers were destroyed before going from PLAYING to PAUSED.

  - No timestamp nor offset is set when creating buffers.
    Timestamping is delegated to the parent class BaseSrc,
    setting `gst_base_src_set_live` TRUE, `gst_base_src_set_format`
    with GST_FORMAT_TIME and `gst_base_src_set_do_timestamp`.
    Captured frames have a timestamp field with the system time
    at the completion of the transmission of the frame,
    but it is not sure that this comes from a monotonic clock,
    and it seems to be left NULL in Windows.

  - Use GUID and unit properties to select the camera to operate on.
    The camera number used in version 0.X does not uniquely identify
    the device (it depends on the set of cameras currently detected).
    Since the GUID is 64bit identifier (same as MAC address),
    handle it with a string property with its hexadecimal representation.
    For practicality, operate on the first camera available if the GUID
    is null (default) and match any camera unit number if unit is -1.
    Alternatively, the GUID could be handed with an unsigned 64 bit
    integer type property, using `0xffffffffffffffff` as default value
    to select the first camera available (it is not a valid GUID value).

  - Keep name `GstDc1394` and prefix `gst_dc1394` as in version 0.X,
    although `GstDC1394Src` and `gst_dc1394_src` are more descriptive.

  - Adjust build files to reenable the compilation of the plugin.

    Remove dc1394 from the list of unported plugins in configure.ac.

    Add the missing flags and libraries to Makefile.
    Use `$()` for variable substitution, as many plugins do,
    although other plugins use `@@` instead.

https://bugzilla.gnome.org/show_bug.cgi?id=763026
2016-06-09 21:47:58 +01:00
Nicolas Dufresne
d33352edb5 webpdec: Wait for segment event before checking it
The heuristic to choose between packetise or not was changed to use the
segment format. The problem is that this change is reading the segment
during the caps event handling. The segment event will only be sent
after. That prevented the decoder to go in packetize mode, and avoid
useless parsing.

https://bugzilla.gnome.org/show_bug.cgi?id=736252
2016-06-07 21:10:04 -04:00
Tim-Philipp Müller
4c874797b2 openjpeg: fix builddir != srcdir build, and distcheck 2016-06-07 14:15:41 +01:00
Aaron Boxer
eebb65e934 openjpeg: set sampling in the caps
https://bugzilla.gnome.org/show_bug.cgi?id=766236
2016-06-07 15:24:32 +03:00
Havard Graff
7ecfd7e24d gltestsrc: gltestsrc.h already defines GstGLTestSrc
And redefinition is not allowed.

https://bugzilla.gnome.org/show_bug.cgi?id=766973
2016-05-28 22:20:51 +01:00
Tim-Philipp Müller
7d46d67c59 smoothstreaming: update fps calculation for h264 codec parser API changes
Use new gst_h264_video_calculate_framerate() API instead of fps_n/fps_d
fields in SPS struct which are to be removed.

Apparently H264 content in MSS is always non-interlaced/progressive,
so we can just pass 0 for field_pic_flag and don't need to parse any
slice headers first if there's no external signalling. But even if
that's not the case the new code is not worse than the existing code.

https://msdn.microsoft.com/en-us/library/cc189080%28VS.95%29.aspx

https://bugzilla.gnome.org/show_bug.cgi?id=723352
2016-05-28 10:29:20 +01:00
Nicolas Dufresne
203e893e10 caopengllayersink: Don't cache buffer pool
Pools cannot be used by the two elements at the same time.

https://bugzilla.gnome.org/show_bug.cgi?id=766611
2016-05-25 13:35:59 -04:00
Haihua Hu
a5cb746983 glimagesink: support video rotation using transform matrix
Add "rotate-method" to glimagesink and apply transform matrix
to vertex coordinate to control rotation.

https://bugzilla.gnome.org/show_bug.cgi?id=765795
2016-05-25 18:28:20 +10:00
Matthew Waters
061a157ef5 glvideomixer: fix race retrieving the GL context from the display
_get_gl_context() can be called concurrently from either propose_allocation() or
decide_allocation().  If it so happens that this happens at the same time,
the check for whether we already had a GL context was outside the lock.  Inside
the lock and loop, the first thing that happens is that we unref the current GL
context (if valid) as if there was a conflict adding it to the display.  If the
timing was unlucky, subsequent use of the GL context would be referencing an
already unreffed GL context object resulting in a critical:

g_object_ref: assertion 'object->ref_count > 0' failed

https://bugzilla.gnome.org/show_bug.cgi?id=766703
2016-05-25 18:28:20 +10:00
Arjen Veenhuizen
113d5c143c gltransformation: make the pivot-z property READWRITE
Instead of just being READABLE.

https://bugzilla.gnome.org/show_bug.cgi?id=766818
2016-05-24 23:30:09 +10:00
Guillaume Desmottes
dff46e3239 gltestsrc: fix src_impl leak
https://bugzilla.gnome.org/show_bug.cgi?id=766661
2016-05-24 21:30:19 +10:00
Aaron Boxer
e76705dbde openjpegenc: enable MCT for RGB video
https://bugzilla.gnome.org/show_bug.cgi?id=766732
2016-05-21 09:44:22 +03:00
Guillaume Desmottes
fe7dd131f5 gltestsrc: fix shaders ref counting
The gltestsrc element uses two shaders: color_shader and snow_shader.
Those are alternatively assigned to the SrcShader->shader pointer and
their reference was transferred to it. Only the SrcShader->shader was
unreffed (in _src_shader_deinit()) so only one shader was properly
freed, the other one was leaked.

Fixed this by giving an extra ref to SrcShader->shader and unreffing the
2 shaders in _src_smpte_free().

https://bugzilla.gnome.org/show_bug.cgi?id=766661
2016-05-20 17:09:33 +02:00
Guillaume Desmottes
2572e3d25c glmosaic: fix shader leak
gst_gl_mosaic_init_shader() is called twice with test_glmosaic so the
first shader was leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=766661
2016-05-20 17:09:25 +02:00
Stefan Sauer
a1bf2e17cc lv2: support CVPorts
CVPorts are ports that take a buffer. For now we just fill the buffers with
the control value.
2016-05-18 21:33:43 -07:00
Stefan Sauer
c66d3906a4 lv2: use _OBJECT log variants and lower log level when processing 2016-05-18 21:33:43 -07:00
Stefan Sauer
b483717322 lv2: cleanup the predicates
Use the defines from the headers and get rid of our own namespace defines.
Replace the 'role' prop with 'designation'.
2016-05-15 23:31:33 -07:00
Stefan Sauer
63afc05c7f lv2: tweak enum logging
Log more details when we find a bad scalepoint and downgrade the logging of the
good enum valzes.
2016-05-15 23:27:22 -07:00
Stefan Sauer
04a957c9b8 lv2: generate enums from scalepoints
Plugins can provide a set of named values for a control port. Ideally only those
values are set for the property. Check if all scalepoints are integers and if so
generate an enum type.
2016-05-15 22:05:43 -07:00
Stefan Sauer
5aee046876 lv2: reduce log spam for property bounds
Only complain about bad bounds, if the plugin actually set those. Otherwise
silently adjust our defaults.
2016-05-15 19:45:26 -07:00
Stefan Sauer
e2184b2fc4 lv2: remove lv2_symbol_pred
We're not actually using it.
2016-05-15 17:58:51 -07:00
Stefan Sauer
78572e276d lv2: remove leftover FIME 2016-05-15 17:54:38 -07:00
Stefan Sauer
e5ec6f102e ladspa: use _OBJECT log variants for plugin_init
Also trim leading whitespae.
2016-05-15 14:47:22 -07:00
Stefan Sauer
1c83ce7a96 lv2: add registry caching
Use the plugin_cache extra data to avoid introspecting over and over again.
2016-05-15 14:47:22 -07:00
Stefan Sauer
da0a3d95e7 lv2: implemnt the map-extension
This is the most used one and at the same time easy to implement sing QGQuark.
2016-05-15 14:47:22 -07:00
Stefan Sauer
3101fe78f9 lvs: add require_feature checks
Plugins can report what host features they need. Since we start to implement host feature
check which plugins we can no suuport.
2016-05-15 14:47:22 -07:00
Edward Hervey
a76ad40c6c rtmpsrc: Remove dead assignments
* read is only used within the while loop
* todo and bsize only need to be assigned once
2016-05-15 14:18:23 +02:00
Matthew Waters
044ed50190 opencv/facedetect: fix the build with opencv 3.1.0
- add using namespace std; for std::vector
    - use the cpp header imgproc.hpp file for the cv::ellipse function instead of
      the C header
    - Mat no longer takes IplImage in it's constructors, use the cvarrtomat()
      function instead.

    Fixes a couple of build errors:

    gstfacedetect.cpp:140:30: error: ‘vector’ does not name a type
     structure_and_message (const vector < Rect > &rectangles, const gchar * name,
                                  ^~~~~~
    gstfacedetect.cpp:140:37: error: expected ‘,’ or ‘...’ before ‘<’ token
     structure_and_message (const vector < Rect > &rectangles, const gchar * name,
                                         ^
    gstfacedetect.cpp: In function ‘void structure_and_message(int)’:
    gstfacedetect.cpp:143:13: error: ‘rectangles’ was not declared in this scope
       Rect sr = rectangles[0];

    [...]

    gstfacedetect.cpp: In function ‘void
    gst_face_detect_run_detector(GstFaceDetect*, cv::CascadeClassifier*, gint, gint,
    cv::Rect, std::vector<cv::Rect_<int> >&)’:
    gstfacedetect.cpp:562:31: error: no matching function for call to
    ‘cv::Mat::Mat(IplImage*&, cv::Rect&)’
         Mat roi (filter->cvGray, r);

    [...]

    gstfacedetect.cpp: In function ‘GstFlowReturn
    gst_face_detect_transform_ip(GstOpencvVideoFilter*, GstBuffer*, IplImage*)’:
    gstfacedetect.cpp:594:44: error: no matching function for call to
    ‘cv::Mat::Mat(cv::Mat, bool)’
         Mat mtxOrg (cv::cvarrToMat (img), false);

    [...]

    gstfacedetect.cpp:734:79: error: ‘ellipse’ was not declared in this scope
             ellipse (mtxOrg, center, axes, 0, 0, 360, Scalar (cr, cg, cb), 3, 8,
    0);
2016-05-15 12:29:07 +01:00
Matthew Waters
7507b14dcd gltransformation: use the affine transformation meta if available downstream
We can avoid a render pass if downstream supports the affine transformation meta
and increase the performance of some pipelines involving gltransformation.

Implemented by checking for the affine transformation in the allocation query
from downstream and combining our matrix with that of upstream's (or creating
our own).
2016-05-14 16:35:29 +03:00
Matthew Waters
799efcb133 gl: take the affine transformation in NDC
Provide a function to get the affine matrix in the meta in terms of NDC
coordinates and use as a standard opengl matrix.

Also advertise support for the affine transformation meta in the allocation
query.
2016-05-14 16:35:29 +03:00
Matthew Waters
90da62bc25 glbasemixer: actually attempt to propose an allocation upstream
We were always failing the allocation query as a flag was never being set to
signal a successful negotiation.  Fix by setting the required flag on a
successful caps event from upstream.
2016-05-14 16:35:29 +03:00
Stefan Sauer
dfa6fb3c86 lv2: add a source plugin
Update the readme with a working example and list what feature are supported.
2016-05-13 11:54:08 -07:00
Stefan Sauer
8a6c459f70 lv2: add support for host features
Implement a log handler as the first one.
2016-05-13 11:54:08 -07:00
Matthew Waters
864a0f453d vkswapper: check the error of the presentation for out of date
allows us to resize the swapchain correctly.
2016-05-13 15:24:35 +03:00
Stefan Sauer
d7b7d9deb7 lv2: skip plugins that need host features
We haven't implemented this yet and those plugin would fail when we instantiate
them.
2016-05-10 22:04:48 -07:00
Stefan Sauer
f35d4d43ea lv2: add classification from metadata
This helps apps to structure the element collection.
2016-05-10 21:11:41 -07:00
Stefan Sauer
a05f8ddb5d lv2: extract helper code into lv2utils
This is a preparaton for adding lv2-sources and -sinks.
2016-05-10 14:21:35 -07:00
Stefan Sauer
38fd4f6148 ladspa: code cleanup
Whitespace cleanup and unify codeing style.
2016-05-10 14:21:35 -07:00
Stefan Sauer
78d116a64d ladspa: simplify the code
Remove a local var and just use the parameter value.
2016-05-10 14:21:35 -07:00
Nirbheek Chauhan
1536f30cc2 openjpeg: Port to 2.1 and require a pkg-config file for 2.0 and 2.1
The port was trivial, and according to the NEWS file nothing else has changed,
but it is possible that other API was changed without proper notification.

OpenJPEG upstream has shipped a pkg-config file for the past 4 years, and all
distros should be shipping it by now.

https://bugzilla.gnome.org/show_bug.cgi?id=766213
2016-05-10 14:03:33 +03:00
Matthew Waters
4810c7de70 vulkan/build: add the build directory to the list of includes
Fixes out of tree builds from tarballs.

https://bugzilla.gnome.org/show_bug.cgi?id=764758
2016-05-05 23:54:16 +10:00
Matthew Waters
77f6e253e1 vkswapper: fix up display synchronization
Use the semaphores in the correct place, before and after the submission for
acquiring and presenting the swapchain buffer.

Waiting on the fence that only signals the command buffer completion rather than
the completion of the presentation is racy with the destruction of the vulkan
buffers associated with that image.  Wait on the device to be idle instead after
presenting.
2016-05-05 23:54:16 +10:00
Matthew Waters
267588fb5e vkswapper: use gst_video_sink_center_rect for positioning the video
Don't try to reimplement it badly.
2016-05-05 23:54:16 +10:00
Matthew Waters
5498e97a11 gl/egl: replace gsteglimagememory with an EGLImage wrapper
That can be passed to GstGLMemoryEGL.

This also ports the dmabuf uploader to GstEGLImage and GstGLMemoryEGL.
2016-05-04 13:31:48 +10:00
Haihua Hu
0cfb0890ce gl: enable gldeinterlace on OpenGL ES
1.Porting the exist deinterlace shader and OpenGL callback
  to be compatible with OpenGL ES.
2.Add a our blur vertical shader to gldeinterlace.
3.Add a property named “method” to let user choose which
  deinterlace function to use. Default to choose blur vertical
  method for better performance.

[Matthew Waters]: fix name of greedyh in method property (was greedhy) and port
to git master.

https://bugzilla.gnome.org/show_bug.cgi?id=764873
2016-04-29 21:33:29 +10:00
Thiago Santos
aa7a3cb24f dash: strip lead/trailing whitespace from descriptortype attributes
The spec says it is xs:anyURI and leading and trailing whitespace
are to be ignored

https://bugzilla.gnome.org/show_bug.cgi?id=758064
2016-04-22 17:33:15 -03:00
Florin Apostol
74d62b9144 adaptivedemux: use GstSystemClock to all real-time calculations
A realtime clock is used in many places, such as deciding which
fragment to select at start up and deciding how long to sleep
before a fragment becomes available. For example dashdemux needs
sample the client's estimate of UTC when selecting where to start
in a live DASH stream.

The problem with dashdemux calculating the client's idea of UTC is
that it makes it difficult to create unit tests, because the passage
of time is a factor in the test.

This commit changes dashdemux and adaptivedemux to use the
GstSystemClock, so that a unit test can replace the system clock when
it needs to be able to control the clock.

This commit makes no change to the behaviour under normal usage, as
GstSystemClock is based upon the system time.

https://bugzilla.gnome.org/show_bug.cgi?id=762147
2016-04-21 16:46:09 -03:00
Hyunjun Ko
7bee220af4 gl: caopengllayersink: fix a minor warning
Fix "unused variable" warning

https://bugzilla.gnome.org/show_bug.cgi?id=765292
2016-04-20 10:47:19 +03:00
Sebastian Dröge
bbe2e41653 glimagesink: Fix indentation 2016-04-19 09:30:39 +03:00
Haihua Hu
e4fe0e4ae2 glimagesink: need to clean window_id when state change form READY to NULL
When application change pipeline state NULL->READY and then READY->NULL,
glimagesink will not clear glsink->window_id. After that, when application
change state NULL->READY, the new_window_id is equal to window_id, glimagesink
will not set window handle. It will use the internal window but not the window
create by application.

https://bugzilla.gnome.org/show_bug.cgi?id=765241
2016-04-19 09:29:15 +03:00
Raffaele Rossi
79f9c7671b dtsl: add some documentation
https://bugzilla.gnome.org/show_bug.cgi?id=760994
2016-04-18 12:35:40 +01:00
Heinrich Fink
44ec245b48 gl/caopengllayersink: Actually unset caps_change flag after resize
Otherwise, the sink would execute "on_resize" for each frame.

https://bugzilla.gnome.org/show_bug.cgi?id=765194
2016-04-18 10:32:07 +03:00
Aleix Conchillo Flaqué
73ebdb888e srtpdec: also check for "roc" in caps
Currently, gst_srtp_dec_sink_setcaps is happy if the "roc" field is not
provided in the caps. If it is not provided the stream will be properly
inserted in the hash table with a default "roc". Then, when the first
buffer arrives validate_buffer will find an existing stream in the hash
table and will not signal request-key, not allowing the user to provide
a "roc".

This patch expects "roc" in gst_srtp_dec_sink_setcaps, if not found a
request-key will be signaled and the user will be able to provide all
the srtp fields, including "roc".

https://bugzilla.gnome.org/show_bug.cgi?id=765079
2016-04-15 15:37:32 +02:00
Sebastian Dröge
6c020b7f3c meta: Initialize all remaining metas in their init function
https://bugzilla.gnome.org/show_bug.cgi?id=764902
2016-04-13 10:25:32 +03:00
Luis de Bethencourt
43a656b296 gltestsrc: don't dereference null pointer
funcs can be NULL, it is one of the two conditions of the OR statement
above, so confirm it isn't before dereferencing with funcs->free.

CID 1358388
2016-04-12 11:17:15 +01:00
Matthew Waters
417bae7f23 glbasemixer: chain up to the parent implementation 2016-04-12 09:39:32 +10:00
Matthew Waters
ab33030250 vulkan: prettify the various versions in the debug output
output human readable numbers.
2016-04-12 09:39:12 +10:00
Tim-Philipp Müller
cc2b604b3b openh264dec: minor clean-ups
Remove unused property getters, setters; outdated comment.
2016-04-11 20:23:45 +01:00
Tim-Philipp Müller
9617a371ca openh264: remove unnecessary instance private structures
Element instance structures are not public API, so no need
for the extra indirection to hide the data.
2016-04-11 20:11:53 +01:00
Tim-Philipp Müller
41d8a49c52 openh264: fix indentation 2016-04-11 20:04:00 +01:00
Matthew Waters
65770c2af9 vulkan: add a wayland winsys implementation 2016-04-11 14:18:47 +10:00
Matthew Waters
e46bd98fe6 vulkan/xcb: getProcAddress winsys functions
There's no guarantee that they will always be exposed by the vulkan loader.
2016-04-11 14:18:47 +10:00
Matthew Waters
b76fcfd3f7 vkupload: copy necessary buffer metadata
timestamps, flags, etc
2016-04-11 14:18:47 +10:00
Matthew Waters
09808f9780 vkswapper: add necessary wait stages to the submission info 2016-04-08 21:46:50 +10:00
Matthew Waters
e4377e5c8f vkswapper: add srgb formats to our list of formats
intel returns them for their surface formats.
2016-04-08 21:46:50 +10:00
Matthew Waters
61d1b31136 vulkan: silence a validation warning filling out the image barrier 2016-04-08 21:46:50 +10:00
Matthew Waters
cecbcd704b vulkan: use the correct validation layer name
The threading validation layer has changed names.
2016-04-08 21:46:50 +10:00
Matthew Waters
761171b6d2 vulkan: only warn on not found layers
don't error out completely

https://bugzilla.gnome.org/show_bug.cgi?id=764545
2016-04-08 17:56:50 +10:00
Matthew Waters
b32ca4b550 vulkan: don't g_error when failing to find validation layers
Aborting the application is never a good thing to do for recoverable errors.

Just warn and error out instead.

https://bugzilla.gnome.org/show_bug.cgi?id=764545
2016-04-08 17:42:46 +10:00
Marcin Kolny
ac8a14d1c8 chromaprint: emit notify::fingerprint signal when fingerprint is ready
In addition to adding the fingerprint to the tags.

https://bugzilla.gnome.org/show_bug.cgi?id=733233
2016-04-07 20:44:09 +01:00
Matthew Waters
aa2b23fe39 videoaggregator: repect the result of find_best_format in the default update_caps
We weren't using the result of find_best_format at all.

Also, move the find_best_format usage to the default update_caps() to make
sure that it is also overridable.

https://bugzilla.gnome.org/show_bug.cgi?id=764363
2016-04-07 20:30:25 +10:00
Vincent Penquerc'h
8ac261841c mpdparser: clamp segment durations to each other and period end
5.3.2.1 in the spec.

https://bugzilla.gnome.org/show_bug.cgi?id=751792
2016-04-05 17:01:01 +01:00
Matthew Waters
dedb94323c glvideomixer: add support for the affine transformation meta 2016-04-05 20:50:24 +10:00
Matthew Waters
0343d58c81 glimagesink: support the affine transformation meta for any texture target 2016-04-05 20:50:14 +10:00
Matthew Waters
a8b860e45d glmixer: set the current texture to 0 before mapping
If we fail mapping, we don't want to use undefined video data in the subclass.
2016-04-05 16:24:53 +10:00
Patricia Muscalu
0fbbbd042a curlsink: catch an unknown error
In this case the socket callback has not been called
by libcurl and the curlsink has not been notified about any
connection problems by libcurl.
This indicates that it's a bug in libcurl so catch it as
an unknown error.

https://bugzilla.gnome.org/show_bug.cgi?id=754432
2016-04-04 17:48:55 +01:00
Matthew Waters
8cde41e68c glmixerbin: proxy the start-time-* properties from aggregator 2016-04-04 20:54:23 +10:00
Santiago Carot-Nemesio
d2ef3a4c19 dtls: Use unique names for internal elements to ease debugging
https://bugzilla.gnome.org/show_bug.cgi?id=748651
2016-04-04 11:09:10 +01:00
Stefan Sauer
bbcd659f5d README: update to 1.0 and lilv 2016-04-01 21:26:20 +02:00
Stefan Sauer
44b9710c74 lv2filter: remove the variable for the registry klass tag
Just pass the string when registering.
2016-04-01 21:26:20 +02:00
Stefan Sauer
bec6042622 lv2filter: remove copy and paste of doc blob
This doc block is already in gstlv2.c.
2016-04-01 21:26:20 +02:00
Vanessa Chipirras Navalon
4e1aba0923 opencv: segmentation: Ported to OpenCV version 3.1
Add namespace bgsegm, replacement functions and Template class for new
OpenCV versions because these functions have been removed. cvarrToMat() is
added because it is compatible with all versions of OpenCV and the use of
class Mat constructor is eliminated, it is also deprecated in 3.X versions.

Use the namespace cv because some functions are called many times.

This patch keeps compatibility with 2.4

https://bugzilla.gnome.org/show_bug.cgi?id=760473
2016-04-01 12:24:13 +01:00
Vanessa Chipirras Navalon
78cb53ad3c opencv: textoverlay: Ported to OpenCV version 3.1
imgproc_c.h is added because CvFont struct needs it in any 3.x version.
We use this structure in GstOpencvTextOverlay. This keeps compatibility
with 2.4.

https://bugzilla.gnome.org/show_bug.cgi?id=760473
2016-04-01 11:58:24 +01:00
Luis de Bethencourt
9d7b525f19 motioncells: fully construct MotionCells
Some members of MotionCells were not being initialized in the constructor.
Protect from potential garbage memory usage by fully initializing it.
Moving m_frameSize out of the class because it is only used in
performDetectionMotionCells().

CID 1197704
2016-03-31 16:12:04 +01:00
Matthew Waters
8b310665c5 gl/build: add missing '\' at the end of the line in MakeFile.am
Otherwise the following elements aren't included in the correct variable.

Fixes error in 'make distcheck' failing to find gstgltestsrc.h
2016-04-01 00:27:04 +11:00
Matthew Waters
42817bd6f2 gldifferencematte: port to gl3/gles2 2016-03-31 20:53:18 +11:00
Matthew Waters
a2d82e329a gltestsrc: port to gles2/gl3
This makes gltestsrc work everywhere \o/

- workaround RPi returning invalid values for positive coords in the
  checker shader
- reduce the number of iterations in the mandelbrot shader for gles2

https://bugzilla.gnome.org/show_bug.cgi?id=751540
2016-03-31 20:53:18 +11:00
Matthew Waters
00828b8c4c gltestsrc: port smpte pattern to shaders
Loosely based on patch by
Lubosz Sarnecki <lubosz.sarnecki@collabora.co.uk>

https://bugzilla.gnome.org/show_bug.cgi?id=751540
2016-03-31 20:53:18 +11:00
Matthew Waters
d412d617c2 gltestsrc: implement the circular method
https://bugzilla.gnome.org/show_bug.cgi?id=759801
2016-03-31 20:53:18 +11:00
Matthew Waters
6d368c0d0e gltestsrc: add a generic src framework
Any unsupported pattern (circular) results in an error
2016-03-31 20:53:18 +11:00
Matthew Waters
624ca1aaf0 glsterosplit: remove internal glupload/glcolorconvert
They are provided separately as elements and no other element contains the
internal references to glupload/glcolorconvert.
2016-03-31 20:53:18 +11:00
Vanessa Chipirras Navalon
d1266be431 opencv: pyramidsegment: delete element
cvPyrSegmentation() has been deprecated in OpenCV 3.0, and there isn't any
function to replace it. Deleting this element so we can support OpenCV 3.1
without build issues.

https://bugzilla.gnome.org/show_bug.cgi?id=760473
2016-03-30 22:52:03 +01:00
Vanessa Chipirras Navalon
d3b6b8c64f opencv: gstcvsmooth: Ported to OpenCV version 3.1
cvarrToMat() is added because it is compatible with all versions of Opencv
and the use the class constructor Mat is eliminated because is deprecated
in 3.X versions. This keeps compatibility with 2.4.

https://bugzilla.gnome.org/show_bug.cgi?id=760473
2016-03-30 22:13:27 +01:00
Vanessa Chipirras Navalon
0a08e771d4 opencv: grabcut: Ported to OpenCV version 3.1
cvarrToMat() is added because it is compatible with all versions of Opencv
and using the class Mat constructor is eliminated, because is deprecated
in 3.X versions. The use the using namespace cv because is called some
functions many times. This keeps compatibility with 2.4.

https://bugzilla.gnome.org/show_bug.cgi?id=760473
2016-03-30 22:13:14 +01:00
Vanessa Chipirras Navalon
120f32fed4 opencv: faceblur: Ported to OpenCV version 3.1
cvarrToMat() is added because it is compatible with all versions of Opencv
and the use of the class constructor Mat is eliminated because is deprecated
in 3.X versions. Included 'using namespace std' because it is needed for the
Vector class in 3.X versions. This keeps compatibility with 2.4.

https://bugzilla.gnome.org/show_bug.cgi?id=760473
2016-03-30 22:13:00 +01:00
Vanessa Chipirras Navalon
93b83edfe5 opencv: handdetect: Ported to OpenCV version 3.1
cvarrToMat() is added because it is compatible with all versions of Opencv
and the use of the class constructor Mat is eliminated because is deprecated
in 3.X versions. Included 'using namespace std' because it is needed for the
vector class in 3.X versions. This keeps compatibility with 2.4.

https://bugzilla.gnome.org/show_bug.cgi?id=760473
2016-03-30 22:12:47 +01:00
Vanessa Chipirras Navalon
f91b71edde opencv: retinex: Ported to OpenCV version 3.1
cvarrToMat() is added because it is compatible with all versions of Opencv
and using the class constructor Mat is eliminated because is deprecated
in 3.X versions. This keeps compatibility with 2.4.

https://bugzilla.gnome.org/show_bug.cgi?id=760473
2016-03-30 22:12:32 +01:00
Vanessa Chipirras Navalon
037f54d644 opencv: disparity: Ported to OpenCV version 3.1
'METHOD_VAR', 'METHOD_GC' is removed because there aren't equivalent functions
in new OpenCV versions. 'img_right_as_cvMat_rgb', 'img_left_as_cvMat_rgb' and
'depth_map_as_cvMat2' variables is removed because these aren't used.
cvarrToMat() is added because it is compatible with all versions of Opencv
and using the class Mat constructor is eliminated, because is deprecated
in 3.X versions. The use 'using namespace cv' because is called some
functions many times. This keeps compatibility with 2.4.

https://bugzilla.gnome.org/show_bug.cgi?id=760473
2016-03-30 22:12:16 +01:00
Vanessa Chipirras Navalon
4b60b47075 opencv: skindetect: Ported to OpenCV version 3.1
cvCVPixToPlane() has been deprecated in OpenCV 3.0, and there is
function to replace it cvSplit(). The include compat.hpp is deleted because
in 3.X versions doen't exist and it isn't necessary for 2.4.X versions
in this element. This keeps compatibility with 2.4.

https://bugzilla.gnome.org/show_bug.cgi?id=760473
2016-03-30 22:11:49 +01:00
Vanessa Chipirras Navalon
b37c759e52 opencv: Ported to OpenCV version 3.1 OpenCV
configure.ac was changed to work with new versions of OpenCV 3.X.
A new include is added gstopencvutils.cpp because it contains
the previous. This keeps compatibility with 2.4.

https://bugzilla.gnome.org/show_bug.cgi?id=760473
2016-03-30 22:10:58 +01:00
Edward Hervey
11ace3c18a teletexdec: Simplify negotiation code
No need to use a while() loop if we're going only going to use
the first structure of the caps ...

CID #1341748
2016-03-29 10:57:32 +02:00
Thibault Saunier
c32e74fd8a lv2: Port filters to GStreamer 1.0 and use lilv instead of slv2
Properly separate files as we will not have only one single base class
for all elements as we used to with 0.10, but the same way it is done
with ladspa, we subclass GstAudioFilter, GstBaseSource etc...

https://bugzilla.gnome.org/show_bug.cgi?id=678207
2016-03-27 19:28:00 +02:00
Nirbheek Chauhan
21023800ca gtk: Fix logging in base widget and fix desc of GL sink
Set a default category for gtkgstbasewidget lest the logging go to the 'default'
category where it can't be found easily
2016-03-27 12:04:16 +03:00
Yann Jouanin
9554e1c666 rtmpsrc plugin : add timeout option
https://bugzilla.gnome.org/show_bug.cgi?id=764251
2016-03-27 11:54:36 +03:00
Matthew Waters
cfbe7d1399 gtk/gl: don't assert when gdk doesn't provide a GL context
Allows the application to check whether gtkglsink is supported by setting
the element to READY.

https://bugzilla.gnome.org/show_bug.cgi?id=764148
2016-03-25 17:49:14 +11:00
Vineeth TM
1ac501d427 dfbvideosink: post message to application for unhandled keyboard/mouse events
https://bugzilla.gnome.org/show_bug.cgi?id=763403
2016-03-24 14:58:24 +02:00
Vineeth TM
9fe6b9b86b gtkbasesink: post message to application for unhandled keyboard/mouse events
https://bugzilla.gnome.org/show_bug.cgi?id=763403
2016-03-24 14:58:24 +02:00
Vineeth TM
8cdfb13658 bad: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763081
2016-03-24 14:56:51 +02:00
Thibault Saunier
b634f08ad6 vulkan: Minor string fix 2016-03-23 13:43:46 +01:00
Matthew Waters
dcfa7ee044 vulkan: VK_API_VERSION has been removed
In a stable release too, naughty.

Use VK_API_VERSION_1_0 instead

https://bugzilla.gnome.org/show_bug.cgi?id=764066
2016-03-23 22:15:35 +11:00
Sebastian Dröge
02fff22db5 vulkan: Ship missing headers with tarballs
https://bugzilla.gnome.org/show_bug.cgi?id=763877
2016-03-18 19:45:09 +02:00
Matthew Waters
16dec9eacc wayland: fix null pointer dereference on error
gnome-shell doesn't the support wl_scaler interface which makes creating a
wayland display fail creation.

Found in the generic state changes test
2016-03-17 02:28:32 +11:00
Matthew Waters
96754a6d52 glstereo{mix,split}: allow running on GLES 2/3
It's mostly supported for GLES 2.x, fully supported on GLES 3.x
2016-03-17 02:28:32 +11:00
Matthew Waters
4e7797546a gleffects; give each effect a unique long name and description
Gives applications that scrape the factory details more detailed and unique
details on the exact element.

https://bugzilla.gnome.org/show_bug.cgi?id=760566
2016-03-11 01:40:39 +11:00
Matthew Waters
8ceeca93b2 glfilterapp: update for the use of shaders
Fixes black output when placed in pipelines (using the default drawing).

https://bugzilla.gnome.org/show_bug.cgi?id=763365
2016-03-10 22:53:01 +11:00
Vineeth TM
1f32d6aff7 glimagesink: Fix window memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=763356
2016-03-09 08:57:16 +02:00
Matthew Waters
a68c8978a6 glvideomixer: signal continuation in reset
We want to iterate over all the pads, not just the first one.  Fix by returning
TRUE in the GstAggregatorPadForeachFunc.

Removes a GST_IS_GL_CONTEXT() assertion on shutdown with >2 inputs
using gst-launch.
2016-03-08 02:06:46 +11:00
Joe Gorse
71bf7ffe14 hls: Add OPENSSL_CFLAGS to CFLAGS
https://bugzilla.gnome.org/show_bug.cgi?id=763079
2016-03-04 09:26:34 +02:00
Sergey Borovkov
7981c1cb86 qml: Fix leak of the OpenGL contexts
[Matthew Waters]: add NULL checks before unreffing

https://bugzilla.gnome.org/show_bug.cgi?id=762999
2016-03-03 13:13:26 +11:00
Reynaldo H. Verdejo Pinochet
b077cd5510 vksink: fix spelling on failed _ensure_data() error message 2016-03-02 14:53:46 -08:00
Vivia Nikolaidou
c3d6635bbf mpeg2enc: Provide format as a string instead of a char to gst_structure_new
The format was provided as 'I420' instead of "I420", causing a crash.
2016-03-02 21:49:29 +02:00
Vineeth TM
55060ee6ce vkswapper/vkutils: Fix gerror memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=762842
2016-02-29 09:50:25 +02:00
Vineeth TM
d258b06013 vkdevice: Fix duplicate assignment of queue variable
https://bugzilla.gnome.org/show_bug.cgi?id=762842
2016-02-29 09:50:25 +02:00
Vineeth TM
e821582c13 vksink: Fix GError memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=762842
2016-02-29 09:50:25 +02:00
Thiago Santos
38cc9070cd dashdemux: sync index and the selected chunk when seeking
Otherwise the chunk selected isn't matched to the index and
the timing will be different, causing it to actually start
from a different position
2016-02-26 17:31:44 -03:00
Tim-Philipp Müller
111bb7c4c2 opus: rename plugin to opusparse for the time being
Until we fix it up and get rid of the opus dependency and
move it elsewhere too.
2016-02-26 00:44:34 +00:00
Tim-Philipp Müller
5f6ab24e0d opus: remove Opus encoder/decoder, moved to -base
https://bugzilla.gnome.org/show_bug.cgi?id=756282
2016-02-26 00:44:34 +00:00
Tim-Philipp Müller
a50e4bcadf opus: remove Opus RTP elements, they have moved to -good
https://bugzilla.gnome.org/show_bug.cgi?id=756282
2016-02-25 22:56:38 +00:00
Matthew Waters
c086540291 qt: use a static_cast instead of dynamic one
The dynamic_cast is a little but of overkill as the app will still crash if it
fails in the later g_assert.

Allows compilation with -fno-rtti

https://bugzilla.gnome.org/show_bug.cgi?id=762526
2016-02-24 21:20:18 +11:00
Wang Xin-yu (王昕宇)
96ac4af7bf glmixer: iterator didn't advance in continue statement
Leading to a deadlock.

https://bugzilla.gnome.org/show_bug.cgi?id=760873
2016-02-24 18:27:44 +11:00
Dave Craig
a5eee1e28a disparity: Don't assume that get_current_caps() returns non-NULL caps after has_current_caps()
Remove calls to gst_pad_has_current_caps() which then go on to call
gst_pad_get_current_caps() as the caps can go to NULL in between. Instead just
use gst_pad_get_current_caps() and check for NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=759539
2016-02-23 18:13:37 +02:00
Florin Apostol
72e46a4478 dashdemux: correctly handle an HTTP-XSDATE that is exactly the size of the date string
The code in the gst_dash_demux_parse_http_xsdate() was trying to
handle the case where the string is not null terminated by resizing
the buffer and appending a zero byte. This does not work if the buffer
is exactly the length of the string because the gst_buffer_resize()
function does not re-allocate the buffer, it just changes its size.

If a buffer is passed to gst_dash_demux_parse_http_xsdate() that is
exactly the length of the string, the function fails with an assert
failure in gst_buffer_resize().

https://bugzilla.gnome.org/show_bug.cgi?id=762148
2016-02-23 14:41:35 +02:00
Matthew Waters
98752fde48 gl: fix the build
2d287812 was incomplete
2016-02-22 21:03:28 +11:00
Matthew Waters
2d2878125e gl: error out if the configured GL API is unsupported by our element
https://bugzilla.gnome.org/show_bug.cgi?id=759801
2016-02-22 20:52:54 +11:00
Sergey Borovkov
0d80be0ce0 qmlglsink: Schedule onSceneGrpahInitialized to execute on render thread
onSceneGraphInitialized() is called from non render thread currently when
scene graph is already initialized.

https://bugzilla.gnome.org/show_bug.cgi?id=761003
2016-02-22 20:26:41 +11:00
Tim-Philipp Müller
95b1d4bf39 daala: don't use exported but undeclared core debug category symbols
It's not right and won't work on Windows with MSVC.
2016-02-20 12:55:08 +00:00
Sebastian Dröge
bce2f8f5f0 modplug: Fix compiler warning about C++11 compatibility
gstmodplug.cc:94:17: error: invalid suffix on literal; C++11 requires a space between literal and string macro [-Werror=literal-suffix]
 #define FORMATS "{ "GST_AUDIO_NE (S32)", "GST_AUDIO_NE (S16)", U8 }"
                 ^
gstmodplug.cc:94:39: error: invalid suffix on literal; C++11 requires a space between literal and string macro [-Werror=literal-suffix]
 #define FORMATS "{ "GST_AUDIO_NE (S32)", "GST_AUDIO_NE (S16)", U8 }"
                                       ^
2016-02-18 00:24:04 +02:00
David Fernandez
55ba6f1ee8 curlbasesink: don't send empty buffers
Fixes problem in curlhttpsink when qtmux uses faststart.

https://bugzilla.gnome.org/show_bug.cgi?id=762013
2016-02-17 11:10:22 +00:00
Thibault Saunier
d3fc5b5175 ladspa: Fix some debugs 2016-02-17 11:17:24 +01:00
Matthew Waters
b24d28f729 glimagesink: remove unsed reconfigure variable 2016-02-17 11:42:23 +11:00