This proved to be helpful for previous protocol experiments, so let's
upstream it. Inspired by the corresponding code in Weston.
Protocols need to be placed in a `protocols` subdirectory and can be
declared in the following way in `meson.build`:
```
['color-management-v1', 'internal' ],
```
Note the `v1` being part of the name.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9186>
When creating a faststart file, qtmux has to take into account that
any 32 bit stco atom may need to be converted into its 64 bit version
due to the offset that is added before the mdat data by the moov atom,
the extra atoms and the mdat header. If a stco atom is converted into
co64, the chunk offset of all stco and co64 atoms has to be increased,
which in turn may also cause that other stco atoms need to be converted
into co64, modifying the chunk offsets again.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9102>
Using the Wayland color-management and color-representation protocols.
The implementation queries supported values from the compositors and tries
to convert them into GstVideoColorimetry values. It currently *does not*
pass these upstream to decoders etc. as GstCaps for negotiation.
On the Wayland side it uses named transfer functions, named primaries,
matrices and ranges. The straight alpha mode is also set if supported
by the compositor.
On setting caps it translates the GstVideoColorimetry from the GstVideoInfo
back to into a Wayland parametric image description and color representation
for the video surface if possible. If a colorimetry is not fully
support, we bail out and if wayland objects already exist they get reset or
deleted.
Note that not all GstVideoColorimetry values are implemented yet.
Useful debug options: GST_DEBUG=wlwindow:4,wldisplay:4
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6830>
Merge request !5651 introduced a regression for uploading VulkanBuffer. It can
be verified by
gst-launch-1.0 videotestsrc ! video/x-raw, format=NV12 ! vulkanupload ! \
video/x-raw\(memory:VulkanBuffer\) ! fakesink
Nobody has complained about this regression, so we assume it's a very niche
use-case.
This patch solve the regression by instantiating a different buffer pool
depending on the output cap features, and configuring it accordingly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9218>
Change so that the handling of NAL unit that can't be parsed when using
AU alignment is the same as when using NAL alignment, ie drop the data
if it can't be parsed.
If the AU contains more than one NAL unit any correctly parsed NAL unit
in the AU is kept.
Fixes#4436
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8976>
If using NAL aligment and only dropping part of the AU, the size
argument given to gst_base_parse_finish_frame was wrong and this assert
in gst_base_parse_finish_frame hit
'gst_adapter_available (parse->priv->adapter) >= size' failed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8976>
Certain encoder user controls as well as codec controls can be
changed while the pipeline is in playing state.
e.g. Codec controls like video_bitrate, frame_ltr_index,
use_ltr_frames, etc. and user controls like horizontal_flip,
vertical_flip can be changed while the pipeline is running.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9168>
caps.get_structure(0).get_name() used to work, but the usage of
StructureWrapper broke it but forcing to wrap it in a "with" statement.
We already have a Structure subclass, simply make it reference its
parent Gst.Caps object.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9148>