EZ-USB FX3 SDK Video Class Example - Frame Rate?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

I am new to the world of video, and especially video-over-USB.

   

I have the EZ-USB FX3 SuperSpeed Explorer Kit. Everything is installed. I can compile new code and program the FX3 OK.

   

I am running the "USB Video Class example" from the SDK. This is the example that streams 4 frames of MJPEG over USB that shows the Cypress cup rotating.

   

I am using VLC as my video sink.

   

The problem I have is in understanding what I see. Why does the cup rotate so fast?? I thought that the programmed frame rate was set to 15 fps, but it appears much faster.

   

If I change the USB descriptors and the UVC probe control to 1 fps, VLC shows it at the same speed as when set to 15 fps.

0 Likes
3 Replies
Anonymous
Not applicable

Hi,

   

Most Host Applications like VLC set the frame rate as per the reception of data. The descriptors are only for the user to know whar are all the frame rates present.

   

In that particular 'Cup Video firmware', the firmware may send the video at a much faster rate actually. Only in an application where a camera is acually present we can put a frame rate equal to the camera's frame rate. As this is just a demo case, we can put whatever we want. But VLC Plays at a rate at which it receives data.

   

Regards,

   

- Madhu Sudhan

0 Likes
Anonymous
Not applicable

Hi Madhu,

   

Many thanks for your reply and explanation.

   

I had presumed that video players used the supplied frame rate so that they knew at what rate to 'play' the received frames at. This way they could buffer received frames and would not be reliant on 'just in time' delivery of the frames. Of course, like I said in my original post, I have no experience of video, so this was just my assumption. I based this on what I see when streaming a video over the internet - the receiving player buffers as many frames as it can in order to cope with any drop-out on the link, but the player still plays the video at the correct rate.

   

So, in the case of having a 'real' camera, the delivery of the data over the USB link will be equal to the delivery rate by the camera. Once the USB device has delivered a given frame, if it is asked for 'more' data by the host, presumably it returns 'nothing' until the 'next' frame is received from the camera.

   

I suppose my next move is to try a real camera, probably using the Cypress Video Class example (AN75779) as a starting point.

   

As an aside, can anybody point me at a good book or internet sources to help me to get to grips with terminology and a practical understanding of Video over USB, Streaming Video over the Internet etc... ???

0 Likes
Anonymous
Not applicable

Hi Dh,

   

I have been trying to use the example of the video class for a particular application design. I am yet to finished with that. still need help on this.

   

The exmplae document accompanied has details of Video over USB.  You can also refer to USB by example to get hold of how the usb works refer link below

   

ftp://ftp.efo.ru/pub/ftdichip/Documents/AppNotes/Embedded_USB_Design_By_Example_Rev_2.0.pdf

   

http://read.pudn.com/downloads81/ebook/312702/USB%20design%20by%20example.pdf

   

As far as video streaming over Internet is concerned , you need to know \

   

* Video basics ( formats, compression, digital representation form etc... ) 

   

* Video over internet ( TCP, RTP, RTSP) refer examples of live555 you will get some ideas.  Well you need to know the video compression formats and the video container formats.

0 Likes