[FFmpeg-devel] libavcodec for iPhone
Måns Rullgård
mans
Wed Mar 11 12:30:47 CET 2009
"Kvikant, Christian \(Scilla\)" <kvide at scilla.tv> writes:
> M?ns wrote:
>
>>
>
>> Which translates into losing a lot of performance.
>
>> Have you tried the ffmpeg4iphone patches at all?
>
>>
>
> Static builds of ffmpeg4iphone works out of the box on jailbreaked
> devices.
>
> Compiling against trunc: Outside the libavcodec/arm directory there
> are two files that need modification: define sig_atomic_t in
> ffmpeg.c and modify the FASTDIV macro in libavutil/internal.h.
What is the problem with FASTDIV?
> In the arm directory nearly all assembly needs rewriting using older
> syntax and rewriting so that e.g. macros are flattened out. Current
> ffmpeg4iphone patch (ffmpeg4iphone-svn-2009-30-01-v0.0.4.patch) is
> against r16838 and not much arm code has been changed since then I
> think.
>
> As the company I'm working for is targeting official distribution we
> have to have our implementation to use shared libraries. As
> discussed earlier Apple's dynamic linker is not capable of correctly
> relocating static data in the text segments. For this reason we have
> had to rewrite simple_idct_armv6.S. It's not as optimized as M?ns'
> code but probably faster than what gcc would generate from the c
> code anyway. I will post this code here as soon as it is cleaned up
> a bit. Further optimizations are welcome.
I don't see anything that would need relocations there. Do you have
some more details?
> Also, it is worth noting that Apple recently released sample code on
> how to decode aac, amr and mp3 in hardware... In our testes doing
> audio decoding in hardware makes up for what is lost in giving a bit
> of slack in the idct optimizations.
Hardware audio decoding is all good, of course, but losing video
optimisations still means you can't play some videos you otherwise
could handle.
>> Assembler aside, is there anything you feel could be
>> made simpler?
>
> If I understand the idea behind the ifdefs in dsputil_arm.c only one
> set of arm instructions are actually used. But the Makefile includes
> all arm flavors whether they are used or not. IMHO this could be
> simplified/optimized.
Not all functions are optimised for all variants. The current code
ensures that the best available function is used.
> (Also there is a comment in dsputil_arm.c that ``..those functions
> should be suppressed ASAP..", so maybe someone else has been
> thinking about this as well)
That's about something else.
> For our project we have taken the GStreamer approach and it works great.
I don't know what the gstreamer approach is. Could you elaborate?
> (liboil's assembly had to be patched as well).
I'm not surprised.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list