Message ID | 20211215021702.84725-1-young_chelsea@163.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel] libavcodec/pthread_framec: remove duplicate pointers | expand |
Context | Check | Description |
---|---|---|
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
andriy/make_ppc | success | Make finished |
andriy/make_fate_ppc | success | Make fate finished |
Ping for this patch. -Yu Yang > 2021年12月15日 上午10:17,Yu Yang <young_chelsea@163.com> 写道: > > From: Yu Yang <yuyang14@kuaishou.com> > > '*src' and '*avctx' point to the same memory. It is enough to keep one of them. > > Signed-off-by: Yu Yang <yuyang14@kuaishou.com> > --- > libavcodec/pthread_frame.c | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) > > diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c > index 73b1b7d7d9..98f88f7732 100644 > --- a/libavcodec/pthread_frame.c > +++ b/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, > FrameThreadContext *fctx, AVCodecContext *avctx, > - AVCodecContext *src, const AVCodec *codec, int first) > + const AVCodec *codec, int first) > { > AVCodecContext *copy; > int err; > > atomic_init(&p->state, STATE_INPUT_READY); > > - copy = av_memdup(src, sizeof(*src)); > + copy = av_memdup(avctx, sizeof(*avctx)); > if (!copy) > return AVERROR(ENOMEM); > copy->priv_data = NULL; > @@ -784,7 +784,7 @@ static av_cold int init_thread(PerThreadContext *p, int *threads_to_free, > p->parent = fctx; > p->avctx = copy; > > - copy->internal = av_memdup(src->internal, sizeof(*src->internal)); > + copy->internal = av_memdup(avctx->internal, sizeof(*avctx->internal)); > if (!copy->internal) > return AVERROR(ENOMEM); > 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) { > *(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) > return err; > } > @@ -843,7 +843,6 @@ int ff_frame_thread_init(AVCodecContext *avctx) > { > int thread_count = avctx->thread_count; > const AVCodec *codec = avctx->codec; > - AVCodecContext *src = avctx; > FrameThreadContext *fctx; > int err, i = 0; > > @@ -876,7 +875,7 @@ int ff_frame_thread_init(AVCodecContext *avctx) > fctx->delaying = 1; > > 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)); > if (!fctx->threads) { > @@ -888,7 +887,7 @@ int ff_frame_thread_init(AVCodecContext *avctx) > PerThreadContext *p = &fctx->threads[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) > goto error; > } > -- > 2.33.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Ping for this patch. May be my understanding of this part is not correct enough, Please tell me, thx -Yu Yang > 2021年12月20日 上午11:03,Yy <young_chelsea@163.com> 写道: > > Ping for this patch. > -Yu Yang > >> 2021年12月15日 上午10:17,Yu Yang <young_chelsea@163.com> 写道: >> >> From: Yu Yang <yuyang14@kuaishou.com> >> >> '*src' and '*avctx' point to the same memory. It is enough to keep one of them. >> >> Signed-off-by: Yu Yang <yuyang14@kuaishou.com> >> --- >> libavcodec/pthread_frame.c | 13 ++++++------- >> 1 file changed, 6 insertions(+), 7 deletions(-) >> >> diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c >> index 73b1b7d7d9..98f88f7732 100644 >> --- a/libavcodec/pthread_frame.c >> +++ b/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, >> FrameThreadContext *fctx, AVCodecContext *avctx, >> - AVCodecContext *src, const AVCodec *codec, int first) >> + const AVCodec *codec, int first) >> { >> AVCodecContext *copy; >> int err; >> >> atomic_init(&p->state, STATE_INPUT_READY); >> >> - copy = av_memdup(src, sizeof(*src)); >> + copy = av_memdup(avctx, sizeof(*avctx)); >> if (!copy) >> return AVERROR(ENOMEM); >> copy->priv_data = NULL; >> @@ -784,7 +784,7 @@ static av_cold int init_thread(PerThreadContext *p, int *threads_to_free, >> p->parent = fctx; >> p->avctx = copy; >> >> - copy->internal = av_memdup(src->internal, sizeof(*src->internal)); >> + copy->internal = av_memdup(avctx->internal, sizeof(*avctx->internal)); >> if (!copy->internal) >> return AVERROR(ENOMEM); >> 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) { >> *(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) >> return err; >> } >> @@ -843,7 +843,6 @@ int ff_frame_thread_init(AVCodecContext *avctx) >> { >> int thread_count = avctx->thread_count; >> const AVCodec *codec = avctx->codec; >> - AVCodecContext *src = avctx; >> FrameThreadContext *fctx; >> int err, i = 0; >> >> @@ -876,7 +875,7 @@ int ff_frame_thread_init(AVCodecContext *avctx) >> fctx->delaying = 1; >> >> 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)); >> if (!fctx->threads) { >> @@ -888,7 +887,7 @@ int ff_frame_thread_init(AVCodecContext *avctx) >> PerThreadContext *p = &fctx->threads[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) >> goto error; >> } >> -- >> 2.33.1 >> >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> >> To unsubscribe, visit link above, or email >> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Quoting Yu Yang (2021-12-15 03:17:02) > From: Yu Yang <yuyang14@kuaishou.com> > > '*src' and '*avctx' point to the same memory. It is enough to keep one of them. > > Signed-off-by: Yu Yang <yuyang14@kuaishou.com> > --- > libavcodec/pthread_frame.c | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) Looks good, will push Thanks,
diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index 73b1b7d7d9..98f88f7732 100644 --- a/libavcodec/pthread_frame.c +++ b/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, FrameThreadContext *fctx, AVCodecContext *avctx, - AVCodecContext *src, const AVCodec *codec, int first) + const AVCodec *codec, int first) { AVCodecContext *copy; int err; atomic_init(&p->state, STATE_INPUT_READY); - copy = av_memdup(src, sizeof(*src)); + copy = av_memdup(avctx, sizeof(*avctx)); if (!copy) return AVERROR(ENOMEM); copy->priv_data = NULL; @@ -784,7 +784,7 @@ static av_cold int init_thread(PerThreadContext *p, int *threads_to_free, p->parent = fctx; p->avctx = copy; - copy->internal = av_memdup(src->internal, sizeof(*src->internal)); + copy->internal = av_memdup(avctx->internal, sizeof(*avctx->internal)); if (!copy->internal) return AVERROR(ENOMEM); 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) { *(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) return err; } @@ -843,7 +843,6 @@ int ff_frame_thread_init(AVCodecContext *avctx) { int thread_count = avctx->thread_count; const AVCodec *codec = avctx->codec; - AVCodecContext *src = avctx; FrameThreadContext *fctx; int err, i = 0; @@ -876,7 +875,7 @@ int ff_frame_thread_init(AVCodecContext *avctx) fctx->delaying = 1; 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)); if (!fctx->threads) { @@ -888,7 +887,7 @@ int ff_frame_thread_init(AVCodecContext *avctx) PerThreadContext *p = &fctx->threads[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) goto error; }