Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
b5bcc69
fix to compile on OF9.0, force using yuv for cameras for better perf,…
jamet Dec 17, 2014
5ad311b
add VideoSampler files
jamet Mar 8, 2015
be0e442
update cb project
jamet Mar 8, 2015
9f618f8
add ofxPlaymodes addon
jamet Mar 8, 2015
1286926
add sampler -> compile error
jamet Mar 12, 2015
d5904d5
fix compile error, got segfault
jamet Mar 13, 2015
d1505ee
fix compile error, problems with drawing playmodes cam
jamet Mar 15, 2015
3c244ae
fix cam blinking by disabling draw call with brickwall shaders
jamet Mar 15, 2015
89314ec
fix segfault, clean code
jamet Mar 15, 2015
1068146
change vector<bool> to array<bool> buffers to get reference
jamet Mar 15, 2015
03d4fb7
fix bug in sampler gui
jamet Mar 15, 2015
22ef1fd
clean code, debugging sampler
jamet Mar 15, 2015
a0a8355
add a call to update sampler, create a segfault
jamet Mar 15, 2015
e8fdf93
fix segfault by disabling grabber refres in VS
jamet Mar 15, 2015
1414832
fix sampler, got a blinking image on cam and sampler sometimes
jamet Mar 17, 2015
055583a
fix blinking by changing to RGB pixelformat
jamet Mar 20, 2015
f8729b3
fix gui buffernum selection in quad
jamet Mar 20, 2015
c2eeece
Merge pull request #2 from jamet/debug_sampler
jamet Mar 20, 2015
75a31bf
add osc messages for controlling sampler display in quad
jamet Mar 22, 2015
bb876f1
add osc messages to control sampler record play etc
jamet Mar 22, 2015
02fdb55
Merge pull request #3 from jamet/debug_sampler
jamet Mar 25, 2015
7a09483
fix cam blinking with YUV pixel format by enabling texture
jamet Mar 29, 2015
89e88ac
remove setopenGLVersion
jamet Mar 30, 2015
31a90fe
add xml check for cam pixel format
jamet Mar 31, 2015
1fccf00
init cam pixel format from xml
jamet Mar 31, 2015
c5ad5b0
clean a bit of code
jamet Mar 31, 2015
8df7c52
first commit, replacing ofxPlaymodes with ofxVideoBuffer
jamet Apr 5, 2015
0b22537
works but display isnt at the good framerate
jamet Apr 5, 2015
9e17a30
clean code
jamet Apr 5, 2015
20cc8f2
setframerate to 30
jamet Apr 5, 2015
30ac60a
set app framerate back to 60, update buffers every two frames to fix …
jamet Apr 6, 2015
f0525d6
clean videosampler code
jamet Apr 7, 2015
a7986be
fix pause in sampler
jamet Apr 7, 2015
d3286e0
add parsedesiredImageType to setup sampler imagetype
jamet Apr 7, 2015
41beb8f
clean code
jamet Apr 10, 2015
621d531
added VideoSampler clearBuffer method
jamet Apr 16, 2015
bb8ef86
Merge pull request #4 from jamet/recode_sampler
jamet Apr 30, 2015
16011c4
add sampler settings in xml save and load
jamet Apr 30, 2015
9ae3dbe
add sampler_on/off sampler_num and sampler_buffernum trigger
jamet Apr 30, 2015
cf4d556
Merge pull request #5 from jamet/recode_sampler
jamet Apr 30, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions addons.make
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
ofxXmlSettings
ofxVideoBuffer
ofxNetwork
ofxMostPixelsEver
ofxMSAInteractiveObject
Expand Down
1 change: 1 addition & 0 deletions bin/data/config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<WIDTH>640</WIDTH>
<HEIGHT>480</HEIGHT>
<ID>0</ID>
<PIXEL_FORMAT>RGB</PIXEL_FORMAT>
</CAMERA>
</CAMERAS>

Expand Down
6 changes: 6 additions & 0 deletions lpmtX.cbp
Original file line number Diff line number Diff line change
Expand Up @@ -1129,6 +1129,12 @@
<Unit filename="config.make">
<Option virtualFolder="build config" />
</Unit>
<Unit filename="src/VideoSampler.cpp">
<Option virtualFolder="src/" />
</Unit>
<Unit filename="src/VideoSampler.h">
<Option virtualFolder="src/" />
</Unit>
<Unit filename="src/appUtils.cpp">
<Option virtualFolder="src/" />
</Unit>
Expand Down
192 changes: 192 additions & 0 deletions src/VideoSampler.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
#include "VideoSampler.h"

VideoSampler::VideoSampler(){
bufferSize=512;
playStart=0;
playEnd=1.0;
bPauseBuffer=false;
fps=30;
}

VideoSampler::~VideoSampler(){

}


void VideoSampler::setup(){
bufferSize=512;
playStart=0;
playEnd=1.0;
bPauseBuffer=false;
fps=30;

//setup grabber
vGrabber->initGrabber(640,480);
vGrabber->setVerbose(true);

for (int i=0;i<NumBuffer; i++){

buffers.push_back(new ofxVideoBuffers());
bPlayBuffer[i]=false;

}
}
//setup internal grabber
void VideoSampler::setup(int _grabberID, int _grabberHeight, int _grabberWidth, ofPixelFormat _grabberPixelFormat){
bufferSize=512;
playStart=0;
playEnd=1.0;
bPauseBuffer=false;
fps=30;
GrabberDeviceID= _grabberID;

//setup grabber
vGrabber->setPixelFormat(_grabberPixelFormat);
vGrabber->setDeviceID(GrabberDeviceID);
vGrabber->initGrabber(_grabberHeight, _grabberWidth);
vGrabber->setVerbose(true);

for (int i=0;i<NumBuffer; i++){

buffers.push_back(new ofxVideoBuffers());
bPlayBuffer[i]=false;

}


}

//setup external grabber
void VideoSampler::setup(ofVideoGrabber & _VideoGrabber, ofPixelFormat _grabberPixelFormat){

bufferSize=512;
playStart=0;
playEnd=1.0;
bPauseBuffer=false;
fps=30;

//setup Buffer
vGrabber= &_VideoGrabber;
for (int i=0;i<NumBuffer; i++){

buffers.push_back(new ofxVideoBuffers());
bPlayBuffer[i]=false;

}


}

void VideoSampler::setup(ofVideoGrabber & _VideoGrabber, ofImageType _samplerPixType){

bufferSize=512;
playStart=0;
playEnd=1.0;
bPauseBuffer=false;
fps=30;

//setup Buffer
vGrabber= &_VideoGrabber;
pix_type= _samplerPixType;

for (int i=0;i<NumBuffer; i++){

buffers.push_back(new ofxVideoBuffers());
bPlayBuffer[i]=false;

}

}


//draw function with both grabbers and buffers

void VideoSampler::draw(){

ofSetColor(255,255,255);

}

void VideoSampler::drawCurrentBuffer(int _x, int _y, int _height, int _width){

if (buffers.size() != 0){
buffers[currentBufferNum]->draw(_x , _y, _height, _width);
}
}

void VideoSampler::drawBuffer(int _x, int _y, int _height, int _width, int _BufferNum){

if (buffers.size() != 0){
buffers[_BufferNum]->draw(_x , _y, _height, _width);
}
else cout<<"vs drawbuffer null"<<endl;

}

void VideoSampler::update(){

vGrabber->update();
if (bRecLiveInput){

//increment recordPosition
if (recordPosition<NUM_FRAMES){
buffers[currentBufferNum]->getNewImage(vGrabber->getPixelsRef(),pix_type);
}else {

bRecLiveInput=false;
bPlayAnyBuffer=true;
bPlayBuffer[currentBufferNum]=true;
recordPosition=0;

}

}
else{

//buffers[currentBufferNum]->stop();
}
if (bPlayAnyBuffer ){

for (int i = 0; i < buffers.size(); i++)
{
if (buffers[i]->isFinished())
{
buffers[i]->reset();
}
if (bPlayBuffer[i])
{
buffers[i]->start();
// we grab frames at 30fps, app is running at 60,
//so update buffers only once every two frames
if ((ofGetFrameNum() % 2 == 0)&& !bPauseBuffer)
{
buffers[i]->update();
}
}else{
buffers[i]->stop();
}
}
}else{
for (int i = 0; i < buffers.size(); i++)
{
buffers[i]->stop();
}
}

}

float VideoSampler::getRecordPostion(){
return recordPosition;
}

int VideoSampler::getGrabberDeviceID (){
return GrabberDeviceID;
}

void VideoSampler::clearBuffer(){
buffers[currentBufferNum]->clear();
}

void VideoSampler::clearBuffer(int bufferNum){
buffers[bufferNum]->clear();
}
61 changes: 61 additions & 0 deletions src/VideoSampler.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#pragma once

#include "ofMain.h"
#include "ofxVideoBuffers.h"

#define NUM_FRAMES 300
#define NUM_BUFFER 4


class VideoSampler{

public:
VideoSampler();
virtual ~VideoSampler();
void setup();
void setup(int _grabberID, int _grabberHeight, int _grabberWidth, ofPixelFormat _grabberPixelFormat);
void setup(ofVideoGrabber &_vGrabber, ofPixelFormat _grabberPixelFormat);
void setup(ofVideoGrabber & _VideoGrabber, ofImageType _samplerPixType);

void update();
void draw();


float getRecordPostion();
void drawCurrentBuffer(int _x, int _y, int _height, int _width);
void drawBuffer(int _x, int _y, int _height, int _width, int _BufferNum);
void clearBuffer();
void clearBuffer(int bufferNum);


// Grabber
ofVideoGrabber * vGrabber;
int GrabberDeviceID;
int getGrabberDeviceID ();

// Buffers
vector<ofxVideoBuffers *> buffers;
int NumBuffer=4;
int currentBufferNum=0;

// Buffers pixel type
ofImageType pix_type;

//Recording
bool bSetPosition;
bool bRecLiveInput;
int recordPosition;

//Playing
array <bool, NUM_BUFFER> bPlayBuffer ;// (NUM_BUFFER);
bool bPlayAnyBuffer; //increment playhead regerdless of current buffer
bool bPauseBuffer;
float playStart;
float playEnd;
int bufferSize;
int sampleRate;
int fps;
float speed;


};
30 changes: 30 additions & 0 deletions src/appUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -350,3 +350,33 @@ void testApp::copyQuadSettings(int sourceQuad)
}
}
}

ofPixelFormat testApp::parseDesiredPixelFormat(string stringFromXML)
{
ofPixelFormat format = OF_PIXELS_RGB;
if (stringFromXML == "I420"){
format = OF_PIXELS_I420;
}else if (stringFromXML == "MONO"){
format = OF_PIXELS_MONO;
}

return format;
}

ofImageType testApp::parseDesiredImageType(string stringFromXML)
{
ofImageType format = OF_IMAGE_COLOR;
if (stringFromXML == "I420"){
format = OF_IMAGE_GRAYSCALE;
}else if (stringFromXML == "MONO"){
format = OF_IMAGE_GRAYSCALE;
}

return format;
}






2 changes: 2 additions & 0 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ int main( )
{

ofAppGlutWindow window;
//ofSetCurrentRenderer(ofGLProgrammableRenderer::TYPE);
//ofSetOpenGLVersion(1,4);
ofSetupOpenGL(&window, 1024, 768, OF_FULLSCREEN); // <-------- setup the GL context
ofSetWindowPosition(1400,150);

Expand Down
Loading