Метод IMFTimecodeTranslate::EndConvertHNSToTimecode (mfidl.h)
Выполняет асинхронный запрос для преобразования времени в 100-наносекундных единиц в код времени Общества инженеров кино и телевидения (SMPTE).
Синтаксис
HRESULT EndConvertHNSToTimecode(
[in] IMFAsyncResult *pResult,
[out] PROPVARIANT *pPropVarTimecode
);
Параметры
[in] pResult
Указатель на интерфейс IMFAsyncResult . Передайте тот же указатель, что и объект обратного вызова, полученный в методе IMFAsyncCallback::Invoke .
[out] pPropVarTimecode
Указатель на PROPVARIANT , получающий преобразованное время. Член vt структуры PROPVARIANT имеет значение VT_I8. Элемент hVal.QuadPart содержит преобразованное время в двоичном кодированном десятичном формате (BCD). См. заметки.
Возвращаемое значение
Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Вызовите этот метод после асинхронного завершения метода IMFTimecodeTranslate::BeginConvertHNSToTimecode .
Значение pPropVarTimecode является 64-разрядным значением без знака, типизированным как LONGLONG. Верхний параметр DWORD содержит диапазон. ( Диапазон — это непрерывный ряд кодов времени.) Нижний параметр DWORD содержит код времени в виде шестнадцатеричного числа 0xhhmmssff, где каждая 2-байтовая последовательность считывается как десятичное значение.
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;
}
Требования
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | mfidl.h |