Поделиться через


Функция Int64x32Div32

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Функция Int64x32Div32 реализует формулу ((a*b)+rnd)/c , где a является 64-разрядным значением, а b, c и rnd — 32-разрядными значениями.

Синтаксис

LONGLONG WINAPI Int64x32Div32(
   LONGLONG a,
   LONG     b,
   LONG     c,
   LONG     rnd
);

Параметры

a

Умножение.

b

Множитель.

c

Делитель.

Rnd

Коэффициент округления.

Возвращаемое значение

Возвращает вычисление (a * b + rnd)/c или одно из следующих значений.

Код возврата Описание
0x7FFFFFFFFFFFFFFF
Переполнение произошло из-за слишком большого (положительного) результата.
0x8000000000000000
Переполнение произошло из-за слишком большого (отрицательного) результата.

 

Комментарии

Округление на делении к нулю. Деление на ноль считается условием переполнения.

Метки времени и время поиска являются 64-разрядными значениями, поэтому эта функция полезна для выполнения преобразований в 32-разрядных системах. Например, в MPEG-1 ссылка на системные часы составляет 90 кГц или 90 000 тактов в секунду. Формула, преобразуемая в эталонное время (100-наносекундные единицы) —

(timestamp * 1000) / 9

который можно вычислить как Int64x32Div32(timestamp, 1000, 9, 0). Используйте параметр rnd в качестве коэффициента округления.

Требования

Требование Значение
Заголовок
Wxutil.h (включая Streams.h)
Библиотека
Strmbase.lib (розничные сборки);
Strmbasd.lib (отладочные сборки)

См. также раздел

Прочие вспомогательные функции

llMulDiv