summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Adam <yuv.adm@gmail.com>2011-09-14 12:43:45 +0300
committerYuval Adam <yuv.adm@gmail.com>2011-09-14 12:43:45 +0300
commit256bbdf8b127329252fba5fc3c069af378849d8f (patch)
tree4af711f5560e00f8b2b0bddfb0cadaf694ec3c5b
parent3a0a0a9922d17497ff7e05efb24d189316590bec (diff)
added webcam buffer project
-rw-r--r--webcam_buffer/webcam_buffer.pde58
1 files changed, 58 insertions, 0 deletions
diff --git a/webcam_buffer/webcam_buffer.pde b/webcam_buffer/webcam_buffer.pde
new file mode 100644
index 0000000..83bd0e5
--- /dev/null
+++ b/webcam_buffer/webcam_buffer.pde
@@ -0,0 +1,58 @@
+import processing.video.*;
+
+Capture c;
+VideoBuffer vb;
+
+void setup()
+{
+ size(200, 200);
+ c = new Capture(this, width, height, 30);
+ vb = new VideoBuffer(30, width, height);
+}
+
+void captureEvent(Capture c)
+{
+ c.read();
+ if (vb != null)
+ vb.addFrame(c);
+}
+
+void draw()
+{
+ image(vb.getFrame(), 0, 0);
+}
+
+class VideoBuffer
+{
+ PImage[] b;
+ int s;
+ int w;
+ int h;
+ int cur;
+
+ VideoBuffer(int s, int w, int h)
+ {
+ this.b = new PImage[s];
+ for (int i=0; i<s; i++) {
+ this.b[i] = new PImage(w, h);
+ }
+ this.s = s;
+ this.w = w;
+ this.h = h;
+ }
+
+ void addFrame(PImage f)
+ {
+ System.arraycopy(f.pixels, 0, b[cur].pixels, 0, w * h);
+ b[cur].updatePixels();
+ cur = (cur + 1) % s;
+ }
+
+ PImage getFrame()
+ {
+ int i = int(random(s));
+ //int i = cur - 1;
+ //i = i < 0 ? 0 : i;
+ return b[i];
+ }
+}