[FFmpeg-devel] [PATCH 2/3] lavf/aiffdec: don't stop parsing after SSND chunk

Matthieu Bouron matthieu.bouron at gmail.com
Sun Jul 1 22:37:24 CEST 2012


On Sun, Jul 01, 2012 at 08:59:04PM +0200, Michael Niedermayer wrote:
> On Sun, Jul 01, 2012 at 08:10:45PM +0200, Matthieu Bouron wrote:
> > On Sun, Jul 01, 2012 at 04:18:58PM +0200, Michael Niedermayer wrote:
> > > On Sun, Jul 01, 2012 at 11:16:42AM +0200, Matthieu Bouron wrote:
> > > > Some file has ID3 chunk placed after SSND.
> > > > ---
> > > >  libavformat/aiffdec.c | 2 --
> > > >  1 file changed, 2 deletions(-)
> > > > 
> > > > diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c
> > > > index 4083316..9764f82 100644
> > > > --- a/libavformat/aiffdec.c
> > > > +++ b/libavformat/aiffdec.c
> > > > @@ -251,8 +251,6 @@ static int aiff_read_header(AVFormatContext *s)
> > > >              offset = avio_rb32(pb);      /* Offset of sound data */
> > > >              avio_rb32(pb);               /* BlockSize... don't care */
> > > >              offset += avio_tell(pb);    /* Compute absolute data offset */
> > > > -            if (st->codec->block_align)    /* Assume COMM already parsed */
> > > > -                goto got_sound;
> > > >              if (!pb->seekable) {
> > > >                  av_log(s, AV_LOG_ERROR, "file is not seekable\n");
> > > >                  return -1;
> > > 
> > > this will probably cause the whole file to be read in
> > > aiff_read_header() in some cases
> > > 
> > Yes, this will cause ffmpeg to seek at the start of every chunks.
> > This is required for some file (for example aiff files purchased from
> > beatport.com) which has their ID3 chunk after the SSND chunk.
> > 
> > Maybe a better solution would be to add an option which tell the demuxer to
> > look for other chunks after SSND ?
> 
> where is the id3 chunk exactly in relation to the audio data and
> other chunks as well as offset ?
> 

In my case, the ID3 chunk is placed after the entire SSND chunk (including
audio data). Anyway i didn't find any documentations which specify that
the ID3 chunk should be before or after the SSND chunk (or another type of
chunk).

Here is the documentation i used:
 - http://www-mmsp.ece.mcgill.ca/documents/audioformats/aiff/aiff.html
 - http://en.wikipedia.org/wiki/ID3 (Implementation in non-mp3s and
alternatives chapter)


More information about the ffmpeg-devel mailing list