Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge pull request #672 from stfj/master

ofxiPhoneSoundStream
  • Loading branch information...
commit d6183cd5171e941da15b5759093030c9f5daa7f1 2 parents 935c0ee + a617b38
Theodore Watson ofTheo authored
18 addons/ofxiPhone/src/ofAppiPhoneWindow.mm
View
@@ -155,35 +155,17 @@ void setWindowShape(int w, int h) {
int ofAppiPhoneWindow::getWidth(){
if( orientation == OF_ORIENTATION_DEFAULT || orientation == OF_ORIENTATION_180 ){
-
- if(retinaEnabled)
- if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
- return (int)getScreenSize().x * [[UIScreen mainScreen] scale];
-
return (int)getScreenSize().x;
}
- if(retinaEnabled)
- if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
- return (int)getScreenSize().y * [[UIScreen mainScreen] scale];
-
return (int)getScreenSize().y;
}
int ofAppiPhoneWindow::getHeight(){
if( orientation == OF_ORIENTATION_DEFAULT || orientation == OF_ORIENTATION_180 ){
-
- if(retinaEnabled)
- if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
- return (int)getScreenSize().y * [[UIScreen mainScreen] scale];
-
return (int)getScreenSize().y;
}
- if(retinaEnabled)
- if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
- return (int)getScreenSize().x * [[UIScreen mainScreen] scale];
-
return (int)getScreenSize().x;
}
5 libs/openFrameworks/sound/ofSoundStream.h
View
@@ -15,8 +15,9 @@
#elif defined(OF_SOUNDSTREAM_ANDROID)
#include "ofxAndroidSoundStream.h"
#define OF_SOUND_STREAM_TYPE ofxAndroidSoundStream
-#else
- // iphone soundstream
+#elif defined(OF_SOUNDSTREAM_IPHONE)
+ #include "ofxiPhoneSoundStream.h"
+ #define OF_SOUND_STREAM_TYPE ofxiPhoneSoundStream
#endif
void ofSoundStreamSetup(int nOutputChannels, int nInputChannels, ofBaseApp * appPtr = NULL);
38 libs/openFrameworks/sound/ofxiPhoneSoundStream.h
View
@@ -0,0 +1,38 @@
+#pragma once
+
+#include "ofConstants.h"
+
+#include "ofBaseSoundStream.h"
+#include "ofTypes.h"
+
+
+class ofxiPhoneSoundStream : public ofBaseSoundStream{
+ public:
+ ofxiPhoneSoundStream();
+ ~ofxiPhoneSoundStream();
+
+ void listDevices();
+ void setDeviceID(int deviceID);
+
+ void setInput(ofBaseSoundInput * soundInput);
+ void setOutput(ofBaseSoundOutput * soundOutput);
+ bool setup(int outChannels, int inChannels, int sampleRate, int bufferSize, int nBuffers);
+ bool setup(ofBaseApp * app, int outChannels, int inChannels, int sampleRate, int bufferSize, int nBuffers);
+
+ void start();
+ void stop();
+ void close();
+
+ long unsigned long getTickCount(); // always returns 0. not implemented on iphone
+
+ int getNumInputChannels();
+ int getNumOutputChannels();
+
+ private:
+ long unsigned long tickCount;
+ int nInputChannels;
+ int nOutputChannels;
+ int sampleRate;
+};
+
+
170 addons/ofxiPhone/src/ofxiPhoneSoundStream.mm → libs/openFrameworks/sound/ofxiPhoneSoundStream.mm
View
@@ -19,17 +19,25 @@
***********************************************************************/
// mostly taken from http://michael.tyson.id.au/2008/11/04/using-remoteio-audio-unit/
-#import "ofMain.h"
-#import "ofSoundStream.h"
+
+#include "ofxiPhoneSoundStream.h"
+
+#ifdef OF_SOUNDSTREAM_IPHONE
+#include "ofSoundStream.h"
+#include "ofMath.h"
+#include "ofUtils.h"
#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioToolbox.h>
#import "ofxiPhone.h"
-static ofBaseApp *OFSAptr = NULL;
+
+
static bool isSetup = false;
static bool isRunning = false;
AudioStreamBasicDescription format, audioFormat;
AudioUnit audioUnit = NULL;
+static ofBaseSoundInput * soundInputPtr = NULL;
+static ofBaseSoundOutput * soundOutputPtr = NULL;
#define kOutputBus 0
#define kInputBus 1
@@ -41,7 +49,7 @@ static inline void checkSoundStreamIsRunning() {
bool checkStatus(OSStatus err) {
if(err!=noErr) {
ofLog(OF_LOG_ERROR, "There was an error: " + err);
-// OFSAptr->error(err);
+ // soundInputPtr->error(err);
return true;
}
return false;
@@ -51,6 +59,7 @@ bool checkStatus(OSStatus err) {
#define MAX_BUFFER_SIZE 4096
float tempBuffer[MAX_BUFFER_SIZE];
+void rioInterruptionListener(void *inClientData, UInt32 inInterruption) {}
static OSStatus playbackCallback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
@@ -58,8 +67,8 @@ static OSStatus playbackCallback(void *inRefCon,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData) {
-
-// OFSAptr->error(ioData->mNumberBuffers);
+
+ // soundInputPtr->error(ioData->mNumberBuffers);
for(int i = 0; i < ioData->mNumberBuffers; i++) {
if(i==0) { // there should be only one buffer
@@ -71,11 +80,11 @@ static OSStatus playbackCallback(void *inRefCon,
for(int j = 0; j < len; j++) {
buffer[j] = 0;
}
-// if(OFSAptr!=NULL) OFSAptr->error(-1);
+ // if(soundInputPtr!=NULL) soundInputPtr->error(-1);
} else {
// get floats from openframeworks
- if(OFSAptr!=NULL) OFSAptr->audioRequested(tempBuffer, ioData->mBuffers[i].mDataByteSize/(ioData->mBuffers[i].mNumberChannels*2), ioData->mBuffers[i].mNumberChannels);
+ if(soundOutputPtr!=NULL) soundOutputPtr->audioRequested(tempBuffer, ioData->mBuffers[i].mDataByteSize/(ioData->mBuffers[i].mNumberChannels*2), ioData->mBuffers[i].mNumberChannels);
// truncate to 16bit fixed point data
int len = ioData->mBuffers[i].mDataByteSize/2;
@@ -87,7 +96,7 @@ static OSStatus playbackCallback(void *inRefCon,
ioData->mBuffers[i].mDataByteSize = 0;
}
}
-
+
return noErr;
}
@@ -99,11 +108,11 @@ static OSStatus recordingCallback(void *inRefCon,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
- AudioBufferList *ioData) {
+ AudioBufferList *ioData) {
+
-
AudioBufferList list;
-
+
// redundant
list.mNumberBuffers = 1;
list.mBuffers[0].mData = sampleBuffer;
@@ -113,7 +122,7 @@ static OSStatus recordingCallback(void *inRefCon,
ioData = &list;
//printf("No buffers: %d, buffer length: %d bus number: %d\n", ioData->mNumberBuffers, ioData->mBuffers[0].mDataByteSize, inBusNumber);
-
+
// Then:
// Obtain recorded samples
@@ -124,33 +133,58 @@ static OSStatus recordingCallback(void *inRefCon,
int i = 0;
short int *buffer = (short int *) list.mBuffers[i].mData;
for(int j = 0; j < ioData->mBuffers[i].mDataByteSize/2; j++) {
- // go through each sample and turn it into a float
+ // go through each sample and turn it into a float
tempBuffer[j] = (float)buffer[j]/32767.f;
-
+
}
done = true;
- if(OFSAptr!=NULL) OFSAptr->audioReceived(tempBuffer, ioData->mBuffers[i].mDataByteSize/2, 1);
+ if(soundInputPtr!=NULL) soundInputPtr->audioReceived(tempBuffer, ioData->mBuffers[i].mDataByteSize/2, 1);
}
return noErr;
}
+//------------------------------------------------------------------------------
+ofxiPhoneSoundStream::ofxiPhoneSoundStream(){
+}
+
+//------------------------------------------------------------------------------
+ofxiPhoneSoundStream::~ofxiPhoneSoundStream(){
+}
+//------------------------------------------------------------------------------
+void ofxiPhoneSoundStream::listDevices(){
+
+}
+//------------------------------------------------------------------------------
+void ofxiPhoneSoundStream::setDeviceID(int _deviceID){
+}
-//---------------------------------------------------------
-void ofSoundStreamSetup(int nOutputs, int nInputs, ofBaseApp * OFSA) {
- ofSoundStreamSetup(nOutputs, nInputs, OFSA, 44100, 256, 2);
+//------------------------------------------------------------------------------
+void ofxiPhoneSoundStream::setInput(ofBaseSoundInput * soundInput){
+ soundInputPtr = soundInput;
}
-//---------------------------------------------------------
-void ofSoundStreamSetup(int nOutputs, int nInputs, int sampleRate, int bufferSize, int nBuffers) {
- ofSoundStreamSetup(nOutputs, nInputs, NULL, sampleRate, bufferSize, nBuffers);
+//------------------------------------------------------------------------------
+void ofxiPhoneSoundStream::setOutput(ofBaseSoundOutput * soundOutput){
+ soundOutput = soundOutput;
}
-void rioInterruptionListener(void *inClientData, UInt32 inInterruption) {}
-//---------------------------------------------------------
-void ofSoundStreamSetup(int nOutputs, int nInputs, ofBaseApp * OFSA, int sampleRate, int bufferSize, int nBuffers) {
- OFSAptr = OFSA;
+
+//------------------------------------------------------------------------------
+bool ofxiPhoneSoundStream::setup(int outChannels, int inChannels, int _sampleRate, int bufferSize, int nBuffers){
+
+ nInputChannels = inChannels;
+ nOutputChannels = outChannels;
+ tickCount = 0;
+ sampleRate = _sampleRate;
+
+ if(isRunning) {
+ OSStatus status = AudioOutputUnitStop(audioUnit);
+ checkStatus(status);
+ }
+
+ isRunning = false;
OSStatus status;
@@ -194,12 +228,12 @@ void ofSoundStreamSetup(int nOutputs, int nInputs, ofBaseApp * OFSA, int sampleR
// this is supposed to make the audio come out of the speaker rather
// than the receiver, but I don't think it works when using the microphone as well.
-// UInt32 category = kAudioSessionOverrideAudioRoute_Speaker;
-// AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(category), &category);
+ // UInt32 category = kAudioSessionOverrideAudioRoute_Speaker;
+ // AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(category), &category);
UInt32 category = 1;
AudioSessionSetProperty(kAudioSessionOverrideAudioRoute_Speaker, sizeof(category), &category);
-
+
// Describe format
audioFormat.mSampleRate = (double)sampleRate;
@@ -210,7 +244,7 @@ void ofSoundStreamSetup(int nOutputs, int nInputs, ofBaseApp * OFSA, int sampleR
AURenderCallbackStruct callbackStruct;
- if(nOutputs>0) {
+ if(outChannels>0) {
// Enable IO for playback
status = AudioUnitSetProperty(audioUnit,
kAudioOutputUnitProperty_EnableIO,
@@ -219,10 +253,10 @@ void ofSoundStreamSetup(int nOutputs, int nInputs, ofBaseApp * OFSA, int sampleR
&flag,
sizeof(flag));
checkStatus(status);
-
- audioFormat.mChannelsPerFrame = nOutputs;
- audioFormat.mBytesPerPacket = nOutputs*2;
- audioFormat.mBytesPerFrame = nOutputs*2;
+
+ audioFormat.mChannelsPerFrame = outChannels;
+ audioFormat.mBytesPerPacket = outChannels*2;
+ audioFormat.mBytesPerFrame = outChannels*2;
status = AudioUnitSetProperty(audioUnit,
kAudioUnitProperty_StreamFormat,
@@ -231,7 +265,7 @@ void ofSoundStreamSetup(int nOutputs, int nInputs, ofBaseApp * OFSA, int sampleR
&audioFormat,
sizeof(audioFormat));
checkStatus(status);
-
+
// Set output callback
callbackStruct.inputProc = playbackCallback;
callbackStruct.inputProcRefCon = NULL;
@@ -243,10 +277,10 @@ void ofSoundStreamSetup(int nOutputs, int nInputs, ofBaseApp * OFSA, int sampleR
sizeof(callbackStruct));
checkStatus(status);
}
- if(nInputs>0) {
+ if(inChannels>0) {
sampleBuffer = (short int*) malloc(MAX_BUFFER_SIZE*2);
// Enable IO for recording
-
+
status = AudioUnitSetProperty(audioUnit,
kAudioOutputUnitProperty_EnableIO,
kAudioUnitScope_Input,
@@ -254,9 +288,9 @@ void ofSoundStreamSetup(int nOutputs, int nInputs, ofBaseApp * OFSA, int sampleR
&flag,
sizeof(flag));
- audioFormat.mChannelsPerFrame = nInputs;
- audioFormat.mBytesPerPacket = nInputs*2;
- audioFormat.mBytesPerFrame = nInputs*2;
+ audioFormat.mChannelsPerFrame = inChannels;
+ audioFormat.mBytesPerPacket = inChannels*2;
+ audioFormat.mBytesPerFrame = inChannels*2;
// Apply format
status = AudioUnitSetProperty(audioUnit,
@@ -266,10 +300,10 @@ void ofSoundStreamSetup(int nOutputs, int nInputs, ofBaseApp * OFSA, int sampleR
&audioFormat,
sizeof(audioFormat));
checkStatus(status);
-
-
-
+
+
+
// Set input callback
callbackStruct.inputProc = recordingCallback;
callbackStruct.inputProcRefCon = NULL;
@@ -281,7 +315,7 @@ void ofSoundStreamSetup(int nOutputs, int nInputs, ofBaseApp * OFSA, int sampleR
sizeof(callbackStruct));
checkStatus(status);
}
-
+
UInt32 shouldAllocateBuffer = 1;
AudioUnitSetProperty(audioUnit, kAudioUnitProperty_ShouldAllocateBuffer, kAudioUnitScope_Global, 1, &shouldAllocateBuffer, sizeof(shouldAllocateBuffer));
@@ -293,18 +327,15 @@ void ofSoundStreamSetup(int nOutputs, int nInputs, ofBaseApp * OFSA, int sampleR
ofSoundStreamStart();
}
-//---------------------------------------------------------
-void ofSoundStreamStop() {
- if(isRunning) {
- OSStatus status = AudioOutputUnitStop(audioUnit);
- checkStatus(status);
- }
- isRunning = false;
+//------------------------------------------------------------------------------
+bool ofxiPhoneSoundStream::setup(ofBaseApp * app, int outChannels, int inChannels, int sampleRate, int bufferSize, int nBuffers){
+ setInput(app);
+ setOutput(app);
+ setup(outChannels, inChannels, sampleRate, bufferSize, nBuffers);
}
-
-//---------------------------------------------------------
-void ofSoundStreamStart() {
+//------------------------------------------------------------------------------
+void ofxiPhoneSoundStream::start(){
if(isRunning) ofSoundStreamStop();
if(audioUnit!=NULL) {
OSStatus status = AudioOutputUnitStart(audioUnit);
@@ -313,15 +344,34 @@ void ofSoundStreamStart() {
}
}
+//------------------------------------------------------------------------------
+void ofxiPhoneSoundStream::stop(){
+ if(isRunning) {
+ OSStatus status = AudioOutputUnitStop(audioUnit);
+ checkStatus(status);
+ }
+ isRunning = false;
+}
-
-//---------------------------------------------------------
-void ofSoundStreamClose() {
+//------------------------------------------------------------------------------
+void ofxiPhoneSoundStream::close(){
AudioUnitUninitialize(audioUnit);
- free(sampleBuffer);
+ free(sampleBuffer);
}
+//------------------------------------------------------------------------------
+long unsigned long ofxiPhoneSoundStream::getTickCount(){
+ return tickCount;
+}
-//---------------------------------------------------------
-void ofSoundStreamListDevices() {
+//------------------------------------------------------------------------------
+int ofxiPhoneSoundStream::getNumOutputChannels(){
+ return nOutputChannels;
}
+
+//------------------------------------------------------------------------------
+int ofxiPhoneSoundStream::getNumInputChannels(){
+ return nInputChannels;
+}
+
+#endif
2  libs/openFrameworks/utils/ofConstants.h
View
@@ -227,7 +227,7 @@ typedef TESSindex ofIndexType;
#elif defined(TARGET_ANDROID)
#define OF_SOUNDSTREAM_ANDROID
#else
- #warning we need swappable sound stream api for iphone
+ #define OF_SOUNDSTREAM_IPHONE
#endif
#endif
12 libs/openFrameworksCompiled/project/iphone/iPhone+OF Lib.xcodeproj/project.pbxproj
View
@@ -7,6 +7,8 @@
objects = {
/* Begin PBXBuildFile section */
+ 5315964913D88B370044EAFE /* ofxiPhoneSoundStream.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5315964713D88B370044EAFE /* ofxiPhoneSoundStream.mm */; };
+ 5315964A13D88B370044EAFE /* ofxiPhoneSoundStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 5315964813D88B370044EAFE /* ofxiPhoneSoundStream.h */; };
53DA338A12DF8F4500C622CE /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53DA338912DF8F4500C622CE /* AVFoundation.framework */; };
53DA338E12DF8F5000C622CE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53DA338D12DF8F5000C622CE /* CoreAudio.framework */; };
53DA339012DF8F5000C622CE /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53DA338F12DF8F5000C622CE /* CoreMedia.framework */; };
@@ -34,7 +36,6 @@
BB24E0D010DA9F4C00E9C588 /* ofxiPhoneAlerts.h in Headers */ = {isa = PBXBuildFile; fileRef = BB24E03010DA7C6100E9C588 /* ofxiPhoneAlerts.h */; };
BB24E0D110DA9F4D00E9C588 /* ofAppiPhoneWindow.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB24E02E10DA7C6100E9C588 /* ofAppiPhoneWindow.mm */; };
BB24E0D210DA9F4D00E9C588 /* ofxiPhoneImagePicker.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB24E03A10DA7C6100E9C588 /* ofxiPhoneImagePicker.mm */; };
- BB24E0D310DA9F4E00E9C588 /* ofxiPhoneSoundStream.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB24E04310DA7C6100E9C588 /* ofxiPhoneSoundStream.mm */; };
BB24E0D410DA9F4F00E9C588 /* ofxiPhoneKeyboard.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB24E03C10DA7C6100E9C588 /* ofxiPhoneKeyboard.mm */; };
BB24E0D510DA9F4F00E9C588 /* EAGLView.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB24E02A10DA7C6100E9C588 /* EAGLView.mm */; };
BB24E0D610DA9F5000E9C588 /* ofxiPhoneCoreLocation.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB24E03710DA7C6100E9C588 /* ofxiPhoneCoreLocation.mm */; };
@@ -175,6 +176,8 @@
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+ 5315964713D88B370044EAFE /* ofxiPhoneSoundStream.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ofxiPhoneSoundStream.mm; sourceTree = "<group>"; };
+ 5315964813D88B370044EAFE /* ofxiPhoneSoundStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxiPhoneSoundStream.h; sourceTree = "<group>"; };
5326AEA710A23A0500278DE6 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
53DA338912DF8F4500C622CE /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
53DA338D12DF8F5000C622CE /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
@@ -217,7 +220,6 @@
BB24E03F10DA7C6100E9C588 /* ofxiPhoneMapKitDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxiPhoneMapKitDelegate.h; sourceTree = "<group>"; };
BB24E04010DA7C6100E9C588 /* ofxiPhoneMapKitDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ofxiPhoneMapKitDelegate.mm; sourceTree = "<group>"; };
BB24E04110DA7C6100E9C588 /* ofxiPhoneMapKitListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxiPhoneMapKitListener.h; sourceTree = "<group>"; };
- BB24E04310DA7C6100E9C588 /* ofxiPhoneSoundStream.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ofxiPhoneSoundStream.mm; sourceTree = "<group>"; };
BB3140BC11BB09220019348E /* ES1Renderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ES1Renderer.h; sourceTree = "<group>"; };
BB3140BD11BB09220019348E /* ES1Renderer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ES1Renderer.mm; sourceTree = "<group>"; };
BB3140BE11BB09220019348E /* ES2Renderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ES2Renderer.h; sourceTree = "<group>"; };
@@ -523,7 +525,6 @@
BB24E03F10DA7C6100E9C588 /* ofxiPhoneMapKitDelegate.h */,
BB24E04010DA7C6100E9C588 /* ofxiPhoneMapKitDelegate.mm */,
BB24E04110DA7C6100E9C588 /* ofxiPhoneMapKitListener.h */,
- BB24E04310DA7C6100E9C588 /* ofxiPhoneSoundStream.mm */,
);
path = src;
sourceTree = "<group>";
@@ -660,6 +661,8 @@
E485F6DA1360A90000E939D3 /* ofSoundPlayer.h */,
E485F6DB1360A90000E939D3 /* ofSoundStream.cpp */,
E485F6DC1360A90000E939D3 /* ofSoundStream.h */,
+ 5315964713D88B370044EAFE /* ofxiPhoneSoundStream.mm */,
+ 5315964813D88B370044EAFE /* ofxiPhoneSoundStream.h */,
);
name = sound;
path = ../../../openFrameworks/sound;
@@ -829,6 +832,7 @@
E485F81B1363242200E939D3 /* ofxMultiTouchListener.h in Headers */,
E485F8B413632A7300E939D3 /* AVFoundationVideoGrabber.h in Headers */,
E485F8C713632B6600E939D3 /* AVFoundationVideoPlayer.h in Headers */,
+ 5315964A13D88B370044EAFE /* ofxiPhoneSoundStream.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -886,7 +890,6 @@
BB24E0CD10DA9F4800E9C588 /* ofxAccelerometer.cpp in Sources */,
BB24E0D110DA9F4D00E9C588 /* ofAppiPhoneWindow.mm in Sources */,
BB24E0D210DA9F4D00E9C588 /* ofxiPhoneImagePicker.mm in Sources */,
- BB24E0D310DA9F4E00E9C588 /* ofxiPhoneSoundStream.mm in Sources */,
BB24E0D410DA9F4F00E9C588 /* ofxiPhoneKeyboard.mm in Sources */,
BB24E0D510DA9F4F00E9C588 /* EAGLView.mm in Sources */,
BB24E0D610DA9F5000E9C588 /* ofxiPhoneCoreLocation.mm in Sources */,
@@ -948,6 +951,7 @@
E485F8191363242200E939D3 /* ofxMultiTouch.cpp in Sources */,
E485F8B513632A7300E939D3 /* AVFoundationVideoGrabber.mm in Sources */,
E485F8C813632B6600E939D3 /* AVFoundationVideoPlayer.mm in Sources */,
+ 5315964913D88B370044EAFE /* ofxiPhoneSoundStream.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Please sign in to comment.
Something went wrong with that request. Please try again.