IP Library Granted Patent US 8,645,579
Granted Patent B2
US 8,645,579 · App. 12/129,663 · Granted Feb 4, 2014

Virtual media device

Inventors: Robert D Young (Kirkland, WA); Stephen Cooper (Seattle, WA); Garret Buban (Carnation, WA); Brien Roell (Seattle, WA); David V Skyberg (Monroe, WA); Dennis Ming-Shu Lee (Bellevue, WA); Doron Holan (Seattle, WA); Anand Ganesh (Bellevue, WA); David Roberts (Redmond, WA); Noel Richard Cross (Seattle, WA)
Assignee: Microsoft Corporation
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 8,645,579
App. No.
12/129,663
Granted
Feb 4, 2014
Kind
B2
Abstract

A system, device, and method for virtually connecting a media device to a computing device are disclosed. One embodiment comprises a method to operate a virtual media device in a computing device, wherein the virtual media device that is controlled by a remote media device. In this manner, a computing device may stream media data to and from the remote media device.

Claims (50)

1. A system, comprising:

a peripheral device configured to communicate with a computing device over a wireless network; and

a computing device comprising instructions executable to operate:

a user mode application program configured to communicate with a kernel mode driver and also configured to run in a user mode;

a port configured to receive media data via internet protocol from the peripheral device over the wireless network;

a communication stack configured to receive communications from the port, the communication stack comprising a kernel mode portion in communication with the port and also comprising a user mode portion;

a user mode listener service configured to run in the user mode, the user mode listener service in communication with the port through the communication stack to receive the media data from the port; and

a kernel mode virtual media device in communication with the user mode listener service and the user mode application program and configured to run in a kernel mode and to capture the media data from the user mode listener service via a virtual bus, and output the media data to the user mode application program, the kernel mode virtual media device having one or more of a virtual video driver and a virtual audio driver to provide media streaming functionality from the peripheral device to the application program,

wherein the virtual media device is configured to selectively set the port to a locked mode in which applications other than the user mode listener service cannot change port settings, and the virtual media device is configured to selectively set the port to a normal mode in which other applications can change port settings.

2. The computing device of claim 1 , wherein the peripheral device is wirelessly decoupled from the computing device using a wirelessly compatible universal serial bus transmitter/receiver that enumerates as a universal serial bus audio class device and also enumerates as a universal serial bus video class device.

3. The computing device of claim 1 , wherein the virtual media device is further operable to render second media data and output the second media data to the user mode listener service via the virtual bus, and wherein the listener service is further operable to output the second media data to the peripheral device.

4. The computing device of claim 1 , wherein the kernel mode virtual media device is further operable to output a command to the user mode listener service via the virtual bus, and the user mode listener service is further operable to output the command to the peripheral device to control the peripheral device.

5. The computing device of claim 1 , wherein the media data is multimedia data including audio data and video data.

6. The computing device of claim 1 , wherein the user mode listener service stores the media data in memory, and the kernel mode virtual media device captures the media data from the memory.

7. The computing device of claim 1 , wherein the user mode listener service is configured to receive the media data from the port in real-time transport protocol packets, and the user mode listener service is further configured to decode the media data.

8. The computing device of claim 1 , wherein the user mode listener service is configured to receive the media data from the port in real-time transport protocol packets, and is further configured to place the media data into a plurality of frames to be sent to the kernel mode virtual media device.

9. The computing device of claim 1 , wherein the port is a universal serial bus port.

10. The system of claim 1 , where the kernel mode virtual media device is configured to provide a virtual media stream to the user mode application program without converting the media data to a universal serial bus protocol.

11. The system of claim 1 , wherein the kernel mode virtual media device selectively operates the port in a camera mode in which the user mode listener service is operable to receive media data via the port and output commands via the port to the peripheral device to control settings of the peripheral device, in which the user mode application program receives media data via the port through the user mode listener service, and in which the user mode application program cannot change one or more of network or port settings.

12. In a computing device, a method for receiving data from a wireless web-camera, the method comprising:

receiving media data in real-time transport protocol packets at a port in a computing device from the wireless web-camera over a wireless network, where the media data received is not visible to a user mode application running on the computing device that is configured to receive data from a kernel mode driver;

