Metodo IMFTimecodeTranslate::EndConvertHNSToTimecode (mfidl.h)
Completa una richiesta asincrona per convertire il tempo in unità di 100 nanosecondi nel codice temporale Society of Motion Picture and Television Engineers (SMPTE).
Sintassi
HRESULT EndConvertHNSToTimecode(
[in] IMFAsyncResult *pResult,
[out] PROPVARIANT *pPropVarTimecode
);
Parametri
[in] pResult
Puntatore all'interfaccia IMFAsyncResult . Passare lo stesso puntatore ricevuto dall'oggetto callback nel metodo IMFAsyncCallback::Invoke .
[out] pPropVarTimecode
Puntatore a un PROPVARIANT che riceve l'ora convertita. Il membro vt della struttura PROPVARIANT è impostato su VT_I8. Il membro hVal.QuadPart contiene l'ora convertita in formato decimale binario (BCD). Vedere la sezione Osservazioni.
Valore restituito
Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .
Commenti
Chiamare questo metodo dopo che il metodo IMFTimecodeTranslate::BeginConvertHNSToTimecode viene completato in modo asincrono.
Il valore di pPropVarTimecode è un valore senza segno a 64 bit digitato come LONGLONG. La DWORD superiore contiene l'intervallo. Un intervallo è una serie continua di codici temporali. La DWORD inferiore contiene il codice temporale sotto forma di numero esadecimale 0xhhmmssff, dove ogni sequenza a 2 byte viene letta come valore decimale.
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;
}
Requisiti
Client minimo supportato | Windows 7 [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | mfidl.h |