Hardwarezeichnungsfunktionen

Einige Renderer können beim Dekomprimieren von Videoframes direkt auf Videohardware zeichnen. Diese Renderer geben das VIDCF _ DRAW-Flag als Antwort auf die ICGetInfo-Funktion zurück. Wenn Sie diese Art von Renderer verwenden, muss Ihre Anwendung die dekomprimierten Daten nicht verarbeiten. Dadurch kann der Renderer die dekomprimierten Daten zum Zeichnen beibehalten.

Wenn Ihre Anwendung einen Renderer mit Zeichnungsfunktionen verwendet, muss sie die folgenden Aufgaben verarbeiten:

  • Wählen Sie einen Renderer aus.
  • Geben Sie Bildformate an.
  • Initialisieren Sie den Renderer.
  • Zeichnen Sie die Daten.
  • Steuern von Zeichnungsparametern.

Rendererauswahl

Das ICDrawOpen-Makro öffnet einen Renderer, der Bilder im angegebenen Format zeichnen kann. Er gibt ein Handle eines Renderers zurück, wenn er erfolgreich ist, andernfalls 0 (null). Dieses Makro verwendet die ICLocate-Funktion, um den Renderer zu öffnen.

Angeben von Bildformaten

Da Ihre Anwendung die dekomprimierten Daten nicht zeichnen muss, ist kein bestimmtes Ausgabeformat erforderlich. Sie muss jedoch sicherstellen, dass der Renderer mithilfe des Eingabeformats zeichnen kann, indem die ICM _ DRAW _ QUERY-Nachricht verwendet wird (oder das ICDrawQuery-Makro verwendet wird). Diese Meldung kann nicht bestimmen, ob ein Renderer eine Bitmap zeichnen kann. Wenn Ihre Anwendung bestimmen muss, ob der Renderer die Bitmap zeichnen kann, verwenden Sie diese Meldung mit der ICDrawBegin-Funktion.

Ihre Anwendung kann über einen Renderer verfügen, der mithilfe der ICDrawSuggestFormat-Funktion ein Eingabeformat vor schlägt. Diese Funktion wird verwendet, wenn ein Renderer die Zeichnungsfunktionen von den Dekomprimierungsfunktionen trennt. Die meisten Anwendungen, die die Zeichnungsfunktionen verwenden, müssen das Ausgabeformat nicht bestimmen.

Rendererinalisierung

Die ICDrawBegin-Funktion initialisiert einen Renderer und teilt ihm das Zeichnungsziel mit. Diese Funktion kann auch die folgenden Aufgaben ausführen:

  • Bestimmen Sie, ob der Renderer ein bestimmtes Eingabeformat unterstützt.
  • Geben Sie an, ob der Zeichnungsvorgang ein Fenster oder den gesamten Bildschirm einnimmt.
  • Geben Sie den Teil des Bilds an, der mithilfe des Quellrechtecks angezeigt werden soll.
  • Definieren Sie die Wiedergaberate der Bildsequenz.

Einige Renderer puffern die komprimierten Daten, um effizienter zu arbeiten. Ihre Anwendung kann die ICM _ GETBUFFERSWANTED-Nachricht senden (oder das ICGetBuffersWanted-Makro verwenden), um die Anzahl von Puffern zu bestimmen, die der Renderer anordnt. Ihre Anwendung sollte diese Puffer vorab laden und vor dem Zeichnen an den Renderer senden.

Zeichnen der Daten

Sie können die ICDraw-Funktion verwenden, um die Daten zum Zeichnen zu dekomprimieren. Der Renderer beginnt jedoch erst mit dem Zeichnen von Daten, wenn ihre Anwendung die ICM _ DRAW _ START-Nachricht sendet (oder das ICDrawStart-Makro verwendet). Wenn Ihre Anwendung diese Funktion aufruft, beginnt der Renderer, die Frames mit der durch den dwRate-Parameter dividiert durch den dwScale-Parameter angegebenen Rate zu zeichnen. diese Parameter wurden bereitgestellt, als die Anwendung den Renderer mithilfe der ICDrawBegin-Funktion initialisiert hat. Das Zeichnen wird fortgesetzt, bis Ihre Anwendung die ICM _ DRAW _ STOP-Nachricht sendet (oder das ICDrawStop-Makro verwendet).

Hinweis

Wenn ein Renderer die Daten vor dem Zeichnen puffert, sollte Ihre Anwendung das ICDrawStart-Makro erst verwenden, wenn sie die Anzahl der Frames gesendet hat, die der Renderer für das ICGetBuffersWanted-Makro zurückgegeben hat.

Der lTime-Parameter von ICDraw gibt die Zeit zum Zeichnen eines Frames an. Der Renderer dividiert diese ganze Zahl durch die mit ICDrawBegin angegebene Zeitskala, um die tatsächliche Zeit zu erhalten. Die Zeiten für ICDraw-Funktionen sind relativ zu ICDrawStart. ICDrawStart legt die Uhr auf 0 fest. Wenn Ihre Anwendung beispielsweise 1000 für die Zeitskala und 75 für lTime angibt, zeichnet der Renderer den Frame 75 Millisekunden in die Sequenz.

Steuern von Zeichnungsparametern

Sie können die Uhr eines Renderers überwachen, indem Sie die ICM _ DRAW _ GETTIME-Nachricht senden (oder das ICDrawGetTime-Makro verwenden), und Sie können die Uhr eines Renderers festlegen, der Daten zeichnen kann, indem Sie die ICM DRAW _ _ SETTIME-Nachricht senden (oder das ICDrawSetTime-Makro verwenden).

Um die aktuelle Position während des Zeichnens eines Renderers zu ändern, kann Ihre Anwendung die ICM _ DRAW _ WINDOW-Nachricht senden (oder das ICDrawWindow-Makro verwenden), um das Fenster neu zu positionieren. Anwendungen verwenden diese Meldung in der Regel, wenn sich das Fenster ändert.

Wenn das Wiedergabefenster eine Meldung zur Umsetzungspalette erhält, muss Ihre Anwendung die ICM _ DRAW _ REALIZE-Nachricht senden (oder das ICDrawRealize-Makro verwenden), damit der Renderer die Palette wieder zur Wiedergabe realisieren kann. Anwendungen können die Palette ändern, indem sie die ICM _ DRAW _ CHANGEPALETTE-Nachricht senden (oder das ICDrawChangePalette-Makro verwenden) und die aktuelle Palette abrufen, indem sie die ICM DRAW GET _ _ _ PALETTE-Nachricht senden.

Einige Renderer müssen ausdrücklich angewiesen werden, an sie übergebene Frames anzuzeigen. Das Senden ICM _ DRAW _ RENDERBUFFER-Nachricht (oder verwenden Sie das ICDrawRenderBuffer-Makro), bewirkt, dass diese Renderer den Frame zeichnen.