platform/upstream/gstreamer.git
4 years agomsdkenc: remove unneeded label
Haihao Xiang [Mon, 16 Sep 2019 02:52:53 +0000 (10:52 +0800)]
msdkenc: remove unneeded label

4 years agoGstViewfinderBin: Fix typo in videoscale's name element
VaL Doroshchuk [Mon, 9 Sep 2019 13:28:32 +0000 (15:28 +0200)]
GstViewfinderBin: Fix typo in videoscale's name element

If user's video sink has been changed, it is unable to fetch
videoscale element by name and link to the video sink.

4 years agoapplemedia/videocache: remove unimplemented/used upload function
Matthew Waters [Mon, 26 Aug 2019 06:48:13 +0000 (16:48 +1000)]
applemedia/videocache: remove unimplemented/used upload function

4 years agovulkan/window/ios: fix race on window startup
Matthew Waters [Wed, 11 Sep 2019 13:09:35 +0000 (23:09 +1000)]
vulkan/window/ios: fix race on window startup

1. The iOS create_surface implementation needs to call out to the main
thread to create the window (UIKit requirement)
2. get_surface() can be called and will attempt to create the VkSurface
from an invalid view/layer.

Also pass the layer for MoltenVK so we don't get pesky 'UIView function
not called on main thread' warnings.

4 years agovulkan: create the macos/ios-specific displays
Matthew Waters [Wed, 11 Sep 2019 14:10:37 +0000 (00:10 +1000)]
vulkan: create the macos/ios-specific displays

4 years agovulkan: install public gstvkdebug.h header
Matthew Waters [Thu, 12 Sep 2019 05:29:05 +0000 (15:29 +1000)]
vulkan: install public gstvkdebug.h header

4 years agomsdkdec: set pointer to NULL to avoid freeing an used surface
Haihao Xiang [Wed, 11 Sep 2019 07:06:58 +0000 (15:06 +0800)]
msdkdec: set pointer to NULL to avoid freeing an used surface

The surface should be cached in the surface list when GST_FLOW_OK is
going to be returned

This fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1051

4 years agomsdk: free mfx frames to avoid memory leaks in encoder and vpp
Haihao Xiang [Wed, 21 Aug 2019 04:45:37 +0000 (12:45 +0800)]
msdk: free mfx frames to avoid memory leaks in encoder and vpp

4 years agomsdkdec: unref the caps to avoid memory leaks
Haihao Xiang [Tue, 10 Sep 2019 06:44:19 +0000 (14:44 +0800)]
msdkdec: unref the caps to avoid memory leaks

4 years agomsdkvpp: free msdk surfaces to avoid memory leak
Haihao Xiang [Thu, 29 Aug 2019 01:31:22 +0000 (09:31 +0800)]
msdkvpp: free msdk surfaces to avoid memory leak

4 years agomsdkvpp: unref buffer pools
Haihao Xiang [Wed, 21 Aug 2019 04:27:57 +0000 (12:27 +0800)]
msdkvpp: unref buffer pools

Unref the pools first in caps re-negotiation to avoid memory leak

4 years agomsdk: fix memory leaks in msdk allocators
Haihao Xiang [Thu, 29 Aug 2019 07:28:36 +0000 (15:28 +0800)]
msdk: fix memory leaks in msdk allocators

4 years agomsdkenc: work-around to avoid zero fps in MediaSDK structure
Fuwei Tang [Thu, 5 Sep 2019 01:05:10 +0000 (09:05 +0800)]
msdkenc: work-around to avoid zero fps in MediaSDK structure

4 years agomsdkenc: add an extra surface for hevc encoding
Fuwei Tang [Mon, 9 Sep 2019 05:42:56 +0000 (13:42 +0800)]
msdkenc: add an extra surface for hevc encoding

For some hevc 10bit 4K encoding cases, the encoding process may be
slow, and MediaSDK surface can't be released in time before one other
available surface is needed. So add an extra surface for hevc encoding
to avoid this issue.

4 years agowebrtc/stats: redo considering internal sources
Matthew Waters [Mon, 12 Aug 2019 09:42:12 +0000 (19:42 +1000)]
webrtc/stats: redo considering internal sources

Internal sources seem to be rtp streams we are sending whereas
non-internal sources are the rtp streams we are receiving. Redo the
statistics with that in mind.

4 years agovulkan: fix build with older API headers
Matthew Waters [Wed, 11 Sep 2019 23:33:44 +0000 (09:33 +1000)]
vulkan: fix build with older API headers

The protected memory flags were only added later as was the
multi-instance flag.

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

4 years agoexamples: nvcodec: Add example for runtime configuration change with nvcodec
Seungha Yang [Fri, 6 Sep 2019 03:52:37 +0000 (12:52 +0900)]
examples: nvcodec: Add example for runtime configuration change with nvcodec

Add new example for testing dynamic change of configuration suce as
resolution and properties.

