私はtinyalsaを使用するために必要最小限のプログラムをしようとするんだけど、pcm_start
は常に失敗し、-1
を返すと9
にerrno
を設定する(EBADF
、すなわち不正なファイル番号)。この前にpcm_open
を呼び出すと、null以外のポインタが返されますが、errno
を22
に設定します。tinyalsa:pcm_start利回り不正なファイル番号エラー
tinyalsaのドキュメントがないようですので、私は何をすべきか理解していません。私はalsa(tinyalsaではない)の例に基づいてプログラムを作成し、tinyalsaのヘッダファイルを読んだ。誰でもガイダンスを提供できますか?
pcm * dev = pcm_open(1, 0, PCM_OUT, &config);
if (err = pcm_start(dev)) printf("err: %d\t errno: %d\n", err, errno);
(pastebin上で利用可能なフルコード)
Iはaplay --list-devices
からpcm_open
の最初の二つの引数の値を推測する、出力:
**** List of PLAYBACK Hardware Devices ****
card 1: PCH [HDA Intel PCH], device 0: ALC3232 Analog [ALC3232 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
(私はコンパイルしていアンドロイドではなく私のワークステーションでこれを実行してください)
もちろん、 'pcm_open'は失敗しました。なので、 'dev-> error'を表示してください。 – user58697
ありがとう@ user58697。メッセージは 'can not set hw params:Invalid argument'です。通常のalsaを使用していた場合は、 'plugin'レイヤーを使用しますが、これはオプションではないようですので、変更する必要があるかどうかまだ分かりません。 – JellicleCat