This patch fixes the issue discussed in ticket #7708.
>From 756b3b59ac491bdbf01de4f399f5eeb74db8861a Mon Sep 17 00:00:00 2001 From: user <user@host> Date: Wed, 30 Jan 2019 16:48:58 +0100 Subject: [PATCH 1/1] avcodec: Allow to query number of consumed bytes using the new API
Currently the only way to get the number of consumed bytes is by using the deprecated decode_audio4() API. This patch adds a simple function to fix this. Signed-off-by: Jannis Kambs <[email protected]> --- libavcodec/avcodec.h | 9 +++++++++ libavcodec/utils.c | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index f554c53f0e..54f48754e4 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -5714,6 +5714,15 @@ int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes); */ int av_get_audio_frame_duration2(AVCodecParameters *par, int frame_bytes); +/** + * This function allows to get the number of consumed bytes, analogous to the + * old decode API. Call it after avcodec_receive_frame(). + * + * @param avctx the codec context + * @return number of bytes consumed from the input AVPacket. + */ +int av_get_num_consumed(AVCodecContext *avctx); + #if FF_API_OLD_BSF typedef struct AVBitStreamFilterContext { void *priv_data; diff --git a/libavcodec/utils.c b/libavcodec/utils.c index d519b16092..a3cb8fef3f 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -1727,6 +1727,13 @@ int av_get_audio_frame_duration2(AVCodecParameters *par, int frame_bytes) frame_bytes); } +int av_get_num_consumed(AVCodecContext *avctx) +{ + int ret = avctx->internal->compat_decode_consumed; + avctx->internal->compat_decode_consumed = 0; + return ret; +} + #if !HAVE_THREADS int ff_thread_init(AVCodecContext *s) { -- 2.11.0
_______________________________________________ ffmpeg-devel mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
