IP Library Granted Patent US 7,926,080
Granted Patent B2
US 7,926,080 · App. 10/289,894 · Granted Apr 12, 2011

Trick mode support for VOD with long intra-frame intervals

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 7,926,080
App. No.
10/289,894
Granted
Apr 12, 2011
Kind
B2
Abstract

A video-on-demand system encodes multiple video streams from media content, such that the video streams have staggered intra-frame intervals. When a client device requests a video stream, the video-on-demand system selects one of the multiple video streams based on the position of the intra-frames, and transmits the selected video stream to the client device.

Claims (84)

1. A method for encoding video streams comprising:

receiving, at a video on-demand server, media content to be encoded;

determining, at the video on-demand server, a number of video streams to encode for each of a plurality of display speeds based on an intra-frame interval for each of the video streams, the number of video streams that is determined is greater than one;

determining, at the video on-demand server, a stagger value based on the number of video streams for each of the plurality of display speeds and the intra-frame interval; and

encoding the media content, at the video on-demand server, into each of the number of video streams for each of the plurality of display speeds, wherein a first video stream encoded for a particular display speed includes intra-frames at a particular intra-frame interval, and wherein a second video stream encoded for the particular display speed includes intra-frames at the particular intra-frame interval, the intra-frames of the second video stream being staggered by the stagger value with respect to the intra-frames of the first video stream.

2. The method as recited in claim 1 wherein the staggered intra-frame intervals are of equal length.

3. The method as recited in claim 1 wherein the encoding comprises:

assigning an index value, at the video on-demand server, to each video stream to be encoded;

encoding, at the video on-demand server, the first video stream such that a first intra-frame in the first video stream occurs at a distance equal to the intra-frame interval from a second intra-frame in the first video stream; and

encoding, at the video on-demand server, each subsequent video stream to be encoded such that in each encoded stream, a first intra-frame in the subsequent video stream occurs at a distance equal to the index value associated with the video stream multiplied by the stagger value from the first intra-frame in the first video stream and at a distance equal to the intra-frame interval from a second intra-frame in the subsequent video stream.

4. The method as recited in claim 1 wherein the intra frame interval is configurable.

5. The method as recited in claim 1 wherein the stagger value is configurable.

6. The method as recited in claim 1 wherein the number of video streams to be encoded is based on the stagger value.

7. The method as recited in claim 1 wherein the number of video streams to be encoded is configurable.

8. The method as recited in claim 1 wherein the number of video streams to be encoded is based on an amount of storage space.

9. The method as recited in claim 1 wherein the number of video streams to be encoded is based on a desired interactive response time.

10. The method as recited in claim 1 wherein the determining a stagger value comprises dividing the intra-frame interval by the number of video streams to be encoded.

11. The method as recited in claim 10 wherein the determining a stagger value further comprises rounding the result of a division calculation to the nearest integer.

12. One or more computer storage media comprising computer executable instructions that, when executed, direct a computing system to perform the method as recited in claim 3 .

13. A method for encoding video streams comprising:

receiving, at the video on-demand server, media content to be encoded;

determining, at the video on-demand server, a number of video streams to encode based on an intra-frame interval for each of the video streams;

determining, at the video on-demand server, a stagger value based on the number of video streams and the intra-frame interval;

encoding the media content, at the video on-demand server, into each of a first set of multiple video streams such that each of the multiple video streams in the first set have a first display speed, wherein a first video stream of the video streams of the first set includes intra-frames at the intra-frame interval, and wherein a second video stream of the video streams of the first set includes intra-frames at the intra-frame interval, the intra-frames of the second video stream of the video streams of the first set being staggered by the stagger value with respect to the intra-frames of the first video stream of the video streams of the first set;

and

encoding the media content, at the video on-demand server, into each of a second set of multiple video streams such that each of the multiple video streams in the second set have a second display speed, wherein a first video stream of the video streams of the second set includes intra-frames at the intra-frame interval, and wherein a second video stream of the video streams of the second set includes intra-frames at the intra-frame interval, the intra-frames of the second video stream of the video streams of the second set being staggered by the stagger value with respect to the intra-frames of the first video stream of the video streams of the second set.

14. One or more computer storage media comprising computer executable instructions that, when executed, direct a computing system to perform the method as recited in claim 13 .

15. A system comprising:

a processing device;

an interface configured to receive media content to be encoded; and

a media encoder configured to:

determine a number of video streams to encode for each of a plurality of display speeds based on an intra-frame interval for each of the video streams;

determine a stagger value based on the number of video streams for each of the plurality of display speeds and the intra-frame interval; and

encode the media content into each of the number of video streams for each of the plurality of display speeds, wherein a first video stream encoded for a particular display speed includes intra-frames at the intra-frame interval, and wherein a second video stream encoded for the particular display speed includes intra-frames at the intra-frame interval, the intra-frames of the second video stream being staggered by the stagger value with respect to the intra-frames of the first video stream.

