Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "id3v2.h"
00023
00024 int ff_id3v2_match(const uint8_t *buf)
00025 {
00026 return buf[0] == 'I' &&
00027 buf[1] == 'D' &&
00028 buf[2] == '3' &&
00029 buf[3] != 0xff &&
00030 buf[4] != 0xff &&
00031 (buf[6] & 0x80) == 0 &&
00032 (buf[7] & 0x80) == 0 &&
00033 (buf[8] & 0x80) == 0 &&
00034 (buf[9] & 0x80) == 0;
00035 }
00036
00037 int ff_id3v2_tag_len(const uint8_t * buf)
00038 {
00039 int len = ((buf[6] & 0x7f) << 21) +
00040 ((buf[7] & 0x7f) << 14) +
00041 ((buf[8] & 0x7f) << 7) +
00042 (buf[9] & 0x7f) +
00043 ID3v2_HEADER_SIZE;
00044 if (buf[5] & 0x10)
00045 len += ID3v2_HEADER_SIZE;
00046 return len;
00047 }