echo " --tune=PROCESSOR tune code for a particular CPU (may fails or misperforms on other CPUs)"
echo " --powerpc-perf-enable enable performance report on PPC (requires enabling PMC)"
echo " --disable-mmx disable mmx usage"
+echo " --disable-iwmmxt disable iwmmxt usage"
echo " --disable-altivec disable AltiVec usage"
echo " --disable-audio-oss disable OSS audio support [default=no]"
echo " --disable-audio-beos disable BeOS audio support [default=no]"
tune="generic"
powerpc_perf="no"
mmx="default"
+iwmmxt="default"
altivec="default"
mmi="default"
case "$cpu" in
for opt do
case "$opt" in
- --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
+ --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`; force_prefix=yes
;;
- --libdir=*) libdir=`echo $opt | cut -d '=' -f 2`
+ --libdir=*) libdir=`echo $opt | cut -d '=' -f 2`; force_libdir=yes
;;
--mandir=*) mandir=`echo $opt | cut -d '=' -f 2`
;;
;;
--cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
;;
- --cc=*) cc=`echo $opt | cut -d '=' -f 2`
+ --cc=*) cc=`echo $opt | cut -d '=' -f 2-`
;;
--make=*) make=`echo $opt | cut -d '=' -f 2`
;;
;;
--disable-mmx) mmx="no"
;;
+ --disable-iwmmxt) iwmmxt="no"
+ ;;
--disable-altivec) altivec="no"
;;
--enable-gprof) gprof="yes"
fi
fi
+# check iwmmxt support
+if test $iwmmxt = "default" -a $cpu = "armv4l"; then
+ cat > $TMPC << EOF
+ int main(void) {
+ __asm__ __volatile__ ("wunpckelub wr6, wr4");
+ }
+EOF
+
+ iwmmxt=no
+ if ${cross_prefix}${cc} -o $TMPO $TMPC 2> /dev/null ; then
+ iwmmxt=yes
+ fi
+fi
+
#Darwin CC versions
needmdynamicnopic="no"
if test $targetos = Darwin; then
SLIBPREF=""
SLIBSUF=".dll"
EXESUF=".exe"
- prefix="/c/Program Files/FFmpeg"
- bindir="$prefix"
+ if test "$force_prefix" != yes; then prefix="/c/Program Files/FFmpeg"; fi
+ if test "$force_libdir" != yes; then bindir="$prefix"; fi
fi
cc="${cross_prefix}${cc}"
echo "MMX enabled $mmx"
echo "Vector Builtins $builtin_vector"
fi
+if test $cpu = "armv4l"; then
+echo "IWMMXT enabled $iwmmxt"
+fi
if test $cpu = "mips"; then
echo "MMI enabled $mmi"
fi
echo "TARGET_BUILTIN_VECTOR=yes" >> config.mak
echo "#define HAVE_BUILTIN_VECTOR 1" >> $TMPH
fi
+if test "$iwmmxt" = "yes" ; then
+ echo "TARGET_IWMMXT=yes" >> config.mak
+ echo "#define HAVE_IWMMXT 1" >> $TMPH
+fi
if test "$mmi" = "yes" ; then
echo "TARGET_MMI=yes" >> config.mak
echo "#define HAVE_MMI 1" >> $TMPH
return;
}
+int mm_flags; /* multimedia extension flags */
+
+int mm_support(void)
+{
+ return 0; /* TODO, implement proper detection */
+}
+
void dsputil_init_iwmmxt(DSPContext* c, AVCodecContext *avctx)
{
+ mm_flags = mm_support();
+
+ if (avctx->dsp_mask) {
+ if (avctx->dsp_mask & FF_MM_FORCE)
+ mm_flags |= (avctx->dsp_mask & 0xffff);
+ else
+ mm_flags &= ~(avctx->dsp_mask & 0xffff);
+ }
+
+ if (!(mm_flags & MM_IWMMXT)) return;
+
c->add_pixels_clamped = add_pixels_clamped_iwmmxt;
c->put_pixels_tab[0][0] = put_pixels16_iwmmxt;
#define FFMPEG_VERSION_INT 0x000409
#define FFMPEG_VERSION "0.4.9-pre1"
-#define LIBAVCODEC_BUILD 4756
+#define LIBAVCODEC_BUILD 4757
#define LIBAVCODEC_VERSION_INT FFMPEG_VERSION_INT
#define LIBAVCODEC_VERSION FFMPEG_VERSION
#define FF_IDCT_SIMPLEARM 10
#define FF_IDCT_H264 11
#define FF_IDCT_VP3 12
-#define FP_IDCT_IPP 13
+#define FF_IDCT_IPP 13
/**
* slice count.
#define FF_MM_SSE2 0x0010 /* PIV SSE2 functions */
#define FF_MM_3DNOWEXT 0x0020 /* AMD 3DNowExt */
#endif /* HAVE_MMX */
+#ifdef HAVE_IWMMXT
+#define FF_MM_IWMMXT 0x0100 /* XScale IWMMXT */
+#endif /* HAVE_IWMMXT */
/**
* bits per sample/pixel from the demuxer (needed for huffyuv).