IP Library Granted Patent US 9,389,896
Granted Patent B1
US 9,389,896 · App. 14/452,293 · Granted Jul 12, 2016

Sharing webcam between guest and host OS

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,389,896
App. No.
14/452,293
Granted
Jul 12, 2016
Kind
B1
Abstract

A system, method and computer program product for implementing a video camera that is accessible by different Virtual Machine GOSs and the Host system. A standard USB video camera is build into a Host system. A VM running a Guest OS is launched on the Host system. The Guest OS has virtual driver for the Host video camera. The virtual driver is connected to a virtual USB bus, which communicates with a special Host library over a Virtual Machine Monitor (VMM). A special Host side VM application acquires and processes video data from a standard Host system video processing API that communicates directly with a Host-side virtual camera driver. Video frames are provided via the Host-side VM application to the virtual USB bus and to the virtual driver. Host applications or other VMs can acquire video streams from the Host USB camera simultaneously.

Claims (57)

1. A system for sharing a camera between a Virtual Machine (VM) and a host, the system comprising:

a host system having a processor, a host OS running on the processor, and a camera installed;

the VM having a Guest OS;

a Virtual Machine Monitor (VMM) for passing video frames from the host OS to the VM;

a first video application executed on the host OS;

a second video application executed on the Guest OS;

a host OS video library for processing a video stream from the camera;

a host frame library for collecting frames from the camera;

a virtual bus implemented on the Guest OS for connecting to the host frame library;

a virtual camera with a virtual driver implemented on the Guest OS,

wherein:

the virtual bus sends requests to the host frame library and receives the frames via the VMM; and

the host frame library provides the frames to the virtual camera, which then passes the frames to the second video application without switching camera association between the host OS and the Guest OS, such that the video stream is displayed in both the first and second video applications.

2. The system of claim 1 , wherein the virtual bus is any of USB, FireWire, SCSI and Ethernet.

3. The system of claim 1 , wherein a video processing module running on the host OS provides support for USB camera virtualization on the Guest OS.

4. The system of claim 1 , wherein the host frame library provides a video resolution and a frame frequency to the VM upon request.

5. The system of claim 1 , wherein the frames are provided by a QT-push interface implemented on the host.

6. The system of claim 1 , wherein the video frames are triple buffered in the host frame library.

7. The system of claim 1 , wherein the video frames are converted from a shared camera video API to a VM format, and a file containing the frames is created and mapped to a shared file system.

8. The system of claim 7 , wherein the file is mapped to any of a RAM and an HDD cache.

9. The system of claim 7 , wherein the file has a header area and a plurality of data sectors representing the video frames, and wherein the VM buffers the video frames from the camera and transmits them as soon as the VM is connected.

10. The system of claim 1 , wherein, when the VM is suspended, the host system collects video frames and writes the video frames to parts of buffers marked by the VM as “free”.

11. The system of claim 1 , wherein the camera on the host side is started by a command generated from the VM.

12. The system of claim 1 , wherein resolution parameters are converted from the camera on the host side to the virtual camera.

13. The system of claim 1 , wherein frame rate parameters are converted from the camera on the host side to the virtual camera.

14. The system of claim 1 , wherein color space parameters are converted from the camera on the host side to the virtual camera.

15. A method for sharing a USB camera between Virtual Machines (VMs) and a host, the method comprising:

on a computer system having a host OS and a first video application, launching a Virtual Machine (VM) having a Guest OS, a virtual bus and a virtual camera;

launching a second video application on the Guest OS;

activating a Virtual Machine Monitor (VMM) for providing interface between the VM and a camera installed on the host OS;

sending a video request to a host standard video library from the virtual bus over the VMM;

under control of the VMM, receiving frames from a host frame library via the virtual bus;

providing the video frames to the virtual camera; and

providing the video frames from the host frame library simultaneously to all virtual video cameras, and then passing the video frames to the second video application without switching camera association between the host OS and the Guest OS, such that the video stream is displayed in both the first and second video applications.

16. A system for sharing a camera between multiple Virtual Machines (VMs), the system comprising:

a host system having a processor, a host OS running on the processor, and a camera installed;

a plurality of VMs, each of the VMs having a Guest OS;

each VM having a video application under the Guest OS;

a Virtual Machine Monitor (VMM) for passing frames from the host OS to the VMs;

a host OS video library for processing a video stream from the camera;

a host frame library for collecting frames from the camera;

virtual buses implemented under the Guest OSes for connecting to the host frame library;

a virtual camera with a virtual driver implemented under each Guest OS,

wherein:

the virtual buses send requests to the host frame library and receive the frames via the VMM; and

the host frame library provides the frames to the virtual cameras, which then pass the frames to the respective video applications without switching camera association between the VMs, such that the video stream is displayed in multiple video applications.

17. A system for sharing a USB camera between a Virtual Machine (VM) and a host, the system comprising:

a processor;

a memory coupled to the processor;

a computer program logic stored in the memory and executed on the processor, the computer program logic for implementing the steps of:

on a computer system having a host OS and a first video application, launching the Virtual Machine (VM) having a Guest OS, a virtual bus and a virtual camera;

launching a second video application on the Guest OS;

activating a Virtual Machine Monitor (VMM) for providing interface between the VM and a camera installed on the host OS;

sending a video request to a host standard video library from the virtual bus over the VMM;

under control of the VMM, receiving frames from a host frame library via the virtual bus;

providing the video frames to the virtual camera; and

providing the video frames from the host frame library simultaneously to all virtual video cameras, and then passing the video frames to the second video application without switching camera association between the host OS and the Guest OS, such that the video stream is displayed in both the first and second video applications.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Jul 18, 2019
From: UBS AG, STAMFORD BRANCH, AS ADMINISTRATIVE AND COLLATERAL AGENT
To: COREL CORPORATION; CLEARSLIDE, INC.; PARALLELS INTERNATIONAL GMBH
Reel/Frame 049787/0073 →
RELEASE OF SECURITY INTEREST RECORDED AT : REEL 047973 FRAME 0797 Recorded Jul 17, 2019
From: UBS AG, STAMFORD BRANCH
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 049773/0590 →
SECURITY INTEREST Recorded Dec 21, 2018
From: PARALLELS INTERNATIONAL GMBH
To: UBS AG, STAMFORD BRANCH
Reel/Frame 047973/0797 →
MERGER Recorded Jan 30, 2018
From: PARALLELS IP HOLDINGS GMBH
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 045193/0679 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 20, 2014
From: KODORKIN, ALEXANDER; POKROVSKY, ANDREY
To: PARALLELS IP HOLDINGS GMBH
Reel/Frame 033577/0102 →