mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-21 23:10:13 +00:00
avutil/hwcontext_vdpau: Map 444 pix fmts to new VdpYCbCr types
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.
This commit is contained in:
parent
8cf5f948f2
commit
d617d54efa
@ -73,8 +73,10 @@ static const VDPAUPixFmtMap pix_fmts_422[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const VDPAUPixFmtMap pix_fmts_444[] = {
|
static const VDPAUPixFmtMap pix_fmts_444[] = {
|
||||||
{ VDP_YCBCR_FORMAT_YV12, AV_PIX_FMT_YUV444P },
|
#ifdef VDP_YCBCR_FORMAT_Y_U_V_444
|
||||||
{ 0, AV_PIX_FMT_NONE, },
|
{ VDP_YCBCR_FORMAT_Y_U_V_444, AV_PIX_FMT_YUV444P },
|
||||||
|
#endif
|
||||||
|
{ 0, AV_PIX_FMT_NONE, },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
@ -349,7 +351,11 @@ static int vdpau_transfer_data_from(AVHWFramesContext *ctx, AVFrame *dst,
|
|||||||
return AVERROR(EINVAL);
|
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]);
|
FFSWAP(void*, data[1], data[2]);
|
||||||
|
|
||||||
err = priv->get_data(surf, vdpau_format, data, linesize);
|
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);
|
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]);
|
FFSWAP(const void*, data[1], data[2]);
|
||||||
|
|
||||||
err = priv->put_data(surf, vdpau_format, data, linesize);
|
err = priv->put_data(surf, vdpau_format, data, linesize);
|
||||||
|
@ -80,7 +80,7 @@
|
|||||||
|
|
||||||
#define LIBAVUTIL_VERSION_MAJOR 56
|
#define LIBAVUTIL_VERSION_MAJOR 56
|
||||||
#define LIBAVUTIL_VERSION_MINOR 26
|
#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, \
|
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||||
LIBAVUTIL_VERSION_MINOR, \
|
LIBAVUTIL_VERSION_MINOR, \
|
||||||
|
Loading…
Reference in New Issue
Block a user