void __stdcall tTVPMFPlayer::GetNumberOfFrame( int *f ) { UINT64 avgTime; HRESULT hr = MFFrameRateToAverageTimePerFrame( FPSNumerator, FPSDenominator, &avgTime ); if( SUCCEEDED(hr) ) { *f = (int)( HnsDuration / avgTime ); } }
void Scheduler::SetFrameRate(const MFRatio& fps) { UINT64 AvgTimePerFrame = 0; // Convert to a duration. MFFrameRateToAverageTimePerFrame(fps.Numerator, fps.Denominator, &AvgTimePerFrame); m_PerFrameInterval = (MFTIME)AvgTimePerFrame; // Calculate 1/4th of this value, because we use it frequently. m_PerFrame_1_4th = m_PerFrameInterval / 4; }
void __stdcall tTVPMFPlayer::GetFrame( int *f ) { UINT64 avgTime; *f = 0; HRESULT hr = MFFrameRateToAverageTimePerFrame( FPSNumerator, FPSDenominator, &avgTime ); if( SUCCEEDED(hr) ) { if( PresentationClock.p ) { MFTIME mftime; if( SUCCEEDED(hr = PresentationClock->GetTime(&mftime)) ) { *f = (int)( mftime / avgTime ); } } } }
void __stdcall tTVPMFPlayer::SetFrame( int f ) { UINT64 avgTime; HRESULT hr = MFFrameRateToAverageTimePerFrame( FPSNumerator, FPSDenominator, &avgTime ); if( SUCCEEDED(hr) ) { LONGLONG requestTime = avgTime * (LONGLONG)f; if( MediaSession.p && GetClockState() == MFCLOCK_STATE_RUNNING ) { PROPVARIANT var; PropVariantInit(&var); var.vt = VT_I8; var.hVal.QuadPart = requestTime; MediaSession->Start( &GUID_NULL, &var ); PropVariantClear(&var); } } }
void Scheduler::SetFrameRate(const MFRatio& fps) { AutoLock lock(m_schedCritSec); if (m_bUseMfTimeCalc || fps.Numerator == 0 || fps.Denominator == 0) { UINT64 AvgTimePerFrame = 0; // Convert to a duration. MFFrameRateToAverageTimePerFrame(fps.Numerator, fps.Denominator, &AvgTimePerFrame); m_PerFrameInterval = (MFTIME)AvgTimePerFrame; } else m_PerFrameInterval = (MFTIME)10000000.0 / ((double)fps.Numerator / fps.Denominator); // Calculate 1/4th of this value, because we use it frequently. m_PerFrame_1_4th = m_PerFrameInterval / 4; }