platform/upstream/gstreamer.git
4 years agotests: x265enc: Add tiny resolution encoding check
Yeongjin Jeong [Wed, 31 Jul 2019 09:02:02 +0000 (18:02 +0900)]
tests: x265enc: Add tiny resolution encoding check

Add the tiny picture encoding test case allowed in x265

4 years agox265enc: Specify max CU size depending on input resolution
Yeongjin Jeong [Mon, 1 Jul 2019 09:14:55 +0000 (18:14 +0900)]
x265enc: Specify max CU size depending on input resolution

x265 does not allow user to configure a picture size smaller than
at least one CU size, and maxCUSize must be 16, 32, or 64.
Therefore, the CU size must be set according to the input resolution,
and the input resolution can not be less than 16.

4 years agoavtp: CVF - fix error message
Ederson de Souza [Tue, 23 Jul 2019 20:06:55 +0000 (13:06 -0700)]
avtp: CVF - fix error message

The error is about *not* being able to map a buffer.

4 years agoavtp: CVF - Do not infinite loop trying to fragment zero sized NAL unit
Ederson de Souza [Mon, 8 Jul 2019 21:19:07 +0000 (14:19 -0700)]
avtp: CVF - Do not infinite loop trying to fragment zero sized NAL unit

Zero sized NAL-units should not happen, but if they do, do not infinite
loop. Added also a unit test for this case.

4 years agoh265parser: Skip unused SEI bits differently
Jan Schmidt [Tue, 30 Jul 2019 14:38:44 +0000 (00:38 +1000)]
h265parser: Skip unused SEI bits differently

3-byte emulation bytes can confuse the current code that skips
bits at the end of an SEI. Use a simpler method that's also
quicker because it skips all remaining bits in one go instead
of 1 bit at a time.

4 years agoh265parse: Add support for compatible profiles of extensions
Seungha Yang [Sat, 20 Jul 2019 13:38:46 +0000 (22:38 +0900)]
h265parse: Add support for compatible profiles of extensions

From decoder's capability point of view as defined by the h265 specification,
accept peer profile caps.

4 years agonvenc: Fix build error with x86 msvc
Seungha Yang [Tue, 30 Jul 2019 10:07:42 +0000 (19:07 +0900)]
nvenc: Fix build error with x86 msvc

__stdcall is accepted or ignored by the compiler on x64 but x86
is not the case. So the function definition should be consistent
with declaration.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1039

4 years agonvenc: Fix deadlock when pad_push return was not GST_FLOW_OK
Seungha Yang [Tue, 30 Jul 2019 08:49:25 +0000 (17:49 +0900)]
nvenc: Fix deadlock when pad_push return was not GST_FLOW_OK

Encoding thread is terminated without any notification so
upstream streaming thread is locked because there is nothing
to pop from GAsyncQueue. If downstream returns error,
we need put SHUTDOWN_COOKIE to GAsyncQueue for chain function
can wakeup.

4 years agonvcodec: Fix broken ABI in cuda stub header to fix nvenc with opengl
Seungha Yang [Tue, 30 Jul 2019 02:06:43 +0000 (11:06 +0900)]
nvcodec: Fix broken ABI in cuda stub header to fix nvenc with opengl

Fix the broken ABI introduced by the commit 367e742e5dd53400d212ce07d0ac0745f3535ac3
From CUDA Toolkit 3.2, size_t has been used in CUDA_MEMCPY2D structure
instead of unsigned int.

4 years agowebrtcbin: Support data channel SDP offers from Chrome
Jakub Adam [Wed, 12 Jun 2019 13:00:38 +0000 (15:00 +0200)]
webrtcbin: Support data channel SDP offers from Chrome

When negotiating a data channel, Chrome as recent as 75 still uses SDP
based on version 05 of the SCTP SDP draft, for example:

 m=application 9 DTLS/SCTP 5000
 a=sctpmap:5000 webrtc-datachannel 1024

Implement support for parsing SCTP port out of SDP message with sctpmap
attribute. Fixes data channel negotiation with Chrome browser.

4 years agoopenjpegdec: enable multi-threaded decode
Aaron Boxer [Sun, 28 Jul 2019 23:08:24 +0000 (19:08 -0400)]
openjpegdec: enable multi-threaded decode

4 years agoopenjpegdec: check return value when setting up decoder
Aaron Boxer [Sun, 28 Jul 2019 23:07:04 +0000 (19:07 -0400)]
openjpegdec: check return value when setting up decoder

4 years agoadaptivedemux: remove some deadlocks using webkitwebsrc.
Charlie Turner [Tue, 2 Jul 2019 11:27:40 +0000 (12:27 +0100)]
adaptivedemux: remove some deadlocks using webkitwebsrc.

