libavcodec/pthread_frame: remove duplicate pointers

'*src' and '*avctx' point to the same memory. It is enough to keep one of them.

Signed-off-by: Yu Yang <yuyang14@kuaishou.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
remotes/origin/release/5.0
Yu Yang 3 years ago committed by Anton Khirnov
parent 064ab95cc7
commit 5e2a1f1e7d
  1. 13
      libavcodec/pthread_frame.c

@ -765,14 +765,14 @@ void ff_frame_thread_free(AVCodecContext *avctx, int thread_count)
static av_cold int init_thread(PerThreadContext *p, int *threads_to_free, static av_cold int init_thread(PerThreadContext *p, int *threads_to_free,
FrameThreadContext *fctx, AVCodecContext *avctx, FrameThreadContext *fctx, AVCodecContext *avctx,
AVCodecContext *src, const AVCodec *codec, int first) const AVCodec *codec, int first)
{ {
AVCodecContext *copy; AVCodecContext *copy;
int err; int err;
atomic_init(&p->state, STATE_INPUT_READY); atomic_init(&p->state, STATE_INPUT_READY);
copy = av_memdup(src, sizeof(*src)); copy = av_memdup(avctx, sizeof(*avctx));
if (!copy) if (!copy)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
copy->priv_data = NULL; copy->priv_data = NULL;
@ -784,7 +784,7 @@ static av_cold int init_thread(PerThreadContext *p, int *threads_to_free,
p->parent = fctx; p->parent = fctx;
p->avctx = copy; p->avctx = copy;
copy->internal = av_memdup(src->internal, sizeof(*src->internal)); copy->internal = av_memdup(avctx->internal, sizeof(*avctx->internal));
if (!copy->internal) if (!copy->internal)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
copy->internal->thread_ctx = p; copy->internal->thread_ctx = p;
@ -798,7 +798,7 @@ static av_cold int init_thread(PerThreadContext *p, int *threads_to_free,
if (codec->priv_class) { if (codec->priv_class) {
*(const AVClass **)copy->priv_data = codec->priv_class; *(const AVClass **)copy->priv_data = codec->priv_class;
err = av_opt_copy(copy->priv_data, src->priv_data); err = av_opt_copy(copy->priv_data, avctx->priv_data);
if (err < 0) if (err < 0)
return err; return err;
} }
@ -843,7 +843,6 @@ int ff_frame_thread_init(AVCodecContext *avctx)
{ {
int thread_count = avctx->thread_count; int thread_count = avctx->thread_count;
const AVCodec *codec = avctx->codec; const AVCodec *codec = avctx->codec;
AVCodecContext *src = avctx;
FrameThreadContext *fctx; FrameThreadContext *fctx;
int err, i = 0; int err, i = 0;
@ -876,7 +875,7 @@ int ff_frame_thread_init(AVCodecContext *avctx)
fctx->delaying = 1; fctx->delaying = 1;
if (codec->type == AVMEDIA_TYPE_VIDEO) if (codec->type == AVMEDIA_TYPE_VIDEO)
avctx->delay = src->thread_count - 1; avctx->delay = avctx->thread_count - 1;
fctx->threads = av_calloc(thread_count, sizeof(*fctx->threads)); fctx->threads = av_calloc(thread_count, sizeof(*fctx->threads));
if (!fctx->threads) { if (!fctx->threads) {
@ -888,7 +887,7 @@ int ff_frame_thread_init(AVCodecContext *avctx)
PerThreadContext *p = &fctx->threads[i]; PerThreadContext *p = &fctx->threads[i];
int first = !i; int first = !i;
err = init_thread(p, &i, fctx, avctx, src, codec, first); err = init_thread(p, &i, fctx, avctx, codec, first);
if (err < 0) if (err < 0)
goto error; goto error;
} }

Loading…
Cancel
Save