From c2642efc13ede8debbf6993e8edc588a1ebbf984 Mon Sep 17 00:00:00 2001 From: k-m_schindler Date: Mon, 28 Dec 2015 15:34:04 +0000 Subject: add configure for swresample git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@3154 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Makefile.in | 5 +- configure | 243 ++++++++++++++++++++++++++++++++++++++ configure.ac | 5 + src/base/UConfig.pas | 3 + src/config-darwin.inc | 33 ++++-- src/config.inc.in | 8 ++ src/lib/ffmpeg-2.7/swresample.pas | 58 ++++----- src/lib/ffmpeg-2.8/swresample.pas | 60 +++++----- src/ultrastardx.dpr | 3 + 9 files changed, 347 insertions(+), 71 deletions(-) diff --git a/Makefile.in b/Makefile.in index 5bfd09b1..08066cd0 100644 --- a/Makefile.in +++ b/Makefile.in @@ -416,7 +416,8 @@ macosx-app: all @echo "Have fun." @echo "" -AVCODECLIB := $(shell $(OTOOL) -L $(macosx_bundle_path)/MacOS/ultrastardx | grep avcodec | cut -f 1 -d ' ' | cut -f 2 -d '/') +AVCODECLIB := $(shell $(OTOOL) -L $(macosx_bundle_path)/MacOS/ultrastardx | grep avcodec | cut -f 1 -d ' ' | cut -f 4-6 -d '/') +SWRESAMPLELIB := $(shell $(OTOOL) -L $(macosx_bundle_path)/MacOS/libavcodec*.dylib | grep swresample | cut -f 1 -d ' ' | cut -f 4-6 -d '/') .PHONY: macosx-standalone-app macosx-standalone-app: macosx-app # Create double clickable standalone (does not need fink) Mac OS X @@ -443,7 +444,7 @@ macosx-standalone-app: macosx-app $(foreach dylib,$(shell $(OTOOL) -L $(finkLibDir)/libtiff.dylib | grep version | cut -f 1 -d ' ' | grep -v \/System\/Library | grep -v \/usr\/lib),$(install_osx_libraries)) # X11 libs as well, because users may not have installed it on 10.4 - $(foreach dylib,$(shell $(OTOOL) -L /usr/X11R6/lib/libX11.dylib | grep version | cut -f 1 -d ' ' | grep -v \/System\/Library | grep -v \/usr\/lib),$(install_osx_libraries)) + $(foreach dylib,$(shell $(OTOOL) -L /opt/X11/lib/libX11.dylib | grep version | cut -f 1 -d ' ' | grep -v \/System\/Library | grep -v \/usr\/lib),$(install_osx_libraries)) # libpcre.dylib must be installed extra, since it is not linked to the executable but opened using dlopen $(shell $(INSTALL) -m 755 $(finkLibDir)/libpcre.dylib $(macosx_bundle_path)/MacOS) diff --git a/configure b/configure index 1db33f95..7e0f2274 100755 --- a/configure +++ b/configure @@ -613,6 +613,12 @@ libprojectM_VERSION_RELEASE libprojectM_VERSION_MINOR libprojectM_VERSION_MAJOR libprojectM_VERSION +DEFINE_HAVE_SWRESAMPLE +libswresample_VERSION_INT +libswresample_VERSION_RELEASE +libswresample_VERSION_MINOR +libswresample_VERSION_MAJOR +libswresample_VERSION DEFINE_HAVE_SWSCALE libswscale_VERSION_INT libswscale_VERSION_RELEASE @@ -792,6 +798,7 @@ libavcodec_VERSION libavformat_VERSION libavutil_VERSION libswscale_VERSION +libswresample_VERSION libprojectM_VERSION libprojectM_INCLUDEDIR libprojectM_DATADIR @@ -1467,6 +1474,8 @@ Some influential environment variables: version of libavutil, overriding pkg-config libswscale_VERSION version of libswscale, overriding pkg-config + libswresample_VERSION + version of libswresample, overriding pkg-config libprojectM_VERSION version of libprojectM, overriding pkg-config libprojectM_INCLUDEDIR @@ -7119,6 +7128,240 @@ $as_echo "[$FFMPEG_VERSION]" >&6; } +# find FFMpeg's swresample lib (just if FFMpeg is compiled in GPL mode) + + have_lib="no" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libswresample" >&5 +$as_echo_n "checking for libswresample... " >&6; } + if test x"$with_libswresample" = xnocheck; then + # do not call pkg-config, use user settings + have_lib="yes" + elif test x"$with_libswresample" != xno; then + # check if package exists + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libswresample\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libswresample") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + + have_lib="yes" + libswresample_LIBS=`$PKG_CONFIG --libs --silence-errors "libswresample"` + libswresample_LIBDIRS=`$PKG_CONFIG --libs-only-L --silence-errors "libswresample"` + libswresample_LIBDIRS=` + echo "$libswresample_LIBDIRS" | $SED 's/^[ \t]*//' | $SED 's/[ \t]*$//' +` + # add library directories to LIBS (ignore *_LIBS for now) + if test -n "$libswresample_LIBDIRS"; then + LIBS="$LIBS $libswresample_LIBDIRS" + fi + +fi + fi + if test x$have_lib = xyes; then + libswresample_HAVE="yes" + if test -n "$libswresample_LIBDIRS"; then + # show additional lib-dirs + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes ($libswresample_LIBDIRS)" >&5 +$as_echo "yes ($libswresample_LIBDIRS)" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + else + libswresample_HAVE="no" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + # check if package is required + if test xno = xyes -o x"$with_libswresample" = xyes ; then + # print error message and quit + err_msg=`$PKG_CONFIG --errors-to-stdout --print-errors "libswresample"` + as_fn_error $? " + +$err_msg + +Alternatively, you may set --with-libswresample=nocheck and the environment +variables libswresample_[...] (see configure --help) +to appropriate values to avoid the need to call pkg-config. + +See the pkg-config man page for more details. +" "$LINENO" 5 + fi + fi + + + if test x$libswresample_HAVE = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of libswresample" >&5 +$as_echo_n "checking version of libswresample... " >&6; } + + + # check if variable was defined by the user + if test -z "$libswresample_VERSION"; then + # if not, get it from pkg-config + if test x$libswresample_HAVE = xyes; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libswresample\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libswresample") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + libswresample_VERSION=`$PKG_CONFIG --modversion --silence-errors "libswresample"` +else + # print error message and quit + err_msg=`$PKG_CONFIG --errors-to-stdout --print-errors "libswresample"` + as_fn_error $? " + +$err_msg + +If --with-libswresample=nocheck is defined the environment variable +libswresample_VERSION +must be set to avoid the need to call pkg-config. + +See the pkg-config man page for more details. +" "$LINENO" 5 + + +fi + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: [$libswresample_VERSION]" >&5 +$as_echo "[$libswresample_VERSION]" >&6; } + else + libswresample_VERSION="0.0.0" + fi + + version=$libswresample_VERSION + + # strip leading non-numeric tokens + # (necessary for some ffmpeg-packages in ubuntu) + # example: 0d.51.1.0 -> 51.1.0 + version=`echo $version | sed 's/^[^.]*[^0-9.][^.]*\.//'` + + # replace "." and "-" with " " and ignore trailing tokens. + # 1.23.4-r2 will be splitted to [maj=1, min=23, rel=4]. + # In addition we delete everything after the first character + # which is not 0-9. + # 1.3a4-r32 will be [maj=1, min=3, rel=0]. + read major minor release ignore <&5 +$as_echo_n "checking version of ffmpeg... " >&6; } + if test $libswresample_VERSION_INT -le 60000000; then + if test $libswresample_VERSION_INT -ge 54031100; then + FFMPEG_VERSION="2.8" + elif test $libswresample_VERSION_INT -ge 54027100; then + FFMPEG_VERSION="2.7" + elif test $libswresample_VERSION_INT -ge 54020100; then + FFMPEG_VERSION="2.6" + elif test $libswresample_VERSION_INT -ge 54015100; then + FFMPEG_VERSION="2.5" + elif test $libswresample_VERSION_INT -ge 54007001; then + FFMPEG_VERSION="2.4" + elif test $libswresample_VERSION_INT -ge 52066100; then + FFMPEG_VERSION="2.2" + elif test $libswresample_VERSION_INT -ge 52048100; then + FFMPEG_VERSION="2.1" + elif test $libswresample_VERSION_INT -ge 52038100; then + FFMPEG_VERSION="2.0" + elif test $libswresample_VERSION_INT -ge 52018100; then + FFMPEG_VERSION="1.2" + elif test $libswresample_VERSION_INT -ge 52013100; then + FFMPEG_VERSION="1.1" + elif test $libswresample_VERSION_INT -ge 51073101; then + FFMPEG_VERSION="1.0" + elif test $libswresample_VERSION_INT -ge 51054100; then + FFMPEG_VERSION="0.11" + elif test $libswresample_VERSION_INT -ge 51034101; then + FFMPEG_VERSION="0.10" + elif test $libswresample_VERSION_INT -ge 51032000; then + FFMPEG_VERSION="0.9" + elif test $libswresample_VERSION_INT -ge 51009001; then + FFMPEG_VERSION="0.8" + elif test $libswresample_VERSION_INT -ge 50043000; then + FFMPEG_VERSION="0.7" + else + FFMPEG_VERSION="0" + fi + else + FFMPEG_VERSION="0" + fi + + version=$FFMPEG_VERSION + + # strip leading non-numeric tokens + # (necessary for some ffmpeg-packages in ubuntu) + # example: 0d.51.1.0 -> 51.1.0 + version=`echo $version | sed 's/^[^.]*[^0-9.][^.]*\.//'` + + # replace "." and "-" with " " and ignore trailing tokens. + # 1.23.4-r2 will be splitted to [maj=1, min=23, rel=4]. + # In addition we delete everything after the first character + # which is not 0-9. + # 1.3a4-r32 will be [maj=1, min=3, rel=0]. + read major minor release ignore <&5 +$as_echo "[$FFMPEG_VERSION]" >&6; } + fi + + + if [ x$libswresample_HAVE = xyes ]; then + DEFINE_HAVE_SWRESAMPLE=DEFINE + else + DEFINE_HAVE_SWRESAMPLE=UNDEF + fi + + + # find projectM version libprojectM_PKG="libprojectM >= 0.98" diff --git a/configure.ac b/configure.ac index aa3b7a7d..6a814555 100644 --- a/configure.ac +++ b/configure.ac @@ -242,6 +242,11 @@ PKG_HAVE([libswscale], [libswscale], no) PKG_VERSION([libswscale], [libswscale]) AC_SUBST_DEFINE(HAVE_SWSCALE, $libswscale_HAVE) +# find FFMpeg's swresample lib (just if FFMpeg is compiled in GPL mode) +PKG_HAVE([libswresample], [libswresample], no) +PKG_VERSION([libswresample], [libswresample]) +AC_SUBST_DEFINE(HAVE_SWRESAMPLE, $libswresample_HAVE) + # find projectM version libprojectM_PKG="libprojectM >= 0.98" PKG_HAVE([libprojectM], [$libprojectM_PKG], no) diff --git a/src/base/UConfig.pas b/src/base/UConfig.pas index 2e1c59f0..79964451 100644 --- a/src/base/UConfig.pas +++ b/src/base/UConfig.pas @@ -181,6 +181,9 @@ const LIBSWSCALE_VERSION = (LIBSWSCALE_VERSION_MAJOR * VERSION_MAJOR) + (LIBSWSCALE_VERSION_MINOR * VERSION_MINOR) + (LIBSWSCALE_VERSION_RELEASE * VERSION_RELEASE); + LIBSWRESAMPLE_VERSION = (LIBSWRESAMPLE_VERSION_MAJOR * VERSION_MAJOR) + + (LIBSWRESAMPLE_VERSION_MINOR * VERSION_MINOR) + + (LIBSWRESAMPLE_VERSION_RELEASE * VERSION_RELEASE); {$ENDIF} {$ENDIF} diff --git a/src/config-darwin.inc b/src/config-darwin.inc index 8bde009d..37ce2334 100644 --- a/src/config-darwin.inc +++ b/src/config-darwin.inc @@ -7,19 +7,19 @@ {$IF Defined(IncludeConstants)} LUA_LIB_NAME = 'lua'; - LUA_VERSION_INT = 5001005; - LUA_VERSION_RELEASE = '5'; - LUA_VERSION_MINOR = '1'; + LUA_VERSION_INT = 5002004; + LUA_VERSION_RELEASE = '4'; + LUA_VERSION_MINOR = '2'; LUA_VERSION_MAJOR = '5'; - LUA_VERSION = '5.1.5'; + LUA_VERSION = '5.2.4'; {$IFEND} {$DEFINE HaveFFmpeg} {$IF Defined(HaveFFmpeg)} {$MACRO ON} {$IFNDEF FFMPEG_DIR} - {$IF (4 > 0) or (2 > 0)} - {$DEFINE FFMPEG_DIR := 'ffmpeg-2.4'} + {$IF (8 > 0) or (2 > 0)} + {$DEFINE FFMPEG_DIR := 'ffmpeg-2.8'} {$DEFINE FF_API_OLD_DECODE_AUDIO} {$ELSE} {$DEFINE FFMPEG_DIR := 'ffmpeg'} @@ -27,21 +27,21 @@ {$IFEND} {$ENDIF} {$IF Defined(IncludeConstants)} - FFMPEG_VERSION_INT = 2004000; + FFMPEG_VERSION_INT = 2008000; av__codec = 'libavcodec'; LIBAVCODEC_VERSION_MAJOR = 56; - LIBAVCODEC_VERSION_MINOR = 1; + LIBAVCODEC_VERSION_MINOR = 60; LIBAVCODEC_VERSION_RELEASE = 100; av__format = 'libavformat'; LIBAVFORMAT_VERSION_MAJOR = 56; - LIBAVFORMAT_VERSION_MINOR = 4; + LIBAVFORMAT_VERSION_MINOR = 40; LIBAVFORMAT_VERSION_RELEASE = 101; av__util = 'libavutil'; LIBAVUTIL_VERSION_MAJOR = 54; - LIBAVUTIL_VERSION_MINOR = 7; + LIBAVUTIL_VERSION_MINOR = 31; LIBAVUTIL_VERSION_RELEASE = 100; {$IFEND} {$IFEND} @@ -50,8 +50,16 @@ {$IF Defined(HaveSWScale) and Defined(IncludeConstants)} sw__scale = 'libswscale'; LIBSWSCALE_VERSION_MAJOR = 3; - LIBSWSCALE_VERSION_MINOR = 0; - LIBSWSCALE_VERSION_RELEASE = 100; + LIBSWSCALE_VERSION_MINOR = 1; + LIBSWSCALE_VERSION_RELEASE = 101; +{$IFEND} + +{$DEFINE HaveSWResample} +{$IF Defined(HaveSWScale) and Defined(IncludeConstants)} + sw__resample = 'libswresample'; + LIBSWRESAMPLE_VERSION_MAJOR = 1; + LIBSWRESAMPLE_VERSION_MINOR = 2; + LIBSWRESAMPLE_VERSION_RELEASE = 101; {$IFEND} {$UNDEF HaveProjectM} @@ -71,6 +79,7 @@ {$DEFINE HaveLibPcre} {$IF Defined(HaveLibPcre) and Defined(IncludeConstants)} + LIBPCRE_LIBNAME = ''; LIBPCRE_LIBDIR = '/sw/lib/libpcre1'; {$IFEND} diff --git a/src/config.inc.in b/src/config.inc.in index 232ba615..94dc5a2c 100644 --- a/src/config.inc.in +++ b/src/config.inc.in @@ -54,6 +54,14 @@ LIBSWSCALE_VERSION_RELEASE = @libswscale_VERSION_RELEASE@; {$IFEND} +{$@DEFINE_HAVE_SWRESAMPLE@ HaveSWResample} +{$IF Defined(HaveSWScale) and Defined(IncludeConstants)} + sw__resample = 'libswresample'; + LIBSWRESAMPLE_VERSION_MAJOR = @libswresample_VERSION_MAJOR@; + LIBSWRESAMPLE_VERSION_MINOR = @libswresample_VERSION_MINOR@; + LIBSWRESAMPLE_VERSION_RELEASE = @libswresample_VERSION_RELEASE@; +{$IFEND} + {$@DEFINE_HAVE_PROJECTM@ HaveProjectM} {$IF Defined(HaveProjectM) and Defined(IncludeConstants)} ProjectM_DataDir = '@libprojectM_DATADIR@'; diff --git a/src/lib/ffmpeg-2.7/swresample.pas b/src/lib/ffmpeg-2.7/swresample.pas index 9bb4568c..f4a4e468 100644 --- a/src/lib/ffmpeg-2.7/swresample.pas +++ b/src/lib/ffmpeg-2.7/swresample.pas @@ -48,6 +48,8 @@ interface uses ctypes, rational, + avcodec, + avutil, {$IFDEF UNIX} BaseUnix, {$ENDIF} @@ -86,7 +88,7 @@ const LIBSWRESAMPLE_MAX_VERSION_RELEASE = 100; LIBSWRESAMPLE_MAX_VERSION = (LIBSWRESAMPLE_MAX_VERSION_MAJOR * VERSION_MAJOR) + (LIBSWRESAMPLE_MAX_VERSION_MINOR * VERSION_MINOR) + - (LIBSWRESAMPLE_VERSION_RELEASE * VERSION_RELEASE); + (LIBSWRESAMPLE_MAX_VERSION_RELEASE * VERSION_RELEASE); (* Min. supported version by this header *) LIBSWRESAMPLE_MIN_VERSION_MAJOR = 1; @@ -106,7 +108,7 @@ const {$MESSAGE Error 'Linked version of libswresample is not yet supported!'} {$IFEND} -{$IF LIBRESAMPLE_VERSION_MAJOR < 1} +{$IF LIBSWRESAMPLE_VERSION_MAJOR < 1} SWR_CH_MAX = 32; (* < Maximum number of channels *) {$ENDIF} SWR_FLAG_RESAMPLE = 1; (* < Force resampling even if equal sample rate *) @@ -162,7 +164,7 @@ type * @see av_opt_find(). *) function swr_get_class(): PAVClass; - cdecl; external swresample; + cdecl; external sw__resample; (** * Allocate SwrContext. @@ -174,7 +176,7 @@ function swr_get_class(): PAVClass; * @return NULL on error, allocated context otherwise *) function swr_alloc(): PSwrContext; - cdecl; external swresample; + cdecl; external sw__resample; (** * Initialize context after user parameters have been set. @@ -186,7 +188,7 @@ function swr_alloc(): PSwrContext; * @return AVERROR error code in case of failure. *) function swr_init(s: PSwrContext): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Check whether an swr context has been initialized or not. @@ -196,7 +198,7 @@ function swr_init(s: PSwrContext): cint; * @return positive if it has been initialized, 0 if not initialized *) function swr_is_initialized(s: PSwrContext): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Allocate SwrContext if needed and set/reset common parameters. @@ -206,12 +208,12 @@ function swr_is_initialized(s: PSwrContext): cint; * on the allocated context. * * @param s existing Swr context if available, or NULL if not - * @param out_ch_layout output channel layout (AV_CH_LAYOUT_*) - * @param out_sample_fmt output sample format (AV_SAMPLE_FMT_*). - * @param out_sample_rate output sample rate (frequency in Hz) - * @param in_ch_layout input channel layout (AV_CH_LAYOUT_*) - * @param in_sample_fmt input sample format (AV_SAMPLE_FMT_*). - * @param in_sample_rate input sample rate (frequency in Hz) + * @param out_ch_layout output channel layout (AV_CH_LAYOUT_* ) + * @param out_sample_fmt output sample format (AV_SAMPLE_FMT_* ). + * @param out_sample_rate output sample rate (frequency in Hz ) + * @param in_ch_layout input channel layout (AV_CH_LAYOUT_* ) + * @param in_sample_fmt input sample format (AV_SAMPLE_FMT_* ). + * @param in_sample_rate input sample rate (frequency in Hz ) * @param log_offset logging level offset * @param log_ctx parent logging context, can be NULL * @@ -222,7 +224,7 @@ function swr_alloc_set_opts(s: PSwrContext; out_ch_layout: cint64; out_sample_fmt: TAVSampleFormat; out_sample_rate: cint; in_ch_layout: cint64; in_sample_fmt: TAVSampleFormat; in_sample_rate: cint; log_offset: cint; log_ctx: pointer): PSwrContext; - cdecl; external swresample; + cdecl; external sw__resample; (** * Free the given SwrContext and set the pointer to NULL. @@ -230,7 +232,7 @@ function swr_alloc_set_opts(s: PSwrContext; * @param[in] s a pointer to a pointer to Swr context *) procedure swr_free(s: PPSwrContext); - cdecl; external swresample; + cdecl; external sw__resample; (** * Closes the context so that swr_is_initialized() returns 0. @@ -243,7 +245,7 @@ procedure swr_free(s: PPSwrContext); * @param[in,out] s Swr context to be closed *) procedure swr_close(s: PSwrContext); - cdecl; external swresample; + cdecl; external sw__resample; (** * Convert audio. @@ -266,7 +268,7 @@ procedure swr_close(s: PSwrContext); *) function swr_convert(s: PSwrContext; var out_: PByte; out_count: cint; var in_: {const} PByte; in_count: cint): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Convert the next timestamp from input to output @@ -282,7 +284,7 @@ function swr_convert(s: PSwrContext; var out_: PByte; out_count: cint; * @return the output timestamp for the next output sample *) function swr_next_pts(s: PSwrContext; pts: cint64): cint64; - cdecl; external swresample; + cdecl; external sw__resample; (** * Activate resampling compensation ("soft" compensation). This function is @@ -301,7 +303,7 @@ function swr_next_pts(s: PSwrContext; pts: cint64): cint64; * @li swr_init() fails when called. *) function swr_set_compensation(s: PSwrContext; sample_delta: cint; compensation_distance: cint): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Set a customized input channel mapping. @@ -312,7 +314,7 @@ function swr_set_compensation(s: PSwrContext; sample_delta: cint; compensation_d * @return >= 0 on success, or AVERROR error code in case of failure. *) function swr_set_channel_mapping(s: PSwrContext; {const} channel_map: pcint): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Set a customized remix matrix. @@ -324,7 +326,7 @@ function swr_set_channel_mapping(s: PSwrContext; {const} channel_map: pcint): ci * @return >= 0 on success, or AVERROR error code in case of failure. *) function swr_set_matrix(s: PSwrContext; {const} matrix: pcdouble; stride: cint): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Drops the specified number of output samples. @@ -338,7 +340,7 @@ function swr_set_matrix(s: PSwrContext; {const} matrix: pcdouble; stride: cint): * @return >= 0 on success, or a negative AVERROR code on failure *) function swr_drop_output(s: PSwrContext; count: cint): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Injects the specified number of silence samples. @@ -352,7 +354,7 @@ function swr_drop_output(s: PSwrContext; count: cint): cint; * @return >= 0 on success, or a negative AVERROR code on failure *) function swr_inject_silence(s: PSwrContext; count: cint): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Gets the delay the next input sample will experience relative to the next output sample. @@ -379,7 +381,7 @@ function swr_inject_silence(s: PSwrContext; count: cint): cint; * @returns the delay in 1 / @c base units. *) function swr_get_delay(s: PSwrContext; base: cint64): cint64; - cdecl; external swresample; + cdecl; external sw__resample; (** * Find an upper bound on the number of samples that the next swr_convert @@ -397,8 +399,8 @@ function swr_get_delay(s: PSwrContext; base: cint64): cint64; * @returns an upper bound on the number of samples that the next swr_convert * will output or a negative value to indicate an error *) -function swr_get_out_samples(s: PSwrContext; in_samples: cint); - cdecl; external swresample; +procedure swr_get_out_samples(s: PSwrContext; in_samples: cint); + cdecl; external sw__resample; (** * Return the @ref LIBSWRESAMPLE_VERSION_INT constant. @@ -409,7 +411,7 @@ function swr_get_out_samples(s: PSwrContext; in_samples: cint); * @returns the unsigned int-typed version *) function swresample_version(): cuint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Return the swr build-time configuration. @@ -417,7 +419,7 @@ function swresample_version(): cuint; * @returns the build-time @c ./configure flags *) function swresample_configuration(): PAnsiChar; - cdecl; external swresample; + cdecl; external sw__resample; (** * Return the swr license. @@ -425,7 +427,7 @@ function swresample_configuration(): PAnsiChar; * @returns the license of libswresample, determined at build-time *) function swresample_license(): PAnsiChar; - cdecl; external swresample; + cdecl; external sw__resample; implementation diff --git a/src/lib/ffmpeg-2.8/swresample.pas b/src/lib/ffmpeg-2.8/swresample.pas index 9bb4568c..277e10b1 100644 --- a/src/lib/ffmpeg-2.8/swresample.pas +++ b/src/lib/ffmpeg-2.8/swresample.pas @@ -48,6 +48,8 @@ interface uses ctypes, rational, + avcodec, + avutil, {$IFDEF UNIX} BaseUnix, {$ENDIF} @@ -86,7 +88,7 @@ const LIBSWRESAMPLE_MAX_VERSION_RELEASE = 100; LIBSWRESAMPLE_MAX_VERSION = (LIBSWRESAMPLE_MAX_VERSION_MAJOR * VERSION_MAJOR) + (LIBSWRESAMPLE_MAX_VERSION_MINOR * VERSION_MINOR) + - (LIBSWRESAMPLE_VERSION_RELEASE * VERSION_RELEASE); + (LIBSWRESAMPLE_MAX_VERSION_RELEASE * VERSION_RELEASE); (* Min. supported version by this header *) LIBSWRESAMPLE_MIN_VERSION_MAJOR = 1; @@ -103,10 +105,10 @@ const (* Check if linked version is supported *) {$IF (LIBSWRESAMPLE_VERSION > LIBSWRESAMPLE_MAX_VERSION)} - {$MESSAGE Error 'Linked version of libswresample is not yet supported!'} +// {$MESSAGE Error 'Linked version of libswresample is not yet supported!'} {$IFEND} -{$IF LIBRESAMPLE_VERSION_MAJOR < 1} +{$IF LIBSWRESAMPLE_VERSION_MAJOR < 1} SWR_CH_MAX = 32; (* < Maximum number of channels *) {$ENDIF} SWR_FLAG_RESAMPLE = 1; (* < Force resampling even if equal sample rate *) @@ -162,7 +164,7 @@ type * @see av_opt_find(). *) function swr_get_class(): PAVClass; - cdecl; external swresample; + cdecl; external sw__resample; (** * Allocate SwrContext. @@ -174,7 +176,7 @@ function swr_get_class(): PAVClass; * @return NULL on error, allocated context otherwise *) function swr_alloc(): PSwrContext; - cdecl; external swresample; + cdecl; external sw__resample; (** * Initialize context after user parameters have been set. @@ -186,7 +188,7 @@ function swr_alloc(): PSwrContext; * @return AVERROR error code in case of failure. *) function swr_init(s: PSwrContext): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Check whether an swr context has been initialized or not. @@ -196,7 +198,7 @@ function swr_init(s: PSwrContext): cint; * @return positive if it has been initialized, 0 if not initialized *) function swr_is_initialized(s: PSwrContext): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Allocate SwrContext if needed and set/reset common parameters. @@ -206,12 +208,12 @@ function swr_is_initialized(s: PSwrContext): cint; * on the allocated context. * * @param s existing Swr context if available, or NULL if not - * @param out_ch_layout output channel layout (AV_CH_LAYOUT_*) - * @param out_sample_fmt output sample format (AV_SAMPLE_FMT_*). - * @param out_sample_rate output sample rate (frequency in Hz) - * @param in_ch_layout input channel layout (AV_CH_LAYOUT_*) - * @param in_sample_fmt input sample format (AV_SAMPLE_FMT_*). - * @param in_sample_rate input sample rate (frequency in Hz) + * @param out_ch_layout output channel layout (AV_CH_LAYOUT_* ) + * @param out_sample_fmt output sample format (AV_SAMPLE_FMT_* ). + * @param out_sample_rate output sample rate (frequency in Hz ) + * @param in_ch_layout input channel layout (AV_CH_LAYOUT_* ) + * @param in_sample_fmt input sample format (AV_SAMPLE_FMT_* ). + * @param in_sample_rate input sample rate (frequency in Hz ) * @param log_offset logging level offset * @param log_ctx parent logging context, can be NULL * @@ -222,7 +224,7 @@ function swr_alloc_set_opts(s: PSwrContext; out_ch_layout: cint64; out_sample_fmt: TAVSampleFormat; out_sample_rate: cint; in_ch_layout: cint64; in_sample_fmt: TAVSampleFormat; in_sample_rate: cint; log_offset: cint; log_ctx: pointer): PSwrContext; - cdecl; external swresample; + cdecl; external sw__resample; (** * Free the given SwrContext and set the pointer to NULL. @@ -230,7 +232,7 @@ function swr_alloc_set_opts(s: PSwrContext; * @param[in] s a pointer to a pointer to Swr context *) procedure swr_free(s: PPSwrContext); - cdecl; external swresample; + cdecl; external sw__resample; (** * Closes the context so that swr_is_initialized() returns 0. @@ -243,7 +245,7 @@ procedure swr_free(s: PPSwrContext); * @param[in,out] s Swr context to be closed *) procedure swr_close(s: PSwrContext); - cdecl; external swresample; + cdecl; external sw__resample; (** * Convert audio. @@ -266,7 +268,7 @@ procedure swr_close(s: PSwrContext); *) function swr_convert(s: PSwrContext; var out_: PByte; out_count: cint; var in_: {const} PByte; in_count: cint): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Convert the next timestamp from input to output @@ -282,7 +284,7 @@ function swr_convert(s: PSwrContext; var out_: PByte; out_count: cint; * @return the output timestamp for the next output sample *) function swr_next_pts(s: PSwrContext; pts: cint64): cint64; - cdecl; external swresample; + cdecl; external sw__resample; (** * Activate resampling compensation ("soft" compensation). This function is @@ -301,7 +303,7 @@ function swr_next_pts(s: PSwrContext; pts: cint64): cint64; * @li swr_init() fails when called. *) function swr_set_compensation(s: PSwrContext; sample_delta: cint; compensation_distance: cint): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Set a customized input channel mapping. @@ -312,7 +314,7 @@ function swr_set_compensation(s: PSwrContext; sample_delta: cint; compensation_d * @return >= 0 on success, or AVERROR error code in case of failure. *) function swr_set_channel_mapping(s: PSwrContext; {const} channel_map: pcint): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Set a customized remix matrix. @@ -324,7 +326,7 @@ function swr_set_channel_mapping(s: PSwrContext; {const} channel_map: pcint): ci * @return >= 0 on success, or AVERROR error code in case of failure. *) function swr_set_matrix(s: PSwrContext; {const} matrix: pcdouble; stride: cint): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Drops the specified number of output samples. @@ -338,7 +340,7 @@ function swr_set_matrix(s: PSwrContext; {const} matrix: pcdouble; stride: cint): * @return >= 0 on success, or a negative AVERROR code on failure *) function swr_drop_output(s: PSwrContext; count: cint): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Injects the specified number of silence samples. @@ -352,7 +354,7 @@ function swr_drop_output(s: PSwrContext; count: cint): cint; * @return >= 0 on success, or a negative AVERROR code on failure *) function swr_inject_silence(s: PSwrContext; count: cint): cint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Gets the delay the next input sample will experience relative to the next output sample. @@ -379,7 +381,7 @@ function swr_inject_silence(s: PSwrContext; count: cint): cint; * @returns the delay in 1 / @c base units. *) function swr_get_delay(s: PSwrContext; base: cint64): cint64; - cdecl; external swresample; + cdecl; external sw__resample; (** * Find an upper bound on the number of samples that the next swr_convert @@ -397,8 +399,8 @@ function swr_get_delay(s: PSwrContext; base: cint64): cint64; * @returns an upper bound on the number of samples that the next swr_convert * will output or a negative value to indicate an error *) -function swr_get_out_samples(s: PSwrContext; in_samples: cint); - cdecl; external swresample; +procedure swr_get_out_samples(s: PSwrContext; in_samples: cint); + cdecl; external sw__resample; (** * Return the @ref LIBSWRESAMPLE_VERSION_INT constant. @@ -409,7 +411,7 @@ function swr_get_out_samples(s: PSwrContext; in_samples: cint); * @returns the unsigned int-typed version *) function swresample_version(): cuint; - cdecl; external swresample; + cdecl; external sw__resample; (** * Return the swr build-time configuration. @@ -417,7 +419,7 @@ function swresample_version(): cuint; * @returns the build-time @c ./configure flags *) function swresample_configuration(): PAnsiChar; - cdecl; external swresample; + cdecl; external sw__resample; (** * Return the swr license. @@ -425,7 +427,7 @@ function swresample_configuration(): PAnsiChar; * @returns the license of libswresample, determined at build-time *) function swresample_license(): PAnsiChar; - cdecl; external swresample; + cdecl; external sw__resample; implementation diff --git a/src/ultrastardx.dpr b/src/ultrastardx.dpr index d5cf85e6..0e02bdc4 100644 --- a/src/ultrastardx.dpr +++ b/src/ultrastardx.dpr @@ -99,6 +99,7 @@ uses {$ENDIF} {$IFDEF UseSWScale} swscale in 'lib\' + FFMPEG_DIR + '\swscale.pas', + swresample in 'lib\' + FFMPEG_DIR + '\swresample.pas', {$ENDIF} {$ELSE} // speak: This is for Delphi. Change version as needed! avcodec in 'lib\ffmpeg-0.10\avcodec.pas', @@ -108,6 +109,7 @@ uses avio in 'lib\ffmpeg-0.10\avio.pas', {$IFDEF UseSWScale} swscale in 'lib\ffmpeg-0.10\swscale.pas', + swresample in 'lib\ffmpeg-0.10\swresample.pas', {$ENDIF} {$ENDIF} UMediaCore_FFmpeg in 'media\UMediaCore_FFmpeg.pas', @@ -353,6 +355,7 @@ uses const sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF} + {$IFDEF DARWIN} AnsiChar(#10) {$ENDIF} {$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF}; var I: Integer; -- cgit v1.2.3