[FFmpeg-trac] #7456(avcodec:new): aomdec decodes video faster than libaom-av1 decoder in ffmpeg

FFmpeg trac at avcodec.org
Tue Sep 25 05:26:14 EEST 2018


#7456: aomdec decodes video faster than libaom-av1 decoder in ffmpeg
---------------------------------+--------------------------------------
             Reporter:  kagami   |                     Type:  defect
               Status:  new      |                 Priority:  normal
            Component:  avcodec  |                  Version:  git-master
             Keywords:  libaom   |               Blocked By:
             Blocking:           |  Reproduced by developer:  0
Analyzed by developer:  0        |
---------------------------------+--------------------------------------
 I'm using
 [[https://aomedia.googlesource.com/aom/+/af3e5cc666cc1eb23cc50c7176db6b53d9b9d1da|libaom@af3e5cc]]
 compiled with `-DCONFIG_LOWBITDEPTH=1` and aomdec seems to decode sample
 video faster than ffmpeg wrapper for it:

 === Get sample

 {{{
 $ youtube-dl -f 399 -o dua.mp4 k2qgadSvNyU
 $ ffmpeg -i dua.mp4 -c copy -frames:v 250 dua.ivf
 }}}

 === Compare

 {{{
 $ time aomdec -o /dev/null --threads=8 dua.ivf
 246% cpu 2.987 total
 $ time ffmpeg -i dua.ivf -nostats -f null -
 ffmpeg version git-2018-09-22-59256de Copyright (c) 2000-2018 the FFmpeg
 developers
   built with gcc 8.2.0 (Gentoo 8.2.0-r2 p1.2)
   configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64
 --docdir=/usr/share/doc/ffmpeg-9999/html --mandir=/usr/share/man --enable-
 shared --cc=x86_64-pc-linux-gnu-gcc --cxx=x86_64-pc-linux-gnu-g++
 --ar=x86_64-pc-linux-gnu-ar --optflags='-O2 -pipe -march=native' --extra-
 cflags=-I/opt/cuda/include --nvccflags='-O2 -v --compiler-bindir
 "/usr/x86_64-pc-linux-gnu/gcc-bin/7.3.0" --compiler-options "-O2 -pipe
 -march=native" --linker-options "-O1,--as-needed"' --enable-cuda-sdk
 --disable-static --enable-avfilter --enable-avresample --disable-stripping
 --disable-libcelt --enable-nonfree --disable-indev=v4l2 --disable-
 outdev=v4l2 --disable-indev=oss --disable-indev=jack --disable-outdev=oss
 --enable-bzlib --disable-runtime-cpudetect --disable-debug --disable-
 gcrypt --disable-gnutls --disable-gmp --enable-gpl --enable-hardcoded-
 tables --enable-iconv --disable-libtls --disable-lzma --enable-network
 --enable-opencl --enable-openssl --enable-postproc --disable-libsmbclient
 --enable-ffplay --enable-sdl2 --disable-vaapi --enable-vdpau --enable-xlib
 --enable-libxcb --enable-libxcb-shm --enable-libxcb-xfixes --enable-zlib
 --disable-libcdio --disable-libiec61883 --disable-libdc1394 --disable-
 libcaca --disable-openal --enable-opengl --disable-libv4l2 --disable-
 libpulse --disable-libdrm --disable-libopencore-amrwb --disable-
 libopencore-amrnb --disable-libcodec2 --disable-libfdk-aac --disable-
 libopenjpeg --disable-libbluray --disable-libgme --disable-libgsm
 --disable-mmal --disable-libmodplug --enable-libopus --disable-libilbc
 --disable-librtmp --disable-libssh --disable-libspeex --enable-librsvg
 --enable-ffnvcodec --enable-libvorbis --enable-libvpx --disable-libzvbi
 --disable-appkit --disable-libbs2b --disable-chromaprint --disable-
 libflite --disable-frei0r --disable-libfribidi --enable-fontconfig
 --disable-ladspa --enable-libass --disable-lv2 --enable-libfreetype
 --disable-librubberband --disable-libzmq --enable-libzimg --disable-
 libsoxr --enable-pthreads --disable-libvo-amrwbenc --enable-libmp3lame
 --disable-libkvazaar --enable-libaom --disable-libopenh264 --disable-
 libsnappy --disable-libtheora --disable-libtwolame --disable-libwavpack
 --enable-libwebp --enable-libx264 --enable-libx265 --disable-libxvid
 --disable-gnutls --disable-armv5te --disable-armv6 --disable-armv6t2
 --disable-neon --disable-vfp --disable-vfpv3 --disable-armv8 --disable-
 mipsdsp --disable-mipsdspr2 --disable-mipsfpu --disable-altivec --disable-
 amd3dnow --disable-amd3dnowext --disable-avx2 --disable-fma3 --disable-
 fma4 --disable-xop --cpu=host --disable-doc --disable-htmlpages --enable-
 manpages
   libavutil      56. 19.101 / 56. 19.101
   libavcodec     58. 30.100 / 58. 30.100
   libavformat    58. 18.102 / 58. 18.102
   libavdevice    58.  4.103 / 58.  4.103
   libavfilter     7. 32.100 /  7. 32.100
   libavresample   4.  0.  0 /  4.  0.  0
   libswscale      5.  2.100 /  5.  2.100
   libswresample   3.  2.100 /  3.  2.100
   libpostproc    55.  2.100 / 55.  2.100
 [libaom-av1 @ 0x564868d0ee20] v1.0.0
 Input #0, ivf, from 'dua.ivf':
   Duration: 00:00:10.00, start: 0.000000, bitrate: 940 kb/s
     Stream #0:0: Video: av1 (Main) (av01 / 0x31307661), yuv420p(tv,
 bt709), 1920x1080, 25 fps, 25 tbr, 12800 tbn, 12800 tbc
 [libaom-av1 @ 0x564868d0f5a0] v1.0.0
 Stream mapping:
   Stream #0:0 -> #0:0 (av1 (libaom-av1) -> wrapped_avframe (native))
 Press [q] to stop, [?] for help
 Output #0, null, to 'pipe:':
   Metadata:
     encoder         : Lavf58.18.102
     Stream #0:0: Video: wrapped_avframe, yuv420p, 1920x1080, q=2-31, 200
 kb/s, 25 fps, 25 tbn, 25 tbc
     Metadata:
       encoder         : Lavc58.30.100 wrapped_avframe
 frame=  250 fps= 64 q=-0.0 Lsize=N/A time=00:00:10.00 bitrate=N/A
 speed=2.55x
 video:131kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown
 249% cpu 3.974 total
 }}}

 With `-DCONFIG_LOWBITDEPTH=0` decoding speed is about the same (slower for
 aomdec).

--
Ticket URL: <https://trac.ffmpeg.org/ticket/7456>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list