Mac版pcm_source
rresize()のバグで激しくメモリを壊していたので修正しました。
circular_buffer.hppの差分
メモリ破壊の結果、スレッドの管理情報を壊していて、pthread_join()やpthread_cond_wait()がおかしな動きをしていました。
gdbで特定のアドレスが書き換わったらブレークする方法が分からなかったので、壊してそうなところにひたすら、
break pcm_device.cpp:123 if *(int*)0x12345678 != 0x87654321
みたいなブレークポイントを設定してデバッグしてました。
多分もっとまともな方法があると思います。
この修正で一応pcm_sourceも動くようになったのでコミットしました。
pcm_device.cppの差分
出力はデフォルトAudioOutputUnitという便利なインタフェースが用意してあるのですが、入力はこれに相当するものを自前で組み立てる必要があります。
AUHALの仕様上サンプリングレートを設定できないっぽいので、今のところデバイスのデフォルトのサンプリングレートで録音されます。
これにサンプリングレートの変換機能を追加すれば完成です。