From e01165d3dbfc5043be6598ca89a7be13b8593bec Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 5 Feb 2026 17:05:42 +0100 Subject: [PATCH] test/repack: test draw_bmp at some uneven sizes intended to discover bugs like f3c1dcf7a13c61deb6bcdeeaec9f82163ab31177 --- test/ref/ffmpeg6/draw_bmp.txt | 8 ++++++++ test/ref/ffmpeg7/draw_bmp.txt | 8 ++++++++ test/ref/ffmpeg8/draw_bmp.txt | 8 ++++++++ test/repack.c | 32 +++++++++++++++++++++++--------- 4 files changed, 47 insertions(+), 9 deletions(-) diff --git a/test/ref/ffmpeg6/draw_bmp.txt b/test/ref/ffmpeg6/draw_bmp.txt index 66de4de729..cbc88b4e5b 100644 --- a/test/ref/ffmpeg6/draw_bmp.txt +++ b/test/ref/ffmpeg6/draw_bmp.txt @@ -247,3 +247,11 @@ yuvj422p = align=2:1 ov=yuva422p, ov_f=yuva422pf, v_f=yuv422pf, a=gray, ca=gr yuvj440p = no yuyv422 = align=2:1 ov=yuva422p, ov_f=yuva422pf, v_f=yuv422pf, a=gray, ca=gray, ca_f=grayf32 yvyu422 = align=2:1 ov=yuva422p, ov_f=yuva422pf, v_f=yuv422pf, a=gray, ca=gray, ca_f=grayf32 + +1920x1080= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +78x63= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +63x11= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +78x64= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +64x11= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +78x65= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +65x11= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown diff --git a/test/ref/ffmpeg7/draw_bmp.txt b/test/ref/ffmpeg7/draw_bmp.txt index a36e168bc0..877700c447 100644 --- a/test/ref/ffmpeg7/draw_bmp.txt +++ b/test/ref/ffmpeg7/draw_bmp.txt @@ -247,3 +247,11 @@ yuvj422p = align=2:1 ov=yuva422p, ov_f=yuva422pf, v_f=yuv422pf, a=gray, ca=gr yuvj440p = no yuyv422 = align=2:1 ov=yuva422p, ov_f=yuva422pf, v_f=yuv422pf, a=gray, ca=gray, ca_f=grayf32 yvyu422 = align=2:1 ov=yuva422p, ov_f=yuva422pf, v_f=yuv422pf, a=gray, ca=gray, ca_f=grayf32 + +1920x1080= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +78x63= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +63x11= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +78x64= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +64x11= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +78x65= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +65x11= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown diff --git a/test/ref/ffmpeg8/draw_bmp.txt b/test/ref/ffmpeg8/draw_bmp.txt index ec6a2a661d..910ec9efb4 100644 --- a/test/ref/ffmpeg8/draw_bmp.txt +++ b/test/ref/ffmpeg8/draw_bmp.txt @@ -286,3 +286,11 @@ yuvj422p = align=2:1 ov=yuva422p, ov_f=yuva422pf, v_f=yuv422pf, a=gray, ca=gr yuvj440p = no yuyv422 = align=2:1 ov=yuva422p, ov_f=yuva422pf, v_f=yuv422pf, a=gray, ca=gray, ca_f=grayf32 yvyu422 = align=2:1 ov=yuva422p, ov_f=yuva422pf, v_f=yuv422pf, a=gray, ca=gray, ca_f=grayf32 + +1920x1080= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +78x63= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +63x11= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +78x64= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +64x11= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +78x65= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown +65x11= align=1:1 ov=unknown, ov_f=gbrap, v_f=gbrp, a=unknown, ca=unknown, ca_f=unknown diff --git a/test/repack.c b/test/repack.c index 9b7596c6da..bea6c75cc3 100644 --- a/test/repack.c +++ b/test/repack.c @@ -437,21 +437,21 @@ static void check_float_repack(int imgfmt, enum pl_color_system csp, talloc_free(from_f); } -static bool try_draw_bmp(FILE *f, int imgfmt) +static bool try_draw_bmp(FILE *f, int imgfmt, int w, int h) { bool ok = false; - struct mp_image *dst = mp_image_alloc(imgfmt, 64, 64); + struct mp_image *dst = mp_image_alloc(imgfmt, w, h); if (!dst) goto done; struct sub_bitmap sb = { - .bitmap = &(uint8_t[]){123}, - .stride = 1, - .x = 1, - .y = 1, - .w = 1, .dw = 1, - .h = 1, .dh = 1, + .bitmap = &(uint8_t[]){0x55, 0xaa, 0x55, 0xaa}, + .stride = 2, + .x = w - 2, + .y = h - 2, + .w = 2, .dw = 2, + .h = 2, .dh = 2, .libass = { .color = 0xDEDEDEDE }, }; @@ -525,7 +525,21 @@ int main(int argc, char *argv[]) int imgfmt = imgfmts[n]; fprintf(f, "%-12s= ", mp_imgfmt_to_name(imgfmt)); - try_draw_bmp(f, imgfmt); + try_draw_bmp(f, imgfmt, 64, 64); + } + + fprintf(f, "\n"); + + { // try it at a few sizes + const int imgfmt = IMGFMT_RGB0; + fprintf(f, "1920x1080= "); + try_draw_bmp(f, imgfmt, 1920, 1080); + for(int off = -1; off <= 1; off++) { + fprintf(f, "78x%d= ", 64+off); + try_draw_bmp(f, imgfmt, 78, 64+off); + fprintf(f, "%dx11= ", 64+off); + try_draw_bmp(f, imgfmt, 64+off, 11); + } } fclose(f);