[FFmpeg-devel] [PATCH] smv detection in wav demuxer

Benjamin Larsson banan
Mon Sep 15 12:50:43 CEST 2008


Hi.

Jesse L. Zamora wrote:
> Hello,
>
> This patch allows the wav.c demuxer detect the wav file to see if it's an SMV. 
> It exits if it detects that it's an smv file.
>
> Xtreme Kommander
>   

> ------------------------------------------------------------------------
>
> --- wav.c	2008-09-14 19:49:51.000000000 -0400
> +++ wav2.c	2008-09-14 19:49:16.000000000 -0400
> @@ -147,12 +147,22 @@ static int wav_probe(AVProbeData *p)
>          p->buf[2] == 'F' && p->buf[3] == 'F' &&
>          p->buf[8] == 'W' && p->buf[9] == 'A' &&
>          p->buf[10] == 'V' && p->buf[11] == 'E')
> +    {
>          /*
>            Since ACT demuxer has standard WAV header at top of it's own,
>            returning score is decreased to avoid probe conflict
>            between ACT and WAV.
>          */
> +
> +        /* It is now necessary to check to see if it's an SMV... */
> +        if(strcmp(p->filename + (sizeof(p->filename) - 4), ".smv") != 0)
> +        {
> +            printf("warning: by the extension (.smv), this file implies that it is not WAV!\n");
>   

printf is not allowed.

> +            return AVPROBE_SCORE_MAX / 2;
> +        }
> +
>          return AVPROBE_SCORE_MAX - 1;
> +    }
>      else
>          return 0;
>  }
> @@ -194,6 +204,20 @@ static int wav_read_header(AVFormatConte
>      if (size < 0)
>          return -1;
>      wav->data_end= url_ftell(pb) + size;
> +
> +    /* Check to make sure that the file IS NOT smv! 
> +       Since the SMV format begins with a WAV file,
> +       it is easily mistaken for one. */
> +    unsigned char smv_header_buffer[10];
> +
> +    url_fseek(pb, wav->data_end, SEEK_SET);
>   

This breaks streaming of wav files.

> +    get_buffer(pb, smv_header_buffer, 9);
> +    if(strcmp(smv_header_buffer, "SMV002000"))
> +    {
> +        av_log(s, AV_LOG_ERROR, "This file is SMV! Use -f smv instead.");
> +        return -1;
> +    }
> +
>      return 0;
>  }
>  


I think the most clean way to do this is to let the smv probe return a 
higher score then the wav probe. And let the smv probe only act on the 
suffix on the filename(.smv). This would keep the wav stuff working 
while still enabling automatic detection of smv when the filename is 
correct. If implemented as proposed the only change needed in the 
wav_probe is an addition to the probe score.

MvH
Benjamin Larsson






More information about the ffmpeg-devel mailing list