alsaライブラリを使用している私のLinux(debian)組み込みデバイスにサウンドを記録しようとしています。私の組み込みハードウェアはこの[1]であり、そのデータシートのページ33 [2]に従って、Alsa Libハードウェアパラメータの設定
アナログオーディオ信号は、オンSOM TLV320AIC3106オーディオコーデックによって特徴付けられます。
このテキサス・インスツルメンツオーディオコーデックのデータシート[3]、
は8kHzでから96 kHzまで空
は、私は、ALSAのLIBのためのサンプルアプリケーションコードを使用サポート最初の仕事私はコードを変更しませんでした。サンプルコードでは、サンプリングレートは44100Hzに設定されていました。私は正常に音を録音し、後に演奏した。今のところ、データシートに基づいて8000Hzのサンプリングレートでalsa-libで音を録音することができます。私はサンプリングレートを8000Hzに設定しましたが、alsaの設定では16000Hzに変わりました。 サンプリングレートを8000Hzに設定しました。
snd_pcm_hw_params_set_rate_near(handle, params, &(record_params->rate), &dir);
snd_pcm_hw_params_set_channels(handle, params, record_params->channel);
rc = snd_pcm_hw_params(handle, params);
しかし、このメソッドを呼び出した後は、
snd_pcm_hw_params_get_period_time(params, &(record_params->rate), &dir);
これは16000に変更されます。上記の間に他のメソッド呼び出しはありません。私の設定が間違っているか、またはコーデックが8kHzをサポートしていない可能性がありますか?
更新日:レートを16000に設定すると、8000に変更されます。もっと混乱します。
[1] = http://www.variscite.com/products/system-on-module-som/cortex-a9/dart-mx6-cpu-freescale-imx6
[2] = http://www.variscite.com/images/stories/DataSheets/DART-MX6/DART-MX6_v1_2_datasheet_v2_1.pdf
[3] = http://www.ti.com/lit/ds/symlink/tlv320aic3106.pdf
エラーコードは常に確認する必要があります。なぜあなたは期間の時間を求めていますか?そして、コール前後の 'rate'と' dir'の値は何ですか? –
'dir'は0で、' rate'は8000です。私が言ったように、期間を求めた後、16000に変わります。期間を求めるのは、バッファのサイズを決めるためです。私は私の呼び出しのエラーコードをチェックし、何かが間違っていれば投稿を更新します –
これらの値は*呼び出し前* *呼び出し後* *呼び出し後、またはその両方の値ですか?そして、なぜあなたのレートは期間の時間に関係していると思いますか? –