diff mbox

[FFmpeg-devel] avcodec/vp8: fix multiple ff_thread_finish_setup() calls

Message ID 20191113070025.22091-1-quinkblack@foxmail.com
State Accepted
Commit ed5cdf3d5a7eae4e9f399520989c157cfb50fa51
Headers show

Commit Message

Zhao Zhili Nov. 13, 2019, 7 a.m. UTC
From: Zhao Zhili <zhilizhao@tencent.com>

vp7 decoder doesn't set update_thread_context field
---
 libavcodec/vp8.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Ronald S. Bultje Nov. 13, 2019, 5:25 p.m. UTC | #1
Hi,

On Wed, Nov 13, 2019 at 2:00 AM <quinkblack@foxmail.com> wrote:

> From: Zhao Zhili <zhilizhao@tencent.com>
>
> vp7 decoder doesn't set update_thread_context field
> ---
>  libavcodec/vp8.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c
> index eb51d1f3c9..b4deb3ed67 100644
> --- a/libavcodec/vp8.c
> +++ b/libavcodec/vp8.c
> @@ -2715,7 +2715,8 @@ int vp78_decode_frame(AVCodecContext *avctx, void
> *data, int *got_frame,
>
>      s->next_framep[VP56_FRAME_CURRENT] = curframe;
>
> -    ff_thread_finish_setup(avctx);
> +    if (avctx->codec->update_thread_context)
> +        ff_thread_finish_setup(avctx);
>

OK, I guess. What's the actual problem solved by this patch (e.g. some
commandline invocation with particular settings)? Does it cause some
assertion with frame-multithreaded VP7 decoding? Maybe add that to the
commit message so we know how to test this change.

Ronald
Zhao Zhili Nov. 14, 2019, 4:38 a.m. UTC | #2
> On Nov 14, 2019, at 1:25 AM, Ronald S. Bultje <rsbultje@gmail.com> wrote:
> 
> Hi,
> 
> On Wed, Nov 13, 2019 at 2:00 AM <quinkblack@foxmail.com <mailto:quinkblack@foxmail.com>> wrote:
> 
>> From: Zhao Zhili <zhilizhao@tencent.com>
>> 
>> vp7 decoder doesn't set update_thread_context field
>> ---
>> libavcodec/vp8.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>> 
>> diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c
>> index eb51d1f3c9..b4deb3ed67 100644
>> --- a/libavcodec/vp8.c
>> +++ b/libavcodec/vp8.c
>> @@ -2715,7 +2715,8 @@ int vp78_decode_frame(AVCodecContext *avctx, void
>> *data, int *got_frame,
>> 
>>     s->next_framep[VP56_FRAME_CURRENT] = curframe;
>> 
>> -    ff_thread_finish_setup(avctx);
>> +    if (avctx->codec->update_thread_context)
>> +        ff_thread_finish_setup(avctx);
>> 
> 
> OK, I guess. What's the actual problem solved by this patch (e.g. some
> commandline invocation with particular settings)? Does it cause some
> assertion with frame-multithreaded VP7 decoding? Maybe add that to the
> commit message so we know how to test this change.

Sorry, the commit message is incorrect, I send another patch.

It’s actually webp decoder has “multiple ff_thread_finish_setup" issue.
The issue can be reproduced with webp samples in fate-suite.

Since the vp7 decoder doesn’t have multi-thread capabilities, it is not affected.

> 
> Ronald
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org <mailto:ffmpeg-devel@ffmpeg.org>
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org <mailto:ffmpeg-devel-request@ffmpeg.org> with subject "unsubscribe".
diff mbox

Patch

diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c
index eb51d1f3c9..b4deb3ed67 100644
--- a/libavcodec/vp8.c
+++ b/libavcodec/vp8.c
@@ -2715,7 +2715,8 @@  int vp78_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
 
     s->next_framep[VP56_FRAME_CURRENT] = curframe;
 
-    ff_thread_finish_setup(avctx);
+    if (avctx->codec->update_thread_context)
+        ff_thread_finish_setup(avctx);
 
     if (avctx->hwaccel) {
         ret = avctx->hwaccel->start_frame(avctx, avpkt->data, avpkt->size);