WebKit's websrc depends on the main-thread for download completion
rendezvous. This exposed a number of deadlocks in adaptivedemux due to
it holding the MANIFEST_LOCK during network requests, and also needing
to hold it to change_state and resolve queries, which frequently occur
during these download windows.

Make demux->running MT-safe so that it can be accessed without using the
MANIFEST_LOCK. In case a source is downloading and requires a MT-thread
notification for completion of the fragment download, a state change
during this download window will deadlock unless we cancel the downloads
and ensure they are not restarted before we finish the state-change.

Also make demux->priv->have_manifest MT-safe. A duration query happening
in the window described above can deadlock for the same reason. Other
src queries (like SEEKING) that happen in this window also could
deadlock, but I haven't hit this scenario.

Increase granularity of API_LOCK'ing in change_state as well. We need to
cancel downloads before trying to take this lock, since sink events
(EOS) will hold it before starting a fragment download.

4 years agowebrtcbin: fix GInetAddress leak
Ilya Smelykh [Mon, 29 Jul 2019 07:56:16 +0000 (14:56 +0700)]
webrtcbin: fix GInetAddress leak

4 years agoopenjpeg: remove support for OpenJPEG 1.5
Aaron Boxer [Sun, 28 Jul 2019 18:19:36 +0000 (14:19 -0400)]
openjpeg: remove support for OpenJPEG 1.5

Also require OpenJPEG version >= 2.2

4 years agoav1enc: enable row-mt property conditionally
Wonchul Lee [Tue, 23 Jul 2019 13:26:19 +0000 (22:26 +0900)]
av1enc: enable row-mt property conditionally

The row based multi threading control was introduced after 1.0.0 version
of libaom released. It adds a guard to check the relevant control
definition declared. It fixes #1025

4 years agomsdk: enable 32 bit build on windows
Aaron Boxer [Wed, 24 Jul 2019 18:44:21 +0000 (12:44 -0600)]
msdk: enable 32 bit build on windows

4 years agoRevert "dtls: fix generated cert dtls agent leak"
Sebastian Dröge [Fri, 26 Jul 2019 06:35:53 +0000 (06:35 +0000)]
Revert "dtls: fix generated cert dtls agent leak"

This reverts commit e5585b1bde162bc038fd1265438edbcd94ccb5ed

4 years agonvdec: Make OpenGL dependency optional
Seungha Yang [Fri, 19 Jul 2019 13:46:01 +0000 (22:46 +0900)]
nvdec: Make OpenGL dependency optional

By adding system memory support for nvdec, both en/decoder
in the nvcodec plugin are able to be usable regardless of
OpenGL dependency. Besides, the direct use of system memory
might have less overhead than OpenGL memory depending on use cases.
(e.g., transcoding using S/W encoder)

4 years agotimecodestamper: Validate LTC timestamps before trying to use them
Sebastian Dröge [Thu, 25 Jul 2019 15:27:30 +0000 (18:27 +0300)]
timecodestamper: Validate LTC timestamps before trying to use them

There's no point in working with invalid LTC timestamps as all future
calculations will be wrong based on this, and invalid LTC timestamps can
sometimes be read via the audio input.

4 years agodtls: fix generated cert dtls agent leak
Ilya Smelykh [Thu, 25 Jul 2019 13:03:02 +0000 (20:03 +0700)]
dtls: fix generated cert dtls agent leak

The generated certificate dtls agent was refed two times on the first call.

4 years agodtls: fix dtls connection object leak
Ilya Smelykh [Thu, 25 Jul 2019 10:00:14 +0000 (10:00 +0000)]
dtls: fix dtls connection object leak

4 years agodecklink: Make sure to return a value from all code paths
Sebastian Dröge [Mon, 22 Jul 2019 16:10:15 +0000 (19:10 +0300)]
decklink: Make sure to return a value from all code paths

False warning from MSVC, or it does not understand that
g_assert_not_reached() does not return.

...\gst-plugins-bad-1.0-1.17.0.1\sys\decklink\gstdecklink.cpp(1647) : warning C4715: 'gst_decklink_configure_duplex_mode': not all control paths return a value

4 years agodecklinksrc: Reset timestamp observations on format change
Sebastian Dröge [Mon, 22 Jul 2019 14:57:01 +0000 (17:57 +0300)]
decklinksrc: Reset timestamp observations on format change

We will usually get timestamps starting from 0 again and due to the
format change the clock of the input might also be different.

4 years agonvcodec: Clean up pointless return values around plugin init
Seungha Yang [Thu, 25 Jul 2019 07:45:21 +0000 (16:45 +0900)]
nvcodec: Clean up pointless return values around plugin init

