XINE mit FPC ?

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich habe herausgefunden das es bei mir darum geht eine gültige TXID zu bekommen.

Ich habe in dievern Playern für Linux aufjedenfall hinweise drauf gefunden. Der Totem Player z.b. macht das so:
vis.d = GDK_WINDOW_XID (GTK_WIDGET(bvw)->window);

Aber das macht jeder Player wieder um anders.
Eine suche ergab bei mir ich habe leider kein GDK_WINDOW_XID :(

Also wie bekomme ich von einem Panel eine gültige XID ?
MFG
Michael Springwald

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Beitrag von Targion »

Ich habe mal danach im englischen Lazarus-Forum gesucht.
Versuch's mal so:

Code: Alles auswählen

fWindow := GDK_WINDOW_XWINDOW (Pointer((drawing_area)^.window));
oder so

Code: Alles auswählen

fWindow := GDK_WINDOW_XWINDOW (Pointer(PGtkWidget(GtkForm.Handle)^.window));
(fWindow ist vom Typ Integer)
So kann man die XID eines Fensters bekommen, probier mal, was passiert, wenn du anstelle des GTKWindow das Panel übergibst.
(Ich habe das nicht getestet und alle Informationen stammen aus einer kleinen Randbemerkung auf einer Lazarus-Seite... Keine Ahnung, ob das so funktionieren kann)

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Bei der zweiten Lösung bekomme ich immer eine Fehler Meldung von GTK Das die Fenster Parameter nicht Stimmen würden.

Code: Alles auswählen

xid:=GDK_WINDOW_XWINDOW(Pointer(PGtkWidget(myWidget)^.window));
nutze ich das handle von mywidget gibt es in der Zeile eine AV.

bei der ersten Lösung bekomme ich eine Fehler Meldung vom Kompiler

Code: Alles auswählen

xid:=GDK_WINDOW_XWINDOW (Pointer((myWidget)^.window));
  /home/pluto/daten/eigene/lazarus/xine/xinepascal/test1/xineVideoPlugin.pas(132,54) Error: Illegal qualifier
Trotzdem Danke für dein Versuch. Aber ich glaube sowas hat Theo schon vorgeschlagen.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe hier eine Anleitung für Audio gefunden. für XINE:
http://linoleum.leapster.org/archives/4 ... art-1.html" onclick="window.open(this.href);return false;
Audio geht zwar aber ich bin mir sicher dort müsste auch irgendwo was mit video stehen...

Bisher habe ich jedoch noch nix gefunden.
(Ich nutze als such Maschine jetzt http://www.fireball.de" onclick="window.open(this.href);return false;)
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

evlt. hilf ich ja jemanden mit diesen Link weiter:
http://www.tronche.com/gui/x/xlib/" onclick="window.open(this.href);return false;

das ist eine Englische Dokumentation über XLIB. Ich hatte gehofft das es was bringen würde, aber leider war es falsch.

Bisher habe ich noch keine Lösung gefunden ein Video in ein Panel anzuzeigen.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Kannst ja auch halbstündlich darüber berichten das du noch keine Lösung gefunden hast
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich habe eigentlich eine andere Antwort erwartet. Aber lassen wirs. Das bringt ja doch nix.
MFG
Michael Springwald

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

http://www.geocities.com/mazen_neifer/GTK_help.html" onclick="window.open(this.href);return false;

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Das Problem besteht immer noch.

Der Link war leider nicht sehr hilfreich. Weil dort nix mit TXID oder TWindow drin vorkommt.
(oder habe ich was übersehen?)
Ist aber trotzdem Interessant !
MFG
Michael Springwald

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

http://readlist.com/lists/lists.freepas ... /5681.html" onclick="window.open(this.href);return false;

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Auf diese art und weise geht es anscheind:

Code: Alles auswählen

procedure TxineVideoPlugin.Initialize(Xine: Pxine_t; UsrDta: Pointer );
var
    xid: TWindow;
    GdkWindow: PGdkWindow;
    CurXWindow: TWindow;
    Widget: PGtkWidget;
    ColorMap: TColormap;
    WinAttr: TXSetWindowAttributes;
    XVInfo: PXVisualInfo;
    p:PXSetWindowAttributes;
    p1:PXWindowAttributes;
    fhandle: hwnd;
    priv: PGdkWindowPrivate;
    xwin: TWindow;
    xdisp: PDisplay;
    fGtkWidget: PGtkWidget;
begin
 
     if (myWidget <> NIL) then begin
       xid:=GDK_WINDOW_XWINDOW(PGdkWindowPrivate(GTK_WIDGET(myWidget.Handle)^.window ) );
       XMapWindow(Display, xid);
     end
     else begin
       xid := XCreateSimpleWindow (Display,
 			      XDefaultRootWindow(Display),
			      defaultXpos, defaultYpos,
			      defaultWidth, defaultHeight,
			      0, clBlack, clBlack);
       XMapWindow(Display, xid);
//     end;
 
     end;
 
     UserData := TxineUserData(UsrDta^);
 
     if (XShmQueryExtension (Display) = 1) then
     begin
          UserData.shmEventId := XShmGetEventBase (Display) + ShmCompletion;
     end
     else
     begin
          UserData.shmEventId := -1;
     end;
 
     XSelectInput(Display,xid,
          ExposureMask or StructureNotifyMask);
 
     // Select Video Plugin
     xvt.display := Display;
     xvt.screen := Screen;
     xvt.d := xid;
     ResH := XDisplayWidth(Display,Screen)*1000
            / XDisplayWidthMM(Display,Screen);
     ResV := XDisplayHeight(Display,Screen)*1000
           / XDisplayHeightMM(Display,Screen);
     DisplayRatio := ResV/ResH;
        DisplayRatio := 1.0;
     if ((Abs(DisplayRatio)-1.0) < 0.01) then
     begin
        DisplayRatio := 1.0;
     end;
     xvt.dest_size_cb := @DestSizeCB;
     xvt.frame_output_cb := @FrameOutputCB;
 
     // Add to user_data record
     UserData.resizeFactor := 1.0;
     UserData.displayRatio := DisplayRatio;
     UserData.Display := Display;
 
     xvt.user_data := @UserData;
 
     vo_driver := xine_open_video_driver(Xine,'auto',
       XINE_VISUAL_TYPE_X11, Pointer(@xvt));
       myWidget.Visible:=False;
 
end;
in From1 muss jetzt nur noch Panel1.Canvas.AutoRedraw:=True;
gemacht werden
und aus irgendeinen Grund muss noch ein Panel auf ein panel gelegt werden und dann muss das ganze mit Panel2 verbunden werden.
Sonst nimmt er das From als Ausgabe.

Also er nimmt den Parent vom Panel.

Aber so wie es jetzt aussieht geht es.
Ganz gut. Ich werde es noch weiter austesten. Und wenn es wirklich geht, werde ich es auch zu Verfügung stellen.

Erstmal vielen Dank für eure Mithilfe.

Ich habe mir überlegt die TMediaPlayer Komponente nach zu schreiben für Linux.
Allerdings gibt es auch ein paar Nachteile. Erstens XINE läuft im Moment nur unter Linux.
Aber auch das soll sich bald ändern.

Und XINE sollte Installiert sein. Aber da ich das mit XINE hinbekommen habe, könnte ich es auch nochmal mit anderen LIBS versuchen. z.b. GStreamer.

Aber ich finde es toll. Wenn ich jetzt noch diesen Seltsamen Fehler weg bekomme bin ich glücklich *G* Aber schon jetzt bin ich zufrieden *G*.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Es geht zwar schon recht gut, aber leider kommt es zwischendurch noch zu abstützte. Das System hängt sich dann komplett auf nix geht mehr. Ich kann nicht mal zu einer anderen Console weselen.

Denn Grund möchte ich noch herausfinden. Dann lade ich das hoch was ich bisher habe.

Ich finde XINE es eine sehr gute Media Lib unter Linux. Die es ja auch bald für Windows geben soll.

Ich finde XINE stellt alles in den Schatten was ich kannte. Z.B. Fmod, bass und so.

Wie jetzt GStreamer im Vergleich zu XIne abscheidet weiß ich nicht. Oder ob es noch besser Media Libs gibt. Als XINE.

Vor allem finde ich die Audio Funktionen toll. Das XINE laut Entwickler alle Audio Dateien abspielen kann bei den Videos sind es einige.
Es soll ja auch DVD und sowas abspielen können.

Auch Kopier geschützte, allerdings ist dies nicht so leicht hinzubekommen.
befasst habe ich mich damit aber nicht.

Kann der Delphi Media Player eigentlich auch DVD abspielen ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Es ist schon recht leicht hinzubekommen nur schlecht dokumentiert da es illegal ist.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ach so du meinst das mit den DVD oder wie ?
ja. Ich nutzte es sowieso nicht. Ich habe ja ein DVD Player neben mein Rechner stehen.

Also ich habe herrausgefunden das es nicht an der Mpeg Datei liegt sondern an der anzahl.
Ich öffen 4 Mpeg Datei nach einander.
bei der 5 hängt sich das System auf, wenn ich glück habe kann ich noch zu einer Console wesheln und mein Programm mit KILL abschießen.

Aber ich weiß nicht warum sich das Programm aufhängt habe alles versucht.

Die Datei wurde vorher gestoppt, pausiert alles mögliche aber es hängt sich trozdem auf.

Ich nehme an das die XID jetzt richtig ist da keine Fehler Meldung kommt.

Loggt XINE evlt. die Play aufrufe ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich denke du gibst irgendwas nicht wieder frei.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten