Freigeben über


Int64x32Div32-Funktion

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Die Int64x32Div32 Funktion implementiert die Formel ((a*b)+rnd)/c , bei der a ein 64-Bit-Wert und b, c und rnd 32-Bit-Werte sind.

Syntax

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

Parameter

a

Multipliziert.

b

Multiplikator.

c

Divisor.

Rnd

Rundungsfaktor.

Rückgabewert

Gibt entweder die (a * b + rnd)/c Berechnung oder einen der folgenden Werte zurück.

Rückgabecode Beschreibung
0x7FFFFFFFFFFFFFFF
Ein Überlauf ist aufgetreten, weil das Ergebnis zu groß (positiv) ist.
0x8000000000000000
Ein Überlauf ist aufgetreten, weil das Ergebnis zu groß (negativ) ist.

 

Bemerkungen

Die Rundung für die Division erfolgt in Richtung 0. Die Division durch 0 wird als Überlaufbedingung gezählt.

Zeitstempel und Suchzeiten sind 64-Bit-Werte, sodass diese Funktion nützlich ist, um Konvertierungen auf 32-Bit-Systemen durchzuführen. In MPEG-1 beträgt die Systemuhrreferenz beispielsweise 90 kHz oder 90.000 Ticks pro Sekunde. Die Formel zum Konvertieren in die Referenzzeit (Einheiten von 100 Nanosekunden) lautet.

(timestamp * 1000) / 9

die als Int64x32Div32(timestamp, 1000, 9, 0)berechnet werden kann. Verwenden Sie den rnd-Parameter als Rundungsfaktor.

Anforderungen

Anforderung Wert
Header
Wxutil.h (einschließlich Streams.h)
Bibliothek
Strmbase.lib (Einzelhandelsbuilds);
Strmbasd.lib (Debugbuilds)

Siehe auch

Sonstige Hilfsfunktionen

llMulDiv