It contains optimizations that are not specific to i386 and libavutil uses this naming scheme already. Originally committed as revision 16270 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
@@ -298,7 +298,6 @@ Operating systems / CPU architectures | |||||
Alpha Mans Rullgard, Falk Hueffner | Alpha Mans Rullgard, Falk Hueffner | ||||
ARM Mans Rullgard | ARM Mans Rullgard | ||||
BeOS Francois Revol | BeOS Francois Revol | ||||
i386 Michael Niedermayer | |||||
Mac OS X / PowerPC Romain Dolbeau, Guillaume Poirier | Mac OS X / PowerPC Romain Dolbeau, Guillaume Poirier | ||||
Amiga / PowerPC Colin Ward | Amiga / PowerPC Colin Ward | ||||
Linux / PowerPC Luca Barbato | Linux / PowerPC Luca Barbato | ||||
@@ -306,3 +305,4 @@ Windows MinGW Alex Beregszaszi, Ramiro Polla | |||||
Windows Cygwin Victor Paesa | Windows Cygwin Victor Paesa | ||||
ADI/Blackfin DSP Marc Hoffman | ADI/Blackfin DSP Marc Hoffman | ||||
Sparc Roman Shaposhnik | Sparc Roman Shaposhnik | ||||
x86 Michael Niedermayer |
@@ -17,7 +17,7 @@ FFmpeg README | |||||
License, see the file COPYING.GPL for details. Their compilation and use | License, see the file COPYING.GPL for details. Their compilation and use | ||||
in FFmpeg is optional. | in FFmpeg is optional. | ||||
* The file libavcodec/i386/idct_mmx.c is distributed under the GNU General | |||||
* The file libavcodec/x86/idct_mmx.c is distributed under the GNU General | |||||
Public License. It is strictly an optimization and its use is optional. | Public License. It is strictly an optimization and its use is optional. | ||||
* The file libavcodec/ac3dec.c is distributed under the GNU General Public | * The file libavcodec/ac3dec.c is distributed under the GNU General Public | ||||
@@ -91,10 +91,10 @@ $(SUBDIR)%-test.o: $(SUBDIR)%.c | |||||
$(SUBDIR)%-test.o: $(SUBDIR)%-test.c | $(SUBDIR)%-test.o: $(SUBDIR)%-test.c | ||||
$(CC) $(CFLAGS) -DTEST -c -o $$@ $$^ | $(CC) $(CFLAGS) -DTEST -c -o $$@ $$^ | ||||
$(SUBDIR)i386/%.o: $(SUBDIR)i386/%.asm | |||||
$(SUBDIR)x86/%.o: $(SUBDIR)x86/%.asm | |||||
$(YASM) $(YASMFLAGS) -I $$(<D)/ -o $$@ $$< | $(YASM) $(YASMFLAGS) -I $$(<D)/ -o $$@ $$< | ||||
$(SUBDIR)i386/%.d: $(SUBDIR)i386/%.asm | |||||
$(SUBDIR)x86/%.d: $(SUBDIR)x86/%.asm | |||||
$(YASM) $(YASMFLAGS) -I $$(<D)/ -M -o $$(@:%.d=%.o) $$< > $$@ | $(YASM) $(YASMFLAGS) -I $$(<D)/ -M -o $$(@:%.d=%.o) $$< > $$@ | ||||
clean:: | clean:: | ||||
@@ -2359,11 +2359,11 @@ if enabled source_path_used; then | |||||
libavcodec/alpha \ | libavcodec/alpha \ | ||||
libavcodec/arm \ | libavcodec/arm \ | ||||
libavcodec/bfin \ | libavcodec/bfin \ | ||||
libavcodec/i386 \ | |||||
libavcodec/mlib \ | libavcodec/mlib \ | ||||
libavcodec/ppc \ | libavcodec/ppc \ | ||||
libavcodec/sh4 \ | libavcodec/sh4 \ | ||||
libavcodec/sparc \ | libavcodec/sparc \ | ||||
libavcodec/x86 \ | |||||
libavdevice \ | libavdevice \ | ||||
libavfilter \ | libavfilter \ | ||||
libavformat \ | libavformat \ | ||||
@@ -4,11 +4,11 @@ optimization Tips (for libavcodec): | |||||
What to optimize: | What to optimize: | ||||
----------------- | ----------------- | ||||
If you plan to do non-x86 architecture specific optimizations (SIMD normally), | If you plan to do non-x86 architecture specific optimizations (SIMD normally), | ||||
then take a look in the i386/ directory, as most important functions are | |||||
then take a look in the x86/ directory, as most important functions are | |||||
already optimized for MMX. | already optimized for MMX. | ||||
If you want to do x86 optimizations then you can either try to finetune the | If you want to do x86 optimizations then you can either try to finetune the | ||||
stuff in the i386 directory or find some other functions in the C source to | |||||
stuff in the x86 directory or find some other functions in the C source to | |||||
optimize, but there aren't many left. | optimize, but there aren't many left. | ||||
@@ -20,7 +20,7 @@ architecture-specific versions. It is recommended to look at older | |||||
revisions of the interesting files (for a web frontend try ViewVC at | revisions of the interesting files (for a web frontend try ViewVC at | ||||
http://svn.mplayerhq.hu/ffmpeg/trunk/). | http://svn.mplayerhq.hu/ffmpeg/trunk/). | ||||
Alternatively, look into the other architecture-specific versions in | Alternatively, look into the other architecture-specific versions in | ||||
the i386/, ppc/, alpha/ subdirectories. Even if you don't exactly | |||||
the x86/, ppc/, alpha/ subdirectories. Even if you don't exactly | |||||
comprehend the instructions, it could help understanding the functions | comprehend the instructions, it could help understanding the functions | ||||
and how they can be optimized. | and how they can be optimized. | ||||
@@ -392,37 +392,37 @@ OBJS-$(HAVE_PTHREADS) += pthread.o | |||||
OBJS-$(HAVE_W32THREADS) += w32thread.o | OBJS-$(HAVE_W32THREADS) += w32thread.o | ||||
# processor-specific code | # processor-specific code | ||||
MMX-OBJS-$(CONFIG_CAVS_DECODER) += i386/cavsdsp_mmx.o | |||||
MMX-OBJS-$(CONFIG_ENCODERS) += i386/dsputilenc_mmx.o | |||||
MMX-OBJS-$(CONFIG_FLAC_ENCODER) += i386/flacdsp_mmx.o | |||||
MMX-OBJS-$(CONFIG_GPL) += i386/idct_mmx.o | |||||
MMX-OBJS-$(CONFIG_SNOW_DECODER) += i386/snowdsp_mmx.o | |||||
MMX-OBJS-$(CONFIG_THEORA_DECODER) += i386/vp3dsp_mmx.o i386/vp3dsp_sse2.o | |||||
MMX-OBJS-$(CONFIG_VC1_DECODER) += i386/vc1dsp_mmx.o | |||||
MMX-OBJS-$(CONFIG_VP3_DECODER) += i386/vp3dsp_mmx.o i386/vp3dsp_sse2.o | |||||
MMX-OBJS-$(CONFIG_VP5_DECODER) += i386/vp3dsp_mmx.o i386/vp3dsp_sse2.o | |||||
MMX-OBJS-$(CONFIG_VP6_DECODER) += i386/vp3dsp_mmx.o i386/vp3dsp_sse2.o | |||||
MMX-OBJS-$(CONFIG_VP6A_DECODER) += i386/vp3dsp_mmx.o i386/vp3dsp_sse2.o | |||||
MMX-OBJS-$(CONFIG_VP6F_DECODER) += i386/vp3dsp_mmx.o i386/vp3dsp_sse2.o | |||||
MMX-OBJS-$(CONFIG_WMV3_DECODER) += i386/vc1dsp_mmx.o | |||||
MMX-OBJS-$(HAVE_YASM) += i386/dsputil_yasm.o \ | |||||
i386/h264_deblock_sse2.o | |||||
OBJS-$(HAVE_MMX) += i386/cpuid.o \ | |||||
i386/dnxhd_mmx.o \ | |||||
i386/dsputil_mmx.o \ | |||||
i386/fdct_mmx.o \ | |||||
i386/idct_mmx_xvid.o \ | |||||
i386/idct_sse2_xvid.o \ | |||||
i386/motion_est_mmx.o \ | |||||
i386/mpegvideo_mmx.o \ | |||||
i386/simple_idct_mmx.o \ | |||||
MMX-OBJS-$(CONFIG_CAVS_DECODER) += x86/cavsdsp_mmx.o | |||||
MMX-OBJS-$(CONFIG_ENCODERS) += x86/dsputilenc_mmx.o | |||||
MMX-OBJS-$(CONFIG_FLAC_ENCODER) += x86/flacdsp_mmx.o | |||||
MMX-OBJS-$(CONFIG_GPL) += x86/idct_mmx.o | |||||
MMX-OBJS-$(CONFIG_SNOW_DECODER) += x86/snowdsp_mmx.o | |||||
MMX-OBJS-$(CONFIG_THEORA_DECODER) += x86/vp3dsp_mmx.o x86/vp3dsp_sse2.o | |||||
MMX-OBJS-$(CONFIG_VC1_DECODER) += x86/vc1dsp_mmx.o | |||||
MMX-OBJS-$(CONFIG_VP3_DECODER) += x86/vp3dsp_mmx.o x86/vp3dsp_sse2.o | |||||
MMX-OBJS-$(CONFIG_VP5_DECODER) += x86/vp3dsp_mmx.o x86/vp3dsp_sse2.o | |||||
MMX-OBJS-$(CONFIG_VP6_DECODER) += x86/vp3dsp_mmx.o x86/vp3dsp_sse2.o | |||||
MMX-OBJS-$(CONFIG_VP6A_DECODER) += x86/vp3dsp_mmx.o x86/vp3dsp_sse2.o | |||||
MMX-OBJS-$(CONFIG_VP6F_DECODER) += x86/vp3dsp_mmx.o x86/vp3dsp_sse2.o | |||||
MMX-OBJS-$(CONFIG_WMV3_DECODER) += x86/vc1dsp_mmx.o | |||||
MMX-OBJS-$(HAVE_YASM) += x86/dsputil_yasm.o \ | |||||
x86/h264_deblock_sse2.o \ | |||||
OBJS-$(HAVE_MMX) += x86/cpuid.o \ | |||||
x86/dnxhd_mmx.o \ | |||||
x86/dsputil_mmx.o \ | |||||
x86/fdct_mmx.o \ | |||||
x86/idct_mmx_xvid.o \ | |||||
x86/idct_sse2_xvid.o \ | |||||
x86/motion_est_mmx.o \ | |||||
x86/mpegvideo_mmx.o \ | |||||
x86/simple_idct_mmx.o \ | |||||
$(MMX-OBJS-yes) | $(MMX-OBJS-yes) | ||||
OBJS-$(CONFIG_FFT_MMX) += i386/fft_3dn.o \ | |||||
i386/fft_3dn2.o \ | |||||
i386/fft_mmx.o \ | |||||
i386/fft_sse.o \ | |||||
OBJS-$(CONFIG_FFT_MMX) += x86/fft_3dn.o \ | |||||
x86/fft_3dn2.o \ | |||||
x86/fft_mmx.o \ | |||||
x86/fft_sse.o \ | |||||
OBJS-$(ARCH_ALPHA) += alpha/dsputil_alpha.o \ | OBJS-$(ARCH_ALPHA) += alpha/dsputil_alpha.o \ | ||||
alpha/dsputil_alpha_asm.o \ | alpha/dsputil_alpha_asm.o \ | ||||
@@ -498,10 +498,10 @@ OBJS-$(HAVE_VIS) += sparc/dsputil_vis.o \ | |||||
TESTS = $(addsuffix -test$(EXESUF), cabac dct eval fft h264 rangecoder snow) | TESTS = $(addsuffix -test$(EXESUF), cabac dct eval fft h264 rangecoder snow) | ||||
TESTS-$(CONFIG_OLDSCALER) += imgresample-test$(EXESUF) | TESTS-$(CONFIG_OLDSCALER) += imgresample-test$(EXESUF) | ||||
TESTS-$(ARCH_X86) += i386/cpuid-test$(EXESUF) motion-test$(EXESUF) | |||||
TESTS-$(ARCH_X86) += x86/cpuid-test$(EXESUF) motion-test$(EXESUF) | |||||
CLEANFILES = apiexample$(EXESUF) | CLEANFILES = apiexample$(EXESUF) | ||||
DIRS = alpha arm bfin i386 mlib ppc ps2 sh4 sparc | |||||
DIRS = alpha arm bfin mlib ppc ps2 sh4 sparc x86 | |||||
include $(SUBDIR)../subdir.mak | include $(SUBDIR)../subdir.mak | ||||
@@ -38,7 +38,7 @@ | |||||
#include "aandcttab.h" | #include "aandcttab.h" | ||||
#include "faandct.h" | #include "faandct.h" | ||||
#include "faanidct.h" | #include "faanidct.h" | ||||
#include "i386/idct_xvid.h" | |||||
#include "x86/idct_xvid.h" | |||||
#undef printf | #undef printf | ||||
#undef random | #undef random | ||||
@@ -36,7 +36,7 @@ | |||||
#include "cabac.h" | #include "cabac.h" | ||||
#ifdef ARCH_X86 | #ifdef ARCH_X86 | ||||
#include "i386/h264_i386.h" | |||||
#include "x86/h264_i386.h" | |||||
#endif | #endif | ||||
//#undef NDEBUG | //#undef NDEBUG | ||||
@@ -35,8 +35,8 @@ | |||||
#include "colorspace.h" | #include "colorspace.h" | ||||
#ifdef HAVE_MMX | #ifdef HAVE_MMX | ||||
#include "i386/mmx.h" | |||||
#include "i386/dsputil_mmx.h" | |||||
#include "x86/mmx.h" | |||||
#include "x86/dsputil_mmx.h" | |||||
#endif | #endif | ||||
#define xglue(x, y) x ## y | #define xglue(x, y) x ## y | ||||
@@ -155,7 +155,7 @@ static void v_resample(uint8_t *dst, int dst_width, const uint8_t *src, | |||||
#ifdef HAVE_MMX | #ifdef HAVE_MMX | ||||
#include "i386/mmx.h" | |||||
#include "x86/mmx.h" | |||||
#define FILTER4(reg) \ | #define FILTER4(reg) \ | ||||
{\ | {\ | ||||
@@ -26,7 +26,7 @@ | |||||
#ifdef ARCH_X86_32 | #ifdef ARCH_X86_32 | ||||
#include "i386/mathops.h" | |||||
#include "x86/mathops.h" | |||||
#elif defined(ARCH_ARM) | #elif defined(ARCH_ARM) | ||||
@@ -19,8 +19,8 @@ | |||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
*/ | */ | ||||
#ifndef AVCODEC_I386_DSPUTIL_MMX_H | |||||
#define AVCODEC_I386_DSPUTIL_MMX_H | |||||
#ifndef AVCODEC_X86_DSPUTIL_MMX_H | |||||
#define AVCODEC_X86_DSPUTIL_MMX_H | |||||
#include <stdint.h> | #include <stdint.h> | ||||
#include "libavcodec/dsputil.h" | #include "libavcodec/dsputil.h" | ||||
@@ -151,4 +151,4 @@ extern const double ff_pd_2[2]; | |||||
void dsputilenc_init_mmx(DSPContext* c, AVCodecContext *avctx); | void dsputilenc_init_mmx(DSPContext* c, AVCodecContext *avctx); | ||||
#endif /* AVCODEC_I386_DSPUTIL_MMX_H */ | |||||
#endif /* AVCODEC_X86_DSPUTIL_MMX_H */ |
@@ -26,8 +26,8 @@ | |||||
* @author Michael Niedermayer <michaelni@gmx.at> | * @author Michael Niedermayer <michaelni@gmx.at> | ||||
*/ | */ | ||||
#ifndef AVCODEC_I386_H264_I386_H | |||||
#define AVCODEC_I386_H264_I386_H | |||||
#ifndef AVCODEC_X86_H264_I386_H | |||||
#define AVCODEC_X86_H264_I386_H | |||||
#include "libavcodec/cabac.h" | #include "libavcodec/cabac.h" | ||||
@@ -152,4 +152,4 @@ static int decode_significance_8x8_x86(CABACContext *c, | |||||
#endif /* defined(ARCH_X86) && defined(HAVE_7REGS) && */ | #endif /* defined(ARCH_X86) && defined(HAVE_7REGS) && */ | ||||
/* defined(HAVE_EBX_AVAILABLE) && !defined(BROKEN_RELOCATIONS) */ | /* defined(HAVE_EBX_AVAILABLE) && !defined(BROKEN_RELOCATIONS) */ | ||||
#endif /* AVCODEC_I386_H264_I386_H */ | |||||
#endif /* AVCODEC_X86_H264_I386_H */ |
@@ -23,8 +23,8 @@ | |||||
* header for Xvid IDCT functions | * header for Xvid IDCT functions | ||||
*/ | */ | ||||
#ifndef AVCODEC_I386_IDCT_XVID_H | |||||
#define AVCODEC_I386_IDCT_XVID_H | |||||
#ifndef AVCODEC_X86_IDCT_XVID_H | |||||
#define AVCODEC_X86_IDCT_XVID_H | |||||
#include <stdint.h> | #include <stdint.h> | ||||
@@ -34,4 +34,4 @@ void ff_idct_xvid_sse2(short *block); | |||||
void ff_idct_xvid_sse2_put(uint8_t *dest, int line_size, short *block); | void ff_idct_xvid_sse2_put(uint8_t *dest, int line_size, short *block); | ||||
void ff_idct_xvid_sse2_add(uint8_t *dest, int line_size, short *block); | void ff_idct_xvid_sse2_add(uint8_t *dest, int line_size, short *block); | ||||
#endif /* AVCODEC_I386_IDCT_XVID_H */ | |||||
#endif /* AVCODEC_X86_IDCT_XVID_H */ |
@@ -19,8 +19,8 @@ | |||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
*/ | */ | ||||
#ifndef AVCODEC_I386_MATHOPS_H | |||||
#define AVCODEC_I386_MATHOPS_H | |||||
#ifndef AVCODEC_X86_MATHOPS_H | |||||
#define AVCODEC_X86_MATHOPS_H | |||||
#define MULL(ra, rb, shift) \ | #define MULL(ra, rb, shift) \ | ||||
({ int rt, dummy; __asm__ (\ | ({ int rt, dummy; __asm__ (\ | ||||
@@ -40,4 +40,4 @@ | |||||
__asm__ ("imull %2\n\t" : "=A"(rt) : "a" ((int)ra), "g" ((int)rb));\ | __asm__ ("imull %2\n\t" : "=A"(rt) : "a" ((int)ra), "g" ((int)rb));\ | ||||
rt; }) | rt; }) | ||||
#endif /* AVCODEC_I386_MATHOPS_H */ | |||||
#endif /* AVCODEC_X86_MATHOPS_H */ |
@@ -18,8 +18,8 @@ | |||||
* License along with FFmpeg; if not, write to the Free Software | * License along with FFmpeg; if not, write to the Free Software | ||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
*/ | */ | ||||
#ifndef AVCODEC_I386_MMX_H | |||||
#define AVCODEC_I386_MMX_H | |||||
#ifndef AVCODEC_X86_MMX_H | |||||
#define AVCODEC_X86_MMX_H | |||||
#warning Everything in this header is deprecated, use plain __asm__()! New code using this header will be rejected. | #warning Everything in this header is deprecated, use plain __asm__()! New code using this header will be rejected. | ||||
@@ -264,4 +264,4 @@ | |||||
#define punpckhqdq_r2r(regs,regd) mmx_r2r (punpckhqdq, regs, regd) | #define punpckhqdq_r2r(regs,regd) mmx_r2r (punpckhqdq, regs, regd) | ||||
#endif /* AVCODEC_I386_MMX_H */ | |||||
#endif /* AVCODEC_X86_MMX_H */ |
@@ -19,8 +19,8 @@ | |||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
*/ | */ | ||||
#ifndef AVCODEC_I386_VP3DSP_MMX_H | |||||
#define AVCODEC_I386_VP3DSP_MMX_H | |||||
#ifndef AVCODEC_X86_VP3DSP_MMX_H | |||||
#define AVCODEC_X86_VP3DSP_MMX_H | |||||
#include <stdint.h> | #include <stdint.h> | ||||
#include "libavcodec/dsputil.h" | #include "libavcodec/dsputil.h" | ||||
@@ -32,4 +32,4 @@ void ff_vp3_idct_add_mmx(uint8_t *dest, int line_size, DCTELEM *block); | |||||
void ff_vp3_v_loop_filter_mmx2(uint8_t *src, int stride, int *bounding_values); | void ff_vp3_v_loop_filter_mmx2(uint8_t *src, int stride, int *bounding_values); | ||||
void ff_vp3_h_loop_filter_mmx2(uint8_t *src, int stride, int *bounding_values); | void ff_vp3_h_loop_filter_mmx2(uint8_t *src, int stride, int *bounding_values); | ||||
#endif /* AVCODEC_I386_VP3DSP_MMX_H */ | |||||
#endif /* AVCODEC_X86_VP3DSP_MMX_H */ |
@@ -19,8 +19,8 @@ | |||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
*/ | */ | ||||
#ifndef AVCODEC_I386_VP3DSP_SSE2_H | |||||
#define AVCODEC_I386_VP3DSP_SSE2_H | |||||
#ifndef AVCODEC_X86_VP3DSP_SSE2_H | |||||
#define AVCODEC_X86_VP3DSP_SSE2_H | |||||
#include "libavcodec/dsputil.h" | #include "libavcodec/dsputil.h" | ||||
@@ -28,4 +28,4 @@ void ff_vp3_idct_sse2(int16_t *input_data); | |||||
void ff_vp3_idct_put_sse2(uint8_t *dest, int line_size, DCTELEM *block); | void ff_vp3_idct_put_sse2(uint8_t *dest, int line_size, DCTELEM *block); | ||||
void ff_vp3_idct_add_sse2(uint8_t *dest, int line_size, DCTELEM *block); | void ff_vp3_idct_add_sse2(uint8_t *dest, int line_size, DCTELEM *block); | ||||
#endif /* AVCODEC_I386_VP3DSP_SSE2_H */ | |||||
#endif /* AVCODEC_X86_VP3DSP_SSE2_H */ |