platform/upstream/gstreamer.git
5 years agotests: Add AVTP CVF depayloader tests
Ederson de Souza [Tue, 26 Mar 2019 21:25:56 +0000 (14:25 -0700)]
tests: Add AVTP CVF depayloader tests

In these tests, some specially crafted buffers are sent to the
depayloader, simulating some scenarios and checking what comes out from
it.

5 years agotests: Add AVTP CVF payloader tests
Ederson de Souza [Tue, 26 Mar 2019 00:23:49 +0000 (17:23 -0700)]
tests: Add AVTP CVF payloader tests

In these tests, some specially crafted buffers are sent to the
payloader, simulating some scenarios and checking what comes out from
it.

5 years agotests: Add AVTP source tests
Andre Guedes [Thu, 2 May 2019 17:52:42 +0000 (10:52 -0700)]
tests: Add AVTP source tests

This patch adds test cases for the AVTP source element. For now, only
properties get() and set() are covered.

5 years agotests: Add AVTP sink tests
Andre Guedes [Thu, 25 Apr 2019 21:16:46 +0000 (14:16 -0700)]
tests: Add AVTP sink tests

This patch adds test cases for the AVTP sink element. For now, only
properties get() and set() are covered.

5 years agotests: Add AAF depayloader tests
Andre Guedes [Tue, 9 Apr 2019 21:10:36 +0000 (14:10 -0700)]
tests: Add AAF depayloader tests

This patch adds test cases for the AAF depayloader element covering the
basic functionalities.

5 years agotests: Add AAF payloader tests
Andre Guedes [Fri, 22 Mar 2019 22:54:23 +0000 (15:54 -0700)]
tests: Add AAF payloader tests

This patch adds the infrastructure to test AVTP plugin elements. It also
adds a test case to check avtpaafpay element basic functionality. The
test consists in setting the element sink caps and properties, and
verifying if the output buffer is set as expected.

5 years agodocs: Add AVTP elements documentation
Ederson de Souza [Wed, 17 Apr 2019 00:32:46 +0000 (17:32 -0700)]
docs: Add AVTP elements documentation

5 years agoavtp: Add fragmented packets handling to CVF depayloader
Ederson de Souza [Wed, 20 Mar 2019 23:40:13 +0000 (16:40 -0700)]
avtp: Add fragmented packets handling to CVF depayloader

This patch adds to the CVF depayloader the capability to regroup H.264
fragmented FU-A packets.

After all packets are regrouped, they are added to the "stash" of H.264
NAL units that will be sent as soon as an AVTP packet with M bit set is
found (usually, the last fragment).

Unrecognized fragments (such as first fragment seen, but with no Start
bit set) are discarded - and any NAL units on the "stash" are sent
downstream, as if a SEQNUM discontinuty happened.

5 years agoavtp: Introduce AVTP CVF depayloader element
Ederson de Souza [Tue, 12 Mar 2019 22:46:16 +0000 (15:46 -0700)]
avtp: Introduce AVTP CVF depayloader element

This patch introduces the AVTP Compressed Video Format (CVF) depayloader
specified in IEEE 1722-2016 section 8. Currently, this depayloader only
supports H.264 encapsulation described in section 8.5.

Is also worth noting that only single NAL units are handled: aggregated
and fragmented payloads are not handled.

As stated in AVTP CVF payloader patch, AVTP timestamp is used to define
outgoing buffer DTS, while the H264_TIMESTAMP defines outgoing buffer
PTS.

When an AVTP packet is received, the extracted H.264 NAL unit is added to
a "stash" (the out_buffer) of H.264 NAL units. This "stash" is pushed
downstream as single buffer (with NAL units aggregated according to format
used on GStreamer, based on ISO/IEC 14496-15) as soon as we get the AVTP
packet with M bit set.

This patch groups NAL units using a fixed NAL size lenght, sent downstream
on the `codec_data` capability.

The "stash" of NAL units can be prematurely sent downstream if a
discontinuity (a missing SEQNUM) happens.

This patch reuses the infra provided by gstavtpbasedepayload.c.

5 years agoavtp: Add fragmentation feature to CVF payloader
Ederson de Souza [Wed, 6 Mar 2019 02:09:13 +0000 (18:09 -0800)]
avtp: Add fragmentation feature to CVF payloader

Based on `mtu` property, the CVF payloader is now capable of properly
fragmenting H.264 NAL units that are bigger than MTU in several AVTP
packets.

AVTP spec defines two methods for fragmenting H.264 packets, but this
patch only generates non-interleaved FU-A fragments.