4 years agonvenc: Early terminate handle_frame if the last flow was not GST_FLOW_OK
Seungha Yang [Fri, 30 Aug 2019 12:35:44 +0000 (21:35 +0900)]
nvenc: Early terminate handle_frame if the last flow was not GST_FLOW_OK

If the last flow was not GST_FLOW_OK, the encoding thread is not running
and there is nothing to pop from GAsyncQueue (this causes deadlock).

To prevent deadlock, just return the handle_frame without further encoding
process if the last flow was not GST_FLOW_OK. Note that the last flow
will be cleared per FLUSH_STOP and STREAM_START event.

4 years agonvenc: Add support VUYA format
Seungha Yang [Tue, 20 Aug 2019 13:07:30 +0000 (22:07 +0900)]
nvenc: Add support VUYA format

The addition is very simple. Map NV_ENC_BUFFER_FORMAT_AYUV format
to GST_VIDEO_FORMAT_VUYA and add a condition for the VUYA format.

4 years agonvdec: Add support for mpeg4 video decoding with codec_data
Seungha Yang [Wed, 28 Aug 2019 14:46:44 +0000 (23:46 +0900)]
nvdec: Add support for mpeg4 video decoding with codec_data

Decoder should handle codec_data of mpeg4 video which includes essential
config data.

4 years agonvenc: Reduce the number of pre-allocated device memory
Seungha Yang [Wed, 11 Sep 2019 05:56:00 +0000 (14:56 +0900)]
nvenc: Reduce the number of pre-allocated device memory

The hard-coded upper bound 32 (or 48 depending on resolution) might waste
GPU memory and high resolution encoding causes OUT-OF-MEMORY allocation error
quite easily. This commit calculates the number of required pre-allocated
device memory based on encoding options and it can reduce the amount of device memory
used by nvenc.

4 years agovulkan: dump most of the device information
Matthew Waters [Wed, 11 Sep 2019 09:24:50 +0000 (19:24 +1000)]
vulkan: dump most of the device information

Dump anything that can be queried using the physical device like features,
limits, queue properties, memory properties.

4 years agonvdec: Update plugin description and fix typo
Seungha Yang [Wed, 11 Sep 2019 06:16:45 +0000 (15:16 +0900)]
nvdec: Update plugin description and fix typo

Use consistent description with nvenc, and fix typo s/devide/device/g

4 years agonvenc: Adjust DTS when bframe is enabled
Seungha Yang [Sun, 18 Aug 2019 08:31:53 +0000 (17:31 +0900)]
nvenc: Adjust DTS when bframe is enabled

NVDEC driver always uses input timestamp without adjustment
even if bframe encoding was enabled.
So DTS can be larger than PTS when bframe was enabled.
To ensure PTS >= DTS, we should adjust the timestamp manually
based on the PTS difference between the first
encoded frame and the second one. That's also the maximum PTS/DTS
difference.

4 years agonvenc: Add qp-{min,max,const}-{i,p,b} properties
Seungha Yang [Tue, 3 Sep 2019 10:46:09 +0000 (19:46 +0900)]
nvenc: Add qp-{min,max,const}-{i,p,b} properties

This new properties allows more detailed target QP value setting

4 years agonvenc: Add properties to support bframe encoding if device supports it
Seungha Yang [Tue, 3 Sep 2019 12:22:08 +0000 (21:22 +0900)]
nvenc: Add properties to support bframe encoding if device supports it

Note that bframe encoding capability varies with GPU architecture

4 years agonvenc: Refactoring internal buffer pool structure
Seungha Yang [Mon, 2 Sep 2019 05:13:26 +0000 (14:13 +0900)]
nvenc: Refactoring internal buffer pool structure

To support rc-lookahead and bframe encoding, nvenc needs one more
staging queue, because NvEncEncodePicture can return NV_ENC_ERR_NEED_MORE_INPUT
but which was not considered so far.
As documented by NVENC programming guide, pending buffers should wait
other inputs until NvEncEncodePicture returns success.

New encoding flow is
- Submit raw picture buffer to encoder with NvEncEncodePicture
- The submitted input/output buffer pair will be queued to pending_queue
  - If NvEncEncodePicture returned success, then move all pair in pending_queue
    to final stage
  - Otherwise, wait more input raw pictures.

Another change is dropping NV_ENC_LOCK_INPUT_BUFFER usage.
So now nvenc always uses CUDA memory input buffer. As a result,
both opengl and system memory handling are unified.

4 years agonvenc: Remove pointless iteration and cleanup some code
Seungha Yang [Sun, 28 Jul 2019 06:41:07 +0000 (15:41 +0900)]
nvenc: Remove pointless iteration and cleanup some code

* The number of iteration is always one so the iteration is useless
and that makes code complicated.
* Also defining named structure can code mroe readable.
* g_free is null safe

4 years agonvenc: Add more rate-control options
Seungha Yang [Tue, 3 Sep 2019 12:33:15 +0000 (21:33 +0900)]
nvenc: Add more rate-control options

