On 06-10-2023 02:28, Dmitry Katsubo via ffmpeg-user wrote:
Dear community,

Re-posting the issue concerning too extensive memory usage by ffmpeg when 
converting the image to AV1. Any ideas how to overcome the issue (except of 
plugging more memory)?
Does the issue also arise when using aomenc directly? If so, file a bug with https://github.com/AOMediaCodec/libavif/issues

I have had a similar issue in the past with libsvtav1, wasn't ffmpeg's fault but a bug in the ecoder library, which was fixed thanks to my bug report.

Thanks in advance!

On 2023-09-27 23:03, Dmitry Katsubo wrote:
Dear FFmpeg users,

I've encountered OOM "issue" when encoding PNG image to AVIF using ffmpeg. I 
have an example of successful conversion for the image about 6000x1800x32, but a bit 
larger image 7147×1783×32 causes OOM.

Any idea why image raster of 7147×1783×4 ~ 50 MB requires ~ 3 GB of memory 
(which is at least ×50 more memory than raster)? And how to workaround the 
issue?

Many thanks in advance!

$ ffmpeg -i test.png -c:v libaom-av1 -crf 30 test.avif
ffmpeg version 5.1.3-1 Copyright (c) 2000-2022 the FFmpeg developers
   built with gcc 12 (Debian 12.2.0-14)
   configuration: --prefix=/usr --extra-version=1 --toolchain=hardened 
--libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu 
--arch=amd64 --enable-gpl --disable-stripping
--enable-gnutls --enable-ladspa --enable-libaom --enable-libass 
--enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio 
--enable-libcodec2 --enable-libdav1d --enable-libflite
--enable-libfontconfig --enable-libfreetype --enable-libfribidi 
--enable-libglslang --enable-libgme --enable-libgsm --enable-libjack 
--enable-libmp3lame --enable-libmysofa --enable-libopenjpeg
--enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq 
--enable-librist --enable-librubberband --enable-libshine --enable-libsnappy 
--enable-libsoxr --enable-libspeex
--enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora 
--enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx 
--enable-libwebp --enable-libx265 --enable-libxml2
--enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 
--enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 
--disable-sndio --enable-libjxl
--enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 
--enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r 
--enable-libx264 --enable-libplacebo
--enable-librav1e --enable-shared
Input #0, png_pipe, from 'test.png':
   Duration: N/A, bitrate: N/A
   Stream #0:0: Video: png, rgba(pc), 7147x1783 [SAR 2835:2835 DAR 7147:1783], 
25 fps, 25 tbr, 25 tbn
Stream mapping:
   Stream #0:0 -> #0:0 (png (native) -> av1 (libaom-av1))
Press [q] to stop, [?] for help
[libaom-av1 @ 0x55b79026db40] v3.6.0
Output #0, avif, to 'test.avif':
   Metadata:
     encoder         : Lavf59.27.100
   Stream #0:0: Video: av1 (av01 / 0x31307661), gbrp(pc, gbr/unknown/unknown, 
progressive), 7147x1783 [SAR 1:1 DAR 7147:1783], q=2-31, 25 fps, 12800 tbn 
(default)
     Metadata:
       encoder         : Lavc59.37.100 libaom-av1
     Side data:
       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Killed    1 fps=0.6 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   
0x

# free -t
                total        used        free      shared  buff/cache   
available
Mem:         8017020     4833284     1275188      119672     2330812     3183736
Swap:         102396      102396           0
Total:       8119416     4935680     1275188

 From /var/log/kernel.log

kernel: ffmpeg invoked oom-killer: 
gfp_mask=0x140dca(GFP_HIGHUSER_MOVABLE|__GFP_COMP|__GFP_ZERO), order=0, 
oom_score_adj=0
kernel: CPU: 0 PID: 466425 Comm: ffmpeg Not tainted 6.1.0-10-amd64 #1  Debian 
6.1.38-1
kernel: Call Trace:
kernel:  <TASK>
kernel:  dump_stack_lvl+0x44/0x5c
kernel:  dump_header+0x4a/0x211
kernel:  oom_kill_process.cold+0xb/0x10
kernel:  out_of_memory+0x1fd/0x4c0
kernel:  __alloc_pages_slowpath.constprop.0+0xc73/0xdc0
kernel:  __alloc_pages+0x305/0x330
kernel:  __folio_alloc+0x17/0x50
kernel:  ? policy_node+0x51/0x70
kernel:  vma_alloc_folio+0x9c/0x370
kernel:  __handle_mm_fault+0x92f/0xfa0
kernel:  handle_mm_fault+0xdb/0x2d0
kernel:  do_user_addr_fault+0x19c/0x570
kernel:  exc_page_fault+0x70/0x170
kernel:  asm_exc_page_fault+0x22/0x30
kernel: RIP: 0033:0x7f3cf8f7204a
...
kernel: Mem-Info:
kernel: active_anon:153032 inactive_anon:1662278 isolated_anon:0
kernel:  active_file:382 inactive_file:2194 isolated_file:98
kernel:  unevictable:11644 dirty:356 writeback:0
kernel:  slab_reclaimable:48560 slab_unreclaimable:43800
kernel:  mapped:9888 shmem:25129 pagetables:11368
kernel:  sec_pagetables:0 bounce:0
kernel:  kernel_misc_reclaimable:0
kernel:  free:24673 free_pcp:174 free_cma:0
kernel: 28496 total pagecache pages
kernel: 332 pages in swap cache
kernel: Free swap  = 0kB
kernel: Total swap = 102396kB
kernel: 2068610 pages RAM
kernel: 0 pages HighMem/MovableOnly
kernel: 64355 pages reserved
kernel: 0 pages hwpoisoned
kernel: Tasks state (memory values in pages):
kernel: [  pid  ]   uid   tgid total_vm     rss pgtables_bytes swapents 
oom_score_adj name
kernel: [ 466425]  1000 466425  1093593  808340        7086080        0         
    0 ffmpeg
...
kernel: 
oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=user.slice,mems_allowed=0,global_oom,task_memcg=/user.slice/user-1000.slice/session-c1.scope,task=ffmpeg,pid=466425,uid=1000
kernel: Out of memory: Killed process 466425 (ffmpeg) total-vm:4374372kB, 
anon-rss:3233360kB, file-rss:0kB, shmem-rss:0kB, UID:1000 pgtables:6920kB 
oom_score_adj:0



_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to