--- 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