mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
lavfi/overlay: add yuv422 format mode
This commit is contained in:
parent
95d1809981
commit
a270f63e83
@ -5936,6 +5936,9 @@ It accepts the following values:
|
||||
@item yuv420
|
||||
force YUV420 output
|
||||
|
||||
@item yuv422
|
||||
force YUV422 output
|
||||
|
||||
@item yuv444
|
||||
force YUV444 output
|
||||
|
||||
|
@ -31,7 +31,7 @@
|
||||
|
||||
#define LIBAVFILTER_VERSION_MAJOR 4
|
||||
#define LIBAVFILTER_VERSION_MINOR 1
|
||||
#define LIBAVFILTER_VERSION_MICRO 101
|
||||
#define LIBAVFILTER_VERSION_MICRO 102
|
||||
|
||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||
LIBAVFILTER_VERSION_MINOR, \
|
||||
|
@ -92,7 +92,7 @@ typedef struct {
|
||||
uint8_t overlay_is_packed_rgb;
|
||||
uint8_t overlay_rgba_map[4];
|
||||
uint8_t overlay_has_alpha;
|
||||
enum OverlayFormat { OVERLAY_FORMAT_YUV420, OVERLAY_FORMAT_YUV444, OVERLAY_FORMAT_RGB, OVERLAY_FORMAT_NB} format;
|
||||
enum OverlayFormat { OVERLAY_FORMAT_YUV420, OVERLAY_FORMAT_YUV422, OVERLAY_FORMAT_YUV444, OVERLAY_FORMAT_RGB, OVERLAY_FORMAT_NB} format;
|
||||
enum EvalMode { EVAL_MODE_INIT, EVAL_MODE_FRAME, EVAL_MODE_NB } eval_mode;
|
||||
|
||||
FFDualInputContext dinput;
|
||||
@ -191,6 +191,13 @@ static int query_formats(AVFilterContext *ctx)
|
||||
AV_PIX_FMT_YUVA420P, AV_PIX_FMT_NONE
|
||||
};
|
||||
|
||||
static const enum AVPixelFormat main_pix_fmts_yuv422[] = {
|
||||
AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUVA422P, AV_PIX_FMT_NONE
|
||||
};
|
||||
static const enum AVPixelFormat overlay_pix_fmts_yuv422[] = {
|
||||
AV_PIX_FMT_YUVA422P, AV_PIX_FMT_NONE
|
||||
};
|
||||
|
||||
static const enum AVPixelFormat main_pix_fmts_yuv444[] = {
|
||||
AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVA444P, AV_PIX_FMT_NONE
|
||||
};
|
||||
@ -218,6 +225,10 @@ static int query_formats(AVFilterContext *ctx)
|
||||
main_formats = ff_make_format_list(main_pix_fmts_yuv420);
|
||||
overlay_formats = ff_make_format_list(overlay_pix_fmts_yuv420);
|
||||
break;
|
||||
case OVERLAY_FORMAT_YUV422:
|
||||
main_formats = ff_make_format_list(main_pix_fmts_yuv422);
|
||||
overlay_formats = ff_make_format_list(overlay_pix_fmts_yuv422);
|
||||
break;
|
||||
case OVERLAY_FORMAT_YUV444:
|
||||
main_formats = ff_make_format_list(main_pix_fmts_yuv444);
|
||||
overlay_formats = ff_make_format_list(overlay_pix_fmts_yuv444);
|
||||
@ -587,6 +598,7 @@ static const AVOption overlay_options[] = {
|
||||
{ "shortest", "force termination when the shortest input terminates", OFFSET(dinput.shortest), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS },
|
||||
{ "format", "set output format", OFFSET(format), AV_OPT_TYPE_INT, {.i64=OVERLAY_FORMAT_YUV420}, 0, OVERLAY_FORMAT_NB-1, FLAGS, "format" },
|
||||
{ "yuv420", "", 0, AV_OPT_TYPE_CONST, {.i64=OVERLAY_FORMAT_YUV420}, .flags = FLAGS, .unit = "format" },
|
||||
{ "yuv422", "", 0, AV_OPT_TYPE_CONST, {.i64=OVERLAY_FORMAT_YUV422}, .flags = FLAGS, .unit = "format" },
|
||||
{ "yuv444", "", 0, AV_OPT_TYPE_CONST, {.i64=OVERLAY_FORMAT_YUV444}, .flags = FLAGS, .unit = "format" },
|
||||
{ "rgb", "", 0, AV_OPT_TYPE_CONST, {.i64=OVERLAY_FORMAT_RGB}, .flags = FLAGS, .unit = "format" },
|
||||
{ "repeatlast", "repeat overlay of the last overlay frame", OFFSET(dinput.repeatlast), AV_OPT_TYPE_INT, {.i64=1}, 0, 1, FLAGS },
|
||||
|
@ -80,6 +80,9 @@ fate-filter-overlay_rgb: CMD = framecrc -c:v pgmyuv -i $(SRC) -filter_complex_sc
|
||||
FATE_FILTER_VSYNTH-$(call ALLYES, SPLIT_FILTER SCALE_FILTER PAD_FILTER OVERLAY_FILTER) += fate-filter-overlay_yuv420
|
||||
fate-filter-overlay_yuv420: CMD = framecrc -c:v pgmyuv -i $(SRC) -filter_complex_script $(SRC_PATH)/tests/filtergraphs/overlay_yuv420
|
||||
|
||||
FATE_FILTER_VSYNTH-$(call ALLYES, SPLIT_FILTER SCALE_FILTER PAD_FILTER OVERLAY_FILTER) += fate-filter-overlay_yuv422
|
||||
fate-filter-overlay_yuv422: CMD = framecrc -c:v pgmyuv -i $(SRC) -filter_complex_script $(SRC_PATH)/tests/filtergraphs/overlay_yuv422
|
||||
|
||||
FATE_FILTER_VSYNTH-$(call ALLYES, SPLIT_FILTER SCALE_FILTER PAD_FILTER OVERLAY_FILTER) += fate-filter-overlay_yuv444
|
||||
fate-filter-overlay_yuv444: CMD = framecrc -c:v pgmyuv -i $(SRC) -filter_complex_script $(SRC_PATH)/tests/filtergraphs/overlay_yuv444
|
||||
|
||||
|
4
tests/filtergraphs/overlay_yuv422
Normal file
4
tests/filtergraphs/overlay_yuv422
Normal file
@ -0,0 +1,4 @@
|
||||
sws_flags=+accurate_rnd+bitexact;
|
||||
split [main][over];
|
||||
[over] scale=88:72, pad=96:80:4:4 [overf];
|
||||
[main][overf] overlay=240:16:format=yuv422
|
51
tests/ref/fate/filter-overlay_yuv422
Normal file
51
tests/ref/fate/filter-overlay_yuv422
Normal file
@ -0,0 +1,51 @@
|
||||
#tb 0: 1/25
|
||||
0, 0, 0, 1, 304128, 0x9b9e09b2
|
||||
0, 1, 1, 1, 304128, 0x33addb48
|
||||
0, 2, 2, 1, 304128, 0xd5b973e9
|
||||
0, 3, 3, 1, 304128, 0xcb847cb6
|
||||
0, 4, 4, 1, 304128, 0xf64536f0
|
||||
0, 5, 5, 1, 304128, 0xda17564a
|
||||
0, 6, 6, 1, 304128, 0x85e33692
|
||||
0, 7, 7, 1, 304128, 0x081a657f
|
||||
0, 8, 8, 1, 304128, 0xf15f69ee
|
||||
0, 9, 9, 1, 304128, 0x0a2dd737
|
||||
0, 10, 10, 1, 304128, 0x14ae5b1b
|
||||
0, 11, 11, 1, 304128, 0x0b654f1e
|
||||
0, 12, 12, 1, 304128, 0x35a11962
|
||||
0, 13, 13, 1, 304128, 0x010b7514
|
||||
0, 14, 14, 1, 304128, 0x5db20c43
|
||||
0, 15, 15, 1, 304128, 0xafb6c615
|
||||
0, 16, 16, 1, 304128, 0xa671a3ac
|
||||
0, 17, 17, 1, 304128, 0x1a0fc75d
|
||||
0, 18, 18, 1, 304128, 0xe3a05ff1
|
||||
0, 19, 19, 1, 304128, 0x58437c36
|
||||
0, 20, 20, 1, 304128, 0x1303f940
|
||||
0, 21, 21, 1, 304128, 0xec2f3248
|
||||
0, 22, 22, 1, 304128, 0xe9ff7d49
|
||||
0, 23, 23, 1, 304128, 0x3972a1ed
|
||||
0, 24, 24, 1, 304128, 0xee2311df
|
||||
0, 25, 25, 1, 304128, 0x5b62c4d9
|
||||
0, 26, 26, 1, 304128, 0x9e1e52e2
|
||||
0, 27, 27, 1, 304128, 0x60c56d07
|
||||
0, 28, 28, 1, 304128, 0x313a8534
|
||||
0, 29, 29, 1, 304128, 0x9f548f56
|
||||
0, 30, 30, 1, 304128, 0x8d894ed3
|
||||
0, 31, 31, 1, 304128, 0x3ce0500a
|
||||
0, 32, 32, 1, 304128, 0xb8dd487a
|
||||
0, 33, 33, 1, 304128, 0xdde97863
|
||||
0, 34, 34, 1, 304128, 0x8d9d1689
|
||||
0, 35, 35, 1, 304128, 0x703634dd
|
||||
0, 36, 36, 1, 304128, 0x3e321210
|
||||
0, 37, 37, 1, 304128, 0x6b5a1a8c
|
||||
0, 38, 38, 1, 304128, 0xffc1015d
|
||||
0, 39, 39, 1, 304128, 0x4abc4495
|
||||
0, 40, 40, 1, 304128, 0x3c03ada9
|
||||
0, 41, 41, 1, 304128, 0x6fa0344a
|
||||
0, 42, 42, 1, 304128, 0x36572833
|
||||
0, 43, 43, 1, 304128, 0x31646c4d
|
||||
0, 44, 44, 1, 304128, 0xa22d18c7
|
||||
0, 45, 45, 1, 304128, 0xf3b058f2
|
||||
0, 46, 46, 1, 304128, 0x4c6be349
|
||||
0, 47, 47, 1, 304128, 0xda98914a
|
||||
0, 48, 48, 1, 304128, 0x1a6d2f58
|
||||
0, 49, 49, 1, 304128, 0x12684280
|
Loading…
Reference in New Issue
Block a user