std::unique_ptr<TargetFile> TargetFile::create( const DataTargetRef &dataTarget, size_t sampleRate, size_t numChannels, SampleType sampleType, const std::string &extension ) { #if ! defined( CINDER_WINRT ) || ( _MSC_VER > 1800 ) std::string ext = dataTarget->getFilePathHint().extension().string(); #else std::string ext = dataTarget->getFilePathHint().extension(); #endif ext = ( ( ! ext.empty() ) && ( ext[0] == '.' ) ) ? ext.substr( 1, string::npos ) : ext; #if defined( CINDER_COCOA ) return std::unique_ptr<TargetFile>( new cocoa::TargetFileCoreAudio( dataTarget, sampleRate, numChannels, sampleType, ext ) ); #elif defined( CINDER_MSW ) || defined( CINDER_WINRT ) return std::unique_ptr<TargetFile>( new msw::TargetFileMediaFoundation( dataTarget, sampleRate, numChannels, sampleType, ext ) ); #endif }
std::unique_ptr<TargetFile> TargetFile::create( const DataTargetRef &dataTarget, size_t sampleRate, size_t numChannels, const std::string &extension ) { std::string ext = ( ! extension.empty() ? extension : getPathExtension( dataTarget->getFilePathHint() ) ); #if defined( CINDER_COCOA ) return std::unique_ptr<TargetFile>( new cocoa::TargetFileCoreAudio( dataTarget, sampleRate, numChannels, ext ) ); #elif defined( CINDER_MSW ) return std::unique_ptr<TargetFile>(); // TODO // return std::unique_ptr<TargetFile>( new msw::TargetFileMediaFoundation( dataTarget, sampleRate, numChannels, ext ) ); #endif }
void writeImage( DataTargetRef dataTarget, const ImageSourceRef &imageSource, ImageTarget::Options options, string extension ) { #if defined( CINDER_COCOA ) // this is necessary to limit the lifetime of the objc-based loader's allocations cocoa::SafeNsAutoreleasePool autorelease; #endif if( extension.empty() ) extension = getPathExtension( dataTarget->getFilePathHint() ); ImageTargetRef imageTarget = ImageIoRegistrar::createTarget( dataTarget, imageSource, options, extension ); if( imageTarget ) { writeImage( imageTarget, imageSource ); } else throw ImageIoExceptionUnknownExtension(); }