--- Dan Sully <[EMAIL PROTECTED]> wrote:
> * Josh Coalson <[EMAIL PROTECTED]> 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
_______________________________________________
Flac-dev mailing list
[EMAIL PROTECTED]
http://lists.xiph.org/mailman/listinfo/flac-dev

Reply via email to