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

◆ decode()

template<typename Fn>
int fl::third_party::Mp3Minimp3Decoder::decode ( const fl::u8 * data,
fl::size len,
Fn on_frame )
inline

Definition at line 75 of file mp3.h.

76 {
77 if (!mDecoder) {
78 return 0;
79 }
80
81 const fl::u8* inptr = data;
82 fl::size bytes_left = len;
83 int frames_decoded = 0;
84
85 while (bytes_left > 0) {
86 int offset = findSyncWord(inptr, bytes_left);
87 if (offset < 0) {
88 break;
89 }
90
91 inptr += offset;
92 bytes_left -= offset;
93
94 int result = decodeFrame(&inptr, &bytes_left);
95 if (result == 0) {
96 Mp3Frame frame;
97 frame.pcm = mPcmBuffer.get();
98 frame.samples = mFrameInfo.outputSamps / mFrameInfo.nChans;
99 frame.channels = mFrameInfo.nChans;
100 frame.sample_rate = mFrameInfo.samprate;
101 frame.bitrate = mFrameInfo.bitrate;
102 frame.version = mFrameInfo.version;
103 frame.layer = mFrameInfo.layer;
104
105 on_frame(frame);
106 frames_decoded++;
107 } else if (bytes_left > 0) {
108 inptr++;
109 bytes_left--;
110 }
111 }
112
113 return frames_decoded;
114 }
int decodeFrame(const fl::u8 **inbuf, fl::size *bytes_left) FL_NO_EXCEPT
Definition mp3.cpp.hpp:197
fl::unique_ptr< mp3dec_t, Mp3MemoryDeleter< mp3dec_t > > mDecoder
Definition mp3.h:128
int findSyncWord(const fl::u8 *buf, fl::size len) FL_NO_EXCEPT
Definition mp3.cpp.hpp:177
fl::unique_ptr< fl::i16[], Mp3MemoryDeleter< fl::i16 > > mPcmBuffer
Definition mp3.h:124
fl::UISlider offset("Offset", 0.0f, 0.0f, 1.0f, 0.01f)
unsigned char u8
Definition stdint.h:131
expected< T, E > result
Alias for expected (Rust-style naming)
Definition result.h:31

References fl::third_party::Mp3Frame::bitrate, fl::third_party::Mp3Frame::channels, decodeFrame(), findSyncWord(), fl::FL_NO_EXCEPT, fl::third_party::Mp3Frame::layer, mDecoder, mFrameInfo, mPcmBuffer, offset(), fl::third_party::Mp3Frame::pcm, fl::third_party::Mp3Frame::sample_rate, fl::third_party::Mp3Frame::samples, and fl::third_party::Mp3Frame::version.

Referenced by decodeToAudioSamples().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: