Monday, 21 January 2013

Finalize Code (script for screen 2 _delay capture)

 import processing.video.*; 
Capture maCam;
VideoBuffer monBuff;

int display_xsize = 1600; // display size

int display_ysize = 900;
int capture_xsize = 800; // capture size
int capture_ysize = 450;

int delay_time = 5; // delay in seconds
int capture_frames = 30; // capture frames per second

void setup() {
size(display_xsize,display_ysize, P3D);
// Warning: VideoBuffer must be initiated BEFORE capture- or movie-events start
monBuff = new VideoBuffer(delay_time*capture_frames, capture_xsize,capture_ysize);
maCam = new Capture(this, capture_xsize, capture_ysize, capture_frames);
}

void captureEvent(Capture maCam) {
maCam.read();
monBuff.addFrame( maCam ); 


void draw() {
PImage bufimg = monBuff.getFrame(); 
PImage tmpimg = createImage(bufimg.width,bufimg.height,RGB);
tmpimg.copy(bufimg,0,0,bufimg.width,bufimg.height,0,0,bufimg.width,bufimg.height);
tmpimg.resize(display_xsize,display_ysize);
image( tmpimg, 0, 0 );


class VideoBuffer
{
PImage[] buffer;

int inputFrame = 0;
int outputFrame = 0;
int frameWidth = 0;
int frameHeight = 0;

/*
parameters:

frames - the number of frames in the buffer (fps * duration)
width - the width of the video
height - the height of the video
*/
VideoBuffer( int frames, int width, int height )
{
buffer = new PImage[frames];
for(int i = 0; i < frames; i++)
{
this.buffer[i] = new PImage(width, height);
}
this.inputFrame = frames - 1;
this.outputFrame = 0;
this.frameWidth = width;
this.frameHeight = height;
}

// return the current "playback" frame. 
PImage getFrame()
{
int frr;

if(this.outputFrame>=this.buffer.length)
frr = 0;
else
frr = this.outputFrame;
return this.buffer[frr];


// Add a new frame to the buffer.
void addFrame( PImage frame )
{
// copy the new frame into the buffer.
System.arraycopy(frame.pixels, 0, this.buffer[this.inputFrame].pixels, 0, this.frameWidth * this.frameHeight);

// advance the input and output indexes
this.inputFrame++;
this.outputFrame++;

// wrap the values.. 
if(this.inputFrame >= this.buffer.length)
{
this.inputFrame = 0;
}
if(this.outputFrame >= this.buffer.length)
{
this.outputFrame = 0;
}

}

No comments:

Post a Comment