大家好!
我想请教一下xmos在使用AVB协议进行视频传输时,IEEE 802.1AS时钟同步协议是如何起作用的呢?与音频有着怎样的区别呢?因为我在使用wireshark抓包的时候,发现抓上来的视频包中的 Timestamp valid字段是FALSE,AVBTP Timestamp是0x00000000;我之前的理解在音频传输时IEEE 802.1AS主要体现在Timestamp字段,而音频和视频经过AVB协议传输应该仅仅只是数据的封装格式不一样,所以我不能理解视频传输该字段是FALSE。感谢你的任何帮助!谢谢!
XMOS的视频传输
-
- Member
- Posts: 15
- Joined: Thu Jun 04, 2015 11:37 am
不好意思,之前理解有误,在传输视频的时候,1722的封包格式中提到Timestamp Valid字段是False,AVBTP Timestamp字段是0x00000000,这是正确的;在视频传输时时间戳字段被封装在188字节TS流数据之前的4个字节,所以我们抓包所看到1394 Packet Data Length字段是192字节(我的理解是 4byte(timestamp)+188byte(TS流数据),不知是否正确?)。但是在代码中看到tsi_output函数中取出时间戳值却并没有地方使用,如果打上的时间戳值没有被使用,那是不是可以认为视频传输的时候802.1AS时间同步协议没有起到作用呢?不知我这样的理解是否正确?还是有其他地方我没有注意到,希望大家能够指点一二,谢谢!
Code: Select all
while (1) {
#pragma xta label "ts_spi_output_no_data"
// Wait for the next packet
while (*test_ptr) {
// Wait until it is time to transmit the packet
unsigned ts = *rd_ptr++; //取出时间戳
// Transmit first word
sync(p_data);
#pragma xta endpoint "ts_spi_output_first"
p_sync <: 1;
p_data <: *rd_ptr++; //输出第一个TS流的视频数据
#pragma loop unroll
for (unsigned i=0; i<46; i++) {
#pragma xta endpoint "ts_spi_output_loop"
p_sync <: 0;
p_data <: *rd_ptr++;
}
*rd_ptr++ = 0;
if (rd_ptr > end_ptr)
rd_ptr = start_ptr;
test_ptr = rd_ptr + MEDIA_OUTPUT_FIFO_INUSE_OFFSET;
}
}