Hi *,
I already started working on solution b. Solution a should just be used
as a media clock stream talker. i.e. The JACK backend as such should
just be working as a media clock backend, either master or slave. You
guys already named the pros/cons...
On 06/20/2019 08:06 PM, Fernando Lopez-Lezcano wrote:
  On 4/11/19 1:44 PM, Christoph Kuhr wrote:
  Hi *,
 I wanted to start a discussion of what kind of AVB connectivity makes
 the most sense for jack.
 But please keep in mind what AVB is and isn't. 
 For my use case b) would be the only choice. I have been using Motu
 hardware (with all its problems) because of its flexibility in setting
 up complex systems[*] - the biggest has 8 AVB connected audio
 interfaces. I am actively looking at AVB options as I am currently
 restricted to 64 channel max I/O through USB to/from the Linux computers.
 One talker/one listener would not be nearly enough. Dynamic stream
 management without having to restart jack would be (almost) a requirement.
  a) Fully functional Backend
 b) Media Clock Backend with AVB jack clients
 pro a)
 - the AVDECC connection management could be done seamlessly in a jack way
 - out of the box avb functionality
 con a)
 - only one talker/listener, single audio interface
 - huge programming effort
 - no dynamic audio mapping
 pro b)
 - multiple talkers/listeners with multiple audio interface using alsa api 
 So the AVB stuff would be written in ALSA?
  - avoiding huge code addition to the backend,
thus much easier to
 maintain 
 Hmmm, sure, but the code has to go somewhere, is that ALSA? 
No, it would be a seperate code base. I already started it.
It has two major dependencies:
JACK and OpenAvnu.
It would be a pain for either project to keep the deps...
The Idea is as follows:
- Python websocket server with HTML/JS UI  (see screenshot)
- OpenAvnu / AudioScience libavdecc example controller app (OpenAvnu repo)
- Python bash wrapper, that runs the controller app
- Py websocket server create JACK AVB talker/listener clients:
        -> listener is easy:
                - just launch a JACK client with some libpcap code
        -> talker is harder:
                - You need to find the attached audio hardware
                - create a single talker for a single attached audio
                        interface (HARD CONSTRAINT!) in ALSA
                - all talkers AVTP packets need to be scheduled with
                        precise timing for DMA transfer and HW Queue
                        transmission
On 06/20/2019 05:48 PM, Ethan Funk wrote:
  Very good on the AVB clocking. I can't get the
IEEE pubs legally, since
 I have not been an IEEE member, or employed by a company large enough to
 be an IEEE member, since the 1990's. 
BTW, does someone have the updated standards? I really could use them.
Unsurprisingly, our university does not have an IEEE account.......
- 1722-2016: 
https://ieeexplore.ieee.org/document/7782716
- 1722.1-2019: 
https://ieeexplore.ieee.org/document/8666953
 As a side question regarding Jack2 and midi: I would like to use jack's
 midi mechanism to pass control information between components in my
 automation system. So far I have been able to twist existing midi
 packets suck as time-code, and such to control player components and
 keep my mixer appraised as to source play positions and such. However, I
 have no easy way to pass meta data, such as song tags, through midi,
 with out the complexity of using sysex messages and base64 encoding the
 8 bit meta-data fto be passed as midi data. Can I ignore midi's
 underlying byte format and just pass 8 bit buffers to jack and expect
 jack to deliver the buffers with out jack inspecting the buffers for
 validity according to midi? I only intend to use the midi ports within
 my applications various player and encoder components. I do not expect
 any of this data to actually be send to a device or program that is
 expecting real midi data.
 
Well I did not look into MIDI over AVB so far. Have enough to struggle
to get audio and management stuff right...
But if someone feels up to the task, very appreciated!
   con b)
 - cpu load... price for multiple talkers/listeners 
 Not too concerned about this (a single 64 channel USB interface on my
 current computers uses up about 12% of a core)... 
 
Yeah, but your not doing PTP, MRP, MAAP on the CPU in real-time as a
requirement to receive a single sample. And the context switches between
the AVTP receiver/talker threads.....
If you use a MOTU it takes care of this stuff for you. Standard USB has
nothing comparable in place, if just class compliant.
If someone does not like the very very simple interface, you are welcome
  to make it pretty. For me, I hate JS and stuff! ;-)
Best,
Ck