Usually, only the last NAL unit from a group of NAL units in a single
buffer will be big enough to be fragmented. Nevertheless, only the last
AVTP packet sent for a group of NAL units will have the M bit set (this
means that the AVTP packet for the last fragment will only have the M
bit set if there's no more NAL units in the group).

5 years agoavtp: Introduce AVTP CVF payloader element
Ederson de Souza [Thu, 28 Feb 2019 23:49:02 +0000 (15:49 -0800)]
avtp: Introduce AVTP CVF payloader element

This patch introduces the AVTP Compressed Video Format (CVF) payloader
specified in IEEE 1722-2016 section 8. Currently, this payload only
supports H.264 encapsulation described in section 8.5.

Is also worth noting that only single NAL units are encapsulated: no
aggregation or fragmentation is performed by the payloader.

An interesting characteristic of CVF H.264 spec is that it defines an
H264_TIMESTAMP, in addition to the AVTP timestamp. The later is
translated to the GST_BUFFER_DTS while the former is translated to the
GST_BUFFER_PTS. From AVTP CVF H.264 spec, it is clear that the AVTP
timestamp is related to the decoding order, while the H264_TIMESTAMP is
an ancillary information to the H.264 decoder.

Upon receiving a buffer containing a group of NAL units, the avtpcvfpay
element will extract each NAL unit and payload them into individual AVTP
packets. The last AVTP packet generated for a group of NAL units will
have the M bit set, so the depayloader is able to properly regroup them.

The exact format of the buffer of NAL units is described on the
'codec_data' capability, which is parsed by the avtpcvfpay, in the same
way done in rtph264pay.

This patch reuses the infra provided by gstavtpbasepayload.c.

5 years agoavtp: Introduce AVTP source element
Andre Guedes [Wed, 23 Jan 2019 23:17:48 +0000 (15:17 -0800)]
avtp: Introduce AVTP source element

This patch introduces the avtpsrc element which implements a typical
network source. The avtpsrc element receives AVTPDUs encapsulated into
Ethernet frames and push them downstream in the GStreamer pipeline.
Implementation if pretty straightforward since the burden is implemented
by GstPushSrc class.

Likewise the avtpsink element, applications that utilize this element
must have CAP_NET_RAW capability since it is required by Linux to open
sockets from AF_PACKET domain.

5 years agoavtp: Introduce AVTP sink element
Andre Guedes [Wed, 23 Jan 2019 18:56:10 +0000 (10:56 -0800)]
avtp: Introduce AVTP sink element

This patch introduces the avtpsink elements which implements a typical
network sink. Implementation is pretty straightforward since the burden
is implemented by GstBaseSink class.

The avtpsink element defines three new properties: 1) network interface
from where AVTPDU should be transmitted, 2) destination MAC address
(usually a multicast address), and 3) socket priority (SO_PRIORITY).

Socket setup and teardown are done in start/stop virtual methods while
AVTPDU transmission is carried out by render(). AVTPDUs are encapsulated
into Ethernet frames and transmitted to the network via AF_PACKET socket
domain.  Linux requires CAP_NET_RAW capability in order to open an
AF_PACKET socket so the application that utilize this element must have
it. For further info about AF_PACKET socket domain see packet(7).

Finally, AVTPDUs are expected to be transmitted at specific times -
according to the GstBuffer presentation timestamp - so the 'sync'
property from GstBaseSink is set to TRUE by default.

5 years agoavtp: Introduce AAF depayloader element
Andre Guedes [Thu, 24 Jan 2019 00:20:27 +0000 (16:20 -0800)]
avtp: Introduce AAF depayloader element

This patch introduces the AAF depayloader element, the counterpart from
the AAF payloader. As expected, this element inputs AVTPDUs and outputs
audio raw data and supports AAF PCM encapsulation only.

The AAF depayloader srcpad produces a fixed format that is encoded
within the AVTPDU. Once the first AVTPDU is received by the element, the
audio features e.g. sample format, rate, number of channels, are decoded
and the srcpad caps are set accordingly. Also, at this point, the
element pushes a SEGMENT event downstream defining the segment according
to the AVTP presentation time.

All AVTP depayloaders will share some common code. For that reason, this
patch introduces the GstAvtpBaseDepayload abstract class that implements
common depayloader functionalities. AAF-specific functionalities are
implemented in the derived class GstAvtpAafDepay.

5 years agoavtp: Introduce AAF payloader element
Andre Guedes [Thu, 17 Jan 2019 01:16:59 +0000 (17:16 -0800)]
avtp: Introduce AAF payloader element

This patch introduces the AVTP Audio Format (AAF) payloader element from
the AVTP plugin. The element inputs audio raw data and outputs AVTP
packets (aka AVTPDUs), implementing a typical protocol payloader element
from GStreamer.

AAF is one of the available formats to transport audio data in an AVTP
system. AAF is specified in IEEE 1722-2016 section 7 and provides two
encapsulation mode: PCM and AES3. This patch implements PCM
encapsulation mode only.

The AAF payloader working mechanism consists of building the AAF header,
prepending it to the GstBuffer received on the sink pad, and pushing the
buffer downstream. Payloader parameters such as stream ID, maximum
transit time, time uncertainty, and timestamping mode are passed via
element properties. AAF doesn't support all possible sample format and
sampling rate values so the sink pad caps template from the payloader is
a subset of audio/x-raw. Additionally, this patch implements only
"normal" timestamping mode from AAF. "Sparse" mode should be implemented
in future.

