mirror of https://git.ffmpeg.org/ffmpeg.git
lavfi/vf_vpp_qsv: support UYVY in system memory
It only works on Linux $ ffmpeg -loglevel verbose -init_hw_device qsv=intel -f lavfi -i \ yuvtestsrc -vf "format=uyvy422,vpp_qsv=format=nv12" -f null - Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
This commit is contained in:
parent
f1355ec9f6
commit
36016c5596
|
@ -247,6 +247,10 @@ static int pix_fmt_to_mfx_fourcc(int format)
|
||||||
return MFX_FOURCC_RGB4;
|
return MFX_FOURCC_RGB4;
|
||||||
case AV_PIX_FMT_P010:
|
case AV_PIX_FMT_P010:
|
||||||
return MFX_FOURCC_P010;
|
return MFX_FOURCC_P010;
|
||||||
|
#if CONFIG_VAAPI
|
||||||
|
case AV_PIX_FMT_UYVY422:
|
||||||
|
return MFX_FOURCC_UYVY;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
return MFX_FOURCC_NV12;
|
return MFX_FOURCC_NV12;
|
||||||
|
@ -276,6 +280,11 @@ static int map_frame_to_surface(AVFrame *frame, mfxFrameSurface1 *surface)
|
||||||
surface->Data.R = frame->data[0] + 2;
|
surface->Data.R = frame->data[0] + 2;
|
||||||
surface->Data.A = frame->data[0] + 3;
|
surface->Data.A = frame->data[0] + 3;
|
||||||
break;
|
break;
|
||||||
|
case AV_PIX_FMT_UYVY422:
|
||||||
|
surface->Data.Y = frame->data[0] + 1;
|
||||||
|
surface->Data.U = frame->data[0];
|
||||||
|
surface->Data.V = frame->data[0] + 2;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return MFX_ERR_UNSUPPORTED;
|
return MFX_ERR_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -703,6 +703,9 @@ static int vpp_query_formats(AVFilterContext *ctx)
|
||||||
AV_PIX_FMT_YUYV422,
|
AV_PIX_FMT_YUYV422,
|
||||||
AV_PIX_FMT_RGB32,
|
AV_PIX_FMT_RGB32,
|
||||||
AV_PIX_FMT_P010,
|
AV_PIX_FMT_P010,
|
||||||
|
#if CONFIG_VAAPI
|
||||||
|
AV_PIX_FMT_UYVY422,
|
||||||
|
#endif
|
||||||
AV_PIX_FMT_QSV,
|
AV_PIX_FMT_QSV,
|
||||||
AV_PIX_FMT_NONE
|
AV_PIX_FMT_NONE
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue