Commit graph

491 commits

Author SHA1 Message Date
He Junyan 76585b3a05 av1decoder: fail early if no input caps have been provided
The av1decoder class does not implement the ->parse() virtual function,
and we always need to add the av1parse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064>
2023-02-25 10:40:21 +08:00
He Junyan 30a05a3999 vp9decoder: fail early if no input caps have been provided
The vp9decoder class does not implement the ->parse() virtual function,
and we always need to add the vp9parse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064>
2023-02-25 10:38:58 +08:00
He Junyan c8af9adcdc vp8decoder: fail early if no input caps have been provided
The vp8decoder class does not implement the ->parse() virtual function,
it can only accepts frame aligned data. If some element such as filesrc
feed it with unaligned data, the behaviour is undecided. So we should
set_needs_format of the decoder to TRUE, then it can fail with a
"not-negotiated" error early, rather than go on and generate unexpected
error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064>
2023-02-25 10:32:45 +08:00
He Junyan a965be8d96 mpeg2decoder: fail early if no input caps have been provided
The mpeg2decoder class does not implement the ->parse() virtual function,
and we always need to add the mpegvideoparse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064>
2023-02-25 10:31:27 +08:00
He Junyan 13b36cd4e3 h264decoder: fail early if no input caps have been provided
The h264decoder class does not implement the ->parse() virtual function,
and we always need to add the h264parse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064>
2023-02-25 10:30:37 +08:00
He Junyan b92a0a3e84 h265decoder: fail early if no input caps have been provided
The h265decoder class does not implement the ->parse() virtual function,
and we always need to add the h265parse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064>
2023-02-25 10:27:24 +08:00
Seungha Yang 319f5f0760 cuda: Link libatomic if needed
Looks like C++ does not pull it automatically

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3997>
2023-02-21 16:00:32 +00:00
Nicolas Dufresne 9aa41aa35e h264bitwriter: Remove second_chroma_qp_index_offset cast
That API pps->second_chroma_qp_index_offset has been fixed to reflect
the sign of field in the spec.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3966>
2023-02-20 16:40:02 +00:00
Mengkejiergeli Ba bca3a3c923 h264parser: Fix the type of a parameter
From spec, the value of second_chroma_qp_index_offset is in the range of
-12 to +12 inclusive. Fix its type from guint8 to gint8.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3966>
2023-02-20 16:40:01 +00:00
Mengkejiergeli Ba 7278c31ea8 vaallocator: Check return value from va_sync_surface
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3919>
2023-02-20 16:02:38 +00:00
Seungha Yang 59f359eb99 cuda: Rename macro HAVE_NVCODEC_GST_GL -> HAVE_CUDA_GST_GL
... and always use #ifdef instead of #if

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3992>
2023-02-20 01:49:31 +09:00
Mengkejiergeli Ba b2fcc177f5 av1parser, h265parser: Fix some code defects
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3953>
2023-02-19 11:23:00 +00:00
Seungha Yang ff3120a38c cudamemory, d3d11memory: Add memory_{get,set}_token_data() methods
Similar to GstMiniObject qdata but new methods will use int64
token value and per object lock, instead of GQuark with global
mutex in qdata

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3884>
2023-02-16 17:49:54 +00:00
Seungha Yang f6defc0c5b cudamemory: Add gst_cuda_allocator_alloc_wrapped() method
... so that application can pass already allocated CUDA memory

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3884>
2023-02-16 17:49:54 +00:00
Seungha Yang e77e6fd4a7 cudamemory: Skip sync if no I/O operation happend on free()
Synchronization for unused memory is not required

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3884>
2023-02-16 17:49:54 +00:00
Seungha Yang f44cac1c9f cudamemory: Make CUtexObject object reusable
Create and hold CUtexObject objects in GstCudaMemory so that it can
be reusable

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3884>
2023-02-16 17:49:54 +00:00
Seungha Yang 992406cf4f cuda, nvcodec: Make GstD3D11 dependency mandatory
GstD3D11 build-time dependencies should be always available on Windows already
and runtime dependencies as well, since required external
(non-GStreamer) depends are all system DLLs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3884>
2023-02-16 17:49:54 +00:00
Seungha Yang f212bd901b cuda: Port to C++
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3884>
2023-02-16 17:49:53 +00:00
Mengkejiergeli Ba 585d2d93f6 codecparsers: {h264,h265}bitwriter: Remove redundant condition checks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3967>
2023-02-15 16:00:04 +08:00
Sebastian Dröge 5119ca25e4 av1parser: Don't consider unknown metadata OBUs a bitstream error
Just don't parse them.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1774

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3898>
2023-02-09 14:52:58 +00:00
Seungha Yang 090d50e1a0 tests: Add CUDA memory allocator test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3629>
2023-02-03 15:27:43 +00:00
Seungha Yang 7a8bb85523 cudaupload, cudadownload: Update for shared CUDA stream
Use CUDA stream of memory if exists

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3629>
2023-02-03 15:27:43 +00:00
Seungha Yang d409c35367 cudabufferpool: Add support for CUDA stream use in memory
* Use GstCudaPoolAllocator
* Pass configured GstCudaStream object to allocator

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3629>
2023-02-03 15:27:42 +00:00
Seungha Yang 30d06e03c2 cudamemory: Make GstCudaStream-aware
This will be used for CUDA stream sharing.

* Adding GstCudaPoolAllocator object. The pool allocator will
  control synchronization of allocated memory objects.
* Modify gst_cuda_allocator_alloc() API so that caller can specify/set
  GstCudaStream object for the newly allocated memory.
* GST_CUDA_MEMORY_TRANSFER_NEED_SYNC flag is added in addition to
  existing GST_CUDA_MEMORY_TRANSFER_NEED_{UPLOAD,DOWNLOAD}.
  The flag indicates that any GPU command queued in the CUDA stream
  may not be finished yet, and caller should take care of the
  synchronization.
  The flag is controlled by GstCudaMemory object if the memory holds
  GstCudaStream. (Otherwise, GstCudaMemory will do synchronization
  as before this commit). Specifically, GstCudaMemory object will set
  the new flag automatically when memory is mapped with
  (GST_MAP_CUDA | GST_MAP_WRITE) flags. Caller will need to unset
  the flag via GST_MEMORY_FLAG_UNSET() if it's already synchronized
  by client code.
* gst_cuda_memory_sync() helper function is added to perform synchronization
* Why not use CUevent object to keep track of synchronization status?
  CUDA provides fence-like interface already via CUevent object,
  but cuEventRecord/cuEventQuery APIs are not zero-cost operations.
  Instead, in this version, the status is tracked by using map and
  object flags.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3629>
