summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2013-10-27 13:12:53 +0100
committerAnton Khirnov <anton@khirnov.net>2013-11-04 08:51:26 +0100
commitda6506c607eda585ba4b15430cf3c9a2ce09c3a9 (patch)
treefb2436a79ef99b8f7d8b50f015d5a86d0b9d1ae3
parent38ecc3702dabbea09230f6d6333f59e74f5d1c12 (diff)
lavc: move AVCodecContext.pkt to AVCodecInternal
It's a private field, not meant to be accessed from outside lavc.
-rw-r--r--libavcodec/avcodec.h9
-rw-r--r--libavcodec/internal.h6
-rw-r--r--libavcodec/pthread_frame.c2
-rw-r--r--libavcodec/rawdec.c3
-rw-r--r--libavcodec/utils.c8
-rw-r--r--libavcodec/version.h3
6 files changed, 20 insertions, 11 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 47fda6905e..d42febf6c4 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 9a57209c69..4648c02e09 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 c2d12c854f..3dff9608f9 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 24d06f3087..a8227c7ae8 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 7b5c796b2a..da519b5eb6 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 eac9ee4c4a..5e87841610 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 */