mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-10-24 02:09:03 +03:00
avfilter/vf_scdet: expand format list
This filter works by running the SAD function on the first plane, which works for any (native endian) format that starts with an unshifted luma plane. This notably includes formats like nv12, yuva420p, and grayscale formats, as well as luma-alpha formats. The last addition is debatable, but the precedent here is the existing support for RGBA, which also dilutes scene scores by including the alpha component in the SAD calculation). There were also some notable missing packed RGBA formats, such as ARGB, as well as 16-bit variants. This is an exhaustive listing as of the current set of formats. Tested by looping over `format=<pixfmt>,scdet` and verifying that the scene SAD score doesn't (meaningfully) change, except for expected deviations (e.g. larger scores for full range vs limited range, and lowered scores for packed alpha formats). Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <git@haasn.dev>
This commit is contained in:
@@ -61,15 +61,44 @@ static const AVOption scdet_options[] = {
|
||||
AVFILTER_DEFINE_CLASS(scdet);
|
||||
|
||||
static const enum AVPixelFormat pix_fmts[] = {
|
||||
AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24, AV_PIX_FMT_RGBA,
|
||||
AV_PIX_FMT_ABGR, AV_PIX_FMT_BGRA, AV_PIX_FMT_GRAY8,
|
||||
AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
|
||||
AV_PIX_FMT_ARGB, AV_PIX_FMT_RGBA,
|
||||
AV_PIX_FMT_ABGR, AV_PIX_FMT_BGRA,
|
||||
AV_PIX_FMT_RGB48, AV_PIX_FMT_BGR48,
|
||||
AV_PIX_FMT_RGBA64, AV_PIX_FMT_BGRA64,
|
||||
|
||||
AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRP9, AV_PIX_FMT_GBRP10,
|
||||
AV_PIX_FMT_GBRP12, AV_PIX_FMT_GBRP14, AV_PIX_FMT_GBRP16,
|
||||
AV_PIX_FMT_GBRAP, AV_PIX_FMT_GBRAP10, AV_PIX_FMT_GBRAP12,
|
||||
AV_PIX_FMT_GBRAP14, AV_PIX_FMT_GBRAP16,
|
||||
|
||||
AV_PIX_FMT_GRAY8, AV_PIX_FMT_GRAY9, AV_PIX_FMT_GRAY10,
|
||||
AV_PIX_FMT_GRAY12, AV_PIX_FMT_GRAY14, AV_PIX_FMT_GRAY16,
|
||||
AV_PIX_FMT_YA8, AV_PIX_FMT_YA16,
|
||||
|
||||
AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P, AV_PIX_FMT_YUVJ411P,
|
||||
AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUVJ420P,
|
||||
AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUVJ422P,
|
||||
AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUVJ440P,
|
||||
AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVJ444P,
|
||||
AV_PIX_FMT_YUV420P9, AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV420P12,
|
||||
AV_PIX_FMT_YUV422P9, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV422P12,
|
||||
AV_PIX_FMT_YUV444P9, AV_PIX_FMT_YUV444P10, AV_PIX_FMT_YUV444P12,
|
||||
AV_PIX_FMT_YUV420P9, AV_PIX_FMT_YUV422P9, AV_PIX_FMT_YUV444P9,
|
||||
AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV422P10,
|
||||
AV_PIX_FMT_YUV440P10, AV_PIX_FMT_YUV444P10,
|
||||
AV_PIX_FMT_YUV420P12, AV_PIX_FMT_YUV422P12,
|
||||
AV_PIX_FMT_YUV440P12, AV_PIX_FMT_YUV444P12,
|
||||
AV_PIX_FMT_YUV420P14, AV_PIX_FMT_YUV422P14, AV_PIX_FMT_YUV444P14,
|
||||
AV_PIX_FMT_YUV420P16, AV_PIX_FMT_YUV422P16, AV_PIX_FMT_YUV444P16,
|
||||
|
||||
AV_PIX_FMT_YUVA420P, AV_PIX_FMT_YUVA422P, AV_PIX_FMT_YUVA444P,
|
||||
AV_PIX_FMT_YUVA420P9, AV_PIX_FMT_YUVA422P9, AV_PIX_FMT_YUVA444P9,
|
||||
AV_PIX_FMT_YUVA420P10, AV_PIX_FMT_YUVA422P10, AV_PIX_FMT_YUVA444P10,
|
||||
AV_PIX_FMT_YUVA422P12, AV_PIX_FMT_YUVA444P12,
|
||||
AV_PIX_FMT_YUVA420P16, AV_PIX_FMT_YUVA422P16, AV_PIX_FMT_YUVA444P16,
|
||||
|
||||
AV_PIX_FMT_NV12, AV_PIX_FMT_NV21, AV_PIX_FMT_NV16,
|
||||
AV_PIX_FMT_NV24, AV_PIX_FMT_NV42, AV_PIX_FMT_NV20,
|
||||
AV_PIX_FMT_P016, AV_PIX_FMT_P216, AV_PIX_FMT_P416,
|
||||
|
||||
AV_PIX_FMT_NONE
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user