2023-02-03 15:27:42 +00:00
Seungha Yang 9eaae61a44 cudamemory: Allow nullptr allocator object
The GstCudaAllocator object doesn't hold any device object.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3629>
2023-02-03 15:27:42 +00:00
Seungha Yang a7c54ebc06 cuda: Add GstCudaStream object
Wrap CUstream handle with GstCudaStream to make it ref-counted
object. This GstCudaStream object will be used later for
CUDA stream sharing

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3629>
2023-02-03 15:27:42 +00:00
Seungha Yang 661b5f60c6 cuda: Provide single header include entry point
Add "gstcuda.h" header file

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3629>
2023-02-03 15:27:42 +00:00
Olivier Crête 16158df5b2 wayland: Export the _get_type() functions
Add the macro before the declaration so the types are properly exported,
this makes it possible to do dynamic casting and checks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3858>
2023-02-01 15:29:26 +00:00
Tim-Philipp Müller 4051581ed8 codecparsers: vp9parser: use single allocation for parser structs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3790>
2023-01-27 23:50:19 +00:00
Víctor Manuel Jáquez Leal 6b04c8ee56 vulkan: imagebufferpool: Remove video meta handling.
Remove video meta handling since it's not used at all, also removed its usage in
vkvideofilter.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3722>
2023-01-26 11:49:00 +00:00
Víctor Manuel Jáquez Leal d8cb9d2ce3 vulkan: physicaldevice: Dump 1.3 features and properties.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3721>
2023-01-26 03:19:58 +00:00
Víctor Manuel Jáquez Leal e54d334526 vulkan: memory: Flush non coherent memory after write.
Spec 7.1.3:

If a memory object does not have the VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
property, then vkFlushMappedMemoryRanges must be called in order to guarantee
that writes to the memory object from the host are made available to the host
domain, where they can be further made available to the device domain via a
domain operation. Similarly, vkInvalidateMappedMemoryRanges must be called to
guarantee that writes which are available to the host domain are made visible to
host operations.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3723>
2023-01-26 02:31:09 +00:00
U. Artie Eoff d071ea714d vp9parser: remove checks for g_new0 result
The g_new0 aborts the process if it fails.  Thus,
there is no need to check if the g_new0 call succeeded.

This should silence a resource leak warning by static
scan.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3788>
2023-01-25 17:36:54 +00:00
Seungha Yang 2e574a80d9 d3d11: Don't use g_alloca()
_alloca CRT function is deprecated. Moreover, stack allocation
for string is not a good idea. We can use _malloca inline
function instead, but all use of _alloca in d3d11 library/plugin
are not performance critical path at all.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3652>
2023-01-24 20:27:43 +00:00
Tim-Philipp Müller e214be79de libs: va: drop use of GSlice
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>
2023-01-24 15:25:07 +00:00
Tim-Philipp Müller 32384c0c69 libs: codecparsers: drop use of GSlice
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>
2023-01-24 15:25:07 +00:00
Tim-Philipp Müller e6da8deb8e libs: insertbin: drop use of GSlice allocator
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>
2023-01-24 15:25:07 +00:00
Tim-Philipp Müller 92f0f48472 libs: mpegts: drop use of GSlice allocator
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>
2023-01-24 15:25:07 +00:00
Seungha Yang 434337c3e1 d3d11memory: Fix potential crash in GstD3D11PoolAllocator
Allocator object can be the final refcount holder, when a GstD3D11Memory
is being released. Do unref allocator once there's no more
remaining operation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3715>
2023-01-12 19:26:41 +00:00
Seungha Yang fdc3ee97ae d3d11memory: Remove GstD3D11PoolAllocator::dispose
Clear GstD3D11Device object in finalize method as well

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3715>
2023-01-12 19:26:41 +00:00
Olivier Crête af315967da webrtc nice: Let libnice handle STUN/TURN DNS resolution
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3676>
2023-01-07 16:03:23 +00:00
Olivier Crête 069eeeb5c3 webrtc: Change requirement to libnice 0.1.20
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3676>
2023-01-07 16:03:23 +00:00
He Junyan 1eeea942de h265decoder: Fix a memory leak because of slice header.
The gst_h265_slice_hdr_free() should free the slice header just
parsed, not the priv->current_slice. Or, the memory leak will
happen because we do not free the slices in priv->nalu list.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3671>
2023-01-03 17:28:18 +08:00
Seungha Yang af3311c1d6 d3d11memory: Fix typo in vfunc name
s/set_actvie/set_active/g

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3627>
2022-12-23 01:03:41 +09:00
Seungha Yang 979ff4616e h264parser: Update doc for GST_H264_FRMAE_PACKING_TOP_BOTTOM
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1318>
2022-12-12 21:43:14 +00:00
Brad Hards 29dd254f7a h264parser: typo fix in enum value
Old value is marked deprecated, new enum with same entry is added. Should be binary compatible.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1318>
2022-12-12 21:43:14 +00:00
A. Wilcox f4bdc79a07 mpegts: Handle when iconv doesn't support ISO 6937
Systems like musl libc don't support ISO 6937 in iconv.  This ensures
that the MPEG-TS plugin can cope with that.  There is existing support
in the plugin for other methods, so it seems to have been the original
intent anyway.

Fixes: #1314
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3245>
2022-12-12 10:17:26 +00:00
Víctor Manuel Jáquez Leal 20b207bf8f vaallocator: Fix gi annotations.
Remove spurious types and skip functions that returns VASurfaceID
which isn't exposed to introspection.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3557>
2022-12-11 20:42:54 +00:00
Seungha Yang a874c9f2d4 cuda: Fix runtime compiler library loading on Windows
The cuda is a part of GPU driver but runtime compiler is a part of
cuda toolkit, which means the version number can be different.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3545>
2022-12-09 19:24:08 +09:00
Seungha Yang e6585c89ea cuda: Hide memory copy util function
The method was intended to be used by only cudaupload/download elements
and not ready to be a part of public API

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3545>
2022-12-08 19:52:23 +00:00
Marek Olejnik 02359dd251 h265decoder: Do not abort when failed to prepare ref pic set
Currently the element calls abort when failed to prepare reference
picture set. This can happent when the input stream is somehow
corrupted, like a rtsp strem with lost packets. Now it will only
return with GST_FLOW_ERROR instead of terminating whole process.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3505>
2022-12-07 13:01:35 +00:00
Johan Sternerup 4b96294f19 webrtc: Fix possible use-after-free of GstWebRTCICETransport
Because of the asynchronous resolving of mDNS ICE candidates it is
possible that GstWebRTCICE outlives webrtcbin. This in turn prolongs
the lifetime of the GstWebRTCNiceStream objects via refs in
nice_stream_map. Thus the GstWebRTCICETransport objects held in
GstWebRTCNiceStream may be invalid at the time they are accessed by
the _on_candidate_gathering_done() callback since GstWebRTCNiceStream
doesn't take a reference to them. Doing so would create a circular
reference, so instead this commit introduces weak references to the
transport objects and then we can check if the objects are valid before
accessing them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3502>
2022-12-02 03:37:29 +00:00
He Junyan 25f90c828a h264parser: Fix a typo in pred_weight_table parsing.
When setting default values, the reference list number of l1 is wrong.

