Metodo IMFTimecodeTranslate::BeginConvertTimecodeToHNS (mfidl.h)
Avvia una chiamata asincrona per convertire il codice temporale SMPTE (Society of Motion Picture and Television Engineers) in unità di 100 nanosecondi.
Sintassi
HRESULT BeginConvertTimecodeToHNS(
[in] const PROPVARIANT *pPropVarTimecode,
[in] IMFAsyncCallback *pCallback,
[in] IUnknown *punkState
);
Parametri
[in] pPropVarTimecode
Tempo nel codice ora SMPTE da convertire. Il membro vt della struttura PROPVARIANT è impostato su VT_I8. Il membro hVal.QuadPart contiene l'ora nel formato decimale codificato binario (BCD). Vedere la sezione Osservazioni.
[in] pCallback
Puntatore all'interfaccia IMFAsyncCallback di un oggetto callback. Il chiamante deve implementare questa interfaccia.
[in] punkState
PPointer all'interfaccia IUnknown di un oggetto di stato, definito dal chiamante. Questo parametro può essere NULL. È possibile utilizzare questo oggetto per contenere le informazioni sullo stato. L'oggetto viene restituito al chiamante quando viene richiamato il callback.
Valore restituito
Il metodo restituisce un valore HRESULT. I valori possibili includono, ma non sono limitati a, quelli indicati nella tabella seguente.
Codice restituito | Descrizione |
---|---|
|
pPropVarTimecode non è VT_I8. |
|
È stato chiamato il metodo Shutdown dell'oggetto. |
|
Il flusso di byte non è ricercabile. Il codice ora non può essere letto dalla fine del flusso di byte. |
Commenti
Al termine del metodo asincrono, viene chiamato il metodo IMFAsyncCallback::Invoke dell'oggetto callback. A questo punto, l'applicazione deve chiamare IMFTimecodeTranslate::EndConvertTimecodeToHNS per completare la richiesta asincrona.
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.
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;
}
Requisiti
Requisito | Valore |
---|---|
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 |