[alsa-devel] [RFC - AAF PCM plugin 2/5] aaf: Load configuration parameters

Guedes, Andre andre.guedes at intel.com
Tue Aug 21 23:57:55 CEST 2018


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3262 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20180821/441066b9/attachment.bin>


More information about the Alsa-devel mailing list