使用核心音频忽略__cxa_throw安全
is __cxa_throw safe to ignore with Core Audio?
有人
问过类似的问题......但我想让它更具体地针对核心音频......因为我们中的一些人可能已经注意到核心音频几乎没有出错的余地。
正如上述问题的答案所解释的那样,__cxa_throw是一个C++未处理的异常,可以忽略(这个问题似乎是 Xcode 4.5.1 的新问题。我以前也从未见过)
我们可以对核心音频说同样的话吗?让我紧张的是,它与音频的格式有关。我的很多代码都依赖于:
我正在尝试将 AAC 文件转换为 lPCM。
输出格式:
// set up the PCM output format for conversion
streamer->PCMoutputFormat.mSampleRate = 44100.0;
streamer->PCMoutputFormat.mFormatID = kAudioFormatLinearPCM;
streamer->PCMoutputFormat.mFormatFlags = kAudioFormatFlagsCanonical;
streamer->PCMoutputFormat.mBytesPerPacket = 4;
streamer->PCMoutputFormat.mFramesPerPacket = 1;
streamer->PCMoutputFormat.mBytesPerFrame = 4;
streamer->PCMoutputFormat.mChannelsPerFrame = 2;
streamer->PCMoutputFormat.mBitsPerChannel = 16;
输入格式:
mSampleRate = 44100
mFormatID = 1633772320 (AAC)
mFormatFlags = 0
mBytesPerPacket = 0
mFramesPerPacket = 1024
mBytesPerFrame = 0
mChannelsPerFrame = 2
mBitsPerChannel = 0
实例变量:
游戏.h
@interface Game : NSObject <GKSessionDelegate>
{
AudioStreamer *streamer;
}
@property (nonatomic, assign) AudioStreamBasicDescription mediaItemInputFormat;
音频流光.h
@interface AudioStreamer : NSObject
{
@public
AudioStreamBasicDescription PCMoutputFormat;
AudioConverterRef audioConverter;
}
在 game.m 中设置转换器命令(这是抛出__cxa_throw未处理异常的地方!
// set up converter
OSStatus result = AudioConverterNew(&_mediaItemInputFormat,
&streamer->PCMoutputFormat,
&streamer->audioConverter);
如果异常最终没有终止应用程序,则其他代码段会处理它。如果你信任任何一段代码,那么就没有什么可担心的了。
相关文章:
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- `throw 1` in C++
- gnuradio c++ connect self() throw bad_weak_ptr
- 为什么 c++ 使用 throw() 关键字来指示函数不会引发任何异常
- 是否有任何版本的C++(甚至是试行标准)是"throw()"并不意味着"cannot throw, ever"?
- 实现此"on error, throw"回调的最佳方法是什么?
- 是否有理由大多数/所有 try-catch 示例只对 throw 语句使用 void 子函数
- throw() 函数应该总是在异常时展开堆栈并允许捕获异常还是必须调用 std::terminate ?
- GCC/GCOV 为 使用 throw() / noexexcept 函数生成的不同分支覆盖
- Poco::Net::HTTPClientSession throw exception without unique_
- 防止在将未引发的异常作为参数传递时在"throw e;"中切片
- 模板通过一个专门化同时接受throw和nothrow
- 是否可以从输入流中'throw away'读取值?
- std :: tr1 :: shared_ptr throw bad_alloc,也是一个好主意
- 我是否可以阻止throw调用malloc
- C++03的throw()说明符和C++11的noexcept之间有什么区别
- 为什么"throw MyClass"不起作用,而"throw MyClass()"却行得通?
- C++ sendto() 给出"invalid conversion from ‘int (*)(int, int, int)throw ()’ to ‘int’"错误
- "warning C4987: nonstandard extension used: 'throw (...)'"是什么意思?
- 我该怎么做 throw 来处理 C++ 中的错误数据类型