Abstract:
An HDMI™ (High-Definition Multimedia Interface) switch includes a CEC (Consumer Electronics Control) processor for controlling high-definition audio-visual (AV) equipment. The CEC processor accepts user commands and translates them to control HDMI devices over HDMI; the translations can be manufacturer specific so that devices with different CEC implementations can be combined in a single system. CEC communications between HDMI devices is precluded or at least controlled to avoid problems due to incompatible CEC implementations and unwanted interactions. The CEC processor causes the HDMI switch to appear as an HDMI source to HDMI sink devices and as an HDMI sink to HDMI source devices for the purposes of assigning physical addresses. While CEC is designed to handle AV systems having only one sink (display), the novel HDMI switch provides for CEC-controlled AV systems with multiple displays, e.g., in different rooms.

Description:
BACKGROUND 
     Custom home entertainment systems can include matrix switches controlled by a central control system that allow a user to select among plural sources for video contents and among plural displays on which to view content. Such arrangements can allow different family members to view different contents in different rooms and allow a viewing in progress to follow a viewer who moves from one room to another. This arrangement also allows for all of the various video sources to be hidden in a remote location, leaving only the video display visible in the living areas. 
     However, the transition to high-definition video has introduced some challenges to matrix switching. The predominant audio and video interconnect system for high-definition video is HDMI, which includes an optional Consumer Electronics Control (CEC) protocol that allows any HDMI connected device to issue commands to any other HDMI connected device that supports the CEC protocol. The CEC protocol assumes a single video sink, e.g., display, and cannot readily be used with a home entertainment system having the two or more video sinks. Moreover, CEC implementations tend to be manufacturer-specific, which complicates control of home entertainment systems with devices from different manufacturers. While video devices can be controlled without using CEC, e.g., using a network of IR transmitters, such approaches tend to be cumbersome, expensive, and unreliable. What is needed is a more convenient and elegant approach to selecting HDMI sources and sinks. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is schematic diagram of a home entertainment system in accordance with an embodiment of the invention. 
         FIG. 2  is a schematic diagram of a CEC command processor of the home entertainment system of  FIG. 1 . 
         FIG. 3  illustrates a code database of the CEC command processor of  FIG. 2 . 
         FIG. 4  is a flow chart of a process implemented in the home entertainment system of  FIG. 1 . 
     
    
    
     DETAILED DESCRIPTION 
     In accordance with the present invention, a home-entertainment system  100  includes an HDMI switch  102  connected to a television (TV)  112 , a projector  114 , a satellite box  116 , and a DVD player  118 , as shown in  FIG. 1 , respectively connected to HDMI ports P 1 -P 4 . HDMI switch  102  provides complementary virtual HDMI devices  122 ,  124 ,  126 , and  128  to interact respectively with devices  112 ,  114 ,  116 , and  118  so that the latter can be controlled using CEC commands, including manufacturer-specific CEC extensions; this allows CEC physical addresses to be assigned to virtual and actual HDMI devices according to the CEC specification. The HDMI switch prevents CEC commands from being transmitted from one HDMI port to another HDMI port, this allows more than one CEC sink to be used and avoids conflicts and collisions that might otherwise occur due to the different CEC extensions, e.g., implemented by different manufacturers. Since CEC commands are used for device control, workarounds such as infrared-based systems are not needed. 
     The HDMI™ (High-Definition Multimedia Interface) standard developed and licensed by the HDMI consortium, is a high-speed digital interface for communicating audio and video signals between sources (such as DVD players, satellite boxes, cable boxes, etc.) and sinks (typically video display devices such as televisions or projectors). Consumer Electronics Control (CEC) refers to an auxiliary communication protocol and interconnect which is part of the HDMI standard that enables control messaging between members of an HDMI connected system. Devices which support CEC enable a user to manage a plurality of sources connected via HDMI to run operations such as ‘one touch play’. Using CEC, the user may, for example, use one remote control to turn on a sink, source, and AV (audio-visual) at the same time, and to adjust the system volume of that receiver. The commands required for this are delivered by the remote control to a single member of the HDMI system, usually the sink, which then uses the CEC protocols to communicate to the other members of the system what functions they should perform. 
     The CEC interconnect uses a one-wire shared bus topology included in a standard HDMI connection cable. Being a single wire, multi-drop interconnect, CEC requires physical addresses for all members. Normally, upon hot-plugging, each CEC source device obtains a physical address by reading the Extended Device Identification Data (EDID) of the system&#39;s single sink device, to which it is attached. Logical addresses are then allocated based on product type using automatic mechanisms built into CEC protocols. CEC devices always have both physical and logical addresses. 
     The CEC specification includes support for customized commands. This enables different vendors to create proprietary CEC based networks between products of their own. Examples of such modified CEC base networks include: Anynet (Samsung), Aquos Link (Sharp), BraviaLink (Sony), RegzaLink (Toshiba), RIHD (Onkyo), Simplink (LG), VieraLink (Panasonic/JVC), Easylink (Philips) and NetCommand for HDMI (Mitsubishi). 
     It should be noted that the CEC interconnect and message topology is designed to only support a tree structure topology wherein it is assumed that a single sink is at the top of the tree and is the sole arbiter for the allocation of physical addresses to all devices directly connected to it. This presents a challenge in the design of multi-room home entertainment systems, e.g., in which AV sources provide content to plural displays in plural rooms. HDMI switch  102  addresses this problem. 
     HDMI switch  102  includes a user-command receiver  150  for receiving user commands, e.g., via remote controls  142  and  144 . Remote control  142  is programmed to control television  112  and to select the content to be displayed on television  112 . So that it can be used by a person viewing television  112 , remote control  142  is typically kept in the same room that television  112  is situated in. In the illustrated case, this is living room  146 . Remote control  144  is programmed to control projector  114  and to select the contents to be displayed by projector  114 . So that it can be used by a person viewing a screen on which projector  114  projects contents, remote control  144  is typically kept in the same room that projector  114  (or at least its screen) are situated in. In the illustrated case, this is family room  148 . More generally, the invention provides for HDMI switches with any number of source and sink ports, and remotes for each sink or each room having a sink. HDMI switches can have dedicated source and sink ports or ports that can be selective configured to serve as sink or source ports. 
     Remotes  142  and  144  typically communicate with HDMI switch  102  wirelessly using wall-penetrating RF signals (as opposed to infra-red signals); in an alternative embodiment, infra-red is used. To this end, HDMI switch  102  includes a user-command receiver  150 . Alternatively, remotes can communicate with a high-level control center which, in turn, communicates with an HDMI switch, e.g., via a wired interface. Receiver  150  demodulates user commands and provides them to a CEC command processor  152  of HDMI switch  102 . 
     CEC command processor  152  is responsible for creating complementary (to connected real HDMI devices) virtual HDMI devices  122 ,  124 ,  126 , and  128 . For example, CEC command processor  152  manages address assignment from sinks and to sources. In addition to sources and sinks, the CEC specification provides for “repeaters”, e.g., AV receivers. For example, AV receivers can be inserted at nodes R in  FIG. 1 . In this arrangement, the connected sink provides a physical address to the repeater and the repeater assigns a physical address to the HDMI switch port to which it is connected. From the perspective of HDMI switch  102 , a repeater is a sink; accordingly, operation with repeaters is not detailed separately herein. 
     In addition to handling CEC addressing, CEC command processor  152  translates user commands into CEC commands for controlling connected HDMI devices. For example, a user may interact with remote  142 , in effect commanding that television  112  be turned on. Remote  142  translates this to “turn on the device connected to HDMI port P 1 . CEC command processor then translates this to a CEC “turn on” command, which it then routes to television  112  via port P 1 . 
     Other commands may require more complex actions. For example, a user may command “select DVD changer as source for television”. CEC command processor  152  can then command an HDMI data switch  154  of HDMI switch  102  to configure itself so that HDMI port P 4  is connected to HDMI port P 1 . HDMI data switch allows HDMI data but not CEC commands to pass between HDMI ports P 1 -P 4 . This eliminates problems associated with incompatible CEC command extensions and logical address conflicts and collisions. In some alternative embodiments, a CEC command processor translates commands from one HDMI device to conform to the extensions of another HDMI device, thus allowing some inter-device commands while still avoiding compatibility problems. 
     As shown in  FIG. 2 , CEC command processor  152  includes a controller  202 , non-transitory controller-readable media  204  encoded with code  206 , CEC state machines  212 ,  214 ,  216 , and  218  for representing the respective states of virtual HDMI devices  122 ,  124 ,  126 , and  128  ( FIG. 1 ), and drivers  222 ,  224 ,  226 , and  228  for transmitting CEC commands out ports P 1 -P 4  ( FIG. 1 ). Code  206 , when executed by hardware controller  202  defines address assignment module  230 , command translation module  232 , device database  234 , and code database  236 . Address assignment module  230  handles address assignments during initialization. Command translation module  232  translates user commands into CEC commands that are issued to HDMI devices  112 ,  114 ,  116 ,  118 . 
     Command translation module  232  access device database  234  when translating user commands into CEC commands. Device database  234  associates each port with a device type and code set (CEC commands plus manufacturer extensions). Device database  234  is typically populated automatically during address assignment. 
     Having determined the code set for the target HDMI device, command translation module  232  accesses code database  236 , which is shown in greater detail in  FIG. 3 . Code database  236  is pre-populated with translations of user commands into code sets for different manufacturers, as shown. Code database  236  can be updated via a firmware update, e.g., via an installer interface. In an alternative embodiment, a code database includes user programmable sections for devices not represented in the preset code sets. 
     In  FIG. 3 , code database includes translations for several manufacturers&#39; extended CEC code sets. Command translation module  232  knows the relevant code set (A, B, C, or D, any of which can correspond to any of the manufacturers represented in  FIG. 3 . Command translation module  232  can use the code set to select a table from code database  236  and then lookup the appropriate translation from that table. For example, a user can issue a command to turn on a Toshiba television (in which code set A is “Regzalink”). The desired command translation can be found in the “Toshiba Regzalink” table of code database  236 . 
     The translation may or may not be straightforward. For example, a user command may call for turning off television  112  and all sources connected to it. Command translation module  232  may determine that cable box  116  is in use as a source for projector  114  and elect not to turn off cable box  116 . 
     A process  400  implemented by HDMI switch  102 , command processor  152 , and code  206  is flow charted in  FIG. 4 . At  401 , a sink assigns a physical address to the HDMI port to which it is connected. In the case a repeater is inserted between a sink and HDMI switch  102 , the sink assigns a physical address to the repeater and the repeater assigns a physical address to the HDMI port to which it is connected. At  402 , the connector port (or associated virtual HDMI device) communicates its identity to the sink or repeater that assigned its physical address. This identity is as a source from the same manufacturer as the sink or repeater. At  403 , the virtual sinks assign physical addresses to HDMI sources. 
     In use, at  411 , a user can select a device and command using a remote control, which transmits a user command to HDMI switch  102 . At  412 , HDMI switch  102  receives the user command. More specifically, receiver  150  receives the user command and converts it for CEC command processor  152 . At  413 , CEC processor  152  identifies that port and action called for by the user command. 
     At  414 , a command conversion can be implemented. In some cases, a direct translation is performed without any conversion. For example, a simple “turn on device connected to port P 2 ” could be implemented directly. However, in some cases, a command to turn off the device connected to port P 2  may be changed to a “Power Toggle” command as the device may not have discrete power on and power off commands. 
     At  415 , CEC processor  152  identifies the manufacturer and model number (and, thus, the device type) of the attached device and code set for the user command. At  416 , CEC processor  152  translates the command. At  417 , CEC processor issues the translated command. At  418 , the device state of the target HDMI device is changed as commanded. 
     In some embodiments, a device may respond with a command of its own issued to the complementary virtual device. In process  400 , this reply is discarded. However, in an alternative embodiment, commands from HDMI devices can be allowed to pass through converted or unconverted to another HDMI device or be transferred back to the user command receiver  150  to be used elsewhere (i.e. in a higher level of the control system). These and other variations upon and modifications to the illustrated embodiments are within the scope of the claims.