Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ofxiOSVideoGrabber made compatible with new API #3350

Merged
merged 1 commit into from
Oct 23, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
85 changes: 53 additions & 32 deletions addons/ofxiOS/src/video/ofxiOSVideoGrabber.h
Original file line number Diff line number Diff line change
@@ -1,53 +1,74 @@
#ifndef _OF_IOS_VIDEO_GRABBER
#define _OF_IOS_VIDEO_GRABBER


#pragma once

class AVFoundationVideoGrabber;

#include "ofVideoGrabber.h"

class ofxiOSVideoGrabber : public ofBaseVideoGrabber {

public :
public:

ofxiOSVideoGrabber();
~ofxiOSVideoGrabber();

//needs implementing
vector <ofVideoDevice> listDevices() const;
void getDeviceList() const {};
bool initGrabber(int w, int h);
bool isInitialized() const;

bool setPixelFormat(ofPixelFormat pixelFormat);
ofPixelFormat getPixelFormat() const;
//---------------------------------------
// inherited from ofBaseVideoGrabber
//---------------------------------------

vector<ofVideoDevice> listDevices() const;
bool setup(int w, int h);

bool isFrameNew() const;

unsigned char * getPixels();
ofPixels& getPixelsRef();
const ofPixels& getPixelsRef() const;

void close();

float getHeight() const;
float getWidth() const;


ofTexture * getTexturePtr();

void setVerbose(bool bTalkToMe);
void setDeviceID(int deviceID);
void setDesiredFrameRate(int framerate);
void videoSettings();

//---------------------------------------
// inherited from ofBaseVideo
//---------------------------------------

bool isFrameNew() const;
void close();
bool isInitialized() const;

bool setPixelFormat(ofPixelFormat pixelFormat);
ofPixelFormat getPixelFormat() const;

//---------------------------------------
// inherited from ofBaseHasPixels
//---------------------------------------

ofPixels & getPixels();
const ofPixels & getPixels() const;

//---------------------------------------
// inherited from ofBaseUpdates
//---------------------------------------

void update();
void setDeviceID(int _deviceID);
void setDesiredFrameRate(int framerate);
//should implement!
/*void setVerbose(bool bTalkToMe);
void videoSettings();*/
//---------------------------------------
// deprecated.
//---------------------------------------
OF_DEPRECATED_MSG("ofxiOSVideoGrabber::initGrabber(int w, int h) is deprecated, use setup(int w, int h) instead.", bool initGrabber(int w, int h));
OF_DEPRECATED_MSG("ofxiOSVideoGrabber::getDeviceList() is deprecated, use listDevices() instead.", void getDeviceList() const);
OF_DEPRECATED_MSG("ofxiOSVideoGrabber::getPixelsRef() is deprecated, use getPixels() instead.", ofPixels& getPixelsRef());
OF_DEPRECATED_MSG("ofxiOSVideoGrabber::getPixelsRef() is deprecated, use getPixels() instead.", const ofPixels& getPixelsRef() const);
protected:

shared_ptr<AVFoundationVideoGrabber> grabber;

ofPixels pixels;

};

#endif

#define ofxiPhoneVideoGrabber ofxiOSVideoGrabber
93 changes: 64 additions & 29 deletions addons/ofxiOS/src/video/ofxiOSVideoGrabber.mm
Original file line number Diff line number Diff line change
@@ -1,76 +1,111 @@
#if defined __arm__

#include "AVFoundationVideoGrabber.h"
#include "ofxiOSVideoGrabber.h"
#include "AVFoundationVideoGrabber.h"

ofxiOSVideoGrabber::ofxiOSVideoGrabber() {
grabber = shared_ptr<AVFoundationVideoGrabber>(new AVFoundationVideoGrabber());
}

ofxiOSVideoGrabber::~ofxiOSVideoGrabber() {
//
}

//needs implementing
//--------------------------------------------------------------
vector <ofVideoDevice> ofxiOSVideoGrabber::listDevices() const {
return grabber->listDevices();
}

