Patent Publication Number: US-8984154-B2

Title: System and method for synchronizing simultaneous media stream playback across nonsynchronized network timing/clock islands

Description:
BACKGROUND 
     Accurate time or clock synchronization and frequency accuracy/stability are required when multiple devices render related content. Examples of such related content include, but are not limited to, audio and video (lip-synchronization); audio and audio (networked stereo speakers); and so forth. 
     But sometimes accurate time or clock synchronization and frequency stability across the entire network is neither present nor necessary, for example when only a part of the network supports an accurate time protocol and the stream source needs only an estimate of the current time so that it can, for example, tell the speakers (which are accurately synchronized) to start the stream. Network technologies may include, but are not limited to, Ethernet (Institute of Electrical and Electronics Engineers (IEEE) 802.3 standard), Wireless (IEEE 802.11 standard) and Powerline (HomePlug AV (HPAV)). 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates one embodiment of an environment. 
         FIG. 2  illustrates one embodiment of a source device. 
         FIG. 3  illustrates one embodiment of a logic flow. 
     
    
    
     DETAILED DESCRIPTION 
     Various embodiments may be generally directed to a system and method for synchronizing simultaneous media stream playback across disjoint network timing/clock islands. Embodiments of the invention allow networked devices that support a time synchronization protocol to render synchronized audio/video or audio/audio (e.g., two or more speakers) even when the entire network does not support the time synchronization protocol. Examples of time synchronization protocols may include, but are not limited to, IEEE 802.1AS, IEEE 1588 and Network Time Protocol (NTP). Other embodiments may be described and claimed. 
     Various embodiments may comprise one or more elements or components. An element may comprise any structure arranged to perform certain operations. Each element may be implemented as hardware, software, or any combination thereof, as desired for a given set of design parameters or performance constraints. Although an embodiment may be described with a limited number of elements in a certain topology by way of example, the embodiment may include more or less elements in alternate topologies as desired for a given implementation. It is worthy to note that any reference to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. 
       FIG. 1  illustrates one embodiment of an environment  100  for synchronizing simultaneous media stream playback across disjoint network timing/clock islands. In embodiments, environment  100  consists of multiple heterogeneous network technologies. Such network technologies may include, but are not limited to, Ethernet (IEEE 802.3 standard), Wireless (IEEE 802.11 standard) and Powerline (HomePlug AV (HPAV)). 
     As illustrated in the embodiment of  FIG. 1 , a network  108  and a local area network (LAN)  110  make up an example communications path between a source device  102  and target devices  104  and  106 . In embodiments, network  108  (e.g., the Internet) includes devices or elements that do not support a time synchronization protocol. LAN  110  includes devices or elements that do support a time synchronization protocol, or support only an inaccurate time synchronization protocol. Thus, environment  100  is likely to have disjoint network timing/clock islands due to some devices in environment  100  having synchronized clocks (like in LAN  110 ) and some devices not having synchronized clocks (like in network  108 ). Examples of time synchronization protocols may include, but are not limited to, IEEE 802.1AS, IEEE 1588 and Network Time Protocol (NTP). In embodiments, the IEEE standard of 802.1AS time synchronization may be utilized to synchronize device clocks to within a few microseconds (10 −6  seconds) of each other. 
     Source device  102 , which may or may not support a time synchronization protocol, needs to transmit one or more related media data streams to target devices  104  and  106  for synchronized rendering. Target devices  104  and  106  are assumed to support a time synchronization protocol and, in embodiments, their clocks are synchronized directly with each other. Target devices  104  and  106  may be any audio and/or video device capable of rendering media data including, but not limited to, a speaker, a personal computer, a laptop, a personal digital assistant (PDA), an audio/video tuner, a microphone, a video display, and so forth. Although there are two target devices illustrated in  FIG. 2 , the invention is not limited to this. 
     As described above, source device  102  needs to transmit one or more related media data streams to target devices  104  and  106  for synchronized rendering. Typically, source device  102  would forward to target devices  104  and  106  the media data streams to be rendered, along with a “start time”. The “start time” informs target devices  104  and  106  when to start or resume rendering of the data in order to render it in the correct synchronized manner. 
     Typically, source device  102  would set the “start time” to be greater than the current clock time plus the maximum latency across the network communications path separating source device  102  and target devices  104  and  106 . But, as described above, the current clock time is not the same for every device in environment  100  due to its disjoint network timing/clock islands. Thus, unless source device  102  and target devices  104  and  106  support the same time synchronization protocol, it is assumed that their clocks are not synchronized. But, in embodiments, it is assumed that target devices  104  and  106  and one or more devices in the communication path between them (e.g., in LAN  110 ) support the same time synchronization protocol. Thus, in order for source device  102  to provide target devices  104  and  106  with a good-enough estimate of the “start time”, device  102  needs to know the clock time or “current time” known to devices attached to LAN  110  or in the communication path between source device  102  and target devices  104  and  106 . 
     In embodiments, for source device  102  to determine the clock time or “current time” of target devices  104  and  106 , it determines the “closest device” to device  102  in the communications path that supports the same time synchronization protocol as target devices  104  and  106  and asks the “closest device” what time it is (i.e., requests its “current time”). In embodiments, source device  102  determines the “closest device” using a protocol such as Layer Discovery Protocol (LLDP) or an Universal Plug and Play (UPnP) protocol. In the example illustrated in  FIG. 1 , closest device  112  is the “closest device”. Here, closest device  112  would forward its “current time” or “now”  114  to source device  102 . In embodiments, asking the “closest device” what time it is could be realized, for example, by asking the “closest device” to send the current time periodically, by asking the “closest device” what time it is and waiting for the response, or through other means such as NTP. 
     If the clock of source device  102  is synchronized with the clocks of target devices  104  and  106  (i.e., device  102  and target devices  104  and  106  support the same time synchronization protocol and thus their clocks are synchronized), then device  102  is considered to be the “closest device” and embodiments of the invention reduce to standard time synchronized behavior (e.g., standard IEEE 802.1AS behavior). If no other device in environment  100  supports the same time synchronization protocol as target devices  104  and  106 , then embodiments of the invention reduce to standard NTP-behavior where no assistance is available to source device  102  in determining a better estimate of “current time”. Thus, as the “closest device” gets closer and closer to source device  102 , the estimate of “current time” or “now” gets better and better. 
     Since closest device  112  and target devices  104  and  106  support the same time synchronization protocol, the clock time or “current time” of closest device  112  and target devices  104  and  106  is the same. Here, source device  102  can now set the “start time” for target devices  104  and  106  to start or resume rendering the media data streams to at least the “current time” provided by closest device  112  plus the maximum latency across the network communications path separating source device  102  and target devices  104  and  106 . Since this maximum latency time is typically much greater than the time accuracy requirement of target devices that render related media data, the source device&#39;s estimate of “start time” provided to the target devices is adequate for the target devices to render the media data streams in a synchronized manner. 
     In various embodiments, environment  100  may be implemented via wireless technologies, wired technologies, or a combination of both. The types of network technologies and devices shown in  FIG. 1  are provided for illustration purposes only and are not meant to limit the invention. 
     The various devices illustrated in  FIG. 1  may incorporate wireless functionality, wired functionality, or a combination of both. For example, when implemented with wireless functionality, a device may include components and interfaces suitable for communicating over a wireless shared media, such as one or more antennas, transmitters, receivers, transceivers, amplifiers, filters, control logic, and so forth. An example of wireless shared media may include portions of a wireless spectrum, such as the RF spectrum, and so forth. When implemented with wired functionality, a device may include components and interfaces suitable for communicating over wired communications media, such as input/output (I/O) adapters, physical connectors to connect the I/O adapter with a corresponding wired communications medium, a network interface card (NIC), and so forth. Examples of wired communications media may include a wire, cable, metal leads, printed circuit board (PCB), backplane, switch fabric, semiconductor material, twisted-pair wire, co-axial cable, fiber optics, and so forth. 
       FIG. 2  illustrates an embodiment of source device  102 . In one embodiment, device  102  may comprise or may be implemented as a media platform  202  such as the Viiv™ media platform made by Intel® Corporation. In one embodiment, platform  202  may receive data flow requests from one or more of the devices in environment  100 . 
     In one embodiment, platform  202  may comprise a CPU  212 , a chip set  213 , one or more drivers  214 , one or more network connections  215 , an operating system  216 , and/or one or more media center applications  217  comprising one or more software applications, for example. Platform  202  also may comprise storage  218  and logic  220 . 
     In one embodiment, CPU  212  may comprise one or more processors such as dual-core processors. Examples of dual-core processors include the Pentium® D processor and the Pentium® processor Extreme Edition both made by Intel® Corporation, which may be referred to as the Intel® Core Duo® processors, for example. 
     In one embodiment, chip set  213  may comprise any one of or all of the Intel® 945 Express Chipset family, the Intel® 955X Express Chipset, Intel® 975X Express Chipset family, plus ICH7-DH, ICH7-MDH, ICH8 or ICH9 controller hubs, which all are made by Intel® Corporation. 
     In one embodiment, drivers  214  may comprise the Quick Resume Technology Drivers made by Intel® to enable users to instantly turn on and off platform  202  like a television with the touch of a button after initial boot-up, when enabled, for example. In addition, chip set  213  may comprise hardware and/or software support for 5.1 surround sound audio and/or high definition 7.1 surround sound audio, for example. Drivers  214  may include a graphics driver for integrated graphics platforms. In one embodiment, the graphics driver may comprise a peripheral component interconnect (PCI) Express graphics card. 
     In one embodiment, network connections  215  may comprise the PRO/1000 PM or PRO/100 VE/VM network connection, both made by Intel® Corporation. 
     In one embodiment, operating system  216  may comprise the Windows® XP Media Center made by Microsoft® Corporation. In one embodiment, one or more media center applications  217  may comprise a media shell to enable users to interact with a remote control from a distance of about 10-feet away from platform  202  or a display device, for example. In one embodiment, the media shell may be referred to as a “10-feet user interface,” for example. In addition, one or more media center applications  217  may comprise the Quick Resume Technology made by Intel®, which allows instant on/off functionality and may allow platform  202  to stream content to media adaptors when the platform is turned “off.” 
     In one embodiment, storage  218  may comprise the Matrix Storage technology made by Intel® to increase the storage performance enhanced protection for valuable digital media when multiple hard drives are included. In one embodiment, logic  220  enables the functionality of source device  102  as described herein. The embodiments, however, are not limited to the elements or in the context shown or described in  FIG. 2 . 
     Operations for the above embodiments may be further described with reference to the following figures and accompanying examples. Some of the figures may include a logic flow. Although such figures presented herein may include a particular logic flow, it can be appreciated that the logic flow merely provides an example of how the general functionality as described herein can be implemented. Further, the given logic flow does not necessarily have to be executed in the order presented unless otherwise indicated. In addition, the given logic flow may be implemented by a hardware element, a software element executed by a processor, or any combination thereof. 
       FIG. 3  illustrates one embodiment of a logic flow  300 . As shown in logic flow  300 , it is assumed that all local clocks of the devices in a network communications path between source device  102  and target devices  104  and  106  that support the same time synchronization protocol are synchronized (block  302 ). 
     Source device  102  determines the “closest device” in the network communications path that supports the same time synchronization protocol as target devices  104  and  106  (block  304 ). In embodiments, source device  102  determines the “closest device” using a protocol such as LLDP or UPnP protocol. 
     Source device  102  asks the “closest device” what time it currently is (i.e., “current time” or “now”) (block  306 ). 
     Source device  102  then assigns the “start time” to at least the “current time” plus the maximum latency across the network communications path (block  308 ). 
     Source device  102  sends the data stream(s) to target devices  104  and  106 , along with the “start time” (block  310 ). 
     Target devices  104  and  106  use the “start time” to begin or resume rendering the data stream(s) at the appropriate time and rate (block  312 ). Embodiments of the invention, however, are not limited to the context shown or described in  FIG. 3 . 
     Various embodiments may be implemented using hardware elements, software elements, or a combination of both. Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate arrays (FPGA), logic gates, registers, semiconductor devices, chips, microchips, chip sets, and so forth. Examples of software may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints. 
     Some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. These terms are not intended as synonyms for each other. For example, some embodiments may be described using the terms “connected” and/or “coupled” to indicate that two or more elements are in direct physical or electrical contact with each other. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other. 
     Some embodiments may be implemented, for example, using a machine or tangible computer-readable medium or article which may store an instruction or a set of instructions that, if executed by a machine, may cause the machine to perform a method and/or operations in accordance with the embodiments. Such a machine may include, for example, any suitable processing platform, computing platform, computing device, processing device, computing system, processing system, computer, processor, or the like, and may be implemented using any suitable combination of hardware and/or software. The machine-readable medium or article may include, for example, any suitable type of memory unit, memory device, memory article, memory medium, storage device, storage article, storage medium and/or storage unit, for example, memory, removable or non-removable media, erasable or non-erasable media, writeable or rewriteable media, digital or analog media, hard disk, floppy disk. Compact Disk Read Only Memory (CD-ROM), Compact Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW), optical disk, magnetic media, magneto-optical media, removable memory cards or disks, various types of Digital Versatile Disk (DVD), a tape, a cassette, or the like. The instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, encrypted code, and the like, implemented using any suitable high-level, low-level, object-oriented, visual, compiled and/or interpreted programming language. 
     Unless specifically stated otherwise, it may be appreciated that terms such as “processing” “computing,” “calculating,” “determining,” or the like, refer to the action and/or processes of a computer or computing system, or similar electronic computing device, that manipulates and/or transforms data represented as physical quantities (e.g., electronic) within the computing system&#39;s registers and/or memories into other data similarly represented as physical quantities within the computing system&#39;s memories, registers or other such information storage, transmission or display devices. The embodiments are not limited in this context. 
     Numerous specific details have been set forth herein to provide a thorough understanding of the embodiments. It will be understood by those skilled in the art, however, that the embodiments may be practiced without these specific details. In other instances, well-known operations, components and circuits have not been described in detail so as not to obscure the embodiments. It can be appreciated that the specific structural and functional details disclosed herein may be representative and do not necessarily limit the scope of the embodiments. 
     Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.