[FFmpeg-devel] [PATCH 2/2] libmodplug: add an option to enlarge the max supported file size.

Michael Niedermayer michaelni at gmx.at
Thu Oct 6 00:22:34 CEST 2011


On Wed, Oct 05, 2011 at 11:38:06PM +0200, Clément Bœsch wrote:
> On Wed, Oct 05, 2011 at 11:05:52PM +0200, Clément Bœsch wrote:
> > On Wed, Oct 05, 2011 at 10:49:44PM +0200, Clément Bœsch wrote:
> > > ---
> > >  libavformat/libmodplug.c |   24 ++++++++++++++++++++++--
> > >  1 files changed, 22 insertions(+), 2 deletions(-)
> > > 
> > 
> > Mmh, please forget this one, better one incoming.
> > 
> 
> New patch attached, sorry for the noise.
> 
> -- 
> Clément B.

>  libmodplug.c |   26 ++++++++++++++++++++++++--
>  1 file changed, 24 insertions(+), 2 deletions(-)
> 9c6e2b41e7108469661940bc280e32aef64e1aea  0002-libmodplug-add-an-option-to-enlarge-the-max-supporte.patch
> From 0fe4a532f0643e494436b5678189b558aa2639c5 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= <ubitux at gmail.com>
> Date: Wed, 5 Oct 2011 22:47:46 +0200
> Subject: [PATCH 2/2] libmodplug: add an option to enlarge the max supported
>  file size.
> 
> ---
>  libavformat/libmodplug.c |   26 ++++++++++++++++++++++++--
>  1 files changed, 24 insertions(+), 2 deletions(-)
> 
> diff --git a/libavformat/libmodplug.c b/libavformat/libmodplug.c
> index 2f7c4fa..e70fbae 100644
> --- a/libavformat/libmodplug.c
> +++ b/libavformat/libmodplug.c
> @@ -29,7 +29,7 @@
>  typedef struct ModPlugContext {
>      const AVClass *class;
>      ModPlugFile *f;
> -    uint8_t buf[5 * 1<<20]; ///< input file content, 5M max
> +    uint8_t *buf; ///< input file content
>  
>      /* options */
>      int noise_reduction;
> @@ -39,8 +39,13 @@ typedef struct ModPlugContext {
>      int bass_range;
>      int surround_depth;
>      int surround_delay;
> +
> +    int max_size; ///< max file size to allocate
>  } ModPlugContext;
>  
> +#define FF_MODPLUG_MAX_FILE_SIZE (100 * 1<<20) // 100M
> +#define FF_MODPLUG_DEF_FILE_SIZE (  5 * 1<<20) //   5M
> +
>  #define OFFSET(x) offsetof(ModPlugContext, x)
>  #define D AV_OPT_FLAG_DECODING_PARAM
>  static const AVOption options[] = {
> @@ -51,6 +56,8 @@ static const AVOption options[] = {
>      {"bass_range",      "XBass cutoff in Hz 10-100",            OFFSET(bass_range),      FF_OPT_TYPE_INT, {.i64 = 0}, 0,     100, D},
>      {"surround_depth",  "Surround level 0(quiet)-100(heavy)",   OFFSET(surround_depth),  FF_OPT_TYPE_INT, {.i64 = 0}, 0,     100, D},
>      {"surround_delay",  "Surround delay in ms, usually 5-40ms", OFFSET(surround_delay),  FF_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, D},
> +    {"max_size",        "Max file size supported (in bytes). Default is 5MB. Set to 0 for no limit (not recommended)",
> +     OFFSET(max_size), FF_OPT_TYPE_INT, {.i64 = FF_MODPLUG_DEF_FILE_SIZE}, 0, FF_MODPLUG_MAX_FILE_SIZE, D},
>      {NULL},
>  };
>  
> @@ -67,8 +74,23 @@ static int modplug_read_header(AVFormatContext *s, AVFormatParameters *ap)
>      AVIOContext *pb = s->pb;
>      ModPlug_Settings settings;
>      ModPlugContext *modplug = s->priv_data;
> +    int sz = avio_size(pb);
>  
> -    int sz = avio_read(pb, modplug->buf, sizeof(modplug->buf));
> +    if (sz < 0) {
> +        av_log(s, AV_LOG_WARNING, "Could not determine file size\n");

> +        if (modplug->max_size != FF_MODPLUG_DEF_FILE_SIZE)
> +            sz = modplug->max_size;
> +        else
> +            sz = FF_MODPLUG_DEF_FILE_SIZE;

sz = modplug->max_size;


> +    } else if (modplug->max_size && sz > modplug->max_size) {
> +        sz = modplug->max_size;
> +        av_log(s, AV_LOG_WARNING, "Max file size reach%s, allocating %dB\n",
> +               sz == FF_MODPLUG_DEF_FILE_SIZE ? " (see -max_size)" : "", sz);
> +    }

does this work for any file ?
i would have thought many mod file formats are sensitiv to being
truncated

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

In a rich man's house there is no place to spit but his face.
-- Diogenes of Sinope
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20111006/3c84fac4/attachment.asc>


More information about the ffmpeg-devel mailing list