]> git.sesse.net Git - ffmpeg/commitdiff
avutil/hwcontext_vdpau: Map 444 pix fmts to new VdpYCbCr types
authorManojGuptaBonda <mbonda@nvidia.com>
Fri, 3 May 2019 20:57:53 +0000 (02:27 +0530)
committerPhilip Langdale <philipl@overt.org>
Sun, 5 May 2019 18:35:35 +0000 (11:35 -0700)
New VdpYCbCr Formats VDP_YCBCR_FORMAT_Y_U_V_444 and,
VDP_YCBCR_FORMAT_Y_UV_444 have been added in VDPAU with libvdpau-1.2
to be used in get/putbits for YUV 4:4:4 surfaces. Earlier mapping of
AV_PIX_FMT_YUV444P to VDP_YCBCR_FORMAT_YV12 is not valid.

Hence this Change maps AV_PIX_FMT_YUV444P to VDP_YCBCR_FORMAT_Y_U_V_444
to access the YUV 4:4:4 surface via read-back API's of VDPAU.

libavutil/hwcontext_vdpau.c
libavutil/version.h

index c11c3cfdab25e2a85b1339d8170bfc285c13d3a3..6b8c1d5f7677af3f97b7c62f007fb39edc41ace2 100644 (file)
@@ -73,8 +73,10 @@ static const VDPAUPixFmtMap pix_fmts_422[] = {
 };
 
 static const VDPAUPixFmtMap pix_fmts_444[] = {
-    { VDP_YCBCR_FORMAT_YV12, AV_PIX_FMT_YUV444P },
-    { 0,                     AV_PIX_FMT_NONE,   },
+#ifdef VDP_YCBCR_FORMAT_Y_U_V_444
+    { VDP_YCBCR_FORMAT_Y_U_V_444, AV_PIX_FMT_YUV444P },
+#endif
+    { 0,                          AV_PIX_FMT_NONE,   },
 };
 
 static const struct {
@@ -349,7 +351,11 @@ static int vdpau_transfer_data_from(AVHWFramesContext *ctx, AVFrame *dst,
         return AVERROR(EINVAL);
     }
 
-    if (vdpau_format == VDP_YCBCR_FORMAT_YV12)
+    if ((vdpau_format == VDP_YCBCR_FORMAT_YV12)
+#ifdef VDP_YCBCR_FORMAT_Y_U_V_444
+            || (vdpau_format == VDP_YCBCR_FORMAT_Y_U_V_444)
+#endif
+            )
         FFSWAP(void*, data[1], data[2]);
 
     err = priv->get_data(surf, vdpau_format, data, linesize);
@@ -400,7 +406,11 @@ static int vdpau_transfer_data_to(AVHWFramesContext *ctx, AVFrame *dst,
         return AVERROR(EINVAL);
     }
 
-    if (vdpau_format == VDP_YCBCR_FORMAT_YV12)
+    if ((vdpau_format == VDP_YCBCR_FORMAT_YV12)
+#ifdef VDP_YCBCR_FORMAT_Y_U_V_444
+            || (vdpau_format == VDP_YCBCR_FORMAT_Y_U_V_444)
+#endif
+            )
         FFSWAP(const void*, data[1], data[2]);
 
     err = priv->put_data(surf, vdpau_format, data, linesize);
index 1fcdea95bf40999fbf33e89351710c11ea954e0b..c0968de621d26569bcbd9acaf947f0a125410535 100644 (file)
@@ -80,7 +80,7 @@
 
 #define LIBAVUTIL_VERSION_MAJOR  56
 #define LIBAVUTIL_VERSION_MINOR  26
-#define LIBAVUTIL_VERSION_MICRO 100
+#define LIBAVUTIL_VERSION_MICRO 101
 
 #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
                                                LIBAVUTIL_VERSION_MINOR, \