[Ffmpeg-devel] dv encoder speed
Sat Aug 27 19:15:56 CEST 2005
As I posted in another message, I need the dv encoder to run a little
bit faster so I can do realtime processing on my AMD64 machine.
My test setup is using ffmpeg, without shared libav* libs. I took the
file "pond.dv" from libdv's site, and used ffmpeg to convert the audio
to 48000 samples/sec. This file is my source file. (I also tried with
a file generated by a modified output_example. But this file was
re-encoded about 30% faster than pond.dv. So, I think it is not a
good source to use for time measurement.)
The command I am testing with is "ffmpeg -y -i source.dv dest.dv". I
tried using output_example, after modifying it to give a similar file
So far I have tried compiler tricks like:
- Adding flag -march=athlon64. This gains a tiny speec increase.
- Compiling with GCC 4.0.1. I read somewhere that it makes better
code for x86_64. Not by my results! It is about 0.1% slower.
- Experimenting with a lot of the -f* optimization flags. None give
a faster result than standard -O3.
Clearly, any speed increase is not going to come from stupid compiler tricks.
Profiling gives this result:
gprof ffmpeg | head
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
58.58 127.29 127.29 247050 0.00 0.00 dv_encode_video_segment
11.29 151.83 24.54 190769 0.00 0.00 dv_guess_qnos
7.99 169.19 17.37 10224352 0.00 0.00 dv_decode_ac
5.13 180.33 11.14 6204629 0.00 0.00 ff_fdct_sse2
4.48 190.06 9.73 6457910 0.00 0.00 ff_simple_idct_put_mmx
So most of the time is getting spent in dv_encode_video_segment. No
suprise. I need to determine how to get finer-grained profiling data.
markrages at gmail
You think that it is a secret, but it never has been one.
- fortune cookie
More information about the ffmpeg-devel