Upcoming patches will introduce other AVTP payloader elements that will
have some common code. For that reason, this patch introduces the
GstAvtpBasePayload abstract class that implements common payloader
functionalities, and the GstAvtpAafPay class that extends the
GstAvtpBasePayload class, implementing AAF-specific functionalities.

The AAF payloader element is most likely to be used with the AVTP sink
element (to be introduced by a later patch) but it could also be used
with UDP sink element to implement AVTP over UDP as described in IEEE
1722-2016 Annex J.

This element was inspired by RTP payloader elements.

5 years agoavtp: AVTP plugin bootstrap code
Andre Guedes [Mon, 14 Jan 2019 18:18:42 +0000 (10:18 -0800)]
avtp: AVTP plugin bootstrap code

This patch introduces the bootstrap code from the AVTP plugin (plugin
definition and init) as well as the build system files. Upcoming patches
will introduce payloaders, source and sink elements provided by the AVTP
plugin. These elements can be utilized by a GStreamer pipeline to
implement TSN audio/video applications.

Regarding the plugin build system files, both autotools and meson files
are introduced. The AVTP plugin is landed in ext/ since it has an
external dependency on libavtp, an opensource AVTP packetization
library. For further information about libavtp check [1].

[1] https://github.com/AVnu/libavtp

5 years agoh265parse: Don't segfault when SPS hasn't been seen yet.
Jan Schmidt [Wed, 3 Jul 2019 15:12:06 +0000 (01:12 +1000)]
h265parse: Don't segfault when SPS hasn't been seen yet.

Fix a recently introduced segfault. Don't de-reference a NULL
SPS pointer when attempting to update source caps before SPS
has been seen in the stream.

5 years agoirtspparse: handle multiple and incomplete frames
OleksandrKvl [Tue, 2 Jul 2019 11:30:35 +0000 (14:30 +0300)]
irtspparse: handle multiple and incomplete frames

Interleaved frames can be fragmented between
incoming frames. Thus, we can have multiple
frames within the single input frame, as well as
incomplete frame. Now it preserves parsing
state and handle both situations.

Fixes #991

5 years agomsdk: don't share context between msdkvpp and msdkenc
Haihao Xiang [Mon, 24 Jun 2019 05:33:54 +0000 (13:33 +0800)]
msdk: don't share context between msdkvpp and msdkenc

msdkenc supports CSC implicitly, so it is possible that two VPP
processes are required when a pipeline contains msdkvpp and msdkenc.
Before this fix, msdkvpp and msdkenc may share the same context, hence
the same mfx session, which results in MFX_ERR_UNDEFINED_BEHAVIOR
in MSDK because a mfx session has at most one VPP process only

This fixes the broken pipelines below:

gst-launch-1.0 videotestsrc ! video/x-raw,format=I420 ! msdkh264enc ! \
msdkh264dec ! msdkvpp ! video/x-raw,format=YUY2 ! fakesink

gst-launch-1.0 videotestsrc ! msdkvpp ! video/x-raw,format=YUY2 ! \
msdkh264enc ! fakesink

5 years agomsdkmjpegdec: support 422 output
U. Artie Eoff [Sat, 22 Jun 2019 01:18:44 +0000 (18:18 -0700)]
msdkmjpegdec: support 422 output

MSDK supports JPEG YUY2 (422 chroma) output color
format. The color format of input bitstream is
described by JPEGChromaFormat and JPEGColorFormat
fields in the mfxInfoMFX structure which is filled
in by the MFXVideoDECODE_DecodeHeader function.

To obtain lossless decoded output from 422 encoded
JPEGs, we must set the output color format in the
FourCC and ChromaFormat fields in the mfxFrameInfo
structure to the appropriate values at post_configure
so that they are propagated through to the srcpad
caps accordingly.

5 years agomsdkdec: add post_configure virtual method
U. Artie Eoff [Sat, 22 Jun 2019 01:12:48 +0000 (18:12 -0700)]
msdkdec: add post_configure virtual method

A post_configure virtual method is added to allow
codec subclasses to adjust the initialized parameters
after MFXVideoDECODE_DecodeHeader is called from the
gstmsdkdec::gst_msdkdec_handle_frame function.

This is useful if codecs want to adjust the output
parameters based on the codec-specific decoding
options that are present in the mfxInfoMFX structure
after MFXVideoDECODE_DecodeHeader initializes them.

5 years agomsdkvp9dec: add support for VP9 444
Haihao Xiang [Mon, 3 Jun 2019 08:25:57 +0000 (16:25 +0800)]
msdkvp9dec: add support for VP9 444

The output formats are VUYA for 8bit 444 and Y410 for 10bit 444.

5 years agomsdkh265dec: add support for main-444-10/main-444-10-intra profile
Haihao Xiang [Fri, 31 May 2019 08:34:54 +0000 (16:34 +0800)]
msdkh265dec: add support for main-444-10/main-444-10-intra profile

