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)?

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
>
>

-- 
With best regards,
Dmitry

_______________________________________________
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