mirror of
https://github.com/projectM-visualizer/projectm.git
synced 2026-03-07 16:05:26 +00:00
Moved frame bookkeeping into TimeKeeper
git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@841 6778bc44-b910-0410-a7a0-be141de4315d
This commit is contained in:
@ -178,8 +178,7 @@ void projectM::default_key_handler( projectMEvent event, projectMKeycode keycode
|
||||
}
|
||||
|
||||
m_activePreset = m_presetPos->allocate(this->presetInputs, this->presetOutputs);
|
||||
renderer->setPresetName(m_activePreset->presetName());
|
||||
presetInputs.frame = 0;
|
||||
renderer->setPresetName(m_activePreset->presetName());
|
||||
timeKeeper->StartPreset();
|
||||
break;
|
||||
|
||||
@ -195,7 +194,7 @@ void projectM::default_key_handler( projectMEvent event, projectMKeycode keycode
|
||||
assert(m_activePreset.get());
|
||||
|
||||
renderer->setPresetName(m_activePreset->presetName());
|
||||
presetInputs.frame = 0;
|
||||
|
||||
timeKeeper->StartPreset();
|
||||
break;
|
||||
case PROJECTM_K_p:
|
||||
@ -219,7 +218,7 @@ void projectM::default_key_handler( projectMEvent event, projectMKeycode keycode
|
||||
|
||||
m_activePreset = m_presetPos->allocate(this->presetInputs, this->presetOutputs);
|
||||
renderer->setPresetName(m_activePreset->presetName());
|
||||
presetInputs.frame = 0;
|
||||
|
||||
timeKeeper->StartPreset();
|
||||
break;
|
||||
case PROJECTM_K_l:
|
||||
|
||||
@ -29,22 +29,28 @@ TimeKeeper::TimeKeeper(double presetDuration, double smoothDuration)
|
||||
_currentTime = getTicks ( startTime ) * 0.001;
|
||||
#endif /** !WIN32 */
|
||||
|
||||
_presetFrameA++;
|
||||
_presetFrameB++;
|
||||
|
||||
}
|
||||
|
||||
void TimeKeeper::StartPreset()
|
||||
{
|
||||
_isSmoothing = false;
|
||||
_presetTimeA = _currentTime;
|
||||
_presetFrameA = 1;
|
||||
}
|
||||
void TimeKeeper::StartSmoothing()
|
||||
{
|
||||
_isSmoothing = true;
|
||||
_presetTimeB = _currentTime;
|
||||
_presetFrameB = 1;
|
||||
}
|
||||
void TimeKeeper::EndSmoothing()
|
||||
{
|
||||
_isSmoothing = false;
|
||||
_presetTimeA = _presetTimeB;
|
||||
_presetFrameA = _presetFrameB;
|
||||
}
|
||||
|
||||
bool TimeKeeper::CanHardCut()
|
||||
@ -76,4 +82,12 @@ TimeKeeper::TimeKeeper(double presetDuration, double smoothDuration)
|
||||
return (_currentTime - _presetTimeB) / _presetDuration;
|
||||
}
|
||||
|
||||
int TimeKeeper::PresetFrameB()
|
||||
{
|
||||
return _presetFrameB;
|
||||
}
|
||||
|
||||
int TimeKeeper::PresetFrameA()
|
||||
{
|
||||
return _presetFrameA;
|
||||
}
|
||||
|
||||
@ -31,6 +31,8 @@ public:
|
||||
|
||||
double PresetProgressA();
|
||||
double PresetProgressB();
|
||||
int PresetFrameA();
|
||||
int PresetFrameB();
|
||||
|
||||
|
||||
#ifndef WIN32
|
||||
@ -48,6 +50,8 @@ private:
|
||||
double _currentTime;
|
||||
double _presetTimeA;
|
||||
double _presetTimeB;
|
||||
int _presetFrameA;
|
||||
int _presetFrameB;
|
||||
|
||||
bool _isSmoothing;
|
||||
|
||||
|
||||
@ -100,7 +100,7 @@ DLLEXPORT void projectM::projectM_resetTextures()
|
||||
}
|
||||
|
||||
DLLEXPORT projectM::projectM ( std::string config_file ) :
|
||||
beatDetect ( 0 ), renderer ( 0 ), m_presetQueuePos(0), oldFrame(1), _pcm(0)
|
||||
beatDetect ( 0 ), renderer ( 0 ), m_presetQueuePos(0), _pcm(0)
|
||||
{
|
||||
readConfig ( config_file );
|
||||
projectM_reset();
|
||||
@ -212,8 +212,7 @@ DLLEXPORT void projectM::renderFrame()
|
||||
{
|
||||
if ( presetInputs.progress>=1.0 )
|
||||
{
|
||||
|
||||
oldFrame = presetInputs.frame;
|
||||
|
||||
timeKeeper->StartSmoothing();
|
||||
///printf("Start Smooth\n");
|
||||
// if(timeKeeper->IsSmoothing())printf("Confirmed\n");
|
||||
@ -230,7 +229,7 @@ DLLEXPORT void projectM::renderFrame()
|
||||
|
||||
timeKeeper->StartPreset();
|
||||
presetInputs.progress=timeKeeper->PresetProgressA();
|
||||
presetInputs.frame = 1;
|
||||
presetInputs.frame = timeKeeper->PresetFrameA();
|
||||
presetSwitchedEvent(true, **m_presetPos);
|
||||
}
|
||||
}
|
||||
@ -239,16 +238,15 @@ DLLEXPORT void projectM::renderFrame()
|
||||
|
||||
if ( timeKeeper->IsSmoothing() && timeKeeper->SmoothRatio() <= 1.0 && !m_presetChooser->empty() )
|
||||
{
|
||||
// printf("Smooth: \n", timeKeeper->SmoothRatio());
|
||||
int frame = ++presetInputs.frame;
|
||||
presetInputs.frame = ++oldFrame;
|
||||
// printf("Smooth: \n", timeKeeper->SmoothRatio());
|
||||
presetInputs.frame = timeKeeper->PresetFrameA();
|
||||
presetInputs.progress= timeKeeper->PresetProgressA();
|
||||
assert ( m_activePreset.get() );
|
||||
m_activePreset->evaluateFrame();
|
||||
renderer->PerPixelMath ( &m_activePreset->presetOutputs(), &presetInputs );
|
||||
renderer->WaveformMath ( &m_activePreset->presetOutputs(), &presetInputs, true );
|
||||
|
||||
presetInputs.frame = frame;
|
||||
presetInputs.frame = timeKeeper->PresetFrameB();
|
||||
presetInputs.progress= timeKeeper->PresetProgressB();
|
||||
assert ( m_activePreset2.get() );
|
||||
m_activePreset2->evaluateFrame();
|
||||
@ -271,7 +269,7 @@ DLLEXPORT void projectM::renderFrame()
|
||||
timeKeeper->EndSmoothing();
|
||||
}
|
||||
//printf("Normal\n");
|
||||
presetInputs.frame++; //number of frames for current preset
|
||||
presetInputs.frame = timeKeeper->PresetFrameA(); //number of frames for current preset
|
||||
presetInputs.progress= timeKeeper->PresetProgressA();
|
||||
m_activePreset->evaluateFrame();
|
||||
|
||||
@ -761,8 +759,7 @@ void projectM::selectPreset ( unsigned int index )
|
||||
|
||||
renderer->setPresetName ( m_activePreset->presetName() );
|
||||
|
||||
presetInputs.frame = 0;
|
||||
timeKeeper->StartPreset();
|
||||
timeKeeper->StartPreset();
|
||||
}
|
||||
|
||||
void projectM::switchPreset(std::auto_ptr<Preset> & targetPreset, const PresetInputs & inputs, PresetOutputs & outputs) {
|
||||
|
||||
@ -277,7 +277,7 @@ private:
|
||||
|
||||
PCM * _pcm;
|
||||
|
||||
int oldFrame;// = 1;
|
||||
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user