Fix: https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/issues/336
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3464>
2022-11-25 14:13:46 +00:00
Seungha Yang 132eddd7b9 av1decoder: Clear highest_spatial_layer per sequence header
Clear the value to default zero, indicating that no spatial scalability
layer is used.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>
2022-11-19 11:58:01 +00:00
Seungha Yang c92128f6b0 av1decoder: Don't error out by dropped OBU
OBU can be dropped if the current layer is not in selected operation
point

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>
2022-11-19 11:58:01 +00:00
Seungha Yang f1a52c5ea0 av1decoder: Fix wrong spatial layer validation
Highest spatial id and temporal id is independent, and should not drop
temporal enhance layer by the previous condition. Note that
the decision for dropping OBU based on operation point is being
handled in gst_av1_parser_identify_one_obu() already.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1585
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>
2022-11-19 11:58:01 +00:00
Seungha Yang 55ca832d70 av1parser: Don't print warning for expected OBU drop
Dropping an OBU which is not in selected operation point is an
expected condition.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>
2022-11-19 11:58:01 +00:00
Seungha Yang 3ef2955c7d av1parser: Remove impossible condition
unsigned integer cannot be negative

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>
2022-11-19 11:58:01 +00:00
Jan Schmidt 6538ebbaf3 webrtc: Improve GstWebRTCStatsType docstring
Fix a typo of peer-connectiion -> peer-connection

Add a link to the w3c RTCStats type for a description
of what each statistics type is.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3434>
2022-11-19 13:12:58 +11:00
Johan Sternerup e708543039 webrtcbin: Add settings for HTTP proxy
Pass this to libnice which has a simple HTTP 1.0 proxy with basic
authentication only.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2867>
2022-11-18 15:00:58 +00:00
Seungha Yang 2ede4011bf codecs: Keep track of non-decoding-essential input state change
In theory, input caps can be updated anytime at non-keyframe or
sequence boundary, such as HDR10 metadata, framerate, aspect-ratio
or so. Those information update might not trigger ::new_sequence()
or subclass may ignore the changes.

By this commit, input state change will be tracked by baseclass
and subclass will be able to know the non-decoding-essential
update by checking the codec specific picture struct
on ::output_picture()

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3328>
2022-11-16 13:12:38 +00:00
Seungha Yang c1efa9ac4b cudaupload,cudadownload: Add support for planar 8bits RGB formats
Defines RGBP, BGRP, and GBR formats, which have the same memory
layout as already supported Y444. And defines GBRA format as well
which needs just one additional alpha plane

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3389>
2022-11-15 16:25:44 +00:00
Seungha Yang 9c4c8c3932 cudacontext: Store texture alignment
it was missed in the previous refactoring

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3389>
2022-11-15 16:25:44 +00:00
Elliot Chen b09b246fc8 gstplay: add warning message details check before post it
For some warning message which has no detail data, need check to avoid printing critical log.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3382>
2022-11-15 01:01:10 +00:00
Seungha Yang 837881ad29 d3d11converter: Fix YUY2 conversion error
Always configure shader conversion path, then fallback to the
shader path if processor is not available

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3392>
2022-11-14 20:14:27 +00:00
Seungha Yang d0572622fa d3d11: Add support for planar RGB formats
Adding RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, and
GBRA_12LE format support

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3392>
2022-11-14 20:14:27 +00:00
Edward Hervey 90a1d9f873 transcoder: Don't leak API bus and GMainLoop
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3390>
2022-11-12 10:33:51 +01:00
Elliot Chen 4020542b3c gstplay: fix segmentation fault caused by subtitle info update
For subtitle stream played by subrui, gstplay will update subtitle
information before select the stream by using playbin3. Need check
the subtitle_sid value to avoid segmentation fault.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3383>
2022-11-10 14:07:39 +00:00
He Junyan 3875c420f7 libs: va: Add API to peek the va buffer's display.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3322>
2022-11-05 13:39:34 +08:00
He Junyan 464650a5d0 libs: va: Add API to peek the va memory's display.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3322>
2022-11-05 13:39:34 +08:00
He Junyan b1a98433f8 libs: va: Add API to peek the allocator's display.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3322>
2022-11-05 13:39:34 +08:00
He Junyan 028920cfc4 libs: va: Fix code style in gstvaallocator.h
Replace all tabs with spaces.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3322>
2022-11-05 13:39:34 +08:00
Seungha Yang 3f94df9487 d3d11: Add support for YUY2 format
YUY2 is a primary YUV 4:2:2 format for DXVA.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3316>
2022-11-03 06:40:09 +09:00
Marijn Suijten 31c23fb6c0 vulkan: Mark gst_vulkan_image_view_new create_info as constant pointer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1615>
2022-11-01 15:19:51 +01:00
Marijn Suijten 3d081c45be vulkan: Remove unnecessary null checks
These null checkes are slightly misleading when double-checking
mutability for external language interop.  None of the functions in
these files allow the variable at hand to become `NULL` under normal
operation, because they are checked at initialization and never (allowed
to be) reassigned to `NULL`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1615>
2022-11-01 15:19:51 +01:00
Marijn Suijten ebe7517b8e vulkan: Add missing (nullable) annotation to Returns
Most of these functions already state they might return `%NULL`, but
this is not picked up by G-IR.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1615>
2022-11-01 15:19:51 +01:00
Marijn Suijten 614cd87732 vulkan: Add missing array length and (out) annotation to parameters
Add `array length` annotation for `layouts` such that `n_layouts` is
properly marked as its length, and add `(out)` where a function returns
in that parameter.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1615>
2022-11-01 15:19:51 +01:00
Matthew Waters f77f27f4c9 vp9parser: initialize subsampling to -1
The default value of 0 is a valid subsampling value and could be
confused with an 'unset' value.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3260>
2022-10-28 00:06:07 +00:00
Thibault Saunier 4f991a55af adaptivedemux: Minor typo fix
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3159>
2022-10-27 19:45:44 +00:00
He Junyan 2408ca2f18 h265bitwriter: Correct the all API to byte aligned.
In fact, all the h265 bit writer have byte aligned output. So we
change the API from bit size in unit to byte size, which is easy
to use.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3193>
2022-10-27 12:15:43 +00:00
He Junyan c294ba82e6 h264bitwriter: Correct the all API to byte aligned.
In fact, all the h264 bit writer have byte aligned output except
the slice header. So we change the API from bit size in unit to
byte size, which is easy to use. For slice header, we add a extra
"trail_bits_num" to return the unaligned bits number.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3193>
2022-10-27 12:15:43 +00:00
He Junyan 9dc76185fc bitwriter: Fix a nal conversion bug when input is not byte aligned.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3193>
2022-10-27 12:15:43 +00:00
Seungha Yang 2c5a050ae7 codecparsers: {h264,h265}bitwriter: Don't install headers yet
Those APIs are quite early stage of development, and we might want to
change them in the near future

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3275>
2022-10-27 06:15:56 +00:00
Seungha Yang e68645c2d2 d3d11: Move format defines to private header
Those defines will be likely changed/deleted in the future, and we
don't need to expose them to public at the moment

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3265>
2022-10-26 02:55:34 +09:00
Sebastian Dröge 366893e9ac Fix various warnings from gobject-introspection
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3261>
2022-10-25 09:45:25 +03:00
Nirbheek Chauhan a083280a58 gl/vulkan: Fix static linking on macOS
duplicate symbol '__invoke_on_main' in:
    /Library/Frameworks/GStreamer.framework/Versions/1.0/lib/libgstvulkan-1.0.a(cocoa_gstvkwindow_cocoa.m.o)
    /Library/Frameworks/GStreamer.framework/Versions/1.0/lib/libgstgl-1.0.a(cocoa_gstglwindow_cocoa.m.o)
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Also make the same change in iOS for consistency.

