Originally committed as revision 8 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
| @@ -1,11 +1,11 @@ | |||||
| # Main ffmpeg Makefile | # Main ffmpeg Makefile | ||||
| # (c) 2000, 2001 Gerard Lantau | # (c) 2000, 2001 Gerard Lantau | ||||
| # | # | ||||
| include config.mk | |||||
| include config.mak | |||||
| CFLAGS= -O2 -Wall -g -I./libavcodec -I./libav | |||||
| CFLAGS= $(OPTFLAGS) -Wall -g -I./libavcodec -I./libav | |||||
| LDFLAGS= -g | LDFLAGS= -g | ||||
| ifdef CONFIG_GPROF | |||||
| ifeq ($(TARGET_GPROF),yes) | |||||
| CFLAGS+=-p | CFLAGS+=-p | ||||
| LDFLAGS+=-p | LDFLAGS+=-p | ||||
| endif | endif | ||||
| @@ -28,7 +28,7 @@ ffserver: ffserver.o libav/libav.a libavcodec/libavcodec.a | |||||
| gcc $(CFLAGS) -c -o $@ $< | gcc $(CFLAGS) -c -o $@ $< | ||||
| install: all | install: all | ||||
| install -s -m 755 $(PROG) $(PREFIX)/bin | |||||
| install -s -m 755 $(PROG) $(prefix)/bin | |||||
| clean: | clean: | ||||
| make -C libavcodec clean | make -C libavcodec clean | ||||
| @@ -36,7 +36,7 @@ clean: | |||||
| rm -f *.o *~ gmon.out TAGS $(PROG) | rm -f *.o *~ gmon.out TAGS $(PROG) | ||||
| distclean: clean | distclean: clean | ||||
| rm -f Rules.mk config.h | |||||
| rm -f config.mak config.h | |||||
| TAGS: | TAGS: | ||||
| etags *.[ch] libav/*.[ch] libavcodec/*.[ch] | etags *.[ch] libav/*.[ch] libavcodec/*.[ch] | ||||
| @@ -53,23 +53,24 @@ echo "CPU $cpu" | |||||
| echo "MMX enabled $mmx" | echo "MMX enabled $mmx" | ||||
| echo "gprof enabled $gprof" | echo "gprof enabled $gprof" | ||||
| echo "Creating config.mk and config.h" | |||||
| echo "Creating config.mak and config.h" | |||||
| echo "# Automatically generated by configure - do not modify" > config.mk | |||||
| echo "# Automatically generated by configure - do not modify" > config.mak | |||||
| echo "/* Automatically generated by configure - do not modify */" > config.h | echo "/* Automatically generated by configure - do not modify */" > config.h | ||||
| echo "PREFIX=$prefix" >> config.mk | |||||
| echo "CC=$cc" >> config.mk | |||||
| echo "AR=$ar" >> config.mk | |||||
| echo "prefix=$prefix" >> config.mak | |||||
| echo "CC=$cc" >> config.mak | |||||
| echo "AR=$ar" >> config.mak | |||||
| echo "OPTFLAGS=-O2" >> config.mak | |||||
| if [ "$cpu" = "x86" ] ; then | if [ "$cpu" = "x86" ] ; then | ||||
| echo "CONFIG_CPU_X86=y" >> config.mk | |||||
| echo "#define CONFIG_CPU_X86 1" >> config.h | |||||
| echo "TARGET_ARCH_X86=yes" >> config.mak | |||||
| echo "#define ARCH_X86 1" >> config.h | |||||
| fi | fi | ||||
| if [ "$mmx" = "yes" ] ; then | if [ "$mmx" = "yes" ] ; then | ||||
| echo "CONFIG_MMX=y" >> config.mk | |||||
| echo "#define CONFIG_MMX 1" >> config.h | |||||
| echo "TARGET_MMX=yes" >> config.mak | |||||
| echo "#define HAVE_MMX 1" >> config.h | |||||
| fi | fi | ||||
| if [ "$gprof" = "yes" ] ; then | if [ "$gprof" = "yes" ] ; then | ||||
| echo "CONFIG_GPROF=y" >> config.mk | |||||
| echo "#define CONFIG_GPROF 1" >> config.h | |||||
| echo "TARGET_GPROF=yes" >> config.mak | |||||
| echo "#define HAVE_GPROF 1" >> config.h | |||||
| fi | fi | ||||
| @@ -8,7 +8,15 @@ | |||||
| demux code for several formats). (no example yet, the API is likely | demux code for several formats). (no example yet, the API is likely | ||||
| to evolve). | to evolve). | ||||
| 2) Coding Rules | |||||
| 2) Integrating libavXXX in your GPL'ed program | |||||
| ---------------------------------------------- | |||||
| You can integrate all the source code of the libraries to link them | |||||
| statically to avoid any version problem. All you need is to provide a | |||||
| 'config.mak' and a 'config.h' in the parent directory. See the defines | |||||
| generated by ./configure to understand what is needed. | |||||
| 3) Coding Rules | |||||
| --------------- | --------------- | ||||
| ffmpeg is programmed in ANSI C language. GCC extension are | ffmpeg is programmed in ANSI C language. GCC extension are | ||||
| @@ -16,7 +16,11 @@ Planned in next release: | |||||
| (DONE) - add RV10 decoding. | (DONE) - add RV10 decoding. | ||||
| (DONE) - add true pgm support. | (DONE) - add true pgm support. | ||||
| (DONE) - msmpeg4 0x18 fix. | (DONE) - msmpeg4 0x18 fix. | ||||
| - add encode and ac3/mpglib disabling option | |||||
| - add qscale out. | - add qscale out. | ||||
| - add decode quant optimisation. | |||||
| - see black region optimization (Arpi request). | |||||
| - check ffmpeg mpeg1 encoding (Happy Camer mail) | |||||
| - add format autodetect with content (for example to distinguish | - add format autodetect with content (for example to distinguish | ||||
| mpegvideo/mpegmux). | mpegvideo/mpegmux). | ||||
| - add external alloc for libavcodec (avifile request). | - add external alloc for libavcodec (avifile request). | ||||
| @@ -1,5 +1,5 @@ | |||||
| include ../config.mk | |||||
| CFLAGS= -O2 -Wall -g -I../libavcodec | |||||
| include ../config.mak | |||||
| CFLAGS= $(OPTFLAGS) -Wall -g -I../libavcodec | |||||
| OBJS= rm.o mpeg.o asf.o avienc.o jpegenc.o swf.o wav.o raw.o \ | OBJS= rm.o mpeg.o asf.o avienc.o jpegenc.o swf.o wav.o raw.o \ | ||||
| avidec.o ffm.o \ | avidec.o ffm.o \ | ||||
| @@ -1,11 +1,13 @@ | |||||
| include ../config.mk | |||||
| CFLAGS= -O2 -Wall -g | |||||
| include ../config.mak | |||||
| CFLAGS= $(OPTFLAGS) -Wall -g | |||||
| LDFLAGS= -g | LDFLAGS= -g | ||||
| OBJS= common.o utils.o mpegvideo.o h263.o jrevdct.o jfdctfst.o \ | OBJS= common.o utils.o mpegvideo.o h263.o jrevdct.o jfdctfst.o \ | ||||
| mpegaudio.o ac3enc.o mjpegenc.o resample.o dsputil.o \ | mpegaudio.o ac3enc.o mjpegenc.o resample.o dsputil.o \ | ||||
| motion_est.o imgconvert.o imgresample.o msmpeg4.o \ | motion_est.o imgconvert.o imgresample.o msmpeg4.o \ | ||||
| mpeg12.o h263dec.o rv10.o | mpeg12.o h263dec.o rv10.o | ||||
| ASM_OBJS= | |||||
| # currently using libac3 for ac3 decoding | # currently using libac3 for ac3 decoding | ||||
| OBJS+= ac3dec.o \ | OBJS+= ac3dec.o \ | ||||
| @@ -18,19 +20,22 @@ OBJS+= mpegaudiodec.o \ | |||||
| mpglib/dct64_i386.o mpglib/decode_i386.o mpglib/tabinit.o | mpglib/dct64_i386.o mpglib/decode_i386.o mpglib/tabinit.o | ||||
| # i386 mmx specific stuff | # i386 mmx specific stuff | ||||
| ifdef CONFIG_MMX | |||||
| OBJS += i386/fdct_mmx.o i386/fdctdata.o i386/sad_mmx.o i386/cputest.o \ | |||||
| ifeq ($(TARGET_MMX),yes) | |||||
| ASM_OBJS += i386/fdct_mmx.o i386/sad_mmx.o | |||||
| OBJS += i386/fdctdata.o i386/cputest.o \ | |||||
| i386/dsputil_mmx.o | i386/dsputil_mmx.o | ||||
| endif | endif | ||||
| SRCS = $(OBJS:.o=.c) $(ASM_OBJS:.o=.s) | |||||
| LIB= libavcodec.a | LIB= libavcodec.a | ||||
| TESTS= imgresample-test dct-test | TESTS= imgresample-test dct-test | ||||
| all: $(LIB) apiexample | all: $(LIB) apiexample | ||||
| $(LIB): $(OBJS) | |||||
| $(LIB): $(OBJS) $(ASM_OBJS) | |||||
| rm -f $@ | rm -f $@ | ||||
| $(AR) rcs $@ $(OBJS) | |||||
| $(AR) rcs $@ $(OBJS) $(ASM_OBJS) | |||||
| dsputil.o: dsputil.c dsputil.h | dsputil.o: dsputil.c dsputil.h | ||||
| @@ -40,12 +45,21 @@ dsputil.o: dsputil.c dsputil.h | |||||
| %.o: %.s | %.o: %.s | ||||
| nasm -f elf -o $@ $< | nasm -f elf -o $@ $< | ||||
| # depend only used by mplayer now | |||||
| dep: depend | |||||
| depend: | |||||
| $(CC) -MM $(CFLAGS) $(SRCS) 1>.depend | |||||
| clean: | clean: | ||||
| rm -f *.o *~ *.a i386/*.o i386/*~ \ | rm -f *.o *~ *.a i386/*.o i386/*~ \ | ||||
| libac3/*.o libac3/*~ \ | libac3/*.o libac3/*~ \ | ||||
| mpglib/*.o mpglib/*~ \ | mpglib/*.o mpglib/*~ \ | ||||
| apiexample $(TESTS) | apiexample $(TESTS) | ||||
| distclean: clean | |||||
| rm -f Makefile.bak .depend | |||||
| # api example program | # api example program | ||||
| apiexample: apiexample.c $(LIB) | apiexample: apiexample.c $(LIB) | ||||
| $(CC) $(CFLAGS) -o $@ $< $(LIB) -lm | $(CC) $(CFLAGS) -o $@ $< $(LIB) -lm | ||||
| @@ -3,8 +3,8 @@ | |||||
| #include "../config.h" | #include "../config.h" | ||||
| #ifndef USE_LIBAVCODEC | |||||
| // workaround for typedef conflict in MPlayer | |||||
| #ifndef __WINE_WINDEF16_H | |||||
| /* workaround for typedef conflict in MPlayer (wine typedefs) */ | |||||
| typedef unsigned short UINT16; | typedef unsigned short UINT16; | ||||
| typedef signed short INT16; | typedef signed short INT16; | ||||
| #endif | #endif | ||||
| @@ -21,7 +21,7 @@ | |||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| #include "dsputil.h" | #include "dsputil.h" | ||||
| #ifdef CONFIG_MMX | |||||
| #ifdef HAVE_MMX | |||||
| int mm_flags; /* multimedia extension flags */ | int mm_flags; /* multimedia extension flags */ | ||||
| #endif | #endif | ||||
| @@ -377,7 +377,7 @@ void dsputil_init(void) | |||||
| pix_abs16x16_xy2 = pix_abs16x16_xy2_c; | pix_abs16x16_xy2 = pix_abs16x16_xy2_c; | ||||
| av_fdct = jpeg_fdct_ifast; | av_fdct = jpeg_fdct_ifast; | ||||
| #ifdef CONFIG_MMX | |||||
| #ifdef HAVE_MMX | |||||
| dsputil_init_mmx(); | dsputil_init_mmx(); | ||||
| #endif | #endif | ||||
| } | } | ||||
| @@ -61,7 +61,7 @@ int pix_abs16x16_x2_c(UINT8 *blk1, UINT8 *blk2, int lx, int h); | |||||
| int pix_abs16x16_y2_c(UINT8 *blk1, UINT8 *blk2, int lx, int h); | int pix_abs16x16_y2_c(UINT8 *blk1, UINT8 *blk2, int lx, int h); | ||||
| int pix_abs16x16_xy2_c(UINT8 *blk1, UINT8 *blk2, int lx, int h); | int pix_abs16x16_xy2_c(UINT8 *blk1, UINT8 *blk2, int lx, int h); | ||||
| #ifdef CONFIG_MMX | |||||
| #ifdef HAVE_MMX | |||||
| #define MM_MMX 0x0001 /* standard MMX */ | #define MM_MMX 0x0001 /* standard MMX */ | ||||
| #define MM_3DNOW 0x0004 /* AMD 3DNOW */ | #define MM_3DNOW 0x0004 /* AMD 3DNOW */ | ||||
| @@ -130,7 +130,7 @@ static void v_resample(UINT8 *dst, int dst_width, UINT8 *src, int wrap, | |||||
| } | } | ||||
| } | } | ||||
| #ifdef CONFIG_MMX | |||||
| #ifdef HAVE_MMX | |||||
| #include "i386/mmx.h" | #include "i386/mmx.h" | ||||
| @@ -317,7 +317,7 @@ static void h_resample(UINT8 *dst, int dst_width, UINT8 *src, int src_width, | |||||
| } else { | } else { | ||||
| n = dst_width; | n = dst_width; | ||||
| } | } | ||||
| #ifdef CONFIG_MMX | |||||
| #ifdef HAVE_MMX | |||||
| if ((mm_flags & MM_MMX) && NB_TAPS == 4) | if ((mm_flags & MM_MMX) && NB_TAPS == 4) | ||||
| h_resample_fast4_mmx(dst, n, | h_resample_fast4_mmx(dst, n, | ||||
| src, src_width, src_start, src_incr, filters); | src, src_width, src_start, src_incr, filters); | ||||
| @@ -374,7 +374,7 @@ static void component_resample(ImgReSampleContext *s, | |||||
| } | } | ||||
| /* apply vertical filter */ | /* apply vertical filter */ | ||||
| phase_y = get_phase(src_y); | phase_y = get_phase(src_y); | ||||
| #ifdef CONFIG_MMX | |||||
| #ifdef HAVE_MMX | |||||
| /* desactivated MMX because loss of precision */ | /* desactivated MMX because loss of precision */ | ||||
| if ((mm_flags & MM_MMX) && NB_TAPS == 4 && 0) | if ((mm_flags & MM_MMX) && NB_TAPS == 4 && 0) | ||||
| v_resample4_mmx(output, owidth, | v_resample4_mmx(output, owidth, | ||||
| @@ -516,7 +516,7 @@ static void dump_filter(INT16 *filter) | |||||
| } | } | ||||
| } | } | ||||
| #ifdef CONFIG_MMX | |||||
| #ifdef HAVE_MMX | |||||
| int mm_flags; | int mm_flags; | ||||
| #endif | #endif | ||||
| @@ -588,7 +588,7 @@ int main(int argc, char **argv) | |||||
| } | } | ||||
| /* mmx test */ | /* mmx test */ | ||||
| #ifdef CONFIG_MMX | |||||
| #ifdef HAVE_MMX | |||||
| printf("MMX test\n"); | printf("MMX test\n"); | ||||
| fact = 0.72; | fact = 0.72; | ||||
| xsize = (int)(XSIZE * fact); | xsize = (int)(XSIZE * fact); | ||||
| @@ -434,7 +434,7 @@ int estimate_motion(MpegEncContext * s, | |||||
| dmin = phods_motion_search(s, &mx, &my, range / 2, xmin, ymin, xmax, ymax); | dmin = phods_motion_search(s, &mx, &my, range / 2, xmin, ymin, xmax, ymax); | ||||
| break; | break; | ||||
| } | } | ||||
| #ifdef CONFIG_MMX | |||||
| #ifdef HAVE_MMX | |||||
| if (mm_flags & MM_MMX) | if (mm_flags & MM_MMX) | ||||
| emms(); | emms(); | ||||
| #endif | #endif | ||||