New rate-control modes are introduced (if device can support)
* cbr-ld-hr: CBR low-delay high quality
* cbr-hq: CBR high quality
* vbr-hq: VBR high quality

Also, various configurable rate-control related properties are added.

4 years agonvenc: Add support for weighted prediction option
Seungha Yang [Tue, 3 Sep 2019 12:28:44 +0000 (21:28 +0900)]
nvenc: Add support for weighted prediction option

Note that this property will be exposed only if the device
supports the weighted prediction.

4 years agonvenc: Add property for AUD insertion
Seungha Yang [Fri, 26 Jul 2019 07:46:30 +0000 (16:46 +0900)]
nvenc: Add property for AUD insertion

Make AUD insertion configurable option

4 years agonvenc: Refactor class hierarchy to handle device capability dependent options
Seungha Yang [Tue, 3 Sep 2019 09:46:30 +0000 (18:46 +0900)]
nvenc: Refactor class hierarchy to handle device capability dependent options

Introducing new dynamic class between GstNvBaseEncClass and
each subclass to be able to access device specific properties and
capabilities from each subclass implementation side.

4 years agomsdk: actually use the include dir we compute
Mathieu Duponchelle [Wed, 11 Sep 2019 00:12:55 +0000 (02:12 +0200)]
msdk: actually use the include dir we compute

4 years agonvcodec: minor spell corrects in log messages
Marc Leeman [Tue, 10 Sep 2019 23:13:17 +0000 (23:13 +0000)]
nvcodec: minor spell corrects in log messages

4 years agomsdk: Remove all DMABuf caps features on Windows
Seungha Yang [Mon, 26 Aug 2019 05:54:13 +0000 (14:54 +0900)]
msdk: Remove all DMABuf caps features on Windows

Add new macro for sink/src pad template to ensure no DMABuf caps
features are exposed on Windows. Some DMABuf caps features
were not handled by the commit 9ec62418c31cab4072bf173f279234e36eeec596

4 years agomsdkdec: Do not use video memory on Windows
Seungha Yang [Wed, 4 Sep 2019 04:30:37 +0000 (13:30 +0900)]
msdkdec: Do not use video memory on Windows

Like msdkenc, do not use video memory by default on Windows.

4 years agomsdk: Allow video and system memory share among buffers
Seungha Yang [Wed, 4 Sep 2019 04:18:38 +0000 (13:18 +0900)]
msdk: Allow video and system memory share among buffers

gst_buffer_make_writable() requires exclusive reference to the
GstMemory so the _make_writable() for the msdk buffer will result
to fallback system memory copy, because the msdk memory were initialized
with GST_MEMORY_FLAG_NO_SHARE flag.

Note that, disable sharing GstMemory brings high overhead but actually
the msdk memory objects can be shared over multiple buffers.
If the memory is not shareable, newly added GstAllocator::mem_copy will
create copied msdk memory.

4 years agomsdkh265dec: remove the requirement on profile
Haihao Xiang [Thu, 8 Aug 2019 03:27:19 +0000 (11:27 +0800)]
msdkh265dec: remove the requirement on profile

Sometimes a HEVC/H265 stream doesn't have a valid profile but MSDK can
handle this stream. Like vaapih265dec, msdkh265dec may advertise the sink
caps without profile

4 years agowayland: gracefully handle unknown formats
Mark Nauwelaerts [Sun, 8 Sep 2019 19:25:44 +0000 (21:25 +0200)]
wayland: gracefully handle unknown formats

4 years agoav1enc: change cpu-used range upto 5
Wonchul Lee [Fri, 6 Sep 2019 13:21:50 +0000 (22:21 +0900)]
av1enc: change cpu-used range upto 5

The speed 6, 7 and 8 has been removed because it's not yet tuned
correctly.
https://aomedia.googlesource.com/aom/+/7ffbf92030baf6886c2486574cca16d60499bbb8

4 years agogst-player: fix bug with changing playback direction
Askar Safin [Wed, 4 Sep 2019 09:54:17 +0000 (12:54 +0300)]
gst-player: fix bug with changing playback direction

Fix gst_event_new_seek call in gst-libs/gst/player/gstplayer.c

If rate >= 0.0, then previous code doesn't set end of segment. So, the end of segment
will be in place where previous seek put it. This is not neccesary end of media file
(in case of reverse playback). So if we play video backward for some time and then
switched to forward playing, we will get EOS somewhere in the middle of media file.
This commit always sets end of segment, thus fixing this bug

4 years agomsdkdec: output the decoded frame immediately if decoded order is required
Haihao Xiang [Fri, 24 May 2019 08:48:45 +0000 (16:48 +0800)]
msdkdec: output the decoded frame immediately if decoded order is required

DecodedOrder was deprecated in msdk-2017 version, but some customers
still use this for low-latency streaming of non-b-frame encoded streams,
which needs to output the frame at once

