IP Library › Granted Patent US 10,382,512
Granted Patent B2
US 10,382,512 · App. 13/802,767 · Granted Aug 13, 2019

Distributed fragment timestamp synchronization

Inventors: Rodrigo Maialle Bomfim (Sammamish, WA); Prakash Duggaraju (Redmond, WA); Anton Kucer (Redmond, WA); Thomas Marquardt (Newcastle, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L65/602H04L65/80H04N21/237H04N21/23608H04N21/64322H04N21/8456
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,382,512
App. No.
13/802,767
Filed
Mar 14, 2013
Granted
Aug 13, 2019
Kind
B2
Art Unit
2423
USPC
725/114
Abstract

A fault tolerant video streaming distribution service utilizes multiple distribution servers to receive and process a video stream simultaneously. Each distribution server performs a mapping of each encoded timestamp associated with a transport stream having time discontinuities to a continuous time sequence. The distribution servers coordinate the timestamp mapping through a distributed leader election protocol that elects a leader to coordinate the timestamp mapping in an environment where failures are anticipated and the number of distribution servers dynamically changes without notice.

Claims (58)

1. A computer-implemented method, the method comprising:

receiving, at a distribution server, a first and a second packet of a first video stream, the first packet carrying a first frame of the first video stream, the second packet carrying a second frame of the first video stream, the first frame having associated therewith a first timestamp encoded using a first number of bits, and the second frame having associated therewith a second timestamp encoded using the first number of bits;

converting the first video stream into a second video stream including:

determining a timestamp mapping between the first timestamp and a third timestamp, and between the second timestamp and a fourth timestamp, wherein the third timestamp is encoded using a second number of bits different than the first number of bits, and wherein the fourth timestamp is encoded using the second number of bits; and

receiving an indication of an election of the distribution server as a leader for the synchronization of timestamp mappings.

2. The computer-implemented method of claim 1 , further comprising:

distributing the timestamp mapping to another distribution server.

3. The computer-implemented method of claim 2 , further comprising:

determining the third and the fourth timestamps according to the determined mapping.

4. The computer-implemented method of claim 1 , further comprising:

re-electing the leader in response to not receiving, within a timeout interval a proposal for the timestamp mapping.

5. The computer-implemented method of claim 1 , further comprising:

re-electing the leader in response to not receiving an acknowledgement from the other distribution server.

6. The computer-implemented method of claim 1 , wherein determining the timestamp mapping comprises:

receiving a proposal for the timestamp mapping from another distribution server.

7. The computer-implemented method of claim 1 , wherein the first video stream is in an MPEG2 TS format.

8. The computer-implemented method of claim 1 , further comprising:

streaming the second video stream through an adaptive HTTP streaming protocol.

9. The computer-implemented method of claim 1 , further comprising:

streaming the second video stream through a SmoothStreaming protocol.

10. A computing device, comprising:

a memory and a processor, wherein the memory and the processor respectively that store and execute instructions, including instructions for causing the computing device to perform operations, the operations comprising:

receiving a first video stream that is encoded in a first format that defines a first timestamp as being encoded into a first quantity of bits;

determine a timestamp reference, for the first video stream, that is coordinated with another computing device;

produce a mapping, between the first timestamp defined by the first format and a second timestamp defined by a second format of a second video stream, in accordance with the timestamp reference, the second timestamp defined by the second format as being encoded into a greater quantity of bits than the first quantity of bits; and

receive an indication of an election of the computing device as a leader for the synchronization of timestamp reference for a plurality of distribution servers.

11. The device of claim 10 , wherein the operations further comprise:

generating the timestamp reference for the first video stream from a current universal time coordinated (UTC) time.

12. The device of claim 10 , wherein the operations further comprise:

generating another timestamp for the first video stream based on a duration of a transmission of a packet from the first video stream.

13. The device of claim 10 , wherein the operations further comprise:

randomly electing the leader from amongst the plurality of distribution servers.

14. The device of claim 13 , wherein operations further comprise:

re-electing the leader in response to an indication that an acknowledgement message was not received by at least one of the plurality of distribution servers.

15. A computing device, comprising:

a processor and a memory, the memory having instructions stored therein for causing the computing device to:

receive a first video stream encoded in a first transport protocol, the first video stream including a first frame and a second frame, the first frame having associated therewith a first timestamp encoded into a first number of bits, and the second frame having associated therewith a second timestamp encoded into the first number of bits;

select a server from a multicast group to coordinate synchronization of the first timestamp with a third timestamp encoded into a second number of bits, the second number of bits being different than the first number of bits, and the second timestamp with a fourth timestamp encoded into the second number of bits;

generate a first mapping between the first timestamp encoded into the first number of bits and a third timestamp encoded into a second number of bits, the second number of bits being different than the first number of bits;

generate a second mapping between the second timestamp encoded into the first number of bits and a fourth timestamp encoded into the second number of bits; and

receive an indication of an election of the computing device as a leader for the synchronization of timestamp reference for a plurality of distribution servers.

16. The computing device of claim 15 , wherein:

the first timestamp is discontinuous with the second timestamp; and

the third timestamp is continuous with the fourth timestamp.

17. The computing device of claim 16 , wherein the instructions are also for causing the computing device to:

generate the second mapping based on a duration of time between the first frame and the second frame.

18. The computing device of claim 16 , wherein the instructions are also for causing the computing device to:

generate the second mapping based on a number of cycles, in a time scale associated with the first timestamp, between a time associated with the first timestamp and a current time.

19. The computing device of claim 15 , wherein the first transport protocol is MPEG2 TS and the second transport protocol is Smooth Streaming.

20. A non-transitory computer-readable storage medium storing computer-executable instructions for causing a computing device to perform operations, the operations comprising:

receiving, at a distribution server, a first and a second packet of a first video stream, the first packet carrying a first frame of the first video stream, the second packet carrying a second frame of the first video stream, the first frame having associated therewith a first timestamp encoded using a first number of bits, and the second frame having associated therewith a second timestamp encoded using the first number of bits;

receiving an indication of an election of the distribution server as a leader for the synchronization of timestamp mappings;

determining a timestamp mapping between the first timestamp and a third timestamp, and between the second timestamp and a fourth timestamp, wherein the third timestamp is encoded using a second number of bits different than the first number of bits, and wherein the fourth timestamp is encoded using the second number of bits; and

converting the first video stream into a second video stream.

21. The non-transitory computer-readable storage medium of claim 20 , wherein the operations further comprise:

distributing the timestamp mapping to another distribution server.

22. The non-transitory computer-readable storage medium of claim 20 , wherein the operations further comprise:

streaming the second video stream through an adaptive HTTP streaming protocol.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 21, 2013
From: BOMFIM, RODRIGO MAIALLE; DUGGARAJU, PRAKASH; KUCER, ANTON; MARQUARDT, THOMAS
To: MICROSOFT CORPORATION
Reel/Frame 030054/0491 →
Continuity (1)
Related Publication 20140269776A1 · Sep 18, 2014