I’m running gentoo 64bit, and have gotten to the point of emerging synfig-studio, however it fails to compile properly with fmod. After trying several code modifications, compiling it manually from the unchanged source download fails with the same error.
audiocontainer.cpp: In function 'bool build_profile(FSOUND_SAMPLE*, double&, std::vector<char, std::allocator<char> >&)':
audiocontainer.cpp:104: error: 'FSOUND_Sample_GetMode' was not declared in this scope
audiocontainer.cpp:110: error: 'FSOUND_Sample_GetDefaults' was not declared in this scope
audiocontainer.cpp:116: error: 'FSOUND_16BITS' was not declared in this scope
audiocontainer.cpp:117: error: 'FSOUND_STEREO' was not declared in this scope
audiocontainer.cpp:121: error: 'FSOUND_Sample_GetLength' was not declared in this scope
audiocontainer.cpp:126: error: 'FSOUND_GetError' was not declared in this scope
audiocontainer.cpp:142: warning: dereferencing type-punned pointer will break strict-aliasing rules
audiocontainer.cpp:142: warning: dereferencing type-punned pointer will break strict-aliasing rules
audiocontainer.cpp:142: error: 'FSOUND_Sample_Lock' was not declared in this scope
audiocontainer.cpp:144: error: 'FSOUND_GetError' was not declared in this scope
audiocontainer.cpp:226: error: 'FSOUND_Sample_Unlock' was not declared in this scope
audiocontainer.cpp: In member function 'void scrubinfo::scrub_dsp_process()':
audiocontainer.cpp:340: error: 'FSOUND_IsPlaying' was not declared in this scope
audiocontainer.cpp:374: error: 'FSOUND_SetPaused' was not declared in this scope
audiocontainer.cpp:384: error: 'FSOUND_GetCurrentPosition' was not declared in this scope
audiocontainer.cpp:387: error: 'FSOUND_GetPaused' was not declared in this scope
audiocontainer.cpp:389: error: 'FSOUND_GetFrequency' was not declared in this scope
audiocontainer.cpp:427: error: 'FSOUND_DSP_GetBufferLength' was not declared in this scope
audiocontainer.cpp:430: error: 'FSOUND_GetOutputRate' was not declared in this scope
audiocontainer.cpp:440: error: 'FSOUND_SetPaused' was not declared in this scope
audiocontainer.cpp:444: error: 'FSOUND_SetPaused' was not declared in this scope
audiocontainer.cpp:445: error: 'FSOUND_SetFrequency' was not declared in this scope
audiocontainer.cpp: At global scope:
audiocontainer.cpp:485: error: expected initializer before '*' token
audiocontainer.cpp:487: warning: unused parameter 'originalbuffer'
audiocontainer.cpp:487: warning: unused parameter 'length'
audiocontainer.cpp: In member function 'void FMODInitializer::addref()':
audiocontainer.cpp:552: error: 'FSOUND_OUTPUT_OSS' was not declared in this scope
audiocontainer.cpp:552: error: 'FSOUND_SetOutput' was not declared in this scope
audiocontainer.cpp:571: error: 'FSOUND_Init' was not declared in this scope
audiocontainer.cpp:579: error: 'scrubdspunit' was not declared in this scope
audiocontainer.cpp:579: error: 'FSOUND_DSP_Create' was not declared in this scope
audiocontainer.cpp:582: error: 'FSOUND_DSP_GetBufferLength' was not declared in this scope
audiocontainer.cpp:582: error: 'FSOUND_GetOutputRate' was not declared in this scope
audiocontainer.cpp: In member function 'void FMODInitializer::flush()':
audiocontainer.cpp:622: error: 'scrubdspunit' was not declared in this scope
audiocontainer.cpp:622: error: 'FSOUND_DSP_Free' was not declared in this scope
audiocontainer.cpp:623: error: 'FSOUND_Close' was not declared in this scope
audiocontainer.cpp: In member function 'bool studio::AudioContainer::AudioImp::init_play()':
audiocontainer.cpp:712: error: 'FSOUND_IsPlaying' was not declared in this scope
audiocontainer.cpp:717: error: 'FSOUND_FREE' was not declared in this scope
audiocontainer.cpp:717: error: 'FSOUND_PlaySoundEx' was not declared in this scope
audiocontainer.cpp:718: error: 'FSOUND_GetError' was not declared in this scope
audiocontainer.cpp:718: error: 'FMOD_ERR_NONE' was not declared in this scope
audiocontainer.cpp:726: error: 'FSOUND_SetPaused' was not declared in this scope
audiocontainer.cpp:727: error: 'FSOUND_SetFrequency' was not declared in this scope
audiocontainer.cpp: In constructor 'studio::AudioContainer::AudioImp::AudioImp()':
audiocontainer.cpp:750: error: 'FSOUND_FREE' was not declared in this scope
audiocontainer.cpp: In member function 'bool studio::AudioContainer::AudioImp::start_playing_now()':
audiocontainer.cpp:767: error: 'FSOUND_SetPaused' was not declared in this scope
audiocontainer.cpp: In member function 'bool studio::AudioContainer::AudioImp::isRunning()':
audiocontainer.cpp:777: error: 'FSOUND_IsPlaying' was not declared in this scope
audiocontainer.cpp: In member function 'bool studio::AudioContainer::AudioImp::isPaused()':
audiocontainer.cpp:786: error: 'FSOUND_GetPaused' was not declared in this scope
audiocontainer.cpp: In member function 'bool studio::AudioContainer::AudioImp::get_current_time(double&)':
audiocontainer.cpp:812: error: 'FSOUND_GetCurrentPosition' was not declared in this scope
audiocontainer.cpp: In member function 'bool studio::AudioContainer::AudioImp::load(const std::string&, const std::string&)':
audiocontainer.cpp:1047: error: 'FSOUND_FREE' was not declared in this scope
audiocontainer.cpp:1048: error: 'FSOUND_LOOP_OFF' was not declared in this scope
audiocontainer.cpp:1048: error: 'FSOUND_MPEGACCURATE' was not declared in this scope
audiocontainer.cpp:1048: error: 'FSOUND_Sample_Load' was not declared in this scope
audiocontainer.cpp:1066: error: 'FSOUND_Sample_GetLength' was not declared in this scope
audiocontainer.cpp:1069: error: 'FSOUND_Sample_GetDefaults' was not declared in this scope
audiocontainer.cpp:1088: error: 'FSOUND_Sample_Free' was not declared in this scope
audiocontainer.cpp: In member function 'void studio::AudioContainer::AudioImp::play(double)':
audiocontainer.cpp:1125: error: 'FSOUND_SetFrequency' was not declared in this scope
audiocontainer.cpp:1126: error: 'FSOUND_SetCurrentPosition' was not declared in this scope
audiocontainer.cpp:1132: error: 'FSOUND_Sample_GetLength' was not declared in this scope
audiocontainer.cpp:1139: error: 'FSOUND_SetFrequency' was not declared in this scope
audiocontainer.cpp:1140: error: 'FSOUND_SetCurrentPosition' was not declared in this scope
audiocontainer.cpp:1141: error: 'FSOUND_SetPaused' was not declared in this scope
audiocontainer.cpp: In member function 'void studio::AudioContainer::AudioImp::stop()':
audiocontainer.cpp:1155: error: 'FSOUND_SetPaused' was not declared in this scope
audiocontainer.cpp: In member function 'void studio::AudioContainer::AudioImp::clear()':
audiocontainer.cpp:1172: error: 'FSOUND_IsPlaying' was not declared in this scope
audiocontainer.cpp:1174: error: 'FSOUND_StopSound' was not declared in this scope
audiocontainer.cpp:1176: error: 'FSOUND_FREE' was not declared in this scope
audiocontainer.cpp:1177: error: 'FSOUND_Sample_Free' was not declared in this scope
audiocontainer.cpp: In member function 'void studio::AudioContainer::AudioImp::start_scrubbing(double)':
audiocontainer.cpp:1228: error: 'FSOUND_SetCurrentPosition' was not declared in this scope
audiocontainer.cpp:1242: error: 'scrubdspunit' was not declared in this scope
audiocontainer.cpp:1242: error: 'FSOUND_DSP_SetActive' was not declared in this scope
audiocontainer.cpp: In member function 'void studio::AudioContainer::AudioImp::stop_scrubbing()':
audiocontainer.cpp:1259: error: 'scrubdspunit' was not declared in this scope
audiocontainer.cpp:1259: error: 'FSOUND_DSP_SetActive' was not declared in this scope
audiocontainer.cpp:1260: error: 'FSOUND_IsPlaying' was not declared in this scope
audiocontainer.cpp:1260: error: 'FSOUND_SetPaused' was not declared in this scope
audiocontainer.cpp: In member function 'void studio::AudioContainer::AudioImp::scrub(double)':
audiocontainer.cpp:1296: error: 'FSOUND_IsPlaying' was not declared in this scope
audiocontainer.cpp:1298: error: 'FSOUND_SetPaused' was not declared in this scope
audiocontainer.cpp:1344: error: 'FSOUND_SetCurrentPosition' was not declared in this scope
audiocontainer.cpp:1356: error: 'FSOUND_SetPaused' was not declared in this scope
audiocontainer.cpp:1366: error: 'FSOUND_IsPlaying' was not declared in this scope
audiocontainer.cpp:1368: error: 'FSOUND_SetPaused' was not declared in this scope
audiocontainer.cpp:1411: error: 'FSOUND_SetCurrentPosition' was not declared in this scope
audiocontainer.cpp:1423: error: 'FSOUND_SetPaused' was not declared in this scope
make[3]: *** [synfigstudio-audiocontainer.o] Error 1
make[3]: Leaving directory `/root/software/test/synfig-studio-0.61.09/src/gtkmm'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/software/test/synfig-studio-0.61.09/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/software/test/synfig-studio-0.61.09'
make: *** [all] Error 2
In looking at audiocontainer.cpp, it looks like WITH_FMOD isn’t being properly referenced, so it doesn’t use it. As you can see, there is also a syntax issue with the 2nd ‘bool build_profile’ line, which prompts the first error line above, but the 2nd ‘#ifdef WITH_FMOD’ failure prompts the rest of the errors.
[code]
#ifdef WITH_FMOD
bool build_profile(FSOUND_SAMPLE *sample, double &samplerate, std::vector &samples)
#else
bool build_profile(FSOUND_SAMPLE */sample/, double &/samplerate/, std::vector &/samples/)
#endif
{
#ifdef WITH_FMOD
float sps = samplerate;
//trivial rejection...
if(!sample || sps < 1)
{
synfig::warning("build_profile: Sample rate was too low or sample was invalid");
return false;
}
//lock for all samples and process them into a subset
unsigned int mode = FSOUND_Sample_GetMode(sample);
//make sure that it's 8 bit... I hope this works...
//sample rate of the actual song...
int allsamplerate = 0;
FSOUND_Sample_GetDefaults(sample,&allsamplerate,0,0,0);
//get the size of the sample defaults from the mode
int channels = 1;
int channelsize = 1; //number of bytes
if(mode & FSOUND_16BITS) channelsize = 2; //this shouldn't happen
if(mode & FSOUND_STEREO) channels = 2;
//Get the sample information
int samplesize = channels*channelsize; //the only two things that increase samplesize
int numsamples = FSOUND_Sample_GetLength(sample); //number of samples in the sound
int sizeall = samplesize*numsamples; //should be the size of the entire song...
if(sizeall <= 0)
{
synfig::warning("ProfileAudio: Sample buffer cannot be size smaller than 1 (%X)",FSOUND_GetError());
return false;
}
//be sure that the new sample rate is less than or equal to the original
if(sps > allsamplerate) sps = allsamplerate;
float stride = allsamplerate/(float)sps;
//down sampling to 8 bit min/max values
synfig::warning("About to downsample from %d Hz to %.1f Hz, sample stride: %f", allsamplerate, sps, stride);
char *sampledata=0,*useless = 0;
unsigned int len1,len2; [/code]
Like I said, ETL, synfig, and all the other dependencies installed fine. I originally thought fmod was the issue, and updated it to the latest stable 64bit linux version, but that changed nothing with regard to synfig-studio compiling properly.
I need to hunt down why and where WITH_FMOD is not being referenced/defined properly. Willing to go the distance on solving this … Help is appreciated.