[FFmpeg-devel] [PATCH] avcodec/h264_slice: don't copy frame data during error concealment

Hendrik Leppkes h.leppkes at gmail.com
Tue Mar 9 09:43:39 EET 2021


On Tue, Mar 9, 2021 at 3:39 AM James Almer <jamrial at gmail.com> wrote:
>
> In addition to the fact that av_image_copy() cannot handle hardware pixel
> formats, h->short_ref[0]->f may not even be writable at this point.
>
> Based on a patch by Hendrik Leppkes.
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> This is an alternative to "avcodec/h264_slice: properly handle missing
> reference frames with hwaccel", given that I noticed that the target frame is
> not writable for example when running fate-h264-missing-frame.
>
> To keep the current behavior of copying the frame data instead of making a
> reference, I also tried to do ff_thread_release_buffer() ->
> ff_thread_get_buffer() -> av_frame_copy(), which worked with software decoding,
> but when using the d3d11va hwaccel the av_frame_copy() call would fail.
>
> There is a warning above this code that makes it sound like making references
> is not ideal, but considering h->short_ref[0] is not writable here it feels
> like it could be an outdated comment that someone forgot to remove.
>

Looks more thorough then my original change. I was worried about the
comment also, but I think it may have been from before the days of
ref-counting, frame threading, and all that (the comment appeared with
the original code in e2983d6eac7b0bb563886c6f97c4ce0385b2018d, 2010)

Perhaps the comment should be removed if we are going to reference now anyway?

- Hendrik


More information about the ffmpeg-devel mailing list