[vlc-commits] [Git][videolan/vlc][master] 12 commits: fourcc: specify chroma subtypes

Thomas Guillem (@tguillem) gitlab at videolan.org
Thu Feb 6 05:53:15 UTC 2025



Thomas Guillem pushed to branch master at VideoLAN / VLC


Commits:
9525f270 by Thomas Guillem at 2025-02-06T05:38:08+00:00
fourcc: specify chroma subtypes

In order to identify different YUV sub samplings from planar to packed.

This will be used to calculate a possible color loss when converting
between 2 chromas.

- - - - -
bc66f244 by Thomas Guillem at 2025-02-06T05:38:08+00:00
fourcc: add vlc_chroma_description_IsYUV() helper

- - - - -
6697f564 by Thomas Guillem at 2025-02-06T05:38:08+00:00
fourcc: implement vlc_fourcc_IsYUV with subtype

- - - - -
34ef6133 by Thomas Guillem at 2025-02-06T05:38:08+00:00
fourcc: move vlc_fourcc_IsYUV() to static inline helper

- - - - -
4c3db623 by Thomas Guillem at 2025-02-06T05:38:08+00:00
fourcc: specify color_bits

This will be used with subtype to calculate a possible color loss when
converting between 2 chromas.

It's needed for GPU chromas and the few chromas where the pixel_size and
plane description are not enough to calculate the bits per color.

Example:
    { VLC_CODEC_ABGR,                  PACKED_FMT(RGB, 4, 32, 8) },
    { VLC_CODEC_RGBA10LE,              PACKED_FMT(RGB, 4, 32, 10) },

    { VLC_CODEC_VUYA,                  PACKED_FMT(YUV444, 4, 32, 8) },
    { VLC_CODEC_Y210,                  PACKED_FMT(YUV422, 4, 32, 10) },

Same buffer size but different color size.

It's an average for the few chromas with different color size, like
RGB565. In that case, color_bits = (5 + 6 + 5) / 3. It is also possible
to add a new color description array in the vlc_chroma_description_t for
a more precis color size definition.

- - - - -
2b898bb5 by Thomas Guillem at 2025-02-06T05:38:08+00:00
core: add chroma_probe API

The module API allows all "video converter" modules to list their chroma
conversions.

The user API allows to get a full list of all possibles chromas
conversion from an input chroma.

- - - - -
f8a267d7 by Thomas Guillem at 2025-02-06T05:38:08+00:00
modules: build chroma conversion table

- - - - -
7d9e993e by Thomas Guillem at 2025-02-06T05:38:08+00:00
avcodec: chroma: add a function to expose the table

- - - - -
546b809a by Thomas Guillem at 2025-02-06T05:38:08+00:00
swscale: build chroma conversion table

Using the avcodec/chroma.c table.

- - - - -
8bad0200 by Thomas Guillem at 2025-02-06T05:38:08+00:00
opengl: interop_sw: fetch fallback when needed

- - - - -
3cebf54e by Thomas Guillem at 2025-02-06T05:38:08+00:00
fourcc: use chroma_probe from vlc_fourcc_Get*Fallback()

Remove the not up to date chroma fallback list. Use directly the
vlc_chroma_probe.h API to get the list of chroma fallbacks.

The downside is that vlc_fourcc_Get*Fallback() return now an allocated
array that should be checked and freed.

- - - - -
3a325614 by Thomas Guillem at 2025-02-06T05:38:08+00:00
chroma: chain: use chroma_probe

Remove the not up to date pi_allowed_chromas. Use directly the
vlc_chroma_probe.h API to get the list of chroma fallbacks.

Remove recursivity handling:

Before, the chain module could load an other chain module for
conversions requiring an extra step (OPAQUE -> I420 -> RV24 for
example).

Now that the conversion list is acquired from start, we can add each
converter filters in an iterative loop.

- - - - -


30 changed files:

- include/meson.build
- + include/vlc_chroma_probe.h
- include/vlc_fourcc.h
- modules/codec/avcodec/chroma.c
- modules/codec/avcodec/chroma.h
- modules/hw/d3d11/d3d11_filters.c
- modules/hw/d3d9/d3d9_filters.c
- modules/hw/mmal/converter.c
- modules/hw/nvdec/chroma.c
- modules/hw/vaapi/filters.c
- modules/hw/vdpau/chroma.c
- modules/isa/arm/neon/chroma_yuv.c
- modules/isa/arm/neon/yuv_rgb.c
- modules/video_chroma/chain.c
- modules/video_chroma/copy.h
- modules/video_chroma/cvpx.c
- modules/video_chroma/grey_yuv.c
- modules/video_chroma/gst_mem.c
- modules/video_chroma/i420_nv12.c
- modules/video_chroma/i420_rgb.c
- modules/video_chroma/i420_yuy2.c
- modules/video_chroma/i422_i420.c
- modules/video_chroma/i422_yuy2.c
- modules/video_chroma/rv32.c
- modules/video_chroma/swscale.c
- modules/video_chroma/yuvp.c
- modules/video_chroma/yuy2_i420.c
- modules/video_chroma/yuy2_i422.c
- modules/video_output/drm/planes.c
- modules/video_output/kva.c


The diff was not included because it is too large.


View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/687f208072a75658d32fe0a7539c4785aa7e6cd0...3a325614232ee6605513519ad9242bd219f4282e

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/687f208072a75658d32fe0a7539c4785aa7e6cd0...3a325614232ee6605513519ad9242bd219f4282e
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list