2013年9月27日金曜日
cubieboard2 + SPDIF + Passthrough
実はこれが一番の目的でした。
パススルー!!です。
折角SPDIFで外部のオーディオ機器と接続しているのですから、PCMに変換せず、そのままのDTS形式でデータを投げたいのです。
でも方法が分からず色々悩みましたが、やっとその答えが見えつつあります。
1.ドライバのソースをひたすら眺める。
A20 の SPDIF のドライバを以下のディレクトリに見つけました。
lichee/linux-3.3/sound/soc/sun7i/spdif/
この中のソースを眺めていると、気になるソースを発見!!
/*add the pcm and raw data select interface*/
switch(params_channels(params)) {
case 1:/*pcm mode*/
case 2:
fmt = 0;
break;
case 4:/*raw data mode*/
fmt = 1;
break;
default:
return -EINVAL;
}
う~ん。そんな物なのでしょうか?
チャンネル数が4ならRAWモード??
なんか微妙ですが、たぶんこれです。
2.再生する術を考える。
externalの下を眺めていると、使えそうなツールがありました。
その名も tinyalsa です。
そこで、先ほど得た知識を元に、tinyplay.c にパッチを...
チャンネル数を無理やり 4 に変えます。
// config.channels = channels;
config.channels = 4; // RAWモード
最後に、どっかのWEBサイトで拾ってきた DTS の WAV ファイルをこのツールで再生してみます。
# tinyplay test.wav -D 2
すると...わたくしの所有する SONY MDR-DS5100 (古っ!!)の DTS のインジケータが光輝きました。
なんとなく、音質が良くなった気がしますが、それ以上に、この方法で音楽を再生すると、Androidの操作音とMixされることが無くなるので、とても良い感じです。
操作音とMixされると、雑音っぽいのが混ざるのが気になったので...
とりあえず、パススルーっぽいものは動いています。
ですが、実用に至るまでには、もう少し調べることが残ってます。
何故ならDTSのデータの作り方が分かってません。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