小编rob*_*e_c的帖子

目标c不喜欢我的unichars?

当我尝试执行以下操作时,Xcode对"多字符字符包含"的抱怨:

static unichar accent characters[] = { '?', 'á', '?', 'à' };
Run Code Online (Sandbox Code Playgroud)

如果不是所有字符都是ascii,你如何制作一个字符数组?以下工作正常

static unichar accent[] = { 'a', 'b', 'c' }; 
Run Code Online (Sandbox Code Playgroud)

解决方法

我发现最接近的工作是将特殊字符转换为十六进制,即这有效:

static unichar accent characters[] = { 0x0100, 0x0101, 0x0102 };
Run Code Online (Sandbox Code Playgroud)

xcode gcc objective-c

8
推荐指数
2
解决办法
1万
查看次数

Apple 5.1的语音处理音频单元(kAudioUnitSubType_VoiceProcessingIO)在iOS 5.1上被破坏

我正在为iPad写一个VOIP应用程序(目前针对2和3).

我最初使用音频单元API编写音频代码,并使用kAudioUnitSubtype_RemoteIO单元.这很好用,但不出所料的回声是一个问题.我尝试通过切换到使用kAudioUnitSubType_VoiceProcessingIO单元来使用内置回声抑制.这在iOS 6(iPad 3)上非常有效,但iOS 5.1(iPad 2)上的相同代码会在麦克风输入上产生白噪声.

文档提到它应该在iOS 3.0及更高版本中可用

iOS版本似乎是这里的重要区别.我尝试在两个iPhone 4S上运行应用程序,一个用iOS 6听起来很好,一个用iOS 5.1听起来像白噪声.

我的ASBD看起来像这样:

typedef int16_t sample_t;
#define AUDIO_BUFFER_SAMPLE_RATE 48000
#define FORMAT_FLAGS (kAudioFormatFlagsIsSignedInteger | kAudioFormatFlagsIsNonInterleaved)
#define CHANNELS_PER_FRAME 1

...

const size_t bytes_per_sample = sizeof(sample_t);
const int eight_bits_per_byte = 8;
AudioStreamBasicDescription streamFormat;
streamFormat.mFormatID = kAudioFormatLinearPCM;
streamFormat.mSampleRate = AUDIO_BUFFER_SAMPLE_RATE;
streamFormat.mFormatFlags = FORMAT_FLAGS;

streamFormat.mChannelsPerFrame = CHANNELS_PER_FRAME;
streamFormat.mBytesPerFrame = bytes_per_sample * CHANNELS_PER_FRAME;
streamFormat.mBitsPerChannel = bytes_per_sample * eight_bits_per_byte;

streamFormat.mFramesPerPacket = 1;
streamFormat.mBytesPerPacket = streamFormat.mBytesPerFrame * streamFormat.mFramesPerPacket;
streamFormat.mReserved = 0;
Run Code Online (Sandbox Code Playgroud)

有没有人有过kAudioUnitSubType_VoiceProcessingIO可以在iOS 5.1上运行?

有谁知道这个IO的任何严肃的文件?

audiounit ios

5
推荐指数
1
解决办法
5284
查看次数

快速 ARM NEON memcpy

我想在 ARMv7 内核上复制图像。最简单的实现是每行调用 memcpy。

for(i = 0; i < h; i++) {
  memcpy(d, s, w);
  s += sp;
  d += dp;
}
Run Code Online (Sandbox Code Playgroud)

我知道以下

d, dp, s, sp, w
Run Code Online (Sandbox Code Playgroud)

都是 32 字节对齐的,所以我的下一个(仍然很幼稚)实现是沿着

for (int i = 0; i < h; i++) {
  uint8_t* dst = d;
  const uint8_t* src = s;
  int remaining = w;
  asm volatile (
    "1:                                               \n"
    "subs     %[rem], %[rem], #32                     \n"
    "vld1.u8  {d0, d1, d2, d3}, [%[src],:256]!        \n"
    "vst1.u8  {d0, d1, d2, d3}, [%[dst],:256]!        \n"
    "bgt      1b …
Run Code Online (Sandbox Code Playgroud)

c assembly arm memcpy neon

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

arm ×1

assembly ×1

audiounit ×1

c ×1

gcc ×1

ios ×1

memcpy ×1

neon ×1

objective-c ×1

xcode ×1