16. The system as recited in claim 15 further comprising a repository to store the multiple video streams.

17. The system as recited in claim 15 further comprising a stream selector configured to select one of the multiple video streams for transmission to a client device.

18. The system as recited in claim 15 further comprising a VOD transmitter configured to transmit at least one of the multiple video streams to a client device.

19. A system comprising:

a processing device;

a repository configured to store:

multiple video streams of a first speed, each comprising the same media content, the multiple video streams of the first speed encoded to have staggered intra-frame intervals, relative one video stream to another, whereby each of the video streams of the first speed includes intra-frames at the same intra-frame interval; and

multiple video streams of a second speed, each comprising the same media content, the multiple video streams of the second speed encoded to have staggered intra-frame intervals, relative one video stream to another, whereby each of the video streams of the second speed includes intra-frames at the same intra-frame interval; and

a stream selector configured to:

receive a request for the media content to be played at the second speed;

examine the multiple video streams of the second speed to identify a particular video stream of the second speed having an intra-frame nearest to a current position of the media content; and

select the particular video stream for transmission to a client device.

20. The system as recited in claim 19 further comprising a transmitter for transmitting the particular video stream to the client device.

21. A system comprising:

a processing device;

a media encoder configured to:

determine a number of video streams to encode for each of a plurality of display speeds based on an intra-frame interval for each of the video streams;

determine a stagger value based on the number of video streams for each of a plurality of display speeds and the intra-frame interval; and

encode particular media content into the number of video streams for each of a plurality of display speeds, each comprising the particular media content, wherein at least two video streams are encoded for a particular display speed such that the intra-frame intervals are staggered, relative one of the two video streams to the other of the two video streams;

a repository configured to store the video streams;

a stream selector configured to select one of the video streams; and

a transmitter for transmitting the one of the multiple video streams to a client device.

22. The system as recited in claim 21 wherein the number of video streams with staggered intra-frame intervals comprise:

a first video stream in which there is a standard interval between a first intra-frame and a second intra-frame; and

a second video stream in which there is the standard interval between a first intra-frame and a second intra-frame, such that between a position associated with the first intra-frame in the first video stream and a position associated with the first intra-frame in the second video stream there is a stagger interval that is not equal to the standard interval.

23. The system as recited in claim 21 wherein the stream selector is configured to select one of the number of video streams by:

determining a current position associated with a currently transmitting video stream;

identifying a start position associated with the number of video streams; and

selecting the one of the number of video streams that has an intra-frame after and close to the start position.

24. A video encoding system comprising:

a processing device;

means for receiving media content;

means for determining a number of video streams to encode based on popularity of the media content;

means for determining a stagger value based on the number of video streams and an intra-frame interval; and

means for encoding the media content into each of the number of media streams, wherein a first of the video streams includes intra-frames at the intra-frame interval, and wherein a second of the video streams includes intra-frames at the intra-frame interval, the intra-frames of the second video stream being staggered by the stagger value with respect to the intra-frames of the first video stream, the first of the video streams and the second of the video streams both encoded for a particular display speed.

25. The system as recited in claim 24 further comprising:

means for selecting a media stream from the multiple media streams; and

means for transmitting the media stream.

26. One or more computer storage media comprising computer executable instructions that, when executed, direct a computing system to perform a method comprising:

receiving a particular media content;

determining a number of video streams to encode for each of a plurality of display speeds based on an intra-frame interval for each of the video streams;

determining a stagger value based on the number of video streams for each of a plurality of display speeds and the intra-frame interval; and

encoding the particular media content into each of the number of video streams for each of a plurality of display speeds, wherein a first of the video streams, encoded for a particular display speed, includes intra-frames at the intra-frame interval, and wherein a second of the video streams, also encoded for the particular display speed, includes intra-frames at the intra-frame interval, the intra-frames of the second video stream being staggered by the stagger value with respect to the intra-frames of the first video stream.

27. One or more computer storage media comprising computer executable instructions that, when executed, direct a computing system to perform a method comprising:

determining a number of video streams to encode based on popularity of particular media content;

determining a standard intra-frame interval;

determining a stagger distance; and

encoding the particular media content into each of multiple video streams, each comprising the same media content and having a common display speed, such that an intra-frame interval of each of the multiple video streams is equal to the standard intra-frame interval and a position of an intra-frame in one of the video streams differs by an integer multiple of the stagger distance from a position of an intra-frame in another one of the video streams, wherein each of the positions is measured from a beginning of the media content.

28. The one or more computer storage media as recited in claim 27 , wherein determining the stagger distance comprises:

determining the stagger distance by dividing the standard intra-frame interval by the number of video streams to be encoded.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 7, 2002
From: BALDWIN, JAMES ARMAND; BARRETT, PETER T.
To: MICROSOFT CORPORATION
Reel/Frame 013477/0304 →