Método IMFTimecodeTranslate::BeginConvertTimecodeToHNS (mfidl.h)
Inicia una llamada asincrónica para convertir el código de tiempo society of Motion Picture and Television Engineers (SMPTE) en unidades de 100 nanosegundos.
Sintaxis
HRESULT BeginConvertTimecodeToHNS(
[in] const PROPVARIANT *pPropVarTimecode,
[in] IMFAsyncCallback *pCallback,
[in] IUnknown *punkState
);
Parámetros
[in] pPropVarTimecode
Tiempo en el código de tiempo de SMPTE que se va a convertir. El miembro vt de la estructura PROPVARIANT se establece en VT_I8. El miembro hVal.QuadPart contiene la hora en formato decimal codificado binario (BCD). Vea la sección Comentarios.
[in] pCallback
Puntero a la interfaz IMFAsyncCallback de un objeto de devolución de llamada. El autor de la llamada debe implementar esta interfaz.
[in] punkState
PPointer a la interfaz IUnknown de un objeto de estado, definido por el autor de la llamada. Este parámetro puede ser NULL. Puede usar este objeto para contener información de estado. El objeto se devuelve al autor de la llamada cuando se invoca la devolución de llamada.
Valor devuelto
El método devuelve un valor HRESULT. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros.
Código devuelto | Descripción |
---|---|
|
pPropVarTimecode no está VT_I8. |
|
Se llamó al método Shutdown del objeto. |
|
La secuencia de bytes no se puede buscar. El código de hora no se puede leer desde el final de la secuencia de bytes. |
Comentarios
Cuando se completa el método asincrónico, se llama al método IMFAsyncCallback::Invoke del objeto de devolución de llamada. En ese momento, la aplicación debe llamar a IMFTimecodeTranslate::EndConvertTimecodeToHNS para completar la solicitud asincrónica.
El valor de pPropVarTimecode es un valor sin signo de 64 bits con tipo LONGLONG. El DWORD superior contiene el intervalo. (Un intervalo es una serie continua de códigos de tiempo). El DWORD inferior contiene el código de tiempo en forma de un número hexadecimal 0xhhhmmssff, donde cada secuencia de 2 bytes se lee como un valor decimal.
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;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 7 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 R2 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | mfidl.h |