Partager via


fonction llMulDiv

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

La llMulDiv fonction implémente la formule ((a*b)+rnd)/c où chaque terme est une valeur 64 bits.

Les horodatages et les heures de recherche étant des valeurs 64 bits, cette fonction est utile pour effectuer des conversions sur des systèmes 32 bits. Par exemple, la formule des octets par seconde est

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

qui peut être calculé en tant que llMulDiv(nBytes, rtTime, 10000000, 0). Utilisez le paramètre rnd comme facteur d’arrondi.

Syntaxe

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

Paramètres

a

Multiplicand.

b

Multiplicateur.

c

Diviseur.

Rnd

Facteur d’arrondi.

Valeur renvoyée

Retourne le (a * b + rnd)/c calcul ou l’une des valeurs suivantes.

Code de retour Description
0x7FFFFFFFFFFFFFFF
Un dépassement de capacité s’est produit parce que le résultat est trop volumineux (positif).
0x8000000000000000
Un dépassement de capacité s’est produit parce que le résultat est trop volumineux (négatif).

 

Notes

Arrondir la division est vers zéro. La division par zéro est comptabilisée comme condition de dépassement de capacité.

Configuration requise

Condition requise Valeur
En-tête
Wxutil.h (include Streams.h)
Bibliothèque
Strmbase.lib (builds de vente au détail) ;
Strmbasd.lib (builds de débogage)

Voir aussi

Fonctions d’assistance diverses

Int64x32Div32