IP Library Granted Patent US 7,633,551
Granted Patent B2
US 7,633,551 · App. 11/379,025 · Granted Dec 15, 2009

Compressed timing indicators for media samples

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,633,551
App. No.
11/379,025
Granted
Dec 15, 2009
Kind
B2
Abstract

A first frame of data is encoded and a first timestamp associated with the first frame of data is generated. The first timestamp includes complete timing information. The first frame of data and the associated first timestamp is transmitted to a destination. A second frame of data is encoded and a second timestamp associated with the second frame of data is generated. The second timestamp includes a portion of the complete timing information. The second frame of data and the associated second timestamp is then transmitted to the destination. Additional frames of data are encoded and additional timestamps associated with the additional frames of data are generated. The majority of the additional timestamps include a portion of the complete timing information.

Claims (73)

1. In a computing device that implements a video encoder, a method comprising:

with the computing device that implements the video encoder, encoding a first frame;

with the computing device that implements the video encoder, generating a first timestamp associated with the first frame;

with the computing device that implements the video encoder, outputting encoded data for the first frame and data for the associated first timestamp, including:

outputting a first full timestamp flag that indicates whether the first timestamp is a full timestamp;

if the first full timestamp flag indicates the first timestamp is a full timestamp, outputting a parameter value for each of a plurality of timing parameters; and

otherwise, outputting one or more timing parameter flags for the first timestamp and a parameter value for each of the plurality of timing parameters that is indicated to be present by a corresponding one of the one or more timing parameter flags for the first timestamp, wherein use of the one or more timing parameter flags for the first timestamp permits output of parameter values for less than all of the plurality of timing parameters as the data for the first timestamp;

with the computing device that implements the video encoder, encoding a second frame;

with the computing device that implements the video encoder, generating a second timestamp associated with the second frame; and

with the computing device that implements the video encoder, outputting encoded data for the second frame and data for the associated second timestamp, including:

outputting a second full timestamp flag that indicates whether the second timestamp is a full timestamp;

if the second full timestamp flag indicates the second timestamp is a full timestamp, outputting a parameter value for each of the plurality of timing parameters; and

otherwise, outputting one or more timing parameter flags for the second timestamp and a parameter value for each of the plurality of timing parameters that is indicated to be present by a corresponding one of the one or more timing parameter flags for the second timestamp, wherein use of the one or more timing parameter flags for the second timestamp permits output of parameter values for less than all of the plurality of timing parameters as the data for the second timestamp.

2. A method as recited in claim 1 further comprising:

with the computing device that implements the video encoder, encoding a third frame;

with the computing device that implements the video encoder, generating a third timestamp associated with the third frame; and

with the computing device that implements the video encoder, outputting encoded data for the third frame and data for the associated third timestamp, including:

outputting a third full timestamp flag that indicates whether the third timestamp is a full timestamp;

if the third full timestamp flag indicates the third timestamp is a full timestamp, outputting a parameter value for each of the plurality of timing parameters; and

otherwise, outputting one or more timing parameter flags for the third timestamp and a parameter value for each of the plurality of timing parameters that is indicated to be present by a corresponding one of the one or more timing parameter flags for the third timestamp, wherein use of the one or more timing parameter flags for the third timestamp permits output of parameter values for less than all of the plurality of timing parameters as the data for the third timestamp.

3. A method as recited in claim 1 further comprising:

with the computing device that implements the video encoder, identifying timing information related to the first and second frames; and

with the computing device that implements the video encoder, outputting the timing information.

4. A method as recited in claim 1 wherein the first timestamp is a full timestamp, and wherein the output parameter values that are output by the computing device for the first timestamp indicate hour information, minute information, and second information.

5. A method as recited in claim 1 wherein the first timestamp includes an offset value that is used to relate the time associated with the first frame to true time.

6. A method as recited in claim 1 wherein the second timestamp is not a full timestamp, and wherein the parameter values that are output by the computing device for the second timestamp indicate seconds information but not minutes information or hours information.

7. A method as recited in claim 1 further comprising:

with the computing device that implements the video encoder, encoding a plurality of frames; and

with the computing device that implements the video encoder, generating additional timestamps associated with the plurality of frames, respectively.

8. In a computing device that implements a video decoder, a method comprising:

receiving, at the computing device that implements the video decoder, encoded data for a first frame;

receiving, at the computing device that implements the video decoder, data for a first timestamp associated with the first frame, including:

receiving a first full timestamp flag that indicates whether the first timestamp is a full timestamp;

if the first full timestamp flag indicates the first timestamp is a full timestamp, receiving a parameter value for each of a plurality of timing parameters; and

