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] avcodec/alsdec: Allow the user to set a maximum prediction order
@ 2025-07-22  1:48 Michael Niedermayer
  2025-07-22  1:48 ` [FFmpeg-devel] [PATCH 2/2] tools/target_dec_fuzzer: Set ALS max order to 15 (ALS simple profile) Michael Niedermayer
  2025-07-28 15:38 ` [FFmpeg-devel] [PATCH 1/2] avcodec/alsdec: Allow the user to set a maximum prediction order Michael Niedermayer
  0 siblings, 2 replies; 3+ messages in thread
From: Michael Niedermayer @ 2025-07-22  1:48 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

The only offical profile i could find (ALS simple profile) has a max of 15 while the bitstream allows 1023
which is very slow.

We do have a fate sample with 1023

Fixes: Timeout
Fixes: 429645375/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_ALS_fuzzer-5377900448907264

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/alsdec.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c
index 97b04a95f96..231d4ce52d6 100644
--- a/libavcodec/alsdec.c
+++ b/libavcodec/alsdec.c
@@ -38,6 +38,7 @@
 #include "internal.h"
 #include "mlz.h"
 #include "libavutil/mem.h"
+#include "libavutil/opt.h"
 #include "libavutil/samplefmt.h"
 #include "libavutil/crc.h"
 #include "libavutil/softfloat_ieee754.h"
@@ -194,6 +195,7 @@ typedef struct ALSChannelData {
 
 
 typedef struct ALSDecContext {
+    AVClass        *av_class;
     AVCodecContext *avctx;
     ALSSpecificConfig sconf;
     GetBitContext gb;
@@ -239,6 +241,7 @@ typedef struct ALSDecContext {
     unsigned char *larray;          ///< buffer to store the output of masked lz decompression
     int *nbits;                     ///< contains the number of bits to read for masked lz decompression for all samples
     int highest_decoded_channel;
+    int user_max_order;             ///< user specified maximum prediction order
 } ALSDecContext;
 
 
@@ -352,6 +355,11 @@ static av_cold int read_specific_config(ALSDecContext *ctx)
     skip_bits(&gb, 5);       // skip 5 reserved bits
     skip_bits1(&gb);         // skip aux_data_enabled
 
+    if (sconf->max_order > ctx->user_max_order) {
+        av_log(avctx, AV_LOG_ERROR, "order %d exceeds specified max %d\n", sconf->max_order, ctx->user_max_order);
+        return AVERROR_INVALIDDATA;
+    }
+
 
     // check for ALSSpecificConfig struct
     if (als_id != MKBETAG('A','L','S','\0'))
@@ -2183,6 +2191,17 @@ static av_cold void flush(AVCodecContext *avctx)
     ctx->frame_id = 0;
 }
 
+static const AVOption options[] = {
+    { "max_order", "Sets the maximum order (ALS simple profile allows max 15)", offsetof(ALSDecContext, user_max_order), AV_OPT_TYPE_INT, { .i64 = 1023 }, 0, 1023, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_DECODING_PARAM },
+    { NULL }
+};
+
+static const AVClass als_class = {
+    .class_name = "als",
+    .item_name  = av_default_item_name,
+    .option     = options,
+    .version    = LIBAVUTIL_VERSION_INT,
+};
 
 const FFCodec ff_als_decoder = {
     .p.name         = "als",
@@ -2193,6 +2212,7 @@ const FFCodec ff_als_decoder = {
     .init           = decode_init,
     .close          = decode_end,
     FF_CODEC_DECODE_CB(decode_frame),
+    .p.priv_class   = &als_class,
     .flush          = flush,
     .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF,
     .caps_internal  = FF_CODEC_CAP_INIT_CLEANUP,
-- 
2.49.0

_______________________________________________
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] tools/target_dec_fuzzer: Set ALS max order to 15 (ALS simple profile)
  2025-07-22  1:48 [FFmpeg-devel] [PATCH 1/2] avcodec/alsdec: Allow the user to set a maximum prediction order Michael Niedermayer
@ 2025-07-22  1:48 ` Michael Niedermayer
  2025-07-28 15:38 ` [FFmpeg-devel] [PATCH 1/2] avcodec/alsdec: Allow the user to set a maximum prediction order Michael Niedermayer
  1 sibling, 0 replies; 3+ messages in thread
From: Michael Niedermayer @ 2025-07-22  1:48 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Fixes: Timeout
Fixes: 429645375/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_ALS_fuzzer-5377900448907264

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 tools/target_dec_fuzzer.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/target_dec_fuzzer.c b/tools/target_dec_fuzzer.c
index 96d65c7b69e..dcfc64b18a3 100644
--- a/tools/target_dec_fuzzer.c
+++ b/tools/target_dec_fuzzer.c
@@ -265,7 +265,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
     case AV_CODEC_ID_LSCR:        maxpixels  /= 16;    break;
     case AV_CODEC_ID_MMVIDEO:     maxpixels  /= 256;   break;
     case AV_CODEC_ID_MOTIONPIXELS:maxpixels  /= 256;   break;
-    case AV_CODEC_ID_MP4ALS:      maxsamples /= 65536; break;
+    case AV_CODEC_ID_MP4ALS:      maxsamples /= 65536;
+                                  av_dict_set_int(&opts, "max_order", 15, 0);
+                                  break;
     case AV_CODEC_ID_MSA1:        maxpixels  /= 16384; break;
     case AV_CODEC_ID_MSCC:        maxpixels  /= 4096;  break;
     case AV_CODEC_ID_MSRLE:       maxpixels  /= 16;    break;
-- 
2.49.0

_______________________________________________
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 1/2] avcodec/alsdec: Allow the user to set a maximum prediction order
  2025-07-22  1:48 [FFmpeg-devel] [PATCH 1/2] avcodec/alsdec: Allow the user to set a maximum prediction order Michael Niedermayer
  2025-07-22  1:48 ` [FFmpeg-devel] [PATCH 2/2] tools/target_dec_fuzzer: Set ALS max order to 15 (ALS simple profile) Michael Niedermayer
@ 2025-07-28 15:38 ` Michael Niedermayer
  1 sibling, 0 replies; 3+ messages in thread
From: Michael Niedermayer @ 2025-07-28 15:38 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 922 bytes --]

On Tue, Jul 22, 2025 at 03:48:38AM +0200, Michael Niedermayer wrote:
> The only offical profile i could find (ALS simple profile) has a max of 15 while the bitstream allows 1023
> which is very slow.
> 
> We do have a fate sample with 1023
> 
> Fixes: Timeout
> Fixes: 429645375/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_ALS_fuzzer-5377900448907264
> 
> Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>  libavcodec/alsdec.c | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)

will apply patchset

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Many things microsoft did are stupid, but not doing something just because
microsoft did it is even more stupid. If everything ms did were stupid they
would be bankrupt already.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: 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:[~2025-07-28 15:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-07-22  1:48 [FFmpeg-devel] [PATCH 1/2] avcodec/alsdec: Allow the user to set a maximum prediction order Michael Niedermayer
2025-07-22  1:48 ` [FFmpeg-devel] [PATCH 2/2] tools/target_dec_fuzzer: Set ALS max order to 15 (ALS simple profile) Michael Niedermayer
2025-07-28 15:38 ` [FFmpeg-devel] [PATCH 1/2] avcodec/alsdec: Allow the user to set a maximum prediction order Michael Niedermayer

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