Skip to content

Spatialaudio module fails to build against offical upstream releases #1243

@jlskuz

Description

@jlskuz

Describe the bug
MOD_SPATIALAUDIO=ON can not be build against any offical version of the upstream libspatialaudio.

Versions:

  • MLT/melt version: 7.39.0

Additional context
There is a certain git revision (videolan/libspatialaudio@0b6b25e) that seems to work, but neither version <= 0.3.0 nor 0.4.0 work. This is not great in general and in particular because distro packagers tend to only ship official release versions and the same preference exist for package mangers like homebrew, msys2 or vcpkg.

0.3.0 (released in 2017) is the version available in Ubuntu, but building it fails with multiple errors about unknown function signatures etc.

Details
[24/57] Building CXX object src/modules/spatialaudio/CMakeFiles/mltspatialaudio.dir/filter_ambisonic-decoder.cpp.o
FAILED: src/modules/spatialaudio/CMakeFiles/mltspatialaudio.dir/filter_ambisonic-decoder.cpp.o 
/usr/bin/c++ -Dmltspatialaudio_EXPORTS -I/media/julius/data/dev/github/mlt/build/src/modules/spatialaudio -I/media/julius/data/dev/github/mlt/src/framework/.. -I/media/julius/data/dev/github/mlt/build/src/framework -std=c++20 -fPIC -mmmx -msse -msse2 -MD -MT src/modules/spatialaudio/CMakeFiles/mltspatialaudio.dir/filter_ambisonic-decoder.cpp.o -MF src/modules/spatialaudio/CMakeFiles/mltspatialaudio.dir/filter_ambisonic-decoder.cpp.o.d -o src/modules/spatialaudio/CMakeFiles/mltspatialaudio.dir/filter_ambisonic-decoder.cpp.o -c /media/julius/data/dev/github/mlt/src/modules/spatialaudio/filter_ambisonic-decoder.cpp
/media/julius/data/dev/github/mlt/src/modules/spatialaudio/filter_ambisonic-decoder.cpp: In member function ‘bool SpatialAudio::getAudio(mlt_frame, float*, int, int)’:
/media/julius/data/dev/github/mlt/src/modules/spatialaudio/filter_ambisonic-decoder.cpp:99:58: error: ‘kAmblib_51’ was not declared in this scope; did you mean ‘kAmblib_50’?
   99 |                                        channels == 6   ? kAmblib_51
      |                                                          ^~~~~~~~~~
      |                                                          kAmblib_50
/media/julius/data/dev/github/mlt/src/modules/spatialaudio/filter_ambisonic-decoder.cpp:111:46: error: no matching function for call to ‘CAmbisonicZoomer::Configure(const int&, bool, const int&, int)’
  111 |                     error = !zoomer.Configure(AMBISONICS_ORDER, true, AMBISONICS_BLOCK_SIZE, 0);
      |                              ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/spatialaudio/AmbisonicProcessor.h:24,
                 from /usr/include/spatialaudio/Ambisonics.h:28,
                 from /media/julius/data/dev/github/mlt/src/modules/spatialaudio/filter_ambisonic-decoder.cpp:21:
/usr/include/spatialaudio/AmbisonicZoomer.h:40:18: note: candidate: ‘virtual bool CAmbisonicZoomer::Configure(unsigned int, bool, unsigned int)’
   40 |     virtual bool Configure(unsigned nOrder, bool b3D, unsigned nMisc);
      |                  ^~~~~~~~~
/usr/include/spatialaudio/AmbisonicZoomer.h:40:18: note:   candidate expects 3 arguments, 4 provided
/media/julius/data/dev/github/mlt/src/modules/spatialaudio/filter_ambisonic-decoder.cpp:162:41: error: no matching function for call to ‘CAmbisonicBinauralizer::Process(CBFormat*, float* [6], int&)’
  162 |                     binauralizer.Process(&bformat, speakers, samples);
      |                     ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/spatialaudio/Ambisonics.h:29:
/usr/include/spatialaudio/AmbisonicBinauralizer.h:65:10: note: candidate: ‘void CAmbisonicBinauralizer::Process(CBFormat*, float**)’
   65 |     void Process(CBFormat* pBFSrc, float** ppfDst);
      |          ^~~~~~~
/usr/include/spatialaudio/AmbisonicBinauralizer.h:65:10: note:   candidate expects 2 arguments, 3 provided
[27/57] Building CXX object src/modules/glaxnimate/glaxnimate/src/core/glaxnimate/module/extraformats/CMakeFiles/GlaxnimateExtraFormats.dir/rive/rive_loader.cpp.o

0.4.0 has been released a few months ago and contains major breaking changes according to the release notes.

