* [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