Commit graph

495 commits

Author SHA1 Message Date
Seungha Yang
47aef341d0 d3d11decoder: Fix for alternate interlacing signalling
Don't set d3d11+interlace caps feature. None of d3d11 elements
support it

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2584>
2022-06-10 12:59:10 +01:00
Jan Schmidt
3e1528f1fb amc: Add H.265 encoder mapping.
Add mime type mapping to enable the use of Android H.265 encoders

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2572>
2022-06-08 09:39:37 +01:00
Olivier Crête
e26bd431ad webrtcbin: Reject answers that don't contain the same number of m-line as offer
Otherwise, it segfaults later. Also add test to validate this.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2561>
2022-06-07 00:00:38 +00:00
Jan Alexander Steffens (heftig)
56451b0f1a rtmp2: Fix allocation of GstRtmpMeta
Use the right size.

On 64-bit platforms, `GstMetaInfo` is larger than `GstRtmpMeta`, which
masked this bug. On 32-bit platforms, it causes crashes. Thanks to
@maxatka for discovering this.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1721
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2564>
2022-06-06 18:20:25 +01:00
Jan Alexander Steffens (heftig)
fae27c87de opencv: Allow building against 4.6.x
Replace the broken version checks with one modeled after
`GLIB_CHECK_VERSION`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2558>
2022-06-06 00:45:37 +01:00
Seungha Yang
0339363aab d3d11decoder: Work around Intel DXVA driver crash
Intel DXVA driver crashes sometimes (from GPU thread) if
ID3D11VideoDecoder is released while there are outstanding view objects.
To make sure the object life cycle, holds an ID3D11VideoDecoder refcount
in GstD3D11Memory object.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2513>
2022-05-28 00:36:59 +01:00
Erwann Gouesbet
1a205e18c8 d3d11screencapture: Fix missing/outdated cursor shape
d3d11screencapture can miss a cursor shape to draw or draw an outdated cursor shape.
 - AcquireNextFrame only provides cursor shape when there is one update
 - current d3d11screencapture skips cursor shape when mouse is not drawn

So, if a gstreamer application uses d3d11screencapture with cursor initially not drawn
"show-cursor"=false and then switches this property to true, the cursor will not be
actually drawn until AcquireNextFrame provides a new cursor shape.
This commit makes d3d11screencapture always update the cursor shape information, even
if the mouse is not drawn. d3d11screencapture will always have the latest cursor shape
when requested to draw it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2488>
2022-05-25 00:49:31 +01:00
Philippe Normand
e487263abd datachannel: Notify low buffered amount according to spec
Quoting
https://www.w3.org/TR/webrtc/#dom-rtcdatachannel-bufferedamountlowthreshold

The bufferedAmountLowThreshold attribute sets the threshold at which the
bufferedAmount is considered to be low. When the bufferedAmount decreases from
above this threshold to **equal** or below it, the bufferedamountlow event fires.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2452>
2022-05-19 09:15:47 +01:00
Sebastian Dröge
1ce128bc67 tsmux: Make sure to set srcpad caps under all conditions before outputting the first buffer
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1218

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2446>
2022-05-18 15:35:02 +01:00
Sebastian Dröge
4369233595 sdpdemux: Release request pads from rtpbin when freeing a stream
Otherwise the pads of the rtpbin stay around forever and are leaked.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2445>
2022-05-18 10:57:27 +01:00
Olivier Crête
7e441d6245 pcapparse: Set timestamp in DTS, not PTS
This matches the behaviour of basesrc, in particular, it matches the
behaviour of udpsrc, so it's easier to use to as a replacement to test
rtpjitterbuffer and other similar elements.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2424>
2022-05-16 11:16:43 +02:00
Diogo Goncalves
6706e5b382 avfvideosrc: fix wrong framerate selected for caps
This fix solves an issue where a format that doesn't support the
requested framerate would be selected. It ensures that we use the first
format and framerate pair that supports the requested caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2418>
2022-05-14 11:53:44 +01:00
Edward Hervey
bc9c20caea mxfdemux: Handle files produced by legacy FFmpeg
Until March 2022, the FFmpeg MXF muxer would write the various index table
segments with the same instance ID, which should only be used if it is a
duplicate/repeated table.

In order to cope with those, we first compare the other index table segment
properties (body/index SID, start position) before comparing the instance
ID. This will ensure that we don't consider them as duplicate, but can still
detect "real" duplicates (which would have the same other properties).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2408>
2022-05-12 09:25:33 +01:00
Víctor Manuel Jáquez Leal
754dca11ef libs: va: Add O_CLOEXEC flag at opening drm device.
So any other potential subprocess won't have access to it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2391>
2022-05-08 11:43:49 +01:00
Sebastian Dröge
9389ccf7e6 mxfmux: Disable aggregator's default negotiation
mxfmux can't negotiate caps with upstream/downstream and always outputs
specific caps based on the input streams. This will always happen before
it produces the first buffers.

By having the default aggregator negotiation enabled the same caps
would be pushed twice in the beginning, and again every time a
reconfigure event is received.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2381>
2022-05-06 01:19:40 +01:00
Sebastian Dröge
e7d5733178 mpegtsmux: Disable aggregator's default negotiation
mpegtsmux can't negotiate caps with upstream/downstream and always outputs
specific caps based on the input streams. This will always happen before
it produces the first buffers.

By having the default aggregator negotiation enabled the same caps
would be pushed twice in the beginning, and again every time a
reconfigure event is received.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2381>
2022-05-06 01:19:40 +01:00
Seungha Yang
cae6b67822 h264decoder: Fix for unhandled low-delay decoding case
Baseclass calls get_preferred_output_delay() in a chain of
sequence header parsing and then new_sequence() is called
with required DPB size (includes render-delay) information.
Thus latency query should happen before the sequence header
parsing for subclass to report required render-delay accordingly
via get_preferred_output_delay() method.
(e.g., zero delay in case of live pipeline)

This commit is to fix wrong liveness signalling in case of
upstream packetized format.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2380>
2022-05-06 00:46:07 +01:00
Seungha Yang
4448cb64c8 nvh264dec,nvh265dec: Don't realloc bitstream buffer per slice
Allocated memory size has not been updated which results in
realloc per slice. Fixing it and also release bitstream buffer
on ::close(), not finalize.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2379>
2022-05-06 00:08:50 +01:00
Seungha Yang
222963bd5a d3d11screencapturesrc: Fix crash when d3d11 device is different from owned one
GstD3D11ScreenCapture object is pipeline-independent global object
and the object can be shared by multiple src elements,
in order to overcome a limitation of DXGI Desktop Duplication API.
Note that the API allows only single capture session in a process for
a monitor.

Therefore GstD3D11ScreenCapture object must be able to handle a case
where a src element holds different GstD3D11Device object. Which can
happen when GstD3D11Device context is not shared by pipelines.

What's changed:
* Allocates capture texture with D3D11_RESOURCE_MISC_SHARED for the
  texture to be able to copied into other device's texture
* Holds additional shader objects per src element and use it when drawing
  mouse

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1197
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2378>
2022-05-05 22:11:46 +00:00
Seungha Yang
15d5b28515 d3d11decoder: Do not preallocate texture using downstream d3d11 buffer pool
Our decoder implementation does not use downstream d3d11 pool for
decoding because of special requirement of D3D11/DXVA. So preallocation
using the downstream buffer pool will waste GPU memory in most cases.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2377>
2022-05-05 19:11:57 +01:00
Seungha Yang
288f6e4dba d3d11decoder: Copy HDR10 related caps field manually
If negotiate() is called from the set_format() chain, sinkpad may not
hold caps yet, so baseclass cannot copy it over to srcpad caps.
Copy them manually.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2376>
2022-05-05 18:33:37 +01:00
Jakub Adam
fe2a940898 d3d11screencapture: Set viewport when drawing mouse cursor
If there weren't any moved/dirty regions in the captured frame, the
viewport of the ID3D11DeviceContext would be left at whatever previous
value it had, which could lead to the cursor being drawn in a wrong
position and/or in an incorrect size.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2371>
2022-05-05 09:48:05 +01:00
Corentin Damman
8fc20ad657 cuda-converter: fix nvrtc compilation on non-English locale systems
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2367>
2022-05-04 23:29:52 +01:00
Xavier Claessens
a1bfd113ca Meson: Fix deprecation warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2358>
2022-05-04 11:40:35 +01:00
Ruben Gonzalez
6464039946 gst_plugin_load_file: force plugin reload if diff filename
If a file includes a new version of a plugin that exits in the
registry, the output of gst-inspect is incorrect. The output has the
correct version but incorrect filename, and element description.