The output format is Y410

5 years agomsdk: return a right pointer for Y410 when mapping a frame
Haihao Xiang [Fri, 31 May 2019 08:22:08 +0000 (16:22 +0800)]
msdk: return a right pointer for Y410 when mapping a frame

5 years agomsdk: set right BitDepth and Shift for Y410 mfx frame
Haihao Xiang [Mon, 3 Jun 2019 06:05:07 +0000 (14:05 +0800)]
msdk: set right BitDepth and Shift for Y410 mfx frame

BitDepth is 10 and Shitf must be set to 0 when creating Y410 mfx
frame in MSDK

5 years agomsdk: set parameters in mfxFrameData for a MFX_FOURCC_Y410 frame
Haihao Xiang [Fri, 31 May 2019 07:37:51 +0000 (15:37 +0800)]
msdk: set parameters in mfxFrameData for a MFX_FOURCC_Y410 frame

5 years agomsdk: map MFX_FOURCC_Y410 to VA_FOURCC_Y410
Haihao Xiang [Fri, 31 May 2019 07:26:50 +0000 (15:26 +0800)]
msdk: map MFX_FOURCC_Y410 to VA_FOURCC_Y410

5 years agomsdk: map GST_VIDEO_FORMAT_Y410 to VA_FOURCC_Y410
Haihao Xiang [Fri, 31 May 2019 07:21:05 +0000 (15:21 +0800)]
msdk: map GST_VIDEO_FORMAT_Y410 to VA_FOURCC_Y410

5 years agomsdk: map GST_VIDEO_FORMAT_Y410 to MFX_FOURCC_Y410
Haihao Xiang [Fri, 31 May 2019 07:13:47 +0000 (15:13 +0800)]
msdk: map GST_VIDEO_FORMAT_Y410 to MFX_FOURCC_Y410

5 years agomsdkh265dec: add support for main-444 profile
Haihao Xiang [Fri, 31 May 2019 04:48:15 +0000 (12:48 +0800)]
msdkh265dec: add support for main-444 profile

The output format is VUYA

5 years agomsdkh265dec: add support for main-422-10/main-422-10-intra 10bit
Haihao Xiang [Thu, 30 May 2019 03:13:26 +0000 (11:13 +0800)]
msdkh265dec: add support for main-422-10/main-422-10-intra 10bit

The ouput format is Y210

5 years agomsdk: set right BitDepth and Shift for Y210 mfx frame
Haihao Xiang [Thu, 30 May 2019 04:20:54 +0000 (12:20 +0800)]
msdk: set right BitDepth and Shift for Y210 mfx frame

BitDepth is 10 and Shitf must be set to 1 when creating Y210 mfx
frame in MSDK

5 years agomsdk: set parameters in mfxFrameData for a MFX_FOURCC_Y210 frame
Haihao Xiang [Thu, 30 May 2019 03:10:58 +0000 (11:10 +0800)]
msdk: set parameters in mfxFrameData for a MFX_FOURCC_Y210 frame

5 years agomsdk: map MFX_FOURCC_Y210 to VA_FOURCC_Y210
Haihao Xiang [Thu, 30 May 2019 03:02:08 +0000 (11:02 +0800)]
msdk: map MFX_FOURCC_Y210 to VA_FOURCC_Y210

5 years agomsdk: map GST_VIDEO_FORMAT_Y210 to VA_FOURCC_Y210
Haihao Xiang [Thu, 30 May 2019 01:56:43 +0000 (09:56 +0800)]
msdk: map GST_VIDEO_FORMAT_Y210 to VA_FOURCC_Y210

5 years agomsdk: map GST_VIDEO_FORMAT_Y210 to MFX_FOURCC_Y210
Haihao Xiang [Thu, 30 May 2019 01:49:22 +0000 (09:49 +0800)]
msdk: map GST_VIDEO_FORMAT_Y210 to MFX_FOURCC_Y210

5 years agomsdkh265dec: add support for main-422-10/main-422-10-intra 8bit
Haihao Xiang [Tue, 28 May 2019 08:50:59 +0000 (16:50 +0800)]
msdkh265dec: add support for main-422-10/main-422-10-intra 8bit

The output format is YUY2

5 years agouvch264: Fix autotools build.
Jan Schmidt [Fri, 28 Jun 2019 05:46:22 +0000 (15:46 +1000)]
uvch264: Fix autotools build.

Add gstuvch264deviceprovider.c to the Makefile.am missed
in MR 387

5 years agortp: Fix incompatible type build warning
Seungha Yang [Wed, 26 Jun 2019 10:53:51 +0000 (19:53 +0900)]
rtp: Fix incompatible type build warning

Use GstURIType instead of guint

../subprojects/gst-plugins-bad/gst/rtp/gstrtpsink.c(575):
    warning C4133: '=': incompatible types ...

