[FFmpeg-devel] [PATCH] au: add duration info

Stefano Sabatini stefano.sabatini-lala at poste.it
Wed Jul 13 11:44:11 CEST 2011


On date Tuesday 2011-07-12 02:10:26 +0200, ami_stuff encoded:
> Hi,
> 
> The attached patch adds duration info to the au demuxer
> and fixes issue #1755.
> 
> The modified code is based on the code from wav demuxer,
> please feel free to modify it to your needs.
> 
> Regards

> diff --git a/libavformat/au.c b/libavformat/au.c
> index 23365c4..cf6ad7b 100644
> --- a/libavformat/au.c
> +++ b/libavformat/au.c
> @@ -120,7 +120,7 @@ static int au_probe(AVProbeData *p)
>  static int au_read_header(AVFormatContext *s,
>                            AVFormatParameters *ap)
>  {
> -    int size;
> +    int size, av_uninit(data_size);

or initialize it to 0 (less ugly than av_uninit), no performance
sensitive.

>      unsigned int tag;
>      AVIOContext *pb = s->pb;
>      unsigned int id, channels, rate;
> @@ -132,7 +132,12 @@ static int au_read_header(AVFormatContext *s,
>      if (tag != MKTAG('.', 's', 'n', 'd'))
>          return -1;
>      size = avio_rb32(pb); /* header size */
> -    avio_rb32(pb); /* data size */
> +    data_size = avio_rb32(pb); /* data size */

the comment is redundant, but you may specify the unit of the size
(bits/bytes)

> +    
> +    if (data_size < 0) {
> +        av_log(s, AV_LOG_ERROR, "negative data_size");
> +        return AVERROR_INVALIDDATA;
> +    }
>  
>      id = avio_rb32(pb);
>      rate = avio_rb32(pb);
> @@ -159,6 +164,10 @@ static int au_read_header(AVFormatContext *s,
>      st->codec->codec_id = codec;
>      st->codec->channels = channels;
>      st->codec->sample_rate = rate;
> +    

> +    if(data_size)
> +    st->duration  =  (data_size<<3) / (st->codec->channels * (uint64_t)av_get_bits_per_sample(st->codec->codec_id));

style:
    if_(...)
        st->duration = ...   

Looks OK otherwise.

> +    
>      av_set_pts_info(st, 64, 1, rate);
>      return 0;
>  }
-- 
FFmpeg = Foolish & Fast Merciful Picky Excellent Guru


More information about the ffmpeg-devel mailing list