[FFmpeg-devel] [PATCH] avcodec/rkmpp: stop blocking output while input is not full
Cameron Gutman
aicommander at gmail.com
Sun Apr 21 11:22:51 EEST 2019
By requiring that the decoder stay full, we introduce unnecessary
output latency when decoding from a real-time source. Additionally,
we can cause MPP to assert if we submit data, but don't actually
output a frame before closing our decoding session, because it
expects us to read the format change before cleaning up MPP.
The resulting crash looks like:
mpp_dec: task no send to hal que must clr current frame hal status
mpp_buf_slot: Assertion slot->status.has_frame failed at mpp_buf_slot_get_prop:877
mpp_dec: Assertion info_frame failed at mpp_dec_hal_thread:637
mpp_frame: check_is_mpp_frame pointer (nil) failed on check
mpp_frame: check_is_mpp_frame pointer (nil) failed on check
Tested on RK3288 (Asus Tinkerboard)
Signed-off-by: Cameron Gutman <aicommander at gmail.com>
---
libavcodec/rkmppdec.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/libavcodec/rkmppdec.c b/libavcodec/rkmppdec.c
index 143d05bd51..e8a0b42554 100644
--- a/libavcodec/rkmppdec.c
+++ b/libavcodec/rkmppdec.c
@@ -524,10 +524,6 @@ static int rkmpp_receive_frame(AVCodecContext *avctx, AVFrame *frame)
return ret;
}
}
-
- // make sure we keep decoder full
- if (freeslots > 1)
- return AVERROR(EAGAIN);
}
return rkmpp_retrieve_frame(avctx, frame);
--
2.17.1
More information about the ffmpeg-devel
mailing list