UVC Camera image is not displayed

I installed “DirectShow UVC Driver Application” here.
Even if the application is activated by connecting the UVC camera via USB, the camera image portion will not be displayed in black.
Choosing Capture-> Still Capture will freeze the application.

By the way, if “Stream UVC Driver Application” is installed, the camera image will be displayed correctly.
However, the usage rate of CPU Core 1 remains 100%, and other processing becomes impossible.

Please teach me how to solve it.

@kyas,

Thank you for contacting support.

Did you check “UVC DirectShow application preview can be seen only on Unified Display interface and doesn’t show on external VGA display on Apalis T30.” in https://developer.toradex.com/knowledge-base/usb-webcam-for-windows-ce#Limitations[https://developer.toradex.com/knowledge-base/usb-webcam-for-windows-ce#Limitations][1] article.\

If it doesn’t help, please let us know your feedback on below questions?

Which display interface you are using?
Could you please share USB camera details?
Could you please test with other USB cameras on the same setup?
Is it possible to test the same camera with Apalis iMX6 or any other toradex WinCE supported SOMs?

Thank you for your response.

I am using LVDS output screen. Is this a problem?

Since I tried with another camera, since the camera image was displayed, I think that it was a problem that the input format was MJPEG instead of YUV.
However, if you launch “DirectShow UVC Driver Application” and display the camera image, the CPU core 1 usage rate will be about 60 to 70%, and when you start Still Capture it will be 100% and the application freezes after a while.
It is written that “DirectShow UVC Driver Application” can support MJPEG format, but is it possible to tell me specifically how to do it?

Also, which combinations can minimize the load among input formats MJPEG, YUV and applications “DirectShow UVC Driver Application” and “Stream UVC Driver Application”?

@kyas,

Since LVDS is implemented over LCD Parallel RGB lines, you must see the camera preview.

YUV and MJPEG will use different endpoints in the USB communication. Directshow application is configured to use the overlay for preview(you can set GDI preview also) and stream driver application is using GDI layer for preview. If you are not seeing the preview then the issue would be on USB endpoint transfer or display overlay. Since you are not able to capture still picture I am highly doubting issue would be on USB transfer. Could you please share USB camera details, let us see some basic information about the camera.

If possible, could you please test other USB cameras on the same setup and let us know your results. Because, we have tested few USB cameras on Apalis T30, it is working, didn’t see the issue.

YUV format is better for image processing. MJPEG is better for image transfer over network or USB serial interfaces. We are using software MJPEG decoding, there would be a chance of good amount of CPU load will be consumed for MJPEG decode.

Depends on your product requirement, you can do a proof of concept testing and select the image format.

Just for your reference, if you are not thought about this: You can set process affinity using Colibri monitor tool or modify camera application source code to distribute the load on the CPU cores.

Please feel free to contact us if you need further assistance on this.

Thank you for detailed explanation.
I have no experience with a system using a camera and it is difficult, so I would like to proceed from what I understood.
Moreover, we will report again about the test using other cameras.

About camera performance Because there was no detailed information on the Web, it is described below.

Manufacturer: MOSWELL

Model: MS-M33WU

Image size: 1/3 inch wide dynamic range color CMOS sensor

Number of effective pixels: 756 (H) × 504 (V)

Number of video output pixels: 640 (H) × 480 (V)

Scanning method: Progressive scan

Synchronization method: internal synchronization

Video output: USB 2.0 (Full Speed, High Speed)

Video output data: MJPEG

Minimum subject illuminance: 0.2 Lux (F1.4)

Dynamic range: 120 dB

AGC: ON

AWB: ON

Shutter: Rolling shutter

In order to use this camera, “DirectShow UVC Driver Application” needs to correspond to MJPEG.
Is it possible to teach how to do it?

Dear @kyas,

Yes, you can use MJPEG format for the Directshow UVC application. You need to port or develop MJPEG filter, we never tried it.
Please download Microsoft USB camera driver or USB Camera driver WEC7. MJPEG filter source code is included with UVC DirectShow driver. Please try to make it work.

We don’t have MS-M33WU UVC camera. So, we never tested it.

Please let us know if you need further assistance on this.

Thank you for your response.

I built the OS with “USB Camera driver WEC 7” installed.
“USB Camera driver WEC 7” also contained “MJPEGFilter”.

Well I’d like to modify “Directshow UVC application” to correspond to MJPEG, but I do not know how to change the commented out MJPEG related source code of “SampleGrabber.cpp”.

I would be happy if you could tell me.

Also, I want to test the load distribution on the CPU core.
In Colibri Monitor, there is “Set Affinity” which specifies the CPU core to use for the process.
Is it possible to instruct the same thing as this “Set Affinity” from the application that I made? Using coredll.dll API etc.

Should I post a question in a separate thread?

Dear @kyas,

Could you please set #define SUPPORT_MJPG 1 and verify MJPEG streaming works on the application. We might not be completed MJPEG streaming on the UVC camera application. Could you please help yourself to make it work.

Yes, you are correct. You can use Set affinity API on your application