|
发表于 2008-5-3 22:39:54
|
显示全部楼层
看看FAAD的 就知道了,呵呵
/* get AAC infos for printing */
header_type = 0;
if ((b.buffer[0] == 0xFF) && ((b.buffer[1] & 0xF6) == 0xF0))
{
adts_parse(&b, &bitrate, &length);
fseek(b.infile, tagsize, SEEK_SET);
bread = fread(b.buffer, 1, FAAD_MIN_STREAMSIZE*MAX_CHANNELS, b.infile);
if (bread != FAAD_MIN_STREAMSIZE*MAX_CHANNELS)
b.at_eof = 1;
else
b.at_eof = 0;
b.bytes_into_buffer = bread;
b.bytes_consumed = 0;
b.file_offset = tagsize;
header_type = 1;
} else if (memcmp(b.buffer, "ADIF", 4) == 0) {
int skip_size = (b.buffer[4] & 0x80) ? 9 : 0;
bitrate = ((unsigned int)(b.buffer[4 + skip_size] & 0x0F)<<19) |
((unsigned int)b.buffer[5 + skip_size]<<11) |
((unsigned int)b.buffer[6 + skip_size]<<3) |
((unsigned int)b.buffer[7 + skip_size] & 0xE0);
length = (float)fileread;
if (length != 0)
{
length = ((float)length*8.f)/((float)bitrate) + 0.5f;
}
bitrate = (int)((float)bitrate/1000.0f + 0.5f);
header_type = 2;
} |
|