IMFTimecodeTranslate::EndConvertHNSToTimecode 方法 (mfidl.h)
完成非同步要求,以 100 奈秒為單位將時間轉換為電影與電視工程師社會, (SMPTE) 時間程式碼。
語法
HRESULT EndConvertHNSToTimecode(
[in] IMFAsyncResult *pResult,
[out] PROPVARIANT *pPropVarTimecode
);
參數
[in] pResult
IMFAsyncResult介面的指標。 傳入您的回呼物件在 IMFAsyncCallback::Invoke 方法中收到的相同指標。
[out] pPropVarTimecode
接收已轉換時間之 PROPVARIANT 的指標。 PROPVARIANT結構的vt成員會設定為 VT_I8。 hVal.QuadPart成員包含二進位編碼十進位 (BCD) 格式的轉換時間。 請參閱<備註>。
傳回值
如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
備註
在 IMFTimecodeTranslate::BeginConvertHNSToTimecode 方法以非同步方式完成之後呼叫此方法。
pPropVarTimecode的值是輸入為LONGLONG的 64 位不帶正負號值。 上方 DWORD 包含範圍。 (範圍 是連續的時間代碼序列。) 較低的 DWORD 包含十六進位數位 0xhhmmssff格式的時間程式碼,其中每個 2 位元組序列都會讀取為十進位值。
HRESULT ParseTimeCode(
const PROPVARIANT& var,
DWORD *pdwRange,
DWORD *pdwFrames,
DWORD *pdwSeconds,
DWORD *pdwMinutes,
DWORD *pdwHours
)
{
if (var.vt != VT_I8)
{
return E_INVALIDARG;
}
ULONGLONG ullTimeCode = (ULONGLONG)var.hVal.QuadPart;
DWORD dwTimecode = (DWORD)(ullTimeCode & 0xFFFFFFFF);
*pdwRange = (DWORD)(ullTimeCode >> 32);
*pdwFrames = dwTimecode & 0x0000000F;
*pdwFrames += (( dwTimecode & 0x000000F0) >> 4 ) * 10;
*pdwSeconds = ( dwTimecode & 0x00000F00) >> 8;
*pdwSeconds += (( dwTimecode & 0x0000F000) >> 12 ) * 10;
*pdwMinutes = ( dwTimecode & 0x000F0000) >> 16;
*pdwMinutes += (( dwTimecode & 0x00F00000) >> 20 ) * 10;
*pdwHours = ( dwTimecode & 0x0F000000) >> 24;
*pdwHours += (( dwTimecode & 0xF0000000) >> 28 ) * 10;
return S_OK;
}
需求
最低支援的用戶端 | Windows 7 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | mfidl.h |