IP Library Granted Patent US 10,200,768
Granted Patent B2
US 10,200,768 · App. 15/636,458 · Granted Feb 5, 2019

Low-latency mobile device audiovisual streaming

Inventors: Daniel Diniz Niemeyer (Seattle, WA); Stefan Francis Slivinski (Mercer Island, WA); Quinn Damerell (Redmond, WA); Dylan Keith Garrett (Seattle, WA); Dharmanshu Kamra (Seattle, WA); Gerald Albert Pogue, Jr. (Redmond, WA); Nicholas Jie Fang (Redmond, WA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
H04N21/8545H04N21/4126H04N21/432H04N21/4398H04N21/43637H04N21/4402H04N21/6131H04N21/6379
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 10,200,768
App. No.
15/636,458
Granted
Feb 5, 2019
Kind
B2
Abstract

A method for low-latency streaming of audio and video via a mobile computing device to facilitate a high-quality, real-time interactive streaming experience. The method includes receiving an application audio stream generated by execution of an application program, an application video stream generated by execution of the application program, a microphone audio stream, and a camera video stream. The application audio stream and the microphone audio stream are mixed to produce a mixed audio stream. The application video stream and the camera video stream are composited to produce a composited video stream. The mixed audio stream is encoded to produce an encoded audio stream, and the composited video stream is encoded to produce an encoded video stream. The encoded audio and video streams are packaged into one or more streaming packets, and output, to a remote computing device.

Claims (68)

1. A mobile computing device for streaming audio and video, the mobile computing device comprising:

a microphone configured to generate a microphone audio stream;

a camera configured to generate a camera video stream;

a network transceiver configured to communicatively couple the mobile computing device with a remote computing device;

a logic machine; and

a data-storage machine holding instructions executable by a logic machine to:

receive an application audio stream generated by execution of an application program;

receive an application video stream generated by execution of the application program;

receive the microphone audio stream generated by the microphone;

receive the camera video stream generated by the camera;

mix the application audio stream and the microphone audio stream to produce a mixed audio stream;

composite the application video stream and the camera video stream to produce a composited video stream;

encode, via an audio encoder, the mixed audio stream to produce an encoded audio stream;

encode, via a video encoder, the composited video stream to produce an encoded video stream;

perform a time stamp correction operation that temporally synchronizes time stamps of the encoded audio and video streams to produce synchronized, encoded audio and video streams, wherein the time stamp correction operation temporally shifts a time stamp of audio frames of the encoded audio stream or video frames of the encoded video stream according to an estimation that is based on at least a size of each of the audio frames or the video frames;

package the synchronized, encoded audio and video streams into one or more streaming packets; and

output the one or more streaming packets to the remote computing device via the network transceiver.

2. The mobile computing device of claim 1 , wherein the audio encoder is configured to time stamp the encoded audio stream based upon a first clock reference of the audio encoder, wherein the video encoder is configured to time stamp the encoded video stream based upon a second clock reference of the video encoder, and wherein the time stamp correction operation temporally synchronizes the time stamps of the encoded audio and video streams to produce the synchronized, encoded audio and video streams.

3. The mobile computing device of claim 2 , wherein estimation is further based on one or more of a word size and an encoding duration of the audio frames or the video frames.

4. The mobile computing device of claim 1 , wherein the data-storage machine holds instructions executable by the logic machine to:

remove, via an elementary encoder, metadata from one or more of the encoded audio and video streams prior to packaging the synchronized, encoded video stream into the one or more streaming packets.

5. The mobile computing device of claim 1 , wherein the mixed audio stream and the composited video stream are encoded in parallel.

6. The mobile computing device of claim 1 , wherein the data-storage machine holds instructions executable by the logic machine to:

initiate a socket connection to the remote computing device via the network transceiver; and

send the one or more streaming packets to the remote computing device via the socket connection.

7. The mobile computing device of claim 1 , wherein the data-storage machine holds instructions executable by the logic machine to:

initiate a plurality of process threads to perform audio and video streaming via a streaming pipeline, and wherein the process threads are configured to prioritize processing operations associated with audio/video frames in the streaming pipeline over processing incoming audio/video frames received as input to the streaming pipeline.

8. The mobile computing device of claim 1 , wherein the one or more streaming packets are output to a wireless local area network via the network transceiver.

9. The mobile computing device of claim 1 , wherein the one or more streaming packets are output to a cellular wide area network via the network transceiver.

10. A method for streaming audio and video via a mobile computing device, the method comprising:

receiving an application audio stream generated by execution of an application program;

receiving an application video stream generated by execution of the application program;

receiving, via a microphone, a microphone audio stream;

receiving, via a camera, a camera video stream;

mixing the application audio stream and the microphone audio stream to produce a mixed audio stream;

compositing the application video stream and the camera video stream to produce a composited video stream;

encoding, via an audio encoder, the mixed audio stream to produce an encoded audio stream;

encoding, via a video encoder, the composite video stream to produce an encoded video stream;

performing a time stamp correction operation that temporally synchronizes time stamps of the encoded audio and video streams to produce synchronized, encoded audio and video streams, wherein the time stamp correction operation temporally shifts a time stamp of audio frames of the encoded audio stream or video frames of the encoded video stream according to an estimation that is based on at least a size of each of the audio frames or the video frames;

packaging the synchronized, encoded audio and video streams into one or more streaming packets; and

outputting, via a network transceiver, the one or more streaming packets to a remote computing device.

11. The method of claim 10 , wherein the audio encoder is configured to time stamp the encoded audio stream based upon a first clock reference of the audio encoder, wherein the video encoder is configured to time stamp the encoded video stream based upon a second clock reference of the video encoder, and wherein the time stamp correction operation temporally synchronizes the time stamps of the encoded audio and video streams to produce the synchronized, encoded audio and video streams.

12. The method of claim 11 , wherein the estimation is further based on one or more of a word size and an encoding duration of the audio frames or the video frames.

13. The method of claim 10 , further comprising:

removing, via an elementary encoder, metadata from one or more of the encoded audio and video streams prior to packaging the synchronized, encoded video stream into the one or more streaming packets.

14. The method of claim 10 , further comprising:

initiating a socket connection to the remote computing device via the network transceiver; and

sending the one or more streaming packets to the remote computing device via the socket connection.

15. A mobile computing device for streaming audio and video, the mobile computing device comprising:

a network transceiver configured to communicatively couple the mobile computing device with a remote computing device;

a logic machine; and

a data-storage machine holding instructions executable by a logic machine to:

receive an input audio stream;

receive an input video stream;

encode, via an audio encoder, the input audio stream to produce an encoded audio stream time stamped based upon a first clock reference of the audio encoder;

encode, via a video encoder, the input video stream to produce an encoded video stream time stamped based upon a second clock reference of the video encoder;

perform a time stamp correction operation that temporally synchronizes time stamps of the encoded audio and video streams to produce synchronized, encoded audio and video streams, wherein the time stamp correction operation temporally shifts a time stamp of audio frames of the encoded audio stream or video frames of the encoded video stream according to an estimation that is based on at least a size of each of the audio frames or the video frames;

package the synchronized, encoded audio and video streams into one or more streaming packets; and

output the one or more streaming packets to the remote computing device via the network transceiver.

16. The mobile computing device of claim 15 , wherein the input audio stream is a mixed audio stream including an application audio stream and a microphone audio stream; and wherein the input video stream is a composited video stream including an application video stream and a camera video stream.

17. The mobile computing device of claim 15 , wherein the storage machine holds instructions executable by the logic machine to:

remove, via an elementary encoder, metadata from one or more of the encoded audio and video streams prior to packaging the synchronized, encoded video stream into the one or more streaming packets.

18. The mobile computing device of claim 15 , wherein the estimation is further based on one or more of a word size and an encoding duration of the audio frames or the video frames.

19. The mobile computing device of claim 15 , wherein the storage machine holds instructions executable by the logic machine to:

initiate a socket connection to the remote computing device via the network transceiver; and

send the one or more streaming packets to the remote computing device via the socket connection.

20. The mobile computing device of claim 15 , wherein the data-storage machine holds instructions executable by the logic machine to:

initiate a plurality of process threads to perform audio and video streaming via a streaming pipeline, and wherein the process threads are configured to prioritize processing operations associated with audio/video frames in the streaming pipeline over processing incoming audio/video frames received as input to the streaming pipeline.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2017
From: NIEMEYER, DANIEL DINIZ; SLIVINSKI, STEFAN FRANCIS; DAMERELL, QUINN; GARRETT, DYLAN KEITH; KAMRA, DHARMANSHU; POGUE, GERALD ALBERT, JR.; FANG, NICHOLAS JIE
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 042854/0695 →
Continuity (2)
Provisional Application 62479184 · Mar 30, 2017
Related Publication 20180288499A1 · Oct 4, 2018