]> gitweb.factorcode.org Git - factor.git/blob - unmaintained/gir/samples/lowlevel/gstreamer/gstreamer.factor
7508386e2c91f332420ed1bed8914be05446d5d1
[factor.git] / unmaintained / gir / samples / lowlevel / gstreamer / gstreamer.factor
1 ! Copyright (C) 2010 Anton Gorenko.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.strings fry byte-arrays classes.struct
4 io.encodings.utf8 kernel locals math prettyprint 
5 gstreamer.ffi glib.ffi gobject.ffi gtk.ffi ;
6 IN: gir.samples.lowlevel.gstreamer
7
8 ! CONSTANT: uri "http://www.xiph.org/vorbis/listen/compilation-ogg-q4.ogg"
9 CONSTANT: uri "http://tinyvid.tv/file/3gocxnjott7wr.ogg"
10
11 :: gstreamer-win ( -- window )
12     f f gst_init
13     "playbin" "player" [ utf8 string>alien ] bi@ gst_element_factory_make :> pipeline
14
15     GValue <struct> :> value
16     value G_TYPE_STRING g_value_init drop
17     value uri utf8 string>alien g_value_set_string
18     
19     pipeline "uri" utf8 string>alien value g_object_set_property
20         
21     ! pipeline GST_STATE_PLAYING gst_element_set_state drop
22
23     GTK_WINDOW_TOPLEVEL gtk_window_new :> window
24
25     window
26     [ "GStreamer" utf8 string>alien gtk_window_set_title ]
27     [ 300 200 gtk_window_set_default_size ]
28     [ GTK_WIN_POS_CENTER gtk_window_set_position ] tri
29
30     gtk_fixed_new :> frame
31     window frame gtk_container_add
32     
33     "Start" utf8 string>alien gtk_button_new_with_label :> button
34     button 140 30 gtk_widget_set_size_request
35     frame button 80 60 gtk_fixed_put
36
37     button "clicked" utf8 string>alien
38     [ nip GST_STATE_PLAYING gst_element_set_state drop ] GtkButton:clicked
39     pipeline f 0 g_signal_connect_data drop
40
41     window "destroy" utf8 string>alien
42     [ 
43         nip [ GST_STATE_NULL gst_element_set_state drop ]
44         [ gst_object_unref ] bi
45     ] GtkObject:destroy
46     pipeline f 0 g_signal_connect_data drop
47     
48     window ;
49
50 :: gstreamer-main ( -- )
51     f f gtk_init
52     gstreamer-win :> window
53
54     window "destroy" utf8 string>alien
55     [ 2drop gtk_main_quit ] GtkObject:destroy
56     f f 0 g_signal_connect_data drop
57
58     window gtk_widget_show_all
59     
60     gtk_main ;
61
62 MAIN: gstreamer-main
63