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