AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XINE unter FPC

Ein Thema von mimi · begonnen am 10. Mär 2008 · letzter Beitrag vom 25. Mär 2008
 
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

XINE unter FPC

  Alt 10. Mär 2008, 12:02
Hallo,
ich kann inzwischen unter Lazarus auf die XINE Lib zugreifen. Aber leider nur mit Audio Dateien, auf Filme geht noch nicht. Ich glaube es liegt daran das ich keine passende TXID habe.

Hier ist mein Angepasster Soruce:
Delphi-Quellcode:
procedure TxineVideoPlugin.Initialize(Xine: Pxine_t; UsrDta: Pointer );
var
    xid: TWindow;
    GdkWindow: PGdkWindow;
    CurXWindow: TWindow;
    Widget: PGtkWidget;
    ColorMap: TColormap;
    WinAttr: TXSetWindowAttributes;
    XVInfo: PXVisualInfo;
begin
     if (myWidget <> NIL) then begin
         xid:=THANDLE(myWidget.Handle);
         writeln(PGtkWidget(xid)^.name);
// gtk_widget_show(PGtkWidget(myWidget.handle));
     end
     else begin
       xid := XCreateSimpleWindow (Display,
                XDefaultRootWindow(Display),
               defaultXpos, defaultYpos,
               defaultWidth, defaultHeight,
               0, clBlack, clBlack);
       XMapWindow(Display, xid);
     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;
//vidNames[ord(myVideoDriver)]
// XMapRaised(display, xid);
  // XSync(display, False);

     vo_driver := xine_open_video_driver(Xine,'xv',
       XINE_VISUAL_TYPE_X11, @xvt);

// vo_driver := xine_open_video_driver(Xine,'xv',
  // XINE_VISUAL_TYPE_X11, @xvt);
// xine_se

// xine_framegrab_video_port(xine)
end;
und hier der Orignal aus dem Kylix Projekt:
Delphi-Quellcode:
procedure TxineVideoPlugin.Initialize(Xine: Pxine_t; UsrDta: Pointer );
var
     xid: Window;
begin
     if (myWidget <> NIL) then
     begin
          xid := QWidget_winID(myWidget.Handle);
     end
     else
     begin
          xid := XCreateSimpleWindow (Display,
               XDefaultRootWindow(Display),
               defaultXpos, defaultYpos,
               defaultWidth, defaultHeight,
               0, clBlack, clBlack);
          XMapWindow(Display, xid);
     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,vidNames[ord(myVideoDriver)],
       XINE_VISUAL_TYPE_X11, Pointer(@xvt));

end;
Es kommt die Fehler Meldung BadWindwo.

Wenn ich ein Fenster mit XCreateSimpleWindow erzeuge sehe ich ein Video. Aber ich möchte das Video in ein
Panel anzeigen.
myWidge ist von Typ TWinControl

Ich habe die gleiche Frage vor einiger Zeit hier gestellt:
http://www.lazarusforum.de/viewtopic...459&highlight=

Ich hoffe das ihr mir weiter helfen könnt.

Leider gibt es die XINE LIB nur für Linux, aber es wird an einer Passenden Windows Version gearbeitet.

Ich habe ein test Projekt im Lazarus Forum hochgeladen, wenn ihn jemand von euch auch haben möchte lade ich ihn nochmal hier hoch....

Ich habe mir schon einige Linux Player im Soruce Angeschaut die Videos anzeigen können, aber leider brachte das auch nicht viel

Ich habe gesehen das TWindow und TXID das gleiche sind....
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
 


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 23:14 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