新年あけましておめでとうございます。
本年も何卒よろしくお願いいたします。
令和3年元日 パパリウス
ちょうど一年前のこの日、新年に取り組みたいテーマをコメントとして残しておりました。
新年明けましておめでとうございます。
本年も何卒よろしくお願いいたします。令和2年元日 パパリウス
@hiroget9 さん
今年も引き続き、音質改善に焦点を当てて取り組んでいきたいと思っています。
取り組み予定のメインテーマ
- Pi4版の実装 (LFSベース、EVLカーネル、64bit)
- aplay-rtの廃止(カーネルスレッド化)
- セパレートの通信方式刷新 (カーネルのTCP/IPプロトコルスタックをバイパス)
サブプロジェクトとして
- NAS兼フロントエンド
- シングルコアバックエンド
- モバイル版
にも取り組めるといいなと思っています。
これからもどうぞよろしくお願いいたします。
Pi4版の実装は5/16にv1.0.0正式リリースという形で実現することができました。
従来のraspbianベースを脱却し、カーネル、ライブラリを含む文字通り全てのソースを音楽再生最優先のビルドオプションで構築したものです。
RPi3版を開発していた当時、「音楽再生に影響する全てのソフトウェアを手作業でビルドしたい」と願っていました。ボトルネックとなり得る箇所を全て把握して、必要なら自分で直せるようにしたいと考えていたからです。
aplay-rtのカーネルスレッド化は実現には至りませんでした。ただし、ユーザプロセスをカーネルスレッドで実装したいというアイデアは常に念頭にあります。
これが実装できれば、システムコール呼び出しを通常の関数呼び出しに置き換えることができ、さらにコンテキストスイッチに伴うTLBキャッシュのフラッシュを回避することが可能になりますので、他の手段では解消が難しいこれらのオーバーヘッドを根本から断つことができます。
恐らくは、カーネルスレッド化の第1弾はAoEバックエンドのaoeserverプロセスになると思います。
セパレートの通信方式刷新は、Audio over Etherという名で12月からβテストを開始することができました。
当初の構想はLinuxカーネルのネットワークスタックをバイパスすることでオーバーヘッドの削減を狙うという素朴なものでしたが、AoEではさらにアイデアを推し進めてPCMデータのゼロコピー再生を実現するものになりました。
技術面でも音質面でもとても面白いプロダクトとなりました。
2021年も引き続き音質改善に焦点を当てて取り組みたいと思っています。キーワードはAoEとUSBです。
取り組み予定のメインテーマ
- USB DACのサポート (USBドライバの改良)
- AoE実装の強化 (カーネルスレッド化)
- AoE実装の強化 (ネットワークドライバへのAoE組み込み)