bool ofxiOSVideoGrabber::initGrabber(int w, int h) {
return grabber->initGrabber(w, h);
bool ofxiOSVideoGrabber::setup(int w, int h) {
return grabber->initGrabber(w, h);
}

bool ofxiOSVideoGrabber::isInitialized() const{
return grabber->isInitialized();
float ofxiOSVideoGrabber::getHeight() const {
return grabber->getHeight();
}

float ofxiOSVideoGrabber::getWidth() const {
return grabber->getWidth();
}

ofTexture * ofxiOSVideoGrabber::getTexturePtr() {
return NULL;
}

void ofxiOSVideoGrabber::setVerbose(bool bTalkToMe) {
ofLogWarning("ofxiOSVideoGrabber") << "setVerbose() is not implemented";
}

void ofxiOSVideoGrabber::setDeviceID(int deviceID) {
grabber->setDevice(deviceID);
}

void ofxiOSVideoGrabber::setDesiredFrameRate(int framerate) {
grabber->setCaptureRate(framerate);
}

void ofxiOSVideoGrabber::videoSettings() {
ofLogWarning("ofxiOSVideoGrabber") << "videoSettings() is not implemented";
}

//--------------------------------------------------------------
bool ofxiOSVideoGrabber::isFrameNew() const {
return grabber->isFrameNew();
}

unsigned char * ofxiOSVideoGrabber::getPixels() {
return grabber->getPixels();
void ofxiOSVideoGrabber::close() {
ofLogWarning("ofxiOSVideoGrabber") << "close() is not implemented";
}

ofPixels& ofxiOSVideoGrabber::getPixelsRef(){
static ofPixels dummy;
//@TODO implement me
return dummy;
bool ofxiOSVideoGrabber::isInitialized() const{
return grabber->isInitialized();
}

const ofPixels& ofxiOSVideoGrabber::getPixelsRef() const {
return getPixelsRef();
bool ofxiOSVideoGrabber::setPixelFormat(ofPixelFormat internalPixelFormat) {
return grabber->setPixelFormat(internalPixelFormat);
}

void ofxiOSVideoGrabber::close() {
ofPixelFormat ofxiOSVideoGrabber::getPixelFormat() const {
return grabber->getPixelFormat();
}

float ofxiOSVideoGrabber::getHeight() const {
return grabber->getHeight();
//--------------------------------------------------------------
ofPixels & ofxiOSVideoGrabber::getPixels() {
return pixels;
}

float ofxiOSVideoGrabber::getWidth() const {
return grabber->getWidth();
const ofPixels & ofxiOSVideoGrabber::getPixels() const {
return getPixels();
}

//--------------------------------------------------------------
void ofxiOSVideoGrabber::update() {
grabber->update();

if(grabber->isFrameNew() == true) {
pixels.setFromPixels(grabber->getPixels(),
getWidth(),
getHeight(),
grabber->getPixelFormat());
}
}

void ofxiOSVideoGrabber::setDeviceID(int _deviceID) {
grabber->setDevice(_deviceID);
//-------------------------------------------------------------- DEPRECATED.
bool ofxiOSVideoGrabber::initGrabber(int w, int h) {
ofLogWarning("ofxiOSVideoGrabber") << "initGrabber(int w, int h) is deprecated, use setup(int w, int h) instead.";
return setup(w, h);
}

void ofxiOSVideoGrabber::setDesiredFrameRate(int framerate) {
grabber->setCaptureRate(framerate);
}
void ofxiOSVideoGrabber::getDeviceList() const {
ofLogWarning("ofxiOSVideoGrabber") << "getDeviceList() is deprecated, use listDevices() instead.";
};

bool ofxiOSVideoGrabber::setPixelFormat(ofPixelFormat internalPixelFormat) {
return grabber->setPixelFormat(internalPixelFormat);
ofPixels& ofxiOSVideoGrabber::getPixelsRef(){
return getPixels();
}


ofPixelFormat ofxiOSVideoGrabber::getPixelFormat() const {
return grabber->getPixelFormat();
const ofPixels& ofxiOSVideoGrabber::getPixelsRef() const{
return getPixels();
}

#endif
23 changes: 13 additions & 10 deletions examples/ios/videoGrabberExample/src/ofApp.mm
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,19 @@

grabber.update();

unsigned char * src = grabber.getPixels();
int totalPix = grabber.getWidth() * grabber.getHeight() * 3;

for(int k = 0; k < totalPix; k+= 3){
pix[k ] = 255 - src[k];
pix[k+1] = 255 - src[k+1];
pix[k+2] = 255 - src[k+2];
}

tex.loadData(pix, grabber.getWidth(), grabber.getHeight(), GL_RGB);
if(grabber.isFrameNew() == true) {
ofPixels & pixels = grabber.getPixels();
unsigned char * src = pixels.getData();
int totalPix = grabber.getWidth() * grabber.getHeight() * 3;

for(int k = 0; k < totalPix; k+= 3){
pix[k ] = 255 - src[k];
pix[k+1] = 255 - src[k+1];
pix[k+2] = 255 - src[k+2];
}

tex.loadData(pix, grabber.getWidth(), grabber.getHeight(), GL_RGB);
}
}

//--------------------------------------------------------------
Expand Down