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


Функция llMulDiv

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

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

Метки времени и время поиска являются 64-разрядными значениями, поэтому эта функция полезна для выполнения преобразований в 32-разрядных системах. Например, формула для байтов в секунду имеет значение

(Number of Bytes * Reference Time) / 10,000,000

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

Синтаксис

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

Параметры

a

Умножение.

b

Множитель.

c

Делитель.

Rnd

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

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

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

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

 

Комментарии

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

Требования

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

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

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

Int64x32Div32