Michael Niedermayer a écrit : > On Sat, Jul 10, 2010 at 07:38:01PM +0200, Sebastian Vater wrote: > >> -- >> >> Best regards, >> :-) Basty/CDGS (-: >> >> >> >> > > >> allmixers.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 45 insertions(+) >> 186ff20da896429b516bcdc699e201ca3a57c387 allmixers.c.patch >> diff --git a/libavsequencer/allmixers.c b/libavsequencer/allmixers.c >> new file mode 100644 >> index 0000000..a4040cd >> --- /dev/null >> +++ b/libavsequencer/allmixers.c >> @@ -0,0 +1,45 @@ >> +/* >> + * Provide registration of all mixers for the sequencer >> + * Copyright (c) 2010 Sebastian Vater <cdgs.ba...@googlemail.com> >> + * >> + * This file is part of FFmpeg. >> + * >> + * FFmpeg is free software; you can redistribute it and/or >> + * modify it under the terms of the GNU Lesser General Public >> + * License as published by the Free Software Foundation; either >> + * version 2.1 of the License, or (at your option) any later version. >> + * >> + * FFmpeg is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> + * Lesser General Public License for more details. >> + * >> + * You should have received a copy of the GNU Lesser General Public >> + * License along with FFmpeg; if not, write to the Free Software >> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 >> USA >> + */ >> + >> +/** >> + * @file >> + * Provide registration of all mixers for the sequencer. >> + */ >> + >> +#include "libavsequencer/avsequencer.h" >> + >> +#define REGISTER_MIXER(X,x) { \ >> + extern AVSequencerMixerContext x##_mixer; \ >> + if(CONFIG_##X##_MIXER) avseq_register(&x##_mixer); } >> + >> +void avseq_register_all(void) >> +{ >> + static int initialized; >> + >> + if (initialized) >> + return; >> + initialized = 1; >> + >> + /* Mixers */ >> + REGISTER_MIXER (NULL, null); >> + REGISTER_MIXER (LOW_QUALITY, lq); >> + REGISTER_MIXER (HIGH_QUALITY, hq); >> > > if there is nothing but 2 mixers, a simple > int mixer_quality > in an appropriate struct would provide a much simpler interface >
Hi I have excellent news! libavsequencer now flawlessly integrates into FFmpeg, just check out my latest git. Please do a git pull --rebase, Stefano had problems without using it. Here are the allmixers.c, configure, common.mak, cmdutils.c, Makefile and libavsequencer.v part of the BSS to review. This version compiles perfectly. -- Best regards, :-) Basty/CDGS (-:
diff --git a/Makefile b/Makefile index 9f1aa2f..45e6ee1 100644 --- a/Makefile +++ b/Makefile @@ -30,6 +30,7 @@ FFLIBS-$(CONFIG_AVCODEC) += avcodec FFLIBS-$(CONFIG_POSTPROC) += postproc FFLIBS-$(CONFIG_SWSCALE) += swscale FFLIBS-$(CONFIG_AVCORE) += avcore +FFLIBS-$(CONFIG_AVSEQUENCER) += avsequencer FFLIBS := avutil diff --git a/cmdutils.c b/cmdutils.c index a79c38e..ab9a416 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -39,6 +39,7 @@ #include "libavutil/eval.h" #include "libavcodec/opt.h" #include "libavcore/avcore.h" +#include "libavsequencer/avsequencer.h" #include "cmdutils.h" #include "version.h" #if CONFIG_NETWORK @@ -340,6 +341,7 @@ static void print_all_libs_info(FILE* outstream, int flags) PRINT_LIB_INFO(outstream, avcore, AVCORE, flags); PRINT_LIB_INFO(outstream, avcodec, AVCODEC, flags); PRINT_LIB_INFO(outstream, avformat, AVFORMAT, flags); + PRINT_LIB_INFO(outstream, avsequencer, AVSEQUENCER, flags); PRINT_LIB_INFO(outstream, avdevice, AVDEVICE, flags); PRINT_LIB_INFO(outstream, avfilter, AVFILTER, flags); PRINT_LIB_INFO(outstream, swscale, SWSCALE, flags); diff --git a/common.mak b/common.mak index 2c20f13..e317c75 100644 --- a/common.mak +++ b/common.mak @@ -31,7 +31,7 @@ $(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR)))) $(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL)) endif -ALLFFLIBS = avcodec avcore avdevice avfilter avformat avutil postproc swscale +ALLFFLIBS = avcodec avcore avdevice avfilter avformat avsequencer avutil postproc swscale IFLAGS := -I$(BUILD_ROOT_REL) -I$(SRC_PATH) CPPFLAGS := $(IFLAGS) $(CPPFLAGS) diff --git a/configure b/configure index ccad596..18f6478 100755 --- a/configure +++ b/configure @@ -90,6 +90,7 @@ Configuration options: --disable-avformat disable libavformat build --disable-swscale disable libswscale build --enable-postproc enable GPLed postprocessing support [no] + --disable-avsequencer disable libavsequencer build --disable-avfilter disable video filter support [no] --disable-pthreads disable pthreads [auto] --enable-w32threads use Win32 threads [no] @@ -146,6 +147,9 @@ Configuration options: --enable-filter=NAME enable filter NAME --disable-filter=NAME disable filter NAME --disable-filters disable all filters + --enable-mixer=NAME enable mixer NAME + --disable-mixer=NAME disable mixer NAME + --disable-mixers disable all mixers --list-decoders show all available decoders --list-encoders show all available encoders --list-hwaccels show all available hardware accelerators @@ -157,6 +161,7 @@ Configuration options: --list-indevs show all available input devices --list-outdevs show all available output devices --list-filters show all available filters + --list-mixers show all available mixers External library support: --enable-avisynth enable reading of AVISynth script files [no] @@ -834,6 +839,7 @@ COMPONENT_LIST=" demuxers encoders filters + mixers hwaccels indevs muxers @@ -850,6 +856,7 @@ CONFIG_LIST=" avdevice avfilter avformat + avsequencer avisynth bzlib dct @@ -1534,6 +1541,7 @@ enable avcore enable avdevice enable avfilter enable avformat +enable avsequencer enable avutil enable asm enable debug @@ -1617,6 +1625,7 @@ OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c) INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c) PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c) FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c) +MIXER_LIST=$(find_things mixer MIXER libavsequencer/allmixers.c) find_tests(){ map "echo ${2}\${v}_test" $(ls "$source_path"/tests/ref/$1 | grep -v '[^-a-z0-9_]') @@ -2810,7 +2819,7 @@ enabled extra_warnings && check_cflags -Winline # add some linker flags check_ldflags -Wl,--warn-common check_ldflags -Wl,--as-needed -check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavcore -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' +check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavsequencer -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavcore -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' check_ldflags -Wl,-Bsymbolic echo "X{};" > $TMPV @@ -2887,6 +2896,7 @@ check_deps $CONFIG_LIST \ $DEMUXER_LIST \ $MUXER_LIST \ $FILTER_LIST \ + $MIXER_LIST \ $INDEV_LIST \ $OUTDEV_LIST \ $PROTOCOL_LIST \ @@ -2950,6 +2960,7 @@ echo "static ${static-no}" echo "shared ${shared-no}" echo "postprocessing support ${postproc-no}" echo "new filter support ${avfilter-no}" +echo "new sequencer support ${avsequencer-no}" echo "network support ${network-no}" echo "threading support ${thread_type-no}" echo "SDL support ${sdl-no}" @@ -2977,7 +2988,7 @@ echo "zlib enabled ${zlib-no}" echo "bzlib enabled ${bzlib-no}" echo -for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do +for type in decoder encoder hwaccel parser demuxer muxer protocol filter mixer bsf indev outdev; do echo "Enabled ${type}s:" eval list=\$$(toupper $type)_LIST print_enabled '_*' $list | sort | pr -3 -t @@ -3009,6 +3020,7 @@ if enabled source_path_used; then libavdevice libavfilter libavformat + libavsequencer libavutil libavutil/$arch libpostproc @@ -3028,6 +3040,7 @@ if enabled source_path_used; then libavdevice/Makefile libavfilter/Makefile libavformat/Makefile + libavsequencer/Makefile libavutil/Makefile libpostproc/Makefile libswscale/Makefile @@ -3127,6 +3140,7 @@ get_version LIBAVCODEC libavcodec/avcodec.h get_version LIBAVCORE libavcore/avcore.h get_version LIBAVDEVICE libavdevice/avdevice.h get_version LIBAVFORMAT libavformat/avformat.h +get_version LIBAVSEQUENCER libavsequencer/avsequencer.h get_version LIBAVUTIL libavutil/avutil.h get_version LIBAVFILTER libavfilter/avfilter.h @@ -3165,6 +3179,7 @@ print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \ $DEMUXER_LIST \ $MUXER_LIST \ $FILTER_LIST \ + $MIXER_LIST \ $PROTOCOL_LIST \ $INDEV_LIST \ $OUTDEV_LIST \ @@ -3248,5 +3263,6 @@ pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$ext pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION" pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION" pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavcore = $LIBAVCORE_VERSION" +pkgconfig_generate libavsequencer "FFmpeg audio sequencer library" "$LIBAVSEQUENCER_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION" pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION" pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION" diff --git a/libavsequencer/Makefile b/libavsequencer/Makefile new file mode 100644 index 0000000..5dfb4fb --- /dev/null +++ b/libavsequencer/Makefile @@ -0,0 +1,30 @@ +include $(SUBDIR)../config.mak + +NAME = avsequencer +FFLIBS = avcodec avformat avutil + +HEADERS = avsequencer.h \ + instr.h \ + module.h \ + order.h \ + player.h \ + sample.h \ + song.h \ + synth.h \ + track.h \ + +OBJS = allmixers.o \ + avsequencer.o \ + instr.o \ + module.o \ + order.o \ + player.o \ + sample.o \ + song.o \ + synth.o \ + track.o \ + +OBJS-$(CONFIG_LOW_QUALITY_MIXER) += lq_mixer.o +OBJS-$(CONFIG_NULL_MIXER) += null_mixer.o + +include $(SUBDIR)../subdir.mak diff --git a/libavsequencer/libavsequencer.v b/libavsequencer/libavsequencer.v new file mode 100644 index 0000000..0153983 --- /dev/null +++ b/libavsequencer/libavsequencer.v @@ -0,0 +1,4 @@ +LIBAVSEQUENCER_$MAJOR { + global: avsequencer_*; avseq_*; ff_*; + local: *; +};
_______________________________________________ FFmpeg-soc mailing list FFmpeg-soc@mplayerhq.hu https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc