[FFmpeg-trac] #3910(avfilter:new): uspp filter using a lot memory

FFmpeg trac at avcodec.org
Mon Sep 1 01:07:16 CEST 2014


#3910: uspp filter using a lot memory
-------------------------------------+-------------------------------------
             Reporter:  chronek      |                    Owner:
                 Type:  enhancement  |                   Status:  new
             Priority:  wish         |                Component:  avfilter
              Version:  git-master   |               Resolution:
             Keywords:  uspp         |               Blocked By:
  mpfilter snow                      |  Reproduced by developer:  0
             Blocking:               |
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Changes (by cehoyos):

 * keywords:  uspp mpfilter => uspp mpfilter snow


Old description:

> Hello,
>  Trying to filter video by uspp and fixed qp, it taking almost all memory
> in my computer, it is imposible for me to filter in good resolution. I
> would like to see some improvments over memory usage in this filter, to
> be able filter 4k video with 8GB memory.
>
> How to reproduce:
>
> - filtering single impage 1920:1080 need about 5GB memory:
> ffmpeg.exe -i test.png -vf mp=uspp=7:6 out.png
>

> - filtering video 1920:1080 need about 6GB memory:
> ffmpeg.exe -loop 1 -i test.png -r 25 -t 00:00:30 -vf mp=uspp=7:6 out.avi
>

> - filtering video in 2560:1440 resolution need about 10GB memory:
> ffmpeg.exe -loop 1 -i test.png -r 25 -t 00:00:30 -vf
> scale=-1:1440,mp=uspp=7:6 out.avi
>

> - filtering video in 3840:2160 resolution ...
> i do not have that much memory ....
>

> Some log from filtering single image:
>
> C:\inne>ffmpeg.exe -i test.png -vf mp=uspp=7:6 out.png
> ffmpeg version N-65991-g8c63a0d Copyright (c) 2000-2014 the FFmpeg
> developers
>   built on Aug 30 2014 22:10:41 with gcc 4.8.3 (GCC)
>   configuration: --enable-gpl --enable-version3 --disable-w32threads
> --enable-av
> isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls
> --enab
> le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-
> libcaca --
> enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc
> --enable-lib
> modplug --enable-libmp3lame --enable-libopencore-amrnb --enable-
> libopencore-amrw
> b --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-
> libschroedinge
> r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-
> libtwolame --en
> able-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-
> libvorbis
>  --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264
> --enable-
> libx265 --enable-libxavs --enable-libxvid --enable-decklink --enable-zlib
>   libavutil      54.  7.100 / 54.  7.100
>   libavcodec     56.  1.100 / 56.  1.100
>   libavformat    56.  3.100 / 56.  3.100
>   libavdevice    56.  0.100 / 56.  0.100
>   libavfilter     5.  0.103 /  5.  0.103
>   libswscale      3.  0.100 /  3.  0.100
>   libswresample   1.  1.100 /  1.  1.100
>   libpostproc    53.  0.100 / 53.  0.100
> Input #0, image2, from 'test.png':
>   Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
>     Stream #0:0: Video: png, rgba, 1920x1080 [SAR 2835:2835 DAR 16:9], 25
> tbr, 2
> 5 tbn, 25 tbc
> [Parsed_mp_0 @ 0000000002afaae0] 'uspp' is a wrapped MPlayer filter
> (libmpcodecs
> ). This filter may be removed
> once it has been ported to a native libavfilter.
> Output #0, image2, to 'out.png':
>   Metadata:
>     encoder         : Lavf56.3.100
>     Stream #0:0: Video: png, rgb24, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31,
> 200 kb
> /s, 25 fps, 25 tbn, 25 tbc
>     Metadata:
>       encoder         : Lavc56.1.100 png
> Stream mapping:
>   Stream #0:0 -> #0:0 (png (native) -> png (native))
> Press [q] to stop, [?] for help
> frame=    1 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
> video:56kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
> muxing ov
> erhead: unknown
> % ffmpeg -i input ... output
> ffmpeg version
> built on ...
> }}}
> Patches should be submitted to the ffmpeg-devel mailing list and not this
> bug tracker.

New description:

 Hello,
  Trying to filter video by uspp and fixed qp, it taking almost all memory
 in my computer, it is imposible for me to filter in good resolution. I
 would like to see some improvments over memory usage in this filter, to be
 able filter 4k video with 8GB memory.

 How to reproduce:

 - filtering single impage 1920:1080 need about 5GB memory:
 ffmpeg.exe -i test.png -vf mp=uspp=7:6 out.png


 - filtering video 1920:1080 need about 6GB memory:
 ffmpeg.exe -loop 1 -i test.png -r 25 -t 00:00:30 -vf mp=uspp=7:6 out.avi


 - filtering video in 2560:1440 resolution need about 10GB memory:
 ffmpeg.exe -loop 1 -i test.png -r 25 -t 00:00:30 -vf
 scale=-1:1440,mp=uspp=7:6 out.avi


 - filtering video in 3840:2160 resolution ...
 i do not have that much memory ....


 Some log from filtering single image:
 {{{
 C:\inne>ffmpeg.exe -i test.png -vf mp=uspp=7:6 out.png
 ffmpeg version N-65991-g8c63a0d Copyright (c) 2000-2014 the FFmpeg
 developers
   built on Aug 30 2014 22:10:41 with gcc 4.8.3 (GCC)
   configuration: --enable-gpl --enable-version3 --disable-w32threads
 --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r
 --enable-gnutls --enable-iconv --enable-libass --enable-libbluray
 --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme
 --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame
 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
 --enable-libopus --enable-librtmp --enable-libschroedinger --enable-
 libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-
 libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-
 libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-
 libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-
 decklink --enable-zlib
   libavutil      54.  7.100 / 54.  7.100
   libavcodec     56.  1.100 / 56.  1.100
   libavformat    56.  3.100 / 56.  3.100
   libavdevice    56.  0.100 / 56.  0.100
   libavfilter     5.  0.103 /  5.  0.103
   libswscale      3.  0.100 /  3.  0.100
   libswresample   1.  1.100 /  1.  1.100
   libpostproc    53.  0.100 / 53.  0.100
 Input #0, image2, from 'test.png':
   Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
     Stream #0:0: Video: png, rgba, 1920x1080 [SAR 2835:2835 DAR 16:9], 25
 tbr, 25 tbn, 25 tbc
 [Parsed_mp_0 @ 0000000002afaae0] 'uspp' is a wrapped MPlayer filter
 (libmpcodecs). This filter may be removed once it has been ported to a
 native libavfilter.
 Output #0, image2, to 'out.png':
   Metadata:
     encoder         : Lavf56.3.100
     Stream #0:0: Video: png, rgb24, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31,
 200 kb/s, 25 fps, 25 tbn, 25 tbc
     Metadata:
       encoder         : Lavc56.1.100 png
 Stream mapping:
   Stream #0:0 -> #0:0 (png (native) -> png (native))
 Press [q] to stop, [?] for help
 frame=    1 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
 video:56kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown
 }}}

--

Comment:

 One third of the memory allocations happen in ff_snow_common_init(),
 another third in ff_snow_common_init_after_header().

--
Ticket URL: <https://trac.ffmpeg.org/ticket/3910#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list