METHOD AND SYSTEM FOR LOCATING A CONTROL CHANNEL AND DATA TRANSPORT STREAM WITHIN THE SIGNAL RECEIVED BY A SET-TOP BOX FROM A CABLE TELEVISION SYSTEM

Abstract: This method and system allows a set-top terminal to be connected to a cable television system and automatically locate the control channel or channels used by the cable system operator to transmit data, instructions or programming to the population of set-top terminals. The set-top terminal begins with a table of possible frequencies or a frequency range at which a control channel may be transmitted by the cable system operator. The set-top terminal then successively tunes those frequencies until one or more control channels are located. The set-top terminal may also match a platform identifier in the terminal with a platform identifier in the control channel's data stream to confirm that the control channel is appropriate for the terminal.

Description: TITLE OF THE INVENTION Method and System for Locating a Control Channel and Data Transport Stream within the Signal Received by a Set-Top Box from a Cable Television System RELATED APPLICATIONS This application claims priority from a previous U.S. provisional patent application entitled "Software and Firmware Initialization and Upgrade Management System and Method for an Advanced Set-Top Box in a Cable Television System," Serial No. 60/130,328, filed April 21, 1999. FIELD OF THE INVENTION The present invention relates to the field of installing and initializing a set- top terminal of a cable television system and upgrading the software or firmware in the set-top terminal. More particularly, the present invention relates to the field of connecting a set-top terminal to a cable television system and having the set-top terminal locate a control channel that is broadcast over the cable television system and through which the set-top terminal can receive data, instructions and downloading programming. BACKGROUND OF THE INVENTION In a typical cable television system, subscribers are provided with a set-top box or terminal. The set-top terminal is a box of electronic equipment that is used to connect the subscriber's television, and potentially other electronic equipment, with the cable network. The set-top box is usually connected to the cable network through a co-axial wall outlet. The set-top box is essentially a computer that is programmed to process the signals from the cable network so as to provide the subscriber with the cable services. These services from the cable television company typically include access to a number of television channels and, perhaps, an electronic program guide. Additional premium channels may also be provided to subscribers at an additional fee. Pay-per-view events and video-on-demand may also be provided over the cable network. The set-top box is programmed to provide these and other services to the subscriber. However, the services of the cable company need not be limited to providing television programming. Some cable companies are now offering internet access and e-mail over their cable networks at speeds much faster than are available over conventional telephone lines. It is anticipated in the future that more and more services will be provided over the cable network, including even basic telephone service. Eventually, each home or office may have a single connection, via the cable network, to all electronic data services. When a new set-top terminal is added to the cable network, it must be initialized. To initialize a set-top terminal, the terminal must be provided with the programming required to allow it to function within the specific cable network to which it is connected and to thereby provide the services for which the subscriber has paid. This includes physically connecting the set-top terminal to the cable system so that the terminal receives the signal from the cable system and programming the set-top terminal to identify and tune a control channel within the signal from the cable system. The set-top terminal receives, over the control channel, instructions and data sent by the cable system operator. The headend is the facility from which the cable network operator broadcasts television signals and provides other services over the cable network. Additionally, as the cable network and the services provided evolve, the set- top terminal must also evolve to be able to provide subscribers with all the services of the cable network. This set-top box evolution will primarily involve changes to the programming, or perhaps a re-initialization, of the set-top box. By upgrading the soft- or firmware of the set-top box, the box can be made to perform more efficiently or offer new services as the cable network evolves. In order to initialize new set-top terminals and upgrade the programming in the existing population of set-top boxes on a cable network, it is preferable to transmit the necessary programming to the set-top boxes via the cable network itself. Otherwise, a technician must visit each subscriber to install or upgrade the set-top boxes. Such field installations and upgrades would obviously be at significant expense. The control channel or channels are also used to download programming directly to the set-top terminals from the headend. However, there are a variety of problems associated with installing, initializing and upgrading set-top terminals by broadcasting data and programming over one or more control channels from the headend. For example, different cable systems will likely use different frequencies to transmit their control channel. If more than one control channel is used, the configuration of control channels is even more likely to vary from system to system. Consequently, each cable system must specifically program each set-top terminal installed to tune and use the particular configuration of control channels being operated on that system. This is at obvious expense to operators of cable systems and prevents set-top terminal manufacturers from providing ready-to-use set-top terminals. Consequently, there is a need in the art for a method and system of allowing a set-top terminal to automatically identify the control channel configuration of a cable television system to which the set-top terminal has been connected. There is a further need in the art for a method and system of allowing the set-top terminal to automatically identify and download appropriate programming and data from the control channel or channels. SUMMARY OF THE INVENTION It is an object of the present invention to meet the above-described needs and others. Specifically, it is an object of the present invention to provide a method and system of allowing a set-top terminal to automatically identify the control channel configuration of a cable television system to which the set-top terminal has been connected. It is a further object of the present invention to provide a method and system of allowing the set-top terminal to automatically identify and download appropriate programming and data from the control channel or channels. Additional objects, advantages and novel features of the invention will be set forth in the description which follows or may be learned by those skilled in the art through reading these materials or practicing the invention. The objects and advantages of the invention may be achieved through the means recited in the attached claims. To achieve these stated and other objects, the present invention may be embodied and described as a method of automatically locating a control channel for a set-top terminal connected to a cable television system by successively tuning frequencies with the set-top terminal, in accordance with a table of frequencies at which a control channel might be transmitted, until a control channel is received by the set-top terminal. The method might also include, after locating a first control channel, continuing to successively tune frequencies in accordance with the table of frequencies until a second control channel is received. In order to provide appropriate programming for the set-top box, the method of the present invention may also include identifying a code object for download by the set-top terminal from a data transport stream of the control channel by matching a platform identifier stored in the set-top terminal with a platform identifier in a download locator message received via the control channel. The download locator message specifies where in the data transport stream a particular code object can be acquired. The platform identifier is specific to the architecture and capabilities of the set-top terminal. Preferably, the download locator message is an entitlement management message. The method continues by collecting PID 1 packets from the data transport stream of the control channel and extracting therefrom a second table that specifies packet identifiers for a plurality of download locator messages being transmitted on the data transport stream. With the second table in memory, the set-top terminal successively acquires the plurality of download locator messages via the control channel in accordance with the second table and extracts platform identifiers therefrom until a download locator message is found bearing a platform identifier that matches the platform identifier stored in the set-top terminal. The set-top terminal then obtains locator data from the download locator message having a platform identifier that matches the platform identifier stored in the set-top terminal. The locator data specifies where in the data transport stream a particular code object can be acquired. The set-top terminal then downloads the particular code object specified by the locator data from the download locator message that has a platform identifier that matches the platform identifier stored in the set-top terminal. The present invention also encompasses the necessary hardware for implementing the method described above. For example, a system for automatically locating a control channel for a set-top terminal connected to a cable television system according to the present invention may include a set-top terminal connected to a cable television system; and, within the set-top terminal, means for successively tuning frequencies in accordance with a table of frequencies at which a control channel might be transmitted, until a control channel is received by the set-top terminal. Finally, the present invention further encompasses a method of manufacturing a set-top terminal for use in a cable television system, where the set- top terminal automatically locates a control channel of the cable television system. This method of the present invention preferably includes providing the set-top terminal with a table of frequencies at which a control channel might be transmitted; and programming the set-top terminal to successively tune frequencies in accordance with the table of frequencies at which a control channel might be transmitted until a control channel is received by the set-top terminal. BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings illustrate the present invention and are a part of the specification. Together with the following description, the drawings demonstrate and explain the principles of the present invention. Fig. 1 is a block diagram illustrating the three different stages at which different programming packages have control of the set-top terminal during the initialization process of the present invention. Fig. 2 is a block diagram of the various memory devices and some code objects used in a set-top box according to the present invention. Fig. 3 is a flow chart illustrated the method of the present invention for locating control channels within a cable television system and identifying code objects to be downloaded that are appropriate to the architecture and capabilities of the downloading set-top terminal. DETAILED DESCRIPTION OF THE INVENTION: The present invention addresses the problems involved in connecting a set- top terminal to a cable television system and having that terminal recognize and tune the control channel or channels broadcast by the system operator over the cable television system. The system operator may use the control channel or channels to transmit instructions, data or programming to the set-top terminals connected to the cable system. Stated in broad principle, the present invention aims to provide a set-top terminal architecture that includes a resident boot code object. As shown in Fig. 3, the boot code object (302) resides in the set-top terminal (300), preferably in readonly memory (ROM) (301) and can automatically execute and initialize or re- initialize the set-top terminal. The boot code will preferably be automatically executed by the central processor (321) of the set-top terminal. Execution of the boot code may be triggered by and immediately follow connection of power to the set-top terminal. The present invention may additionally require connection of the cable television signal or data transport stream (322) from the cable system before execution of the boot code is triggered. Once the boot code is executing, no further action by the user/installer need be required. Moreover, no specific interaction is required between the headend and the set-top terminal that is initializing or booting. As will be described in detail below, the boot code (302) of the present invention will automatically find the control channel or channels being used by the system operator to transmit data, messages and/or programming to the population of set-top terminals. The boot code of the present invention can also locate and download appropriate software code object or objects needed by the set-top terminal from the data transport stream of the control channel or channels. The boot code (302) can locate, identify and download the required programming from among potentially many code objects that might be multiplexed on the transport stream (322) coming from the headend facility of the cable television system. The boot code (302) recognizes the hardware configuration of the set-top terminal (300) in which it resides via an internal ROM, protected Flash or other non- volatile memory coded identifier (320). This identifier (320) is matched against a value carried in an object download locator message from the transport stream (322) to insure that the boot code (302) obtains and downloads objects appropriate to the set-top terminal (300) in which the boot code (302) is resident. Functionally, the boot code of the present invention will identify an appropriate control channel frequency, find the stream of data packets within that control channel, identify and download the correct object from among the objects on the transport stream, verify that the downloaded code is authorized and error- free, and start the downloaded code without direct assistance by a technician or intervention from the headend. The term "boot code" as used herein comprises the minimal code needed to accomplish this functionality. There are essentially two distinct phases of programming a set-top box addressed by the present invention. The first is the initial programming of the set- top box. The second is upgrading the programming or re- initialization of the set-top box after that box has been placed in service. The initial programming of the set- top box is often performed by the cable system operator after the set-top box has been purchased from a manufacturer. Because each cable network is designed and built at different times by different service providers, each cable network may have a different design and architecture and use different code objects. Additionally, each system will likely have different classes of set-top terminals which were installed at different times and have different architectures and capabilities. Moreover, the specific services offered may vary among cable networks. Therefore, to adapt the set-top boxes to function within the specific environment of a service provider's cable system and to provide the specific group of services currently offered by that particular service provider, each set-top box must be programmed accordingly or "initialized," including being enabled to locate the control channel or channels used by the cable television system. Additionally, each terminal should, thereafter, be periodically re-programmed or upgraded to continue to function optimally within the evolving cable television system. Each time the programming of a set-top terminal is changed, the new code must be appropriate to the architecture and capabilities of that terminal. The process of programming or reprogramming a set-top terminal according to the present invention will now be explained. In order for a set-top terminal to be initialized, i.e., accept and utilize the initial programming it receives, it must have some base programming that instructs it how to accept and use that initial programming. This base programming within the context of the present invention is called the boot code. As described above, the boot code is computer code resident in the permanent memory of the set-top terminal that is loaded, preferably into read- only memory, at the factory and cannot be changed once a terminal has been deployed. As shown in Fig. 1, there are three general tiers or classifications of programming that run on or have control of the set-top terminal during different stages in the initialization and operation of the terminal according to the present invention. Referring to Fig. 1, the first classification of code is the boot code (1). While running the boot code (1), the set-top terminal cannot provide any services to the subscriber. The function (2) of the boot code (1) is to search the data transport stream received from the headend facility to locate, acquire and begin execution of the base platform code (3) which is the next tier or classification of programming. The boot code (1) is designed to authenticate the base platform code after the base platform code is downloaded. The boot code (1) will preferably re- authenticate the base platform code every time it launches the base platform object (3). When the base platform code (3) is executing, the execution of the boot code (1) is terminated and control of the set-top terminal passes to the base platform code (3). The base platform code (3) may be factory loaded. However, under the principles of the present invention, the base platform code (3) is preferably transmitted to the set-top terminal from the cable headend during the initialization of the terminal. This allows the operator of the cable system to customize the base platform code (3) for optimal operation on the specific cable system where the set- top terminal is deployed. Preferably, the base platform code (3) is transmitted over the cable plant on an out-of-band (OOB) transport stream. However, it is within the scope of the present invention for the base platform code (3) to be transmitted on an in-band control channel. The base platform code (3) has two functions. The first function of the base platform code (3) is to provide the basic capability of allowing a subscriber to watch television using the signal from the cable television system. The second function is to control the download (5) of the next classification of code objects, i.e., the target operating system (O/S) and resident applications (6). The base platform code (3), while allowing subscribers to watch television, does not generally support any additional functions of the set-top terminal. However, the base platform code (3) can acquire, authenticate, authorize and execute objects of the third and final classification of programming (e.g., the O/S) (5). The third classification of programming, the operating system and resident applications (6) provide the additional set-top terminal functions available from the cable system. The operating system (O/S) is typically code from a third party (such as Microsoft's WinCE™) that provides access, with the resident applications, to all authorized set-top terminal capabilities. The operating system typically uses an additional embedded code module provided by the manufacturer of the set-top terminal which interfaces the operating system with the particular hardware of that set-top terminal to enable the operating system to function with that specific set-top terminal. Resident applications are computer programs that run on the set-top terminal under the operating system. The resident applications work with the operating system to provide the capabilities of the set-top terminal that are in addition to watching television. The native suite is a specified group of software applications, including the operating system and perhaps various resident applications, that provide the intended functions of the set-top terminal. Specific elements of the native suite are determined by the system operator. As indicated in Figs. 1 and 2, the boot code (1, 302) is preferably factory- loaded in the read-only memory (ROM) of the set-top terminal and is executed as soon as AC power is provided to the set-top terminal. Alternatively, the boot code may be executed in response to a reset signal (4) received, for example, from the headend, i.e., the system operator. This allows the system operator to re-initialize the set-top terminal whenever desired. The reset signal (4) is preferably received by the base platform code (3) which then terminates execution of the operating system and resident applications (6), if running, and begins execution of the boot code (1). Alternatively, the reset signal (4) may cause the base platform code (3) to terminate and reload the native suite (6) rather than execute the boot code (1). As described above, whenever executed, the boot code (1) acquires and loads the base platform code (2). The base platform code may be provided to the set-top terminal over the cable network from the headend or, alternatively, may be factory- loaded along with the boot code. The boot code (1) will either download the base platform code (3), for example, over an out-of-band channel from the headend or, if the base platform code was factory-loaded, identify the base platform code (3) in memory. The boot code (1) authenticates the base platform code (3) from whatever source it is obtained and then executes the base platform code (3). The base platform code (3) then acquires the operating system and, preferably, the other objects of the native suite (6). The operating system and the other objects are downloaded from the headend over the cable network. The base platform code (3) will acquire the operating system and other objects when first executed or, while running, in response to an initialization message (4) from the system operator. The initialization message (4) maybe provided over the cable network. The operating system and resident applications (6) are then executed when the native suite is acquired, authorized and authenticated. The process for locating the control channel or channels of the cable television system will be described with reference to Figs. 2 and 3. As shown in Fig. 2, the processor (321) of the set-top terminal (300) controls a tuner (323) to tune a control channel over which data and programming are being broadcast by the headend to the population of set-top terminals. The set-top box (300) will have a table of carrier frequencies at which the headend may be broadcasting a control channel of data and programming. This table is preferably part of the boot code of the present invention. As shown in Fig. 3, the method of the present invention may begin with the set-top terminal tuning the first control channel listed in that table (400). This involves tuning to the frequency provided in the table at which a control channel might be broadcast. After the tuner (323) has tuned and locked this frequency, the processor (321) will determine whether it is receiving a control channel from the headend at that frequency (401). If no control channel is received at that frequency, the processor (321) will control the tuner (323) to tune the next possible frequency of a control channel (400). This will continue until a control channel is located. It is also possible to step through a frequency range or sweep a frequency range to find the control channel as opposed to stepping through a table of frequencies. Once a control channel is being received, if the boot code is initializing the set-top terminal, the boot code will begin collecting packets from the transport stream on the control channel that are identified with PID 1 (402). PID 1 is dedicated to the conditional access message in the MPEG standard. The packets of PID 1 will provide the boot code running on the set-top terminal with a Conditional Access Table (CAT) of EMM descriptors each of which identifies a PID for a set of packets on the transport stream that constitute an EMM stream (Entitlement Management Message) (403, 404). The boot code will begin with the first EMM descriptor and begin loading packets from the transport stream that are marked with the EMM PID given by the first EMM descriptor (405). The EMM PID packets being acquired will contain a boot code message of the present invention which, in turn, includes a platform identifier. Thus, the Entitlement Management Message will be extracted from the EMM PID packets acquired (406) and the platform identifier from the EMM will be extracted (407). As shown in Fig. 3, the boot code (302) which is factory-installed in the set- top terminal will also include a platform identifier (320) that is specific to the type, architecture and capabilities of terminal (300) in which the boot code is resident. When running, the boot code will attempt to match the platform identifier provided at the factory with the platform identifier from the boot code message of the EMM PID packets (408, 409). If no match is found, the boot code will select the next EMM descriptor in the CAT and check the packets of the EMM PID identified by the that EMM descriptor for a boot code message with a matching platform identifier (410, 405). This continues until the matching platform identifier is found. It may be possible to search multiple EMM PID's simultaneously to reduce the EMM validation time and the time required to find the matching boot code message. If all the EMM descriptors in the CAT of PID 1 are checked and no match is found for the platform identifier, the boot code will look for another control channel on another carrier frequency by returning to the table of carrier frequencies (410, 400). When another frequency with a control channel is identified and locked, the boot code will extract PID 1 and repeat the process outlined above. This continues until a boot code message with a platform identifier matching the platform identifier of the boot code is found. When the boot code finds a boot code message with a matching platform identifier, the set-top terminal has tuned to a control channel that is appropriate to its attributes and capabilities. The boot code may then extract a download PID (DL PID) specified in the boot code message with the matching platform identifier (411). The download PID (DL PID) is the identifier for the packets that carry the code object, e.g., the base platform code object, that is appropriate for the type of set-top terminal (300) with the platform identifier (320). The boot code can then download the base platform code or other code object by acquiring the packets with the DL PID and reassembling the data in those packets into the base platform code. As will be understood by those in the art, the platform identifier (320) of the present invention can be used to check any type of code object for is compatibility with the terminal in which the identifier (320) is resident. The invention is not limited to the use of the identifier (320) by the boot code (302) to locate and identify an appropriate base platform code. The platform identifier (320) of the present invention can be used in the same manner described above, for example, by the base platform code to identify and acquire an operating system object designed for the downloading set-top terminal. The platform identifier (320) can also be used to identify other elements of the native suite, i.e., resident applications, that are appropriate for the downloading set-top terminal. Additionally, the platform identifier (320) of the present invention need not necessarily be incorporated into the boot code (302). Rather, the platform identifier (320) can be stored anywhere within the set-top terminal (300) where it can be accessed by the executing programs that require it to identify appropriate code objects for download. Fig. 2 illustrates four memory units of a set-top terminal (300) according to the present invention. A read-only memory unit (ROM) (301) contains the boot code (302). A flash memory unit (303) contains the base platform code (304) and the O/S object (306). Aside from these objects, additional flash memory is available (305). Two stack pointers (307, 308) designate absolute locations in the Flash memory (303) for the base platform code (304, 308) and the O/S (306, 307). It is important that these two objects may be absolutely located in Flash (303). A non- volatile memory unit (310) preferably has both a managed and a non- managed segment. The base platform code (304) may store parameters and other data in the either portion of the non- volatile memory unit (310). Finally, a random access memory unit (RAM) (309) is provided. Downloaded objects such as the base platform code, the O/S, etc. may be stored in the RAM (309) until authenticated. Once authorization and authentication are successfully completed, the objects may be transferred from the RAM (309) to the Flash memory unit (303) for long-term storage. The preceding description has been presented only to illustrate and describe the invention. It is not intended to be exhaustive or to limit the invention to any precise form disclosed. Many modifications and variations are possible in light of the above teaching. The preferred embodiment was chosen and described in order to best explain the principles of the invention and its practical application. The preceding description is intended to enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated.

Claims: WHAT IS CLAIMED IS: 1. A method of automatically locating a control channel for a set-top terminal connected to a cable television system, the method comprising successively tuning frequencies with said set-top terminal, in accordance with a table of frequencies or a frequency range at which a control channel might be transmitted, until a control channel is received by said set-top terminal. 2. The method of claim 1, further comprising, after locating a first control channel, continuing to successively tune frequencies in accordance with said table of frequencies or a frequency range until a second control channel is received. 3. The method of claim 1 , further comprising identifying a code object for download by said set-top terminal from a data transport stream of said control channel by matching a platform identifier stored in said set-top terminal with a platform identifier in a download locator message received via said control channel that specifies where in said data transport stream a particular code object can be acquired, wherein said platform identifier is specific to said architecture and capabilities of said set-top terminal. 4. The method of claim 3, wherein said download locator message is an entitlement management message. 5. The method of claim 1, further comprising collecting PID 1 packets from said data transport stream of said control channel and extracting therefrom a second table that specifies packet identifiers for a plurality of download locator messages being transmitted on said data transport stream. 6. The method of claim 5, further comprising successively acquiring said plurality of download locator messages via said control channel in accordance with said second table and extracting platform identifiers therefrom until a download locator message is found bearing a platform identifier that matches a platform identifier stored in said set-top terminal. 7. The method of claim 6, further comprising obtaining locator data from said download locator message having a platform identifier that matches said platform identifier stored in said set-top terminal, wherein said locator data specifies where in said data transport stream a particular code object can be acquired. 8. The method of claim 7, further comprising downloading to said set- top terminal said particular code object specified by said locator data from said download locator message having a platform identifier that matches said platform identifier stored in said set-top terminal. 9. A system for automatically locating a control channel for a set-top terminal connected to a cable television system, the system comprising: a set-top terminal connected to a cable television system; and, within said set-top terminal, means for successively tuning frequencies in accordance with a table of frequencies or a frequency range at which a control channel might be transmitted, until a control channel is received by said set-top terminal. 10. The system of claim 9, further comprising, after locating a first control channel, means for continuing to successively tune frequencies in accordance with said table of frequencies or a frequency range until a second control channel is received. 11. The system of claim 9, further comprising means for identifying a code object for download by said set-top terminal from a data transport stream of said control channel by matching a platform identifier stored in said set-top terminal with a platform identifier in a download locator message received via said control channel that specifies where in said data transport stream a particular code object can be acquired, wherein said platform identifier is specific to said architecture and capabilities of said set-top terminal. 12. The system of claim 11, wherein said download locator message is an entitlement management message. 13. The system of claim 9, further comprising means for collecting PID 1 packets from said data transport stream of said control channel and extracting therefrom a second table that specifies packet identifiers for a plurality of download locator messages being transmitted on said data transport stream. 14. The system of claim 13, further comprising means for successively acquiring said plurality of download locator messages via said control channel in accordance with said second table and extracting platform identifiers therefrom until a download locator message is found bearing a platform identifier that matches a platform identifier stored in said set-top terminal. 15. The system of claim 14, further comprising means for obtaining locator data from said download locator message having a platform identifier that matches said platform identifier stored in said set-top terminal, wherein said locator data specifies where in said data transport stream a particular code object can be acquired. 16. The system of claim 15, further comprising means for downloading to said set-top terminal said particular code object specified by said locator data from said download locator message having a platform identifier that matches said platform identifier stored in said set-top terminal. 17. A method of manufacturing a set-top terminal for use in a cable television system, where the set-top terminal automatically locates a control channel of said cable television system, the method comprising: providing said set-top terminal with a table of frequencies or a frequency range at which a control channel might be transmitted; and programming said set-top terminal to successively tune frequencies in accordance with said table of frequencies or a frequency range at which a control channel might be transmitted until a control channel is received by said set-top terminal.

Inventors: BAHRAINI ARDIE, BIRNBAUM JACK M, DEL SORDO CHRISTOPHER S, LEHRMAN IRA S, MAKOFKA DOUGLAS S, MULLINS ROBERT P, POLI CHRISTOPHER, BAHRAINI, ARDIE, BIRNBAUM, JACK, M., DEL SORDO, CHRISTOPHER, S., LEHRMAN, IRA, S., MAKOFKA, DOUGLAS, S., MULLINS, ROBERT, P., POLI, CHRISTOPHER
Applicants: GEN INSTRUMENT CORP, GENERAL INSTRUMENT CORPORATION
Application year: 2000
Main classification: H04N7
IPC codes: G06F9, H04N5, H04N7