ssprocLib のFilterクラス
- ssprocLib のクラスは独特の思想 → 詳しくはこちら
- フィルタをつなげて音を作る。
- 入力段(マイク入力やボタンなど) は Src とよび、出力段(スピーカ出力) は Sink とよぶ。
- Src も Sink も Filter の派生クラスである。
- Filter (全てのフィルタの基底) → NullFilter (次の段の無いフィルタ (=Sink) の基底) → BaseFilter (次の段の有るフィルタ (Srcも含む) の基底)
- BaseFilterは、次の段のフィルタをメンバに持ち、コンストラクタで指定する。
- つまり、Sink は NullFilter の派生クラスとして実装し、Srcやその他のフィルタは BaseFilter の派生クラスとして実装する。
ssprocLib の思想に沿って設計すべき?
- ssprocLib と AudioClass を併用したら実行時エラーが発生した。
Memory pool initilization error.
Audiarm_hardfault: Hard Fault escalation:
arm_hardfault: PANIC!!! Hard Fault!:
arm_hardfault: IRQ: 3 regs: 0xd07cd78
arm_hardfault: BASEPRI: 000000e0 PRIMASK: 00000000 IPSR: 00000003 CONTROL: 00000000
arm_hardfault: CFSR: 00008200 HFSR: 40000000 DFSR: 00000000 BFAR: 0007ce74 AFSR: 00000000
arm_hardfault: Hard Fault Reason:
_assert: Current Version: NuttX 12.3.0 SDK3.2.0-8e5b871 Feb 9 2024 14:56:53 arm
_assert: Assertion failed panic: at file: :0 task: spresense_main 0xd0040b1
(以下略)
- 原因は不明。この手のエラーは深追いしたくない。
- AudioClass は使わず、ssprocLib の思想に沿った設計をすべきか。