../subprojects/gst-plugins-bad/gst/rtp/gstrtpsrc.c(725):
    warning C4133: '=': incompatible types ...

5 years agodtlsagent: Clear the certificate upon finalize
Juan Navarro [Tue, 25 Jun 2019 18:37:57 +0000 (20:37 +0200)]
dtlsagent: Clear the certificate upon finalize

Cleaning this up was likely just forgotten

5 years agodtlsdec: Avoid duplicate ref when passing certificate property
Juan Navarro [Tue, 25 Jun 2019 18:37:38 +0000 (20:37 +0200)]
dtlsdec: Avoid duplicate ref when passing certificate property

The agent itself will take a ref on the property setter, so we'll be
left with two references to the certificate object, when actually there
should be only one

5 years agomeson: bluez: Early terminate configure on Windows
Seungha Yang [Mon, 20 May 2019 14:19:19 +0000 (23:19 +0900)]
meson: bluez: Early terminate configure on Windows

This plugin is for linux bluetooth stack. So the early termination can save
configure time on Windows (i.e., we can avoid glib subproject fallback)

5 years agowpe: Port for WPEWebKit 2.25.x
Philippe Normand [Wed, 12 Jun 2019 10:12:37 +0000 (11:12 +0100)]
wpe: Port for WPEWebKit 2.25.x

When WPEBackend-fdo >= 1.3.0 is detected, the threaded view now relies on the
wpe_fdo_egl_exported_image API instead of the EGLImageKHR-based API which is
going to be deprecated in 2.26. The GLib sources created by the view now use the
default priority as well, the custom priority is no longer required.

5 years agopcapparse: Fix handling of TCP payload length
OleksandrKvl [Mon, 24 Jun 2019 15:39:35 +0000 (18:39 +0300)]
pcapparse: Fix handling of TCP payload length

The length of the  TCP payload is the IP plus TCP header length
subtracted from the IP datagram length specified in the IP header.
Prior to this, the size was calculated incorrectly, considering
all data after TCP header as a payload till the end of a packet.

Fixes #995

5 years agoavwait: Make sure to never unref an input buffer we already unreffed before
Sebastian Dröge [Mon, 24 Jun 2019 10:50:19 +0000 (13:50 +0300)]
avwait: Make sure to never unref an input buffer we already unreffed before

5 years agoavwait: Add support for setting an end running time
Sebastian Dröge [Thu, 20 Jun 2019 16:59:16 +0000 (19:59 +0300)]
avwait: Add support for setting an end running time

It was possible to set a start running time and start/end timecode
before, but not an end running time.

5 years agoavwait: Correctly stop recording and signal recording stop on EOS
Sebastian Dröge [Thu, 20 Jun 2019 14:50:43 +0000 (17:50 +0300)]
avwait: Correctly stop recording and signal recording stop on EOS

If recording is set to FALSE after the last audio or video buffer and
before the EOS event then recording stop is never signalled.

Similarly, we should signal recording stop once both audio and video are
EOS, regardless of the recording property, as there's nothing to be
recorded anymore.

5 years agovkswapper: support rescaling to the output size
Matthew Waters [Mon, 24 Jun 2019 06:22:47 +0000 (16:22 +1000)]
vkswapper: support rescaling to the output size

5 years agovksink: Don't take vulkan buffer's as input
Matthew Waters [Mon, 24 Jun 2019 05:32:25 +0000 (15:32 +1000)]
vksink: Don't take vulkan buffer's as input

5 years agotests/vkcolorconvert: remove extra instance/device creation
Matthew Waters [Mon, 24 Jun 2019 05:30:56 +0000 (15:30 +1000)]
tests/vkcolorconvert: remove extra instance/device creation

It's unnecessary.

5 years agodecklink: Correctly ensure >=16 byte alignment for the buffers we allocate
Sebastian Dröge [Thu, 20 Jun 2019 05:59:22 +0000 (08:59 +0300)]
decklink: Correctly ensure >=16 byte alignment for the buffers we allocate

We'll ensure at least 64 byte alignment for AVX2 but 16 byte alignment
is what is required by the decklink SDK.

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

5 years agowebrtc: Fix data-channel send-string doc
Philippe Normand [Sun, 23 Jun 2019 16:03:32 +0000 (17:03 +0100)]
webrtc: Fix data-channel send-string doc

5 years agodecklinkvideosrc: Notify about signal loss even when dropping no-signal frames
Sebastian Dröge [Thu, 20 Jun 2019 07:04:06 +0000 (10:04 +0300)]
decklinkvideosrc: Notify about signal loss even when dropping no-signal frames

Otherwise the application has no way of knowing that signal loss
happened other than noticing a gap between actual frames.

5 years agovulkan: remove unused downsample AYUV shader
Matthew Waters [Thu, 20 Jun 2019 04:36:02 +0000 (14:36 +1000)]
vulkan: remove unused downsample AYUV shader

