[FFmpeg-cvslog] r14245 - trunk/libavcodec/armv4l/mathops.h

Aurelien Jacobs aurel
Wed Jul 16 01:01:09 CEST 2008


M?ns Rullg?rd wrote:

> matthieu castet <castet.matthieu at free.fr> writes:
> 
> > mru wrote:
> >> Author: mru
> >> Date: Tue Jul 15 21:06:32 2008
> >> New Revision: 14245
> >> 
> >> Log:
> >> ARM: optimised MAC64 and MLS64
> >> 
> >> Modified:
> >>    trunk/libavcodec/armv4l/mathops.h
> >> 
> >> Modified: trunk/libavcodec/armv4l/mathops.h
> >> ==============================================================================
> >> --- trunk/libavcodec/armv4l/mathops.h	(original)
> >> +++ trunk/libavcodec/armv4l/mathops.h	Tue Jul 15 21:06:32 2008
> >> @@ -57,6 +57,16 @@ static inline av_const int64_t MUL64(int
> >>  }
> >>  #define MUL64 MUL64
> >>  
> >> +static inline av_const int64_t MAC64(int64_t d, int a, int b)
> >> +{
> >> +    union { uint64_t x; unsigned hl[2]; } x = { d };
> >> +    asm ("smlal %0, %1, %2, %3"
> >> +         : "+r"(x.hl[0]), "+r"(x.hl[1]) : "r"(a), "r"(b));
> >> +    return x.x;
> >> +}
> >> +#define MAC64(d, a, b) ((d) = MAC64(d, a, b))
> >> +#define MLS64(d, a, b) MAC64(d, -(a), b)
> >> +
> > Will this work on big endian arm ?
> 
> Probably not.
> 
> > Or big endian is not supported by ffmpeg ?
> 
> Apparently not ;-)

IIRC I successfully tested mp3 decoding on big endian ARM some times ago.

> Some of the existing ARM code in FFmpeg already assumes little endian,
> and big endian ARM systems seem quite rare (I've never actually seen
> one).

The Linksys NSLU2 is a quite popular big endian ARM system.
There were a full debian port to armeb some times ago, even including
an (old) ffmpeg package:
http://armeb.debian.net/debian-armeb/sarge/pool/main/f/ffmpeg/

Now, we are talking about ARMv6 code, and I don't know if there are
some big endian ARMv6 systems in the wild. So it may not matter much.

But it would be nice to avoid breaking at least basic big endian ARMv4
when easily possible.

Aurel




More information about the ffmpeg-cvslog mailing list