AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DirectX IVideoWindow Refresh
Thema durchsuchen
Ansicht
Themen-Optionen

DirectX IVideoWindow Refresh

Ein Thema von Garfield · begonnen am 19. Nov 2009 · letzter Beitrag vom 22. Nov 2009
Antwort Antwort
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#1

DirectX IVideoWindow Refresh

  Alt 19. Nov 2009, 10:36
Hallo,

ich gebe über DirectX ein Video wieder. Über eine TScrollbar kann die Position im Video verändert werden. In einer TListBox sind verschiedene Positionen (Kapitel) eingetragen. Durch einen Klick auf einen Eintrag wird bei angehaltenem Video die Position der TScrollBar verändert.

Mein Problem ist nun, das die Anzeige im IVideoWindow nur regelmäßig aktualisiert wird, wenn die Position der TScrollBar mit der Maus oder den Cursortasten verändert wird. Beim Klick auf die Einträge in der TListBox wird mal aktualisiert und mal nicht. Wenn das Formular verschoben wird, wird an dem DirectX-Player ein NotifyOwnerMessage geschickt und das Bild aktualisiert.

Was ist der Unterschied, wenn die Position der TScrollBar per Maus/Cursortasten oder per Befehl geändert wird? Gibt es eine Möglichkeit ein Neuzeichnen zu erzwingen? Der Befehl Pause führt in diesem Fall leider nicht zum Erfolg.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#2

Re: DirectX IVideoWindow Refresh

  Alt 22. Nov 2009, 11:11
Der Versuch, IWindowlessControl anstelle IBasicVideo2 zu versuchen, hat nicht funktioniert.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#3

Re: DirectX IVideoWindow Refresh

  Alt 22. Nov 2009, 15:06
Urspünglich hatte ich versucht, die Aktualisierung mit einem IMediaControl.Pause direkt nach dem IMediaSeeking.SetPosition() erreichen. Das hatte ich so auch in Beispielen so gesehen. Und bei der TSrcollBar ging es sogar ohne. Das Ergebnis steht oben im ersten Beitrag. Nach langem Suchen habe ich in der MSDN bei IMediaSeeking::SetPosition folgendes gefunden und fast überlesen:

Zitat:
If the filter graph is stopped, the video renderer does not update the image after a seek operation. To the user, it will appear as if the seek did not happen. To update the image, pause the graph after the seek operation. Pausing the graph cues a new video frame for the video renderer. You can use the IMediaControl::StopWhenReady method, which pauses the graph and then stops it.
IMediaControl.StopWhenReady anstelle von IMediaControl.Pause und es funktioniert.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz