Freigeben über


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

Weitere Informationen

Aufrufen asynchroner Methoden

IMFTimecodeTranslate