[Flac-dev] Finding start of audio data using metadata level 2 interface.

Josh Coalson xflac at yahoo.com
Mon Sep 27 11:51:41 PDT 2004


--- Dan Sully <daniel at electricrain.com> wrote:
> * Josh Coalson <xflac at yahoo.com> shaped the electrons to say...
> 
> >not exactly.  the metadata interface won't tell you, but you
> >can create a decoder (say file decoder), set it up, then call
> >
> >  FLAC__file_decoder_process_until_end_of_metadata(...)
> >  FLAC__file_decoder_get_decode_position(...)
> >
> >and that will tell you.  the decode position is relative to
> >the start of the file even if you have an id3v2 tag in front.
> 
> Yeah, I was trying to avoid doing that. This is meant for some fast
> (as
> opposed to the current pure perl version) header parsing only code,
> not doing
> a decoder in this piece as well.
> 
> It looks like FLAC__Metadata_Chain has a last_offset - but it's not
> exposed.
> That should theoretically give me the position after the last
> metadata block?

yep, that will work too.  but just writing skipping code is
pretty simple:

is_last=0
read 'fLaC' string
while (!is_last) {
   read 1 byte metadata block type
   read 3 byte metadata block length
   is_last = type & 0x80
   fseek(file,length,SEEK_CUR)
}
last_offset=ftell(file)

see also:
  http://flac.sourceforge.net/format.html#metadata_block_header
'length' is big-endian

Josh



		
_______________________________
Do you Yahoo!?
Declare Yourself - Register online to vote today!
http://vote.yahoo.com


More information about the Flac-dev mailing list