multi frames support wrong in linux under the Ssspeed mode

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

cross mob
laze_4418921
Level 3
Level 3
25 sign-ins First solution authored 25 replies posted

hello,my firmare both Hsspeed and SSspeed can support multi frames well in windows. however, in linux under the Ssspeed mode multi frame can be emunerated and used well,but under Hsspeed only the frame index number is 1 can be used.is there any special changes need to be take in Hsspeed under linux?

0 Likes
1 Solution
lock attach
Attachments are accessible only for community members.

Hello,

I have modified AN75779 to support 2 resolutions in both SuperSpeed and HighSpeed mode.

Please find the attached FX3 firmware.

Super Speed resolutions:

1. 1280 x 720 at 30fps

2.  640 x 480  at 30 fps

High Speed resolutions:

1. 640 x 480  at 15 fps

2. 320 x240  at 15 fps

Use the CyU3PConnectState() API in the uvc.c file to choose super speed or high speed enumeration.

password for rar: cypress

Thanks,

Yatheesh

View solution in original post

0 Likes
17 Replies
YatheeshD_36
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello,

The bandwidth achievable for a USB device depends on the host controller and the application running on the host as well.

Please go through the Application note: AN86947 for a better understanding on throughput dependencies.

Thanks,

Yatheesh

0 Likes

hello,

     what i want to achieve in my firmware is multi frames can be enumerate, each frame has different index and then one frame can be choose to use. for example, both 384x288@25Hz(index 1)  and 360x240@25Hz(index 2) can be enumerated correctly in Linux under Hs-speed,but when the frame to use is 360x240(index 2),it can not show correctly ,after change the frame index to 384x288@25Hz(index 2)  and 360x240@25Hz(index 1),it can work well.Is the problem caused by bandwidth shortage?

0 Likes

Hello,

This is not related to bandwidth. The enumeration is dependent on the descriptors reported to the host about the supported formats and frames and handling the Probe and commit in the firmware.

Please try the same in a different Linux PC and see if you are facing the same issue.

Thanks,

Yatheesh

0 Likes

hello,

i have test in different Linux PC and faced the same issue.and with v4l2 i found under Hsspeed it just enumerated as the frame index 1,when i tired to change it manually, only width/height/bytesperline can be changed,however the sizeimage can not be changed success.

pastedImage_0.jpg

(640x513 is the frame index 1)

0 Likes

pastedImage_0.jpg

the frame 384x288 is set manually, however the sizeimage can not be changed

0 Likes

Hello,

Can you please let me know if you are using any of our example firmware as a base firmware? for example AN75779 or the UVC example in the FX3 SDK.

Please share the firmware with us if possible.

How are you manually changing the frame index in a respective format and  checking the frame details (width, height and image size)?

Use the VLC media player in Linux and try to stream IN different frames supported and see if it works.

Thanks

Yatheesh

0 Likes

hello,

    i am using the AN75779 example,and i just change the frame information by a v4l2 demo.and when using only 1 frame it can show correctly in vlc.but with more than one frame, only the frame index 1 can be used.

0 Likes
lock attach
Attachments are accessible only for community members.

this is the enumerate file

0 Likes

Hello,

Please update the maximum video/image size (in bytes) in the frame descriptors as per the frame size i.e. height x width x 2 for the second frame descriptor and check if it works.

pastedImage_1.png

Thanks,

Yatheesh

0 Likes

i have changed this and checked. it seems nothing change. and is there any example for adding more than one frames and formats? i want to make sure if the changes i had make in uvc.c are right.

0 Likes
lock attach
Attachments are accessible only for community members.

Hello,

I have modified AN75779 to support 2 resolutions in both SuperSpeed and HighSpeed mode.

Please find the attached FX3 firmware.

Super Speed resolutions:

1. 1280 x 720 at 30fps

2.  640 x 480  at 30 fps

High Speed resolutions:

1. 640 x 480  at 15 fps

2. 320 x240  at 15 fps

Use the CyU3PConnectState() API in the uvc.c file to choose super speed or high speed enumeration.

password for rar: cypress

Thanks,

Yatheesh

0 Likes

hi YatheeshK_36,

     i have checked the firmware,and in my firmware i just add another format and then add the descriptors in cyfxuvcdscr.c and add  glprobectl as those in your firmware and change 0x01 to  0x02 /* Use 1st Video format index */. Then  add formatIndex = glcommit[2], and add other cases in your firmware as if(formatIndex == 1 or 2)...and it seems change format can not work.is there any other changes missed?

0 Likes

Hello,

Please try the exact firmware which I had previously posted and let me know if it works as expected i.e. you are able to dynamically change the resolution (frame size) using the UVC application. The firmware image (.img) is present in the Debug folder.

You are trying to add a new format to the firmware which I had posted and its not working. Please let me know if my understanding is correct?

If yes, can you please detail on the issue you are facing. Are you not getting an option to change the format from the UVC application or the format change is not happening as expected .

Thanks,

Yatheesh

0 Likes
lock attach
Attachments are accessible only for community members.

hi Yatheesh,

  i have made changes in your firmware,and it seems not work. i am not sure whether there are anything missed.  And in your firmware ,i just change the cyfxuvcdscr.c and probectrl and it also not work.  but before this,i do not change the glprobectrl and it works well in windows os.

0 Likes

Hello,

I tried your firmware in windows and it seems to work in Windows camera application and VirtualDub in windows.

I was able change both the format and frame and stream the video.

Can you please let me know the exact issue you are facing?

Please try a different host application and check if you are able to stream in the data.

Thanks,

Yatheesh

0 Likes
lock attach
Attachments are accessible only for community members.

hello,

      the firmware i'm using have the same change as those in AN75779,and with my device(640x512) it can show correctly in windows and the format can change in my own demo,when put RGB format as format index1,however when put YUYV as format index 1, the format can still changed but the video is not quite right under both two formats. I'm not sure whether this means my firmware is right or wrong. and how the difference comes.

   the pictures are all made in same scene.

0 Likes

Hello,

I am able to stream both RGB565 and YUV2 formats successfully. There will be color discrepancy in RGB format as we are setting the image sensor to stream out only YUY2 format through the SensorInit() function in sensor.c file of the firmware, please check.

When the host application format is set to RGB, the YUY2 format that is received from the image sensor will be decoded into RGB format which causes the color variations in the image.

If you want to stream IN RGB format, the image sensor should be configured and the host application must also support streaming the required format.

Please let me know if you have more queries.

Thanks,

Yatheesh

0 Likes