From 49759e817756824ce9cdf1fa183fdd65fbb7816a Mon Sep 17 00:00:00 2001 From: Stefan Sauer Date: Sun, 17 Oct 2010 23:52:37 +0300 Subject: [PATCH] mi: init gst --- mediainfo/src/mi-app.vala | 1 + mediainfo/src/mi-info.vala | 37 ++++++++++++++++++++++++++++++++++++- mediainfo/src/mi.vala | 1 + 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/mediainfo/src/mi-app.vala b/mediainfo/src/mi-app.vala index 92a0f7fe82..594bbb04f1 100644 --- a/mediainfo/src/mi-app.vala +++ b/mediainfo/src/mi-app.vala @@ -25,6 +25,7 @@ public class MediaInfo.App : Window private FileChooserWidget chooser; private Info info; + public App() { // configure the window diff --git a/mediainfo/src/mi-info.vala b/mediainfo/src/mi-info.vala index 1ac0660b3b..0cf96cb965 100644 --- a/mediainfo/src/mi-info.vala +++ b/mediainfo/src/mi-info.vala @@ -24,6 +24,8 @@ public class MediaInfo.Info : VBox { private Label uri; //private Discoverer dc; + private DrawingArea drawing_area; + private Pipeline pb; public Info () { @@ -31,6 +33,10 @@ public class MediaInfo.Info : VBox set_homogeneous (false); // add widgets + drawing_area = new DrawingArea (); + drawing_area.set_size_request (300, 150); + pack_start (drawing_area, true, true, 0); + uri = new Label (""); pack_start (uri, false, false, 0); @@ -38,14 +44,43 @@ public class MediaInfo.Info : VBox // set up the gstreamer components //dc = new Discoverer (Gst.SECONDS * 10, null); + + pb = ElementFactory.make ("playbin2", "player") as Pipeline; + // FIXME: need bus callback for: + // xoverlay.set_xwindow_id (Gdk.x11_drawable_get_xid (this.drawing_area.window)); + Gst.Bus bus = pb.get_bus (); + bus.add_signal_watch (); + bus.message["element"].connect (on_element_message); + } + // public methods + public bool discover (string uri) { + // TODO: stop previous playback (also need destoructor) + this.uri.set_text (uri); - + //DiscovererInfo info = dc.discover_uri (uri, null); + + // TODO: play file + //pb.uri = uri; + //pb.set_state (State.PLAYING); + return (true); } + + // signal handlers + + private void on_element_message (Gst.Bus bus, Message message) + { + Structure structure = message.get_structure (); + if (structure.has_name ("prepare-xwindow-id")) + { + //XOverlay xoverlay = message.src as XOverlay; + //xoverlay.set_xwindow_id (Gdk.x11_drawable_get_xid (this.drawing_area.window)); + } + } } \ No newline at end of file diff --git a/mediainfo/src/mi.vala b/mediainfo/src/mi.vala index ecb850d603..54a4a12060 100644 --- a/mediainfo/src/mi.vala +++ b/mediainfo/src/mi.vala @@ -27,6 +27,7 @@ main(string[] args) Intl.textdomain (Config.GETTEXT_PACKAGE); Gtk.init (ref args); + Gst.init (ref args); App app = new App (); app.show_all ();