compile error on mlt-7.24.0
ErichBSchulz opened this issue · 1 comments
Hi trying to compile from source.
Sorry I'm a noob with building from source so possible something dumb I've done.
I'm on ubuntu 24.04
I got this warning during the cmake step:
CMake Warning at CMakeLists.txt:301 (find_package):
By not providing "FindQt6.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Qt6", but
CMake did not find one.
Could not find a package configuration file provided by "Qt6" with any of
the following names:
Qt6Config.cmake
qt6-config.cmake
Add the installation prefix of "Qt6" to CMAKE_PREFIX_PATH or set "Qt6_DIR"
to a directory containing one of the above files. If "Qt6" provides a
separate development package or SDK, be sure it has been installed.
followed by these compile errors:
home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:374:52: error: ‘oss_audioinfo’ has not been declared
374 | bool probeDeviceInfo( RtAudio::DeviceInfo &info, oss_audioinfo &ainfo );
| ^~~~~~~~~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp: In member function ‘virtual void RtApiOss::probeDevices()’:
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9922:3: error: ‘oss_sysinfo’ was not declared in this scope
9922 | oss_sysinfo sysinfo;
| ^~~~~~~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9923:24: error: ‘SNDCTL_SYSINFO’ was not declared in this scope; did you mean ‘SNDCTL_SYNTH_INFO’?
9923 | if ( ioctl( mixerfd, SNDCTL_SYSINFO, &sysinfo ) == -1 ) {
| ^~~~~~~~~~~~~~
| SNDCTL_SYNTH_INFO
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9923:41: error: ‘sysinfo’ was not declared in this scope; did you mean ‘sysex_info’?
9923 | if ( ioctl( mixerfd, SNDCTL_SYSINFO, &sysinfo ) == -1 ) {
| ^~~~~~~
| sysex_info
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9930:27: error: ‘sysinfo’ was not declared in this scope; did you mean ‘sysex_info’?
9930 | unsigned int nDevices = sysinfo.numaudios;
| ^~~~~~~
| sysex_info
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9937:3: error: ‘oss_audioinfo’ was not declared in this scope
9937 | oss_audioinfo ainfo;
| ^~~~~~~~~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9941:5: error: ‘ainfo’ was not declared in this scope
9941 | ainfo.dev = n;
| ^~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9942:26: error: ‘SNDCTL_AUDIOINFO’ was not declared in this scope; did you mean ‘SNDCTL_MIDI_INFO’?
9942 | if ( ioctl( mixerfd, SNDCTL_AUDIOINFO, &ainfo ) == -1 ) continue;
| ^~~~~~~~~~~~~~~~
| SNDCTL_MIDI_INFO
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp: At global scope:
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9974:62: error: ‘oss_audioinfo’ has not been declared
9974 | bool RtApiOss :: probeDeviceInfo( RtAudio::DeviceInfo &info, oss_audioinfo &ainfo )
| ^~~~~~~~~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp: In member function ‘bool RtApiOss::probeDeviceInfo(RtAudio::DeviceInfo&, int&)’:
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9977:14: error: request for member ‘caps’ in ‘ainfo’, which is of non-class type ‘int’
9977 | if ( ainfo.caps & PCM_CAP_OUTPUT ) info.outputChannels = ainfo.max_channels;
| ^~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9977:21: error: ‘PCM_CAP_OUTPUT’ was not declared in this scope; did you mean ‘PCM_ENABLE_OUTPUT’?
9977 | if ( ainfo.caps & PCM_CAP_OUTPUT ) info.outputChannels = ainfo.max_channels;
| ^~~~~~~~~~~~~~
| PCM_ENABLE_OUTPUT
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9977:66: error: request for member ‘max_channels’ in ‘ainfo’, which is of non-class type ‘int’
9977 | if ( ainfo.caps & PCM_CAP_OUTPUT ) info.outputChannels = ainfo.max_channels;
| ^~~~~~~~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9978:14: error: request for member ‘caps’ in ‘ainfo’, which is of non-class type ‘int’
9978 | if ( ainfo.caps & PCM_CAP_INPUT ) info.inputChannels = ainfo.max_channels;
| ^~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9978:21: error: ‘PCM_CAP_INPUT’ was not declared in this scope; did you mean ‘SYNTH_CAP_INPUT’?
9978 | if ( ainfo.caps & PCM_CAP_INPUT ) info.inputChannels = ainfo.max_channels;
| ^~~~~~~~~~~~~
| SYNTH_CAP_INPUT
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9978:64: error: request for member ‘max_channels’ in ‘ainfo’, which is of non-class type ‘int’
9978 | if ( ainfo.caps & PCM_CAP_INPUT ) info.inputChannels = ainfo.max_channels;
| ^~~~~~~~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9979:14: error: request for member ‘caps’ in ‘ainfo’, which is of non-class type ‘int’
9979 | if ( ainfo.caps & PCM_CAP_DUPLEX ) {
| ^~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9979:21: error: ‘PCM_CAP_DUPLEX’ was not declared in this scope; did you mean ‘DSP_CAP_DUPLEX’?
9979 | if ( ainfo.caps & PCM_CAP_DUPLEX ) {
| ^~~~~~~~~~~~~~
| DSP_CAP_DUPLEX
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9980:69: error: request for member ‘caps’ in ‘ainfo’, which is of non-class type ‘int’
9980 | if ( info.outputChannels > 0 && info.inputChannels > 0 && ainfo.caps & PCM_CAP_DUPLEX )
| ^~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9985:30: error: request for member ‘iformats’ in ‘ainfo’, which is of non-class type ‘int’
9985 | unsigned long mask = ainfo.iformats;
| ^~~~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9990:15: error: ‘AFMT_S32_LE’ was not declared in this scope; did you mean ‘AFMT_S16_LE’?
9990 | if ( mask & AFMT_S32_LE || mask & AFMT_S32_BE )
| ^~~~~~~~~~~
| AFMT_S16_LE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9990:37: error: ‘AFMT_S32_BE’ was not declared in this scope; did you mean ‘AFMT_S16_BE’?
9990 | if ( mask & AFMT_S32_LE || mask & AFMT_S32_BE )
| ^~~~~~~~~~~
| AFMT_S16_BE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9996:15: error: ‘AFMT_S24_LE’ was not declared in this scope; did you mean ‘AFMT_S16_LE’?
9996 | if ( mask & AFMT_S24_LE || mask & AFMT_S24_BE )
| ^~~~~~~~~~~
| AFMT_S16_LE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:9996:37: error: ‘AFMT_S24_BE’ was not declared in this scope; did you mean ‘AFMT_S16_BE’?
9996 | if ( mask & AFMT_S24_LE || mask & AFMT_S24_BE )
| ^~~~~~~~~~~
| AFMT_S16_BE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10001:68: error: request for member ‘name’ in ‘ainfo’, which is of non-class type ‘int’
10001 | errorStream_ << "RtApiOss::probeDeviceInfo: device (" << ainfo.name << ") data format not supported by RtAudio.";
| ^~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10009:14: error: request for member ‘nrates’ in ‘ainfo’, which is of non-class type ‘int’
10009 | if ( ainfo.nrates ) {
| ^~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10010:37: error: request for member ‘nrates’ in ‘ainfo’, which is of non-class type ‘int’
10010 | for ( unsigned int i=0; i<ainfo.nrates; i++ ) {
| ^~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10012:20: error: request for member ‘rates’ in ‘ainfo’, which is of non-class type ‘int’
10012 | if ( ainfo.rates[i] == SAMPLE_RATES[k] ) {
| ^~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10026:18: error: request for member ‘min_rate’ in ‘ainfo’, which is of non-class type ‘int’
10026 | if ( ainfo.min_rate <= (int) SAMPLE_RATES[k] && ainfo.max_rate >= (int) SAMPLE_RATES[k] ) {
| ^~~~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10026:61: error: request for member ‘max_rate’ in ‘ainfo’, which is of non-class type ‘int’
10026 | if ( ainfo.min_rate <= (int) SAMPLE_RATES[k] && ainfo.max_rate >= (int) SAMPLE_RATES[k] ) {
| ^~~~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10036:104: error: request for member ‘name’ in ‘ainfo’, which is of non-class type ‘int’
10036 | RtApiOss::probeDeviceInfo: no supported sample rates found for device (" << ainfo.name << ").";
| ^~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp: In member function ‘virtual bool RtApiOss::probeDeviceOpen(unsigned int, RtApi::StreamMode, unsigned int, unsigned int, unsigned int, RtAudioFormat, unsigned int*, RtAudio::StreamOptions*)’:
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10057:3: error: ‘oss_sysinfo’ was not declared in this scope
10057 | oss_sysinfo sysinfo;
| ^~~~~~~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10058:32: error: ‘SNDCTL_SYSINFO’ was not declared in this scope; did you mean ‘SNDCTL_SYNTH_INFO’?
10058 | int result = ioctl( mixerfd, SNDCTL_SYSINFO, &sysinfo );
| ^~~~~~~~~~~~~~
| SNDCTL_SYNTH_INFO
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10058:49: error: ‘sysinfo’ was not declared in this scope; did you mean ‘sysex_info’?
10058 | int result = ioctl( mixerfd, SNDCTL_SYSINFO, &sysinfo );
| ^~~~~~~
| sysex_info
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10087:3: error: ‘oss_audioinfo’ was not declared in this scope
10087 | oss_audioinfo ainfo;
| ^~~~~~~~~~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10089:5: error: ‘ainfo’ was not declared in this scope
10089 | ainfo.dev = device;
| ^~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10090:30: error: ‘SNDCTL_AUDIOINFO’ was not declared in this scope; did you mean ‘SNDCTL_MIDI_INFO’?
10090 | result = ioctl( mixerfd, SNDCTL_AUDIOINFO, &ainfo );
| ^~~~~~~~~~~~~~~~
| SNDCTL_MIDI_INFO
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10097:62: error: ‘ainfo’ was not declared in this scope
10097 | errorStream_ << "RtApiOss::probeDeviceOpen: device (" << ainfo.name << ") not found.";
| ^~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10103:31: error: ‘ainfo’ was not declared in this scope
10103 | if ( ( mode == OUTPUT && !( ainfo.caps & PCM_CAP_OUTPUT ) ) ||
| ^~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10103:44: error: ‘PCM_CAP_OUTPUT’ was not declared in this scope; did you mean ‘PCM_ENABLE_OUTPUT’?
10103 | if ( ( mode == OUTPUT && !( ainfo.caps & PCM_CAP_OUTPUT ) ) ||
| ^~~~~~~~~~~~~~
| PCM_ENABLE_OUTPUT
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10104:43: error: ‘PCM_CAP_INPUT’ was not declared in this scope; did you mean ‘SYNTH_CAP_INPUT’?
10104 | ( mode == INPUT && !( ainfo.caps & PCM_CAP_INPUT ) ) ) {
| ^~~~~~~~~~~~~
| SYNTH_CAP_INPUT
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10122:15: error: ‘ainfo’ was not declared in this scope
10122 | if ( !( ainfo.caps & PCM_CAP_DUPLEX ) ) {
| ^~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10122:28: error: ‘PCM_CAP_DUPLEX’ was not declared in this scope; did you mean ‘DSP_CAP_DUPLEX’?
10122 | if ( !( ainfo.caps & PCM_CAP_DUPLEX ) ) {
| ^~~~~~~~~~~~~~
| DSP_CAP_DUPLEX
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10129:117: error: ‘ainfo’ was not declared in this scope
10129 | :probeDeviceOpen: input/output channels must be equal for OSS duplex device (" << ainfo.name << ").";
| ^~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10144:14: error: ‘ainfo’ was not declared in this scope
10144 | fd = open( ainfo.devnode, flags, 0 );
| ^~~~~
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10211:22: error: ‘AFMT_S16_OE’ was not declared in this scope; did you mean ‘AFMT_S16_BE’?
10211 | else if ( mask & AFMT_S16_OE ) {
| ^~~~~~~~~~~
| AFMT_S16_BE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10218:17: error: ‘AFMT_S24_NE’ was not declared in this scope; did you mean ‘AFMT_S16_NE’?
10218 | if ( mask & AFMT_S24_NE ) {
| ^~~~~~~~~~~
| AFMT_S16_NE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10222:22: error: ‘AFMT_S24_OE’ was not declared in this scope; did you mean ‘AFMT_S16_BE’?
10222 | else if ( mask & AFMT_S24_OE ) {
| ^~~~~~~~~~~
| AFMT_S16_BE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10229:17: error: ‘AFMT_S32_NE’ was not declared in this scope; did you mean ‘AFMT_S16_NE’?
10229 | if ( mask & AFMT_S32_NE ) {
| ^~~~~~~~~~~
| AFMT_S16_NE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10233:22: error: ‘AFMT_S32_OE’ was not declared in this scope; did you mean ‘AFMT_S16_BE’?
10233 | else if ( mask & AFMT_S32_OE ) {
| ^~~~~~~~~~~
| AFMT_S16_BE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10246:22: error: ‘AFMT_S32_NE’ was not declared in this scope; did you mean ‘AFMT_S16_NE’?
10246 | else if ( mask & AFMT_S32_NE ) {
| ^~~~~~~~~~~
| AFMT_S16_NE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10250:22: error: ‘AFMT_S24_NE’ was not declared in this scope; did you mean ‘AFMT_S16_NE’?
10250 | else if ( mask & AFMT_S24_NE ) {
| ^~~~~~~~~~~
| AFMT_S16_NE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10254:22: error: ‘AFMT_S16_OE’ was not declared in this scope; did you mean ‘AFMT_S16_BE’?
10254 | else if ( mask & AFMT_S16_OE ) {
| ^~~~~~~~~~~
| AFMT_S16_BE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10259:22: error: ‘AFMT_S32_OE’ was not declared in this scope; did you mean ‘AFMT_S16_BE’?
10259 | else if ( mask & AFMT_S32_OE ) {
| ^~~~~~~~~~~
| AFMT_S16_BE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10264:22: error: ‘AFMT_S24_OE’ was not declared in this scope; did you mean ‘AFMT_S16_BE’?
10264 | else if ( mask & AFMT_S24_OE ) {
| ^~~~~~~~~~~
| AFMT_S16_BE
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp: In member function ‘virtual void RtApiOss::closeStream()’:
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10521:29: error: ‘SNDCTL_DSP_HALT’ was not declared in this scope; did you mean ‘SNDCTL_DSP_POST’?
10521 | ioctl( handle->id[0], SNDCTL_DSP_HALT, 0 );
| ^~~~~~~~~~~~~~~
| SNDCTL_DSP_POST
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10523:29: error: ‘SNDCTL_DSP_HALT’ was not declared in this scope; did you mean ‘SNDCTL_DSP_POST’?
10523 | ioctl( handle->id[1], SNDCTL_DSP_HALT, 0 );
| ^~~~~~~~~~~~~~~
| SNDCTL_DSP_POST
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp: In member function ‘virtual RtAudioErrorType RtApiOss::stopStream()’:
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10629:36: error: ‘SNDCTL_DSP_HALT’ was not declared in this scope; did you mean ‘SNDCTL_DSP_POST’?
10629 | result = ioctl( handle->id[0], SNDCTL_DSP_HALT, 0 );
| ^~~~~~~~~~~~~~~
| SNDCTL_DSP_POST
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10639:36: error: ‘SNDCTL_DSP_HALT’ was not declared in this scope; did you mean ‘SNDCTL_DSP_POST’?
10639 | result = ioctl( handle->id[1], SNDCTL_DSP_HALT, 0 );
| ^~~~~~~~~~~~~~~
| SNDCTL_DSP_POST
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp: In member function ‘virtual RtAudioErrorType RtApiOss::abortStream()’:
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10676:36: error: ‘SNDCTL_DSP_HALT’ was not declared in this scope; did you mean ‘SNDCTL_DSP_POST’?
10676 | result = ioctl( handle->id[0], SNDCTL_DSP_HALT, 0 );
| ^~~~~~~~~~~~~~~
| SNDCTL_DSP_POST
/home/erich/mlt-7.24.0/src/modules/rtaudio/RtAudio.cpp:10686:36: error: ‘SNDCTL_DSP_HALT’ was not declared in this scope; did you mean ‘SNDCTL_DSP_POST’?
10686 | result = ioctl( handle->id[1], SNDCTL_DSP_HALT, 0 );
| ^~~~~~~~~~~~~~~
| SNDCTL_DSP_POST
make[2]: *** [src/modules/rtaudio/CMakeFiles/mltrtaudio.dir/build.make:90: src/modules/rtaudio/CMakeFiles/mltrtaudio.dir/RtAudio.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:902: src/modules/rtaudio/CMakeFiles/mltrtaudio.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
CMake Warning at CMakeLists.txt:301 (find_package):
By not providing "FindQt6.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Qt6", but
CMake did not find one.Could not find a package configuration file provided by "Qt6" with any of
the following names:Qt6Config.cmake qt6-config.cmakeAdd the installation prefix of "Qt6" to CMAKE_PREFIX_PATH or set "Qt6_DIR"
to a directory containing one of the above files. If "Qt6" provides a
separate development package or SDK, be sure it has been installed.
The instructions in that message seem self-explanatory. Did you try following those instructions?
error: ‘oss_audioinfo’ has not been declared
Your system is missing the Open Sound System (OSS) development headers. You should research how to add that. This was the first hit I found.
https://help.ubuntu.com/community/OpenSound
Or, maybe you want to disable the rtaudio module.
This bug tracker is not a support forum. Please see our support method here:
https://www.mltframework.org/support/
Maybe you would also find some good information in our build script and Docker file
https://github.com/mltframework/mlt-scripts/blob/master/build/build-melt.sh
https://github.com/mltframework/mlt/blob/master/Dockerfile