4 years agoRevert "waylandsink: Don't create throwaway empty regions"
Jeffy Chen [Mon, 2 Sep 2019 01:22:10 +0000 (09:22 +0800)]
Revert "waylandsink: Don't create throwaway empty regions"

This reverts commit 68fa80e83118a7a2be037eb235e5d211912dee0e.

Some wayland servers, especially weston, only expect empty input
region as a request to disable input.

Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
4 years agodecklinkaudiosink: Drop late buffers
Matthew Waters [Wed, 21 Aug 2019 11:35:30 +0000 (06:35 -0500)]
decklinkaudiosink: Drop late buffers

Asking decklink to render audio data seems to be based entirely on
the sample counts which completely disregards the timestamps
we pass to decklink.  As a result, we need to explicitly check
for late buffers and drop them ourselves.

4 years agotests: nvenc: Test runtime resolution change
Seungha Yang [Sat, 31 Aug 2019 09:19:41 +0000 (18:19 +0900)]
tests: nvenc: Test runtime resolution change

4 years agonvenc: Add support runtime resolution change freely
Seungha Yang [Sat, 31 Aug 2019 08:34:13 +0000 (17:34 +0900)]
nvenc: Add support runtime resolution change freely

Do not restrict allowed maximum resolution depending on the
initial resolution. If new resolution is larger than previous one,
just re-init encode session.

4 years agotests: h265parser: Add test parsing range extension in PPS
Wangfei [Tue, 27 Aug 2019 09:04:50 +0000 (17:04 +0800)]
tests: h265parser: Add test parsing range extension in PPS

4 years agoh265parse lib: fix missing condition when parse PPS
Wangfei [Mon, 19 Aug 2019 02:08:46 +0000 (10:08 +0800)]
h265parse lib: fix missing condition when parse PPS

Follow h265 spec(04/2015), log2_max_transform_skip_block_size_minus2
should get with condition when transform_skip_enabled_flag is 1.

4 years agowebrtcbin: Fixed memory leak in gstwebrtcstats
Sam Gigliotti [Thu, 29 Aug 2019 00:26:00 +0000 (17:26 -0700)]
webrtcbin: Fixed memory leak in gstwebrtcstats

The function _get_stats_from_ice_transport returns a string which must be
freed by the caller. However, _get_stats_from_dtls_transport was ignoring
the return value from this function, resulting in a leak.

Ran this with valgrind. Before this fix there was a leak of 40 bytes each
time this was called. After there was no leak.

4 years agodecklink: fix macos werror build
Matthew Waters [Fri, 30 Aug 2019 04:15:43 +0000 (14:15 +1000)]
decklink: fix macos werror build

../sys/decklink/gstdecklink.cpp:1703:7: error: format specifies type 'long' but the argument has type 'int64_t' (aka 'long long') [-Werror,-Wformat]
      persistent_id);
      ^~~~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:1070:87: note: expanded from macro 'GST_DEBUG'
#define GST_DEBUG(...)                  GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_DEBUG,   NULL, __VA_ARGS__)
                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:646:31: note: expanded from macro 'GST_CAT_LEVEL_LOG'
        (GObject *) (object), __VA_ARGS__);                             \
                              ^~~~~~~~~~~

4 years agonvdec: Check flow return of the only current handle_frame() to fix seeking issue
Seungha Yang [Thu, 29 Aug 2019 08:19:27 +0000 (17:19 +0900)]
nvdec: Check flow return of the only current handle_frame() to fix seeking issue

Due to uncleared last flow, decoding after seek was never possible
(last_ret == GST_FLOW_FLUSHING).
nvdec dose not need to keep track of the previous flow return,
and actually the interest is data/even flow of the current handle_frame().

4 years agonvdec: Fallback to system memory if OpenGL context could not support PBO memory
Seungha Yang [Thu, 29 Aug 2019 11:20:14 +0000 (20:20 +0900)]
nvdec: Fallback to system memory if OpenGL context could not support PBO memory

If the environment could not support OpenGL PBO memory, nvdec will do negotiation
with system memory as fallback.

4 years agonvdec: Add support dynamic output format change
Seungha Yang [Fri, 9 Aug 2019 11:19:38 +0000 (20:19 +0900)]
nvdec: Add support dynamic output format change

Implementing ::negotiate() method to support runtime output format
change. If downstream was reconfigured, baseclass will invoke
::negotiate() method, and nvdec should update output memory
type depending on downstream caps.

4 years agonvdec: Re-negotiate whenever output format is changed
Seungha Yang [Fri, 9 Aug 2019 09:47:14 +0000 (18:47 +0900)]
nvdec: Re-negotiate whenever output format is changed

Input stream might be silently changed without ::set_format() call.
Since nvdec has internal parser, nvdec element can figure out the format change
by itself.

4 years agotests: nvdec: Add test runtime downstream reconfigure
Seungha Yang [Fri, 9 Aug 2019 06:27:54 +0000 (15:27 +0900)]
tests: nvdec: Add test runtime downstream reconfigure