forwarding the media data from the port to a kernel mode portion of a communication stack;

forwarding the media data from the kernel mode portion of the communication stack to a user mode portion of the communication stack and then to a user mode listener service running in a user mode of the computing device;

storing the media data via the user mode listener service to memory;

capturing the media data via a virtual bus from the memory with a kernel mode virtual media device running in a kernel mode of the computing device, the virtual bus including a command bus, a video bus, and an audio bus;

outputting the media data as a virtual media stream from the kernel mode virtual media device to the user mode application, the outputting including providing media streaming functionality from the wireless web-camera to the user mode application program via one or more of a kernel mode virtual video driver and a kernel mode virtual audio driver at the kernel mode virtual media device without converting the media data or the virtual media stream to a universal serial bus protocol; and

while receiving the media data, setting and operating the port in a locked mode that only allows the listener service to change port settings, wherein, when the port is set to the locked mode, the user mode listener service is operable to receive media data from the port via the kernel mode portion of the communication stack and output commands via the kernel mode portion of the communication stack and the port to the web-camera to control settings of the web-camera, and other programs cannot change port settings, and

after receiving the media data, setting and operating the port in a normal mode in which other programs can change port settings.

13. The method of claim 12 , wherein the web-camera is wirelessly decoupled from the computing device using a wirelessly compatible universal serial bus transmitter/receiver that enumerates as a universal serial bus audio class device and also enumerates as a universal serial bus video class device.

14. The method of claim 12 , further comprising:

rendering second media data with the kernel mode virtual media device; and

outputting the second media data to the wireless web-camera through the user mode listener service.

15. The method of claim 12 , further comprising outputting a command from the kernel mode virtual media device to control the wireless web-camera through the user mode listener service.

16. The method of claim 12 , wherein the media data is multimedia data including audio data and video data.

17. The method of claim 12 , further comprising:

decoding the media data with the user mode listener service.

18. The method of claim 12 , further comprising:

encapsulating the media data into a plurality of frames to be sent to the kernel mode virtual media device.

19. A computer-readable memory comprising instructions executable by a computing device to communicate with a remotely connected web-camera by:

receiving media data in real-time transport protocol packets at a port in a computing device from the remotely connected web-camera over a wireless network, where the media data is not visible to a user mode instant messaging application running on the computing device;

forwarding the media data from the port to a kernel mode portion of a communication stack;

forwarding the media data from the kernel mode portion of the communication stack to a user portion of the communication stack and then to a user mode listener service configured to run in a user mode of the computing device;

storing the media data via the user mode listener service to memory;

capturing the media data via a virtual bus from the memory with a kernel mode virtual media device configured to run in a kernel mode of the computing device, the virtual bus including a command bus, a video bus, and an audio bus;

outputting the media data as a virtual media stream from the kernel mode virtual media device to the user mode instant messaging application, the outputting including providing media streaming functionality from the remotely connected web-camera to the user mode instant messaging application via one or more of a kernel mode virtual video driver and a kernel mode virtual audio driver at the kernel mode virtual media device;

receiving one or more of a command, audio data, and video data from the user mode instant messaging application at the kernel mode virtual media device;

passing the one or more of the command, the audio data, and the video data from the kernel mode virtual media device to the user mode listener service via the virtual bus;

passing the one or more of the command, the audio data, and the video data from the user mode listener service to the communication stack; and

outputting the one or more of the command, the audio data, and the video data to the remotely connected web-camera; and

setting and operating the port in a locked mode in which the user mode listener service can change port settings but other applications cannot change port settings, and a normal mode in which other applications can change port settings.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034564/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2008
From: YOUNG, ROBERT D.; COOPER, STEPHEN; BUBAN, GARRET; ROELL, BRIEN; SKYBERG, DAVID V.; LEE, DENNIS MING-SHU; HOLAN, DORON; GANESH, ANAND; ROBERTS, DAVID; CROSS, NOEL RICHARD
To: MICROSOFT CORPORATION
Reel/Frame 021017/0672 →
Continuity (1)
Related Publication 20090300241A1 · Dec 3, 2009