Commit graph

23238 commits

Author SHA1 Message Date
Tim-Philipp Müller 29d112dfd1 docs: plugins: add some more elements
Many will still be missing corresponding doc
sections in the source code though.
2018-02-26 11:22:02 +00:00
Nirbheek Chauhan 05a37d3791 wasapi: Clarify usage of low-latency property, add myself as author
The low-latency property is *always* safe to enable, so applications
that do realtime communication should set it, and the elements will
automatically configure WASAPI to use the lowest possible device
period, and the audioringbuffer in audiobasesink will also be
configured accordingly.

Applications can also use exclusive mode during capture and playback
for the lowest possible latency if they know that the device will not
be used by any other application.

In this mode, the latency-time and buffer-time properties will be
completely ignored.
2018-02-26 16:23:11 +05:30
Nirbheek Chauhan 995059dc87 wasapi: Add a property for trying the AudioClient3 API
The AudioClient3 API is only available on Windows 10, and we will
automatically detect when it is available and use it.

However, using it for capturing audio with low latency and without
glitches seems to require setting the realtime priority of the entire
pipeline to "critical", which we cannot do from inside the element.

Hence, we can only enable that by default for wasapisink since
apps should be able to safely set the low-latency property to TRUE if
they need low-latency capture or playback.
2018-02-26 16:23:11 +05:30
Nirbheek Chauhan f7d0ce2477 wasapi: Set realtime thread priority at runtime
Use LoadLibrary() to set the thread characteristics at runtime so it
works automagically regardless of where or how the plugin was built.
2018-02-26 16:23:11 +05:30
Nirbheek Chauhan 0cb11c15ed wasapi: Use IAudioClient3 interface when available
This allows us to request ultra-low-latency device periods even in
shared mode. However, this requires good drivers and Windows 10, so
we only enable this when we detect that we are running on Windows 10
at runtime.

You can forcibly disable this feature on Windows 10 by setting
GST_WASAPI_DISABLE_AUDIOCLIENT3=1 in the environment.
2018-02-26 16:23:11 +05:30
Nirbheek Chauhan 16af66ee95 wasapi: __uuidof is simply not available in C
Fix comment, and don't try to use it at all.
2018-02-26 16:23:11 +05:30
Nirbheek Chauhan 28874e15ff wasapi: Set a default category for util functions
Without this, they all go to the default category where they can be
missed
2018-02-26 16:23:11 +05:30
Nirbheek Chauhan 14b2d6b27a wasapi: Use a macro for HRESULT failure paths
Saves a lot of boilerplate across all files.
2018-02-26 16:23:11 +05:30
Sreerenj Balachandran 751e85fa45 checksumsink: remove src pad template from sink element
https://bugzilla.gnome.org/show_bug.cgi?id=793774
2018-02-23 23:32:44 +00:00
Hyunjun Ko 14f0186741 msdk: remove unused code
There's unused code remaining since MSDK bufferpool patches landed.

https://bugzilla.gnome.org/show_bug.cgi?id=793741
2018-02-23 14:30:56 -09:00
Jan Alexander Steffens (heftig) 37a9e0fff9 srt: Add support for streamheaders to sinks
https://bugzilla.gnome.org/show_bug.cgi?id=793503
2018-02-23 15:29:57 -05:00
Jan Alexander Steffens (heftig) 8a5dab1c06 srt: Refactor gst_srt_*_sink_send_buffer, extract send
https://bugzilla.gnome.org/show_bug.cgi?id=793503
2018-02-23 15:29:57 -05:00
Jan Alexander Steffens (heftig) 7463a93620 srt: Add gst_srt_base_sink_stop
https://bugzilla.gnome.org/show_bug.cgi?id=793503
2018-02-23 15:29:57 -05:00
Jan Alexander Steffens (heftig) 4039bdbaac srt: Remove unused queued_buffers field
https://bugzilla.gnome.org/show_bug.cgi?id=793503
2018-02-23 15:29:57 -05:00
Sreerenj Balachandran 1c81bf4bdc msdkenc: remove unnecessary memset
https://bugzilla.gnome.org/show_bug.cgi?id=791479
2018-02-22 12:32:45 -09:00
Sreerenj Balachandran 3cc61f98b1 msdk: enc: Support force-key-unit events
https://bugzilla.gnome.org/show_bug.cgi?id=791479
2018-02-22 12:32:20 -09:00
Nicolas Dufresne 4300611082 h264parser: Expose framerate even if fixed_frame_rate flag isn't set
There is nothing in the spec that state that framerate is not valid in
that case. This aligns GStreamer with FFMPEG behaviour for similar
streams.

https://bugzilla.gnome.org/show_bug.cgi?id=793284
2018-02-21 16:31:27 -05:00
Tim-Philipp Müller 9af73aa1d1 meson: simplify GST_DISABLE_GST_DEBUG check and don't use add_global_*
add_global_arguments() can't be used in subprojects. It's
entirely possible that -bad is a subproject but gstreamer
is picked up from an installed location, so we should
really use add_project_arguments() in both cases.
2018-02-21 19:46:04 +00:00
Nicolas Dufresne a73e5eba55 doc: Add section for fakevideosink
https://bugzilla.gnome.org/show_bug.cgi?id=793624
2018-02-21 12:27:39 -05:00
Nicolas Dufresne f0c676c0f9 Add fakevideosink element
This is a wrapper around fakesink that will advertise GstVideoMeta
and other meta API in order to achieve zero-copy whenever possible.
his new element is useful when doing performance testing with
video stream and don't want the sink capability to change the
upstream behaviour.

https://bugzilla.gnome.org/show_bug.cgi?id=793624
2018-02-21 11:30:33 -05:00
Nicolas Dufresne ccb0837903 meson: Remove unused header list
https://bugzilla.gnome.org/show_bug.cgi?id=793624
2018-02-21 11:30:33 -05:00
Nicolas Dufresne 6d930e45c2 Fix SRT Library package config name 2018-02-21 11:30:12 -05:00
Justin Kim 2169c8807b meson: Use .dylib suffix if darwin
For Mac OS, GST_EXTRA_MODULE_SUFFIX should be set as '.dylib'.

https://bugzilla.gnome.org/show_bug.cgi?id=793585
2018-02-21 15:05:42 +00:00
Sreerenj Balachandran a50ecfe46c msdk: enc: Fix typo 2018-02-20 17:22:35 -09:00
Sreerenj Balachandran e924dec4e1 msdk: h264_enc: Enable B-pyramid prediction support
Since there is already an "adaptive-B" option, just
use boolean property for B-pyramid enabling.

Fixme: Not sure whether this can be supported in vp8 and vp9.
It could be possible through GPB (b without backward ref) but
can't verify currently. We can move this as common property
once verified with vp8 and vp9 without breaking any backward
compatibility.

https://bugzilla.gnome.org/show_bug.cgi?id=791637
2018-02-20 12:41:18 -09:00
Sreerenj Balachandran 07c05a75a5 msdk: Add more tuning options
Added tuning options for mb level bitrate control,
adaptive I-frame insertion, and adaptive B-frame insertion.

https://bugzilla.gnome.org/show_bug.cgi?id=791637
2018-02-20 12:41:08 -09:00
Sreerenj Balachandran f25bcf7cb8 msdk: h264_enc: Add slice size tuning option
According to spec, it is a general property. But based on
testing it only works for h264 encoder.
Let's keep it as h264 specific for now.

https://bugzilla.gnome.org/show_bug.cgi?id=791637
2018-02-20 12:40:59 -09:00
Sreerenj Balachandran ddd02be0de msdk: move enum definitions to separte file
Move enum value defintions which are (or in future) supported
by more than one codec into a common file.

https://bugzilla.gnome.org/show_bug.cgi?id=791637
2018-02-20 12:40:50 -09:00
Sreerenj Balachandran b7dbcb26b8 msdk: encoder: h264: Enable trellis quantization tuning
Add a new property "trellis" to enable trellis quantization.
Keeping trellis as a flag value (which is boolean for gst x264 enc element)
since it is possible to enable/disable this seperately for
I,P and B frames through MediaSDK ext option headers.

The subclass implementations always need to inform base-encoder
if it requires the inclusion of Extend Header buffers (mfxExtCodingOption2
 and mfxExtCodingOption3).

https://bugzilla.gnome.org/show_bug.cgi?id=791637
2018-02-20 12:40:42 -09:00
Sreerenj Balachandran d58c0bd509 msdk: h264_enc: Add LookaheadDownsampling support
This option controls down sampling in look ahead bitrate
control mode. According to spec it is only supported in AVC.

Fixme: Probably HEVC also have support for this in recent
MSDK versions. We could move the enumeration types to common
header usable for multiple codecs.

https://bugzilla.gnome.org/show_bug.cgi?id=791637
2018-02-20 12:39:53 -09:00
Sreerenj Balachandran ae8d956c2c msdk: encode: Add more rate control options
MediaSDK has support for a number of rate control algorithms.
Adding all possible options to the property rate-control.

Fixme1: In case of failure, currently we don't have a proper method
to show which rate-control has been failed. It could be better
to add some extensive validation on EncQuery output in case of error.
Unfortunately, not all ratecontrol methods are supported by every codecs
and we don't have the dynamic detection of supported ratecontrol methods yet.