Any plugin which returned FALSE from plugin_init will be blacklisted
so the plugin will be unusable even if an user install required runtime
dependency next time. So that's the reason why nvcodec returns TRUE always.

This commit is to remove possible misreading code.

4 years agonvcodec: Change log level for g_module_open failure
Seungha Yang [Wed, 24 Jul 2019 04:06:16 +0000 (13:06 +0900)]
nvcodec: Change log level for g_module_open failure

Since we build nvcodec plugin without external CUDA dependency,
CUDA and en/decoder library loading failure can be natural behavior.

Emit error only when the module was opend but required symbols are missing.

4 years agonvdec: Add support for 10bits 4:2:0 decoding
Seungha Yang [Wed, 24 Jul 2019 01:00:56 +0000 (10:00 +0900)]
nvdec: Add support for 10bits 4:2:0 decoding

This commit includes h265 main-10 profile support if the device can
decode it.

Note that since h264 10bits decoding is not supported by nvidia GPU for now,
the additional code path for h264 high-10 profile is a preparation for
the future Nvidia's enhancement.

4 years agonvdec: Specify supported profiles of h264/h265 codec
Seungha Yang [Wed, 24 Jul 2019 09:06:41 +0000 (18:06 +0900)]
nvdec: Specify supported profiles of h264/h265 codec

See more details about supported formats at
nvidia codec sdk document "NVDEC_VideoDecoder_API_ProgGuide.pdf"
Table 1. Hardware Video Decoder Capabilities.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/926

4 years agonvdec: Skip draining before creating internal parser
Seungha Yang [Wed, 24 Jul 2019 11:38:58 +0000 (20:38 +0900)]
nvdec: Skip draining before creating internal parser

GstVideoDecoder::drain/flush can be called at very initial state
with stream-start and flush-stop event, respectively.
Draning with NULL CUvideoparser seems to unsafe and that eventually
failed to handle it.

4 years agodash: Fallback to libxml2 subproject
Xavier Claessens [Wed, 24 Jul 2019 18:37:40 +0000 (14:37 -0400)]
dash: Fallback to libxml2 subproject

4 years agomsdkdec: improve spelling and grammar of comments
Aaron Boxer [Tue, 23 Jul 2019 17:47:44 +0000 (13:47 -0400)]
msdkdec: improve spelling and grammar of comments

4 years agomsdkdec: make sure mfx frame width/height meets MSDK's requirement
Haihao Xiang [Tue, 23 Jul 2019 05:16:36 +0000 (13:16 +0800)]
msdkdec: make sure mfx frame width/height meets MSDK's requirement

It is possible that the output region size (e.g. 192x144) is different
from the coded picture size (e.g. 192x256). We may adjust the alignment
parameters so that the padding is respected in GstVideoInfo and use
GstVideoInfo to calculate mfx frame width and height

This fixes the error below when decoding a stream which has different
output region size and coded picture size

0:00:00.057726900 28634 0x55df6c3220a0 ERROR                msdkdec
gstmsdkdec.c:1065:gst_msdkdec_handle_frame:<msdkh265dec0>
DecodeFrameAsync failed (failed to allocate memory)

Sample pipeline:

gst-launch-1.0 filesrc location=output.h265 ! h265parse ! msdkh265dec !
glimagesink

4 years agomsdkdec: remove unneeded code
Haihao Xiang [Tue, 23 Jul 2019 05:28:17 +0000 (13:28 +0800)]
msdkdec: remove unneeded code

Before calling gst_msdkdec_create_buffer_pool, the alignment parameters
have been adjusted.

4 years agonvcodec: Drop system installed cuda.h dependency
Seungha Yang [Tue, 23 Jul 2019 00:40:24 +0000 (09:40 +0900)]
nvcodec: Drop system installed cuda.h dependency

... and add our stub cuda header.

Newly introduced stub cuda.h file is defining minimal types in order to
build nvcodec plugin without system installed CUDA toolkit dependency.
This will make cross-compile possible.

4 years agonvcodec: Keep requested rank for default device
Seungha Yang [Tue, 23 Jul 2019 01:24:10 +0000 (10:24 +0900)]
nvcodec: Keep requested rank for default device

Fix for default encoder and decoder element factory to make them have
higher rank than the others.

4 years agonvenc: Register elements per GPU device with capability check
Seungha Yang [Tue, 9 Jul 2019 04:31:27 +0000 (13:31 +0900)]
nvenc: Register elements per GPU device with capability check

* By this commit, if there are more than one device,
nvenc element factory will be created per
device like nvh264device{device-id}enc and nvh265device{device-id}enc
in addition to nvh264enc and nvh265enc, so that the element factory
can expose the exact capability of the device for the codec.

