Condividi tramite


Funzione llMulDiv

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

La llMulDiv funzione implementa la formula ((a*b)+rnd)/c in cui ogni termine è un valore a 64 bit.

I timestamp e i tempi di ricerca sono valori a 64 bit, quindi questa funzione è utile per eseguire conversioni in sistemi a 32 bit. Ad esempio, la formula per byte al secondo è

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

che può essere calcolato come llMulDiv(nBytes, rtTime, 10000000, 0). Usare il parametro rnd come fattore di arrotondamento.

Sintassi

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

Parametri

Un

Moltiplicatore.

b

Moltiplicatore.

c

Divisore.

Rnd

Fattore di arrotondamento.

Valore restituito

Restituisce il (a * b + rnd)/c calcolo o uno dei valori seguenti.

Codice restituito Descrizione
0x7FFFFFFFFFFFFFFF
Si è verificato un overflow perché il risultato è troppo grande (positivo).
0x8000000000000000
Si è verificato un overflow perché il risultato è troppo grande (negativo).

 

Commenti

L'arrotondamento della divisione è verso zero. La divisione per zero viene conteggiata come condizione di overflow.

Requisiti

Requisito Valore
Intestazione
Wxutil.h (include Streams.h)
Libreria
Strmbase.lib (build retail);
Strmbasd.lib (build di debug)

Vedi anche

Varie funzioni helper

Int64x32Div32