474 {
476 return;
477 }
478
481
482 if (!decode_video && !decode_audio) {
483
484 return;
485 }
486
487 int did_decode =
FALSE;
488 int decode_video_failed =
FALSE;
489 int decode_audio_failed =
FALSE;
490
491 double video_target_time = self->
time + tick;
493
494 do {
496
499 if (frame) {
502 }
503 else {
504 decode_video_failed =
TRUE;
505 }
506 }
507
510 if (samples) {
513 }
514 else {
515 decode_audio_failed =
TRUE;
516 }
517 }
518 } while (did_decode);
519
520
521 if (
522 (!decode_video || decode_video_failed) &&
523 (!decode_audio || decode_audio_failed) &&
525 ) {
527 return;
528 }
529
531}
double plm_audio_get_time(plm_audio_t *self) FL_NOEXCEPT
void plm_handle_end(plm_t *self) FL_NOEXCEPT
plm_samples_t * plm_audio_decode(plm_audio_t *self) FL_NOEXCEPT
int plm_init_decoders(plm_t *self) FL_NOEXCEPT
double plm_video_get_time(plm_video_t *self) FL_NOEXCEPT
plm_frame_t * plm_video_decode(plm_video_t *self) FL_NOEXCEPT
int plm_demux_has_ended(plm_demux_t *self) FL_NOEXCEPT
void * audio_decode_callback_user_data
void * video_decode_callback_user_data
plm_video_decode_callback video_decode_callback
plm_video_t * video_decoder
plm_audio_decode_callback audio_decode_callback
plm_audio_t * audio_decoder