5 years agowebrtcbin: fix DTLS when receivebin is set to DROP
Mathieu Duponchelle [Wed, 19 Jun 2019 17:43:14 +0000 (19:43 +0200)]
webrtcbin: fix DTLS when receivebin is set to DROP

Regression introduced by b4bdcf15b7237eb5c5943c4f746701a477333000

This commit prevents the handshake from reaching dtlsdec when
the receive state of the receive bin is set to DROP (for example
when transceivers are sendonly).

This preserves the intent of the commit, by blocking the bin
at its sinks until the receive state is no longer BLOCK, but
makes sure the handshake still goes through, by only dropping
data at the src pads, as was the case before.

5 years agovkcolorconvert: add support for RGB<->NV12
Matthew Waters [Wed, 19 Jun 2019 15:39:53 +0000 (01:39 +1000)]
vkcolorconvert: add support for RGB<->NV12

5 years agovkbuffermemory: report requested size of the memory
Matthew Waters [Wed, 19 Jun 2019 15:36:55 +0000 (01:36 +1000)]
vkbuffermemory: report requested size of the memory

Rather than using Vulkan's much larger aligned sizes. Fixes multi-planer
video with the GstVideoFrame API.

5 years agovulkancolorconvert: support RGB <-> AYUV/YUY2/UYVY
Matthew Waters [Wed, 19 Jun 2019 09:09:21 +0000 (19:09 +1000)]
vulkancolorconvert: support RGB <-> AYUV/YUY2/UYVY

5 years agovktrash: add mini_object_unref destroy function
Matthew Waters [Wed, 19 Jun 2019 05:28:42 +0000 (15:28 +1000)]
vktrash: add mini_object_unref destroy function

5 years agovkfullscreenrender: create descriptor sets later
Matthew Waters [Wed, 19 Jun 2019 05:27:11 +0000 (15:27 +1000)]
vkfullscreenrender: create descriptor sets later

The desciptor sets may be dependant on the caps

5 years agovulkan/shaders: change glslc compilation args based on configurations
Matthew Waters [Wed, 19 Jun 2019 05:25:18 +0000 (15:25 +1000)]
vulkan/shaders: change glslc compilation args based on configurations

Add depfile support so that modifying an #included glsl snippet
rebuilds all the dependant shaders.

5 years agovulkan: add a color conversion element
Matthew Waters [Thu, 13 Jun 2019 08:05:40 +0000 (18:05 +1000)]
vulkan: add a color conversion element

Currently converts between all 4-component RGBA/RGBx formats.

5 years agovulkan: add some information on vulkan formats
Matthew Waters [Thu, 13 Jun 2019 07:57:51 +0000 (17:57 +1000)]
vulkan: add some information on vulkan formats

5 years agovkupload: Also implement copying non vulkan memory into vulkan buffers
Matthew Waters [Thu, 13 Jun 2019 07:44:22 +0000 (17:44 +1000)]
vkupload: Also implement copying non vulkan memory into vulkan buffers

The only way we can upload things is through our memory so any
non-vulkan memory that appears must be copied into our memory.

5 years agovulkan: add download element
Matthew Waters [Thu, 13 Jun 2019 07:05:44 +0000 (17:05 +1000)]
vulkan: add download element

Currently only downloads images into a host-visible buffer and
synchronises immediately.

5 years agovulkan/identity: Split out most rendering code to a base class
Matthew Waters [Mon, 10 Jun 2019 16:05:32 +0000 (02:05 +1000)]
vulkan/identity: Split out most rendering code to a base class

A simple base class that renders a 2d fullscreen quad parallel to the
screen surface inside the view frustum.

5 years agovkupload: fix a structure sType
Matthew Waters [Wed, 12 Jun 2019 08:25:00 +0000 (18:25 +1000)]
vkupload: fix a structure sType

5 years agovulkan: ensure initialization of a couple of debug categories
Matthew Waters [Tue, 11 Jun 2019 08:37:59 +0000 (18:37 +1000)]
vulkan: ensure initialization of a couple of debug categories

Needed when some of the context querying functions can be called before
an instance has been created.

5 years agovksink: Retrieve vulkan queue earlier
Matthew Waters [Tue, 21 May 2019 07:19:00 +0000 (17:19 +1000)]
vksink: Retrieve vulkan queue earlier

Allows using the swapper's queue over upstream's queue.  The swapper
will check for the necessary presentation support that upstream may not
consider.

5 years agompegvideoparse: Pass through interlace-mode field from upstream if available
Sebastian Dröge [Wed, 19 Jun 2019 11:13:02 +0000 (14:13 +0300)]
mpegvideoparse: Pass through interlace-mode field from upstream if available

We generally always prefer the information from upstream for other
metadata (pixel-aspect-ration, etc.) and should also do so here.

Other parsers (h264parse) already do the same.

5 years agozbar: Include running-time, stream-time and duration in the messages
Sebastian Dröge [Wed, 19 Jun 2019 10:31:39 +0000 (13:31 +0300)]
zbar: Include running-time, stream-time and duration in the messages

The timestamp/PTS alone is meaningless without the segment and usually
applications care about the running-time or stream-time.

This also keeps the messages in sync with the spectrum and level
elements.

5 years agotests: hls: Add a test case for EXT-X-MAP tag
Seungha Yang [Sat, 4 Nov 2017 11:40:18 +0000 (20:40 +0900)]
tests: hls: Add a test case for EXT-X-MAP tag

https://bugzilla.gnome.org/show_bug.cgi?id=776928

5 years agotests: Enable hls m3u8 unit test with meson build
Seungha Yang [Sun, 12 May 2019 10:21:23 +0000 (19:21 +0900)]
tests: Enable hls m3u8 unit test with meson build

5 years agohlsdemux: Set fragment header uri if exists
Seungha Yang [Sat, 4 Nov 2017 11:39:39 +0000 (20:39 +0900)]
hlsdemux: Set fragment header uri if exists

To allow downloading fragment hearder, set its uri if there is
available "Media Initialization" parsed from EXT-X-MAP tag

https://bugzilla.gnome.org/show_bug.cgi?id=776928

5 years agohls: m3u8: Parsing EXT-X-MAP tag to store initialization data
Seungha Yang [Sat, 4 Nov 2017 11:15:33 +0000 (20:15 +0900)]
hls: m3u8: Parsing EXT-X-MAP tag to store initialization data

EXT-X-MAP tag informs media initialization data,
such as moov box in ISOBMFF case and PAT/PMT for MPEG TS stream.

https://bugzilla.gnome.org/show_bug.cgi?id=776928

5 years agohlsdemux: Do not clear/advance fragment by finished header downloading
Seungha Yang [Mon, 30 Jan 2017 05:13:06 +0000 (14:13 +0900)]
hlsdemux: Do not clear/advance fragment by finished header downloading

Header data must be forwarded to downstream, but if demux does not finish
to finding type (e.g., ts, mp4 and etc), this header data can be cleared
by _stream_clear_pending_data(). Moreover, although demux finish downloading
header data, still it has fragment date to be downloaded, fragment sequence
shouldn't be advanced yet at that moment.

https://bugzilla.gnome.org/show_bug.cgi?id=776928

5 years agotests: insertbin: Don't use duplicated variable name
Seungha Yang [Tue, 19 Feb 2019 12:46:43 +0000 (21:46 +0900)]
tests: insertbin: Don't use duplicated variable name

../subprojects/gst-plugins-bad/tests/check/libs/insertbin.c(46): warning C4273:
  'mutex': ...

The "mutex" was declared in gstcheck.h already

5 years agoapplemedia: add the '-fobjc-arc' for darwin/ios
Matthew Waters [Mon, 17 Jun 2019 04:58:50 +0000 (14:58 +1000)]
applemedia: add the '-fobjc-arc' for darwin/ios

We use ARC so we need to signal that to the compiler.

5 years agouvch264: Implement device provider
Thibault Saunier [Mon, 3 Jun 2019 16:18:13 +0000 (12:18 -0400)]
uvch264: Implement device provider

5 years agouvch264: Factor out checking if v4l2device is uvc compatible
Thibault Saunier [Mon, 3 Jun 2019 16:17:22 +0000 (12:17 -0400)]
uvch264: Factor out checking if v4l2device is uvc compatible

5 years agoh265parse: update parser state and header flag when using fallback sps
Nicola Murino [Mon, 8 Apr 2019 17:24:00 +0000 (19:24 +0200)]
h265parse: update parser state and header flag when using fallback sps

When sps parsing fails we use a fallback sps from the caps, since we
have got an sps we need to update parser state and header as in the case the
sps was successfully parsed

5 years agoh264parse: update parser state and header flag when using fallback sps
Nicola Murino [Mon, 26 Nov 2018 16:23:21 +0000 (17:23 +0100)]
h264parse: update parser state and header flag when using fallback sps

When sps parsing fails we use a fallback sps from the caps, since we
have got an sps we need to update parser state and header as in the case the
sps was successfully parsed

Closes #503

5 years agoh264parse: Post a WARNING when data is broken
Thibault Saunier [Fri, 31 May 2019 14:12:54 +0000 (10:12 -0400)]
h264parse: Post a WARNING when data is broken

5 years agoh265parse: Add more string representations of extension profiles
Seungha Yang [Wed, 12 Jun 2019 06:47:52 +0000 (15:47 +0900)]
h265parse: Add more string representations of extension profiles

5 years agoh265parser: Add more profiles to known type
Seungha Yang [Wed, 12 Jun 2019 06:32:17 +0000 (15:32 +0900)]
h265parser: Add more profiles to known type

"High Throughput", "Multiview", "Scalable", "3D", "Screen Content Coding",
and "Scalable format range extensions" profiles can be supported
via h265parser APIs now.

5 years agoh265parse: Update framerate when we found vps_timing_info
Dong Il Park [Thu, 18 Apr 2019 09:12:34 +0000 (18:12 +0900)]
h265parse: Update framerate when we found vps_timing_info

