summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filters/f_decoder_wrapper.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/filters/f_decoder_wrapper.c b/filters/f_decoder_wrapper.c
index 061f056a1e..16b9cd06df 100644
--- a/filters/f_decoder_wrapper.c
+++ b/filters/f_decoder_wrapper.c
@@ -710,8 +710,13 @@ void lavc_process(struct mp_filter *f, bool *eof_flag,
}
return;
}
- if (!send(f, pkt))
- MP_WARN(f, "could not consume packet\n"); // should never happen
+ if (!send(f, pkt)) {
+ // Should never happen, but can happen with broken decoders.
+ MP_WARN(f, "could not consume packet\n");
+ mp_pin_out_unread(f->ppins[0], frame);
+ mp_filter_wakeup(f);
+ return;
+ }
talloc_free(pkt);
mp_filter_internal_mark_progress(f);
}