[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