# HG changeset patch # User Chris Cannam # Date 1563458331 -3600 # Node ID 90169412b1a7398ce31995c17395f587740ba7dc # Parent 70d19452631e8c0809af204da52fe622a29540eb# Parent 1286914e4fe080d8ea0c58cdf6ee6c17b765db6c Merge from branch by-id diff -r 70d19452631e -r 90169412b1a7 .appveyor.yml --- a/.appveyor.yml Fri Sep 14 14:55:24 2018 +0100 +++ b/.appveyor.yml Thu Jul 18 14:58:51 2019 +0100 @@ -12,13 +12,6 @@ - ps: '"[hostsecurity]" | Out-File -Encoding "ASCII" -Append $env:USERPROFILE\mercurial.ini' - ps: '"code.soundsoftware.ac.uk = code.soundsoftware.ac.uk:fingerprints=sha256:64:75:f6:47:15:de:b4:51:ea:96:e2:f4:8a:f5:53:a5:11:c8:dd:82:73:5d:bd:54:18:cb:c8:9d:10:37:28:85" | Out-File -Encoding "ASCII" -Append $env:USERPROFILE\mercurial.ini' -before_build: - - set QTDIR=C:\Qt\5.10\msvc2017_64 - - set PATH=%PATH%;%QTDIR%\bin;C:\Program Files (x86)\SMLNJ\bin - - repoint install - - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 - - qmake -r -tp vc sonic-annotator.pro +build_script: + - deploy\win\build-both.bat -build: - project: sonic-annotator.sln - diff -r 70d19452631e -r 90169412b1a7 .hgignore --- a/.hgignore Fri Sep 14 14:55:24 2018 +0100 +++ b/.hgignore Thu Jul 18 14:58:51 2019 +0100 @@ -17,7 +17,7 @@ cov-int vamp-plugin-sdk svcore -piper-cpp +piper-vamp-cpp dataquay bqvec bqfft @@ -27,3 +27,4 @@ glob:.repoint-*.bin build_win32 build_win64 +glob:.repoint* diff -r 70d19452631e -r 90169412b1a7 .travis.yml --- a/.travis.yml Fri Sep 14 14:55:24 2018 +0100 +++ b/.travis.yml Thu Jul 18 14:58:51 2019 +0100 @@ -1,16 +1,19 @@ -dist: - - trusty - language: - cpp -sudo: - - false - os: - linux - osx +dist: + - xenial + +sudo: + - required + +osx_image: + - xcode9 + addons: apt: packages: diff -r 70d19452631e -r 90169412b1a7 base.pri --- a/base.pri Fri Sep 14 14:55:24 2018 +0100 +++ b/base.pri Thu Jul 18 14:58:51 2019 +0100 @@ -3,9 +3,12 @@ . \ bqvec \ bqvec/bqvec \ + bqthingfactory \ + bqaudiostream \ + bqaudiostream/bqaudiostream \ bqfft \ bqresample \ - piper-cpp \ + piper-vamp-cpp \ checker \ dataquay \ dataquay/dataquay \ @@ -28,5 +31,5 @@ DEFINES += NO_HIT_COUNTS -CONFIG += qt thread warn_on stl rtti exceptions c++11 +CONFIG += qt thread warn_on stl rtti exceptions diff -r 70d19452631e -r 90169412b1a7 base.pro --- a/base.pro Fri Sep 14 14:55:24 2018 +0100 +++ b/base.pro Thu Jul 18 14:58:51 2019 +0100 @@ -20,6 +20,10 @@ OBJECTS_DIR = o MOC_DIR = o +exists(repoint.pri) { + include(repoint.pri) +} + include(bq-files.pri) include(vamp-plugin-sdk-files.pri) include(svcore/files.pri) diff -r 70d19452631e -r 90169412b1a7 bq-files.pri --- a/bq-files.pri Fri Sep 14 14:55:24 2018 +0100 +++ b/bq-files.pri Thu Jul 18 14:58:51 2019 +0100 @@ -11,12 +11,18 @@ bqvec/pommier/sse_mathfun.h \ bqfft/bqfft/FFT.h \ bqresample/bqresample/Resampler.h \ - bqresample/speex/speex_resampler.h + bqresample/speex/speex_resampler.h \ + bqaudiostream/bqaudiostream/AudioReadStream.h \ + bqaudiostream/bqaudiostream/AudioReadStreamFactory.h \ + bqaudiostream/bqaudiostream/Exceptions.h \ + bqthingfactory/bqthingfactory/ThingFactory.h BQ_SOURCES += \ bqvec/src/Allocators.cpp \ bqvec/src/Barrier.cpp \ bqvec/src/VectorOpsComplex.cpp \ bqfft/src/FFT.cpp \ - bqresample/src/Resampler.cpp - + bqresample/src/Resampler.cpp \ + bqaudiostream/src/AudioReadStream.cpp \ + bqaudiostream/src/AudioReadStreamFactory.cpp \ + bqaudiostream/src/AudioStreamExceptions.cpp diff -r 70d19452631e -r 90169412b1a7 config.pri.in --- a/config.pri.in Fri Sep 14 14:55:24 2018 +0100 +++ b/config.pri.in Thu Jul 18 14:58:51 2019 +0100 @@ -1,6 +1,8 @@ CONFIG += @QMAKE_CONFIG@ +PREFIX_PATH = @prefix@ + DEFINES += @HAVES@ QMAKE_CC = @CC@ @@ -11,8 +13,11 @@ QMAKE_CXXFLAGS += @CXXFLAGS@ QMAKE_LFLAGS += @LDFLAGS@ +CONFIG += @CXXSTANDARD@ + linux*:LIBS += -L$$PWD -lbase -lasound -ldl +macx*:DEFINES += HAVE_COREAUDIO macx*:LIBS += -framework CoreAudio -framework CoreMidi -framework AudioUnit -framework AudioToolbox -framework CoreFoundation -framework CoreServices LIBS += @LIBS@ diff -r 70d19452631e -r 90169412b1a7 configure --- a/configure Fri Sep 14 14:55:24 2018 +0100 +++ b/configure Thu Jul 18 14:58:51 2019 +0100 @@ -624,12 +624,14 @@ LIBOBJS QMAKE_CONFIG HAVES -CXXFLAGS_MINIMAL +CXXSTANDARD CUT SHA1SUM MAKEDEPEND XARGS PERL +opus_LIBS +opus_CFLAGS id3tag_LIBS id3tag_CFLAGS mad_LIBS @@ -761,7 +763,9 @@ mad_CFLAGS mad_LIBS id3tag_CFLAGS -id3tag_LIBS' +id3tag_LIBS +opus_CFLAGS +opus_LIBS' # Initialize some variables set by options. @@ -1423,6 +1427,8 @@ id3tag_CFLAGS C compiler flags for id3tag, overriding pkg-config id3tag_LIBS linker flags for id3tag, overriding pkg-config + opus_CFLAGS C compiler flags for opus, overriding pkg-config + opus_LIBS linker flags for opus, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -4368,8 +4374,7 @@ SV_DEFINES_DEBUG="-DDEBUG -DBUILD_DEBUG -DWANT_TIMING" -SV_DEFINES_RELEASE="-DNDEBUG -DBUILD_RELEASE -DNO_TIMING" -SV_DEFINES_MINIMAL="$SV_DEFINES_RELEASE" +SV_DEFINES_RELEASE="-DNDEBUG -DBUILD_RELEASE -DNO_TIMING -DNO_HIT_COUNTS" # Now we have: USER_CXXFLAGS contains any flags the user set # explicitly; AUTOCONF_CXXFLAGS contains flags that Autoconf thought @@ -4377,17 +4382,63 @@ # allow ourselves to be overridden (later) by the former CXXFLAGS_DEBUG="$AUTOCONF_CXXFLAGS" +OPTFLAGS_DEBUG="-O2" +LDFLAGS_DEBUG="" CXXFLAGS_RELEASE="$AUTOCONF_CXXFLAGS" -CXXFLAGS_MINIMAL="$AUTOCONF_CXXFLAGS" +OPTFLAGS_RELEASE="-O2" +LDFLAGS_RELEASE="" +CXXSTANDARD=c++14 if test "x$GCC" = "xyes"; then - CXXFLAGS_ANY="-std=c++11 -fpic -Wall -Wextra -Woverloaded-virtual -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -Wconversion -pipe" + CXXFLAGS_ANY="-fpic -Wall -Wextra -Woverloaded-virtual -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -Wconversion -pipe" CXXFLAGS_DEBUG="$CXXFLAGS_ANY -g -Werror" - CXXFLAGS_RELEASE="$CXXFLAGS_ANY -g0 -O3 -ffast-math" - CXXFLAGS_MINIMAL="$CXXFLAGS_ANY -g0 -O0" -fi - -CXXFLAGS_BUILD="$CXXFLAGS_RELEASE" + OPTFLAGS_DEBUG="-O2" + CXXFLAGS_RELEASE="$CXXFLAGS_ANY -g0" + OPTFLAGS_RELEASE="-O3 -ffast-math" + LIBS_DEBUG="$LIBS" + as_CACHEVAR=`$as_echo "ax_cv_check_cxxflags__--std=$CXXSTANDARD" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts --std=$CXXSTANDARD" >&5 +$as_echo_n "checking whether C++ compiler accepts --std=$CXXSTANDARD... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CXXFLAGS + CXXFLAGS="$CXXFLAGS --std=$CXXSTANDARD" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CXXFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + : +else + { $as_echo "$as_me:${as_lineno-$LINENO}: Compiler does not appear to support $CXXSTANDARD, falling back to c++11" >&5 +$as_echo "$as_me: Compiler does not appear to support $CXXSTANDARD, falling back to c++11" >&6;} + CXXSTANDARD=c++11 +fi + +fi + +CXXFLAGS_BUILD="$CXXFLAGS_RELEASE $OPTFLAGS_RELEASE" +LDFLAGS_BUILD="$LDFLAGS_RELEASE $OPTFLAGS_RELEASE" SV_DEFINES_BUILD="$SV_DEFINES_RELEASE" QMAKE_CONFIG="release" @@ -4397,8 +4448,10 @@ enableval=$enable_debug; { $as_echo "$as_me:${as_lineno-$LINENO}: enabling debug build" >&5 $as_echo "$as_me: enabling debug build" >&6;} QMAKE_CONFIG="debug" -CXXFLAGS_BUILD="$CXXFLAGS_DEBUG" +CXXFLAGS_BUILD="$CXXFLAGS_DEBUG $OPTFLAGS_DEBUG" +LDFLAGS_BUILD="$LDFLAGS_DEBUG" SV_DEFINES_BUILD="$SV_DEFINES_DEBUG" +LIBS="$LIBS_DEBUG" fi @@ -4408,10 +4461,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Overriding default compiler flags with the above user setting." >&5 $as_echo "$as_me: Overriding default compiler flags with the above user setting." >&6;} CXXFLAGS_BUILD="$USER_CXXFLAGS" - CXXFLAGS_MINIMAL="$USER_CXXFLAGS" + LDFLAGS_BUILD="" fi CXXFLAGS="$CXXFLAGS_BUILD $SV_DEFINES_BUILD" +LDFLAGS="$LDFLAGS_BUILD" # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ @@ -6419,6 +6473,163 @@ fi +SV_MODULE_MODULE=opus +SV_MODULE_VERSION_TEST="opusfile" +SV_MODULE_HEADER=opus/opusfile.h +SV_MODULE_LIB=opusfile +SV_MODULE_FUNC=op_read_float +SV_MODULE_HAVE=HAVE_$(echo opus | tr 'a-z' 'A-Z') +SV_MODULE_FAILED=1 +if test -n "$opus_LIBS" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 +$as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} + CXXFLAGS="$CXXFLAGS $opus_CFLAGS" + LIBS="$LIBS $opus_LIBS" + SV_MODULE_FAILED="" +fi +if test -z "$SV_MODULE_VERSION_TEST" ; then + SV_MODULE_VERSION_TEST=$SV_MODULE_MODULE +fi +if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for opus" >&5 +$as_echo_n "checking for opus... " >&6; } + +if test -n "$opus_CFLAGS"; then + pkg_cv_opus_CFLAGS="$opus_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$SV_MODULE_VERSION_TEST") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_opus_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$opus_LIBS"; then + pkg_cv_opus_LIBS="$opus_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$SV_MODULE_VERSION_TEST") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_opus_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + opus_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + else + opus_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$opus_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 +$as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 +$as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} +else + opus_CFLAGS=$pkg_cv_opus_CFLAGS + opus_LIBS=$pkg_cv_opus_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $opus_CFLAGS";LIBS="$LIBS $opus_LIBS";SV_MODULE_FAILED="" +fi +fi +if test -n "$SV_MODULE_FAILED"; then + as_ac_Header=`$as_echo "ac_cv_header_$SV_MODULE_HEADER" | $as_tr_sh` +ac_fn_cxx_check_header_mongrel "$LINENO" "$SV_MODULE_HEADER" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + HAVES="$HAVES $SV_MODULE_HAVE";SV_MODULE_FAILED="" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find header $SV_MODULE_HEADER for optional module $SV_MODULE_MODULE" >&5 +$as_echo "$as_me: Failed to find header $SV_MODULE_HEADER for optional module $SV_MODULE_MODULE" >&6;} +fi + + + if test -z "$SV_MODULE_FAILED"; then + if test -n "$SV_MODULE_LIB"; then + as_ac_Lib=`$as_echo "ac_cv_lib_$SV_MODULE_LIB''_$SV_MODULE_FUNC" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $SV_MODULE_FUNC in -l$SV_MODULE_LIB" >&5 +$as_echo_n "checking for $SV_MODULE_FUNC in -l$SV_MODULE_LIB... " >&6; } +if eval \${$as_ac_Lib+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$SV_MODULE_LIB $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $SV_MODULE_FUNC (); +int +main () +{ +return $SV_MODULE_FUNC (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + eval "$as_ac_Lib=yes" +else + eval "$as_ac_Lib=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +eval ac_res=\$$as_ac_Lib + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : + LIBS="$LIBS -l$SV_MODULE_LIB" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find library $SV_MODULE_LIB for optional module $SV_MODULE_MODULE" >&5 +$as_echo "$as_me: Failed to find library $SV_MODULE_LIB for optional module $SV_MODULE_MODULE" >&6;} +fi + + fi + fi +fi + + + + diff -r 70d19452631e -r 90169412b1a7 configure.ac --- a/configure.ac Fri Sep 14 14:55:24 2018 +0100 +++ b/configure.ac Thu Jul 18 14:58:51 2019 +0100 @@ -40,8 +40,7 @@ SV_CHECK_QT SV_DEFINES_DEBUG="-DDEBUG -DBUILD_DEBUG -DWANT_TIMING" -SV_DEFINES_RELEASE="-DNDEBUG -DBUILD_RELEASE -DNO_TIMING" -SV_DEFINES_MINIMAL="$SV_DEFINES_RELEASE" +SV_DEFINES_RELEASE="-DNDEBUG -DBUILD_RELEASE -DNO_TIMING -DNO_HIT_COUNTS" # Now we have: USER_CXXFLAGS contains any flags the user set # explicitly; AUTOCONF_CXXFLAGS contains flags that Autoconf thought @@ -49,34 +48,46 @@ # allow ourselves to be overridden (later) by the former CXXFLAGS_DEBUG="$AUTOCONF_CXXFLAGS" +OPTFLAGS_DEBUG="-O2" +LDFLAGS_DEBUG="" CXXFLAGS_RELEASE="$AUTOCONF_CXXFLAGS" -CXXFLAGS_MINIMAL="$AUTOCONF_CXXFLAGS" +OPTFLAGS_RELEASE="-O2" +LDFLAGS_RELEASE="" +CXXSTANDARD=c++14 if test "x$GCC" = "xyes"; then - CXXFLAGS_ANY="-std=c++11 -fpic -Wall -Wextra -Woverloaded-virtual -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -Wconversion -pipe" + CXXFLAGS_ANY="-fpic -Wall -Wextra -Woverloaded-virtual -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -Wconversion -pipe" CXXFLAGS_DEBUG="$CXXFLAGS_ANY -g -Werror" - CXXFLAGS_RELEASE="$CXXFLAGS_ANY -g0 -O3 -ffast-math" - CXXFLAGS_MINIMAL="$CXXFLAGS_ANY -g0 -O0" + OPTFLAGS_DEBUG="-O2" + CXXFLAGS_RELEASE="$CXXFLAGS_ANY -g0" + OPTFLAGS_RELEASE="-O3 -ffast-math" + LIBS_DEBUG="$LIBS" + AX_CHECK_COMPILE_FLAG(--std=$CXXSTANDARD, [], [AC_MSG_NOTICE([Compiler does not appear to support $CXXSTANDARD, falling back to c++11]) + CXXSTANDARD=c++11]) fi -CXXFLAGS_BUILD="$CXXFLAGS_RELEASE" +CXXFLAGS_BUILD="$CXXFLAGS_RELEASE $OPTFLAGS_RELEASE" +LDFLAGS_BUILD="$LDFLAGS_RELEASE $OPTFLAGS_RELEASE" SV_DEFINES_BUILD="$SV_DEFINES_RELEASE" QMAKE_CONFIG="release" AC_ARG_ENABLE(debug, [AS_HELP_STRING([--enable-debug],[enable debug support [default=no]])],[AC_MSG_NOTICE([enabling debug build]) QMAKE_CONFIG="debug" -CXXFLAGS_BUILD="$CXXFLAGS_DEBUG" -SV_DEFINES_BUILD="$SV_DEFINES_DEBUG"]) +CXXFLAGS_BUILD="$CXXFLAGS_DEBUG $OPTFLAGS_DEBUG" +LDFLAGS_BUILD="$LDFLAGS_DEBUG" +SV_DEFINES_BUILD="$SV_DEFINES_DEBUG" +LIBS="$LIBS_DEBUG"]) if test x"$USER_CXXFLAGS" != x; then AC_MSG_NOTICE([The CXXFLAGS environment variable is set to "$USER_CXXFLAGS".]) AC_MSG_NOTICE(Overriding default compiler flags with the above user setting.) CXXFLAGS_BUILD="$USER_CXXFLAGS" - CXXFLAGS_MINIMAL="$USER_CXXFLAGS" + LDFLAGS_BUILD="" fi CXXFLAGS="$CXXFLAGS_BUILD $SV_DEFINES_BUILD" +LDFLAGS="$LDFLAGS_BUILD" SV_MODULE_REQUIRED([bz2],[],[bzlib.h],[bz2],[BZ2_bzReadOpen]) SV_MODULE_REQUIRED([fftw3],[fftw3 >= 3.0.0],[fftw3.h],[fftw3],[fftw_execute]) @@ -92,6 +103,7 @@ SV_MODULE_OPTIONAL([fishsound],[fishsound >= 1.0.0],[fishsound/fishsound.h],[fishsound],[fish_sound_new]) SV_MODULE_OPTIONAL([mad],[mad >= 0.15.0],[mad.h],[mad],[mad_decoder_init]) SV_MODULE_OPTIONAL([id3tag],[id3tag >= 0.15.0],[id3tag.h],[id3tag],[id3_tag_new]) +SV_MODULE_OPTIONAL([opus],[opusfile],[opus/opusfile.h],[opusfile],[op_read_float]) AC_SUBST(PERL) AC_SUBST(XARGS) @@ -101,7 +113,7 @@ AC_SUBST(CFLAGS) AC_SUBST(CXXFLAGS) -AC_SUBST(CXXFLAGS_MINIMAL) +AC_SUBST(CXXSTANDARD) AC_SUBST(LDFLAGS) AC_SUBST(HAVES) AC_SUBST(LIBS) @@ -109,6 +121,8 @@ AC_SUBST(CC) AC_SUBST(CXX) +AC_SUBST(prefix) + AC_SUBST(QMAKE_CONFIG) AC_CONFIG_FILES([config.pri]) diff -r 70d19452631e -r 90169412b1a7 deploy/win/build-32.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/win/build-32.bat Thu Jul 18 14:58:51 2019 +0100 @@ -0,0 +1,42 @@ +rem Run this from within the top-level SV dir: deploy\win64\build-32.bat +rem To build from clean, delete the folder build_win32 + +set STARTPWD=%CD% + +set QTDIR=C:\Qt\5.11.2\mingw53_32 +if not exist %QTDIR% ( +@ echo Could not find 32-bit Qt +@ exit /b 2 +) + +set ORIGINALPATH=%PATH% +set PATH=%PATH%;C:\Program Files (x86)\SMLNJ\bin;%QTDIR%\bin;C:\Qt\Tools\QtCreator\bin;C:\Qt\Tools\mingw530_32\bin + +cd %STARTPWD% + +call .\repoint install +if %errorlevel% neq 0 exit /b %errorlevel% + +mkdir build_win32 +cd build_win32 + +qmake -spec win32-g++ -r ..\sonic-annotator.pro +if %errorlevel% neq 0 exit /b %errorlevel% + +mingw32-make +if %errorlevel% neq 0 exit /b %errorlevel% + +copy %QTDIR%\bin\Qt5Core.dll .\release +copy %QTDIR%\bin\Qt5Network.dll .\release +copy %QTDIR%\bin\Qt5Xml.dll .\release +copy %QTDIR%\bin\Qt5Test.dll .\release +copy %QTDIR%\bin\libgcc_s_dw2-1.dll .\release +copy %QTDIR%\bin\"libstdc++-6.dll" .\release +copy %QTDIR%\bin\libwinpthread-1.dll .\release +copy %QTDIR%\plugins\platforms\qminimal.dll .\release +copy %QTDIR%\plugins\platforms\qwindows.dll .\release + +.\release\test-svcore-base +.\release\test-svcore-system + +set PATH=%ORIGINALPATH% diff -r 70d19452631e -r 90169412b1a7 deploy/win/build-64.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/win/build-64.bat Thu Jul 18 14:58:51 2019 +0100 @@ -0,0 +1,49 @@ +rem Run this from within the top-level SV dir: deploy\win64\build-64.bat +rem To build from clean, delete the folder build_win64 first + +echo on + +set STARTPWD=%CD% + +set QTDIR=C:\Qt\5.11.2\msvc2017_64 +if not exist %QTDIR% ( +@ echo Could not find 64-bit Qt +@ exit /b 2 +) + +if not exist "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" ( +@ echo "Could not find MSVC vars batch file" +@ exit /b 2 +) + +call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 + +set ORIGINALPATH=%PATH% +set PATH=%PATH%;C:\Program Files (x86)\SMLNJ\bin;%QTDIR%\bin + +cd %STARTPWD% + +call .\repoint install +if %errorlevel% neq 0 exit /b %errorlevel% + +mkdir build_win64 +cd build_win64 + +qmake -spec win32-msvc -r -tp vc ..\sonic-annotator.pro +if %errorlevel% neq 0 exit /b %errorlevel% + +msbuild sonic-annotator.sln /t:Build /p:Configuration=Release +if %errorlevel% neq 0 exit /b %errorlevel% + +copy %QTDIR%\bin\Qt5Core.dll .\release +copy %QTDIR%\bin\Qt5Network.dll .\release +copy %QTDIR%\bin\Qt5Xml.dll .\release +copy %QTDIR%\bin\Qt5Test.dll .\release +copy %QTDIR%\plugins\platforms\qminimal.dll .\release +copy %QTDIR%\plugins\platforms\qwindows.dll .\release +copy ..\sv-dependency-builds\win64-msvc\lib\libsndfile-1.dll .\release + +.\release\test-svcore-base +.\release\test-svcore-system + +set PATH=%ORIGINALPATH% diff -r 70d19452631e -r 90169412b1a7 deploy/win/build-both.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/win/build-both.bat Thu Jul 18 14:58:51 2019 +0100 @@ -0,0 +1,31 @@ +rem Run this from within the top-level dir: deploy\win\build-and-package.bat + +set STARTPWD=%CD% + +if not exist "C:\Program Files (x86)\SMLNJ\bin" ( +@ echo Could not find SML/NJ, required for Repoint +@ exit /b 2 +) + +set ORIGINALPATH=%PATH% +set PATH=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;%PATH% + +@echo "" +@echo Rebuilding 32-bit + +cd %STARTPWD% +del /q /s build_win32 +call .\deploy\win\build-32.bat +if %errorlevel% neq 0 exit /b %errorlevel% + +@echo Rebuilding 64-bit + +cd %STARTPWD% +del /q /s build_win64 +call .\deploy\win\build-64.bat +if %errorlevel% neq 0 exit /b %errorlevel% + +set PATH=%ORIGINALPATH% + +@echo Done + diff -r 70d19452631e -r 90169412b1a7 deploy/win64/build-32.bat --- a/deploy/win64/build-32.bat Fri Sep 14 14:55:24 2018 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -rem Run this from within the top-level SV dir: deploy\win64\build-32.bat -rem To build from clean, delete the folder build_win32 - -set STARTPWD=%CD% - -set QTDIR=C:\Qt\5.11.0\mingw53_32 -if not exist %QTDIR% ( -@ echo Could not find 32-bit Qt -@ exit /b 2 -) - -set ORIGINALPATH=%PATH% -set PATH=%PATH%;C:\Program Files (x86)\SMLNJ\bin;%QTDIR%\bin;C:\Qt\Tools\QtCreator\bin;C:\Qt\Tools\mingw530_32\bin - -cd %STARTPWD% - -call .\repoint install -if %errorlevel% neq 0 exit /b %errorlevel% - -mkdir build_win32 -cd build_win32 - -qmake -spec win32-g++ -r ..\sonic-annotator.pro -if %errorlevel% neq 0 exit /b %errorlevel% - -mingw32-make -if %errorlevel% neq 0 exit /b %errorlevel% - -copy %QTDIR%\bin\Qt5Core.dll .\release -copy %QTDIR%\bin\Qt5Network.dll .\release -copy %QTDIR%\bin\Qt5Xml.dll .\release -copy %QTDIR%\bin\Qt5Test.dll .\release -copy %QTDIR%\bin\libgcc_s_dw2-1.dll .\release -copy %QTDIR%\bin\"libstdc++-6.dll" .\release -copy %QTDIR%\bin\libwinpthread-1.dll .\release -copy %QTDIR%\plugins\platforms\qminimal.dll .\release -copy %QTDIR%\plugins\platforms\qwindows.dll .\release - -.\release\test-svcore-base -.\release\test-svcore-system -.\release\test-svcore-data-fileio - -set PATH=%ORIGINALPATH% diff -r 70d19452631e -r 90169412b1a7 deploy/win64/build-64.bat --- a/deploy/win64/build-64.bat Fri Sep 14 14:55:24 2018 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -rem Run this from within the top-level SV dir: deploy\win64\build-64.bat -rem To build from clean, delete the folder build_win64 first - -echo on - -set STARTPWD=%CD% - -set QTDIR=C:\Qt\5.11.0\msvc2017_64 -if not exist %QTDIR% ( -@ echo Could not find 64-bit Qt -@ exit /b 2 -) - -if not exist "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" ( -@ echo "Could not find MSVC vars batch file" -@ exit /b 2 -) - -call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 - -set ORIGINALPATH=%PATH% -set PATH=%PATH%;C:\Program Files (x86)\SMLNJ\bin;%QTDIR%\bin - -cd %STARTPWD% - -call .\repoint install -if %errorlevel% neq 0 exit /b %errorlevel% - -mkdir build_win64 -cd build_win64 - -qmake -spec win32-msvc -r -tp vc ..\sonic-annotator.pro -if %errorlevel% neq 0 exit /b %errorlevel% - -msbuild sonic-annotator.sln /t:Build /p:Configuration=Release -if %errorlevel% neq 0 exit /b %errorlevel% - -copy %QTDIR%\bin\Qt5Core.dll .\release -copy %QTDIR%\bin\Qt5Network.dll .\release -copy %QTDIR%\bin\Qt5Xml.dll .\release -copy %QTDIR%\bin\Qt5Test.dll .\release -copy %QTDIR%\plugins\platforms\qminimal.dll .\release -copy %QTDIR%\plugins\platforms\qwindows.dll .\release -copy ..\sv-dependency-builds\win64-msvc\lib\libsndfile-1.dll .\release - -.\release\test-svcore-base -.\release\test-svcore-system -.\release\test-svcore-data-fileio - -set PATH=%ORIGINALPATH% diff -r 70d19452631e -r 90169412b1a7 noconfig.pri --- a/noconfig.pri Fri Sep 14 14:55:24 2018 +0100 +++ b/noconfig.pri Thu Jul 18 14:58:51 2019 +0100 @@ -1,8 +1,10 @@ + +CONFIG += c++14 CONFIG += release +#CONFIG += debug -#CONFIG -= release -#CONFIG += debug +PREFIX_PATH = /usr/local DEFINES += NDEBUG BUILD_RELEASE DEFINES += NO_TIMING @@ -17,8 +19,9 @@ HAVE_SNDFILE \ HAVE_SAMPLERATE \ HAVE_MAD \ - HAVE_ID3TAG - + HAVE_ID3TAG \ + HAVE_OPUS + # Default set of libs for the above. Config sections below may update # these. @@ -34,6 +37,8 @@ -lvorbis \ -lvorbisenc \ -lvorbisfile \ + -lopusfile \ + -lopus \ -logg \ -lmad \ -lid3tag \ @@ -46,7 +51,7 @@ # This config is currently used for 32-bit Windows builds. - INCLUDEPATH += $$PWD/sv-dependency-builds/win32-mingw/include + INCLUDEPATH += $$PWD/sv-dependency-builds/win32-mingw/include $$PWD/sv-dependency-builds/win32-mingw/include/opus LIBS += -Lrelease -L$$PWD/sv-dependency-builds/win32-mingw/lib @@ -54,6 +59,8 @@ QMAKE_CXXFLAGS_RELEASE += -ffast-math + # (We don't have MediaFoundation support, with this build sadly) + LIBS += -lwinmm -lws2_32 } @@ -64,38 +71,39 @@ # we want to do 32-bit builds with MSVC as well, then we'll # need to add a way to distinguish the two. - INCLUDEPATH += $$PWD/sv-dependency-builds/win64-msvc/include + INCLUDEPATH += $$PWD/sv-dependency-builds/win64-msvc/include $$PWD/sv-dependency-builds/win64-msvc/include/opus CONFIG(release) { - LIBS += -Lrelease \ + LIBS += -NODEFAULTLIB:LIBCMT -Lrelease \ -L$$PWD/sv-dependency-builds/win64-msvc/lib } - DEFINES += NOMINMAX _USE_MATH_DEFINES + DEFINES += NOMINMAX _USE_MATH_DEFINES HAVE_MEDIAFOUNDATION QMAKE_CXXFLAGS_RELEASE += -fp:fast -gl QMAKE_LFLAGS_RELEASE += -ltcg # No Ogg/FLAC support in the sndfile build on this platform yet - LIBS -= -lFLAC -logg -lvorbis -lvorbisenc -lvorbisfile + LIBS -= -lFLAC -lvorbis -lvorbisenc -lvorbisfile # These have different names LIBS -= -lsord-0 -lserd-0 LIBS += -lsord -lserd - LIBS += -ladvapi32 -lwinmm -lws2_32 + LIBS += -lmfplat -lmfreadwrite -lmfuuid -lpropsys -ladvapi32 -lwinmm -lws2_32 } macx* { # All Mac builds are 64-bit these days. - INCLUDEPATH += $$PWD/sv-dependency-builds/osx/include + INCLUDEPATH += $$PWD/sv-dependency-builds/osx/include $$PWD/sv-dependency-builds/osx/include/opus LIBS += -L$$PWD/sv-dependency-builds/osx/lib -L$$PWD - QMAKE_CXXFLAGS_RELEASE += -O3 -ffast-math + QMAKE_CXXFLAGS_RELEASE += -O3 -ffast-math -flto + QMAKE_LFLAGS_RELEASE += -O3 -flto - DEFINES += HAVE_VDSP + DEFINES += HAVE_COREAUDIO HAVE_VDSP LIBS += \ -framework CoreAudio \ -framework CoreMidi \ diff -r 70d19452631e -r 90169412b1a7 repoint --- a/repoint Fri Sep 14 14:55:24 2018 +0100 +++ b/repoint Thu Jul 18 14:58:51 2019 +0100 @@ -58,7 +58,7 @@ # That is fixed in v5.7.1, so we could promote it up the order # again at some point in future elif echo | poly -v 2>/dev/null | grep -q 'Poly/ML'; then - sml="poly" + sml="polyml" elif mlton 2>&1 | grep -q 'MLton'; then sml="mlton" # MLKit is at the bottom because it leaves compiled files around @@ -109,7 +109,7 @@ done case "$sml" in - poly) + polyml) if [ -n "$local_install" ] && polyc --help >/dev/null 2>&1 ; then if [ ! -x "$gen_out" ]; then polyc -o "$gen_out" "$program" diff -r 70d19452631e -r 90169412b1a7 repoint-lock.json --- a/repoint-lock.json Fri Sep 14 14:55:24 2018 +0100 +++ b/repoint-lock.json Thu Jul 18 14:58:51 2019 +0100 @@ -1,31 +1,37 @@ { "libraries": { "vamp-plugin-sdk": { - "pin": "da86fb0bccb3" + "pin": "62987b6d6a3b" }, "svcore": { - "pin": "a92e94215863" + "pin": "9a8327e7b2dc" }, "checker": { - "pin": "2e8a5f665a07" + "pin": "c8c17e51aab0" }, - "piper-cpp": { - "pin": "44cb74e186a703e7e6ce403aa295913a87b88d62" + "piper-vamp-cpp": { + "pin": "0e3328c6091f59c912e25bc392a7dc75182be1c7" }, "dataquay": { - "pin": "807b55408d9e" + "pin": "b82360a98f49" }, "bqvec": { - "pin": "3c9de9e7f6e8" + "pin": "c2d355c29372" }, "bqfft": { - "pin": "a766fe47501b" + "pin": "ff1d1bd48876" }, "bqresample": { - "pin": "a9a5555d9b6d" + "pin": "f5dee7d40378" + }, + "bqthingfactory": { + "pin": "7686116dcdd5" + }, + "bqaudiostream": { + "pin": "e3a6c41e042f" }, "sv-dependency-builds": { - "pin": "f1a9b270e043" + "pin": "f3731af47c4b" } } } diff -r 70d19452631e -r 90169412b1a7 repoint-project.json --- a/repoint-project.json Fri Sep 14 14:55:24 2018 +0100 +++ b/repoint-project.json Thu Jul 18 14:58:51 2019 +0100 @@ -23,11 +23,10 @@ "service": "soundsoftware", "repository": "vamp-plugin-load-checker" }, - "piper-cpp": { + "piper-vamp-cpp": { "vcs": "git", "service": "github", - "owner": "piper-audio", - "repository": "piper-vamp-cpp" + "owner": "piper-audio" }, "dataquay": { "vcs": "hg", @@ -49,6 +48,16 @@ "service": "bitbucket", "owner": "breakfastquay" }, + "bqthingfactory": { + "vcs": "hg", + "service": "bitbucket", + "owner": "breakfastquay" + }, + "bqaudiostream": { + "vcs": "hg", + "service": "bitbucket", + "owner": "breakfastquay" + }, "sv-dependency-builds": { "vcs": "hg", "service": "soundsoftware" diff -r 70d19452631e -r 90169412b1a7 repoint.pri --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/repoint.pri Thu Jul 18 14:58:51 2019 +0100 @@ -0,0 +1,7 @@ + +repoint.target = $$PWD/.repoint.point +repoint.depends = $$PWD/repoint-project.json $$PWD/repoint-lock.json +repoint.commands = $$PWD/repoint install --directory $$PWD + +QMAKE_EXTRA_TARGETS += repoint +PRE_TARGETDEPS += $$repoint.target diff -r 70d19452631e -r 90169412b1a7 repoint.sml --- a/repoint.sml Fri Sep 14 14:55:24 2018 +0100 +++ b/repoint.sml Thu Jul 18 14:58:51 2019 +0100 @@ -38,7 +38,7 @@ authorization. *) -val repoint_version = "0.9.98" +val repoint_version = "1.1" datatype vcs = @@ -136,6 +136,7 @@ structure RepointFilenames = struct val project_file = "repoint-project.json" val project_lock_file = "repoint-lock.json" + val project_completion_file = ".repoint.point" val user_config_file = ".repoint.json" val archive_dir = ".repoint-archive" end @@ -215,6 +216,7 @@ val nonempty_dir_exists : string -> bool val project_spec_path : string -> string val project_lock_path : string -> string + val project_completion_path : string -> string val verbose : unit -> bool end = struct @@ -272,6 +274,9 @@ fun project_lock_path rootpath = project_file_path rootpath (RepointFilenames.project_lock_file) + fun project_completion_path rootpath = + project_file_path rootpath (RepointFilenames.project_completion_file) + fun trim str = hd (String.fields (fn x => x = #"\n" orelse x = #"\r") str) @@ -2420,7 +2425,14 @@ in JsonBits.save_json_to lock_file lock_json end - + +fun checkpoint_completion_file rootpath = + let val completion_file = FileBits.project_completion_path rootpath + val stream = TextIO.openOut completion_file + in + TextIO.closeOut stream + end + fun pad_to n str = if n <= String.size str then str else pad_to n (str ^ " ") @@ -2586,8 +2598,12 @@ val _ = if List.exists (fn (_, OK _) => true | _ => false) outcomes then lock_project project else OS.Process.success + val return_code = return_code_for outcomes in - return_code_for outcomes + if OS.Process.isSuccess return_code + then checkpoint_completion_file (#rootpath context) + else (); + return_code end fun load_local_project pintype = @@ -2625,18 +2641,23 @@ fun usage () = (print "\nRepoint "; version (); - print ("\nA simple manager for third-party source code dependencies.\n\n" + print ("\n A simple manager for third-party source code dependencies.\n" + ^ " http://all-day-breakfast.com/repoint/\n\n" ^ "Usage:\n\n" - ^ " repoint \n\n" + ^ " repoint []\n\n" ^ "where is one of:\n\n" ^ " status print quick report on local status only, without using network\n" ^ " review check configured libraries against their providers, and report\n" ^ " install update configured libraries according to project specs and lock file\n" ^ " update update configured libraries and lock file according to project specs\n" - ^ " lock update lock file to match local library status\n" - ^ " archive pack up project and all libraries into an archive file\n" - ^ " (invoke as 'repoint archive target-file.tar.gz')\n" - ^ " version print the Repoint version number and exit\n\n"); + ^ " lock rewrite lock file to match local library status\n" + ^ " archive pack up project and all libraries into an archive file:\n" + ^ " invoke as 'repoint archive targetfile.tar.gz --exclude unwanted.txt'\n" + ^ " version print the Repoint version number and exit\n\n" + ^ "and may include:\n\n" + ^ " --directory \n" + ^ " change to directory before doing anything; in particular,\n" + ^ " expect to find project spec file in that directory\n\n"); OS.Process.failure) fun archive target args = @@ -2647,8 +2668,26 @@ with_local_project USE_LOCKFILE (Archive.archive (target, xs)) | _ => usage () +fun handleSystemArgs args = + let fun handleSystemArgs' leftover args = + case args of + "--directory"::dir::rest => + (OS.FileSys.chDir dir; + handleSystemArgs' leftover rest) + | arg::rest => + handleSystemArgs' (leftover @ [arg]) rest + | [] => leftover + in + OK (handleSystemArgs' [] args) + handle e => ERROR (exnMessage e) + end + fun repoint args = - let val return_code = + case handleSystemArgs args of + ERROR e => (print ("Error: " ^ e ^ "\n"); + OS.Process.exit OS.Process.failure) + | OK args => + let val return_code = case args of ["review"] => review () | ["status"] => status () @@ -2660,10 +2699,9 @@ | arg::_ => (print ("Error: unknown argument \"" ^ arg ^ "\"\n"); usage ()) | _ => usage () - in - OS.Process.exit return_code; - () - end + in + OS.Process.exit return_code + end fun main () = repoint (CommandLine.arguments ()) diff -r 70d19452631e -r 90169412b1a7 runner/MIDIFeatureWriter.h --- a/runner/MIDIFeatureWriter.h Fri Sep 14 14:55:24 2018 +0100 +++ b/runner/MIDIFeatureWriter.h Thu Jul 18 14:58:51 2019 +0100 @@ -14,11 +14,12 @@ COPYING included with this distribution for more information. */ -#ifndef _MIDI_FEATURE_WRITER_H_ -#define _MIDI_FEATURE_WRITER_H_ +#ifndef MIDI_FEATURE_WRITER_H +#define MIDI_FEATURE_WRITER_H #include "transform/FileFeatureWriter.h" -#include "data/model/NoteData.h" +#include "base/NoteData.h" +#include "base/NoteExportable.h" class MIDIFileWriter; @@ -52,7 +53,11 @@ virtual NoteList getNotes() const { return m_notes; } - virtual NoteList getNotesWithin(sv_frame_t, sv_frame_t) const { + virtual NoteList getNotesActiveAt(sv_frame_t) const { + // Not required by MIDIFileWriter, not supported + return NoteList(); + } + virtual NoteList getNotesStartingWithin(sv_frame_t, sv_frame_t) const { // Not required by MIDIFileWriter, not supported return NoteList(); } diff -r 70d19452631e -r 90169412b1a7 runner/MultiplexedReader.h --- a/runner/MultiplexedReader.h Fri Sep 14 14:55:24 2018 +0100 +++ b/runner/MultiplexedReader.h Thu Jul 18 14:58:51 2019 +0100 @@ -33,6 +33,9 @@ virtual QString getError() const override { return m_error; } virtual bool isQuicklySeekable() const override { return m_quicklySeekable; } + virtual QString getTitle() const override { return ""; } + virtual QString getMaker() const override { return ""; } + virtual floatvec_t getInterleavedFrames (sv_frame_t start, sv_frame_t count) const override;