On 1/17/22 2:29 PM, Gerd Hoffmann wrote:
Hi,
Camera redirection through the USB redirection protocol seems feasible. But
I have several concerns:
1, UVC started to support H.264 and VP8 since version 1.5, old version OS
has no support(Link https://en.wikipedia.org/wiki/USB_video_device_class).
2, Even guest side supports UVC 1.5, the camera App still has a chance to
select which format to use. We can control this from hypervisor side.
The camera could offer vp8 as only supported codec ...
But, yes, using usb redirection will loose some flexibility because you
can't recode the video frames then.
3, I noticed that USB emulation uses a lot of CPU, so I also have a plan to
introduce virtio camera to reduce the CPU utilization.
uhci and ehci are pretty bad indeed. xhci should behave noticeable better.
So from the point of my view, I prefer a common camera redirection
protocol(event a hard work to do, but I can support it for a long time).
I think you can take some ideas from the audio protocol (start/stop
stream, ...). Define controls (brighness etc), probably best to follow
uvc or v4l2 here. Negotiate video format capabilities, so there is the
option that server and client agree on some future codec when supported
on both ends.
take care,
Gerd
Hi,
Actually, during I developed the QEMU camera subsystem and UVC
emulation, I referred to both UVC and v4l2.
Detailed type definition and function declaration in
include/camera/camera.h of this patch:
https://patchwork.kernel.org/project/qemu-devel/patch/20211227142734.691900-2-pizhenwei@xxxxxxxxxxxxx/
I suppose the API may looks like this(of cause, detailed implementation
needs take some ideas from audio). Could you please take a look at it?
--
zhenwei pi