* Each element factory will have fixed cuda-device-id
which is determined during plugin initialization
depending on the capability of corresponding device.
(e.g., when only the second device can encode h265 among two GPU,
then nvh265enc will choose "1" (zero-based numbering)
as it's target cuda-device-id. As we have element factory
per GPU device, "cuda-device-id" property is changed to read-only.

* nvh265enc gains ability to encoding
4:4:4 8bits, 4:2:0 10 bits formats and up to 8K resolution
depending on device capability.
Additionally, I420 GLMemory input is supported by nvenc.

4 years agonvdec: Create CUDA context with registered device id
Seungha Yang [Sun, 21 Jul 2019 12:23:30 +0000 (21:23 +0900)]
nvdec: Create CUDA context with registered device id

Only the default device has been used by NVDEC so far.
This commit make it possible to use registered device id.
To simplify device id selection, GstNvDecCudaContext usage is removed.

4 years agonvdec: Register elements per device/codec with capability check
Seungha Yang [Thu, 11 Jul 2019 12:53:46 +0000 (21:53 +0900)]
nvdec: Register elements per device/codec with capability check

By this commit, each codec has its own element factory so the
nvdec element factory is removed. Also, if there are more than one device,
additional nvdec element factory will be created per
device like nvh264device{device-id}dec, so that the element factory
can expose the exact capability of the device for the codec.

4 years agomsdk: Do not expose DMA buffer caps feature on Windows
Seungha Yang [Thu, 18 Jul 2019 09:27:55 +0000 (18:27 +0900)]
msdk: Do not expose DMA buffer caps feature on Windows

On Windows, DMA buffer is not supported. PadTemplate with actually
supported feature seems to more make sense.

4 years agonvcodec: Drop cudaGL.h dependency
Seungha Yang [Mon, 22 Jul 2019 14:01:43 +0000 (23:01 +0900)]
nvcodec: Drop cudaGL.h dependency

nvcodec does not use any type/define/enum in cudaGL.h.

4 years agoav1enc: Also set AV1E_SET_ROW_MT from the property value when initializing the encoder
Sebastian Dröge [Mon, 22 Jul 2019 09:23:51 +0000 (12:23 +0300)]
av1enc: Also set AV1E_SET_ROW_MT from the property value when initializing the encoder

Previously it was only set if the property was changed after the encoder
was initialized.

4 years agoav1enc: Add threads and row-mt properties
Wonchul Lee [Sun, 2 Dec 2018 13:49:19 +0000 (22:49 +0900)]
av1enc: Add threads and row-mt properties

Add threads related property that setting a number of threads to encode
av1 codec and row-mt configuration.

4 years agoav1enc: Release lock when failing to initialize
Wonchul Lee [Sun, 2 Dec 2018 12:45:50 +0000 (21:45 +0900)]
av1enc: Release lock when failing to initialize

Add to missing unlock when failing to initialize encoder.

4 years agoRevert "av1enc: Release lock when failing to initialize"
Sebastian Dröge [Mon, 22 Jul 2019 08:23:22 +0000 (11:23 +0300)]
Revert "av1enc: Release lock when failing to initialize"

This reverts commit 7de6b5d48161cb4982efe7fd04c8be408ca85424.

It was accidentally squashed together from the MR instead of keeping the
individual commits.

4 years agosiren: fix a global buffer overflow spotted by asan
Fabrice Bellet [Mon, 22 Jul 2019 08:00:00 +0000 (08:00 +0000)]
siren: fix a global buffer overflow spotted by asan

This patch just enforces boudaries for the access to the
standard_deviation array (64 floats). Such case can be
seen with a corrupted stream, where there's no hope to
obtain a valid decoded frame anyway.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1002

4 years agoav1enc: Release lock when failing to initialize
Wonchul Lee [Mon, 22 Jul 2019 06:59:48 +0000 (06:59 +0000)]
av1enc: Release lock when failing to initialize

Add to missing unlock when failing to initialize encoder.

5 years agonvdec: Fix video stuttering issue with VP9
Seungha Yang [Thu, 18 Jul 2019 16:07:38 +0000 (01:07 +0900)]
nvdec: Fix video stuttering issue with VP9

Address nvidia driver specific behavior to avoid unexpected frame mismatch
between GStreamer and NVDEC.

5 years agonvdec: Drop async queue and handle data on callback of CUvideoparser
Seungha Yang [Thu, 18 Jul 2019 15:52:59 +0000 (00:52 +0900)]
nvdec: Drop async queue and handle data on callback of CUvideoparser

Callbacks of CUvideoparser is called on the streaming thread.
So the use of async queue has no benefit.

Make control flow straightforward instead of long while/switch loop.

5 years agortponviftimestamp: fix setting of the discontinuity flag
Mathieu Duponchelle [Fri, 12 Jul 2019 18:24:10 +0000 (20:24 +0200)]
rtponviftimestamp: fix setting of the discontinuity flag

The D bit is meant to be set whenever there is a discontinuity
in transmission, and directly maps to the DISCONT flag.

The E bit is not meant to be set on every buffer preceding a
discontinuity, but only on the last buffer of a contiguous section
of recording. This has to be signaled through the unfortunately-named
"discont" field of the custom NtpOffset event.

5 years agortponvifparse: set ONVIF timestamps as buffer PTS
Mathieu Duponchelle [Fri, 12 Jul 2019 18:23:24 +0000 (20:23 +0200)]
rtponvifparse: set ONVIF timestamps as buffer PTS

5 years agoh26{4,5}parse: add support for forward predicted trick mode
Mathieu Duponchelle [Wed, 10 Jul 2019 21:40:36 +0000 (23:40 +0200)]
h26{4,5}parse: add support for forward predicted trick mode

Also stop assigning TRUE to fields with |=

5 years agox265enc: Specify colorimetry related VUI parameters
Seungha Yang [Wed, 17 Jul 2019 13:42:10 +0000 (22:42 +0900)]
x265enc: Specify colorimetry related VUI parameters

Set the colorimetry config for the information to be embedded in encodec bitstream.

5 years agonvdec: Port to color_{primaries,transfer,matrix}_to_iso
Seungha Yang [Mon, 15 Jul 2019 14:40:21 +0000 (23:40 +0900)]
nvdec: Port to color_{primaries,transfer,matrix}_to_iso

... and update the color information only when upstream was not provided
the information.

5 years agonvenc: Specify colorimetry related VUI parameters
Seungha Yang [Wed, 17 Jul 2019 00:35:35 +0000 (09:35 +0900)]
nvenc: Specify colorimetry related VUI parameters

Set the colorimetry config for the information to be embedded in encodec bitstream.

5 years agowebrtcdatachannel: inherit directly from GObject
Mathieu Duponchelle [Tue, 16 Jul 2019 21:30:07 +0000 (23:30 +0200)]
webrtcdatachannel: inherit directly from GObject

There's no reason for it to inherit from GstObject apart from
locking, which is easily replaced, and inheriting from
GInitiallyUnowned made introspection awkward and needlessly
complicated.

5 years agoh264parse: Update caps per pixel aspect ratio change
Seungha Yang [Tue, 16 Jul 2019 15:13:24 +0000 (00:13 +0900)]
h264parse: Update caps per pixel aspect ratio change

Output caps should be updated per pixel aspect ratio change.

5 years agoh265parse: Expose parsed colorimetry when VUI provided it
Seungha Yang [Tue, 16 Jul 2019 13:58:26 +0000 (22:58 +0900)]
h265parse: Expose parsed colorimetry when VUI provided it

... and also if upstream did not specify the colorimetry.

5 years agoh264parse: Expose parsed colorimetry when VUI provided it
Seungha Yang [Tue, 16 Jul 2019 00:40:01 +0000 (09:40 +0900)]
h264parse: Expose parsed colorimetry when VUI provided it

... and also if upstream did not specify the colorimetry.

5 years agokmssink: Fix implicit declaration build error
Seungha Yang [Tue, 16 Jul 2019 16:05:32 +0000 (01:05 +0900)]
kmssink: Fix implicit declaration build error

ffs() and strcmp() require string.h

gstkmssink.c:255:28: error: implicit declaration of function ‘ffs’ [-Werror=implicit-function-declaration]
       crtc_id = res->crtcs[ffs (crtcs_for_connector) - 1];
                            ^~~

gstkmssink.c:590:10: error: implicit declaration of function ‘strcmp’ [-Werror=implicit-function-declaration]
     if (!strcmp (property->name, prop_name)) {
          ^~~~~~

5 years agoFix -Werror=return-type error in configure.
Martin Liska [Mon, 15 Jul 2019 14:05:05 +0000 (16:05 +0200)]
Fix -Werror=return-type error in configure.

5 years agoaiff: Fix infinite loop in header parsing.
Martin Theriault [Mon, 15 Jul 2019 19:48:08 +0000 (15:48 -0400)]
aiff: Fix infinite loop in header parsing.

5 years agodecklinkvideosrc: Don't report that we have signal until we know for sure
Sebastian Dröge [Mon, 15 Jul 2019 09:06:25 +0000 (12:06 +0300)]
decklinkvideosrc: Don't report that we have signal until we know for sure

Previously we would've reported that there is signal unless we know for
sure that we don't have signal. For example signal would've been
reported before the device is even opened.

Now keep track whether the signal state is unknown or not and report no
signal if we don't know yet. As before, only send an INFO message about
signal recovery if we actually had a signal loss before.

5 years agoavwait: In running-time mode, select start/end running time based on the actual video...
Sebastian Dröge [Fri, 12 Jul 2019 09:53:09 +0000 (12:53 +0300)]
avwait: In running-time mode, select start/end running time based on the actual video timestamps

Otherwise we would start/end at exactly the given times, which might be
up to 1 frame earlier/later than the video.

5 years agoavwait: Add some more debug output
Sebastian Dröge [Fri, 12 Jul 2019 09:29:09 +0000 (12:29 +0300)]
avwait: Add some more debug output

5 years agoavwait: Fix clipping of audio buffers at the start of recording
Sebastian Dröge [Fri, 12 Jul 2019 09:28:59 +0000 (12:28 +0300)]
avwait: Fix clipping of audio buffers at the start of recording

5 years agobuild: Fix error messages for missing hotdoc extensions
Ting-Wei Lan [Tue, 9 Jul 2019 16:34:18 +0000 (00:34 +0800)]
build: Fix error messages for missing hotdoc extensions

5 years agocccombiner: Proxy POSITION/DURATION/URI/CAPS/ALLOCATION queries between video sinkpad...
Sebastian Dröge [Tue, 9 Jul 2019 09:43:53 +0000 (12:43 +0300)]
cccombiner: Proxy POSITION/DURATION/URI/CAPS/ALLOCATION queries between video sinkpad and source pad

We pass-through the video as is, only putting a GstMeta on it from the
caption sinkpad.

This fixes negotation problems caused by not passing through caps
queries in both directions.

Also handle CAPS/ACCEPT_CAPS queries directly for the caption pad
instead of proxying.

5 years agonvdec: Fix possible frame drop on EOS
Seungha Yang [Thu, 20 Dec 2018 03:37:43 +0000 (12:37 +0900)]
nvdec: Fix possible frame drop on EOS

On eos, baseclass videoencoder call finish() vfunc instead of drain()

5 years agodecklinkvideosrc: remove g_print
Ray Tiley [Mon, 8 Jul 2019 20:43:10 +0000 (16:43 -0400)]
decklinkvideosrc: remove g_print

Causes a lot of output :)

5 years agovulkan: Fix incompatible type build warning
Seungha Yang [Mon, 8 Jul 2019 14:58:29 +0000 (23:58 +0900)]
vulkan: Fix incompatible type build warning

Make declare/define a function consistent.
Note that GstBaseTransform::set_caps should return gboolean

Compiling C object subprojects/gst-plugins-bad/ext/vulkan/f3f9d6b@@gstvulkan@sha/vkviewconvert.c.obj.
../subprojects/gst-plugins-bad/ext/vulkan/vkviewconvert.c(644):
  warning C4133: '=': incompatible types - from 'GstFlowReturn (__cdecl *)(GstBaseTransform *,GstCaps *,GstCaps *)'
  to 'gboolean (__cdecl *)(GstBaseTransform *,GstCaps *,GstCaps *)'

5 years agosrt: Remove msg-size property
Olivier Crête [Mon, 8 Jul 2019 19:51:43 +0000 (15:51 -0400)]
srt: Remove msg-size property

Remove the now unused property

5 years agosrtsrc: Receive one frame per gstbuffer
Olivier Crête [Mon, 8 Jul 2019 19:50:59 +0000 (15:50 -0400)]
srtsrc: Receive one frame per gstbuffer

Don't aggregate the received data, just receive it one packet at a
time. So it keeps the packetization boundaries

5 years agosrt: Fix listener crash if no URI is specified
Nicolas Dufresne [Sat, 6 Jul 2019 20:15:40 +0000 (16:15 -0400)]
srt: Fix listener crash if no URI is specified

5 years agosrt: Use macro instead of duplicating a default value
Nicolas Dufresne [Sat, 6 Jul 2019 19:53:26 +0000 (15:53 -0400)]
srt: Use macro instead of duplicating a default value

5 years agosrt: Fix confusing typo in FIXME comment
Nicolas Dufresne [Sat, 6 Jul 2019 19:45:20 +0000 (15:45 -0400)]
srt: Fix confusing typo in FIXME comment

SRT does not support IPv6, but the comment said IPv4 which was the
opposite of the following code.

5 years agotimecodestamper: Add support for linear timecode (LTC) from an audio stream
Sebastian Dröge [Mon, 1 Jul 2019 10:43:28 +0000 (13:43 +0300)]
timecodestamper: Add support for linear timecode (LTC) from an audio stream

Based on a patch by
  Georg Lippitsch <glippitsch@toolsonair.com>
  Vivia Nikolaidou <vivia@toolsonair.com>

Using libltc from https://github.com/x42/libltc

5 years agotimecodestamper: Rewrite element API and code flow
Sebastian Dröge [Mon, 1 Jul 2019 10:42:16 +0000 (13:42 +0300)]
timecodestamper: Rewrite element API and code flow

We now have a single property to select the timecode source that should
be applied, and for each timecode source the timecode is updated at
every frame. Then based on a set mode, the timecode is added to the
frame if none exists already or all existing timecodes are removed and
the timecode is added.

In addition the real-time clock is considered a proper timecode source
now instead of only allowing to initialize once in the beginning with
it, and also instead of just taking the current time we now take the
current time at the clock time of the video frame.

5 years agonvcodec: do a generic cuda tests before going into version specifics
Marc Leeman [Fri, 7 Jun 2019 11:27:21 +0000 (13:27 +0200)]
nvcodec: do a generic cuda tests before going into version specifics

5 years agonvdec,nvenc: Port to dynamic library loading
Seungha Yang [Fri, 17 May 2019 13:27:50 +0000 (22:27 +0900)]
nvdec,nvenc: Port to dynamic library loading

... and put them into new nvcodec plugin.

* nvcodec plugin
Now each nvenc and nvdec element is moved to be a part of nvcodec plugin
for better interoperability.
Additionally, cuda runtime API header dependencies
(i.e., cuda_runtime_api.h and cuda_gl_interop.h) are removed.
Note that cuda runtime APIs have prefix "cuda". Since 1.16 release with
Windows support, only "cuda.h" and "cudaGL.h" dependent symbols have
been used except for some defined types. However, those types could be
replaced with other types which were defined by "cuda.h".

* dynamic library loading
CUDA library will be opened with g_module_open() instead of build-time linking.
On Windows, nvcuda.dll is installed to system path by CUDA Toolkit
installer, and on *nix, user should ensure that libcuda.so.1 can be
loadable (i.e., via LD_LIBRARY_PATH or default dlopen path)
Therefore, NVIDIA_VIDEO_CODEC_SDK_PATH env build time dependency for Windows
is removed.

5 years agod3d11videosink: Add new Direct3D11 video render plugin
Seungha Yang [Wed, 30 Jan 2019 11:07:29 +0000 (20:07 +0900)]
d3d11videosink: Add new Direct3D11 video render plugin

Direct3D11 was shipped as part of Windows7 and it's obviously
primary graphics API on Windows.

This plugin includes HDR10 rendering if following requirements are satisfied
* IDXGISwapChain4::SetHDRMetaData is available (decleared in dxgi1_5.h)
* Display can support DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 color space
* Upstream provides 10 bitdepth format with smpte-st 2084 static metadata

5 years agowebrtcbin: Don't assert if an SDP media can't be converted to caps
Sebastian Dröge [Fri, 5 Jul 2019 21:58:47 +0000 (00:58 +0300)]
webrtcbin: Don't assert if an SDP media can't be converted to caps

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1008

5 years agomsdk: add msdkvp9enc element
Haihao Xiang [Thu, 25 Apr 2019 08:32:34 +0000 (16:32 +0800)]
msdk: add msdkvp9enc element

5 years agomsdk: workaround for MFX_FOURCC_VP9_SEGMAP surface
Haihao Xiang [Sun, 28 Apr 2019 08:10:13 +0000 (16:10 +0800)]
msdk: workaround for MFX_FOURCC_VP9_SEGMAP surface

MFX_FOURCC_VP9_SEGMAP surface in MSDK is an internal surface however
MSDK still call the external allocator for this surface, so this plugin
has to return UNSUPPORTED and force MSDK allocates surface using the
internal allocator.

See https://github.com/Intel-Media-SDK/MediaSDK/issues/762 for details

5 years agomsdkenc: allow encode element requires extra frames
Haihao Xiang [Wed, 8 May 2019 08:05:07 +0000 (16:05 +0800)]
msdkenc: allow encode element requires extra frames

The call of MFXVideoENCODE_EncodeFrameAsync may not generate output and
the function returns MFX_ERR_MORE_DATA with NULL sync point, the input
frame is cached in this case, so it is possible that all allocated
frames go into the surfaces_used list after calling
MFXVideoENCODE_EncodeFrameAsync a few times, then the encoder will fail
to get an available surface before releasing used frames

This patch adds a new field of num_extra_frames to GstMsdkEnc and allows
encode element requires extra frames, the default value is 0.

This patch is the preparation for msdkvp9enc element.

5 years agotests/vulkan: fix copyright name
Matthew Waters [Fri, 5 Jul 2019 06:20:29 +0000 (16:20 +1000)]
tests/vulkan: fix copyright name

5 years agovulkan/window: add property for the parent display
Matthew Waters [Fri, 5 Jul 2019 06:20:05 +0000 (16:20 +1000)]
vulkan/window: add property for the parent display

5 years agovulkan/device: add property for the parent instance
Matthew Waters [Fri, 5 Jul 2019 06:13:13 +0000 (16:13 +1000)]
vulkan/device: add property for the parent instance

5 years agovulkan: add view converter element
Matthew Waters [Thu, 4 Jul 2019 07:22:07 +0000 (17:22 +1000)]
vulkan: add view converter element

5 years agovulkan: fix output framebuffer creation size
Matthew Waters [Thu, 4 Jul 2019 07:19:31 +0000 (17:19 +1000)]
vulkan: fix output framebuffer creation size

We don't scale when color converting so there is no impact.

5 years agotsmux: output smoothly increasing PTS when in CBR mode
Mathieu Duponchelle [Thu, 4 Jul 2019 23:26:26 +0000 (01:26 +0200)]
tsmux: output smoothly increasing PTS when in CBR mode

Thanks to that, when its output is plugged into eg a udp sink, the
outgoing data can be output in a smoother way, reducing burstiness

5 years agotests: Add h264parser SEI checks
Jan Schmidt [Thu, 4 Jul 2019 14:17:10 +0000 (00:17 +1000)]
tests: Add h264parser SEI checks

Add some tests around SEI parsing.

5 years agoh264parser lib: Add more profile_idc to the recognised set
Jan Schmidt [Fri, 28 Jun 2019 04:59:18 +0000 (14:59 +1000)]
h264parser lib: Add more profile_idc to the recognised set

Update the list of profile_idc recognised during SPS parsing
based on H.264 201704

5 years agoh264parse lib: Remove the SPS parse_vui_params flag
Jan Schmidt [Fri, 28 Jun 2019 04:50:00 +0000 (14:50 +1000)]
h264parse lib: Remove the SPS parse_vui_params flag

The SPS parsing functions take a parse_vui_param flag
to skip VUI parsing, but there's no indication in the output
SPS struct that the VUI was skipped.

The only caller that ever passed FALSE seems to be the
important gst_h264_parser_parse_nal() function, meaning - so the
cached SPS were always silently invalid. That needs changing
anyway, meaning noone ever passes FALSE.

I don't see any use for saving a few microseconds in
order to silently produce garbage, and since this is still
unstable API, let's remove the parse_vui_param.

5 years agoh264parser lib: Warn on invalid pic_timing SEI
Jan Schmidt [Fri, 28 Jun 2019 04:46:36 +0000 (14:46 +1000)]
h264parser lib: Warn on invalid pic_timing SEI

The spec calls for pic_timing SEI to be absent unless
there's either a CpbDpbDelaysPresentFlag or
pic_struct_present_flag in the SPS VUI data. If
both those flags are missing, warn.

5 years agoh264parser lib: Always consume all SEI bits
Jan Schmidt [Fri, 28 Jun 2019 04:42:19 +0000 (14:42 +1000)]
h264parser lib: Always consume all SEI bits

If parsing an SEI errors out, it might not consume
all bits, leaving extra unparsed data in the reader
that the outer loop then tries to parse as a new
appended SEI.

Skip all the bits if any are left over to avoid
'finding' extra garbage SEI in the parsing.

5 years agoh264parser: Return BROKEN_LINK for missing SPS
Jan Schmidt [Thu, 27 Jun 2019 16:42:00 +0000 (02:42 +1000)]
h264parser: Return BROKEN_LINK for missing SPS

When parsing SEI that require an SPS, return
GST_H264_PARSER_BROKEN_LINK instead of a generic
parsing error to let callers distinguish
bitstream errors from (expected) missing packets
when resuming decode.

5 years agoh264parser: Improve documentation
Jan Schmidt [Thu, 27 Jun 2019 15:26:19 +0000 (01:26 +1000)]
h264parser: Improve documentation

Improve some docs around the NALU structure contents

5 years agogstmpegvideoparser: Documentation fixes
Jan Schmidt [Thu, 27 Jun 2019 14:27:12 +0000 (00:27 +1000)]
gstmpegvideoparser: Documentation fixes

Fix some spelling mistakes and improve documentation in
the MPEG video parser

5 years agotsmuxstream: Do not try return from void function
Seungha Yang [Thu, 4 Jul 2019 10:43:42 +0000 (19:43 +0900)]
tsmuxstream: Do not try return from void function

../subprojects/gst-plugins-bad/gst/mpegtsmux/tsmux/tsmuxstream.c(1082): warning C4098:
  'tsmux_stream_get_es_descrs': 'void' function returning a value

5 years agompegtsmux: Remove white space
Seungha Yang [Thu, 4 Jul 2019 10:42:48 +0000 (19:42 +0900)]
mpegtsmux: Remove white space