Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH 1/2] lavc/texturedsp: fix premult2straight inversion
@ 2024-02-02  0:33 Connor Worley
  2024-02-02  0:34 ` [FFmpeg-devel] [PATCH 2/2] lavc/dxv: treat DXT5-tagged files as DXT4 Connor Worley
  0 siblings, 1 reply; 3+ messages in thread
From: Connor Worley @ 2024-02-02  0:33 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Connor Worley

This function should convert premultiplied alpha to straight, but does the opposite.

Signed-off-by: Connor Worley <connorbworley@gmail.com>
---
 libavcodec/texturedsp.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/texturedsp.c b/libavcodec/texturedsp.c
index 5fb79937da..1b8237e9f7 100644
--- a/libavcodec/texturedsp.c
+++ b/libavcodec/texturedsp.c
@@ -175,9 +175,9 @@ static av_always_inline void premult2straight(uint8_t *src)
     int b = src[2];
     int a = src[3]; /* unchanged */
 
-    src[0] = (uint8_t) r * a / 255;
-    src[1] = (uint8_t) g * a / 255;
-    src[2] = (uint8_t) b * a / 255;
+    src[0] = (uint8_t) FFMIN(r * 255 / a, 255);
+    src[1] = (uint8_t) FFMIN(g * 255 / a, 255);
+    src[2] = (uint8_t) FFMIN(b * 255 / a, 255);
 }
 
 /**
-- 
2.40.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [FFmpeg-devel] [PATCH 2/2] lavc/dxv: treat DXT5-tagged files as DXT4
  2024-02-02  0:33 [FFmpeg-devel] [PATCH 1/2] lavc/texturedsp: fix premult2straight inversion Connor Worley
@ 2024-02-02  0:34 ` Connor Worley
  2024-02-02  0:53   ` Connor Worley
  0 siblings, 1 reply; 3+ messages in thread
From: Connor Worley @ 2024-02-02  0:34 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Connor Worley

DXV files seem to misnomer DXT5 and really encode DXT4 with premultiplied alpha.
At least, this is what Resolume alley does. To check, encode some input with alpha
as "Normal Quality, With Alpha" in Alley, then decode the output with this change
-- results are true to the original input compared to git-master.

Signed-off-by: Connor Worley <connorbworley@gmail.com>
---
 libavcodec/dxv.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/dxv.c b/libavcodec/dxv.c
index 5923811b29..1e6791e63f 100644
--- a/libavcodec/dxv.c
+++ b/libavcodec/dxv.c
@@ -1074,7 +1074,8 @@ static int dxv_decode(AVCodecContext *avctx, AVFrame *frame,
         break;
     case MKBETAG('D', 'X', 'T', '5'):
         decompress_tex = dxv_decompress_dxt5;
-        ctx->tex_funct = ctx->texdsp.dxt5_block;
+        /* DXV misnomers DXT5, alpha is premultiplied so use DXT4 instead */
+        ctx->tex_funct = ctx->texdsp.dxt4_block;
         ctx->tex_rat   = 4;
         ctx->tex_step  = 16;
         msgcomp = "DXTR5";
-- 
2.40.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/2] lavc/dxv: treat DXT5-tagged files as DXT4
  2024-02-02  0:34 ` [FFmpeg-devel] [PATCH 2/2] lavc/dxv: treat DXT5-tagged files as DXT4 Connor Worley
@ 2024-02-02  0:53   ` Connor Worley
  0 siblings, 0 replies; 3+ messages in thread
From: Connor Worley @ 2024-02-02  0:53 UTC (permalink / raw)
  To: ffmpeg-devel

[-- Attachment #1: Type: text/plain, Size: 332 bytes --]

Attached is a comparison of the input and decoding with DXT4 and DXT5.

DXT5 produces dark outlines that are not present in the input.

Also, I have a prototype "Normal Quality, With Alpha" encoder that produces
nasty results in Resolume unless alpha is premultiplied. All of this points
to DXV misnomering DXT5.

-- 
Connor Worley

[-- Attachment #2: DXT4_5_comparison.png --]
[-- Type: image/png, Size: 602683 bytes --]

[-- Attachment #3: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-02-02  0:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-02  0:33 [FFmpeg-devel] [PATCH 1/2] lavc/texturedsp: fix premult2straight inversion Connor Worley
2024-02-02  0:34 ` [FFmpeg-devel] [PATCH 2/2] lavc/dxv: treat DXT5-tagged files as DXT4 Connor Worley
2024-02-02  0:53   ` Connor Worley

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git