The timing_info was described at vps or vui parameter.
So we can update the framerate field of GstCaps when we could
parse vps_timing_info parameters.

5 years agoh265parser: Use vps_timing_info when not present in vui
Dong Il Park [Thu, 18 Apr 2019 07:54:51 +0000 (16:54 +0900)]
h265parser: Use vps_timing_info when not present in vui

The same timing_info will be present at vps or vui.
When the timeing_info is present in the VPS, vui_timing_info
, when present, shall be equal to vps_timing_info, and when
not present, is inferred to be equal to vps_timing_info.

5 years agovulkan: Add support WIN32 for Windows
Seungha Yang [Sat, 8 Jun 2019 13:57:21 +0000 (22:57 +0900)]
vulkan: Add support WIN32 for Windows

It's almost a fork of glwindow_win32 implementation.
To build on Windows, Vulkan SDK (at https://vulkan.lunarg.com/sdk/home)
and VK_SDK_PATH environment are required. Note that VK_SDK_PATH environment
setting is a part of the SDK installation.

5 years agoavdtpsrc: Honour initial transport volume setting before connection
Arun Raghavan [Wed, 12 Jun 2019 08:12:14 +0000 (10:12 +0200)]
avdtpsrc: Honour initial transport volume setting before connection

We make the binding go from the avdtpsrc to the transport, so that any
initial setting before a connection made is used.

5 years agouvch264src: Make sure we set our segment
Thibault Saunier [Tue, 11 Jun 2019 16:10:13 +0000 (12:10 -0400)]
uvch264src: Make sure we set our segment

We were not setting self->segment and we are using it
when notifying downstream that we handled a REQUEST_KEY_UNIT
event, leading to all sort of criticals.

5 years agoh265parse: Don't miss constraint indicator flags in codec data
Seungha Yang [Tue, 11 Jun 2019 05:28:22 +0000 (14:28 +0900)]
h265parse: Don't miss constraint indicator flags in codec data

Set more unhandled flags to general_constraint_indicator_flags field.
The field is required for building "Codecs" parameter as defined
ISO/IEC 14496-15 Annex E. The resulting "Codecs" string might be used
in various places (e.g., HLS/DASH manifest, browser, player, etc)

5 years agortpmanagerbad: fix the plugin registration
Marc Leeman [Fri, 7 Jun 2019 14:12:25 +0000 (14:12 +0000)]
rtpmanagerbad: fix the plugin registration

After compilation, the compiled library needs to be added to the list
of plugin libraries.
.
Also, fix for static builds

5 years agoRemove VDPAU plugin
Tim-Philipp Müller [Thu, 6 Jun 2019 17:22:43 +0000 (18:22 +0100)]
Remove VDPAU plugin

It's been replaced by NVENC/NVDEC and even NVIDIA doesn't
support VDPAU any longer and hasn't for quite some time.

The plugin has been unmaintained and unsupported for a very
long time, and given the track record over the last 10 years
it seems highly unlikely anyone is going to make it work well,
not to mention adding plumbing for proper zero-copy or
gst-gl integration.

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

5 years agoautotools: fix distcheck
Tim-Philipp Müller [Thu, 6 Jun 2019 17:36:00 +0000 (18:36 +0100)]
autotools: fix distcheck

5 years agoautotools: remove gst/rtp/ from cruft dir list
Tim-Philipp Müller [Wed, 5 Jun 2019 16:10:19 +0000 (17:10 +0100)]
autotools: remove gst/rtp/ from cruft dir list

5 years agortp: fix autotools build some more
Tim-Philipp Müller [Wed, 5 Jun 2019 15:58:32 +0000 (16:58 +0100)]
rtp: fix autotools build some more

5 years agowpe: Fix build with -Werror enabled
Philippe Normand [Wed, 5 Jun 2019 11:47:16 +0000 (12:47 +0100)]
wpe: Fix build with -Werror enabled

Including gl.h from WPEThreadedView.h leads to GST_LEVEL_DEFAULT detected as
redefined. The proposed fix is to include config.h from the CPP implementation
file and disable gl.h inclusion in the header, by using forward declarations.

5 years agoavwait: Allow start and end timecode to be set back to NULL
Sebastian Dröge [Wed, 5 Jun 2019 08:46:49 +0000 (11:46 +0300)]
avwait: Allow start and end timecode to be set back to NULL

And check everywhere if they're NULL before accessing them.

5 years agoUse G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally
Niels De Graef [Wed, 5 Jun 2019 06:12:10 +0000 (08:12 +0200)]
Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally

Since we started depending on GLib 2.44, we can be sure this macro is
defined (it will be a no-op on compilers that don't support it).

5 years agotests/vulkan: allow instance creation failures
Matthew Waters [Tue, 21 May 2019 04:04:07 +0000 (14:04 +1000)]
tests/vulkan: allow instance creation failures

Usually means that there is no vulkan implementation available.

We skip tests in that case