[FFmpeg-devel] [PATCH] lavfi/bwdif: remove interpolated sample clipping

Lynne dev at lynne.ee
Tue Jul 4 01:54:20 EEST 2023


Jul 4, 2023, 00:08 by tmundt75 at gmail.com:

> Am So., 2. Juli 2023 um 20:58 Uhr schrieb Lynne <dev at lynne.ee>:
>
>> Jul 2, 2023, 20:41 by tmundt75 at gmail.com:
>>
>> > Am So., 2. Juli 2023 um 18:57 Uhr schrieb Lynne <dev at lynne.ee>:
>> >
>> >> Jul 2, 2023, 18:54 by dev at lynne.ee:
>> >>
>> >> > The issue is that clipping the interpolated temporal sample against
>> >> > the spatially predicted sample causes artifacts to appear.
>> >> >
>> >> > Discovered while writing the Vulkan version (where I omitted the
>> >> > same check).
>> >> >
>> >> > The clipping in the code is carried over from yadif. Removing the
>> >> > same code in yadif does not make any difference to the output.
>> >> > I think that the check was simply ill-adapted to the new prediction
>> >> > code and does more harm.
>> >> >
>> >> > I tested replacing the range clip with only an FFMAX, and only an
>> >> > FFMIN, but in both cases, artifacts still appeared.
>> >> >
>> >> > Test sample 1:
>> >> https://files.lynne.ee/testsamples/mbaff_1080i60_idx.mkvTest sample 2:
>> >> https://files.lynne.ee/testsamples/mbaff_bdmv_1080i60_8slice.mkv
>> >> >
>> >> > Command line:
>> >> > ./ffmpeg_g -cpuflags 0 -i <INPUT> -vf bwdif=mode=send_field -c:v
>> >> rawvideo -y <OUTPUT>.nut
>> >> > Make sure to disable the assembly.
>> >> >
>> >> > Comparisons:
>> >> > https://files.lynne.ee/bwdif_01_before.png
>> >> > https://files.lynne.ee/bwdif_01_after.png
>> >> > Generated from sample 1 via:
>> >> > ffmpeg -ss 00:00:00.184 -i <INPUT>.nut -vf
>> >> crop=w=420:h=240:x=700:y=300,scale=iw*2:ih*2 -y <OUTPUT>.png
>> >> >
>> >> > https://files.lynne.ee/bwdif_02_before.png
>> >> > https://files.lynne.ee/bwdif_02_after.pngffmpeg -ss 00:00:00.417 -i
>> >> <INPUT>.nut -vf crop=w=420:h=240:x=1100:y=200,scale=iw*2:ih*2 -y
>> >> <OUTPUT>.png
>> >> >
>> >>
>> >> Corrected links for the second sample:
>> >>
>> >> https://files.lynne.ee/bwdif_02_before.png
>> >> https://files.lynne.ee/bwdif_02_after.png
>> >> ffmpeg -ss 00:00:00.417 -i <INPUT>.nut -vf
>> >> crop=w=420:h=240:x=1100:y=200,scale=iw*2:ih*2 -y <OUTPUT>.png
>> >>
>> >> I'm sure I hit a newline. The artifacts are a lot more noticeable in the
>> >> second sample.
>> >>
>> >
>> > I developed the bwdif to achieve the best possible balance between speed
>> > and quality of all different image contents from the broadcast point of
>> > view. This includes moving video as well as moving and static graphic
>> > elements. Unfortunately, the improvement of one image content often leads
>> > to the degradation of another. The code you removed fundamentally
>> > stabilizes the static graphic elements. This outweighs the slightly more
>> > frequent artifacts in moving video considering the general purpose of the
>> > filter.
>> >
>>
>> Could you post examples? I've been unable to find any that look worse
>> with the patch.
>>
>
> Unfortunately, I no longer have most of the test material that I used years
> ago at the development of the bwdif.
> But on the quick I have this clip with an "Archiv" insert. With your patch
> the letters are jumping. Without your patch they stay static.
> https://www.dropbox.com/s/jzoezjbi3ho9nja/bwdif-test.mov?dl=1
> ffmpeg.exe -cpuflags 0 -i "bwdif-test.mov" -vf "bwdif=1:-1:1,
> scale=1920:1080" -sws_flags lanczos -aspect 16:9 -c:v libx264 -crf 21
> "bwdif_original.mp4"
> ffmpeg_lynne_patch.exe -cpuflags 0 -i "bwdif-test.mov" -vf "bwdif=1:-1:1,
> scale=1920:1080" -sws_flags lanczos -aspect 16:9 -c:v libx264 -crf 21
> "bwdif_lynne_patch.mp4"
> https://www.dropbox.com/s/tonsomtkhyaha91/bwdif_original.mp4?dl=1
> https://www.dropbox.com/s/aaj8o5yzlocu55z/bwdif_lynne_patch.mp4?dl=1
>

Can confirm the letters are jumping with my patch.
Fair enough, consider this patch dropped. I've added the check
in Vulkan to make that version exact to C.
Thanks for testing and writing the filter!


More information about the ffmpeg-devel mailing list