[FFmpeg-trac] #9771(avcodec:open): Small MAX_SLICES makes d3d11va (AVC) not bitperfect and causes artifacts (but not CUDA/NVDEC)
FFmpeg
trac at avcodec.org
Sun Jun 19 01:56:00 EEST 2022
#9771: Small MAX_SLICES makes d3d11va (AVC) not bitperfect and causes artifacts
(but not CUDA/NVDEC)
-------------------------------------+-------------------------------------
Reporter: Balling | Owner: (none)
Type: defect | Status: open
Priority: important | Component: avcodec
Version: git-master | Resolution:
Keywords: d3d11va, | Blocked By:
h264, hwaccel, dxva2 |
Blocking: | Reproduced by developer: 1
Analyzed by developer: 1 |
-------------------------------------+-------------------------------------
Description changed by Balling:
Old description:
> Some time ago I saw this commit in Nev's fork of ffmpeg:
> https://git.1f0.de/gitweb/?p=ffmpeg.git;a=commit;h=550cf548b546d386a6c634351ad0c250a3e47f3b;js=1
> ('''patch fixes this bug''')
>
> Then I saw this: https://github.com/wang-bin/QtAV/issues/923 (that file
> does not warn that "MAX_SLICES should be increased", may be another bug)
> And then I saw #628 and tested it. '''This is what I found:'''
>
> -hwaccel cuda and -c:v h264_cuvid input option to NV12 are bitperfect
> with each other and bitperfect with Nev's fork d3d11va, but not
> bitperfect with HEAD of our master branch d3d11va and on a sample from
> https://github.com/wang-bin/QtAV/files/1132086/example.zip causes the
> artifacts mentioned there and on sample from #628 even worse artifacts
> are present. I will also point out that there is no difference with SW
> decoding of sample in #628 between the master and the fork which means
> the increase in SAMPLES in avc bitsream does not matter on that sample.
> Of course someone should still check the reference decoder from
> https://vcgit.hhi.fraunhofer.de/jvet
> How to reproduce:
> {{{
> ffmpeg.exe -hwaccel nvdec -i error_4942.264 -f md5 -
> ffmpeg version N-106825-g30a49a5230-20220507 Copyright (c) 2000-2022 the
> FFmpeg developers
> built with gcc 11.2.0 (crosstool-NG 1.24.0.533_681aaef)
> configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static
> --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64
> --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug
> --enable-shared --disable-static --disable-w32threads --enable-pthreads
> --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype
> --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig
> --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf
> --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-
> libaribb24 --enable-avisynth --enable-libdav1d --enable-libdavs2
> --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-
> frei0r --enable-libgme --enable-libass --enable-libbluray --enable-libjxl
> --enable-libmp3lame --enable-libopus --enable-librist --enable-libtheora
> --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-
> libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264
> --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-
> librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-
> libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d
> --disable-libdrm --disable-vaapi --enable-libvidstab --enable-vulkan
> --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265
> --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi
> --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-
> ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-
> version=20220507
> libavutil 57. 24.101 / 57. 24.101
> libavcodec 59. 27.100 / 59. 27.100
> libavformat 59. 23.100 / 59. 23.100
> libavdevice 59. 6.100 / 59. 6.100
> libavfilter 8. 38.100 / 8. 38.100
> libswscale 6. 6.100 / 6. 6.100
> libswresample 4. 6.100 / 4. 6.100
> libpostproc 56. 5.100 / 56. 5.100
> Input #0, h264, from 'error_4942.264':
> Duration: N/A, bitrate: N/A
> Stream #0:0: Video: h264 (High), yuv420p(progressive), 352x288, 30 fps,
> 30 tbr, 1200k tbn
> Stream mapping:
> Stream #0:0 -> #0:0 (h264 (native) -> rawvideo (native))
> Press [q] to stop, [?] for help
> Output #0, md5, to 'pipe:':
> Metadata:
> encoder : Lavf59.23.100
> Stream #0:0: Video: rawvideo (NV12 / 0x3231564E), nv12(progressive),
> 352x288, q=2-31, 36495 kb/s, 30 fps, 30 tbn
> Metadata:
> encoder : Lavc59.27.100 rawvideo
> [h264 @ 000001115560d9c0] Possibly too many slices (110 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (111 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (112 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (116 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (117 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (118 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (119 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (120 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (121 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (122 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (123 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (124 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (99 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (100 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (32 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (33 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (34 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (35 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (36 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (37 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (38 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (39 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (40 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (41 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (42 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (43 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (44 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (45 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> [h264 @ 000001115560d9c0] Possibly too many slices (46 >= 32), increase
> MAX_SLICES and recompile if there are artifacts
> ...
>
> MD5=ab07a0a0a82a2e9a6486a8b6994eb505
> frame= 299 fps=0.0 q=-0.0 Lsize= 0kB time=00:00:09.96 bitrate=
> 0.0kbits/s speed=32.7x
> video:44402kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
> muxing overhead: unknown
> }}}
>
>
>
> {{{
> ffmpeg.exe -c:v h264_cuvid -i error_4942.264 -f md5 -
> ffmpeg version N-106825-g30a49a5230-20220507 Copyright (c) 2000-2022 the
> FFmpeg developers
> built with gcc 11.2.0 (crosstool-NG 1.24.0.533_681aaef)
> configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static
> --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64
> --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug
> --enable-shared --disable-static --disable-w32threads --enable-pthreads
> --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype
> --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig
> --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf
> --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-
> libaribb24 --enable-avisynth --enable-libdav1d --enable-libdavs2
> --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-
> frei0r --enable-libgme --enable-libass --enable-libbluray --enable-libjxl
> --enable-libmp3lame --enable-libopus --enable-librist --enable-libtheora
> --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-
> libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264
> --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-
> librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-
> libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d
> --disable-libdrm --disable-vaapi --enable-libvidstab --enable-vulkan
> --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265
> --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi
> --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-
> ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-
> version=20220507
> libavutil 57. 24.101 / 57. 24.101
> libavcodec 59. 27.100 / 59. 27.100
> libavformat 59. 23.100 / 59. 23.100
> libavdevice 59. 6.100 / 59. 6.100
> libavfilter 8. 38.100 / 8. 38.100
> libswscale 6. 6.100 / 6. 6.100
> libswresample 4. 6.100 / 4. 6.100
> libpostproc 56. 5.100 / 56. 5.100
> Input #0, h264, from 'error_4942.264':
> Duration: N/A, bitrate: N/A
> Stream #0:0: Video: h264 (High), yuv420p(progressive), 352x288, 30 fps,
> 30 tbr, 1200k tbn
> Stream mapping:
> Stream #0:0 -> #0:0 (h264 (h264_cuvid) -> rawvideo (native))
> Press [q] to stop, [?] for help
> Output #0, md5, to 'pipe:':
> Metadata:
> encoder : Lavf59.23.100
> Stream #0:0: Video: rawvideo (NV12 / 0x3231564E), nv12(tv,
> progressive), 352x288 [SAR 1:1 DAR 11:9], q=2-31, 36495 kb/s, 30 fps, 30
> tbn
> Metadata:
> encoder : Lavc59.27.100 rawvideo
> MD5=ab07a0a0a82a2e9a6486a8b6994eb505 0kB time=00:00:00.00 bitrate=N/A
> speed= 0x
> frame= 299 fps=0.0 q=-0.0 Lsize= 0kB time=00:00:09.96 bitrate=
> 0.0kbits/s speed=43.7x
> video:44402kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
> muxing overhead: unknown
> }}}
>
> {{{
> ffmpeg.exe -hwaccel d3d11va -i error_4942.264 -f md5 -
> ...
> MD5=2503d2e721d32182a09538f73d534255
> }}}
>
> And finaly Nev's fork:
>
> {{{
> Lav\ffmpeg.exe -hwaccel d3d11va -i error_4942.264 -f md5 -
>
> ffmpeg version git-2022-01-04-176dfd865e-20220331 Copyright (c) 2000-2022
> the FFmpeg developers
> built with gcc 11.2.0 (crosstool-NG 1.24.0.533_681aaef)
> configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static
> --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64
> --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug
> --enable-shared --disable-static --disable-w32threads --enable-pthreads
> --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype
> --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig
> --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf
> --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-
> avisynth --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac
> --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme
> --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus
> --enable-librist --enable-libtheora --enable-libvpx --enable-libwebp
> --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-
> libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-
> libopenmpt --enable-librav1e --enable-librubberband --enable-schannel
> --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1
> --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi
> --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-
> libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-
> libxvid --enable-libzimg --enable-libzvbi --extra-
> cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread
> --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20220331
> libavutil 57. 16.100 / 57. 16.100
> libavcodec 59. 17.100 / 59. 17.100
> libavformat 59. 15.100 / 59. 15.100
> libavdevice 59. 3.100 / 59. 3.100
> libavfilter 8. 23.100 / 8. 23.100
> libswscale 6. 3.100 / 6. 3.100
> libswresample 4. 2.100 / 4. 2.100
> libpostproc 56. 2.100 / 56. 2.100
> Input #0, h264, from 'error_4942.264':
> Duration: N/A, bitrate: N/A
> Stream #0:0: Video: h264 (High), yuv420p(progressive), 352x288, 30 fps,
> 30 tbr, 1200k tbn
> Stream mapping:
> Stream #0:0 -> #0:0 (h264 (native) -> rawvideo (native))
> Press [q] to stop, [?] for help
> Output #0, md5, to 'pipe:':
> Metadata:
> encoder : Lavf59.15.100
> Stream #0:0: Video: rawvideo (NV12 / 0x3231564E), nv12(progressive),
> 352x288, q=2-31, 36495 kb/s, 30 fps, 30 tbn
> Metadata:
> encoder : Lavc59.17.100 rawvideo
> MD5=ab07a0a0a82a2e9a6486a8b6994eb505 0kB time=00:00:00.00 bitrate=N/A
> speed= 0x
> frame= 299 fps=0.0 q=-0.0 Lsize= 0kB time=00:00:09.96 bitrate=
> 0.0kbits/s speed=20.8x
> video:44402kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
> muxing overhead: unknown
> }}}
>
> Same for the other sample. Same happens in VLC when you remux either
> sample to mp4 (also see mpv.com -hwdec=d3d11va error_4942.264 or mpv.com
> -hwdec=dxva2 error_4942.264 but not mpv.com -hwdec=nvdec -gpu-api=vulkan
> error_4942.264). Does not happen in Davinci since that uses directly
> nvdec which is not affected (I know since it also supports HW accel of
> HEVC 4:4:4 10 bit). '''dxva2 is also affected thoogh on Nev's fork it is
> broken.'''
> '''Patches should be submitted to the ffmpeg-devel mailing list and not
> this bug tracker.''' does not apply, patch is simple, but the bug may be
> somehow fixed differently, I am sure, since SW decoder MAX_SLICES do not
> effect anything.
New description:
Some time ago I saw this commit in Nev's fork of ffmpeg:
https://git.1f0.de/gitweb/?p=ffmpeg.git;a=commit;h=550cf548b546d386a6c634351ad0c250a3e47f3b;js=1
('''patch fixes this bug''')
Then I saw this: https://github.com/wang-bin/QtAV/issues/923 (that file
does not warn that "MAX_SLICES should be increased", may be another bug)
And then I saw #628 and tested it. '''This is what I found:'''
-hwaccel cuda and -c:v h264_cuvid input option to NV12 are bitperfect with
each other and bitperfect with Nev's fork d3d11va, but not bitperfect with
HEAD of our master branch d3d11va and on a sample from https://github.com
/wang-bin/QtAV/files/1132086/example.zip causes the artifacts mentioned
there and on sample from #628 even worse artifacts are present. I will
also point out that there is no difference with SW decoding of sample in
#628 between the master and the fork which means the increase in SAMPLES
in avc bitsream does not matter on that sample. Of course someone should
still check the reference decoder from
https://vcgit.hhi.fraunhofer.de/jvet
How to reproduce:
{{{
ffmpeg.exe -hwaccel nvdec -i error_4942.264 -f md5 -
ffmpeg version N-106825-g30a49a5230-20220507 Copyright (c) 2000-2022 the
FFmpeg developers
built with gcc 11.2.0 (crosstool-NG 1.24.0.533_681aaef)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static
--pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64
--target-os=mingw32 --enable-gpl --enable-version3 --disable-debug
--enable-shared --disable-static --disable-w32threads --enable-pthreads
--enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype
--enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig
--enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf
--disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-
libaribb24 --enable-avisynth --enable-libdav1d --enable-libdavs2
--disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r
--enable-libgme --enable-libass --enable-libbluray --enable-libjxl
--enable-libmp3lame --enable-libopus --enable-librist --enable-libtheora
--enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-
libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264
--enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-
librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-
libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d
--disable-libdrm --disable-vaapi --enable-libvidstab --enable-vulkan
--enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265
--enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi
--extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-
ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-
version=20220507
libavutil 57. 24.101 / 57. 24.101
libavcodec 59. 27.100 / 59. 27.100
libavformat 59. 23.100 / 59. 23.100
libavdevice 59. 6.100 / 59. 6.100
libavfilter 8. 38.100 / 8. 38.100
libswscale 6. 6.100 / 6. 6.100
libswresample 4. 6.100 / 4. 6.100
libpostproc 56. 5.100 / 56. 5.100
Input #0, h264, from 'error_4942.264':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (High), yuv420p(progressive), 352x288, 30 fps,
30 tbr, 1200k tbn
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> rawvideo (native))
Press [q] to stop, [?] for help
Output #0, md5, to 'pipe:':
Metadata:
encoder : Lavf59.23.100
Stream #0:0: Video: rawvideo (NV12 / 0x3231564E), nv12(progressive),
352x288, q=2-31, 36495 kb/s, 30 fps, 30 tbn
Metadata:
encoder : Lavc59.27.100 rawvideo
[h264 @ 000001115560d9c0] Possibly too many slices (110 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (111 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (112 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (116 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (117 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (118 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (119 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (120 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (121 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (122 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (123 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (124 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (99 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (100 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (32 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (33 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (34 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (35 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (36 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (37 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (38 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (39 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (40 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (41 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (42 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (43 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (44 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (45 >= 32), increase
MAX_SLICES and recompile if there are artifacts
[h264 @ 000001115560d9c0] Possibly too many slices (46 >= 32), increase
MAX_SLICES and recompile if there are artifacts
...
MD5=ab07a0a0a82a2e9a6486a8b6994eb505
frame= 299 fps=0.0 q=-0.0 Lsize= 0kB time=00:00:09.96 bitrate=
0.0kbits/s speed=32.7x
video:44402kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown
}}}
{{{
ffmpeg.exe -c:v h264_cuvid -i error_4942.264 -f md5 -
ffmpeg version N-106825-g30a49a5230-20220507 Copyright (c) 2000-2022 the
FFmpeg developers
built with gcc 11.2.0 (crosstool-NG 1.24.0.533_681aaef)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static
--pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64
--target-os=mingw32 --enable-gpl --enable-version3 --disable-debug
--enable-shared --disable-static --disable-w32threads --enable-pthreads
--enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype
--enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig
--enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf
--disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-
libaribb24 --enable-avisynth --enable-libdav1d --enable-libdavs2
--disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r
--enable-libgme --enable-libass --enable-libbluray --enable-libjxl
--enable-libmp3lame --enable-libopus --enable-librist --enable-libtheora
--enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-
libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264
--enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-
librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-
libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d
--disable-libdrm --disable-vaapi --enable-libvidstab --enable-vulkan
--enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265
--enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi
--extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-
ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-
version=20220507
libavutil 57. 24.101 / 57. 24.101
libavcodec 59. 27.100 / 59. 27.100
libavformat 59. 23.100 / 59. 23.100
libavdevice 59. 6.100 / 59. 6.100
libavfilter 8. 38.100 / 8. 38.100
libswscale 6. 6.100 / 6. 6.100
libswresample 4. 6.100 / 4. 6.100
libpostproc 56. 5.100 / 56. 5.100
Input #0, h264, from 'error_4942.264':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (High), yuv420p(progressive), 352x288, 30 fps,
30 tbr, 1200k tbn
Stream mapping:
Stream #0:0 -> #0:0 (h264 (h264_cuvid) -> rawvideo (native))
Press [q] to stop, [?] for help
Output #0, md5, to 'pipe:':
Metadata:
encoder : Lavf59.23.100
Stream #0:0: Video: rawvideo (NV12 / 0x3231564E), nv12(tv, progressive),
352x288 [SAR 1:1 DAR 11:9], q=2-31, 36495 kb/s, 30 fps, 30 tbn
Metadata:
encoder : Lavc59.27.100 rawvideo
MD5=ab07a0a0a82a2e9a6486a8b6994eb505 0kB time=00:00:00.00 bitrate=N/A
speed= 0x
frame= 299 fps=0.0 q=-0.0 Lsize= 0kB time=00:00:09.96 bitrate=
0.0kbits/s speed=43.7x
video:44402kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown
}}}
{{{
ffmpeg.exe -hwaccel d3d11va -i error_4942.264 -f md5 -
...
MD5=2503d2e721d32182a09538f73d534255
}}}
And finaly Nev's fork:
{{{
Lav\ffmpeg.exe -hwaccel d3d11va -i error_4942.264 -f md5 -
ffmpeg version git-2022-01-04-176dfd865e-20220331 Copyright (c) 2000-2022
the FFmpeg developers
built with gcc 11.2.0 (crosstool-NG 1.24.0.533_681aaef)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static
--pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64
--target-os=mingw32 --enable-gpl --enable-version3 --disable-debug
--enable-shared --disable-static --disable-w32threads --enable-pthreads
--enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype
--enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig
--enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf
--disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-
avisynth --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac
--enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme
--enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus
--enable-librist --enable-libtheora --enable-libvpx --enable-libwebp
--enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-
libopenmpt --enable-librav1e --enable-librubberband --enable-schannel
--enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1
--enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi
--enable-libvidstab --enable-vulkan --enable-libshaderc --enable-
libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-
libxvid --enable-libzimg --enable-libzvbi --extra-
cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread
--extra-ldexeflags= --extra-libs=-lgomp --extra-version=20220331
libavutil 57. 16.100 / 57. 16.100
libavcodec 59. 17.100 / 59. 17.100
libavformat 59. 15.100 / 59. 15.100
libavdevice 59. 3.100 / 59. 3.100
libavfilter 8. 23.100 / 8. 23.100
libswscale 6. 3.100 / 6. 3.100
libswresample 4. 2.100 / 4. 2.100
libpostproc 56. 2.100 / 56. 2.100
Input #0, h264, from 'error_4942.264':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (High), yuv420p(progressive), 352x288, 30 fps,
30 tbr, 1200k tbn
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> rawvideo (native))
Press [q] to stop, [?] for help
Output #0, md5, to 'pipe:':
Metadata:
encoder : Lavf59.15.100
Stream #0:0: Video: rawvideo (NV12 / 0x3231564E), nv12(progressive),
352x288, q=2-31, 36495 kb/s, 30 fps, 30 tbn
Metadata:
encoder : Lavc59.17.100 rawvideo
MD5=ab07a0a0a82a2e9a6486a8b6994eb505 0kB time=00:00:00.00 bitrate=N/A
speed= 0x
frame= 299 fps=0.0 q=-0.0 Lsize= 0kB time=00:00:09.96 bitrate=
0.0kbits/s speed=20.8x
video:44402kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown
}}}
Same for the other sample. Same happens in VLC when you remux either
sample to mp4 (also see mpv.com -hwdec=d3d11va error_4942.264 or mpv.com
-hwdec=dxva2 error_4942.264 but not mpv.com -hwdec=nvdec -gpu-api=vulkan
error_4942.264). Does not happen in Davinci since that uses directly nvdec
which is not affected (I know since it also supports HW accel of HEVC
4:4:4 10 bit). '''dxva2 is also affected though on Nev's fork it is
broken.'''
'''Patches should be submitted to the ffmpeg-devel mailing list and not
this bug tracker.''' does not apply, patch is simple, but the bug may be
somehow fixed differently, I am sure, since SW decoder MAX_SLICES do not
effect anything.
--
--
Ticket URL: <https://trac.ffmpeg.org/ticket/9771#comment:3>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list