Hi Pierre,
On Mon, 2018-08-20 at 22:16 -0500, Pierre-Louis Bossart wrote:
+Plugin Configuration +--------------------
+The plugin parameters are passed via ALSA configuration file. They are defined +as follows:
- ifname: Network interface used to transmit/receive AVTP
packets.
- addr: Stream destination MAC address.
including multi-cast address?
Correct.
- prio: Priority used by the plugin to transmit AVTP
traffic. This
option is relevant only when operating in playback mode.
- streamid: Stream ID associated with the AAF stream
transmitted or
received by the plugin.
So the streamid has to be statically configured, right?
Correct.
If there an assumption that all streams exposed in this configuration file can all be used concurrently? Or put differently that the streams are only exposed if they can be used independently at any time?
Yes, the plugin is expected to handle multiple streams concurrently. I have tested with two, mimicking one Class A and one Class B streams.
- pcm.aaf {
type aaf
ifname eth0
addr AA:AA:AA:AA:AA:AA
prio 3
streamid BB:BB:BB:BB:BB:BB:0001
mtt 2000
time_uncertainty 125
frames_per_pkt 6
- }
+Put the above to ~/.asoundrc (or /etc/asound.conf), and use the AAF PCM virtual +device with your ALSA apps. For example, to stream the content from a wav file +through the network, run:
- $ aplay -Daaf foo.wav
How do you deal with multiple streams then? -Daaf:<stream_number> ?
Two ways:
1) Define multiple AAF devices in asoundrc (e.g. aaf0, aaf1, aaf2, etc.) and select them using the -D option e.g.:
$ aplay -D aaf0 foo.wav $ aplay -D aaf1 bar.wav
2) Leverage ALSA config runtime arguments e.g. define the aaf device as:
pcm.aaf { @args [ IFNAME ADDR PRIO STREAMID MTT UNCERTAINTY FRAMES ] @args.IFNAME { type string } @args.ADDR { type string } @args.PRIO { type integer } @args.STREAMID { type string } @args.MTT { type integer } @args.UNCERTAINTY { type integer } @args.FRAMES { type integer }
type aaf ifname $IFNAME addr $ADDR prio $PRIO streamid $STREAMID mtt $MTT time_uncertainty $UNCERTAINTY frames_per_pkt $FRAMES }
And pass the device parameters via -D option like this:
$ aplay -D aaf:eth0.1,01:AA:AA:AA:AA:AA,3,AA:BB:CC:DD:EE:FF:0001,2000,125,6 foo.wav
$ aplay -D aaf:eth0.2,01:BB:BB:BB:BB:BB,3,AA:BB:CC:DD:EE:FF:0002,50000,1000,12 bar.wav
Particularly, I'm using 2) since it is more practical for testing purposes.
+To receive the AAF stream generated by the previous command, run:
- $ arecord -Daaf
Did you mean on a different machine or are there any loopback capabilities?
Yep, on a different machine. I'll add that info here.
Regards,
Andre