Método IMFTimecodeTranslate::EndConvertHNSToTimecode (mfidl.h)
Conclui uma solicitação assíncrona para converter o tempo em unidades de 100 nanossegundos para o código de tempo da Society of Motion Picture and Television Engineers (SMPTE).
Sintaxe
HRESULT EndConvertHNSToTimecode(
[in] IMFAsyncResult *pResult,
[out] PROPVARIANT *pPropVarTimecode
);
Parâmetros
[in] pResult
Um ponteiro para a interface IMFAsyncResult . Passe o mesmo ponteiro que o objeto de retorno de chamada recebeu no método IMFAsyncCallback::Invoke .
[out] pPropVarTimecode
Um ponteiro para um PROPVARIANT que recebe o tempo convertido. O membro vt da estrutura PROPVARIANT é definido como VT_I8. O membro hVal.QuadPart contém o tempo convertido no formulário decimal codificado binário (BCD). Consulte Observações.
Valor retornado
Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
Chame esse método depois que o método IMFTimecodeTranslate::BeginConvertHNSToTimecode for concluído de forma assíncrona.
O valor de pPropVarTimecode é um valor sem sinal de 64 bits digitado como LONGLONG. O DWORD superior contém o intervalo. (Um intervalo é uma série contínua de códigos de tempo.) O DWORD inferior contém o código de tempo na forma de um número hexadecimal 0xhhmmssff, em que cada sequência de 2 bytes é lida como um 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 com suporte | Windows 7 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 R2 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | mfidl.h |