FastLED 3.10.6
Loading...
Searching...
No Matches

◆ decodeToAudioSamples()

fl::vector< audio::Sample > fl::third_party::Mp3Minimp3Decoder::decodeToAudioSamples ( const fl::u8 * data,
fl::size len )

Definition at line 240 of file mp3.cpp.hpp.

241 {
242 fl::vector<audio::Sample> samples;
243
244 decode(data, len, [&](const Mp3Frame& frame) {
245 if (frame.channels == 2) {
246 fl::vector<fl::i16> mono_pcm;
247 mono_pcm.reserve(frame.samples);
248 for (int i = 0; i < frame.samples; ++i) {
249 const fl::i32 left = frame.pcm[i * 2];
250 const fl::i32 right = frame.pcm[i * 2 + 1];
251 mono_pcm.push_back(static_cast<fl::i16>((left + right) / 2));
252 }
253 samples.push_back(audio::Sample(mono_pcm));
254 } else {
255 samples.push_back(
256 audio::Sample(fl::span<const fl::i16>(frame.pcm,
257 frame.samples)));
258 }
259 });
260
261 return samples;
262}
int decode(const fl::u8 *data, fl::size len, Fn on_frame) FL_NO_EXCEPT
Definition mp3.h:75
void reserve(fl::size n) FL_NO_EXCEPT
Definition vector.h:591
void push_back(const T &value) FL_NO_EXCEPT
Definition vector.h:624

References fl::third_party::Mp3Frame::channels, decode(), fl::FL_NO_EXCEPT, fl::third_party::Mp3Frame::pcm, fl::vector< T >::push_back(), fl::vector< T >::reserve(), and fl::third_party::Mp3Frame::samples.

+ Here is the call graph for this function: