[FFmpeg-cvslog] configure: Only try to use the -no_warn_duplicate_libraries flag on Darwin

2024-10-14 Thread Martin Storsjö
ffmpeg | branch: master | Martin Storsjö  | Mon Oct 14 
23:43:11 2024 +0300| [38d08f5c451a312d9064b81472fa05ff53b2e780] | committer: 
Martin Storsjö

configure: Only try to use the -no_warn_duplicate_libraries flag on Darwin

While we only add the flag if the linker seems to support it,
it turns out that ld.bfd had a bug where the flag is accidentally
accepted, and the flag produces an output file named
"_warn_duplicate_libraries".

The ld.bfd bug was fixed in binutils 2.36, in
https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=3991c7acb29aa8d7d52150695eb3efa03a08dd50.

Signed-off-by: Martin Storsjö 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=38d08f5c451a312d9064b81472fa05ff53b2e780
---

 configure | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index 8803148ab7..9f508a2527 100755
--- a/configure
+++ b/configure
@@ -6478,7 +6478,9 @@ check_cc intrinsics_sse2 emmintrin.h "__m128i test = 
_mm_setzero_si128()"
 
 check_ldflags -Wl,--as-needed
 check_ldflags -Wl,-z,noexecstack
-check_ldflags -Wl,-no_warn_duplicate_libraries
+if [ $target_os = "darwin" ]; then
+check_ldflags -Wl,-no_warn_duplicate_libraries
+fi
 
 if ! disabled network; then
 check_func getaddrinfo $network_extralibs

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] avcodec/ffv1dec: Fix end computation with ec=2

2024-10-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Thu 
Oct 10 20:39:23 2024 +0200| [10e5af15bf220d9da128ca12d2d474ff6ab0076e] | 
committer: Michael Niedermayer

avcodec/ffv1dec: Fix end computation with ec=2

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=10e5af15bf220d9da128ca12d2d474ff6ab0076e
---

 libavcodec/ffv1dec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c
