[FFmpeg-devel] [PATCH v2] avutil/hwcontext_videotoolbox: fix use of unknown builtin '__builtin_available'

lance.lmwang at gmail.com lance.lmwang at gmail.com
Sun Oct 31 13:44:10 EET 2021


From: Limin Wang <lance.lmwang at gmail.com>

OSX version: 10.11.6
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin15.6.0

Signed-off-by: Limin Wang <lance.lmwang at gmail.com>
---
 configure                          |  8 ++++++
 libavutil/hwcontext_videotoolbox.c | 54 +++++++++++++++++++++-----------------
 2 files changed, 38 insertions(+), 24 deletions(-)

diff --git a/configure b/configure
index ede8f97..c4fb1b7 100755
--- a/configure
+++ b/configure
@@ -2329,6 +2329,10 @@ TYPES_LIST="
     kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ
     kCVImageBufferTransferFunction_ITU_R_2100_HLG
     kCVImageBufferTransferFunction_Linear
+    kCVImageBufferYCbCrMatrix_ITU_R_2020
+    kCVImageBufferColorPrimaries_ITU_R_2020
+    kCVImageBufferTransferFunction_ITU_R_2020
+    kCVImageBufferTransferFunction_SMPTE_ST_428_1
     socklen_t
     struct_addrinfo
     struct_group_source_req
@@ -6273,6 +6277,10 @@ enabled videotoolbox && {
     check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ "-framework CoreVideo"
     check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_ITU_R_2100_HLG "-framework CoreVideo"
     check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_Linear "-framework CoreVideo"
+    check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferYCbCrMatrix_ITU_R_2020 "-framework CoreVideo"
+    check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferColorPrimaries_ITU_R_2020 "-framework CoreVideo"
+    check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_ITU_R_2020 "-framework CoreVideo"
+    check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_SMPTE_ST_428_1 "-framework CoreVideo"
 }
 
 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
diff --git a/libavutil/hwcontext_videotoolbox.c b/libavutil/hwcontext_videotoolbox.c
index 58095a1..25f4e17 100644
--- a/libavutil/hwcontext_videotoolbox.c
+++ b/libavutil/hwcontext_videotoolbox.c
@@ -375,10 +375,11 @@ static int vt_pixbuf_set_colorspace(AVHWFramesContext *hwfc,
     switch (src->colorspace) {
     case AVCOL_SPC_BT2020_CL:
     case AVCOL_SPC_BT2020_NCL:
-        if (__builtin_available(macOS 10.11, *))
-            colormatrix = kCVImageBufferYCbCrMatrix_ITU_R_2020;
-        else
-            colormatrix = CFSTR("ITU_R_2020");
+#if HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020
+        colormatrix = kCVImageBufferYCbCrMatrix_ITU_R_2020;
+#else
+        colormatrix = CFSTR("ITU_R_2020");
+#endif
         break;
     case AVCOL_SPC_BT470BG:
     case AVCOL_SPC_SMPTE170M:
@@ -398,10 +399,11 @@ static int vt_pixbuf_set_colorspace(AVHWFramesContext *hwfc,
 
     switch (src->color_primaries) {
     case AVCOL_PRI_BT2020:
-        if (__builtin_available(macOS 10.11, *))
-            colorpri = kCVImageBufferColorPrimaries_ITU_R_2020;
-        else
-            colorpri = CFSTR("ITU_R_2020");
+#if HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020
+        colorpri = kCVImageBufferColorPrimaries_ITU_R_2020;
+#else
+        colorpri = CFSTR("ITU_R_2020");
+#endif
         break;
     case AVCOL_PRI_BT709:
         colorpri = kCVImageBufferColorPrimaries_ITU_R_709_2;
@@ -420,17 +422,19 @@ static int vt_pixbuf_set_colorspace(AVHWFramesContext *hwfc,
 
     switch (src->color_trc) {
     case AVCOL_TRC_SMPTE2084:
-        if (__builtin_available(macOS 10.13, *))
-            colortrc = kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ;
-        else
-            colortrc = CFSTR("SMPTE_ST_2084_PQ");
+#if HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ
+        colortrc = kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ;
+#else
+        colortrc = CFSTR("SMPTE_ST_2084_PQ");
+#endif
         break;
     case AVCOL_TRC_BT2020_10:
     case AVCOL_TRC_BT2020_12:
-        if (__builtin_available(macOS 10.11, *))
-            colortrc = kCVImageBufferTransferFunction_ITU_R_2020;
-        else
-            colortrc = CFSTR("ITU_R_2020");
+#if HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020
+        colortrc = kCVImageBufferTransferFunction_ITU_R_2020;
+#else
+        colortrc = CFSTR("ITU_R_2020");
+#endif
         break;
     case AVCOL_TRC_BT709:
         colortrc = kCVImageBufferTransferFunction_ITU_R_709_2;
@@ -439,16 +443,18 @@ static int vt_pixbuf_set_colorspace(AVHWFramesContext *hwfc,
         colortrc = kCVImageBufferTransferFunction_SMPTE_240M_1995;
         break;
     case AVCOL_TRC_SMPTE428:
-        if (__builtin_available(macOS 10.12, *))
-            colortrc = kCVImageBufferTransferFunction_SMPTE_ST_428_1;
-        else
-            colortrc = CFSTR("SMPTE_ST_428_1");
+#if HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1
+        colortrc = kCVImageBufferTransferFunction_SMPTE_ST_428_1;
+#else
+        colortrc = CFSTR("SMPTE_ST_428_1");
+#endif
         break;
     case AVCOL_TRC_ARIB_STD_B67:
-        if (__builtin_available(macOS 10.13, *))
-            colortrc = kCVImageBufferTransferFunction_ITU_R_2100_HLG;
-        else
-            colortrc = CFSTR("ITU_R_2100_HLG");
+#if HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG
+        colortrc = kCVImageBufferTransferFunction_ITU_R_2100_HLG;
+#else
+        colortrc = CFSTR("ITU_R_2100_HLG");
+#endif
         break;
     case AVCOL_TRC_GAMMA22:
         gamma = 2.2;
-- 
1.8.3.1



More information about the ffmpeg-devel mailing list