[theora-dev] theorarm build

Dave Milici davemilici at sbcglobal.net
Sat Jul 24 11:51:18 PDT 2010

Hi all--

I tried building the ARM-optimized theora codec from the theorarm- 
merge-branch, and encountered the following compile and runtime  
problems before getting something to run. If there is another way to  
build it, it would be nice to know, but I got the sense that its  
current state in svn is incomplete.

I'm using a gcc cross-compiler for ARM on an x86 Linux PC. After  
running configure for arm-linux-gcc, I had to make the following mods  

(1) The assembler .s files in ./lib/arm needed to be converted to gcc- 
compatible format with arm2gcc.pl script.

(2) When turning off ARMV6 and ARM_HAS_NEON switches, the ARMfrag.s  
files had a misplaced .endif directive that needed to be relocated.

(3) The CCASFLAGS options needed to be set to "-Xassembler -Iarm/" to  
locate dependent .s files for assembly.

(4) The ARMstate.c file had a couple mismatched function parameter  
types which needed fixing.

(5) When linking completed, the resulting libtheora.so binary was not  
able to load due to unresolved symbols. The missing functions were  
in .s files which were not included in the ./lib makefile object list.

(6) Modifying the makefile to assemble the additional .s files yielded  
a libtheora.so binary which loaded but segfaulted in one of the added  

(7) The extra functions missing from the original makefile were  
conditionally linked instead of their C versions based on OC_ARM_ASM  
Undefining OC_ARM_ASM in these C functions and relinking the original  
set of assembler object files finally yielded a usable library.

The resulting libtheora.so was noticeably faster than its C-only  
version on an ARM926 device, so this would be worthwhile to pursue. If  
interested I can post patches when I get back to my workstation.  
However I'd like to avoid any further confusion or unnecessary effort  
if there's active development in this branch.

--Dave Milici

More information about the theora-dev mailing list