251 {
253 setError(
"No input stream available");
254 return false;
255 }
256
257
258
259 const fl::size CHUNK_SIZE = 8192;
260 fl::vector<fl::u8> tempBuffer;
261
263 fl::size bytesRead;
264 do {
265 bytesRead =
stream_->read(chunk, CHUNK_SIZE);
266 if (bytesRead > 0) {
267 for (fl::size i = 0; i < bytesRead; ++i) {
269 }
270 }
271 } while (bytesRead == CHUNK_SIZE);
272
273 if (tempBuffer.
empty()) {
274 setError(
"Empty input stream - no data available");
275 return false;
276 }
277
278
282
283
287 0
288 );
289
291 setError(
"Failed to create pl_mpeg decoder instance");
292 return false;
293 }
294
295
298 } else {
302 }
303
304
306
307
310
311
312
313
315
316
317 fl::size temp_buffer_size = static_cast<fl::size>(1920ul * 1080ul * 3ul);
319
320
322 }
323
324
327 setError(
"Failed to parse MPEG1 headers");
328 return false;
329 }
330
331
332
333
334
338
340 setError(
"Invalid video dimensions from MPEG1 stream");
341 return false;
342 }
343
344
348 return true;
349}
void allocateFrameBuffers() FL_NOEXCEPT
void setError(const fl::string &message) FL_NOEXCEPT
Mpeg1DecoderData * decoderData_
static void audioDecodeCallback(fl::third_party::plm_t *plm, fl::third_party::plm_samples_t *samples, void *user) FL_NOEXCEPT
static void videoDecodeCallback(fl::third_party::plm_t *plm, fl::third_party::plm_frame_t *frame, void *user) FL_NOEXCEPT
fl::size size() const FL_NOEXCEPT
bool empty() const FL_NOEXCEPT
void push_back(const T &value) FL_NOEXCEPT
void plm_set_video_decode_callback(plm_t *self, plm_video_decode_callback fp, void *user) FL_NOEXCEPT
void plm_decode(plm_t *self, double seconds) FL_NOEXCEPT
int plm_get_width(plm_t *self) FL_NOEXCEPT
int plm_get_height(plm_t *self) FL_NOEXCEPT
plm_t * plm_create_with_memory(uint8_t *bytes, size_t length, int free_when_done) FL_NOEXCEPT
void plm_set_audio_enabled(plm_t *self, int enabled) FL_NOEXCEPT
void plm_set_loop(plm_t *self, int loop) FL_NOEXCEPT
void plm_set_audio_decode_callback(plm_t *self, plm_audio_decode_callback fp, void *user) FL_NOEXCEPT
double plm_get_framerate(plm_t *self) FL_NOEXCEPT
int plm_has_headers(plm_t *self) FL_NOEXCEPT
void * memcpy(void *dest, const void *src, size_t n) FL_NOEXCEPT