diff options
author | Matthieu Bouron <matthieu.bouron@stupeflix.com> | 2016-06-20 16:29:18 +0200 |
---|---|---|
committer | Matthieu Bouron <matthieu.bouron@stupeflix.com> | 2016-06-23 14:14:15 +0200 |
commit | a71d518575a5d048c58a1ecff4dda2b0ba224034 (patch) | |
tree | 1c3dd70c48a30a5ab39744c9ef0c6495f4f129df | |
parent | c8550e82449bb22cf78eddd8a656eaafa31cb88c (diff) | |
download | ffmpeg-a71d518575a5d048c58a1ecff4dda2b0ba224034.tar.gz |
lavc/mediacodec: discard 0-sized buffers
Their only purpose is to carry the end of stream flag.
-rw-r--r-- | libavcodec/mediacodecdec.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c index 68df885c77..6b7cdb4f97 100644 --- a/libavcodec/mediacodecdec.c +++ b/libavcodec/mediacodecdec.c @@ -474,6 +474,7 @@ int ff_mediacodec_dec_decode(AVCodecContext *avctx, MediaCodecDecContext *s, " flags=%" PRIu32 "\n", index, info.offset, info.size, info.presentationTimeUs, info.flags); + if (info.size) { data = ff_AMediaCodec_getOutputBuffer(codec, index, &size); if (!data) { av_log(avctx, AV_LOG_ERROR, "Failed to get output buffer\n"); @@ -488,6 +489,12 @@ int ff_mediacodec_dec_decode(AVCodecContext *avctx, MediaCodecDecContext *s, *got_frame = 1; s->queued_buffer_nb--; s->dequeued_buffer_nb++; + } else { + status = ff_AMediaCodec_releaseOutputBuffer(codec, index, 0); + if (status < 0) { + av_log(avctx, AV_LOG_ERROR, "Failed to release output buffer\n"); + } + } } else if (ff_AMediaCodec_infoOutputFormatChanged(codec, index)) { char *format = NULL; |