index b4d719a7ee..6aa36716cb 100644
--- a/libavcodec/ffv1dec.c
+++ b/libavcodec/ffv1dec.c
@@ -347,7 +347,7 @@ static int decode_slice(AVCodecContext *c, void *arg)
 if (f->ac != AC_GOLOMB_RICE && f->version > 2) {
 int v;
 get_rac(&sc->c, (uint8_t[]) { 129 });
-v = sc->c.bytestream_end - sc->c.bytestream - 2 - 5*f->ec;
+v = sc->c.bytestream_end - sc->c.bytestream - 2 - 5*!!f->ec;
 if (v) {
 av_log(f->avctx, AV_LOG_ERROR, "bytestream end mismatching by 
%d\n", v);
 slice_set_damaged(f, sc);

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] avcodec/ffv1enc: Fix RCT with RGB64

2024-10-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Thu 
Oct 10 22:14:41 2024 +0200| [c1edec3a24306f8fa31bebe67644183741cbf0e0] | 
committer: Michael Niedermayer

avcodec/ffv1enc: Fix RCT with RGB64

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c1edec3a24306f8fa31bebe67644183741cbf0e0
---

 libavcodec/ffv1enc.c | 8 
 1 file changed, 8 insertions(+)

diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index 8295ddedf4..f1228c5252 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -988,6 +988,9 @@ static void choose_rct_params(const FFV1Context *f, 
FFV1SliceContext *sc,
 int x, y, i, p, best;
 int16_t *sample[3];
 int lbd = f->bits_per_raw_sample <= 8;
+int packed = !src[1];
+int transparency = f->transparency;
+int packed_size = (3 + transparency)*2;
 
 for (y = 0; y < h; y++) {
 int lastr=0, lastg=0, lastb=0;
@@ -1002,6 +1005,11 @@ static void choose_rct_params(const FFV1Context *f, 
FFV1SliceContext *sc,
 b =  v& 0xFF;
 g = (v >>  8) & 0xFF;
 r = (v >> 16) & 0xFF;
+} else if (packed) {
+const uint16_t *p = ((const uint16_t*)(src[0] + x*packed_size 
+ stride[0]*y));
+r = p[0];
+g = p[1];
+b = p[2];
 } else {
 b = *((const uint16_t*)(src[0] + x*2 + stride[0]*y));
 g = *((const uint16_t*)(src[1] + x*2 + stride[1]*y));

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] avcodec/ffv1enc: allow manually specifying the crc type

2024-10-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Thu 
Oct 10 19:38:52 2024 +0200| [d9269fcacf32a30e502a62e60808e0eee090c588] | 
committer: Michael Niedermayer

avcodec/ffv1enc: allow manually specifying the crc type

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d9269fcacf32a30e502a62e60808e0eee090c588
---

 libavcodec/ffv1enc.c | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index b9ee5b629a..76f5cf4b25 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -559,8 +559,10 @@ static av_cold int encode_init(AVCodecContext *avctx)
 }
 
 // CRC requires version 3+
-if (s->ec)
+if (s->ec == 1)
 s->version = FFMAX(s->version, 3);
+if (s->ec == 2)
+s->version = FFMAX(s->version, 4);
 
 if ((s->version == 2 || s->version>3) && avctx->strict_std_compliance > 
FF_COMPLIANCE_EXPERIMENTAL) {
 av_log(avctx, AV_LOG_ERROR, "Version 2 or 4 needed for requested 
features but version 2 or 4 is experimental and not enabled\n");
@@ -1266,7 +1268,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket 
*pkt,
 #define OFFSET(x) offsetof(FFV1Context, x)
 #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 static const AVOption options[] = {
-{ "slicecrc", "Protect slices with CRCs", OFFSET(ec), AV_OPT_TYPE_BOOL, { 
.i64 = -1 }, -1, 1, VE },
+{ "slicecrc", "Protect slices with CRCs", OFFSET(ec), AV_OPT_TYPE_INT, { 
.i64 = -1 }, -1, 2, VE },
 { "coder", "Coder type", OFFSET(ac), AV_OPT_TYPE_INT,
 { .i64 = 0 }, -2, 2, VE, .unit = "coder" },
 { "rice", "Golomb rice", 0, AV_OPT_TYPE_CONST,

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] avcodec/ffv1enc: Move slice termination into threads

2024-10-14 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Thu 
Oct 10 19:57:07 2024 +0200| [8e52b1525831987bcc389c89ccf53a76e7177fe1] | 
committer: Michael Niedermayer

avcodec/ffv1enc: Move slice termination into threads

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8e52b1525831987bcc389c89ccf53a76e7177fe1
---

 libavcodec/ffv1enc.c | 16 
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index 76f5cf4b25..8295ddedf4 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -1105,6 +1105,13 @@ retry:
 ret = encode_rgb_frame(f, sc, planes, width, height, p->linesize);
 }
 
+if (f->ac != AC_GOLOMB_RICE) {
+sc->ac_byte_count = ff_rac_terminate(&sc->c, 1);
+} else {
+flush_put_bits(&sc->pb); // FIXME: nicer padding
+sc->ac_byte_count += put_bytes_output(&sc->pb);
+}
+
 if (ret < 0) {
 av_assert0(sc->slice_coding_mode == 0);
 if (f->version < 4 || !f->ac) {
@@ -1229,14 +1236,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket 
*pkt,
 buf_p = pkt->data;
 for (i = 0; i < f->slice_count; i++) {
 FFV1SliceContext *sc = &f->slices[i];
-int bytes;
-
-if (f->ac != AC_GOLOMB_RICE) {
-bytes = ff_rac_terminate(&sc->c, 1);
-} else {
-flush_put_bits(&sc->pb); // FIXME: nicer padding
-bytes = sc->ac_byte_count + put_bytes_output(&sc->pb);
-}
+int bytes = sc->ac_byte_count;
 if (i > 0 || f->version > 2) {
 av_assert0(bytes < pkt->size / f->slice_count);
 memmove(buf_p, sc->c.bytestream_start, bytes);

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] avfilter/vsrc_testsrc: add missing alpha plane define

2024-10-14 Thread James Almer
ffmpeg | branch: master | James Almer  | Mon Oct 14 12:02:30 
2024 -0300| [3827233187ca843f701b29885e0a3b2510763161] | committer: James Almer

avfilter/vsrc_testsrc: add missing alpha plane define

"A" was never being defined if yuvtestsrc was enabled but rgbtestsrc disabled.

Signed-off-by: James Almer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3827233187ca843f701b29885e0a3b2510763161
---

 libavfilter/vsrc_testsrc.c | 11 +++
 1 file changed, 11 insertions(+)

diff --git a/libavfilter/vsrc_testsrc.c b/libavfilter/vsrc_testsrc.c
index 3d80267399..7f8db39f84 100644
--- a/libavfilter/vsrc_testsrc.c
+++ b/libavfilter/vsrc_testsrc.c
@@ -1140,6 +1140,11 @@ const AVFilter ff_vsrc_rgbtestsrc = {
 FILTER_PIXFMTS_ARRAY(rgbtest_pix_fmts),
 };
 
+#undef R
+#undef G
+#undef B
+#undef A
+
 #endif /* CONFIG_RGBTESTSRC_FILTER */
 
 #if CONFIG_YUVTESTSRC_FILTER
@@ -1147,6 +1152,7 @@ const AVFilter ff_vsrc_rgbtestsrc = {
 #define Y 0
 #define U 1
 #define V 2
+#define A 3
 
 static void yuvtest_put_pixel(uint8_t *dstp[4], int dst_linesizep[4],
   int i, int j, unsigned y, unsigned u, unsigned 
v, enum AVPixelFormat fmt,
@@ -1264,6 +1270,11 @@ const AVFilter ff_vsrc_yuvtestsrc = {
 FILTER_PIXFMTS_ARRAY(yuvtest_pix_fmts),
 };
 
+#undef Y
+#undef U
+#undef V
+#undef A
+
 #endif /* CONFIG_YUVTESTSRC_FILTER */
 
 #if CONFIG_PAL75BARS_FILTER || CONFIG_PAL100BARS_FILTER || 
CONFIG_SMPTEBARS_FILTER || CONFIG_SMPTEHDBARS_FILTER

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] avfilter/vsdc_testsrc: simplify yuvtest_fill_picture

2024-10-14 Thread James Almer
ffmpeg | branch: master | James Almer  | Sat Oct 12 16:55:05 
2024 -0300| [667e22e85dcdf85975cd1f6a9b2bb4d110ff7823] | committer: James Almer

avfilter/vsdc_testsrc: simplify yuvtest_fill_picture

Copy what's done for rgbtest_fill_picture.
It will be useful for the following commit.

Signed-off-by: James Almer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=667e22e85dcdf85975cd1f6a9b2bb4d110ff7823
---

 libavfilter/drawutils.c|  48 +--
 libavfilter/drawutils.h|   1 +
 libavfilter/vsrc_testsrc.c | 145 ++---
 3 files changed, 75 insertions(+), 119 deletions(-)

diff --git a/libavfilter/drawutils.c b/libavfilter/drawutils.c
index 95525d38b4..b86f666f1f 100644
--- a/libavfilter/drawutils.c
+++ b/libavfilter/drawutils.c
@@ -32,19 +32,17 @@
 
 enum { RED = 0, GREEN, BLUE, ALPHA };
 
-int ff_fill_rgba_map(uint8_t *rgba_map, enum AVPixelFormat pix_fmt)
+static int fill_map(const AVPixFmtDescriptor *desc, uint8_t *map)
 {
-const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
-if (!(desc->flags & AV_PIX_FMT_FLAG_RGB))
-return AVERROR(EINVAL);
-if (desc->flags & AV_PIX_FMT_FLAG_BITSTREAM)
+if (desc->flags & (AV_PIX_FMT_FLAG_BITSTREAM | AV_PIX_FMT_FLAG_HWACCEL |
+   AV_PIX_FMT_FLAG_BAYER | AV_PIX_FMT_FLAG_XYZ | 
AV_PIX_FMT_FLAG_PAL))
 return AVERROR(EINVAL);
 av_assert0(desc->nb_components == 3 + !!(desc->flags & 
AV_PIX_FMT_FLAG_ALPHA));
 if (desc->flags & AV_PIX_FMT_FLAG_PLANAR) {
-rgba_map[RED]   = desc->comp[0].plane;
-rgba_map[GREEN] = desc->comp[1].plane;
-rgba_map[BLUE]  = desc->comp[2].plane;
-rgba_map[ALPHA] = (desc->flags & AV_PIX_FMT_FLAG_ALPHA) ? 
desc->comp[3].plane : 3;
+map[RED]   = desc->comp[0].plane;
+map[GREEN] = desc->comp[1].plane;
+map[BLUE]  = desc->comp[2].plane;
+map[ALPHA] = (desc->flags & AV_PIX_FMT_FLAG_ALPHA) ? 
desc->comp[3].plane : 3;
 } else {
 int had0 = 0;
 unsigned depthb = 0;
@@ -60,24 +58,40 @@ int ff_fill_rgba_map(uint8_t *rgba_map, enum AVPixelFormat 
pix_fmt)
 return AVERROR(ENOSYS);
 
 had0 |= pos == 0;
-rgba_map[i] = pos;
+map[i] = pos;
 depthb = db;
 }
 
 if (desc->nb_components == 3)
-rgba_map[ALPHA] = had0 ? 3 : 0;
+map[ALPHA] = had0 ? 3 : 0;
 }
 
-av_assert0(rgba_map[RED]   != rgba_map[GREEN]);
-av_assert0(rgba_map[GREEN] != rgba_map[BLUE]);
-av_assert0(rgba_map[BLUE]  != rgba_map[RED]);
-av_assert0(rgba_map[RED]   != rgba_map[ALPHA]);
-av_assert0(rgba_map[GREEN] != rgba_map[ALPHA]);
-av_assert0(rgba_map[BLUE]  != rgba_map[ALPHA]);
+av_assert0(map[RED]   != map[GREEN]);
+av_assert0(map[GREEN] != map[BLUE]);
+av_assert0(map[BLUE]  != map[RED]);
+av_assert0(map[RED]   != map[ALPHA]);
+av_assert0(map[GREEN] != map[ALPHA]);
+av_assert0(map[BLUE]  != map[ALPHA]);
 
 return 0;
 }
 
+int ff_fill_rgba_map(uint8_t *rgba_map, enum AVPixelFormat pix_fmt)
+{
+const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
+if (!(desc->flags & AV_PIX_FMT_FLAG_RGB))
+return AVERROR(EINVAL);
+return fill_map(desc, rgba_map);
+}
+
+int ff_fill_ayuv_map(uint8_t *ayuv_map, enum AVPixelFormat pix_fmt)
+{
+const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
+if (desc->flags & AV_PIX_FMT_FLAG_RGB)
+return AVERROR(EINVAL);
+return fill_map(desc, ayuv_map);
+}
+
 int ff_draw_init2(FFDrawContext *draw, enum AVPixelFormat format, enum 
AVColorSpace csp,
   enum AVColorRange range, unsigned flags)
 {
diff --git a/libavfilter/drawutils.h b/libavfilter/drawutils.h
index 90df55107a..f4903d1a86 100644
--- a/libavfilter/drawutils.h
+++ b/libavfilter/drawutils.h
@@ -29,6 +29,7 @@
 #include "libavutil/pixfmt.h"
 
 int ff_fill_rgba_map(uint8_t *rgba_map, enum AVPixelFormat pix_fmt);
+int ff_fill_ayuv_map(uint8_t *ayuv_map, enum AVPixelFormat pix_fmt);
 
 #define MAX_PLANES 4
 
diff --git a/libavfilter/vsrc_testsrc.c b/libavfilter/vsrc_testsrc.c
index b004d2d0e0..b182abea0f 100644
--- a/libavfilter/vsrc_testsrc.c
+++ b/libavfilter/vsrc_testsrc.c
@@ -71,6 +71,9 @@ typedef struct TestSourceContext {
 /* only used by testsrc2 */
 int alpha;
 
+/* only used by yuvtest */
+uint8_t ayuv_map[4];
+
 /* only used by colorspectrum */
 int type;
 
@@ -1141,118 +1144,56 @@ const AVFilter ff_vsrc_rgbtestsrc = {
 
 #if CONFIG_YUVTESTSRC_FILTER
 
-static void yuvtest_fill_picture8(AVFilterContext *ctx, AVFrame *frame)
-{
-int x, y, w = frame->width, h = frame->height / 3;
-const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format);
-const int factor = 1 << desc->comp[0].depth;
-const int mid = 1 << (desc->comp[0].depth - 1);
-uint8_t *ydst = frame->data[0];
-uint8_t *udst = frame->data[1];
-uint8_t *vdst = frame->dat

[FFmpeg-cvslog] fate/filter-video: add tests for packed YUV in yuvtestsrc

2024-10-14 Thread James Almer
ffmpeg | branch: master | James Almer  | Sat Oct 12 17:01:35 
2024 -0300| [4f0514df62a642a511db13afb27d420ef04713a0] | committer: James Almer

fate/filter-video: add tests for packed YUV in yuvtestsrc

Signed-off-by: James Almer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4f0514df62a642a511db13afb27d420ef04713a0
---

 tests/fate/filter-video.mak | 12 
 tests/ref/fate/filter-yuvtestsrc-ayuv   | 10 ++
 tests/ref/fate/filter-yuvtestsrc-vuya   | 10 ++
 tests/ref/fate/filter-yuvtestsrc-vyu444 | 10 ++
 tests/ref/fate/filter-yuvtestsrc-xv30le | 10 ++
 5 files changed, 52 insertions(+)

diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak
index 5b8a294afd..c5c82f72ed 100644
--- a/tests/fate/filter-video.mak
+++ b/tests/fate/filter-video.mak
@@ -112,6 +112,18 @@ fate-filter-yuvtestsrc-yuv444p: CMD = framecrc -lavfi 
yuvtestsrc=rate=5:duration
 FATE_FILTER-$(call FILTERFRAMECRC, YUVTESTSRC SCALE) += 
fate-filter-yuvtestsrc-yuv444p12
 fate-filter-yuvtestsrc-yuv444p12: CMD = framecrc -lavfi 
yuvtestsrc=rate=5:duration=1,format=yuv444p12,scale -pix_fmt yuv444p12le
 
+FATE_FILTER-$(call FILTERFRAMECRC, YUVTESTSRC) += fate-filter-yuvtestsrc-ayuv
+fate-filter-yuvtestsrc-ayuv: CMD = framecrc -lavfi 
yuvtestsrc=rate=5:duration=1 -pix_fmt ayuv
+
+FATE_FILTER-$(call FILTERFRAMECRC, YUVTESTSRC) += fate-filter-yuvtestsrc-vuya
+fate-filter-yuvtestsrc-vuya: CMD = framecrc -lavfi 
yuvtestsrc=rate=5:duration=1 -pix_fmt vuya
+
+FATE_FILTER-$(call FILTERFRAMECRC, YUVTESTSRC) += fate-filter-yuvtestsrc-vyu444
+fate-filter-yuvtestsrc-vyu444: CMD = framecrc -lavfi 
yuvtestsrc=rate=5:duration=1 -pix_fmt vyu444
+
+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, 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-ayuv 
b/tests/ref/fate/filter-yuvtestsrc-ayuv
new file mode 100644
index 00..91c15bebb9
--- /dev/null
+++ b/tests/ref/fate/filter-yuvtestsrc-ayuv
@@ -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,   307200, 0xd4270fd4
+0,  1,  1,1,   307200, 0xd4270fd4
+0,  2,  2,1,   307200, 0xd4270fd4
+0,  3,  3,1,   307200, 0xd4270fd4
+0,  4,  4,1,   307200, 0xd4270fd4
diff --git a/tests/ref/fate/filter-yuvtestsrc-vuya 
b/tests/ref/fate/filter-yuvtestsrc-vuya
new file mode 100644
index 00..f91ef558d7
--- /dev/null
+++ b/tests/ref/fate/filter-yuvtestsrc-vuya
@@ -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,   307200, 0x4df60fd4
+0,  1,  1,1,   307200, 0x4df60fd4
+0,  2,  2,1,   307200, 0x4df60fd4
+0,  3,  3,1,   307200, 0x4df60fd4
+0,  4,  4,1,   307200, 0x4df60fd4
diff --git a/tests/ref/fate/filter-yuvtestsrc-vyu444 
b/tests/ref/fate/filter-yuvtestsrc-vyu444
new file mode 100644
index 00..a01e088d1e
--- /dev/null
+++ b/tests/ref/fate/filter-yuvtestsrc-vyu444
@@ -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,   230400, 0x8c622a4f
+0,  1,  1,1,   230400, 0x8c622a4f
+0,  2,  2,1,   230400, 0x8c622a4f
+0,  3,  3,1,   230400, 0x8c622a4f
+0,  4,  4,1,   230400, 0x8c622a4f
diff --git a/tests/ref/fate/filter-yuvtestsrc-xv30le 
b/tests/ref/fate/filter-yuvtestsrc-xv30le
new file mode 100644
index 00..4d5a4ce8c1
--- /dev/null
+++ b/tests/ref/fate/filter-yuvtestsrc-xv30le
@@ -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,   307200, 0xc7a544aa
+0,  1,  1,1,   307200, 0xc7a544aa
+0,  2,  2,1,   307200, 0xc7a544aa
+0,  3,  3,1,   307200, 0xc7a544aa
+0,  4,  4,1,   307200, 0xc7a544aa

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] avfilter/vsrc_testsrc: add support for packed YUV formats in yuvtestsrc

2024-10-14 Thread James Almer
ffmpeg | branch: master | James Almer  | Sat Oct 12 16:55:28 
2024 -0300| [f2853002dd33400f1db02ff8371bb36e0755899e] | committer: James Almer

avfilter/vsrc_testsrc: add support for packed YUV formats in yuvtestsrc

Signed-off-by: James Almer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f2853002dd33400f1db02ff8371bb36e0755899e
---

 libavfilter/vsrc_testsrc.c | 26 --
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/libavfilter/vsrc_testsrc.c b/libavfilter/vsrc_testsrc.c
index b182abea0f..3d80267399 100644
--- a/libavfilter/vsrc_testsrc.c
+++ b/libavfilter/vsrc_testsrc.c
@@ -1152,9 +1152,28 @@ static void yuvtest_put_pixel(uint8_t *dstp[4], int 
dst_linesizep[4],
   int i, int j, unsigned y, unsigned u, unsigned 
v, enum AVPixelFormat fmt,
   uint8_t ayuv_map[4])
 {
+const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt);
 uint32_t n;
 
 switch (fmt) {
+case AV_PIX_FMT_VYU444:
+n = (y << (ayuv_map[Y]*8)) + (u << (ayuv_map[U]*8)) + (v << 
(ayuv_map[V]*8));
+AV_WL24(&dstp[0][i*3 + j*dst_linesizep[0]], n);
+break;
+case AV_PIX_FMT_V30XLE:
+case AV_PIX_FMT_XV30LE:
+n = (y << ((desc->comp[0].offset*8) + desc->comp[0].shift)) +
+(u << ((desc->comp[1].offset*8) + desc->comp[1].shift)) +
+(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_UYVA:
+case AV_PIX_FMT_VUYA:
+case AV_PIX_FMT_VUYX:
+case AV_PIX_FMT_AYUV:
+n = (y << (ayuv_map[Y]*8)) + (u << (ayuv_map[U]*8)) + (v << 
(ayuv_map[V]*8)) + (255U << (ayuv_map[A]*8));
+AV_WL32(&dstp[0][i*4 + j*dst_linesizep[0]], n);
+break;
 case AV_PIX_FMT_YUV444P:
 case AV_PIX_FMT_YUVJ444P:
 dstp[0][i + j*dst_linesizep[0]] = y;
@@ -1177,7 +1196,7 @@ static void yuvtest_fill_picture(AVFilterContext *ctx, 
AVFrame *frame)
 {
 TestSourceContext *test = ctx->priv;
 int i, j, w = frame->width, h = frame->height;
-const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format);
+const AVPixFmtDescriptor *desc = 
av_pix_fmt_desc_get(ctx->outputs[0]->format);
 const int factor = 1 << desc->comp[0].depth;
 const int mid = 1 << (desc->comp[0].depth - 1);
 
@@ -1209,7 +1228,10 @@ static const enum AVPixelFormat yuvtest_pix_fmts[] = {
 AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVJ444P,
 AV_PIX_FMT_YUV444P9, AV_PIX_FMT_YUV444P10,
 AV_PIX_FMT_YUV444P12, AV_PIX_FMT_YUV444P14,
-AV_PIX_FMT_YUV444P16,
+AV_PIX_FMT_YUV444P16, AV_PIX_FMT_VYU444,
+AV_PIX_FMT_AYUV, AV_PIX_FMT_UYVA,
+AV_PIX_FMT_VUYA, AV_PIX_FMT_VUYX,
+AV_PIX_FMT_XV30LE, AV_PIX_FMT_V30XLE,
 AV_PIX_FMT_NONE
 };
 

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] avcodec/flashsvenc: add compression_level option

2024-10-14 Thread Ramiro Polla
ffmpeg | branch: master | Ramiro Polla  | Sun Sep 29 
20:36:28 2024 +0200| [3661d1982d8305b75bb13a8d2ae9aaf1c2e34bbc] | committer: 
James Almer

avcodec/flashsvenc: add compression_level option

This allows setting the compression level used by zlib.

Signed-off-by: James Almer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3661d1982d8305b75bb13a8d2ae9aaf1c2e34bbc
---

 libavcodec/flashsvenc.c  | 10 --
 tests/ref/vsynth/vsynth1-flashsv |  2 +-
 tests/ref/vsynth/vsynth2-flashsv |  4 ++--
 tests/ref/vsynth/vsynth3-flashsv |  2 +-
 tests/ref/vsynth/vsynth_lena-flashsv |  2 +-
 5 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/libavcodec/flashsvenc.c b/libavcodec/flashsvenc.c
index 5cf0602f5d..f650e517d0 100644
--- a/libavcodec/flashsvenc.c
+++ b/libavcodec/flashsvenc.c
@@ -67,6 +67,7 @@ typedef struct FlashSVContext {
 unsignedpacket_size;
 int64_t last_key_frame;
 uint8_t tmpblock[3 * 256 * 256];
+int compression_level;
 } FlashSVContext;
 
 static int copy_region_enc(const uint8_t *sptr, uint8_t *dptr, int dx, int dy,
@@ -121,6 +122,10 @@ static av_cold int flashsv_encode_init(AVCodecContext 
*avctx)
 nb_blocks = h_blocks * v_blocks;
 s->packet_size = 4 + nb_blocks * (2 + 3 * BLOCK_WIDTH * BLOCK_HEIGHT);
 
+s->compression_level = avctx->compression_level == FF_COMPRESSION_DEFAULT
+ ? Z_DEFAULT_COMPRESSION
+ : av_clip(avctx->compression_level, 0, 9);
+
 return 0;
 }
 
@@ -170,9 +175,10 @@ static int encode_bitstream(FlashSVContext *s, const 
AVFrame *p, uint8_t *buf,
   p->linesize[0], previous_frame);
 
 if (res || *I_frame) {
-unsigned long zsize = 3 * block_width * block_height;
+unsigned long zsize = 3 * block_width * block_height + 12;
 ret = compress2(ptr + 2, &zsize, s->tmpblock,
-3 * cur_blk_width * cur_blk_height, 9);
+3 * cur_blk_width * cur_blk_height,
+s->compression_level);
 
 if (ret != Z_OK)
 av_log(s->avctx, AV_LOG_ERROR,
diff --git a/tests/ref/vsynth/vsynth1-flashsv b/tests/ref/vsynth/vsynth1-flashsv
index 8b2783032b..05f9e9432d 100644
--- a/tests/ref/vsynth/vsynth1-flashsv
+++ b/tests/ref/vsynth/vsynth1-flashsv
@@ -1,4 +1,4 @@
-97894502b4cb57aca1105b6333f72dae *tests/data/fate/vsynth1-flashsv.flv
+61b0825258ac6fe85691bdefd892960d *tests/data/fate/vsynth1-flashsv.flv
 14681925 tests/data/fate/vsynth1-flashsv.flv
 791e1fb999deb2e4156e2286d48c4ed1 *tests/data/fate/vsynth1-flashsv.out.rawvideo
 stddev:2.84 PSNR: 39.04 MAXDIFF:   49 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth2-flashsv b/tests/ref/vsynth/vsynth2-flashsv
index 9bda896687..f659edaab5 100644
--- a/tests/ref/vsynth/vsynth2-flashsv
+++ b/tests/ref/vsynth/vsynth2-flashsv
@@ -1,4 +1,4 @@
-f4b45770dd93b43b4077532e8ef90bfc *tests/data/fate/vsynth2-flashsv.flv
-11636546 tests/data/fate/vsynth2-flashsv.flv
+a2f145e6e44b51f8fc64ead06a994273 *tests/data/fate/vsynth2-flashsv.flv
+11637702 tests/data/fate/vsynth2-flashsv.flv
 7f0fc12c02e68faddc153e69ddd6841c *tests/data/fate/vsynth2-flashsv.out.rawvideo
 stddev:1.20 PSNR: 46.52 MAXDIFF:   20 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth3-flashsv b/tests/ref/vsynth/vsynth3-flashsv
index 38a34bd71d..cdf9e7bf99 100644
--- a/tests/ref/vsynth/vsynth3-flashsv
+++ b/tests/ref/vsynth/vsynth3-flashsv
@@ -1,4 +1,4 @@
-832fe60169f4d91339458c60a5292924 *tests/data/fate/vsynth3-flashsv.flv
+a05a9ab0ae21925dd10a83639de77d77 *tests/data/fate/vsynth3-flashsv.flv
 171419 tests/data/fate/vsynth3-flashsv.flv
 faa660b0ecaaab1bf9b5d7284019aa01 *tests/data/fate/vsynth3-flashsv.out.rawvideo
 stddev:2.97 PSNR: 38.67 MAXDIFF:   49 bytes:86700/86700
diff --git a/tests/ref/vsynth/vsynth_lena-flashsv 
b/tests/ref/vsynth/vsynth_lena-flashsv
index 52046cdf2e..7dfec3edf5 100644
--- a/tests/ref/vsynth/vsynth_lena-flashsv
+++ b/tests/ref/vsynth/vsynth_lena-flashsv
@@ -1,4 +1,4 @@
-0667077971e0cb63b5f49c580006e90e *tests/data/fate/vsynth_lena-flashsv.flv
+59cdcf5f92c5113e27b2fda632ccd55c *tests/data/fate/vsynth_lena-flashsv.flv
 12368953 tests/data/fate/vsynth_lena-flashsv.flv
 3a984506f1ebfc9fb73b6814cab201cc 
*tests/data/fate/vsynth_lena-flashsv.out.rawvideo
 stddev:0.66 PSNR: 51.73 MAXDIFF:   14 bytes:  7603200/  7603200

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] tests/fate: disable compression for zlib-based codecs

2024-10-14 Thread Ramiro Polla
ffmpeg | branch: master | Ramiro Polla  | Sun Sep 29 
20:36:29 2024 +0200| [bce5855afb25d318e090c2e6c16117f065458356] | committer: 
James Almer

tests/fate: disable compression for zlib-based codecs

FATE results differ when using the original zlib and zlib-ng.

Since we don't need to test the result from zlib itself, this commit
disables compression on tests for zlib-based codecs, which ends up
giving the same results with both libraries.

Signed-off-by: James Almer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bce5855afb25d318e090c2e6c16117f065458356
---

 tests/fate/cover-art.mak  |  6 ++---
 tests/fate/image.mak  |  4 ++--
 tests/fate/lavf-image.mak |  5 ++--
 tests/fate/lavf-video.mak |  4 ++--
 tests/fate/mov.mak|  2 +-
 tests/fate/vcodec.mak |  4 +++-
 tests/ref/fate/copy-apng  |  4 ++--
 tests/ref/fate/cover-art-aiff-id3v2-remux |  6 ++---
 tests/ref/fate/cover-art-flac-remux   |  6 ++---
 tests/ref/fate/cover-art-mp3-id3v2-remux  |  6 ++---
 tests/ref/fate/mov-cover-image|  6 ++---
 tests/ref/fate/png-icc|  6 ++---
 tests/ref/fate/png-mdcv   |  4 ++--
 tests/ref/lavf/apng   |  4 ++--
 tests/ref/lavf/apng.png   |  4 ++--
 tests/ref/lavf/gray16be.png   |  4 ++--
 tests/ref/lavf/png|  4 ++--
 tests/ref/lavf/rgb48be.png|  4 ++--
 tests/ref/seek/vsynth_lena-flashsv| 40 +++
 tests/ref/vsynth/vsynth1-flashsv  |  4 ++--
 tests/ref/vsynth/vsynth1-mpng |  4 ++--
 tests/ref/vsynth/vsynth1-zlib |  4 ++--
 tests/ref/vsynth/vsynth2-flashsv  |  4 ++--
 tests/ref/vsynth/vsynth2-mpng |  4 ++--
 tests/ref/vsynth/vsynth2-zlib |  4 ++--
 tests/ref/vsynth/vsynth3-flashsv  |  4 ++--
 tests/ref/vsynth/vsynth3-mpng |  4 ++--
 tests/ref/vsynth/vsynth3-zlib |  4 ++--
 tests/ref/vsynth/vsynth_lena-flashsv  |  4 ++--
 tests/ref/vsynth/vsynth_lena-mpng |  4 ++--
 tests/ref/vsynth/vsynth_lena-zlib |  4 ++--
 31 files changed, 87 insertions(+), 84 deletions(-)

diff --git a/tests/fate/cover-art.mak b/tests/fate/cover-art.mak
index faa2182745..7f8958e33f 100644
--- a/tests/fate/cover-art.mak
+++ b/tests/fate/cover-art.mak
@@ -37,14 +37,14 @@ FATE_COVER_ART_REMUX-$(call ALLYES, FILE_PROTOCOL 
FLAC_DEMUXER MJPEG_DECODER \
 AIFF_DEMUXER BMP_DECODER PNG_DECODER \
 FRAMECRC_MUXER PIPE_PROTOCOL)\
+= fate-cover-art-aiff-id3v2-remux
-fate-cover-art-aiff-id3v2-remux: CMD = transcode flac 
$(TARGET_SAMPLES)/cover_art/cover_art.flac aiff "-map 0 -map 0:v -map 0:v -map 
0:v -c:a pcm_s16be -c:v:0 copy -filter:v:1 scale -c:v:1 png -filter:v:2 scale 
-c:v:2 bmp -c:v:3 copy -write_id3v2 1 -metadata:g unknown_key=unknown_value 
-metadata compilation=foo -metadata:s:v:0 title=first -metadata:s:v:1 
title=second -metadata:s:v:1 comment=Illustration -metadata:s:v:2 title=third 
-metadata:s:v:2 comment=Conductor -metadata:s:v:3 title=fourth -metadata:s:v:3 
comment=Composer" "-map 0 -c copy -t 0.1" "-show_entries 
format_tags:stream_tags:stream_disposition=attached_pic:stream=index,codec_name"
+fate-cover-art-aiff-id3v2-remux: CMD = transcode flac 
$(TARGET_SAMPLES)/cover_art/cover_art.flac aiff "-map 0 -map 0:v -map 0:v -map 
0:v -c:a pcm_s16be -c:v:0 copy -filter:v:1 scale -c:v:1 png 
-compression_level:v:1 0 -filter:v:2 scale -c:v:2 bmp -c:v:3 copy -write_id3v2 
1 -metadata:g unknown_key=unknown_value -metadata compilation=foo 
-metadata:s:v:0 title=first -metadata:s:v:1 title=second -metadata:s:v:1 
comment=Illustration -metadata:s:v:2 title=third -metadata:s:v:2 
comment=Conductor -metadata:s:v:3 title=fourth -metadata:s:v:3 
comment=Composer" "-map 0 -c copy -t 0.1" "-show_entries 
format_tags:stream_tags:stream_disposition=attached_pic:stream=index,codec_name"
 
 FATE_COVER_ART_REMUX-$(call ALLYES, FILE_PROTOCOL MP3_DEMUXER MJPEG_DECODER \
 SCALE_FILTER PNG_ENCODER BMP_ENCODER\
 MP3_MUXER BMP_DECODER PNG_DECODER   \
 FRAMECRC_MUXER PIPE_PROTOCOL)   \
+= fate-cover-art-mp3-id3v2-remux
-fate-cover-art-mp3-id3v2-remux: CMD = transcode mp3 
$(TARGET_SAMPLES)/exif/embedded_small.mp3 mp3 "-map 0 -map 0:v -map 0:v -c:a 
copy -filter:v:0 scale -filter:v:2 scale -c:v:0 bmp -c:v:1 copy -c:v:2 png 
-metadata:s:v:0 comment=Band/Orchestra" "-map 0 -c copy -t 0.1" "-show_entries 
stream_tags:stream_disposition=attached_pic:stream=index,codec_name"
+fate-cover-art-mp3-id3v2-remux: CMD = transcode mp3 
$(TARGET_SAMPLES)/exif/embedded_small.mp3 mp3 "-map 0 -map 0:v -map 0:v -c

[FFmpeg-cvslog] avutil/hwcontext_vulkan: add proper maps for XV3{0,6}

2024-10-14 Thread James Almer
ffmpeg | branch: master | James Almer  | Mon Oct 14 11:49:37 
2024 -0300| [fd8b0dcfed61ddf36b9523aa4ba1badc493b7707] | committer: James Almer

avutil/hwcontext_vulkan: add proper maps for XV3{0,6}

Signed-off-by: James Almer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fd8b0dcfed61ddf36b9523aa4ba1badc493b7707
---

 libavutil/hwcontext_vulkan.c | 9 -
 libavutil/vulkan.c   | 3 ++-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
index 47e21fda83..465308271e 100644
--- a/libavutil/hwcontext_vulkan.c
+++ b/libavutil/hwcontext_vulkan.c
@@ -308,7 +308,6 @@ static const struct FFVkFormatEntry {
 { VK_FORMAT_R32_SFLOAT, AV_PIX_FMT_GRAYF32, VK_IMAGE_ASPECT_COLOR_BIT, 1, 
1, 1, { VK_FORMAT_R32_SFLOAT } },
 
 /* RGB formats */
-{ VK_FORMAT_R16G16B16A16_UNORM,   AV_PIX_FMT_XV36,
VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM   } },
 { VK_FORMAT_B8G8R8A8_UNORM,   AV_PIX_FMT_BGRA,
VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_B8G8R8A8_UNORM   } },
 { VK_FORMAT_R8G8B8A8_UNORM,   AV_PIX_FMT_RGBA,
VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R8G8B8A8_UNORM   } },
 { VK_FORMAT_R8G8B8_UNORM, AV_PIX_FMT_RGB24,   
VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R8G8B8_UNORM } },
@@ -367,6 +366,8 @@ static const struct FFVkFormatEntry {
 { VK_FORMAT_B8G8R8G8_422_UNORM, AV_PIX_FMT_UYVY422, 
VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R8G8B8A8_UNORM } },
 { VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, AV_PIX_FMT_Y210,
VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
 { VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, AV_PIX_FMT_Y212,
VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
+{ VK_FORMAT_A2R10G10B10_UNORM_PACK32,   AV_PIX_FMT_XV30,
VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
+{ VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, AV_PIX_FMT_XV36,
VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
 };
 static const int nb_vk_formats_list = FF_ARRAY_ELEMS(vk_formats_list);
 
@@ -2863,10 +2864,8 @@ static const struct {
 // All these DRM_FORMATs were added in the same libdrm commit.
 #ifdef DRM_FORMAT_XYUV
 { DRM_FORMAT_XYUV, VK_FORMAT_R8G8B8A8_UNORM },
-{ DRM_FORMAT_XVYU12_16161616, VK_FORMAT_R16G16B16A16_UNORM} ,
-// As we had to map XV36 to a 16bit Vulkan format, reverse mapping will
-// end up yielding Y416 as the DRM format, so we need to recognise it.
-{ DRM_FORMAT_Y416, VK_FORMAT_R16G16B16A16_UNORM },
+{ DRM_FORMAT_XVYU2101010, VK_FORMAT_A2R10G10B10_UNORM_PACK32 } ,
+{ DRM_FORMAT_XVYU12_16161616, VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 
} ,
 #endif
 };
 
diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c
index 661b2627c9..e2d2478608 100644
--- a/libavutil/vulkan.c
+++ b/libavutil/vulkan.c
@@ -1311,7 +1311,8 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat 
pix_fmt,
 }
 case AV_PIX_FMT_X2RGB10:
 case AV_PIX_FMT_X2BGR10:
-case AV_PIX_FMT_Y210: {
+case AV_PIX_FMT_Y210:
+case AV_PIX_FMT_XV30: {
 const char *rep_tab[] = {
 [FF_VK_REP_NATIVE] = "rgb10_a2ui",
 [FF_VK_REP_FLOAT] = "rgb10_a2",

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] swscale/input: add input support for RGBF16

2024-10-14 Thread Martin Schitter
ffmpeg | branch: master | Martin Schitter  | Mon Oct 14 10:33:12 
2024 +0200| [d73b73af5ebebef01cf8206ccef0b83a4425ed93] | committer: Michael 
Niedermayer

swscale/input: add input support for RGBF16

Signed-off-by: Michael Niedermayer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d73b73af5ebebef01cf8206ccef0b83a4425ed93
---

 libswscale/input.c   | 101 ++-
 libswscale/utils.c   |   2 +
 libswscale/version.h |   2 +-
 3 files changed, 103 insertions(+), 2 deletions(-)

diff --git a/libswscale/input.c b/libswscale/input.c
index e2af1d5541..9beb72b8ec 100644
--- a/libswscale/input.c
+++ b/libswscale/input.c
@@ -1369,6 +1369,57 @@ static av_always_inline void rgbaf16ToA_endian(uint16_t 
*dst, const uint16_t *sr
 }
 }
 
+static av_always_inline void rgbf16ToUV_half_endian(uint16_t *dstU, uint16_t 
*dstV, int is_be,
+const uint16_t *src, int 
width,
+int32_t *rgb2yuv, 
Half2FloatTables *h2f_tbl)
+{
+int32_t ru = rgb2yuv[RU_IDX], gu = rgb2yuv[GU_IDX], bu = rgb2yuv[BU_IDX];
+int32_t rv = rgb2yuv[RV_IDX], gv = rgb2yuv[GV_IDX], bv = rgb2yuv[BV_IDX];
+int i;
+for (i = 0; i < width; i++) {
+int r = (lrintf(av_clipf(65535.0f * rdpx(src[i*6+0]), 0.0f, 65535.0f)) 
+
+ lrintf(av_clipf(65535.0f * rdpx(src[i*6+3]), 0.0f, 
65535.0f))) >> 1;
+int g = (lrintf(av_clipf(65535.0f * rdpx(src[i*6+1]), 0.0f, 65535.0f)) 
+
+ lrintf(av_clipf(65535.0f * rdpx(src[i*6+4]), 0.0f, 
65535.0f))) >> 1;
+int b = (lrintf(av_clipf(65535.0f * rdpx(src[i*6+2]), 0.0f, 65535.0f)) 
+
+ lrintf(av_clipf(65535.0f * rdpx(src[i*6+5]), 0.0f, 
65535.0f))) >> 1;
+
+dstU[i] = (ru*r + gu*g + bu*b + (0x10001<<(RGB2YUV_SHIFT-1))) >> 
RGB2YUV_SHIFT;
+dstV[i] = (rv*r + gv*g + bv*b + (0x10001<<(RGB2YUV_SHIFT-1))) >> 
RGB2YUV_SHIFT;
+}
+}
+
+static av_always_inline void rgbf16ToUV_endian(uint16_t *dstU, uint16_t *dstV, 
int is_be,
+   const uint16_t *src, int width,
+   int32_t *rgb2yuv, 
Half2FloatTables *h2f_tbl)
+{
+int32_t ru = rgb2yuv[RU_IDX], gu = rgb2yuv[GU_IDX], bu = rgb2yuv[BU_IDX];
+int32_t rv = rgb2yuv[RV_IDX], gv = rgb2yuv[GV_IDX], bv = rgb2yuv[BV_IDX];
+int i;
+for (i = 0; i < width; i++) {
+int r = lrintf(av_clipf(65535.0f * rdpx(src[i*3+0]), 0.0f, 65535.0f));
+int g = lrintf(av_clipf(65535.0f * rdpx(src[i*3+1]), 0.0f, 65535.0f));
+int b = lrintf(av_clipf(65535.0f * rdpx(src[i*3+2]), 0.0f, 65535.0f));
+
+dstU[i] = (ru*r + gu*g + bu*b + (0x10001<<(RGB2YUV_SHIFT-1))) >> 
RGB2YUV_SHIFT;
+dstV[i] = (rv*r + gv*g + bv*b + (0x10001<<(RGB2YUV_SHIFT-1))) >> 
RGB2YUV_SHIFT;
+}
+}
+
+static av_always_inline void rgbf16ToY_endian(uint16_t *dst, const uint16_t 
*src, int is_be,
+  int width, int32_t *rgb2yuv, 
Half2FloatTables *h2f_tbl)
+{
+int32_t ry = rgb2yuv[RY_IDX], gy = rgb2yuv[GY_IDX], by = rgb2yuv[BY_IDX];
+int i;
+for (i = 0; i < width; i++) {
+int r = lrintf(av_clipf(65535.0f * rdpx(src[i*3+0]), 0.0f, 65535.0f));
+int g = lrintf(av_clipf(65535.0f * rdpx(src[i*3+1]), 0.0f, 65535.0f));
+int b = lrintf(av_clipf(65535.0f * rdpx(src[i*3+2]), 0.0f, 65535.0f));
+
+dst[i] = (ry*r + gy*g + by*b + (0x2001<<(RGB2YUV_SHIFT-1))) >> 
RGB2YUV_SHIFT;
+}
+}
+
 #undef rdpx
 
 #define rgbaf16_funcs_endian(endian_name, endian)  
   \
@@ -1408,7 +1459,37 @@ static void rgbaf16##endian_name##ToA_c(uint8_t *_dst, 
const uint8_t *_src, cons
 const uint16_t *src = (const uint16_t*)_src;   
   \
 uint16_t *dst = (uint16_t*)_dst;   
   \
 rgbaf16ToA_endian(dst, src, endian, width, opq);   
   \
-}
+}  
   \
+static void rgbf16##endian_name##ToUV_half_c(uint8_t *_dstU, uint8_t *_dstV, 
const uint8_t *unused,   \
+  const uint8_t *src1, const 
uint8_t *src2,   \
+  int width, uint32_t *_rgb2yuv, 
void *opq)   \
+{  
   \
+const uint16_t *src = (const uint16_t*)src1;   
   \
+uint16_t *dstU = (uint16_t*)_dstU; 
   \
+uint16_t *dstV = (uint16_t*)_dstV; 

[FFmpeg-cvslog] avutil: add RGBF16 pix_fmt

2024-10-14 Thread Martin Schitter
ffmpeg | branch: master | Martin Schitter  | Mon Oct 14 10:33:11 
2024 +0200| [c993a91bea88027a329eb7a743f1e8bd6f9c8cfb] | committer: Michael 
Niedermayer

avutil: add RGBF16 pix_fmt

Signed-off-by: Michael Niedermayer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c993a91bea88027a329eb7a743f1e8bd6f9c8cfb
---

 libavutil/pixdesc.c  | 25 +
 libavutil/pixfmt.h   |  4 
 libavutil/version.h  |  2 +-
 tests/ref/fate/imgutils  |  4 
 tests/ref/fate/sws-pixdesc-query | 11 +++
 5 files changed, 45 insertions(+), 1 deletion(-)

diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
index 43b9c08e14..e73600f208 100644
--- a/libavutil/pixdesc.c
+++ b/libavutil/pixdesc.c
@@ -2630,6 +2630,31 @@ static const AVPixFmtDescriptor 
av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
 { 0, 4, 0, 0, 8 },/* V */
 },
 },
+[AV_PIX_FMT_RGBF16BE] = {
+.name = "rgbf16be",
+.nb_components = 3,
+.log2_chroma_w = 0,
+.log2_chroma_h = 0,
+.comp = {
+{ 0, 6, 0, 0, 16 },   /* R */
+{ 0, 6, 2, 0, 16 },   /* G */
+{ 0, 6, 4, 0, 16 },   /* B */
+},
+.flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB |
+ AV_PIX_FMT_FLAG_FLOAT,
+},
+[AV_PIX_FMT_RGBF16LE] = {
+.name = "rgbf16le",
+.nb_components = 3,
+.log2_chroma_w = 0,
+.log2_chroma_h = 0,
+.comp = {
+{ 0, 6, 0, 0, 16 },   /* R */
+{ 0, 6, 2, 0, 16 },   /* G */
+{ 0, 6, 4, 0, 16 },   /* B */
+},
+.flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT
+},
 [AV_PIX_FMT_RGBAF16BE] = {
 .name = "rgbaf16be",
 .nb_components = 4,
diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h
index 3caa183ba0..21564b97ff 100644
--- a/libavutil/pixfmt.h
+++ b/libavutil/pixfmt.h
@@ -448,6 +448,9 @@ enum AVPixelFormat {
 AV_PIX_FMT_V30XBE,  ///< packed VYUX 4:4:4 like XV30, 32bpp, (msb)10V 
10Y 10U 2X(lsb), big-endian
 AV_PIX_FMT_V30XLE,  ///< packed VYUX 4:4:4 like XV30, 32bpp, (msb)10V 
10Y 10U 2X(lsb), little-endian
 
+AV_PIX_FMT_RGBF16BE,///< IEEE-754 half precision packed RGB 16:16:16, 
48bpp, RGBRGB..., big-endian
+AV_PIX_FMT_RGBF16LE,///< IEEE-754 half precision packed RGB 16:16:16, 
48bpp, RGBRGB..., little-endian
+
 AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you 
want to link with shared libav* because the number of formats might differ 
between versions
 };
 
@@ -553,6 +556,7 @@ enum AVPixelFormat {
 #define AV_PIX_FMT_P216   AV_PIX_FMT_NE(P216BE, P216LE)
 #define AV_PIX_FMT_P416   AV_PIX_FMT_NE(P416BE, P416LE)
 
+#define AV_PIX_FMT_RGBF16 AV_PIX_FMT_NE(RGBF16BE, RGBF16LE)
 #define AV_PIX_FMT_RGBAF16AV_PIX_FMT_NE(RGBAF16BE, RGBAF16LE)
 
 #define AV_PIX_FMT_RGBF32 AV_PIX_FMT_NE(RGBF32BE, RGBF32LE)
diff --git a/libavutil/version.h b/libavutil/version.h
index 7eca46cfe4..772addf716 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -79,7 +79,7 @@
  */
 
 #define LIBAVUTIL_VERSION_MAJOR  59
-#define LIBAVUTIL_VERSION_MINOR  42
+#define LIBAVUTIL_VERSION_MINOR  43
 #define LIBAVUTIL_VERSION_MICRO 100
 
 #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
diff --git a/tests/ref/fate/imgutils b/tests/ref/fate/imgutils
index fd5a510530..4c91358f5a 100644
--- a/tests/ref/fate/imgutils
+++ b/tests/ref/fate/imgutils
@@ -274,6 +274,8 @@ uyvaplanes: 1, linesizes: 256   0   0   0, 
plane_sizes: 12288 0
 vyu444  planes: 1, linesizes: 192   0   0   0, plane_sizes:  9216 
0 0 0, plane_offsets: 0 0 0, total_size: 9216
 v30xbe  planes: 1, linesizes: 256   0   0   0, plane_sizes: 12288 
0 0 0, plane_offsets: 0 0 0, total_size: 12288
 v30xle  planes: 1, linesizes: 256   0   0   0, plane_sizes: 12288 
0 0 0, plane_offsets: 0 0 0, total_size: 12288
+rgbf16beplanes: 1, linesizes: 384   0   0   0, plane_sizes: 18432 
0 0 0, plane_offsets: 0 0 0, total_size: 18432
+rgbf16leplanes: 1, linesizes: 384   0   0   0, plane_sizes: 18432 
0 0 0, plane_offsets: 0 0 0, total_size: 18432
 
 image_fill_black tests
 yuv420p total_size:   4608,  black_unknown_crc: 0xd00f6cc6,  
black_tv_crc: 0xd00f6cc6,  black_pc_crc: 0x234969af
@@ -495,3 +497,5 @@ uyvatotal_size:  12288,  black_unknown_crc: 
0xdd657297,  black_tv_cr
 vyu444  total_size:   9216,  black_unknown_crc: 0x575e6fb1,  
black_tv_crc: 0x575e6fb1,  black_pc_crc: 0x16564599
 v30xbe  total_size:  12288,  black_unknown_crc: 0x7108457c,  
black_tv_crc: 0x7108457c,  black_pc_crc: 0xdefcbbe0
 v30xle  total_size:  12288,  black_unknown_crc: 0xf5b3c795,  
black_tv_crc: 0xf5b3c795,  black_pc

[FFmpeg-cvslog] swscale/input: add input support for RGBF32

2024-10-14 Thread Martin Schitter
ffmpeg | branch: master | Martin Schitter  | Mon Oct 14 10:33:10 
2024 +0200| [c72a5c486ad7abac2cb430f9db900fccb8ee5513] | committer: Michael 
Niedermayer

swscale/input: add input support for RGBF32

Signed-off-by: Michael Niedermayer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c72a5c486ad7abac2cb430f9db900fccb8ee5513
---

 libswscale/input.c | 72 +++---
 libswscale/utils.c |  2 ++
 2 files changed, 71 insertions(+), 3 deletions(-)

diff --git a/libswscale/input.c b/libswscale/input.c
index 35c1fb771e..e2af1d5541 100644
--- a/libswscale/input.c
+++ b/libswscale/input.c
@@ -1170,6 +1170,46 @@ static av_always_inline void planar_rgbf32_to_y(uint8_t 
*_dst, const uint8_t *_s
 }
 }
 
+static av_always_inline void rgbf32_to_uv_c(uint8_t *_dstU, uint8_t *_dstV, 
const uint8_t *unused1,
+const uint8_t *_src, const uint8_t 
*unused2,
+int width, int is_be, int32_t 
*rgb2yuv)
+{
+int i;
+const float *src = (const float *)_src;
+uint16_t *dstU   = (uint16_t *)_dstU;
+uint16_t *dstV   = (uint16_t *)_dstV;
+int32_t ru = rgb2yuv[RU_IDX], gu = rgb2yuv[GU_IDX], bu = rgb2yuv[BU_IDX];
+int32_t rv = rgb2yuv[RV_IDX], gv = rgb2yuv[GV_IDX], bv = rgb2yuv[BV_IDX];
+
+for (i = 0; i < width; i++) {
+int r = lrintf(av_clipf(65535.0f * rdpx(&src[3*i]), 0.0f, 65535.0f));
+int g = lrintf(av_clipf(65535.0f * rdpx(&src[3*i + 1]), 0.0f, 
65535.0f));
+int b = lrintf(av_clipf(65535.0f * rdpx(&src[3*i + 2]), 0.0f, 
65535.0f));
+
+dstU[i] = (ru*r + gu*g + bu*b + (0x10001 << (RGB2YUV_SHIFT - 1))) >> 
RGB2YUV_SHIFT;
+dstV[i] = (rv*r + gv*g + bv*b + (0x10001 << (RGB2YUV_SHIFT - 1))) >> 
RGB2YUV_SHIFT;
+}
+}
+
+static av_always_inline void rgbf32_to_y_c(uint8_t *_dst, const uint8_t *_src,
+   const uint8_t *unused1, const 
uint8_t *unused2,
+   int width, int is_be, int32_t 
*rgb2yuv)
+{
+int i;
+const float *src = (const float *)_src;
+uint16_t *dst= (uint16_t *)_dst;
+
+int32_t ry = rgb2yuv[RY_IDX], gy = rgb2yuv[GY_IDX], by = rgb2yuv[BY_IDX];
+
+for (i = 0; i < width; i++) {
+int r = lrintf(av_clipf(65535.0f * rdpx(&src[3*i]), 0.0f, 65535.0f));
+int g = lrintf(av_clipf(65535.0f * rdpx(&src[3*i + 1]), 0.0f, 
65535.0f));
+int b = lrintf(av_clipf(65535.0f * rdpx(&src[3*i + 2]), 0.0f, 
65535.0f));
+
+dst[i] = (ry*r + gy*g + by*b + (0x2001 << (RGB2YUV_SHIFT - 1))) >> 
RGB2YUV_SHIFT;
+}
+}
+
 static av_always_inline void grayf32ToY16_c(uint8_t *_dst, const uint8_t 
*_src, const uint8_t *unused1,
 const uint8_t *unused2, int width, 
int is_be, uint32_t *unused)
 {
@@ -1226,7 +1266,7 @@ rgb9plus_planar_transparency_funcs(12)
 rgb9plus_planar_transparency_funcs(14)
 rgb9plus_planar_transparency_funcs(16)
 
-#define rgbf32_planar_funcs_endian(endian_name, endian)
 \
+#define rgbf32_funcs_endian(endian_name, endian)   
 \
 static void planar_rgbf32##endian_name##_to_y(uint8_t *dst, const uint8_t 
*src[4],  \
   int w, int32_t *rgb2yuv, 
void *opq)   \
 {  
 \
@@ -1243,6 +1283,20 @@ static void planar_rgbf32##endian_name##_to_a(uint8_t 
*dst, const uint8_t *src[4
 {  
 \
 planar_rgbf32_to_a(dst, src, w, endian, rgb2yuv);  
 \
 }  
 \
+static void rgbf32##endian_name##_to_y_c(uint8_t *dst, const uint8_t *src, 
 \
+ const uint8_t *unused1, const uint8_t 
*unused2,\
+ int w, uint32_t *rgb2yuv, void *opq)  
 \
+{  
 \
+rgbf32_to_y_c(dst, src, unused1, unused2, w, endian, rgb2yuv); 
 \
+}  
 \
+static void rgbf32##endian_name##_to_uv_c(uint8_t *dstU, uint8_t *dstV,
 \
+const uint8_t *unused1,
 \
+const uint8_t *src, const uint8_t 
*unused2, \
+int w, uint32_t *rgb2yuv,