! Copyright (C) 2010 Anton Gorenko. ! See http://factorcode.org/license.txt for BSD license. USING: alien.c-types alien.strings fry byte-arrays classes.struct io.encodings.utf8 kernel locals math prettyprint gstreamer.ffi glib.ffi gobject.ffi gtk.ffi ; IN: gir.samples.lowlevel.gstreamer ! CONSTANT: uri "http://www.xiph.org/vorbis/listen/compilation-ogg-q4.ogg" CONSTANT: uri "http://tinyvid.tv/file/3gocxnjott7wr.ogg" :: gstreamer-win ( -- window ) f f gst_init "playbin" "player" [ utf8 string>alien ] bi@ gst_element_factory_make :> pipeline GValue :> value value G_TYPE_STRING g_value_init drop value uri utf8 string>alien g_value_set_string pipeline "uri" utf8 string>alien value g_object_set_property ! pipeline GST_STATE_PLAYING gst_element_set_state drop GTK_WINDOW_TOPLEVEL gtk_window_new :> window window [ "GStreamer" utf8 string>alien gtk_window_set_title ] [ 300 200 gtk_window_set_default_size ] [ GTK_WIN_POS_CENTER gtk_window_set_position ] tri gtk_fixed_new :> frame window frame gtk_container_add "Start" utf8 string>alien gtk_button_new_with_label :> button button 140 30 gtk_widget_set_size_request frame button 80 60 gtk_fixed_put button "clicked" utf8 string>alien [ nip GST_STATE_PLAYING gst_element_set_state drop ] GtkButton:clicked pipeline f 0 g_signal_connect_data drop window "destroy" utf8 string>alien [ nip [ GST_STATE_NULL gst_element_set_state drop ] [ gst_object_unref ] bi ] GtkObject:destroy pipeline f 0 g_signal_connect_data drop window ; :: gstreamer-main ( -- ) f f gtk_init gstreamer-win :> window window "destroy" utf8 string>alien [ 2drop gtk_main_quit ] GtkObject:destroy f f 0 g_signal_connect_data drop window gtk_widget_show_all gtk_main ; MAIN: gstreamer-main