This seems to have also fixed some documentation issues.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2357>
2022-05-04 11:05:11 +01:00
Tim-Philipp Müller
8769bec70c Back to development
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2347>
2022-05-03 00:55:58 +01:00
Tim-Philipp Müller
8dbfc89a85 Release 1.20.2 2022-05-02 23:29:29 +01:00
Tim-Philipp Müller
0e1c37fb8f Update ChangeLogs for 1.20.2 2022-05-02 23:29:19 +01:00
Seungha Yang
1e55e07cb8 d3d11videosink: Fix for unhandled mouse double click events
Only window created with CS_DBLCLKS style can receive those mouse
double click events, so we need to use the style for internal/external
windows can get double click events.

Also, passthrough mouse events to parent window in the same message pumping
threads instead of manually forwarding each mouse event.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1172
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2286>
2022-05-01 15:33:58 +00:00
Seungha Yang
0d65762411 d3d11window: Use ANSI version WIN32 API explicitly
We were using ANSI version APIs implicitly because UNICODE is not
defined by ourselves. But potentially it can be broken if user
defines UNICODE.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2286>
2022-05-01 15:33:58 +00:00
Sebastian Dröge
f2c0d0edf4 interlace: Also handle a missing "interlace-mode" field as progressive
Otherwise caps negotiation will fail in situations that are supposed
to work, like:

  "video/x-raw,framerate=(fraction)60/1" ! interlace field-pattern=0 ! "video/x-raw,framerate=(fraction)30/1"

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2337>
2022-04-30 00:57:23 +01:00
Sebastian Dröge
30afe21cd1 interlace: Add some more debug output to the getcaps function
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2337>
2022-04-30 00:57:22 +01:00
Edward Hervey
cd64a16a99 mpegts: Handle "empty" PMT gracefully
Some streams have 2 PMT sections in a single TS packet. The first one is "valid"
but doesn't contain/define any streams. That causes an unrecoverable issue when
we try to activate the 2nd (valid) PMT.

Instead of doing that, pre-emptively refuse to process PMT without any streams
present within. We still do post that section on the bus to inform applications.

Fixes #1181

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2327>
2022-04-28 14:27:31 +00:00
Seungha Yang
d953d4de90 nvvp9sldec: Increase DPB size to cover render delay
This should've included in the previous MR
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/987
already, but missed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2324>
2022-04-28 12:55:48 +00:00
He Junyan
b8462b0624 va: dec: Use gst_buffer_pool_config_set_va_alignment() to set alignment.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2301>
2022-04-26 14:44:45 +01:00
He Junyan
62fcd93a93 va: pool: Replace all tabs with spaces in header file.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2301>
2022-04-26 14:44:33 +01:00
He Junyan
e834627396 va: pool: Delete the GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT.
The va pool is used for GPU side surface/image, its alignment should
not be changed arbitrarily by others. So we decide not to expose the
GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT flag anymore.
Instead, user can call gst_buffer_pool_config_set_va_alignment() to
set its surface/image alignment.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2301>
2022-04-26 14:42:12 +01:00
He Junyan
f35bd6c8bb va: pool: Add set_va_alignment() API.
We want to use gst_buffer_pool_config_set_va_alignment() to replace
gst_buffer_pool_config_get_video_alignment(). The later one is specific
for GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT option.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2301>
2022-04-26 14:41:59 +01:00
He Junyan
74918ab9ea av1parse: Fix a latent memory leak in colorimetry setting.
Also delete the useless "have_cinfo" judgement.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2297>
2022-04-26 11:05:05 +01:00
He Junyan
f39a473f42 av1parse: Correct the meaning of color_range flag.
According to spec:
color range equal to 0 shall be referred to as the studio swing
representation and color range equal to 1 shall be referred to as
the full swing representation.

