diff --git a/Makefile b/Makefile index 1650c89612..ffa1b80a14 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,11 @@ # Main ffmpeg Makefile # (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 -ifdef CONFIG_GPROF +ifeq ($(TARGET_GPROF),yes) CFLAGS+=-p LDFLAGS+=-p endif @@ -28,7 +28,7 @@ ffserver: ffserver.o libav/libav.a libavcodec/libavcodec.a gcc $(CFLAGS) -c -o $@ $< install: all - install -s -m 755 $(PROG) $(PREFIX)/bin + install -s -m 755 $(PROG) $(prefix)/bin clean: make -C libavcodec clean @@ -36,7 +36,7 @@ clean: rm -f *.o *~ gmon.out TAGS $(PROG) distclean: clean - rm -f Rules.mk config.h + rm -f config.mak config.h TAGS: etags *.[ch] libav/*.[ch] libavcodec/*.[ch] diff --git a/configure b/configure index f22c837398..df3087a3a7 100755 --- a/configure +++ b/configure @@ -53,23 +53,24 @@ echo "CPU $cpu" echo "MMX enabled $mmx" 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 "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 - 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 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 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 diff --git a/doc/README.dev b/doc/README.dev index ae28bc03be..39cd70207f 100644 --- a/doc/README.dev +++ b/doc/README.dev @@ -8,7 +8,15 @@ demux code for several formats). (no example yet, the API is likely 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 diff --git a/doc/TODO b/doc/TODO index 09c5f2b6c2..e9b237349c 100644 --- a/doc/TODO +++ b/doc/TODO @@ -16,7 +16,11 @@ Planned in next release: (DONE) - add RV10 decoding. (DONE) - add true pgm support. (DONE) - msmpeg4 0x18 fix. +- add encode and ac3/mpglib disabling option - 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 mpegvideo/mpegmux). - add external alloc for libavcodec (avifile request). diff --git a/libav/Makefile b/libav/Makefile index 08d507a7f2..0f5dcf32af 100644 --- a/libav/Makefile +++ b/libav/Makefile @@ -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 \ avidec.o ffm.o \ diff --git a/libavcodec/Makefile b/libavcodec/Makefile index a418516b16..e6dbe85bec 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -1,11 +1,13 @@ -include ../config.mk -CFLAGS= -O2 -Wall -g +include ../config.mak + +CFLAGS= $(OPTFLAGS) -Wall -g LDFLAGS= -g OBJS= common.o utils.o mpegvideo.o h263.o jrevdct.o jfdctfst.o \ mpegaudio.o ac3enc.o mjpegenc.o resample.o dsputil.o \ motion_est.o imgconvert.o imgresample.o msmpeg4.o \ mpeg12.o h263dec.o rv10.o +ASM_OBJS= # currently using libac3 for ac3 decoding OBJS+= ac3dec.o \ @@ -18,19 +20,22 @@ OBJS+= mpegaudiodec.o \ mpglib/dct64_i386.o mpglib/decode_i386.o mpglib/tabinit.o # 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 endif +SRCS = $(OBJS:.o=.c) $(ASM_OBJS:.o=.s) + LIB= libavcodec.a TESTS= imgresample-test dct-test all: $(LIB) apiexample -$(LIB): $(OBJS) +$(LIB): $(OBJS) $(ASM_OBJS) rm -f $@ - $(AR) rcs $@ $(OBJS) + $(AR) rcs $@ $(OBJS) $(ASM_OBJS) dsputil.o: dsputil.c dsputil.h @@ -40,12 +45,21 @@ dsputil.o: dsputil.c dsputil.h %.o: %.s nasm -f elf -o $@ $< +# depend only used by mplayer now +dep: depend + +depend: + $(CC) -MM $(CFLAGS) $(SRCS) 1>.depend + clean: rm -f *.o *~ *.a i386/*.o i386/*~ \ libac3/*.o libac3/*~ \ mpglib/*.o mpglib/*~ \ apiexample $(TESTS) +distclean: clean + rm -f Makefile.bak .depend + # api example program apiexample: apiexample.c $(LIB) $(CC) $(CFLAGS) -o $@ $< $(LIB) -lm diff --git a/libavcodec/common.h b/libavcodec/common.h index bba7d1fb9d..3b46035a64 100644 --- a/libavcodec/common.h +++ b/libavcodec/common.h @@ -3,8 +3,8 @@ #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 signed short INT16; #endif diff --git a/libavcodec/dsputil.c b/libavcodec/dsputil.c index 7e544a4524..a1734be8c1 100644 --- a/libavcodec/dsputil.c +++ b/libavcodec/dsputil.c @@ -21,7 +21,7 @@ #include "avcodec.h" #include "dsputil.h" -#ifdef CONFIG_MMX +#ifdef HAVE_MMX int mm_flags; /* multimedia extension flags */ #endif @@ -377,7 +377,7 @@ void dsputil_init(void) pix_abs16x16_xy2 = pix_abs16x16_xy2_c; av_fdct = jpeg_fdct_ifast; -#ifdef CONFIG_MMX +#ifdef HAVE_MMX dsputil_init_mmx(); #endif } diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h index 717653e813..fa8eb239a5 100644 --- a/libavcodec/dsputil.h +++ b/libavcodec/dsputil.h @@ -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_xy2_c(UINT8 *blk1, UINT8 *blk2, int lx, int h); -#ifdef CONFIG_MMX +#ifdef HAVE_MMX #define MM_MMX 0x0001 /* standard MMX */ #define MM_3DNOW 0x0004 /* AMD 3DNOW */ diff --git a/libavcodec/imgresample.c b/libavcodec/imgresample.c index 99153013cf..d394abdd3f 100644 --- a/libavcodec/imgresample.c +++ b/libavcodec/imgresample.c @@ -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" @@ -317,7 +317,7 @@ static void h_resample(UINT8 *dst, int dst_width, UINT8 *src, int src_width, } else { n = dst_width; } -#ifdef CONFIG_MMX +#ifdef HAVE_MMX if ((mm_flags & MM_MMX) && NB_TAPS == 4) h_resample_fast4_mmx(dst, n, src, src_width, src_start, src_incr, filters); @@ -374,7 +374,7 @@ static void component_resample(ImgReSampleContext *s, } /* apply vertical filter */ phase_y = get_phase(src_y); -#ifdef CONFIG_MMX +#ifdef HAVE_MMX /* desactivated MMX because loss of precision */ if ((mm_flags & MM_MMX) && NB_TAPS == 4 && 0) v_resample4_mmx(output, owidth, @@ -516,7 +516,7 @@ static void dump_filter(INT16 *filter) } } -#ifdef CONFIG_MMX +#ifdef HAVE_MMX int mm_flags; #endif @@ -588,7 +588,7 @@ int main(int argc, char **argv) } /* mmx test */ -#ifdef CONFIG_MMX +#ifdef HAVE_MMX printf("MMX test\n"); fact = 0.72; xsize = (int)(XSIZE * fact); diff --git a/libavcodec/motion_est.c b/libavcodec/motion_est.c index 09fe662613..0d776631cc 100644 --- a/libavcodec/motion_est.c +++ b/libavcodec/motion_est.c @@ -434,7 +434,7 @@ int estimate_motion(MpegEncContext * s, dmin = phods_motion_search(s, &mx, &my, range / 2, xmin, ymin, xmax, ymax); break; } -#ifdef CONFIG_MMX +#ifdef HAVE_MMX if (mm_flags & MM_MMX) emms(); #endif