[vlc-commits] [Git][videolan/vlc][3.0.x] aom: make BGR matching stricter
Steve Lhomme (@robUx4)
gitlab at videolan.org
Tue Sep 17 13:04:16 UTC 2024
Steve Lhomme pushed to branch 3.0.x at VideoLAN / VLC
Commits:
1f265fe0 by Tristan Matthews at 2024-09-17T12:45:55+00:00
aom: make BGR matching stricter
This is equivalent to the fix in ece317a245e8c32a5efc11d5e82dcd8a28a2f10b
as the aom decoder had the same issue reported in #28776.
(cherry picked from commit 0001e85a098ee4e6e2526eaec8a76899c2b23b90)
- - - - -
1 changed file:
- modules/codec/aom.c
Changes:
=====================================
modules/codec/aom.c
=====================================
@@ -89,38 +89,43 @@ static const struct
vlc_fourcc_t i_chroma;
enum aom_img_fmt i_chroma_id;
uint8_t i_bitdepth;
- uint8_t i_needs_hack;
-
+ enum aom_transfer_characteristics transfer_characteristics;
+ enum aom_color_primaries color_primaries;
+ enum aom_matrix_coefficients matrix_coefficients;
} chroma_table[] =
{
- { VLC_CODEC_I420, AOM_IMG_FMT_I420, 8, 0 },
- { VLC_CODEC_I422, AOM_IMG_FMT_I422, 8, 0 },
- { VLC_CODEC_I444, AOM_IMG_FMT_I444, 8, 0 },
+ /* Transfer characteristic-dependent mappings must come first */
+ { VLC_CODEC_GBR_PLANAR, AOM_IMG_FMT_I444, 8, AOM_CICP_TC_SRGB, AOM_CICP_CP_BT_709, AOM_CICP_MC_IDENTITY },
+ { VLC_CODEC_GBR_PLANAR_10L, AOM_IMG_FMT_I44416, 10, AOM_CICP_TC_SRGB , AOM_CICP_CP_BT_709, AOM_CICP_MC_IDENTITY },
- { VLC_CODEC_YV12, AOM_IMG_FMT_YV12, 8, 0 },
+ { VLC_CODEC_I420, AOM_IMG_FMT_I420, 8, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED },
+ { VLC_CODEC_I422, AOM_IMG_FMT_I422, 8, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED },
+ { VLC_CODEC_I444, AOM_IMG_FMT_I444, 8, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED },
- { VLC_CODEC_GBR_PLANAR, AOM_IMG_FMT_I444, 8, 1 },
- { VLC_CODEC_GBR_PLANAR_10L, AOM_IMG_FMT_I44416, 10, 1 },
+ { VLC_CODEC_YV12, AOM_IMG_FMT_YV12, 8, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED },
- { VLC_CODEC_I420_10L, AOM_IMG_FMT_I42016, 10, 0 },
- { VLC_CODEC_I422_10L, AOM_IMG_FMT_I42216, 10, 0 },
- { VLC_CODEC_I444_10L, AOM_IMG_FMT_I44416, 10, 0 },
+ { VLC_CODEC_I420_10L, AOM_IMG_FMT_I42016, 10, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED },
+ { VLC_CODEC_I422_10L, AOM_IMG_FMT_I42216, 10, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED },
+ { VLC_CODEC_I444_10L, AOM_IMG_FMT_I44416, 10, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED },
- { VLC_CODEC_I420_12L, AOM_IMG_FMT_I42016, 12, 0 },
- { VLC_CODEC_I422_12L, AOM_IMG_FMT_I42216, 12, 0 },
- { VLC_CODEC_I444_12L, AOM_IMG_FMT_I44416, 12, 0 },
+ { VLC_CODEC_I420_12L, AOM_IMG_FMT_I42016, 12, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED },
+ { VLC_CODEC_I422_12L, AOM_IMG_FMT_I42216, 12, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED },
+ { VLC_CODEC_I444_12L, AOM_IMG_FMT_I44416, 12, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED },
- { VLC_CODEC_I444_16L, AOM_IMG_FMT_I44416, 16, 0 },
+ { VLC_CODEC_I444_16L, AOM_IMG_FMT_I44416, 16, AOM_CICP_TC_UNSPECIFIED, AOM_CICP_CP_UNSPECIFIED, AOM_CICP_MC_UNSPECIFIED },
};
static vlc_fourcc_t FindVlcChroma( struct aom_image *img )
{
- uint8_t hack = (img->fmt & AOM_IMG_FMT_I444) && (img->tc == AOM_CICP_TC_SRGB);
-
for( unsigned int i = 0; i < ARRAY_SIZE(chroma_table); i++ )
if( chroma_table[i].i_chroma_id == img->fmt &&
chroma_table[i].i_bitdepth == img->bit_depth &&
- chroma_table[i].i_needs_hack == hack )
+ ( chroma_table[i].transfer_characteristics == AOM_CICP_TC_UNSPECIFIED ||
+ chroma_table[i].transfer_characteristics == img->tc ) &&
+ ( chroma_table[i].color_primaries == AOM_CICP_CP_UNSPECIFIED ||
+ chroma_table[i].color_primaries == img->cp ) &&
+ ( chroma_table[i].matrix_coefficients == AOM_CICP_MC_UNSPECIFIED ||
+ chroma_table[i].matrix_coefficients == img->mc ) )
return chroma_table[i].i_chroma;
return 0;
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/1f265fe0b460300d0ffebb261246a971c41dd45e
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/1f265fe0b460300d0ffebb261246a971c41dd45e
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