Add test case for output format change

4 years agonvdec: Add support 4:4:4 and 4:2:0 12bit decoding
Seungha Yang [Thu, 8 Aug 2019 01:59:04 +0000 (10:59 +0900)]
nvdec: Add support 4:4:4 and 4:2:0 12bit decoding

Depending on GPU architecture, HEVC decoder can support
4:4:4 format up to 12 bitdepth. This commit covers VP9 4:2:0 12 bits
decoding also.

4 years agonvenc: Add support for old drivers which could not understand SDK version 9.0
Seungha Yang [Thu, 8 Aug 2019 05:16:07 +0000 (14:16 +0900)]
nvenc: Add support for old drivers which could not understand SDK version 9.0

Add helper functions to support old drivers
with our previous SDK version 8.1

4 years agonvenc: Use consistent snake case convention
Seungha Yang [Thu, 8 Aug 2019 05:00:08 +0000 (14:00 +0900)]
nvenc: Use consistent snake case convention

4 years agonvcodec: Bump SDK header to version 9.0
Seungha Yang [Wed, 7 Aug 2019 14:03:15 +0000 (23:03 +0900)]
nvcodec: Bump SDK header to version 9.0

The latest Turing architecture (e.g., RTX serise) can support
decoding HEVC 4:4:4 format up to 12bits.

4 years agovulkan: Fix some confusing typos
Yeongjin Jeong [Thu, 1 Aug 2019 16:37:22 +0000 (01:37 +0900)]
vulkan: Fix some confusing typos

Seems to have been copy pasted from around gl element

4 years agovulkan: Don't dereference null pointer when printing error
Yeongjin Jeong [Fri, 9 Aug 2019 11:13:59 +0000 (20:13 +0900)]
vulkan: Don't dereference null pointer when printing error

When printing error message because the function failed, the GError variable
may not be used and it can be NULL.

4 years agovulkan/xcb: Don't try to create xcb window with non-xcb display
Yeongjin Jeong [Fri, 9 Aug 2019 09:43:06 +0000 (18:43 +0900)]
vulkan/xcb: Don't try to create xcb window with non-xcb display

Non-xcb display does not have a xcb_connection and trying
to create xcb window with wild pointer can cause segfault.

4 years agonvenc: Port to GstCudaGraphicsResource
Seungha Yang [Sun, 18 Aug 2019 05:09:16 +0000 (14:09 +0900)]
nvenc: Port to GstCudaGraphicsResource

Register openGL resource only once per memory. Also if upstream
provides the registered information, reuse the information
instead of doing it again. This can improve performance dramatically
depending on system since the resource registration might cause
high overhead.

4 years agonvdec: Port to GstCudaGraphicsResource
Seungha Yang [Sun, 18 Aug 2019 04:27:38 +0000 (13:27 +0900)]
nvdec: Port to GstCudaGraphicsResource

Make it possible to share registered graphics resource among nvidia encoders
and decoders.

4 years agocudautils: Add GstCudaGraphicsResource structure for better openGL interoperability
Seungha Yang [Sat, 17 Aug 2019 08:45:44 +0000 (17:45 +0900)]
cudautils: Add GstCudaGraphicsResource structure for better openGL interoperability

Introduce GstCudaGraphicsResource structure to represent registered
CUDA graphics resources and to enable sharing the information among
nvdec and nvenc. This structure can reduce the number of resource
registration which cause high overhead.

4 years agonvdec: Port to openGL PBO memory
Seungha Yang [Sat, 17 Aug 2019 05:46:00 +0000 (14:46 +0900)]
nvdec: Port to openGL PBO memory

For openGL interoperability, nvdec uses cuGraphicsGLRegisterImage API
which is to register openGL texture image.
Meanwhile nvenc uses cuGraphicsGLRegisterBuffer API to registure openGL buffer object.
That means two kinds of graphics resources are registered per memory
when nvdec/nvenc are configured at the same time.
The graphics resource registration brings possibly high overhead
so the registration should be performed only once per resource
from optimization point of view.

4 years agonvdec: Filter openGL API version to use
Seungha Yang [Sat, 17 Aug 2019 05:03:57 +0000 (14:03 +0900)]
nvdec: Filter openGL API version to use

To ensure PBO buffer, openGL API >= 3 is required.

4 years agomsdk: avoid reading data from freed memory
Haihao Xiang [Wed, 21 Aug 2019 08:46:36 +0000 (16:46 +0800)]
msdk: avoid reading data from freed memory

Both g_list_delete_link and g_list_remove remove an element and free it,
so l->next is invalid (catched by valgrind) after calling g_list_delete_link
or g_list_remove

4 years agodoc: Update plugin cache
Thibault Saunier [Thu, 22 Aug 2019 14:46:12 +0000 (10:46 -0400)]
doc: Update plugin cache

4 years agoImport GstTranscoder
Saunier Thibault [Thu, 3 Dec 2015 11:32:05 +0000 (12:32 +0100)]
Import GstTranscoder

4 years agovulkan/swapper: add a couple of missing g_clear_error()'s
Matthew Waters [Fri, 23 Aug 2019 07:07:43 +0000 (17:07 +1000)]
vulkan/swapper: add a couple of missing g_clear_error()'s

4 years agovulkan/build: conditionally depend on Vulkan-1.0.gir
Matthew Waters [Fri, 23 Aug 2019 07:04:42 +0000 (17:04 +1000)]
vulkan/build: conditionally depend on Vulkan-1.0.gir

Vulkan-1.0.gir is new in gobject-introspection >= 1.61.1

4 years agovulkandisplay: silence an unused but set error with no enable winsys implementations
Matthew Waters [Fri, 23 Aug 2019 07:03:20 +0000 (17:03 +1000)]
vulkandisplay: silence an unused but set error with no enable winsys implementations

4 years agovulkan/swapper: check queue present return later
Matthew Waters [Fri, 23 Aug 2019 04:20:59 +0000 (14:20 +1000)]
vulkan/swapper: check queue present return later

During resizes, the VkQueuePresent can return OUT_OF_DATE and if a buffer
is displayed returning OUT_OF_DATE it would error out and stop the pipeline.

We already have a explicit check for OUT_OF_DATE and the same general
error check in the statements following so just use that code.

4 years agovulkan/swapper: destroy the surface in finalize
Matthew Waters [Fri, 23 Aug 2019 04:19:22 +0000 (14:19 +1000)]
vulkan/swapper: destroy the surface in finalize

Fixes a leak of the VkSurface object.

4 years agovulkan/swapper: set some values to NULL in error conditions
Matthew Waters [Fri, 23 Aug 2019 04:17:02 +0000 (14:17 +1000)]
vulkan/swapper: set some values to NULL in error conditions

So that they are not double free()-ed.

4 years agovulkancolorconvert: explicitly initalize swizzle arrays
Matthew Waters [Fri, 23 Aug 2019 04:14:39 +0000 (14:14 +1000)]
vulkancolorconvert: explicitly initalize swizzle arrays

Fixes uninitialized access of the indexed values larger than
the number of planes in the video format.

4 years agovulkan/error: add the error value in hex and decimal
Matthew Waters [Fri, 23 Aug 2019 04:13:16 +0000 (14:13 +1000)]
vulkan/error: add the error value in hex and decimal

Provides more information for what may be an 'Unknown' error.

4 years agovulkanswapper: disconnect window signals before any internal resources
Matthew Waters [Fri, 23 Aug 2019 04:11:16 +0000 (14:11 +1000)]
vulkanswapper: disconnect window signals before any internal resources

Otherwise, it's racy whether the necessary resources are available in
the signal callbacks on destruction.

4 years agomsdkvpp: don't return GST_FLOW_ERROR for MFX_WRN_INCOMPATIBLE_VIDEO_PARAM
Haihao Xiang [Mon, 19 Aug 2019 04:30:30 +0000 (12:30 +0800)]
msdkvpp: don't return GST_FLOW_ERROR for MFX_WRN_INCOMPATIBLE_VIDEO_PARAM

Returning MFX_WRN_INCOMPATIBLE_VIDEO_PARAM means MSDK detects some
incompatible parameters but it is resolved, and we may not regard
MFX_WRN_INCOMPATIBLE_VIDEO_PARAM as a fatal error. In this fix,
GST_FLOW_OK is returned but with a warning message so that a pipeline
may run to the end.

4 years agoahcsrc: #define GST_USE_UNSTABLE_API for phtography inteface
Matthew Waters [Wed, 28 Aug 2019 06:11:12 +0000 (16:11 +1000)]
ahcsrc: #define GST_USE_UNSTABLE_API for phtography inteface

Fixes werror build:

