5112{
5114 short *data;
5116 if (v == nullptr) return -1;
5119 if (sample_rate)
5122 total = limit;
5123 data = (
short *)
fl::malloc(total *
sizeof(*data));
5124 if (data == nullptr) {
5126 return -2;
5127 }
5128 for (;;) {
5130 if (n == 0) break;
5131 data_len += n;
5133 if (
offset + limit > total) {
5134 short *data2;
5135 total *= 2;
5136 data2 = (
short *)
fl::realloc(data, total *
sizeof(*data));
5137 if (data2 == nullptr) {
5140 return -2;
5141 }
5142 data = data2;
5143 }
5144 }
5145 *output = data;
5147 return data_len;
5148}
fl::UISlider offset("Offset", 0.0f, 0.0f, 1.0f, 0.01f)
static int32_t error(vorb *f, enum STBVorbisError e) FL_NO_EXCEPT
stb_vorbis * stb_vorbis_open_filename(const char *filename, int32_t *error, const stb_vorbis_alloc *alloc)
int32_t stb_vorbis_get_frame_short_interleaved(stb_vorbis *f, int32_t num_c, short *buffer, int32_t num_shorts) 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