Continuation of https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1132

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3242>
2022-10-24 00:48:08 +00:00
Alba Mendez 4810008afa webrtcbin: support adding TURN servers after pipeline start
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1680

When a TURN server is added for the first time, propagate
the change to all nice streams that already exist. This
lets us add servers after the pipeline has been started
(and streams have been added).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3217>
2022-10-19 07:23:42 +00:00
Sebastian Dröge f6898303a0 play: Add/fix various annotations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194>
2022-10-18 13:51:17 +03:00
Sebastian Dröge 2f0e195709 vulkan: Add/fix various annotations
And fix a memory leak in gst_vulkan_display_wayland_new() in error
cases.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194>
2022-10-18 13:51:17 +03:00
Sebastian Dröge b57c07d5a7 d3d11: Add/fix various annotations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194>
2022-10-18 13:51:17 +03:00
Sebastian Dröge 73557fe093 cuda: Add/fix various annotations
And fix a memory leak when creating a CUDA context fails.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194>
2022-10-18 13:51:17 +03:00
Sebastian Dröge f821ddc108 codecs: Add/fix various annotations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194>
2022-10-18 13:51:17 +03:00
Sebastian Dröge 3d528b25d1 badaudio: Add/fix annotations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194>
2022-10-18 13:51:16 +03:00
Sebastian Dröge 64c376b5b2 webrtc: Add/fix various annotations
And mark string parameters as const.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194>
2022-10-18 08:56:58 +00:00
Mathieu Duponchelle b10e0efd3a webrtc/nice: fix small leak of split strings
g_strfreev previously stopped at our manual NULL-termination. Fix by
restoring the pointer after joining.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3188>
2022-10-14 20:15:00 +00:00
Sebastian Dröge 430ec0d860 webrtc: Move GST_WEBRTC_ERROR_TYPE_ERROR at the end of the enum to keep ABI compatibility
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3154>
2022-10-11 11:24:19 +00:00
Nirbheek Chauhan a5ef7cb041 d3d11: Fix debug build on UWP
GstDXGIGetDebugInterface() is unused when targeting UWP. We directly
call DXGIGetDebugInterface1() in that case.

Fixes build failure:

