Techniques for synchronizing streams in an adaptive streaming environment include cross-chassis and intra-chassis synchronization of video and/or audio. In an adaptive streaming system that streams content in segments or chunks at varying levels of quality corresponding to different coding rates, implementations enable seamless switching between output streams. For example, synchronizing multiple output streams for switching between coded adaptive bit rate streams across multiple chassis involve calculating an NTP/UTC offset.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A method for synchronizing between multiple stream representations in an output group, the method comprising: receiving, at a transcoder, an input stream and periodic external time clock stamps associated with the input stream; determining a master transcoding processor selected from a plurality of transcoding processors associated with said output group, computing external/internal clock offsets between the periodic external time clock stamp and an internal clock time stamped at a point in processing by the master transcoder processor; storing each computed external/internal clock offset and the respective internal clock time stamp as a pair in memory; deriving a segment boundary point time stamp associated with a segment in a stream representation generated by the master transcoding processor; identifying an internal clock time stamp in the stored pairs that is most recent relative to the derived segment boundary point time stamp; determining an adjusted segment boundary point time stamp based on the external/internal clock offset paired with the identified internal clock time stamp in memory and the derived segment boundary point time stamp; inserting the adjusted time stamp in to the stream representation for the segment corresponding to the derived segment boundary point time stamp; and outputting the same external/internal offset used to adjust the derived segment boundary point time stamp in the master transcoding processor to the one or more slave transcoding processors associated with the output group.
2. The method of claim 1 , further comprising generating from the input stream a plurality of stream representations, each of the plurality of representations of the input stream comprising one or more corresponding segments within the output group.
3. The method of claim 1 , further comprising time stamping the input stream at points of processing within the transcoder, wherein a time between a periodically received external time stamp associated with the input stream and an internal clock time stamp of the one or more segments is variable, thereby creating misaligned timestamps between corresponding segments in the plurality of stream representations.
4. The method of claim 1 , wherein the external clock time stamp is a coordinated universal time (UTC) stamp, the internal clock time stamp is at least one of a program clock reference (PCR) time stamp or a system time clock (STC) time stamp, and the segment boundary point time stamp is a presentation time stamp (PTS).
5. The method of claim 1 , wherein the remaining transcoding processors associated with the output group other than that designated as the master are designated as slave encoders.
6. The method of claim 1 , wherein corresponding segments in the stream representations in the output group are at least one of synchronized within a chassis or synchronized between chassis.
7. The method of claim 1 , wherein computing the external/internal clock offsets between the periodic external time clock stamp and an internal clock time stamped at a point in processing by the master transcoder processor comprises computing the offset between the most recently received periodic external time clock stamp and the internal clock time stamped at at least one of: input of the segment to the transcoding processor, output of the segment from the transcoding processor, or a point of time within the processing by the transcoding processor.
8. The method of claim 1 , wherein the offset is computed and transmitted to the slave transcoding processors prior to being inserted in to the segment boundary point of the stream representation transcoded by the master transcoding processor to provide time for the offset to be provided to the slave transcoding processors in the same output group.
9. The method of claim 1 , wherein the external time stamp used to compute the offset is the most recently received external time clock stamp.
10. The method of claim 1 , wherein the use of the same offset for corresponding segments within the output group causes the segment boundary point time stamp inserted in corresponding segments in the plurality of stream representations to be the same.
11. The method of claim 1 , wherein a segment boundary point is at least one of a stream access point (SAP) or an Encoder Boundary Point (EBP).
12. The method of claim 1 , wherein the transcoding processor identifies segment boundary points within a stream representation it processes, wherein a segment boundary point is associated with a source frame in the respective stream representation, wherein a segment associated with each segment boundary point is an IDR frame.
13. The method of claim 1 , wherein identifying an internal clock time stamp in the stored pairs that is most recent relative to the derived segment boundary point time stamp for identifying the paired offset in memory comprises identifying the most recently stored internal clock time that is less than the segment boundary point time stamp in the respective segment.
14. The method of claim 1 , wherein the master transcoding processor computes an offset each time an IDR frame is received, and each offset computed is transmitted to the slave encoders.
15. The method of claim 1 , wherein the internal clock time stamp is a time stamped on an IDR frame in a corresponding stream representation.
16. The method of claim 1 , wherein a previously computed offset that was computed earlier than the offset computed using a current external clock time is inserted in the boundary point frame.
17. The method of claim 1 , wherein the previously computed offset is used when a chassis to chassis delay is less than a shortened period between IDR frames in the input stream.
18. An adaptive transcoder for synchronizing between multiple stream representations in an output group, the transcoder comprising: at least one input for receiving an input stream and periodic external time clock stamps associated with the input stream from a content delivery network; a switch coupling the at least one input to one or more transcoding modules; each of the one or more transcoding modules hosting a plurality of transcoding processors, wherein the transcoder is configured, via the transcoding modules and the respective transcoding processors, to generate from the input stream a plurality of stream representations, each of the plurality of representations of the input stream comprising one or more corresponding segments within the output group, wherein the output group comprises as at least one of: the plurality of stream representations generated from a single stream input to said transcoder, or a plurality of stream representations generated from corresponding input streams input to a plurality of transcoders including said transcoder; an internal clock for time stamping streams at points of processing within the transcoder, wherein a time between a periodically received external time stamp associated with the input stream and an internal clock time stamp of the one or more segments is variable creating misaligned timestamps between corresponding segments in the plurality of stream representations; a master transcoding processor selected from said plurality of transcoding processors, the master transcoding processor providing processing for aligning segments between the plurality of stream representations in the output group and configured to: receive a periodic external time clock stamp received at said transcoder's input, determine an external/internal clock offset between the periodic external time clock stamp and an internal clock time stamped once the input stream is provided to the master transcoder processer; store the external/internal clock offset and the corresponding internal clock time stamp as a pair in memory, derive a segment boundary point time stamp associated with a segment in the stream representation transcoded by the master transcoding processor, identifying in the memory the stored external/internal clock offset and the corresponding internal clock time stamp pair most recent relevant to the derived segment boundary point time stamp, determine an adjusted segment boundary point time stamp based on the external/internal clock offset and the derived segment boundary point time stamp; inserting the adjusted time stamp in to the stream representation associated with the corresponding segment; and the transcoder outputting the same external/internal offset used to adjust the derived segment boundary point time stamp in the master transcoding processor to the one or more slave transcoding processors associated with the output group.
19. The adaptive transcoder of claim 18 , wherein the external clock time stamp is a coordinated universal time (UTC) stamp, the internal clock time stamp is a program clock reference (PCR) time stamp, and the segment boundary point time stamp is a presentation time stamp (PTS).
20. The adaptive transcoder of claim 18 , wherein the output group resides in multiple transcoding processors within the same chassis.
21. The adaptive transcoder of claim 20 , wherein the output group is associated with multiple servers distributed geographically for delivering content downstream over a transmission medium to a plurality of adaptive bit rate client devices in a content delivery network.
22. The adaptive transcoder of claim 18 , wherein the transcoding processor is a system on a chip (SOC).
23. The adaptive transcoder of claim 18 , wherein the external time stamp is a time received by a network time protocol (NTP) client periodically from a universal time coordinate (UTC) time clock, and the NTP client transmits the periodically received UCT time for each input stream to the transcoding processors.
24. The adaptive transcoder of claim 23 , wherein a time between the UTC time and a time the UTC time is received by the transcoding processor is variable.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
December 23, 2014
June 21, 2016
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.