Details
[343/362] Building CXX object src\modules\spatialaudio\CMakeFiles\mltspatialaudio.dir\filter_ambisonic-decoder.cpp.obj
FAILED: [code=2] src/modules/spatialaudio/CMakeFiles/mltspatialaudio.dir/filter_ambisonic-decoder.cpp.obj
C:\PROGRA~2\MICROS~2\2022\BUILDT~1\VC\Tools\MSVC\1444~1.352\bin\Hostx64\x64\cl.exe  /nologo /TP -D_USE_MATH_DEFINES -Dmltspatialaudio_EXPORTS -IC:\_\bae62da3\build\src\modules\spatialaudio -IC:\_\b0938939\mlt\src\framework\.. -IC:\_\bae62da3\build\src\framework -external:IC:\Craft\windows-msvc2022_64-cl\include -external:W0 /DWIN32 /D_WINDOWS /EHsc /O2 /Ob1 /DNDEBUG -std:c++20 -MD -Zi -D_USE_MATH_DEFINES /showIncludes @src\modules\spatialaudio\CMakeFiles\mltspatialaudio.dir\filter_ambisonic-decoder.cpp.obj.modmap /Fosrc\modules\spatialaudio\CMakeFiles\mltspatialaudio.dir\filter_ambisonic-decoder.cpp.obj /Fdsrc\modules\spatialaudio\CMakeFiles\mltspatialaudio.dir\ /FS -c C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(37): error C3646: 'binauralizer': unknown override specifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(37): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(39): error C3646: 'decoder': unknown override specifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(39): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(40): error C3646: 'processor': unknown override specifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(40): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(41): error C3646: 'zoomer': unknown override specifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(41): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(77): error C2065: 'binauralizer': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(80): error C2065: 'binauralizer': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(87): error C2065: 'binauralizer': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(92): error C2065: 'decoder': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(96): error C2065: 'decoder': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(99): error C2065: 'kAmblib_51': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(100): error C2065: 'kAmblib_Stereo': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(101): error C2065: 'kAmblib_Quad': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(102): error C2065: 'kAmblib_CustomSpeakerSetUp': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(107): error C2065: 'processor': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(111): error C2065: 'zoomer': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(128): error C2065: 'CBFormat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(128): error C2146: syntax error: missing ';' before identifier 'bformat'
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(128): error C2065: 'bformat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(129): error C2065: 'bformat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(131): error C2065: 'bformat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(136): error C2065: 'processor': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(136): error C3861: 'DegreesToRadians': identifier not found
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(137): error C3861: 'DegreesToRadians': identifier not found
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(138): error C3861: 'DegreesToRadians': identifier not found
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(139): error C2065: 'processor': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(140): error C2065: 'processor': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(140): error C2065: 'bformat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(141): error C2065: 'zoomer': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(142): error C2065: 'zoomer': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(143): error C2065: 'zoomer': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(143): error C2065: 'bformat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(154): error C2065: 'decoder': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(154): error C2065: 'bformat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(157): error C2065: 'bformat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(162): error C2065: 'binauralizer': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(162): error C2065: 'bformat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(168): error C2065: 'decoder': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-decoder.cpp(168): error C2065: 'bformat': undeclared identifier
[344/362] Linking C shared module out\lib\mlt\mltavformat.dll
[345/362] Linking C shared module out\lib\mlt\mltfrei0r.dll
[346/362] Building CXX object src\modules\spatialaudio\CMakeFiles\mltspatialaudio.dir\filter_ambisonic-encoder.cpp.obj
FAILED: [code=2] src/modules/spatialaudio/CMakeFiles/mltspatialaudio.dir/filter_ambisonic-encoder.cpp.obj
C:\PROGRA~2\MICROS~2\2022\BUILDT~1\VC\Tools\MSVC\1444~1.352\bin\Hostx64\x64\cl.exe  /nologo /TP -D_USE_MATH_DEFINES -Dmltspatialaudio_EXPORTS -IC:\_\bae62da3\build\src\modules\spatialaudio -IC:\_\b0938939\mlt\src\framework\.. -IC:\_\bae62da3\build\src\framework -external:IC:\Craft\windows-msvc2022_64-cl\include -external:W0 /DWIN32 /D_WINDOWS /EHsc /O2 /Ob1 /DNDEBUG -std:c++20 -MD -Zi -D_USE_MATH_DEFINES /showIncludes @src\modules\spatialaudio\CMakeFiles\mltspatialaudio.dir\filter_ambisonic-encoder.cpp.obj.modmap /Fosrc\modules\spatialaudio\CMakeFiles\mltspatialaudio.dir\filter_ambisonic-encoder.cpp.obj /Fdsrc\modules\spatialaudio\CMakeFiles\mltspatialaudio.dir\ /FS -c C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(36): error C3646: 'encoder': unknown override specifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(36): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(70): error C2065: 'encoder': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(72): error C2065: 'encoder': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(81): error C2065: 'CBFormat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(81): error C2146: syntax error: missing ';' before identifier 'bformat'
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(81): error C2065: 'bformat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(82): error C2065: 'PolarPoint': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(82): error C2146: syntax error: missing ';' before identifier 'polar'
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(82): error C2065: 'polar': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(86): error C2065: 'bformat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(87): error C2065: 'polar': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(87): error C3861: 'DegreesToRadians': identifier not found
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(88): error C2065: 'polar': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(88): error C3861: 'DegreesToRadians': identifier not found
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(89): error C2065: 'polar': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(90): error C2065: 'encoder': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(90): error C2065: 'polar': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(91): error C2065: 'encoder': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(92): error C2065: 'encoder': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(92): error C2065: 'bformat': undeclared identifier
C:\_\b0938939\mlt\src\modules\spatialaudio\filter_ambisonic-encoder.cpp(94): error C2065: 'bformat': undeclared identifier

Best would probably be to make the module compatible with libspatialaudio 0.4.0 and require that as minimum version of the dependency.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions