accurate sound position timestamps

This commit is contained in:
Glenn Maynard
2004-01-18 04:01:52 +00:00
parent ee4aaf5cda
commit 74e1b8e276
2 changed files with 15 additions and 2 deletions
+14 -1
View File
@@ -38,6 +38,7 @@
#include "RageLog.h"
#include "RageException.h"
#include "PrefsManager.h"
#include "arch/ArchHooks/ArchHooks.h"
#include <math.h>
@@ -654,9 +655,21 @@ int RageSound::GetPositionSecondsInternal( bool *approximate ) const
return SearchPosMap( pos_map, cur_sample, approximate );
}
float RageSound::GetPositionSeconds( bool *approximate ) const
float RageSound::GetPositionSeconds( bool *approximate, RageTimer *Timestamp ) const
{
LockMut(SOUNDMAN->lock);
if( Timestamp )
{
HOOKS->EnterTimeCriticalSection();
Timestamp->Touch();
}
const float pos = GetPositionSecondsInternal( approximate ) / float(samplerate());
if( Timestamp )
HOOKS->ExitTimeCriticalSection();
const float fixed_pos = pos + Sample->GetOffsetFix();
return GetPlaybackRate() * fixed_pos;
}
+1 -1
View File
@@ -68,7 +68,7 @@ public:
void Stop();
float GetLengthSeconds();
float GetPositionSeconds( bool *approximate=NULL ) const;
float GetPositionSeconds( bool *approximate=NULL, RageTimer *Timestamp=NULL ) const;
int GetSampleRate() const;
bool SetPositionSeconds( float fSeconds = -1);
void SetAccurateSync(bool yes=true) { AccurateSync = yes; }