From: Tim R. <ti...@pr...> - 2010-11-09 21:52:07
|
Till Harbaum / Lists wrote: > i am using libusb to write a video output driver for mplayer. Es expected, sometimes the USB is not fast enought to cope with the video rate. > > I am currently creating a transfer for every image to be sent. I set a flag at transfer submission and clear it in the callback. The problem now is: If i call the event handling until my flag is cleared, then i force mplayer to wait for every single usb transfer to complete. This is a problem if USB is too slow to play at full speed. > > I would like to process all pending events. If after that my flag still isn't cleared and know USB is too slow and i have to drop the frame. If it is cleared i know i can send the next frame. > > How do i know whether there are still pending events to be handled? You can do your USB work in a separate thread, and have it keep track of the number of frames sent and completed. If the difference becomes too large, you can drop a frame. Are you sending uncompressed data? Are you using an isochronous pipe? You should be able to figure out whether you'll drop data. For isochronous, you can push 24MB/s. For bulk, you an push about 40MB/s. -- Tim Roberts, ti...@pr... Providenza & Boekelheide, Inc. |