aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAman Gupta <aman@tmm1.net>2019-09-05 11:04:09 -0700
committerAman Gupta <aman@tmm1.net>2019-09-10 13:51:05 -0700
commit8a3623e2fbde8cb2da3235bf9e230f3512a31c34 (patch)
treea24c31749f1d7e936be465e322d829034fb1f301
parente26fb6a714f6d86aca05361a0bab7eb84ef642f4 (diff)
downloadffmpeg-8a3623e2fbde8cb2da3235bf9e230f3512a31c34.tar.gz
avcodec/mediacodecdec: warn when input buffers are not configured with proper size
In rare circumstances, if the codec is not configured with the proper parameters the input buffers can be allocated with a size that's too small to hold an individual packet. Since MediaCodec expects exactly one incoming buffer with a given PTS, it is not valid to split data for a given PTS across two input buffers. See https://developer.android.com/reference/android/media/MediaCodec#data-processing: > Do not submit multiple input buffers with the same timestamp Signed-off-by: Aman Gupta <aman@tmm1.net>
-rw-r--r--libavcodec/mediacodecdec.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c
index e353e34bd5..f5771bffb1 100644
--- a/libavcodec/mediacodecdec.c
+++ b/libavcodec/mediacodecdec.c
@@ -440,8 +440,13 @@ static int mediacodec_receive_frame(AVCodecContext *avctx, AVFrame *frame)
if (ret >= 0) {
s->buffered_pkt.size -= ret;
s->buffered_pkt.data += ret;
- if (s->buffered_pkt.size <= 0)
+ if (s->buffered_pkt.size <= 0) {
av_packet_unref(&s->buffered_pkt);
+ } else {
+ av_log(avctx, AV_LOG_WARNING,
+ "could not send entire packet in single input buffer (%d < %d)\n",
+ ret, s->buffered_pkt.size+ret);
+ }
} else if (ret < 0 && ret != AVERROR(EAGAIN)) {
return ret;
}