140 {
142 return false;
143 }
144
147 }
148
150
152
153 fl::u8 more_data_needed = 0;
154 fl::u8 processing_complete = 0;
155
161 &more_data_needed,
162 &processing_complete
163 );
164
165 if (processing_complete) {
168 return false;
169 }
170
172
173
177 }
178 return true;
179 }
180
182 char err_str[32];
183 fl::snprintf(err_str,
sizeof(err_str),
"Progressive decode error: %d", (
int)res);
185 return false;
186 }
187
188 return true;
189 } else {
190
192
194
196
198 fl::u8 first_pixel_sum = 0;
199 if (pixels) {
200 first_pixel_sum = pixels[0].r + pixels[0].g + pixels[0].b;
201 }
202
203 char debug_str[64];
204 fl::snprintf(debug_str,
sizeof(debug_str),
"JPEG decode OK, first_pixel_sum=%d", first_pixel_sum);
205
206
207 if (first_pixel_sum == 0) {
208 setError(
"JPEG decode succeeded but output callback was not called");
209 return false;
210 }
211
214 return false;
215 } else {
216 char err_str[32];
217 fl::snprintf(err_str,
sizeof(err_str),
"Decode error: %d", (
int)res);
219 return false;
220 }
221 }
222}
struct fl::third_party::TJpgInstanceDecoder::EmbeddedTJpgState embedded_tjpg_
JDEC_Progressive progressive_state_
fl::shared_ptr< Frame > current_frame_
TJpgProgressiveConfig progressive_config_
void startTick() FL_NOEXCEPT
void setError(const fl::string &msg) FL_NOEXCEPT
static int outputCallback(JDEC *jd, void *bitmap, JRECT *rect) FL_NOEXCEPT
JRESULT jd_decomp(JDEC *jd, int(*outfunc)(JDEC *, void *, JRECT *), uint8_t scale) FL_NOEXCEPT
JRESULT jd_decomp_progressive(JDEC_Progressive *jpd, int(*outfunc)(JDEC *, void *, JRECT *), uint8_t scale, uint16_t max_mcus_per_call, uint8_t *more_data_needed, uint8_t *processing_complete) FL_NOEXCEPT
int snprintf(char *buffer, fl::size size, const char *format, const Args &... args) FL_NOEXCEPT
Snprintf-like formatting function that writes to a buffer.