Seungha Yang
16b4fe3d0b
codecs: h265decoder: Don't drain DPB on EOB/EOS/IDR nalu
...
DPB bumping decision per end-of-bitstream, end-of-sequence or IDR nal
should done by spec. In short, draining on EOB/EOS/IDR is undefined
behavior as per spec.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1755 >
2020-11-02 20:20:56 +00:00
Nicolas Dufresne
849b7a315c
h265decoder: Complete dependent slice header
...
This will save the last independent slice and fill in the missing
information for dependent slices. This was left over during the porting
from gstreamer-vaapi. The private variable prev_independent_slice was
already there.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1750 >
2020-11-02 18:20:32 +00:00
Nicolas Dufresne
e3fb5f894f
h265decoder: Prevent possible infinite loop
...
Theoretically, one could produce a broken stream that would lead to
infinite in the specified algorithm to calculate l0/l1 reference lists.
This patch will pearly exit if this condition is met.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1750 >
2020-11-02 18:20:32 +00:00
Nicolas Dufresne
2e2e93c303
h265parse: Add missing const qualifier
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1750 >
2020-11-02 18:20:32 +00:00
Seungha Yang
2f5257fd69
Revert "d3d11decoder: Use D3D11/DXGI standard colorimetry"
...
This reverts commit a52fc6deed
.
The change breaks H264/HEVC conformance bitstream tests
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1753 >
2020-11-02 17:58:23 +00:00
Randy Li
4e4c26af4b
wlvideoformat: fix DMA format convertor
...
In the most of case, this typo would work. But for
ARGB8888 and XRGB8888, which shm format is not based on fourcc,
which would never appear in format enumeration.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1751 >
2020-11-02 12:39:38 +00:00
Seungha Yang
a52fc6deed
d3d11decoder: Use D3D11/DXGI standard colorimetry
...
D3D11/DXGI supports smaller set of colorimetry than all possible
combination. This restriction would make more streams convertible
by using ID3D11VideoProcessor
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1743 >
2020-11-02 18:48:58 +09:00
Seungha Yang
a3a7e21f87
d3d11window: Use ID3D11VideoProcessor only if device supports corresponding conversion
...
... and drop support for ID3D11VideoProcessor if device doesn't
support ID3D11VideoContext1 interface and therefore we cannot
query conversion supportability.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1743 >
2020-11-02 18:48:54 +09:00
Seungha Yang
337cb883fa
d3d11h{264,265}dec: Submit picture level parameters only once
...
Submit PICTURE_PARAMETERS and INVERSE_QUANTIZATION_MATRIX
buffers only once per picture. Multiple submission is redundant.
Also this modification would fix broken hevc decoding with
dependent slice.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1749 >
2020-11-01 14:29:42 +00:00
Seungha Yang
eeffd91109
codecs: h265decocer: Rework for DPB management
...
* Move all DPB bumping process into GstH265Dpb internal
* Handle DPB add process in GstH265Dpb struct
* Make implementation to be 1:1 mappable with hevc specification
* Fix wrong DPB bumping implementation especially when no_output_of_prior_pics_flag
was specified.
With fixes from Nicolas Dufresne <nicolas.dufresne@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1748 >
2020-11-01 21:46:12 +09:00
Seungha Yang
0bb73ec800
d3d11decoder: Get rid of framerate field from pad template
...
Framerate is optional value and we don't have any framerate
related restriction for those elements. This commit is to fix
negotiation failure when upstream doesn't set framerate on caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1747 >
2020-11-01 00:51:46 +09:00
Jan Schmidt
be131dba6a
tests: Don't set dtlsenc state before linking.
...
Link the dtlsenc in the testsuite before setting it to paused, as it
starts a pad task that can generate a not-linked error otherwise.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1744 >
2020-10-31 21:46:16 +11:00
Jan Schmidt
c1be9c53e1
dtls: Catch bus errors and fail instead of hanging.
...
If the DTLS elements fail, they post a bus error and don't signal any
key negotiation. Catch the bus error and fail the test early instead
of letting it hang and time out.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1741 >
2020-10-31 01:47:06 +00:00
Jan Schmidt
dbeb576531
sctp: Do downward state change logic after chaining up.
...
Call the parent state_change function first when changing state
downward, to make sure that the element has stopped before cleaning
it up.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1741 >
2020-10-31 01:47:06 +00:00
Jan Schmidt
760592a29c
dtls: Avoid bio_buffer assertion on shutdown.
...
On shutdown, a previous iteration of dtsl_connection_process()
might be incomplete and leave a partial bio_buffer behind.
If the DTLS connection is already marked closed, drop out
of dtls_connection_process early without asserting.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1741 >
2020-10-31 01:47:06 +00:00
Jan Schmidt
af90778314
webrtc: Fix a race on shutdown.
...
The main context can disappear in gst_webrtc_bin_enqueue_task()
between checking the is_closed flag and enqueueing a source on the
main context. Protect the main context with the object lock instead
of the PC lock, and hold a ref briefly to make sure it stays alive.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1741 >
2020-10-31 01:47:06 +00:00
Olivier Crête
80a56c25a6
webrtc: Set the DSCP markings based on the priority
...
This matches how the WebRTC javascript API works and the Chrome implementation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1707 >
2020-10-30 16:24:40 -04:00
Olivier Crête
cca313ecd8
rtpsender: Add API to set the priority
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1707 >
2020-10-30 16:24:40 -04:00
Olivier Crête
0fbbdc5734
rtptransceiver: Store the SSRC of the current stream
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1707 >
2020-10-30 16:23:10 -04:00
Olivier Crête
7be09a5f22
webrtc: Save the media kind in the transceiver
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1707 >
2020-10-30 16:23:10 -04:00
Olivier Crête
e172ca5be1
webrtcbin: Remove unused function
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1707 >
2020-10-30 16:23:10 -04:00
Olivier Crête
78c687da3e
webrtc: Document more objects
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1707 >
2020-10-30 16:23:10 -04:00
Seungha Yang
9a796482dc
d3d11decoder: Allow 10bits only profiles
...
HEVC_VLD_Main10 and VP9_VLD_10bit_Profile2 might not support
8bit format (i.e., NV12) depending on GPU vendor.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1742 >
2020-10-31 00:37:48 +09:00
Sebastian Dröge
f71493a57c
decklink: Remove \n from debug output
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1721 >
2020-10-30 16:23:31 +02:00
Sebastian Dröge
60b7bd23a8
decklink: Correctly indent everything
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1721 >
2020-10-30 16:23:31 +02:00
Sebastian Dröge
56b2130300
decklink: Add a default profile id
...
This causes no changes to the profile but keeps the existing settings.
The profile can also be changed from e.g. the card's configuration
application and in that case probably should be left alone.
The default is the new value as it keeps the profile setting as it is,
which is consistent with the previous behaviour in 1.18.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1721 >
2020-10-30 16:23:31 +02:00
Sebastian Dröge
d1df412d70
decklink: Mark internal function as static
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1721 >
2020-10-30 13:47:51 +00:00
Sebastian Dröge
1ea2796cfc
decklink: Remove some dead code
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1721 >
2020-10-30 13:47:51 +00:00
Sebastian Dröge
c6aca271a1
decklink: Update enum value bounds check in gst_decklink_get_mode()
...
The widescreen modes moved after GST_DECKLINK_MODE_2160p60 and using
them now would cause an assertion. This is a regression from
309f6187fe
.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1737 >
2020-10-30 10:02:32 +02:00
Chris Bass
d25be0d16e
ttmlparse: Handle whitespace before XML declaration
...
When ttmlparse is in, e.g., an MPEG-DASH pipeline, there may be
whitespace between successive TTML documents in ttmlparse's accumulated
input. As libxml2 will fail to parse documents that have whitespace
before the opening XML declaration, ensure that any preceding whitespace
is not passed to libxml2.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1539 >
2020-10-30 07:01:52 +00:00
Chris Bass
8df2314c23
ttmlparse: Ensure only single TTML doc parsed
...
The parser handles only one TTML file at a time, therefore if there are
multiple TTML documets in the input, parse only the first.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1539 >
2020-10-30 07:01:52 +00:00
Xavier Claessens
dd7b672830
amc: Fix crash when encoding AVC
...
gstamcvideoenc.c calls gst_amc_avc_profile_to_string() with alternatives
set to NULL which causes a crash.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1732 >
2020-10-29 17:51:57 +00:00
Guillaume Desmottes
bfb9071081
isac: add iSAC plugin
...
Wrapper on the iSAC reference encoder and decoder from webrtc,
see https://en.wikipedia.org/wiki/Internet_Speech_Audio_Codec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1124 >
2020-10-29 16:59:18 +01:00
Thibault Saunier
d1945de102
transcodebin: Create the decodebin in _init
...
This way user can request pads right from the beginning
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1151 >
2020-10-29 13:30:07 +00:00
Philippe Normand
88c96789bf
transcodebin: Accept more than one stream
...
Look-up the stream matching the given ID also after building the stream list
from the received collection. Without this change the transcoder would discard
the second incoming stream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1151 >
2020-10-29 13:30:07 +00:00
Thibault Saunier
b254c0d5fe
transcodebin: Port to decodebin3
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1151 >
2020-10-29 13:30:07 +00:00
Thibault Saunier
a5fd2a4bc3
uritranscodebin: Move to using a urisourcebin for our source.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1151 >
2020-10-29 13:30:07 +00:00
Thibault Saunier
7d1f5e951f
transcoder: Base sync transcoding variant on a GMainLoop
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1151 >
2020-10-29 13:30:07 +00:00
Randy Li
6d8133e41e
waylandsink: release frame callback when destroyed
...
We would use a frame callback from the surface to indicate
that last buffer is rendered, but when we destroy the surface
and that callback is not back yet, it may cause the wayland event
queue crash.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1729 >
2020-10-29 12:09:01 +00:00
Seungha Yang
639fb6ac15
rtmp2src: Set buffer timestamp on output buffer
...
This timestamp information would be useful for queue2 element
when calculating time level and also it makes buffering decision
more reliable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1727 >
2020-10-28 16:32:32 +00:00
Seungha Yang
b62867ecc8
d3d11videoprocessor: Fix wrong input/output supportability check
...
The flag argument of ID3D11VideoProcessorEnumerator::CheckVideoProcessorFormat
method is output value, not input.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1726 >
2020-10-28 15:53:54 +00:00
Seungha Yang
8f96361c81
nvcodec: nvsldec: Add support for CUDA memory
...
Add CUDA memory support. Note that zero copying is not supported yet
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1720 >
2020-10-27 18:31:42 +00:00
Seungha Yang
fab234f2f1
d3d11memory: Adjust log level for some spammy debug messages
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1723 >
2020-10-27 16:20:49 +00:00
Seungha Yang
10f622aa5d
d3d11convert: Use ID3D11VideoProcessor only if device supports colorspace
...
Check whether conversion with given combination of input/output
format and dxgi colorspace is supported or not by driver.
If not, we should use shader.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1723 >
2020-10-27 16:20:49 +00:00
Seungha Yang
6b992f291b
d3d11videoprocessor: Add a method for device's conversion caps check
...
Add a wrapper method for
ID3D11VideoProcessorEnumerator1::CheckVideoProcessorFormatConversion.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1723 >
2020-10-27 16:20:49 +00:00
Seungha Yang
1e038ce322
d3d11format: Map more colorimetry with dxgi colorspace
...
Map more logically identical set of GstVideoColorimetry formats
with dxgi color space.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1723 >
2020-10-27 16:20:49 +00:00
He Junyan
d76204d14f
va: pool: Set the video_alignment after we get image info.
...
The set_format() of the allocator may change the stride of the
alloc_info. We should update the video_align.stride_align based
on it. Or, we get a warning in gst_video_meta_validate_alignment().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1698 >
2020-10-27 14:18:07 +00:00
He Junyan
caf28d8f12
va: h264dec: Set the padding to VideoAlignment's right.
...
In our va implemenation, we just use image's info to map the buffer.
The padding info just plays a role as a place holder to expand the
allocation size in caps when decoding size is bigger than display
size. So the padding_right or padding_left does not change the result.
But we find if using padding_left, it is hard to meet the requirement
of gst_video_meta_validate_alignment(), when the video meta's stride
is different from the allocation width.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1698 >
2020-10-27 14:18:07 +00:00
He Junyan
6e72f45a8f
va: basedec: No need to call base class' decide_allocation().
...
We have already done the jobs in gst_va_base_dec_decide_allocation()
and no need to call base class' decide_allocation() again. The base
class' decide_allocation() will set_format() again and let use do the
image/surface testing again, which is low performance and no needed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1698 >
2020-10-27 14:18:07 +00:00
He Junyan
32133c85d3
va: allocator: use _update_image_info() to set allocator parameters.
...
Use this standalone function to update the allocator info and make
all ensure_image() and mem_alloc() API clean.
We also change the default way of using image. We now set the non
derive manner as the default manner, and if it fails, then fallback
to the derived image manner.
On a lot of platforms, the derived image does not have caches, so the
read and write operations have very low performance.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1698 >
2020-10-27 14:18:07 +00:00