../gst-libs/gst/d3d11/gstd3d11device.cpp(271): error C2440: '=': cannot convert from 'HRESULT (__cdecl *)(UINT,const IID &,void **)' to 'DXGIGetDebugInterface_t'
../gst-libs/gst/d3d11/gstd3d11device.cpp(271): note: This conversion requires a reinterpret_cast, a C-style cast or function-style cast

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3118>
2022-10-05 18:29:01 +00:00
Sangchul Lee 94c2cd9ddd webrtc/nice: Make sure to return NULL when validating turn server fails
It affects 'add-turn-server' signal action and 'turn-server' property
of webrtcbin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3120>
2022-10-05 16:35:00 +00:00
Johan Sternerup 212c09a70e webrtc: return error when sending on non-open datachannel
According to W3C
specification (https://w3c.github.io/webrtc-pc/#datachannel-send) we
should return InvalidStateError exception when trying to send when the
channel is not open. In the world of C/glib/gstreamer we don't have
exceptions but have to rely on gboolean/GError instead. Introducing
these calls for a change in function signature of the action signals
used to send data on the datachannel. Changing the signature of the
existing "send-string" and "send-data" signals would mean an immediate
breaking change so instead we deprecate them. Furthermore, there is no
way to express GError** as an argument to an action signal in a way
that fits language bindings (pointer-to-pointer simply does not work)
and we have to use regular functions instead.

Therefore we introduce gst_webrtc_data_channel_send_data_full() and
gst_webrtc_data_channel_send_string_full() while deprecating the old
functions and corresponding signals.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1958>
2022-10-05 11:08:30 +00:00
Stéphane Cerveau fb09c028e3 h265parse: fix typo in member of GstH265SPS
Rename sps_extnsion_params to sps_extension_params

Fix comment about vui_parameters_present_flag

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3072>
2022-10-04 10:01:12 +00:00
He Junyan 3d56f133f8 codecs: av1decoder: Add the highest_spatial_layer field.
As SPEC says, when multi spatial layer exists, we should only output
one frame with the highest spatial id from each TU. We now store the
highest spatial layer information in the base class in order to let
the sub class handle different layers easily.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2382>
2022-09-16 09:45:00 +00:00
Seungha Yang 219bb769a2 cuda: Remove GST_CUDA_HAS_D3D define from header
... and fix d3d11 specific enum type name

GST_CUDA_HAS_D3D is a build time define which indicates whether
GstD3D11 library is available or not, but DirectX SDK headers
must be available on the build system already.

Expose Direct3D related symbols if the build target is Windows
(i.e., if G_OS_WIN32 is defined)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3018>
2022-09-13 16:40:51 +00:00
Víctor Manuel Jáquez Leal de7cfa92e3 va: allocator: Fix parameter name to match signature.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1025>
2022-09-13 14:57:21 +02:00
Víctor Manuel Jáquez Leal e4f6ade308 va: Complete library and plugin documentation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1025>
2022-09-13 14:57:21 +02:00
Víctor Manuel Jáquez Leal a51ac72b5e va: Move gstvavideoformat out of library headers.
Since it's no needed for API consumers. Though it can be added later.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1025>
2022-09-13 14:57:21 +02:00
Víctor Manuel Jáquez Leal 38491e25a3 docs: Generate libgstva GI and pkg-config.
Currently libgstva is only exposed internally to gst-plugins-bad. No
headers are installed, no documentation generated, pkgconfig file,
neither gobject-introspection files.

This patch turn on all that.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1025>
2022-09-13 14:52:39 +02:00
Thibault Saunier bc9c1e3956 meson: Namespace the plugins_doc_dep/libraries variables
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970>
2022-09-01 21:17:35 +00:00
Thibault Saunier c971a6d71f cuda: meson: Fix generating GstCuda gir file against gstreamer-full
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970>
2022-09-01 21:17:35 +00:00
Seungha Yang 8b988605a8 d3d11memory: Fix GstAllocator::mem_copy() implementation
We were checking possible bind flags for the DXGI format
of the source texture but that's never applied to
the destination texture desc.

Just use the already configured bind (and misc) flags of source texture
for the destination texture allocation without additional check.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2950>
2022-08-30 19:58:29 +00:00
Seungha Yang c3cf9521a5 d3d11: Update library doc
* Private header name is changed to gstd3d11-private.h to follow
  naming convention
* Add Since mark everywhere
* Update member variable names to be consistent with the other
  object implementations in this library
* Correct outdated documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2945>
2022-08-27 22:40:34 +09:00
Seungha Yang 6c4c576699 h265decoder: Update SpsMaxLatencyPictures properly
The SpsMaxLatencyPictures value never gets back to zero even if
it's needed. Update the value properly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2915>
2022-08-22 19:48:53 +00:00
Seungha Yang 59e60203ba h265decoder: Reorganize debug printing
As of the MR
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2575
gst_h265_decoder_process_sps() is called per slice and it causes
noisy debug message print.
Reorganize related and the other debug printings at once.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2915>
2022-08-22 19:48:53 +00:00
Thibault Saunier d04a80676e webrtc:ice: Fix candidate stats related APIs for bindings
null-terminated arrays of structures is not usable.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2917>
2022-08-19 10:46:01 -04:00
Thibault Saunier 050006e9f0 webrtc: doc: Cleanup Since markers
We hide some newly public symbols when moving some objects to the library
which was not really correct in the end. Properly add the Since markers
as needed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2891>
2022-08-18 08:34:36 +00:00
Thibault Saunier 82a7a23fa0 webrtc:ice: Reindent header
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2891>
2022-08-18 08:34:36 +00:00
Thibault Saunier 0ee9727df3 webrtc:ice: Mark protected fields as such
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2891>
2022-08-18 08:34:36 +00:00
Thibault Saunier 24b171735d webrtc: Fix documentaton moving symbols in the right pages
As those symbols are documented in a 'fwd' header smart indexing in
hotdoc wasn't working.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2891>
2022-08-18 08:34:36 +00:00
Thibault Saunier b3e0205c5a webrtc:ice: Avoid using GArray in public API
And use plain null terminated C arrays instead.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2891>
2022-08-18 08:34:36 +00:00
Thibault Saunier 50202d6b53 webrtc:ice: Fix some annotations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2891>
2022-08-18 08:34:36 +00:00
Thibault Saunier 8dd4c215da webrtc: Make GstWebRTCIceCandidateStats a Boxed type
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2891>
2022-08-18 08:34:36 +00:00
Thibault Saunier ff0d73be57 webrtc:ice: Add padding to structures
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2891>
2022-08-18 08:34:36 +00:00
Seungha Yang 75e8f80999 cuda: Hide runtime compiler related header and symbols
That's already abstracted via gst_cuda_nvrtc_compile() method
and therefore, we do not need to expose such symbols yet.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2884>
2022-08-18 05:20:08 +09:00
Víctor Manuel Jáquez Leal 074bdad21f va: libs: Add Y42B format.
Enable 4:2:2 JPEG decoding in iHD.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2899>
2022-08-17 18:34:10 +00:00
Víctor Manuel Jáquez Leal 4dd6728ed5 va: Validate JPEG subsampling configurations.
There are Mesa Gallium drivers that report subsampling but without
any pixel format. So, strip out these subsamplings.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2899>
2022-08-17 18:34:10 +00:00
Daniel Morin d2fcf85796 gst-play: missing cleanup for g_autoptr
Without this change cleanup function for g_autoptr is not defined for
GstPlayMediaInfo, GstPlaySignalAdapter, GstPlayVideoRenderer,
GstPlayVideoOverlayVideoRenderer and GstPlayVisualization. Cleanup
function was defined in gstplay.h, but missing in other header files.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2888>
2022-08-17 09:52:00 +03:00
Seungha Yang eedaf10359 meson: d3d11: Fix missing header install
Install gstd3d11compile.h header file

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2896>
2022-08-16 16:55:45 +00:00
Sebastian Dröge 723bdd2514 player: Don't leak wrapped video info
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1373

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2880>
2022-08-13 12:24:37 +03:00
Sebastian Dröge aff79db608 play: Make ownership of video-sink clearer in combination with floating references
And correctly handle the case of VideoRenderer::create_video_sink() not
actually returning a floating reference, which might be tricky for some
bindings.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2880>
2022-08-13 12:16:16 +03:00
Sebastian Dröge f060b8b6f3 play: Fix object construction
Ideally new() functions should simply call g_object_new() and not much
else, so let's do that here and handle all the construction properly in
a GObject way.

Now a play object created via g_object_new() is actually usable.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2880>
2022-08-13 12:16:16 +03:00
Sebastian Dröge abfbcc0b6f player: Fix object construction
Ideally new() functions should simply call g_object_new() and not much
else, so let's do that here and handle all the construction properly in
a GObject way.

Now a player object created via g_object_new() is actually usable.

In addition, also fix the video-renderer property so that reading it
returns an object of the correct type.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2880>
2022-08-13 12:05:47 +03:00
Sebastian Dröge 15ee056fb8 player: Release signal adapter on finalize
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2880>
2022-08-13 12:04:31 +03:00
Seungha Yang 7c842d9247 meson: d3d11: Fix build with GIR enabled
... and remove unused list

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2870>
2022-08-12 18:03:00 +00:00
Matthias Clasen 491dcddf6e gstplayer: Plug a memory leak
This was showing up as a memory leak in GTK's
gstreamer media backend:

40 bytes in 1 blocks are definitely lost in loss record 18,487 of 40,868
   at 0x484586F: malloc (vg_replace_malloc.c:381)
   by 0x50D5278: g_malloc (gmem.c:125)
   by 0x50EDBA5: g_slice_alloc (gslice.c:1072)
   by 0x50EFBCC: g_slice_alloc0 (gslice.c:1098)
   by 0x51F2F45: g_type_create_instance (gtype.c:1911)
   by 0x51DAE37: g_object_new_internal (gobject.c:2011)
   by 0x51DC080: g_object_new_with_properties (gobject.c:2181)
   by 0x51DCB20: g_object_new (gobject.c:1821)
   by 0x9855F86: UnknownInlinedFun (gstplayer-wrapped-video-renderer.c:109)
   by 0x9855F86: gst_player_new (gstplayer.c:579)

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1374

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2875>
2022-08-12 15:43:05 +00:00
Seungha Yang 05dae94352 d3d11: Use WIN32 API directly for locking with RAII pattern
Such abstraction is unnecessary for this library/plugin.
Use WIN32 API directly instead of GLib wrappers.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2848>
2022-08-08 20:13:51 +00:00
Seungha Yang a75e88fdd2 d3d11memory: Remove unnecessary locking
* memory map/unmap is already protected by d3d11 device lock.
  Don't need to take another memory lock.
* Use WIN32 critical section and slim reader/writer lock APIs
  directly instead of GLib wrappers.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2848>
2022-08-08 20:13:51 +00:00
Seungha Yang 21e5c33797 d3d11memory: Allow null GstD3D11Allocator to alloc methods
Similar to gst_allocator_alloc(), use default GstD3D11Allocator
when caller passes null allocator object

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2843>
2022-08-06 23:54:56 +09:00
Seungha Yang 74f56632c3 d3d11: Use std::call_once()
g_once_init_enter() always takes global mutex for non-GCC build.
Use C++ once call implementation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2843>
2022-08-06 23:27:23 +09:00
Seungha Yang cf64c9f588 d3d11device: Use WIN32 critical section API directly
GLib's GRecMutex will allocate another heap memory for CRITICAL_SECTION
struct and g_rec_mutex_lock/g_rec_mutex_unlock use WIN32 APIs actually.
We don't need such intermediate function calls and redundant heap allocation.
Just call WIN32 APIs directly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2845>
2022-08-06 05:12:41 +09:00
Seungha Yang 72ee96af42 d3d11converter: Add options for gamma and primaries conversion
Gamma remap and/or primaries conversion requires additional
processing which might be something user want to avoid, performance
reason for example

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2831>
2022-08-04 02:48:57 +09:00
Philippe Normand 4bf62c788c webrtc: nice: WeakRef access fixes
The GstWebRTCNiceStream::ice property getter already hands-off a full reference,
so there is no need to call g_weak_ref_get() in call sites.

Fixes #1350

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2819>
2022-08-01 13:13:16 +00:00
Philippe Normand 3bdf3455a0 webrtc: ice: Fix GstWebRTCICE parent class
It is a GstObject, not a GObject.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2819>
2022-08-01 13:13:16 +00:00
U. Artie Eoff e3e98da727 meson: webrtc: ensure definition of libgstwebrtcnice_dep
... and skip if it's disabled.

Fixes #1344

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2797>
2022-07-26 17:39:52 -04:00
yatinmaan 2c1e61ea16 webrtc: Split WebRTCICE into base classes and implementation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2398>
2022-07-26 13:51:11 +00:00
Seungha Yang ba259111d5 d3d11: Implement fence abstraction
Depending on device feature level, d3d11 runtime can support
ID3D11Fence which is equivalent to ID3D12Fence.
Waiting using fence has performance-wise benefit over pulling
ID3D11Query status. If ID3D11Fence is not supported by device,
then ID3D11Query will be used instead.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2790>
2022-07-23 16:53:14 +00:00
Benjamin Gaignard 8ec0dca73b codecs: h265: Make sure that sps is processed just before decoding
It may happens that bitstream doesn't provided SPS in decoding order
(like in VPSSPSPPS_A_MainConcept_1 conformance test file).
To be sure that the decoder got the correct SPS parameters process
SPS just before start decoding the frame.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2575>
2022-07-22 16:13:47 -04:00
Sebastian Fricke 5019be9fdb codecs: h265: Fix typos
Fix multiple typos in warning and info messages.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2575>
2022-07-22 16:13:47 -04:00
Benjamin Gaignard 5ae05bb42a codecparsers: Defering computation of pps and sps fields
While possible defer computataion of pps and sps fields until
slice parsing since it may happens that bitstreams don't encoded
them in expected order.
A example weird ordered bitstreams is VPSSPSPPS_A_MainConcept_1
conformance test.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2575>
2022-07-22 16:13:47 -04:00
Nicolas Dufresne 74a811e718 codecparsers: h265: Introduce long_term_ref_pic_set_size
This is the size of the `if( long_term_ref_pics_present_flag )` inside
slice_segment_header( ) syntax. This size in bit, and after de-emulation
is needed by some HW.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1079>
2022-07-22 10:21:02 -04:00
Seungha Yang 1c3fac818d d3d11: Move GstD3D11Converter to gst-libs
The object is equivalent to GstVideoConverter but for D3D11.
Application can use this object directly for various conversions,
such as color space conversion, rescale, crop and flip/rotation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2767>
2022-07-22 00:08:51 +09:00
Seungha Yang 32eeadb4a5 d3d11: Define enum and flags types manually
gnome.mkenums_simple() doesn't work well for GstD3D11, seems to
be confused by numeric representation of D3D11, must be a bug
in GLib or so. Just don't rely on the incomplete automagic.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2767>
2022-07-22 00:07:52 +09:00
Seungha Yang 879eb9412b d3d11: Run gst-indent
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2767>
2022-07-22 00:07:52 +09:00
Seungha Yang 16f4567a50 d3d11format: Move DXGI color space mapping method to gst-libs
Expose color space mapping method to public so that application
can configure GstCaps or GstVideoInfo using DXGI color space

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2776>
2022-07-20 07:05:46 +09:00
Seungha Yang 1dd29a2564 d3d11: Move HLSL compiler to gst-libs
We should move this functionality to gst-libs so that GstD3D11Converter
can be moved to gst-libs.
Another advantage is that applications can call our
HLSL compiler wrapper method without any worry about OS version
dependent system installed HLSL library.
Note that there are multiple HLSL compiler library versions
on Windows and system installed one would be OS version dependent.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2760>
2022-07-15 06:31:51 +09:00
Seungha Yang 5386a426f3 h265decoder: Report latency
Similar to that of h264decoder

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2726>
2022-07-11 11:59:02 +00:00
Seungha Yang b09ca8635f d3d11: Use scoped device lock
Make code simpler and more deadlock-free

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2728>
2022-07-09 03:36:17 +09:00
Seungha Yang f3d51ef235 d3d11: Serialize ensure_element_data() call
It can be called any time from random thread. Thus, multiple
device objects can be created for the same physical device
if the call is not serialized, that's not a scenario we expect.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2727>
2022-07-08 01:35:34 +09:00
Seungha Yang 347ad181be d3d11memory: Update alloc_wrapped() API to avoid staging texture alloc
Add size parameter and use it for CPU accessible memory size
instead of allocating staging texture per API call.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2713>
2022-07-04 18:46:51 +00:00
Seungha Yang 46a3394581 d3d11memory: Add private method for texture wrapped memory allocation
Unlike public method gst_d3d11_allocator_alloc_wrapped(), newly
added method by this commit will not calculate CPU accessible memory
size, since staging texture must be allocated to calculate the size.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2697>
2022-07-02 05:37:55 +09:00
Seungha Yang 3919491eb2 d3d11: Use library private header in plugin
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2697>
2022-07-02 05:37:55 +09:00
Seungha Yang bcacfc7ced cuda: Protect gst_cuda_ensure_element_context() with lock
Serialize the order of context setup since it can be called
from multiple threads

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2666>
2022-06-30 12:38:08 +00:00
Seungha Yang ce82c0570e cuda: Add YUY2 and UYVY formats for GL interop
Those formats are not supported conversion formats by CUDA convert/scale elements
but would be useful for GL <-> CUDA interop use case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2691>
2022-06-30 11:17:15 +00:00
Corentin Damman 8678fc999a cudamemory: add support for planar 4:2:2 YUV formats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2269>
2022-06-30 07:30:09 +00:00
Seungha Yang eee0f97c18 d3d11: Add a helper method for GstContext creation
Add gst_d3d11_context_new() method for application to create
GstContext using GstD3D11Device.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2646>
2022-06-27 19:33:57 +00:00
Seungha Yang 06b7b240af d3d11memory: Add support for wrapping application texture
Add gst_d3d11_allocator_alloc_wrapped() method to support wrapping
application texture using GstD3D11Memory without copy.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2646>
2022-06-27 19:33:57 +00:00
Seungha Yang fce7431381 d3d11: Install library headers
Our Direct3D11 abstraction layer has been improved and
it gained good shape from API point of view.
Also, On Windows, GstD3D11 has various advantages over GstGL
in terms of compatibility/stability/feature/performance.
Note that WGL implementation is known to be buggy for some
drivers/vendors/scenario (that's a reason why Google implemented ANGLE).
Moreover, GstGL is not fully optimized for Windows unfortunately.

It's the time to open this interface to application developers
for various optimized processing using our Direct3D11
infrastructure.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2646>
2022-06-27 19:33:57 +00:00
Seungha Yang aca71fd692 d3d11: Update gst_d3d11_allocation_params_new() interface
Define GST_D3D11_ALLOCATION_FLAG_DEFAULT (0) value instead of
casting enum type everywhere. And pass D3D11_RESOURCE_MISC_FLAG value

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2646>
2022-06-27 19:33:57 +00:00
Víctor Manuel Jáquez Leal ec55017a83 va: allocator: Add hack for no fourcc when surface creation.
This patch adds general mechanism for handling specific hacks. In this
case for jpeg decoder in i965 driver, which cannot create surfaces
with fourcc specified.

From jpeg decoder to the allocator, which creates the surfaces,
there's a non-simple path: basedec pseudo-class adds a hacks guint32
which will be set by actual elements (vajpegdec, in this case) and
basedec will always set the hack to the allocator when the allocator
is instantiated.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1575>
2022-06-27 13:43:14 +00:00
Víctor Manuel Jáquez Leal ffd94a98be va: Add RGBP format definition.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1575>
2022-06-27 13:43:14 +00:00
Víctor Manuel Jáquez Leal 8a2660dc7f va: allocator: Use always lseek to get dmabuf size.
Gallium drivers historically have reported strange dmabuf sizes, from always
zero to the whole frame (multiple fds). The simplest solution is to use lseek
SEEK_END to get the prime descriptor size.

Also the allocator raises a warning if both values differ in order to report
it to driver.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2574>
2022-06-24 15:24:09 +02:00
Nicolas Dufresne 83c51c9812 va: allocator: Fix translation of VADRMPRIMESurfaceDescriptor
VADRMPRIMESurfaceDescriptor structure describes the offsets from the
point of view of the specific handle (DMABuf). While GstVideoInfo
(and the meta) describes offsets from the point of the view of the
GstBuffer, an aggregate of all the GstMemory (1 per handle).

This changes combined with [Mesa Fix](https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16813)
fixes decoding failure with AMD driver.

Fixes #1223

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2574>
2022-06-24 14:14:03 +02:00
Seungha Yang 170271b86f d3d11: Revert staging buffer pool implementation
The staging buffer pool implementation was added to improve
throughput performance since we can avoid per-frame
CPU copy operation via staging texture but it turned out that
we can not make it thread safe. See
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1182

Reverting the staging texture implementation as it does not show
any visible value.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2651>
2022-06-23 22:03:52 +09:00
Víctor Manuel Jáquez Leal 685a611812 va: Use driver implementation macro rather than function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2642>
2022-06-21 18:21:46 +00:00
Robert Mader 6aa0b0cae2 gstwaylandsink: Add rotate-method property
Similar to and inspired by glimagesink and gtkglsink.

Using the Wayland buffer transform API allows to offload
rotate operations to the Wayland compositor. This can have
several advantages:
 - The Wayland compositor may be able to use hardware plane
   capabilities to do the rotation.
 - In case of pre-rotated content on rotated outputs the
   rotations may equal out, potentially allowing the
   compositor to use hardware planes even if they don't
   support rotate operations.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2543>
2022-06-20 18:30:56 +00:00
Seungha Yang b48c8eaee6 h264decoder: Use newly added avcC data parsing API
Use gst_h264_parser_parse_decoder_config_record() method to parse
codec_data.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2449>
2022-06-15 19:58:59 +00:00
Seungha Yang 72975fbd6d h264parser: Add an API for AVCDecoderConfigurationRecord parsing
Add a method for AVC configuration date parsing

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2449>
2022-06-15 19:58:59 +00:00
Matthew Waters efe8e41b61 vkfullscreenquad: add support for disabling clearing
e.g. if drawing over the top of an existing image, we don'w want to
clear.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2470>
2022-06-14 03:34:05 +00:00
Matthew Waters fe8b4514e9 vkfullscreenquad: support setting blend operations
Allows e.g. blending with an existing image.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2470>
2022-06-14 03:34:05 +00:00
Matthew Waters 53596c2fc6 vkfullscreenaud: create the vulkan command pool upfront
Allows outside to reuse the same command buffer pool much more easily.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2470>
2022-06-14 03:34:05 +00:00
Matthew Waters 32487878d9 vulkan: add some missing GAutoPtr definitions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2470>
2022-06-14 03:34:05 +00:00
Matthew Waters a5e4199e88 vulkan: remove unneeded #ifdef for GAutoPtr
Not necessary anymore as we depend on a new enough Glib version

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2470>
2022-06-14 03:34:05 +00:00
He Junyan e2392e2e3e h264parser: Fix memory leaks in parse_user_data_unregistered().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2551>
2022-06-06 19:21:58 +00:00
Robert Mader 8c3e33d494 gstwayland: Move reusable parts of the waylandsink into a library
In preparation for the new element `GstGtkWaylandSink`, move reusable
parts out of `GstWaylandSink` into the already exisiting but very
barebone library.

Notable changes include:
 - the `GstWaylandVideo` interface was dropped
 - support for `wl-shell` was dropped
 - lots of renaming in order to match established naming patterns
 - lots of code modernisations, reducing boilerplate
 - members were made private wherever possible

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2479>
2022-06-06 14:36:39 +02:00
Andoni Morales Alastruey cb7e1a6576 h264parse: fix leak in user data unregistered
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458>
2022-06-03 08:29:05 +00:00
Andoni Morales Alastruey 64a92b549d Fix documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458>
2022-06-03 08:29:05 +00:00
Andoni Morales Alastruey ca2eb9f65f h264parse: add support Precision Time Stamp in SEI messages
Expose User Data Unregistered as a new Meta and add
API to parse Precision Time Stamp (ST 0604).

Fixes #927

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458>
2022-06-03 08:29:05 +00:00
Seungha Yang 9d0f792b66 meson: cuda: Add missing override_dependency()
Required for GstCuda library to be consumed via "gstreamer-cuda-1.0"
dependency.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2539>
2022-06-02 19:14:12 +00:00
Seungha Yang dc1d5f798f cuda: Fix uninitialized debug category
Make sure debug category init

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2542>
2022-06-02 18:33:30 +00:00
Seungha Yang fe64295841 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/2504>
2022-05-27 15:13:15 +00:00
Seungha Yang 0deb73d9ba d3d11memory: Clear YUV texture with black color
We prefer black color as an initial texture color and
Direct3D11 runtime will initialize texture with zeros (except for alpha)
which is fine for RGB formats. But UV components of YUV texture
requires manual clear for black color.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2502>
2022-05-27 14:03:49 +00:00
Seungha Yang e5ba099fd8 d3d11device: Enhance format enumeration and debugging
* Enhance debug log to print human readable D3D11_FORMAT_SUPPORT flags
  value, instead of packed numeric flagset value.
* Only device supported format will be added to format table.
  Depending on device feature level (i.e., D3D9 feature devices),
  16bits formats will not be supported. Although there might be formats
  we deinfed but not supported, it will not be a major issue in practice
  since our D3D11 implementation does not support legacy devices already
  (known limitation) and also old d3dvideosink will be promoted in that case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2441>
2022-05-21 02:37:45 +09:00
Seungha Yang ca7081c482 d3d11device: Don't print ERROR log on open failure
Device open can be failed in various reasons, but it's unlikely
our problem

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2433>
2022-05-17 14:11:00 +00:00
Seungha Yang 8d40531f23 h265decoder: Improve robustness against malformed NAL packets
Use newly added gst_h265_parser_identify_and_split_nalu_hevc()
method to handle broken streams where packetized NAL unit
contain start code prefix in it.

It's obviously wrong stream but we know how to work around it
and even need to support such broken streams since
stateless decoder implementations are being a primary
decoder element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2394>
2022-05-10 03:59:47 +09:00
Seungha Yang be84fc23ca h265parser: Add a new NAL parsing API to handle malformed packets
Add gst_h265_parser_identify_and_split_nalu_hevc() method to
handle a case where packetized stream contains start-code prefix.
This new method behaves similar to exisiting gst_h265_parser_identify_nalu_hevc()
but it will scan start-code prefix to split given data into
NAL units.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2394>
2022-05-10 03:58:51 +09:00
Víctor Manuel Jáquez Leal 13fbcde1e7 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/2386>
2022-05-07 09:55:36 +00:00
Seungha Yang 47ff41bcd2 d3d11memory: Protect against concurrent access from GPU and CPU to staging texture
Staging texture does not allow GPU access while it's CPU mapped.
But because we cannot block concurrent READ access by GstMemory design,
additional staging texture is still required.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1182
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2375>
2022-05-05 18:59:05 +00:00
Seungha Yang 8ec4452d67 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/2363>
2022-05-05 14:54:54 +00:00
Seungha Yang ad136cb2c5 h265decoder: 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/2364>
2022-05-05 14:10:39 +00:00
Seungha Yang 07cd1dcc6b av1decoder: Add support for render delay
Sync up with other decoder baseclass implementations

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1453>
2022-05-04 01:23:25 +09:00
Seungha Yang 1b4121fded av1decoder: Hold OBU temporal and spatial id in picture struct
NVDEC API requires the information

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1453>
2022-05-04 01:23:11 +09:00
Seungha Yang 6a4c42c03f codecs: Signal required DPB size for AV1,MPEG2,VP8, and VP9 via new_sequence()
Make all codecs consistent so that subclass can know additional DPB
size requirement depending on render-delay configuration regardless
of codec. Note that render-delay feature is not implemented for AV1
yet but it's planned.

Also, consider new_sequence() is mandatory requirement, not optional

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2343>
2022-05-03 14:17:49 +00:00