IMFTimecodeTranslate::BeginConvertTimecodeToHNS-Methode (mfidl.h)
Startet einen asynchronen Aufruf zum Konvertieren des Zeitcodes von Society of Motion Picture and Television Engineers (SMPTE) in Einheiten mit 100 Nanosekunden.
Syntax
HRESULT BeginConvertTimecodeToHNS(
[in] const PROPVARIANT *pPropVarTimecode,
[in] IMFAsyncCallback *pCallback,
[in] IUnknown *punkState
);
Parameter
[in] pPropVarTimecode
Zeit im zu konvertierenden SMPTE-Zeitcode. Das vt-Element der PROPVARIANT-Struktur ist auf VT_I8 festgelegt. Das hVal.QuadPart-Element enthält die Zeit in binär codierter Dezimalform (BCD). Siehe Hinweise.
[in] pCallback
Zeiger auf die IMFAsyncCallback-Schnittstelle eines Rückrufobjekts. Der Aufrufer muss diese Schnittstelle implementieren.
[in] punkState
PPointer auf die IUnknown-Schnittstelle eines Zustandsobjekts, das vom Aufrufer definiert wird. Dieser Parameter kann NULL sein. Sie können dieses Objekt verwenden, um Zustandsinformationen aufzunehmen. Das -Objekt wird an den Aufrufer zurückgegeben, wenn der Rückruf aufgerufen wird.
Rückgabewert
Die Methode gibt ein HRESULT zurück. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle.
Rückgabecode | Beschreibung |
---|---|
|
pPropVarTimecode ist nicht VT_I8. |
|
Die Shutdown-Methode des Objekts wurde aufgerufen. |
|
Der Bytestream kann nicht gesucht werden. Der Zeitcode kann nicht vom Ende des Bytestreams gelesen werden. |
Hinweise
Nach Abschluss der asynchronen Methode wird die IMFAsyncCallback::Invoke-Methode des Rückrufobjekts aufgerufen. Zu diesem Zeitpunkt muss die Anwendung IMFTimecodeTranslate::EndConvertTimecodeToHNS aufrufen, um die asynchrone Anforderung abzuschließen.
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.
void CreateTimeCode(
DWORD dwFrames,
DWORD dwSeconds,
DWORD dwMinutes,
DWORD dwHours,
DWORD dwRange,
PROPVARIANT *pvar
)
{
ULONGLONG ullTimecode = ((ULONGLONG)dwRange) << 32;
ullTimecode += dwFrames % 10;
ullTimecode += (( (ULONGLONG)dwFrames ) / 10) << 4;
ullTimecode += (( (ULONGLONG)dwSeconds ) % 10) << 8;
ullTimecode += (( (ULONGLONG)dwSeconds ) / 10) << 12;
ullTimecode += (( (ULONGLONG)dwMinutes ) % 10) << 16;
ullTimecode += (( (ULONGLONG)dwMinutes ) / 10) << 20;
ullTimecode += (( (ULONGLONG)dwHours ) % 10) << 24;
ullTimecode += (( (ULONGLONG)dwHours ) / 10) << 28;
pvar->vt = VT_I8;
pvar->hVal.QuadPart = (LONGLONG)ullTimecode;
}
Anforderungen
Anforderung | Wert |
---|---|
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 |