float GetObjectParamFloat(int iObject, const char* pszParam, float fDefault) { char* params = GetObjectParams(iObject); if (!params) return fDefault; float fRet = GetParamFloat(params, pszParam, fDefault); g_pMalloc->Free(params); return fRet; }
HRESULT CParamsManager::GetParamInt(DWORD dwParamIndex,REFERENCE_TIME rt,long *pval) { HRESULT hr = E_POINTER; if (pval) { float fVal; hr = GetParamFloat(dwParamIndex,rt,&fVal); if (SUCCEEDED(hr)) { *pval = (long) (fVal + 1/2); // Round. } } return hr; }
void CParamsManager ::UpdateActiveParams(REFERENCE_TIME rtTime, UpdateCallback &rThis) { if (!m_dwActiveBits) return; // nothing to recalc DWORD dwBit = 1; for (DWORD dwIndex = 0; dwIndex < m_cParams; dwIndex++, dwBit = dwBit << 1) { if (m_dwActiveBits & dwBit) { float fVal = 0; HRESULT hr = GetParamFloat(dwIndex, rtTime, &fVal); rThis.SetParamUpdate(dwIndex, fVal); if (hr == S_FALSE) m_dwActiveBits &= ~dwBit; // we're beyond the last curve, don't need to recalc next time //TraceI(6, "DMO value: time %I64d, param #%d, current value %hf\n", rtTime, dwIndex, fVal); } } }
void CParamsManager ::UpdateActiveParams(REFERENCE_TIME rtTime, UpdateCallback &rThis) { if (!m_dwActiveBits) return; // nothing to recalc DWORD dwBit = 1; for (DWORD dwIndex = 0; dwIndex < m_cParams; dwIndex++, dwBit = dwBit << 1) { if (m_dwActiveBits & dwBit) { float fVal = 0; HRESULT hr = GetParamFloat(dwIndex, rtTime, &fVal); rThis.SetParamUpdate(dwIndex, fVal); if (hr == S_FALSE) { // we're beyond the last curve, so we don't need to recalc next time m_dwActiveBits &= ~dwBit; } } } }