From: "\"zhilizhao(赵志立)\"" <quinkblack@foxmail.com> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Subject: Re: [FFmpeg-devel] [PATCH] lavc/videotoolbox: validate vt context in the decoder callback Date: Fri, 9 Dec 2022 12:44:53 +0800 Message-ID: <tencent_A52AA693035C458B92E60750B066C267D106@qq.com> (raw) In-Reply-To: <cf6f39d9-299c-4f2a-924f-ea3c10246b31@Spark> > On Dec 7, 2022, at 00:30, Alessandro Di Nepi <alessandro.dinepi@gmail.com> wrote: > > Got you; giving some context here, and you can find all the details in the ticket #10079 (http://trac.ffmpeg.org/ticket/10079). > > The issue has been introduced with the commit d7f4ad88a0df3c1339e142957bf2c40cd056b8ce. > This patch basically changed: > > • In the function `videotoolbox_start(AVCodecContext *avctx)`, > > ``` > - decoder_cb.decompressionOutputRefCon = avctx; > + decoder_cb.decompressionOutputRefCon = avctx->internal->hwaccel_priv_data; > ``` > > • The context is retrieved in the function, `videotoolbox_decoder_callback(...)` > > ``` > - AVCodecContext *avctx = opaque; > - VTContext *vtctx = avctx->internal->hwaccel_priv_data; > + VTContext *vtctx = opaque; > ``` > > Having said that, I see that when the `videotoolbox_start` is called, > > • `avctx` is not NULL, > • `avctx->internal->hwaccel_priv_data` is NULL Did you call av_videotoolbox_default_init() or av_videotoolbox_default_init2()? I think that’s why avctx->internal->hwaccel_priv_data is NULL. That code path is broken. Does remove the call of av_videotoolbox_default_init()/av_videotoolbox_default_init2() works for you? > > The first time the `videotoolbox_decoder_callback` is called, `avctx->internal->hwaccel_priv_data` now has a value, so before d7f4ad88a `vtctx` has a value. > After the change, since `avctx->internal->hwaccel_priv_data` is captured in `video toolbox_start`, is NULL and `vtctx` is also NULL. > > Again, this happens just the first time the callback is called; from the second time, vtctx has a proper value, and everything proceeds as expected. > > I'm willing to change the patch if you think there is a better way, but something needs to be done because the library simply crashes in the current state. > From what I see from the original change, reverting is not an option. > > Looking forward to hear feedback on this. > > Best Regards > Alessandro > On 6 Dec 2022, 7:20 +0200, "zhilizhao(赵志立)" <quinkblack@foxmail.com>, wrote: >> >>> On Dec 5, 2022, at 21:36, Rick Kern <kernrj@gmail.com> wrote: >>> >>> On Sun, Dec 4, 2022 at 12:51 PM Alessandro Di Nepi < >>> alessandro.dinepi@gmail.com> wrote: >>> >>>> On 4 Dec 2022, 17:01 +0200, FFmpeg development discussions and patches < >>>> ffmpeg-devel@ffmpeg.org>, wrote: >>>>> When this happens, does it continue happening, or is it transient? My >>>> main >>>>> concern is log spamming. >>>> Good question: this is just a transient state, so that it won't continue >>>> happening. >>>> To give you some context: when the decoding start, the value of `vtctx` is >>>> captured "too" early so that the first time the callback is called, it's >>>> still NULL. >>>> The next time it will have a proper value. >>>> >>> If the code isn't setting a variable in time, that issue should be fixed. >>> Otherwise the decoder will drop frames. >> >> Yes, null pointer check doesn’t looks like a resolution to a race >> condition. I’m not sure how the race condition happened in the first >> place. >> > _______________________________________________ > 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".
next prev parent reply other threads:[~2022-12-09 4:45 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-11-27 17:33 Alessandro Di Nepi 2022-11-29 16:46 ` Alessandro Di Nepi 2022-12-04 14:02 ` Alessandro Di Nepi 2022-12-04 15:00 ` Rick Kern 2022-12-04 17:51 ` Alessandro Di Nepi 2022-12-05 13:36 ` Rick Kern 2022-12-06 5:19 ` "zhilizhao(赵志立)" 2022-12-06 16:30 ` Alessandro Di Nepi 2022-12-09 4:44 ` "zhilizhao(赵志立)" [this message] 2022-12-11 9:57 ` Alessandro Di Nepi 2022-12-15 14:16 ` Alessandro Di Nepi 2022-12-15 14:45 ` Zhao Zhili 2023-01-09 14:48 ` Zhao Zhili [not found] <53dafc80-d9f6-4b5b-a7a5-781bbb045493@Spark> 2022-11-27 16:21 ` Alessandro Di Nepi
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=tencent_A52AA693035C458B92E60750B066C267D106@qq.com \ --to=quinkblack@foxmail.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git