|
From: zheng r. <zhe...@gm...> - 2018-11-02 08:09:42
|
> Tim Roberts wrote: > >> That's the way isochronous works. You need to read about this in the USB >> spec, because isochronous buffering is quite different from bulk and >> interrupt.. With bulk and interrupt pipes, things work in units of >> transfers. You ask for 360,960 bytes, and the packets transfer until that >> packets fills. But with isochronous, everything happens one packet at a >> time. There is no concept of larger "transfers". You'll provide a buffer >> that is some multiple of 8x3072 bytes, divided into individual 3072 byte >> packets. That's why you have to prepare packet descriptors. >> >> The result you get back is not one contiguous buffer. You have to look >> at the packet descriptors to determine how much valid data is in each >> packet. If you got all three transfers in a microframe, there will be 3072 >> bytes in that packet. If you only got one transfer in a microframe, there >> will be 1024 bytes of data and 2048 bytes of garbage. If you missed a >> whole microframe, there will 0 bytes of data in that packet. You have to >> reassemble the frame from those packets. >> > > Without "large transfer", we have no way to separate the individual image > frames from the isoc packets if we don't add any marks between the frames, > right? > > Best, > Zheng > |