【答】
要解释这个问题,这里首先需要理解:
1、AVB连接的是stream,即操作最小对象是stream,而不是channel/端点
2、AVB一个stream中可以放多个channel,默认channel的mapping是一对一的,以AVB-DC原始firmware为例
AVB-DC borad #0: input channel 0 - output stream 0 -> AVB-DC borad #1: input stream 0 - output channel 0
AVB-DC borad #0: input channel 1 - output stream 0 -> AVB-DC borad #1: input stream 0 - output channel 1
AVB-DC borad #0: input channel 2 - output stream 0 -> AVB-DC borad #1: input stream 0 - output channel 2
AVB-DC borad #0: input channel 3 - output stream 0 -> AVB-DC borad #1: input stream 0 - output channel 3
3、XMOS方案实现了一个media fifo (详见AVB-Design-Guide),listener端在获取一个stream的数据后,可以自己修改firmware来使这一个stream中每个channel的数据送到指定的硬件analog接口上,即可以自己定义channel mapping
所以回到问题,对于AVB-DC,默认设计中是一个stream,每个stream 4 个channel,
如果说的端点是音频的channel,
有下面2种解法:
1、根据上面第3点,可以修改listener端的firmware,将channel0 的audio data sample复制到其他channel
AVB-DC borad #0: input channel 0 - output stream 0 -> AVB-DC borad #1: input stream 0 - output channel 0 - analog output 0
|-> AVB-DC borad #1: input stream 0 - output channel 0 - analog output 1
|-> AVB-DC borad #1: input stream 0 - output channel 0 - analog output 2
|-> AVB-DC borad #1: input stream 0 - output channel 0 - analog output 3
2、或者,修改firmware,让talker与listener为4个stream,每个stream中只有1个channel
AVB-DC borad #0: input channel 0 - output stream 0 -?> AVB-DC borad #1: input stream 0 - output channel 0
AVB-DC borad #0: input channel 1 - output stream 1 -?> AVB-DC borad #1: input stream 1 - output channel 1
AVB-DC borad #0: input channel 2 - output stream 2 -?> AVB-DC borad #1: input stream 2 - output channel 2
AVB-DC borad #0: input channel 3 - output stream 3 -?> AVB-DC borad #1: input stream 3 - output channel 3
然后控制连接:
connect 0 0 1 0
connect 0 0 1 1
connect 0 0 1 2
connect 0 0 1 3
即:
AVB-DC borad #0: input channel 0 - output stream 0 -> AVB-DC borad #1: input stream 0 - output channel 0
|-> AVB-DC borad #1: input stream 1 - output channel 1
|-> AVB-DC borad #1: input stream 2 - output channel 2
|-> AVB-DC borad #1: input stream 3 - output channel 3
init_media_input_fifos 函数中吗?好像不行.
avb新手求助。