Commit graph

5460 commits

Author SHA1 Message Date
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