aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2024-10-15 14:50:38 -0300
committerJames Almer <jamrial@gmail.com>2024-10-17 11:57:36 -0300
commit5601c5bb2e70fb6f12d5ee42c1f70e05217d93e3 (patch)
tree90a6cb43282f450d8a48a4df64949c58644c0eb4
parent08c632ec0f0c36affd2edad2e0add6e046d6c8be (diff)
downloadffmpeg-5601c5bb2e70fb6f12d5ee42c1f70e05217d93e3.tar.gz
avfilter/vsrc_testsrc: add support for XV36 and AYUV64
Signed-off-by: James Almer <jamrial@gmail.com>
-rw-r--r--libavfilter/vsrc_testsrc.c14
-rw-r--r--tests/fate/filter-video.mak3
-rw-r--r--tests/ref/fate/filter-yuvtestsrc-xv3610
3 files changed, 25 insertions, 2 deletions
diff --git a/libavfilter/vsrc_testsrc.c b/libavfilter/vsrc_testsrc.c
index 7f8db39f84..d57464a6c0 100644
--- a/libavfilter/vsrc_testsrc.c
+++ b/libavfilter/vsrc_testsrc.c
@@ -1159,6 +1159,7 @@ static void yuvtest_put_pixel(uint8_t *dstp[4], int dst_linesizep[4],
uint8_t ayuv_map[4])
{
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt);
+ int shift = 0;
uint32_t n;
switch (fmt) {
@@ -1173,6 +1174,15 @@ static void yuvtest_put_pixel(uint8_t *dstp[4], int dst_linesizep[4],
(v << ((desc->comp[2].offset*8) + desc->comp[2].shift));
AV_WL32(&dstp[0][i*4 + j*dst_linesizep[0]], n);
break;
+ case AV_PIX_FMT_XV36:
+ shift = 4; // hardcoded as the alpha component in the descriptor has no values we can use
+ // fall-through
+ case AV_PIX_FMT_AYUV64:
+ AV_WN16(&dstp[0][i*8 + ayuv_map[Y]*2 + j*dst_linesizep[0]], y << desc->comp[0].shift);
+ AV_WN16(&dstp[0][i*8 + ayuv_map[U]*2 + j*dst_linesizep[0]], u << desc->comp[1].shift);
+ AV_WN16(&dstp[0][i*8 + ayuv_map[V]*2 + j*dst_linesizep[0]], v << desc->comp[2].shift);
+ AV_WN16(&dstp[0][i*8 + ayuv_map[A]*2 + j*dst_linesizep[0]], UINT16_MAX << shift);
+ break;
case AV_PIX_FMT_UYVA:
case AV_PIX_FMT_VUYA:
case AV_PIX_FMT_VUYX:
@@ -1235,9 +1245,9 @@ static const enum AVPixelFormat yuvtest_pix_fmts[] = {
AV_PIX_FMT_YUV444P9, AV_PIX_FMT_YUV444P10,
AV_PIX_FMT_YUV444P12, AV_PIX_FMT_YUV444P14,
AV_PIX_FMT_YUV444P16, AV_PIX_FMT_VYU444,
- AV_PIX_FMT_AYUV, AV_PIX_FMT_UYVA,
+ AV_PIX_FMT_AYUV, AV_PIX_FMT_UYVA, AV_PIX_FMT_AYUV64,
AV_PIX_FMT_VUYA, AV_PIX_FMT_VUYX,
- AV_PIX_FMT_XV30LE, AV_PIX_FMT_V30XLE,
+ AV_PIX_FMT_XV30LE, AV_PIX_FMT_V30XLE, AV_PIX_FMT_XV36,
AV_PIX_FMT_NONE
};
diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak
index c5c82f72ed..47ff106062 100644
--- a/tests/fate/filter-video.mak
+++ b/tests/fate/filter-video.mak
@@ -124,6 +124,9 @@ fate-filter-yuvtestsrc-vyu444: CMD = framecrc -lavfi yuvtestsrc=rate=5:duration=
FATE_FILTER-$(call FILTERFRAMECRC, YUVTESTSRC) += fate-filter-yuvtestsrc-xv30le
fate-filter-yuvtestsrc-xv30le: CMD = framecrc -lavfi yuvtestsrc=rate=5:duration=1 -pix_fmt xv30le
+FATE_FILTER-$(call FILTERFRAMECRC, YUVTESTSRC SCALE) += fate-filter-yuvtestsrc-xv36
+fate-filter-yuvtestsrc-xv36: CMD = framecrc -lavfi yuvtestsrc=rate=5:duration=1,format=xv36,scale -pix_fmt xv36le
+
FATE_FILTER-$(call FILTERFRAMECRC, TESTSRC FORMAT CONCAT SCALE, LAVFI_INDEV FILE_PROTOCOL) += fate-filter-lavd-scalenorm
fate-filter-lavd-scalenorm: tests/data/filtergraphs/scalenorm
fate-filter-lavd-scalenorm: CMD = framecrc -f lavfi -graph_file $(TARGET_PATH)/tests/data/filtergraphs/scalenorm -i dummy
diff --git a/tests/ref/fate/filter-yuvtestsrc-xv36 b/tests/ref/fate/filter-yuvtestsrc-xv36
new file mode 100644
index 0000000000..16c24b80f8
--- /dev/null
+++ b/tests/ref/fate/filter-yuvtestsrc-xv36
@@ -0,0 +1,10 @@
+#tb 0: 1/5
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 320x240
+#sar 0: 1/1
+0, 0, 0, 1, 614400, 0xdadee6db
+0, 1, 1, 1, 614400, 0xdadee6db
+0, 2, 2, 1, 614400, 0xdadee6db
+0, 3, 3, 1, 614400, 0xdadee6db
+0, 4, 4, 1, 614400, 0xdadee6db