The current status is just the opposite.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2297>
2022-04-26 11:05:05 +01:00
Stéphane Cerveau
0d4621d208 rvsg: fix cairo include
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2280>
2022-04-23 11:03:35 +01:00
Sangchul Lee
c88a68c411 webrtcbin: Avoid access of freed memory
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2258>
2022-04-21 10:34:31 +00:00
Wonchul Lee
7d862e0f5e dashsink: Unlock when failed to get content
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2246>
2022-04-20 09:20:35 +01:00
Camilo Celis Guzman
3eb5d66938 gstav1parse: fixup various possible logical errors
Found via an analyzed build for Clang. Specifically we had:

gstav1parse.c[1850,11] in gst_av1_parse_detect_stream_format: Logic error: The left operand of '==' is a garbage value
gstav1parse.c[1606,11] in gst_av1_parse_handle_to_small_and_equal_align: Logic error: The left operand of '==' is a garbage value

Also a couple of false-positives:

gstav1parse.c[1398,24] in gst_av1_parse_handle_one_obu: Logic error: Branch condition evaluates to a garbage value
gstav1parse.c[1440,37] in gst_av1_parse_handle_one_obu: Logic error: The left operand of '-' is a garbage value

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2240>
2022-04-19 17:33:49 +01:00
Seungha Yang
3b5f1406f3 win32: Enable high-resolution timer for MinGW build
timeapi.h is missing in our MinGW toolchain. Include mmsystem.h
header instead, which defines struct and APIs in case of our MinGW
toolchain. Note that in case of native Windows10 SDK (MSVC build),
mmsystem.h will include timeapi.h

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2167>
2022-04-16 10:00:04 +00:00
Edward Hervey
e4b9f6e6d8 tsdemux: Fix AC-4 detection
This regression was introduced by
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1102
and has been present since 1.18

* Stream Type 0x06 is defined in the base mpeg-ts specification as Private PES
Packets. Determining the content should be solely based on descriptors found
within the PMT.
* This was abused in that commit by defining a "bluray-only" stream type for AC4
: `ST_BD_AUDIO_AC4`
* This should be entirely handled in the regular private pes handling further
down in the code

Fixes #1154

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2176>
2022-04-14 14:53:40 +00:00
Edward Hervey
e882282ffb mxfdemux: Fix issue with re-syncing
In case of re-syncing (i.e. moving to another partition to avoid too much of an
interleave), there was previously no checks to figure out whether a given
partition was already fully handled (i.e. when coming across it again after a
previous resync).

In order to handle this at least for single-track partitions, check whether we
have reached the essence track duration, and if so skip the partition.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2162>
2022-04-12 14:37:20 +01:00
Edward Hervey
98afe3bacd mxfdemux: Don't double-increase track position
The essence track position should only be overriden if we sucesfully switched to
another position. In case of EOS we do not want to override it else we would
increase the track position *again* at the end of this function

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2162>
2022-04-12 14:37:20 +01:00
Edward Hervey
34c9f41753 mxfvanc: Handle empty VANC packets
Some XDCAM recorders store empty packets for VANC, and don't even include the
2byte length.

Handle them in the same way as VANC packets with 0 packets.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2124>
2022-04-06 11:52:58 +01:00
Stéphane Cerveau
39b6e6816b bad: examples: fix unused res warning
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2116>
2022-04-05 11:39:02 +01:00