[vlc-commits] [Git][videolan/vlc][master] 3 commits: mediacodec: add missing transfer function values
Steve Lhomme (@robUx4)
gitlab at videolan.org
Tue Mar 17 15:30:28 UTC 2026
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
8e945eaa by Steve Lhomme at 2026-03-17T15:04:36+00:00
mediacodec: add missing transfer function values
- - - - -
10338cb9 by Steve Lhomme at 2026-03-17T15:04:36+00:00
mediacodec: add missing color "standard" values
A color "standard" corresponds to a combination of primary+colorspace values.
- - - - -
3238debb by Steve Lhomme at 2026-03-17T15:04:36+00:00
mediacodec: use colorspace to convert VLC colorimetry to Android colord standard
An Android color "standard" corresponds to a combination of primary+colorspace values.
- - - - -
2 changed files:
- modules/codec/omxil/mediacodec.c
- modules/codec/omxil/mediacodec.h
Changes:
=====================================
modules/codec/omxil/mediacodec.c
=====================================
@@ -473,21 +473,37 @@ mc_to_vlc_color_range(enum mc_media_format_color_range_t mc_range)
}
static enum mc_media_format_color_standard_t
-vlc_to_mc_color_standard(video_color_primaries_t vlc_primaries)
+vlc_to_mc_color_standard(video_color_primaries_t vlc_primaries, video_color_space_t vlc_colorspace)
{
switch (vlc_primaries)
{
case COLOR_PRIMARIES_BT601_525:
- return MC_COLOR_STANDARD_BT601_NTSC;
+ if (vlc_colorspace == COLOR_SPACE_BT601)
+ return MC_COLOR_STANDARD_BT601_525;
+ if (vlc_colorspace == COLOR_SPACE_SMPTE_240)
+ return MC_COLOR_STANDARD_BT601_525_240M;
+ break;
case COLOR_PRIMARIES_BT601_625:
- return MC_COLOR_STANDARD_BT601_PAL;
+ if (vlc_colorspace == COLOR_SPACE_BT601)
+ return MC_COLOR_STANDARD_BT601_625;
+ // return MC_COLOR_STANDARD_BT601_625_UNADJUSTED;
+ break;
case COLOR_PRIMARIES_BT709:
- return MC_COLOR_STANDARD_BT709;
+ if (vlc_colorspace == COLOR_SPACE_BT709)
+ return MC_COLOR_STANDARD_BT709;
+ break;
case COLOR_PRIMARIES_BT2020:
- return MC_COLOR_STANDARD_BT2020;
+ if (vlc_colorspace == COLOR_SPACE_BT2020)
+ return MC_COLOR_STANDARD_BT2020;
+ break;
+ case COLOR_PRIMARIES_BT470_M:
+ // return MC_COLOR_STANDARD_BT470M;
+ case COLOR_PRIMARIES_DCI_P3:
+ // return MC_COLOR_STANDARD_FILM;
default:
- return MC_COLOR_STANDARD_UNSPECIFIED;
+ break;
}
+ return MC_COLOR_STANDARD_UNSPECIFIED;
}
static video_color_primaries_t
@@ -497,11 +513,18 @@ mc_to_vlc_primaries(enum mc_media_format_color_standard_t mc_standard)
{
case MC_COLOR_STANDARD_BT709:
return COLOR_PRIMARIES_BT709;
- case MC_COLOR_STANDARD_BT601_PAL:
- case MC_COLOR_STANDARD_BT601_NTSC:
+ case MC_COLOR_STANDARD_BT601_625:
+ case MC_COLOR_STANDARD_BT601_625_UNADJUSTED:
+ return COLOR_PRIMARIES_BT601_625;
+ case MC_COLOR_STANDARD_BT601_525:
+ case MC_COLOR_STANDARD_BT601_525_240M:
return COLOR_PRIMARIES_BT601_525;
case MC_COLOR_STANDARD_BT2020:
return COLOR_PRIMARIES_BT2020;
+ case MC_COLOR_STANDARD_BT470M:
+ return COLOR_PRIMARIES_BT470_M;
+ case MC_COLOR_STANDARD_FILM:
+ return COLOR_PRIMARIES_DCI_P3;
default:
return COLOR_PRIMARIES_UNDEF;
}
@@ -514,11 +537,16 @@ mc_to_vlc_color_space(enum mc_media_format_color_standard_t mc_standard)
{
case MC_COLOR_STANDARD_BT709:
return COLOR_SPACE_BT709;
- case MC_COLOR_STANDARD_BT601_PAL:
- case MC_COLOR_STANDARD_BT601_NTSC:
+ case MC_COLOR_STANDARD_BT601_625:
+ case MC_COLOR_STANDARD_BT601_525:
return COLOR_SPACE_BT601;
+ case MC_COLOR_STANDARD_BT601_525_240M:
+ return COLOR_SPACE_SMPTE_240;
case MC_COLOR_STANDARD_BT2020:
return COLOR_SPACE_BT2020;
+ case MC_COLOR_STANDARD_BT601_625_UNADJUSTED:
+ case MC_COLOR_STANDARD_BT470M:
+ case MC_COLOR_STANDARD_FILM:
default:
return COLOR_SPACE_UNDEF;
}
@@ -536,7 +564,9 @@ vlc_to_mc_color_transfer(video_transfer_func_t vlc_transfer)
case TRANSFER_FUNC_HLG:
return MC_COLOR_TRANSFER_HLG;
case TRANSFER_FUNC_BT709:
- return MC_COLOR_TRANSFER_SDR_VIDEO;
+ return MC_COLOR_TRANSFER_BT709;
+ case TRANSFER_FUNC_SRGB:
+ return MC_COLOR_TRANSFER_SRGB;
default:
return MC_COLOR_TRANSFER_UNSPECIFIED;
}
@@ -549,7 +579,9 @@ mc_to_vlc_color_transfer(enum mc_media_format_color_transfer_t mc_transfer)
{
case MC_COLOR_TRANSFER_LINEAR:
return TRANSFER_FUNC_LINEAR;
- case MC_COLOR_TRANSFER_SDR_VIDEO:
+ case MC_COLOR_TRANSFER_SRGB:
+ return TRANSFER_FUNC_SRGB;
+ case MC_COLOR_TRANSFER_BT709:
return TRANSFER_FUNC_BT709;
case MC_COLOR_TRANSFER_ST2084:
return TRANSFER_FUNC_SMPTE_ST2084;
@@ -577,7 +609,7 @@ static int StartMediaCodec(decoder_t *p_dec)
args.video.p_surface = p_sys->video.p_surface;
args.video.color.range = vlc_to_mc_color_range(p_dec->fmt_out.video.color_range);
- args.video.color.standard = vlc_to_mc_color_standard(p_dec->fmt_out.video.primaries);
+ args.video.color.standard = vlc_to_mc_color_standard(p_dec->fmt_out.video.primaries, p_dec->fmt_out.video.space);
args.video.color.transfer = vlc_to_mc_color_transfer(p_dec->fmt_out.video.transfer);
=====================================
modules/codec/omxil/mediacodec.h
=====================================
@@ -49,7 +49,8 @@ int MediaCodecNdk_Init(mc_api*);
#define MC_API_VIDEO_QUIRKS_IGNORE_SIZE 0x2000
/* cf. https://github.com/FFmpeg/FFmpeg/blob/00f5a34c9a5f0adee28aca11971918d6aca48745/libavcodec/mediacodec_wrapper.h#L348
- * cf. https://developer.android.com/reference/android/media/MediaFormat#constants_1*/
+ * cf. https://developer.android.com/reference/android/media/MediaFormat#constants_1
+ * cf. https://github.com/AOSPA/android_frameworks_native/blob/vauxite/headers/media_plugin/media/hardware/VideoAPI.h*/
enum mc_media_format_color_range_t
{
MC_COLOR_RANGE_UNSPECIFIED = 0x0,
@@ -59,18 +60,26 @@ enum mc_media_format_color_range_t
enum mc_media_format_color_standard_t
{
- MC_COLOR_STANDARD_UNSPECIFIED = 0x0,
- MC_COLOR_STANDARD_BT709 = 0x1,
- MC_COLOR_STANDARD_BT601_PAL = 0x2,
- MC_COLOR_STANDARD_BT601_NTSC = 0x4,
- MC_COLOR_STANDARD_BT2020 = 0x6,
+ MC_COLOR_STANDARD_UNSPECIFIED = 0x0,
+ MC_COLOR_STANDARD_BT709 = 0x1,
+ MC_COLOR_STANDARD_BT601_625 = 0x2,
+ MC_COLOR_STANDARD_BT601_625_UNADJUSTED = 0x3,
+ MC_COLOR_STANDARD_BT601_525 = 0x4,
+ MC_COLOR_STANDARD_BT601_525_240M = 0x5,
+ MC_COLOR_STANDARD_BT2020_NC = 0x6,
+ MC_COLOR_STANDARD_BT2020 = 0x7,
+ MC_COLOR_STANDARD_BT470M = 0x8,
+ MC_COLOR_STANDARD_FILM = 0x9,
};
enum mc_media_format_color_transfer_t
{
MC_COLOR_TRANSFER_UNSPECIFIED = 0x0,
MC_COLOR_TRANSFER_LINEAR = 0x1,
- MC_COLOR_TRANSFER_SDR_VIDEO = 0x3,
+ MC_COLOR_TRANSFER_SRGB = 0x2,
+ MC_COLOR_TRANSFER_BT709 = 0x3,
+ MC_COLOR_TRANSFER_GAMMA22 = 0x4,
+ MC_COLOR_TRANSFER_GAMMA28 = 0x5,
MC_COLOR_TRANSFER_ST2084 = 0x6,
MC_COLOR_TRANSFER_HLG = 0x7,
};
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/1b0f673291a3035bec8763d449545c34ec572597...3238debb2f487fd303b4170d5deb275a0aac92af
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/1b0f673291a3035bec8763d449545c34ec572597...3238debb2f487fd303b4170d5deb275a0aac92af
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