4112{
4116
4117
4118
4120 if (data_len < 4) return 0;
4121 data_len -= 3;
4122
4123 for (i=0; i < data_len; ++i) {
4124 if (data[i] == 0x4f) {
4128
4129 if (i+26 >= data_len || i+27+data[i+26] >= data_len) {
4130
4131
4132 data_len = i;
4133 break;
4134 }
4135
4136 len = 27 + data[i+26];
4137 for (j=0; j < data[i+26]; ++j)
4138 len += data[i+27+j];
4139
4140 crc = 0;
4141 for (j=0; j < 22; ++j)
4143
4144 for ( ; j < 26; ++j)
4146
4151
4152
4153 if (data[i+27+data[i+26]-1] == 255)
4155 else
4159 break;
4160
4161 }
4162 }
4163 }
4164 }
4165
4171 if (m > data_len - n) m = data_len - n;
4172
4174 for (j=0; j < m; ++j)
4179
4181
4182 data_len = n+m;
4187
4189 return data_len;
4190 }
4191
4193 } else {
4194 ++i;
4195 }
4196 }
4197
4198 return data_len;
4199}
static uint8 ogg_page_header[4]
int memcmp(const void *s1, const void *s2, size_t n) FL_NOEXCEPT
FL_ALWAYS_INLINE uint32 crc32_update(uint32 crc, uint8 byte) FL_NOEXCEPT
int32_t current_loc_valid
CRCscan scan[FL_STB_VORBIS_PUSHDATA_CRC_COUNT]
#define FL_STB_VORBIS_PUSHDATA_CRC_COUNT