#2122 closed defect (fixed)
Commit 75d900d makes skipping in the input while using swresample very slow
Reported by: | eelco | Owned by: | Michael Niedermayer |
---|---|---|---|
Priority: | important | Component: | swresample |
Version: | git-master | Keywords: | regression |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description
In commit 75d900d52edb281eb4ab4989800e75abe7555937 the memory allocation method used for allocating memory for audio switched to using av_mallocz (from av_malloc). I’m curious to learn why this change was made, because it makes skipping in a file (using -ss before the input) several orders of magnitude slower.
Version 1.0:
% time ./ffmpeg -ss 2 -i ~/Downloads/example.mkv -t 1 -vcodec copy -f matroska -map 0:0 -acodec ac3 -async 1 -map 0:1 -y /dev/null ffmpeg version 1.0 Copyright (c) 2000-2012 the FFmpeg developers built on Dec 28 2012 14:35:11 with llvm-gcc 4.2.1 (LLVM build 2336.11.00) ... frame= 74 fps=7.2 q=-1.0 Lsize= 0kB time=00:00:01.01 bitrate= 0.0kbits/s video:28kB audio:56kB subtitle:0 global headers:0kB muxing overhead -100.000000% 10.32 real 3.52 user 6.74 sys
Version 1.0 with commit 75d900d reverted:
% time ./ffmpeg -ss 2 -i ~/Downloads/example.mkv -t 1 -vcodec copy -f matroska -map 0:0 -acodec ac3 -async 1 -map 0:1 -y /dev/null ffmpeg version 1.0 Copyright (c) 2000-2012 the FFmpeg developers built on Dec 28 2012 14:35:11 with llvm-gcc 4.2.1 (LLVM build 2336.11.00) ... frame= 74 fps=0.0 q=-1.0 Lsize= 0kB time=00:00:01.01 bitrate= 0.0kbits/s video:28kB audio:56kB subtitle:0 global headers:0kB muxing overhead -100.000000% 0.46 real 0.05 user 0.35 sys
(Note that it wasn’t a clean build, so the ‘built on’ banner didn’t change.)
I also tried testing with an -ss value of 100, but killed it after a about 5 minutes. With the commit reverted it takes about a second.
We found the cause of the problem by profiling ffmpeg and saw that all time was being spent in av_mallocz. I haven’t looked into it any further, but I suspect that the av_mallocz call exposes a bug that previously didn’t cause any problem.
I also checked the 1.1 release, the problem is still there.
Change History (7)
comment:1 by , 12 years ago
Keywords: | regression added |
---|
comment:2 by , 12 years ago
Yes.
time ./ffmpeg -ss 2 -i ~/Downloads/example.mkv -t 1 -vcodec copy -f matroska -map 0:0 -acodec ac3 -async 1 -map 0:1 -y /dev/null ffmpeg version N-48635-g8615970 Copyright (c) 2000-2013 the FFmpeg developers built on Jan 8 2013 15:38:39 with llvm-gcc 4.2.1 (LLVM build 2336.11.00) configuration: --prefix=/Users/eelco/Projects/Beamer/FFmpeg/build --enable-gpl --enable-version3 --enable-libx264 --disable-shared --enable-static --enable-libtheora --enable-libvorbis --enable-libvo-aacenc --disable-doc --extra-cflags='-DMACOSX_DEPLOYMENT_TARGET=10.6 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -mmacosx-version-min=10.6 -I/Users/eelco/Projects/Beamer/FFmpeg/build/include' --extra-ldflags='-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -mmacosx-version-min=10.6 -L/Users/eelco/Projects/Beamer/FFmpeg/build/lib' libavutil 52. 13.100 / 52. 13.100 libavcodec 54. 86.100 / 54. 86.100 libavformat 54. 59.106 / 54. 59.106 libavdevice 54. 3.102 / 54. 3.102 libavfilter 3. 32.100 / 3. 32.100 libswscale 2. 1.103 / 2. 1.103 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 Input #0, matroska,webm, from '/Users/eelco/Downloads/example.mkv': Metadata: title : Project X Extended Cut (2012) – Release for HDCLUB by Pro_Rock_ creation_time : 2012-08-05 02:07:48 Duration: 01:32:59.79, start: 0.000000, bitrate: 11159 kb/s Stream #0:0(eng): Video: h264 (High), yuv420p, 1280x720, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default) Stream #0:1(rus): Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s Metadata: title : Дубляж Stream #0:2(rus): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default) Metadata: title : VO MaksCiganov Stream #0:3(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s Metadata: title : Оригинал Stream #0:4(rus): Subtitle: subrip (default) Metadata: title : Force Stream #0:5(rus): Subtitle: subrip Metadata: title : Full Stream #0:6(eng): Subtitle: subrip Metadata: title : Оригинал -async is forwarded to lavfi similarly to -af aresample=async=1:min_hard_comp=0.100000. Output #0, matroska, to '/dev/null': Metadata: title : Project X Extended Cut (2012) – Release for HDCLUB by Pro_Rock_ encoder : Lavf54.59.106 Stream #0:0(eng): Video: h264, yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 23.98 fps, 1k tbn, 1k tbc (default) Stream #0:1(rus): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s Metadata: title : Дубляж Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (ac3 -> ac3) Press [q] to stop, [?] for help frame= 74 fps=6.5 q=-1.0 Lsize= 86kB time=00:00:01.01 bitrate= 690.1kbits/s video:28kB audio:56kB subtitle:0 global headers:0kB muxing overhead 1.790181% 11.46 real 3.66 user 7.47 sys
comment:3 by , 12 years ago
Priority: | normal → important |
---|---|
Version: | 1.1 → git-master |
comment:4 by , 12 years ago
I'm not able to reproduce with a local mkv. Would you mind uploading a sample or point one on http://samples.ffmpeg.org/ ?
comment:5 by , 12 years ago
I found out it only seems reproducible with a 5.1 audio track. The test below is with the 720p version of Sintel, downloaded from http://www.sintel.org/download
time ./ffmpeg -ss 2 -i ~/Downloads/Sintel.2010.720p.mkv -t 1 -vcodec copy -f matroska -map 0:0 -acodec ac3 -async 1 -map 0:1 -y /dev/null ffmpeg version N-48635-g8615970 Copyright (c) 2000-2013 the FFmpeg developers built on Jan 8 2013 15:38:39 with llvm-gcc 4.2.1 (LLVM build 2336.11.00) configuration: --prefix=/Users/eelco/Projects/Beamer/FFmpeg/build --enable-gpl --enable-version3 --enable-libx264 --disable-shared --enable-static --enable-libtheora --enable-libvorbis --enable-libvo-aacenc --disable-doc --extra-cflags='-DMACOSX_DEPLOYMENT_TARGET=10.6 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -mmacosx-version-min=10.6 -I/Users/eelco/Projects/Beamer/FFmpeg/build/include' --extra-ldflags='-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -mmacosx-version-min=10.6 -L/Users/eelco/Projects/Beamer/FFmpeg/build/lib' libavutil 52. 13.100 / 52. 13.100 libavcodec 54. 86.100 / 54. 86.100 libavformat 54. 59.106 / 54. 59.106 libavdevice 54. 3.102 / 54. 3.102 libavfilter 3. 32.100 / 3. 32.100 libswscale 2. 1.103 / 2. 1.103 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 Input #0, matroska,webm, from '/Users/eelco/Downloads/Sintel.2010.720p.mkv': Metadata: creation_time : 2011-04-24 17:20:33 Duration: 00:14:48.03, start: 0.000000, bitrate: 6071 kb/s Chapter #0.0: start 0.000000, end 103.125000 Metadata: title : Chapter 01 Chapter #0.1: start 103.125000, end 148.667000 Metadata: title : Chapter 02 Chapter #0.2: start 148.667000, end 349.792000 Metadata: title : Chapter 03 Chapter #0.3: start 349.792000, end 437.208000 Metadata: title : Chapter 04 Chapter #0.4: start 437.208000, end 472.075000 Metadata: title : Chapter 05 Chapter #0.5: start 472.075000, end 678.833000 Metadata: title : Chapter 06 Chapter #0.6: start 678.833000, end 744.083000 Metadata: title : Chapter 07 Chapter #0.7: start 744.083000, end 888.032000 Metadata: title : Chapter 08 Stream #0:0(eng): Video: h264 (High), yuv420p, 1280x544, SAR 1:1 DAR 40:17, 24 fps, 24 tbr, 1k tbn, 48 tbc Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 640 kb/s Metadata: title : AC3 5.1 @ 640 Kbps Stream #0:2(ger): Subtitle: subrip Stream #0:3(eng): Subtitle: subrip Stream #0:4(spa): Subtitle: subrip Stream #0:5(fre): Subtitle: subrip Stream #0:6(ita): Subtitle: subrip Stream #0:7(dut): Subtitle: subrip Stream #0:8(pol): Subtitle: subrip Stream #0:9(por): Subtitle: subrip Stream #0:10(rus): Subtitle: subrip Stream #0:11(vie): Subtitle: subrip -async is forwarded to lavfi similarly to -af aresample=async=1:min_hard_comp=0.100000. Output #0, matroska, to '/dev/null': Metadata: encoder : Lavf54.59.106 Chapter #0.0: start 0.000000, end 1.000000 Metadata: title : Chapter 01 Stream #0:0(eng): Video: h264, yuv420p, 1280x544 [SAR 1:1 DAR 40:17], q=2-31, 24 fps, 1k tbn, 1k tbc Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s Metadata: title : AC3 5.1 @ 640 Kbps Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (ac3 -> ac3) Press [q] to stop, [?] for help frame= 74 fps=7.1 q=-1.0 Lsize= 305kB time=00:00:01.01 bitrate=2454.6kbits/s video:248kB audio:56kB subtitle:0 global headers:0kB muxing overhead 0.512768% 10.44 real 3.72 user 6.71 sys
comment:6 by , 12 years ago
Reproduced by developer: | set |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:7 by , 12 years ago
Great! Thank you for fixing it.
For documentation, this is the commit that fixes it: http://git.videolan.org/?p=ffmpeg.git;a=commit;h=dc6588421e09d755655e5def870b2ebed515bc9d
Is the problem also reproducible with current git head?
Please provide your command line together with complete, uncut console output.