lots of vision stuff from Ben
diff --git a/vision/bmp_stream/bmp.rb b/vision/bmp_stream/bmp.rb
new file mode 100644
index 0000000..122c9de
--- /dev/null
+++ b/vision/bmp_stream/bmp.rb
@@ -0,0 +1,11 @@
+class BMPHeader
+ def initialize(width,height)
+ @width = width
+ @height = height
+ end
+ def text()
+ size = @width * @height * 3
+ return ["BM",size + 54,"\0\0\0\0",54,40,@width,
+ @height,1,24,0,size,2835,2835,0,0].pack("a2Ia4IIIIssIIIIII")
+ end
+end
diff --git a/vision/bmp_stream/bmp_dump.rb b/vision/bmp_stream/bmp_dump.rb
new file mode 100644
index 0000000..6c5133c
--- /dev/null
+++ b/vision/bmp_stream/bmp_dump.rb
@@ -0,0 +1,45 @@
+require "socket"
+
+require "bmp"
+sock = TCPSocket.new(ARGV[0] || "fitpc",8020)
+$width = 640 / 2
+$height = 480 / 2
+$header = BMPHeader.new($width,$height).text()
+
+
+
+require "rubygems"
+require "gtk2"
+
+
+$image = Gtk::Image.new()
+$window = Gtk::Window.new()
+$window.add($image)
+$window.show_all()
+$window.signal_connect("delete-event") { Gtk.main_quit}
+
+loader = Gdk::PixbufLoader.new
+loader.write($header)
+data = sock.read($width * $height * 3)
+loader.last_write(data)
+loader.close
+$image.pixbuf = loader.pixbuf
+$oldtime = Time.now
+i = 0
+Gtk.idle_add do
+ loader = Gdk::PixbufLoader.new
+ loader.write($header)
+ data = sock.read($width * $height * 3)
+# (640 * 480).times do |i| #BGR -> RGB
+# b,g,r = data[i * 3 + 0],data[i * 3 + 1],data[i * 3 + 2]
+# data[i * 3 + 0],data[i * 3 + 1],data[i * 3 + 2] = r,g,b
+# end
+ loader.last_write(data)
+ loader.close
+ new_time = Time.now()
+ puts 1 / (new_time - $oldtime)
+ $oldtime = new_time
+ $image.pixbuf = loader.pixbuf
+end
+
+Gtk.main()
diff --git a/vision/bmp_stream/bmp_stream_from_file.rb b/vision/bmp_stream/bmp_stream_from_file.rb
new file mode 100644
index 0000000..3324484
--- /dev/null
+++ b/vision/bmp_stream/bmp_stream_from_file.rb
@@ -0,0 +1,43 @@
+require "socket"
+$header = File.open("header.bmp") { |f| f.read(54)}
+
+
+sock = File.open("output.bmp_stream")
+#TCPSocket.new(ARGV[0] || "fitpc",8020)
+
+
+
+require "rubygems"
+require "gtk2"
+
+
+$image = Gtk::Image.new()
+$window = Gtk::Window.new()
+$window.add($image)
+$window.show_all()
+$window.signal_connect("delete-event") { Gtk.main_quit}
+
+loader = Gdk::PixbufLoader.new
+loader.write($header)
+data = sock.read(320 * 240 * 3)
+loader.last_write(data)
+loader.close
+$image.pixbuf = loader.pixbuf
+$oldtime = Time.now
+Gtk.timeout_add(1000) do
+ loader = Gdk::PixbufLoader.new
+ loader.write($header)
+ data = sock.read(320 * 240 * 3)
+# (640 * 480).times do |i| #BGR -> RGB
+# b,g,r = data[i * 3 + 0],data[i * 3 + 1],data[i * 3 + 2]
+# data[i * 3 + 0],data[i * 3 + 1],data[i * 3 + 2] = r,g,b
+# end
+ loader.last_write(data)
+ loader.close
+ new_time = Time.now()
+ puts 1.0 / (new_time - $oldtime)
+ $oldtime = new_time
+ $image.pixbuf = loader.pixbuf
+end
+
+Gtk.main()
diff --git a/vision/bmp_stream/bmp_stream_to_file.rb b/vision/bmp_stream/bmp_stream_to_file.rb
new file mode 100644
index 0000000..962bb2d
--- /dev/null
+++ b/vision/bmp_stream/bmp_stream_to_file.rb
@@ -0,0 +1,20 @@
+require "socket"
+$header = File.open("header.bmp") { |f| f.read(54)}
+
+
+sock = TCPSocket.new(ARGV[0] || "fitpc",8020)
+
+
+
+require "rubygems"
+require "gtk2"
+
+
+
+File.open("output.bmp_stream","w+") do |file|
+ 400.times do |i|
+ data = sock.read(320 * 240 * 3)
+ file.print(data)
+ puts "frame: #{i}"
+ end
+end