[FFmpeg-trac] #5118(undetermined:new): leak with native encoders when receive container'ed input
FFmpeg
trac at avcodec.org
Sat Jan 2 01:54:32 CET 2016
#5118: leak with native encoders when receive container'ed input
-------------------------------------+-------------------------------------
Reporter: rogerdpack | Type: defect
Status: new | Priority: normal
Component: | Version:
undetermined | unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
How to reproduce (in one line...):
In my particular case, input from an mpegts file, and re-encode to mpeg4
video. Here is a one liner equivalent (you could optionally create the
.ts file before hand):
{{{
% ./ffmpeg_g -f lavfi -i color=c=red:size=10x10 -f mpegts - | ./ffmpeg_g
-i - -vcodec mpeg4 -f null out
ffmpeg version N-77595-g77eeaa2 Copyright (c) 2000-2015 the FFmpeg
developers
built with Apple LLVM version 7.0.2 (clang-700.1.81)
configuration: --enable-libx264 --enable-gpl
libavutil 55. 11.100 / 55. 11.100
libavcodec 57. 21.100 / 57. 21.100
libavformat 57. 21.100 / 57. 21.100
libavdevice 57. 0.100 / 57. 0.100
libavfilter 6. 22.100 / 6. 22.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
ffmpeg version N-77595-g77eeaa2 Copyright (c) 2000-2015 the FFmpeg
developers
built with Apple LLVM version 7.0.2 (clang-700.1.81)
configuration: --enable-libx264 --enable-gpl
libavutil 55. 11.100 / 55. 11.100
libavcodec 57. 21.100 / 57. 21.100
libavformat 57. 21.100 / 57. 21.100
libavdevice 57. 0.100 / 57. 0.100
libavfilter 6. 22.100 / 6. 22.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, lavfi, from 'color=c=red:size=100x100':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 100x100
[SAR 1:1 DAR 1:1], 25 tbr, 25 tbn, 25 tbc
[mpeg2video @ 0x7fb0b380c400] too many threads/slices (8), reducing to 7
Output #0, mpegts, to 'pipe:':
Metadata:
encoder : Lavf57.21.100
Stream #0:0: Video: mpeg2video (Main), yuv420p, 100x100 [SAR 1:1 DAR
1:1], q=2-31, 200 kb/s, 25 fps, 90k tbn, 25 tbc
Metadata:
encoder : Lavc57.21.100 mpeg2video
Side data:
unknown side data type 10 (24 bytes)
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg2video (native))
Press [q] to stop, [?] for help
Input #0, mpegts, from 'pipe:':
Duration: N/A, start: 1.440000, bitrate: N/A
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002),
yuv420p(tv), 100x100 [SAR 1:1 DAR 1:1], max. 104857 kb/s, 25 fps, 25 tbr,
90k tbn, 50 tbc
Output #0, null, to 'out':
Metadata:
encoder : Lavf57.21.100
Stream #0:0: Video: mpeg4, yuv420p, 10x10 [SAR 1:1 DAR 1:1], q=2-31,
200 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc57.21.100 mpeg4
Side data:
unknown side data type 10 (24 bytes)
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video (native) -> mpeg4 (native))
[mpeg2video @ 0x7fc134801600] too many threads/slices (8), reducing to 7
frame=26469 fps=5289 q=2.0 Lsize= 6101kB time=00:17:38.72 bitrate=
47.2kbits/s speed= 212x
video:2217kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 175.244614%
frame=26469 fps=5319 q=2.0 Lsize=N/A time=00:17:38.76 bitrate=N/A speed=
213x
video:334kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown
}}}
Watch the RAM usage of the receiving FFmpeg ramp up and never go down
(suspected leak) until all memory exhausted. Valgrind reports some
"indirectly lost" leaks. This one took me like two days to figure out.
Current work around is to use libx264 video encoder instead, no leak. If
it receives from "raw" input like testsrc, similarly, no leak. If you use
the video encoding codec of mpeg2video it seems to similarly leak. If you
use input from an "avi" then it appears to similarly leak. Seems to be
reproducible in both windows and OS X (at least). Thanks!
--
Ticket URL: <https://trac.ffmpeg.org/ticket/5118>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list