In file included from ../sys/androidmedia/gstahcsrc.c:70:
../gst-libs/gst/interfaces/photography.h:27:2: error: "The GstPhotography interface is unstable API and may change in future." [-Werror,-W#warnings]
#warning "The GstPhotography interface is unstable API and may change in future."
 ^
../gst-libs/gst/interfaces/photography.h:28:2: error: "You can define GST_USE_UNSTABLE_API to avoid this warning."  [-Werror,-W#warnings]
#warning "You can define GST_USE_UNSTABLE_API to avoid this warning."
 ^

4 years agompeg2enc: fix werror build with clang
Matthew Waters [Tue, 27 Aug 2019 02:05:10 +0000 (12:05 +1000)]
mpeg2enc: fix werror build with clang

/usr/include/mjpegtools/mpeg2enc/ontheflyratectlpass1.hh:1:9: error: '_ONTHEFLYRATECTLPASS1_HH' is used as a header guard here, followed by #define of a different macro [-Werror,-Wheader-guard]
#ifndef _ONTHEFLYRATECTLPASS1_HH
        ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/mjpegtools/mpeg2enc/ontheflyratectlpass1.hh:2:9: note: '_ONTHELFYRATECTLPASS1_HH' is defined here; did you mean '_ONTHEFLYRATECTLPASS1_HH'?
#define _ONTHELFYRATECTLPASS1_HH
        ^~~~~~~~~~~~~~~~~~~~~~~~
        _ONTHEFLYRATECTLPASS1_HH
In file included from ../subprojects/gst-plugins-bad/ext/mpeg2enc/gstmpeg2encoder.cc:31:
/usr/include/mjpegtools/mpeg2enc/ontheflyratectlpass2.hh:1:9: error: '_ONTHEFLYRATECTLPASS2_HH' is used as a header guard here, followed by #define of a different macro [-Werror,-Wheader-guard]
#ifndef _ONTHEFLYRATECTLPASS2_HH
        ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/mjpegtools/mpeg2enc/ontheflyratectlpass2.hh:2:9: note: '_ONTHELFYRATECTLPASS2_HH' is defined here; did you mean '_ONTHEFLYRATECTLPASS2_HH'?
#define _ONTHELFYRATECTLPASS2_HH
        ^~~~~~~~~~~~~~~~~~~~~~~~
        _ONTHEFLYRATECTLPASS2_HH

/usr/include/mjpegtools/mpeg2enc/encoderparams.hh:82:1: error: struct 'RateCtl' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Werror,-Wmismatched-tags]
struct RateCtl;
^
/usr/include/mjpegtools/mpeg2enc/ratectl.hh:50:7: note: previous use is here
class RateCtl
      ^
/usr/include/mjpegtools/mpeg2enc/encoderparams.hh:82:1: note: did you mean class here?
struct RateCtl;
^~~~~~
class

4 years agouvch264: fix werror build with clang
Matthew Waters [Mon, 26 Aug 2019 12:19:13 +0000 (22:19 +1000)]
uvch264: fix werror build with clang

../subprojects/gst-plugins-bad/sys/uvch264/gstuvch264deviceprovider.c:48:1: warning: unused function 'GST__UVC_H264_DEVICE' [-Wunused-function]
G_DECLARE_FINAL_TYPE (GstUvcH264Device, gst_uvc_h264_device, GST_,
^
/usr/include/glib-2.0/gobject/gtype.h:1405:33: note: expanded from macro 'G_DECLARE_FINAL_TYPE'
  static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                                     \
                                ^
<scratch space>:75:1: note: expanded from here
GST__UVC_H264_DEVICE
^
../subprojects/gst-plugins-bad/sys/uvch264/gstuvch264deviceprovider.c:48:1: warning: unused function 'GST__IS_UVC_H264_DEVICE' [-Wunused-function]
/usr/include/glib-2.0/gobject/gtype.h:1407:26: note: expanded from macro 'G_DECLARE_FINAL_TYPE'
  static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                                         \
                         ^
<scratch space>:78:1: note: expanded from here
GST__IS_UVC_H264_DEVICE
^
../subprojects/gst-plugins-bad/sys/uvch264/gstuvch264deviceprovider.c:139:1: warning: unused function 'GST_UVC_H264_DEVICE_PROVIDER' [-Wunused-function]
G_DECLARE_FINAL_TYPE (GstUvcH264DeviceProvider, gst_uvc_h264_device_provider, GST, UVC_H264_DEVICE_PROVIDER, GstDeviceProvider)
^
/usr/include/glib-2.0/gobject/gtype.h:1405:33: note: expanded from macro 'G_DECLARE_FINAL_TYPE'
  static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                                     \
                                ^
<scratch space>:137:1: note: expanded from here
GST_UVC_H264_DEVICE_PROVIDER
^
../subprojects/gst-plugins-bad/sys/uvch264/gstuvch264deviceprovider.c:139:1: warning: unused function 'GST_IS_UVC_H264_DEVICE_PROVIDER' [-Wunused-function]
/usr/include/glib-2.0/gobject/gtype.h:1407:26: note: expanded from macro 'G_DECLARE_FINAL_TYPE'
  static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                                         \
                         ^
<scratch space>:140:1: note: expanded from here
GST_IS_UVC_H264_DEVICE_PROVIDER
^

4 years agoav1enc: fix werror build with clang
Matthew Waters [Mon, 26 Aug 2019 12:17:57 +0000 (22:17 +1000)]
av1enc: fix werror build with clang

../subprojects/gst-plugins-bad/ext/aom/gstav1enc.c:415:34: warning: implicit conversion from enumeration type 'GstAV1EncEndUsageMode' to different enumeration type 'enum aom_rc_mode' [-Wenum-conversion]
  av1enc->aom_cfg.rc_end_usage = DEFAULT_END_USAGE;
                               ~ ^~~~~~~~~~~~~~~~~
../subprojects/gst-plugins-bad/ext/aom/gstav1enc.c:162:41: note: expanded from macro 'DEFAULT_END_USAGE'
#define DEFAULT_END_USAGE               GST_AV1_ENC_END_USAGE_VBR
                                        ^~~~~~~~~~~~~~~~~~~~~~~~~

4 years agosrt: Set latency property on SRT socket
Olivier Crête [Fri, 23 Aug 2019 22:40:49 +0000 (18:40 -0400)]
srt: Set latency property on SRT socket

4 years agosrt: Add sender side statistics
Olivier Crête [Fri, 23 Aug 2019 21:54:49 +0000 (17:54 -0400)]
srt: Add sender side statistics

4 years agosrtobject: Remove pointless GMainLoop
Olivier Crête [Fri, 23 Aug 2019 20:21:47 +0000 (16:21 -0400)]
srtobject: Remove pointless GMainLoop

Just use srt's blocking epoll function and fix locking while we're at it.

4 years agowasapi: Move to CoInitializeEx for COM initialization
Nirbheek Chauhan [Tue, 13 Aug 2019 17:24:42 +0000 (22:54 +0530)]
wasapi: Move to CoInitializeEx for COM initialization

CoInitialize is not allowed when targeting UWP and causes a Windows
Application Certification Kit (WACK) error.

4 years agotsdemux: Make latency configurable
Olivier Crête [Fri, 23 Aug 2019 21:55:00 +0000 (17:55 -0400)]
tsdemux: Make latency configurable

Allows for "low latency" mpeg-ts mode which is not standard, but somewhat common.
For this to work the sender has to put timestamps at a higher frequency than the spec requires.

4 years agoh265parse: fix colorimetry in src caps if sink caps has no structure
Guillaume Desmottes [Mon, 26 Aug 2019 09:06:35 +0000 (14:36 +0530)]
h265parse: fix colorimetry in src caps if sink caps has no structure

We do want to include the colorimetry in the src caps if the sink caps
doesn't have any structure associated.

4 years agoh264parse: fix colorimetry in src caps if sink caps has no structure
Guillaume Desmottes [Mon, 26 Aug 2019 09:06:35 +0000 (14:36 +0530)]
h264parse: fix colorimetry in src caps if sink caps has no structure

We do want to include the colorimetry in the src caps if the sink caps
doesn't have any structure associated.

4 years agoamc: Do not skip decoders that have no profile levels
Xavier Claessens [Mon, 26 Aug 2019 18:53:39 +0000 (14:53 -0400)]
amc: Do not skip decoders that have no profile levels

4 years agoh265parse: add support for SEI registered user data
Aaron Boxer [Wed, 8 May 2019 15:06:40 +0000 (11:06 -0400)]
h265parse: add support for SEI registered user data

4 years agoh264parse: use gstvideoparseutils to handle user data
Aaron Boxer [Wed, 8 May 2019 15:05:40 +0000 (11:05 -0400)]
h264parse: use gstvideoparseutils to handle user data

4 years agompegvideoparse: use gstvideoparseutils to handle user data
Aaron Boxer [Wed, 8 May 2019 15:04:49 +0000 (11:04 -0400)]
mpegvideoparse: use gstvideoparseutils to handle user data

4 years agovideoparseutils: add new parser class
Aaron Boxer [Wed, 8 May 2019 15:02:35 +0000 (11:02 -0400)]
videoparseutils: add new parser class

4 years agomsdkvpp: support video-direction property
Haihao Xiang [Fri, 23 Aug 2019 01:51:20 +0000 (09:51 +0800)]
msdkvpp: support video-direction property

video-direction property is common property in gstreamer. In addition,
both mirroring & rotation properties are marked as deprecated,
video-direction will override mirroring & rotation properties when they
are set explicitly

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

4 years agomsdkdec: Fix buffer allocation based on frame.
Yan Wang [Wed, 21 Aug 2019 08:44:39 +0000 (16:44 +0800)]
msdkdec: Fix buffer allocation based on frame.

gst_msdkdec_finish_task() may release all frames in
GstVideoDecoder object. In this case, allocate_output_buffer()
cannot get the oldest frame to allocate buffer.
So gst_msdkdec_handle_frame() should return GST_FLOW_OK for
letting gst_video_decoder_decode_frame() to send a new frame
for decoding.

Fixes #664.
Fixes #665.

4 years agowaylandsink: Fix return type of prototype of show_frame()
Shinya Saito [Thu, 8 Aug 2019 02:54:45 +0000 (11:54 +0900)]
waylandsink: Fix return type of prototype of show_frame()

4 years agomsdk: Don't use VA_RT_FORMAT_YUV420_10 if it's undefined
Yeongjin Jeong [Sat, 24 Aug 2019 03:18:20 +0000 (12:18 +0900)]
msdk: Don't use VA_RT_FORMAT_YUV420_10 if it's undefined

../sys/msdk/gstmsdkallocator_libva.c:99:16: error: ‘VA_RT_FORMAT_YUV420_10’

The minimum required version seems to VA_API_VERSION >= 1.2.0