[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