Condividi tramite


Funzione Int64x32Div32

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine 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, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

La Int64x32Div32 funzione implementa la formula ((a*b)+rnd)/c in cui un è un valore a 64 bit e b, c e rnd sono valori a 32 bit.

Sintassi

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

Parametri

Un

Moltiplicazione.

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.

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, in MPEG-1 il riferimento all'orologio di sistema è 90 kHz o 90.000 tick al secondo. La formula da convertire in tempo di riferimento (100-nanosecondi) è

(timestamp * 1000) / 9

che può essere calcolato come Int64x32Div32(timestamp, 1000, 9, 0). Usare il parametro rnd come fattore di arrotondamento.

Requisiti

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

Vedi anche

Funzioni helper varie

llMulDiv