Método IMFTimecodeTranslate::EndConvertHNSToTimecode (mfidl.h)
Completa una solicitud asincrónica para convertir el tiempo en unidades de 100 nanosegundos en el código de tiempo Society of Motion Picture and Television Engineers (SMPTE).
Sintaxis
HRESULT EndConvertHNSToTimecode(
[in] IMFAsyncResult *pResult,
[out] PROPVARIANT *pPropVarTimecode
);
Parámetros
[in] pResult
Puntero a la interfaz IMFAsyncResult . Pase el mismo puntero que el objeto de devolución de llamada recibido en el método IMFAsyncCallback::Invoke .
[out] pPropVarTimecode
Puntero a un PROPVARIANT que recibe el tiempo convertido. El miembro vt de la estructura PROPVARIANT se establece en VT_I8. El miembro hVal.QuadPart contiene la hora convertida en formato decimal codificado binario (BCD). Vea la sección Comentarios.
Valor devuelto
Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.
Comentarios
Llame a este método después de que el método IMFTimecodeTranslate::BeginConvertHNSToTimecode se complete de forma 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 número hexadecimal 0xhhmmssff, donde cada secuencia de 2 bytes se lee como un valor decimal.
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;
}
Requisitos
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 |