https://bugzilla.gnome.org/show_bug.cgi?id=791637
2018-02-20 12:39:28 -09:00
Sreerenj Balachandran f076f1948e msdk: encode: Add property to set slice/partitioning
Adding a new property num-slices to set the number of
slices/partitions per frame. Adding it as a general
property for all codecs (except jpeg).

https://bugzilla.gnome.org/show_bug.cgi?id=791637
2018-02-20 12:39:13 -09:00
Sreerenj Balachandran a165a1a1a9 msdk: encoder: h265: generalize the behavior of "i-frames" property
We have the property "i-frames" to set the IDR interval in a
gop. Unfortunately MSDK HEVC encoder behaves bit differently
for IdrInterval field, IdrInteval == 1 indicate every
I-frame should be an IDR (which is IdrInterval == 0 for other codecs),
IdrInteval == 2 means every other I-frame is an IDR
(which is IdrInterval == 1 for other codecs) etc.
So we generalize the behaviour of property "i-frames" by
incrementing the value by one in each case (only for HEVC).

https://bugzilla.gnome.org/show_bug.cgi?id=791637
2018-02-20 12:39:02 -09:00
Sreerenj Balachandran fa0911c3f6 msdk: encoder: register only the required properties
The base encoder common properties are not valid for
mjpeg encoder where there is no motion compensation or rate control.
Delaying the property installation on the base gobject
untill the subclass class_init get invoked.

https://bugzilla.gnome.org/show_bug.cgi?id=791637
2018-02-20 12:38:28 -09:00
Víctor Manuel Jáquez Leal 0156d391ae msdk: add missing files for dist target
https://bugzilla.gnome.org/show_bug.cgi?id=793563
2018-02-19 22:16:07 +01:00
Sebastian Dröge b23231d8c3 colormanagement: Link to libgstbase for basetransform 2018-02-18 12:01:07 +02:00
Sebastian Dröge 90c1124393 gl: GL_LIBS does not exist anymore but X11_LIBS does and is needed
In case of X11 we have to call XInitThreads().
2018-02-18 11:49:25 +02:00
Sebastian Dröge 34f0d9868a configure: Add configure check for gmodule-no-export-2.0
This is needed for all code using the g_module_*() API.
2018-02-18 11:37:18 +02:00
Sebastian Dröge 0cad51d96c webrtc: We need at least libnice 0.1.14
meson.build already required that, let's do the same for configure.ac
2018-02-16 17:36:04 +02:00
Tim-Philipp Müller c282f4148c Back to development 2018-02-15 19:44:23 +00:00
Tim-Philipp Müller 89a3d9e53e Release 1.13.1 2018-02-15 18:52:07 +00:00
Tim-Philipp Müller e95fb277cb Dist compositor crossfade example and pythons script for meson build
And add to autotools build so it gets disted.
2018-02-15 18:51:44 +00:00
Tim-Philipp Müller 886ced3684 configure: fix build with --disable-external 2018-02-15 15:07:26 +00:00
Tim-Philipp Müller 430b08b252 po: update translations 2018-02-15 14:59:35 +00:00
Tim-Philipp Müller e911a93c86 docs: update plugin docs 2018-02-15 14:57:00 +00:00
Edward Hervey b3ca3e977c decklink: Fix array of devices usage
We need to allocate actual Device structures since we are going
to be setting callbacks with address to that structure

https://bugzilla.gnome.org/show_bug.cgi?id=777239
2018-02-14 16:00:34 +01:00
Edward Hervey 235feecf46 Update ORC fallback disted code 2018-02-14 14:36:00 +01:00
Sean DuBois a8ffc56f84 aom: Implement cpu-used in av1enc
https://bugzilla.gnome.org/show_bug.cgi?id=791674
2018-02-14 10:19:40 +02:00
Dimitrios Katsaros 3cf4a70dbc pnm: Fixed segfault in pnmenc
The pnmenc was not mapping the input buffers as video buffers. Because
of this, the video frame stride was not being set based on frame but
based on the caps, which make the assumption that the strides are a
power of 4. For input that is not a power of 4, this would lead to a
SIGSEGV.

https://bugzilla.gnome.org/show_bug.cgi?id=793419
2018-02-14 10:19:22 +02:00
Sreerenj Balachandran d71088e8da build: check gudev dependency for msdk plugin
gudev is the dependecy for rendernode support in MediaSDK plugin.

https://bugzilla.gnome.org/show_bug.cgi?id=791599
2018-02-13 17:39:26 -09:00