otherwise, receiving one or more timing parameter flags for the first timestamp and a parameter value for each of the plurality of timing parameters that is indicated to be present by a corresponding one of the one or more timing parameter flags for the first timestamp, wherein use of the one or more timing parameter flags for the first timestamp permits receipt of parameter values for less than all of the plurality of timing parameters as the data for the first timestamp;

with the computing device that implements the video decoder, decoding the first frame using the encoded data for the first frame;

receiving, at the computing device that implements the video decoder, encoded data for a second frame;

receiving, at the computing device that implements the video decoder, data for a second timestamp associated with the second frame, including:

receiving a second full timestamp flag that indicates whether the second timestamp is a full timestamp;

if the second full timestamp flag indicates the second timestamp is a full timestamp, receiving a parameter value for each of the plurality of timing parameters; and

otherwise, receiving one or more timing parameter flags for the second timestamp and a parameter value for each of the plurality of timing parameters that is indicated to be present by a corresponding one of the one or more timing parameter flags for the second timestamp, wherein use of the one or more timing parameter flags for the second timestamp permits receipt of parameter values for less than all of the plurality of timing parameters as the data for the second timestamp; and

with the computing device that implements the video decoder, decoding the second frame using the encoded data for the second frame.

9. A method as recited in claim 8 further comprising:

receiving, at the computing device that implements the video decoder, encoded data for a third frame;

receiving, at the computing device that implements the video decoder, data for a third timestamp associated with the third frame, including:

receiving a third full timestamp flag that indicates whether the third timestamp is a full timestamp;

if the third full timestamp flag indicates the third timestamp is a full timestamp, receiving a parameter value for each of the plurality of timing parameters; and

otherwise, receiving one or more timing parameter flags for the third timestamp and a parameter value for each of the plurality of timing parameters that is indicated to be present by a corresponding one of the one or more timing parameter flags for the third timestamp, wherein use of the one or more timing parameter flags for the third timestamp permits receipt of parameter values for less than all of the plurality of timing parameters as the data for the third timestamp; and

with the computing device that implements the video decoder, decoding the third frame using the encoded data for the third frame.

10. A method as recited in claim 8 further comprising receiving timing information related to the manner in which frames are transmitted from a data source.

11. A method as recited in claim 8 further comprising updating all of the plurality of timing parameters with the parameter values received at the computing device for the first timestamp.

12. A method as recited in claim 8 further comprising updating at least one of the plurality of timing parameters with each parameter value received at the computing device for the second timestamp.

13. One or more computer-readable media having stored thereon a computer program that, when executed by one or more processors, causes the one or more processors to:

encode a first frame;

generate a first timestamp associated with the first frame;

encode a plurality of subsequent frames;

generate a plurality of subsequent timestamps;

output encoded data for the first frame, the plurality of subsequent frames, the first timestamp and the plurality of subsequent timestamps, including, for each of the first timestamp and the plurality of subsequent timestamps:

output a full timestamp flag that indicates whether the timestamp is a full timestamp;

if the full timestamp flag indicates the timestamp is a full timestamp, output a parameter value for each of a plurality of timing parameters; and

otherwise, output one or more timing parameter flags for the timestamp and a parameter value for each of the plurality of timing parameters that is indicated to be present by a corresponding one of the one or more timing parameter flags for the timestamp, wherein use of the one or more timing parameter flags for the timestamp permits output of parameter values for less than all of the plurality of timing parameters as the data for the timestamp.

14. One or more computer-readable media as recited in claim 13 wherein, when the timestamp is a full timestamp, the parameters values that are output for the plurality of timing parameters indicate hour information, minute information, second information, and a frame number.

15. One or more computer-readable media as recited in claim 13 wherein each of the subsequent timestamps includes a frame number.

16. An apparatus comprising:

an encoded multimedia content source; and

a decoder coupled to receive encoded multimedia content from the encoded multimedia content source;

wherein the encoded multimedia content includes a first frame having an associated first timestamp,

wherein the encoded multimedia content includes a second frame having an associated second timestamp, and

wherein, for each of the first and second timestamps:

a full timestamp flag indicates whether the timestamp is a full timestamp;

if the full timestamp flag indicates the timestamp is a full timestamp, the encoded multimedia content includes a parameter value for each of a plurality of timing parameters; and

otherwise, the encoded multimedia content includes one or more timing parameter flags for the timestamp and a parameter value for each of the plurality of timing parameters that is indicated to be present by a corresponding one of the one or more timing parameter flags for the timestamp, wherein use of the one or more timing parameter flags for the timestamp permits sending of parameter values for less than all of the plurality of timing parameters as data sent for the timestamp.

17. An apparatus as recited in claim 16 wherein the decoder is configured to decode the first frame and the second frame.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034543/0001 →