diff options
author | Aman Gupta <aman@tmm1.net> | 2018-03-10 23:43:42 -0800 |
---|---|---|
committer | Aman Gupta <aman@tmm1.net> | 2018-03-12 01:23:30 -0700 |
commit | 936312d18c985335d8e90b04bb15b4227bce7b31 (patch) | |
tree | 33474f9c6a5a3ab235ce88be6b07edb7b3c41139 /libavcodec/mediacodec.c | |
parent | 939440ad1aa820bed51f54d273b4fa6c5016d9f9 (diff) | |
download | ffmpeg-streaming-936312d18c985335d8e90b04bb15b4227bce7b31.zip ffmpeg-streaming-936312d18c985335d8e90b04bb15b4227bce7b31.tar.gz |
avcodec/mediacodecdec: add debug logging around hw buffer lifecycle
Some Android devices are very finicky about how quicky output buffers
are returned back to the decoder, especially when they are associated
with a Surface.
This commit adds a new counter that keeps track of exactly how many hw
output buffers are being retained by the user, along with DEBUG level
logging that makes it easy to track the lifecycle of these buffers.
Signed-off-by: Aman Gupta <aman@tmm1.net>
Signed-off-by: Matthieu Bouron <matthieu.bouron@gmail.com>
Diffstat (limited to 'libavcodec/mediacodec.c')
-rw-r--r-- | libavcodec/mediacodec.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libavcodec/mediacodec.c b/libavcodec/mediacodec.c index 3ddd303..b0aae43 100644 --- a/libavcodec/mediacodec.c +++ b/libavcodec/mediacodec.c @@ -92,9 +92,10 @@ int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render) int released = atomic_fetch_add(&buffer->released, 1); if (!released && (ctx->delay_flush || buffer->serial == atomic_load(&ctx->serial))) { - av_log(ctx->avctx, AV_LOG_TRACE, - "Releasing output buffer %zd ts=%"PRId64" render=%d\n", - buffer->index, buffer->pts, render); + atomic_fetch_sub(&ctx->hw_buffer_count, 1); + av_log(ctx->avctx, AV_LOG_DEBUG, + "Releasing output buffer %zd (%p) ts=%"PRId64" with render=%d [%d pending]\n", + buffer->index, buffer, buffer->pts, render, atomic_load(&ctx->hw_buffer_count)); return ff_AMediaCodec_releaseOutputBuffer(ctx->codec, buffer->index, render); } |