5152{
5154 short *data;
5156 if (v == nullptr) return -1;
5159 if (sample_rate)
5162 total = limit;
5163 data = (
short *)
fl::malloc(total *
sizeof(*data));
5164 if (data == nullptr) {
5166 return -2;
5167 }
5168 for (;;) {
5170 if (n == 0) break;
5171 data_len += n;
5173 if (
offset + limit > total) {
5174 short *data2;
5175 total *= 2;
5176 data2 = (
short *)
fl::realloc(data, total *
sizeof(*data));
5177 if (data2 == nullptr) {
5180 return -2;
5181 }
5182 data = data2;
5183 }
5184 }
5185 *output = data;
5187 return data_len;
5188}
fl::UISlider offset("Offset", 0.0f, 0.0f, 1.0f, 0.01f)
static int32_t error(vorb *f, enum STBVorbisError e) FL_NO_EXCEPT
int32_t stb_vorbis_get_frame_short_interleaved(stb_vorbis *f, int32_t num_c, short *buffer, int32_t num_shorts) FL_NO_EXCEPT
stb_vorbis * stb_vorbis_open_memory(const unsigned char *data, int32_t len, int32_t *error, const stb_vorbis_alloc *alloc) FL_NO_EXCEPT
void stb_vorbis_close(stb_vorbis *p) FL_NO_EXCEPT
FASTLED_FORCE_INLINE void free(void *ptr) FL_NO_EXCEPT
FASTLED_FORCE_INLINE void * malloc(size_t size) FL_NO_EXCEPT
FASTLED_FORCE_INLINE void * realloc(void *ptr, size_t new_size) FL_NO_EXCEPT