FastLED 3.9.15
Loading...
Searching...
No Matches

◆ decodeToAudioSamples()

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

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

96 {
97 fl::vector<audio::Sample> samples;
98
99 decode(data, len, [&](const Mp3Frame& frame) {
100 // Convert stereo to mono by averaging channels
101 if (frame.channels == 2) {
102 fl::vector<fl::i16> mono_pcm;
103 mono_pcm.reserve(frame.samples);
104
105 for (int i = 0; i < frame.samples; i++) {
106 fl::i32 left = frame.pcm[i * 2];
107 fl::i32 right = frame.pcm[i * 2 + 1];
108 fl::i32 avg = (left + right) / 2;
109 mono_pcm.push_back(static_cast<fl::i16>(avg));
110 }
111
112 audio::Sample sample(mono_pcm);
113 samples.push_back(sample);
114 } else {
115 // Mono audio - use directly
116 audio::Sample sample(fl::span<const fl::i16>(frame.pcm, frame.samples));
117 samples.push_back(sample);
118 }
119 });
120
121 return samples;
122}
int decode(const fl::u8 *data, fl::size len, Fn on_frame)
Definition mp3.h:64
void reserve(fl::size n) FL_NOEXCEPT
Definition vector.h:591
void push_back(const T &value) FL_NOEXCEPT
Definition vector.h:624
CRGB sample(const CRGB *grid, const XYMap &xyMap, float x, float y, SampleMode mode)
Sample a pixel from a 2D CRGB grid at floating-point coordinates.
Definition sample.cpp.hpp:9

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

+ Here is the call graph for this function: