[FFmpeg-devel] [PATCH V2 2/2] lavfi/opencl: add nlmeans_opencl filter

Mark Thompson sw at jkqxz.net
Sat Apr 20 18:08:27 EEST 2019


On 17/04/2019 03:43, Song, Ruiling wrote:
>> -----Original Message-----
>> From: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] On Behalf Of
>> Mark Thompson
>> Sent: Wednesday, April 17, 2019 5:28 AM
>> To: ffmpeg-devel at ffmpeg.org
>> Subject: Re: [FFmpeg-devel] [PATCH V2 2/2] lavfi/opencl: add nlmeans_opencl
>> filter
>>
>> On 12/04/2019 16:09, Ruiling Song wrote:
>>> Signed-off-by: Ruiling Song <ruiling.song at intel.com>
>>
>> I can't work out where the problem is, but there is something really weirdly
>> nondeterministic going on here.
>>
>> E.g.
>>
>> $ ./ffmpeg_g -y -init_hw_device opencl:0.0 -i ~/video/test/jellyfish-120-mbps-
>> 4k-uhd-hevc-10bit.mkv -an -filter_hw_device opencl0 -vf
>> format=yuv420p,hwupload,nlmeans_opencl,hwdownload,format=yuv420p -
>> frames:v 10 -f framemd5 -
>> ...
>> 0,          0,          0,        1, 12441600, 8b8805818076b23ae6f80ec2b5a349d4
>> 0,          1,          1,        1, 12441600, 7a7fdaa083dc337cfb6af31b643f30a3
>> 0,          2,          2,        1, 12441600, b10ef2a1e5125cc67e262e086f8040b5
>> 0,          3,          3,        1, 12441600, c06b53ad90e0357e537df41b63d5b1dc
>> 0,          4,          4,        1, 12441600, 5aa2da07703859a3dee080847dd17d46
>> 0,          5,          5,        1, 12441600, 733364c6be6af825057e905a6092937d
>> 0,          6,          6,        1, 12441600, 47edae2dec956a582b04babb745d26b0
>> 0,          7,          7,        1, 12441600, 4e45fe8268df4298d06a17ab8e46c3e9
>> 0,          8,          8,        1, 12441600, 960d722a3f8787c9191299a114c04174
>> 0,          9,          9,        1, 12441600, e759c07ee4834a9cf94bfcb4128e7612
>> $ ./ffmpeg_g -y -init_hw_device opencl:0.0 -i ~/video/test/jellyfish-120-mbps-
>> 4k-uhd-hevc-10bit.mkv -an -filter_hw_device opencl0 -vf
>> format=yuv420p,hwupload,nlmeans_opencl,hwdownload,format=yuv420p -
>> frames:v 10 -f framemd5 -
>> 0,          0,          0,        1, 12441600, 8b8805818076b23ae6f80ec2b5a349d4
>> [Parsed_nlmeans_opencl_2 @ 0x5557ae580d00] integral image overflow
>> 2157538
>> 0,          1,          1,        1, 12441600, bce72e10a9f1118940c5a8392ad78ec3
>> 0,          2,          2,        1, 12441600, b10ef2a1e5125cc67e262e086f8040b5
>> 0,          3,          3,        1, 12441600, c06b53ad90e0357e537df41b63d5b1dc
>> 0,          4,          4,        1, 12441600, 5aa2da07703859a3dee080847dd17d46
>> 0,          5,          5,        1, 12441600, 733364c6be6af825057e905a6092937d
>> 0,          6,          6,        1, 12441600, 47edae2dec956a582b04babb745d26b0
>> 0,          7,          7,        1, 12441600, 4e45fe8268df4298d06a17ab8e46c3e9
>> 0,          8,          8,        1, 12441600, 960d722a3f8787c9191299a114c04174
>> 0,          9,          9,        1, 12441600, e759c07ee4834a9cf94bfcb4128e7612
>> $ ./ffmpeg_g -y -init_hw_device opencl:0.0 -i ~/video/test/jellyfish-120-mbps-
>> 4k-uhd-hevc-10bit.mkv -an -filter_hw_device opencl0 -vf
>> format=yuv420p,hwupload,nlmeans_opencl,hwdownload,format=yuv420p -
>> frames:v 10 -f framemd5 -
>> 0,          0,          0,        1, 12441600, 8b8805818076b23ae6f80ec2b5a349d4
>> 0,          1,          1,        1, 12441600, 7a7fdaa083dc337cfb6af31b643f30a3
>> [Parsed_nlmeans_opencl_2 @ 0x557c51fbfe80] integral image overflow
>> 2098545
>> 0,          2,          2,        1, 12441600, 68b390535adc5cfa0f8a7942c42a47ca
>> 0,          3,          3,        1, 12441600, c06b53ad90e0357e537df41b63d5b1dc
>> 0,          4,          4,        1, 12441600, 5aa2da07703859a3dee080847dd17d46
>> 0,          5,          5,        1, 12441600, 733364c6be6af825057e905a6092937d
>> 0,          6,          6,        1, 12441600, 47edae2dec956a582b04babb745d26b0
>> 0,          7,          7,        1, 12441600, 4e45fe8268df4298d06a17ab8e46c3e9
>> 0,          8,          8,        1, 12441600, 960d722a3f8787c9191299a114c04174
>> 0,          9,          9,        1, 12441600, e759c07ee4834a9cf94bfcb4128e7612
>>
>> Frame 1 gave an overflow on the second run, and gets a different answer, then
>> frame 2 in the same way on the third run?  I can't characterise when this
>> happens, it seems to be pretty random with low probability.
> 
> I tried to reproduce on my SKL and KBL, with Beignet and Neo. And didn't reproduce the issue.
> As I am encountering some network issue, I didn't get the video sample you provide (I am using https://4ksamples.com/ses-astra-uhd-test-2-2160p-uhdtv/ ), I can try later to download the same video as you.
> May be an OpenCL driver issue? I am not sure yet. So could you provide what hardware and opencl driver version you are using? So I can do some debugging if possible.

CFL-8700 with git Beignet.

It also sometimes happens with your sample (took >10 tries to get this):

$ ./ffmpeg_g -y -init_hw_device opencl:0.0 -i SES.Astra.UHD.Test.2.2160p.UHDTV.HEVC.x265-LiebeIst.mkv -an -filter_hw_device opencl0 -vf format=yuv420p,hwupload,nlmeans_opencl,hwdownload,format=yuv420p -frames:v 10 -f framemd5 -
...
0,          0,          0,        1, 12441600, 3eba6db2c5f693f6b3c8646a950084bc
0,          1,          1,        1, 12441600, b538be935c6bb38dbb6fdfba4ef035d1
0,          2,          2,        1, 12441600, dafec46e81cb9b50609671fd4c9db645
0,          3,          3,        1, 12441600, eaca33534b94031df566489dacacc9e5
0,          4,          4,        1, 12441600, 5e49c45c50b36516ce53c708dd16f512
0,          5,          5,        1, 12441600, 5d1be0800efd126670de20f468ae78b9
0,          6,          6,        1, 12441600, f022199f0519ff884ac2f3d8655e8489
0,          7,          7,        1, 12441600, df9daccf85ef00b99b4c086d890fbddc
0,          8,          8,        1, 12441600, 5a5b16518fce6021569e576505277a27
0,          9,          9,        1, 12441600, 095a68d27d322525e62fb182cb1b9aa1
...
$ ./ffmpeg_g -y -init_hw_device opencl:0.0 -i SES.Astra.UHD.Test.2.2160p.UHDTV.HEVC.x265-LiebeIst.mkv -an -filter_hw_device opencl0 -vf format=yuv420p,hwupload,nlmeans_opencl,hwdownload,format=yuv420p -frames:v 10 -f framemd5 -
...
0,          0,          0,        1, 12441600, 3eba6db2c5f693f6b3c8646a950084bc
0,          1,          1,        1, 12441600, b538be935c6bb38dbb6fdfba4ef035d1
0,          2,          2,        1, 12441600, dafec46e81cb9b50609671fd4c9db645
0,          3,          3,        1, 12441600, eaca33534b94031df566489dacacc9e5
0,          4,          4,        1, 12441600, 5e49c45c50b36516ce53c708dd16f512
0,          5,          5,        1, 12441600, 5d1be0800efd126670de20f468ae78b9
0,          6,          6,        1, 12441600, f022199f0519ff884ac2f3d8655e8489
[Parsed_nlmeans_opencl_2 @ 0x565343792d00] integral image overflow 2943427
0,          7,          7,        1, 12441600, bdac59f2b6c73af4ea81e75e6e7cc598
0,          8,          8,        1, 12441600, 5a5b16518fce6021569e576505277a27
0,          9,          9,        1, 12441600, 095a68d27d322525e62fb182cb1b9aa1
...

I'm unable to reproduce on a Mali T760, but the probability seems to be low and that platform is significantly slower / less parallel so it's possible it's just much less likely to happen there.

Thanks,

- Mark


More information about the ffmpeg-devel mailing list