IMFTimecodeTranslate::EndConvertHNSToTimecode-Methode (mfidl.h)
Schließt eine asynchrone Anforderung zum Konvertieren der Zeit in 100 Nanosekundeneinheiten in den Zeitcode der Society of Motion Picture and Television Engineers (SMPTE) ab.
Syntax
HRESULT EndConvertHNSToTimecode(
[in] IMFAsyncResult *pResult,
[out] PROPVARIANT *pPropVarTimecode
);
Parameter
[in] pResult
Ein Zeiger auf die IMFAsyncResult-Schnittstelle . Übergeben Sie denselben Zeiger, den Ihr Rückrufobjekt in der IMFAsyncCallback::Invoke-Methode empfangen hat.
[out] pPropVarTimecode
Ein Zeiger auf einen PROPVARIANT , der die konvertierte Zeit empfängt. Das vt-Element der PROPVARIANT-Struktur ist auf VT_I8 festgelegt. Das hVal.QuadPart-Element enthält die konvertierte Zeit in binärcodiertem Dezimalformular (BCD). Siehe Hinweise.
Rückgabewert
Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.
Hinweise
Rufen Sie diese Methode auf, nachdem die IMFTimecodeTranslate::BeginConvertHNSToTimecode-Methode asynchron abgeschlossen wurde.
Der Wert von pPropVarTimecode ist ein 64-Bit-Wert ohne Vorzeichen, der als LONGLONG eingegeben wird. Der obere DWORD-Bereich enthält den Bereich. (Ein Bereich ist eine fortlaufende Reihe von Zeitcodes.) Das untere DWORD enthält den Zeitcode in Form einer Hexadezimalzahl 0xhhmmssff, wobei jede 2-Byte-Sequenz als Dezimalwert gelesen wird.
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;
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | mfidl.h |