From da6506c607eda585ba4b15430cf3c9a2ce09c3a9 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 27 Oct 2013 13:12:53 +0100 Subject: [PATCH] lavc: move AVCodecContext.pkt to AVCodecInternal It's a private field, not meant to be accessed from outside lavc. --- libavcodec/avcodec.h | 9 ++++----- libavcodec/internal.h | 6 ++++++ libavcodec/pthread_frame.c | 2 +- libavcodec/rawdec.c | 3 ++- libavcodec/utils.c | 8 ++++---- libavcodec/version.h | 3 +++ 6 files changed, 20 insertions(+), 11 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 47fda69..d42febf 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2672,14 +2672,13 @@ typedef struct AVCodecContext { */ int error_rate; +#if FF_API_CODEC_PKT /** - * Current packet as passed into the decoder, to avoid having - * to pass the packet into every function. Currently only valid - * inside lavc and get/release_buffer callbacks. - * - decoding: set by avcodec_decode_*, read by get_buffer() for setting pkt_pts - * - encoding: unused + * @deprecated this field is not supposed to be accessed from outside lavc */ + attribute_deprecated AVPacket *pkt; +#endif /** * VBV delay coded in the last frame (in periods of a 27 MHz clock). diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 9a57209..4648c02 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -88,6 +88,12 @@ typedef struct AVCodecInternal { FramePool *pool; void *thread_ctx; + + /** + * Current packet as passed into the decoder, to avoid having to pass the + * packet into every function. + */ + AVPacket *pkt; } AVCodecInternal; struct AVCodecDefault { diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index c2d12c8..3dff960 100644 --- a/libavcodec/pthread_frame.c +++ b/libavcodec/pthread_frame.c @@ -608,7 +608,6 @@ int ff_frame_thread_init(AVCodecContext *avctx) } *copy = *src; - copy->pkt = &p->avpkt; copy->internal = av_malloc(sizeof(AVCodecInternal)); if (!copy->internal) { @@ -617,6 +616,7 @@ int ff_frame_thread_init(AVCodecContext *avctx) } *copy->internal = *src->internal; copy->internal->thread_ctx = p; + copy->internal->pkt = &p->avpkt; if (!i) { src = copy; diff --git a/libavcodec/rawdec.c b/libavcodec/rawdec.c index 24d06f3..a8227c7 100644 --- a/libavcodec/rawdec.c +++ b/libavcodec/rawdec.c @@ -25,6 +25,7 @@ */ #include "avcodec.h" +#include "internal.h" #include "raw.h" #include "libavutil/buffer.h" #include "libavutil/common.h" @@ -150,7 +151,7 @@ static int raw_decode(AVCodecContext *avctx, void *data, int *got_frame, frame->pict_type = AV_PICTURE_TYPE_I; frame->key_frame = 1; frame->reordered_opaque = avctx->reordered_opaque; - frame->pkt_pts = avctx->pkt->pts; + frame->pkt_pts = avctx->internal->pkt->pts; if (buf_size < context->frame_size - (avctx->pix_fmt == AV_PIX_FMT_PAL8 ? AVPALETTE_SIZE : 0)) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 7b5c796..da519b5 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -613,7 +613,7 @@ int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags) default: return AVERROR(EINVAL); } - frame->pkt_pts = avctx->pkt ? avctx->pkt->pts : AV_NOPTS_VALUE; + frame->pkt_pts = avctx->internal->pkt ? avctx->internal->pkt->pts : AV_NOPTS_VALUE; frame->reordered_opaque = avctx->reordered_opaque; #if FF_API_GET_BUFFER @@ -1402,7 +1402,7 @@ int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *pi if ((avctx->coded_width || avctx->coded_height) && av_image_check_size(avctx->coded_width, avctx->coded_height, 0, avctx)) return -1; - avctx->pkt = avpkt; + avctx->internal->pkt = avpkt; ret = apply_param_change(avctx, avpkt); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "Error applying parameter changes.\n"); @@ -1467,7 +1467,7 @@ int attribute_align_arg avcodec_decode_audio4(AVCodecContext *avctx, *got_frame_ptr = 0; - avctx->pkt = avpkt; + avctx->internal->pkt = avpkt; if (!avpkt->data && avpkt->size) { av_log(avctx, AV_LOG_ERROR, "invalid packet: NULL data, size != 0\n"); @@ -1522,7 +1522,7 @@ int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, { int ret; - avctx->pkt = avpkt; + avctx->internal->pkt = avpkt; *got_sub_ptr = 0; ret = avctx->codec->decode(avctx, sub, got_sub_ptr, avpkt); if (*got_sub_ptr) diff --git a/libavcodec/version.h b/libavcodec/version.h index eac9ee4..5e87841 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -91,5 +91,8 @@ #ifndef FF_API_THREAD_OPAQUE #define FF_API_THREAD_OPAQUE (LIBAVCODEC_VERSION_MAJOR < 56) #endif +#ifndef FF_API_CODEC_PKT +#define FF_API_CODEC_PKT (LIBAVCODEC_VERSION_MAJOR < 56) +#endif #endif /* AVCODEC_VERSION_H */ -- 2.7.4