64 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Factor
		
	
	
| 
								 | 
							
								! 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 <struct> :> 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
							 | 
						||
| 
								 | 
							
								
							 |