Hi, @marcoapc.
While working on this driver, I can truly say to you, that a lot of time went into understanding hmulti_audio.
If you try to search of any documentation of multi_audio, youāll likely come across (although even trying to find this back took me a little while) this mail thread: ā[ā¦] Iām afraid no spec documentation is available, reading the sources might help. [ā¦]ā and a link to an old newsletter.
The ācompleteā documentation for the driver API is included in three files: multi_audio.h
, multi_audio.gb
, and multi_audio.txt
. To get these files, write to trinity [at] be [dot] com
Only multi_audio.h
remains, the others are sadly lost to time.
While the newsletter gives a bit of information about BUFFER_EXCHANGE, it only serves at that. Everything else, shall be inferred from previous drivers and multi_audio code.
Some structs, contain members of which I thought to be important and even defining for what other members should be read, are completely ignored. (See flags in BUFFER_EXCHANGE, playback_latency, record_latency, etc.)
While reading multi_audio.h
helped a lot, if you only keep that, youād never know that B_MULTI_GET_ENABLED_CHANNELS
and B_MULTI_SET_ENABLED_CHANNELS
are actually required to be implemented; multi_audio.h
only warns about B_MULTI_SET_GLOBAL_FORMAT
as required to be implemented.
Many little cases like the above exist.
But I think I went a bit long. I hope I cleared it up!