Abstract:
A storage control system for a decoder. A decoder with a hardware platform for receiving and decoding coded data and a storage system for temporarily holding the decoded data from the hardware platform. A transport stream containing a global control data stream is used to manage the storage system. The global control data stream has an acquisition table (ACT) for providing a schedule of contents to be recorded, a playout control table (PCT) for providing a schedule of content that is to be played out by the decoder, and a content control table (CCT) for listing content that exists on the decoders.

Description:
CROSS-REFERENCE TO RELATED PATENT APPLICATIONS  
       [0001]     The present U.S. application is related to U.S. applications entitled “CONTROL SYSTEM WITH GLOBAL CONTROL STREAM FOR CONTROLLING A PLURALTY OF DECODERS” with attorney docket number A-10486, and “UPLINK SIGNALING FOR GLOBAL DECODER CONTROL” with attorney docket number A-10496, which are incorporated herein by reference, and have been filed concurrently with the present application. 
     
    
     FIELD OF THE INVENTION  
       [0002]     This invention relates in general to broadband communications systems, and more particularly, to the remote signaling from an uplink to a decoder for the purpose of program scheduling and coordinating decoder controllers.  
       DESCRIPTION OF THE RELATED ART  
       [0003]     Hybrid fiber/coax (HFC) broadband networks contain four primary components: the headend, the AM fiber optic link, the distribution plant, and customer premises. The most important is the headend, where signals from multiple sources are received and are conditioned or cleaned up and placed on an RF carrier. Once signals have been prepared for delivery, they are combined onto a single cable and are ready to be sent over the network.  
         [0004]     The three most common types of signals received at the headend include off-air signals, satellite signals, and local origination signals. However, satellite signals are the most common type of signal passing through the headend. Satellite signals include any signal transmitted from an earth station to an orbiting satellite, then retransmitted back down to earth. Satellite signals follow three route segments from the transmitting earth station to the receiving earth station. First, signals are transmitted from earth to an orbiting satellite on a path referred to as the uplink; signals are received by a transponder on a satellite; signals are retransmitted from the transponder to a receiving earth station over the downlink. The transponder amplifies the incoming signal and changes its frequency for the downlink journey to avoid interference with uplink signals.  
         [0005]      FIG. 1  illustrates a satellite broadcast network  100 . At the uplink facility  110 , program content is stored on video servers controlled by a broadcast automation system. Any analog content at the network playout center is compressed using encoders and then multiplexed with the content delivered from the video file servers. The Network Operations Center (NOC)  120  is responsible for overall control and co-ordination of the uplink and the downlink sites. The headend  130  may include one or more server devices for providing broadband signals, such as video, audio, and/or data signals. The headend  130  has numerous decoders  140  which preferably each have a mass storage device  150 , such as a hard disk drive.  
         [0006]     The addition of mass storage devices in the digital television broadcast distribution network enables new applications and enhances existing ones. The headend would have the ability to store programs for delayed playback which allows customers to reduce the bandwidth requirements necessary for live playback. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0007]     The invention can be better understood with reference to the following drawings. The components in the drawings are not necessarily drawn to scale, emphasis instead being placed upon clearly illustrating the principles of the invention. In the drawings, like reference numerals designate corresponding parts throughout the several views.  
         [0008]      FIG. 1  illustrates a satellite broadcast system.  
         [0009]      FIG. 2  illustrates one embodiment of a general uplink system.  
         [0010]      FIG. 3  illustrates one embodiment of a decoder with a hardware and software platform.  
         [0011]      FIG. 4  illustrates one embodiment of a hardware platform for the decoder of  FIG. 3 .  
         [0012]      FIG. 5  illustrates a more detailed embodiment of the hardware platform for the decoder of  FIG. 3 .  
         [0013]      FIG. 6  illustrates one embodiment of a software platform for the decoder of  FIG. 3 . 
     
    
     DETAILED DESCRIPTION  
       [0014]     The embodiments of the invention can be understood in the context of a broadband communications system. Note, however, that the invention may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. For example, transmitted broadband signals may include at least one of video/audio, telephony, data, or Internet Protocol (IP) signals, to name but a few. All examples given herein, therefore, are intended to be non-limiting and are provided in order to help clarify the description of the invention.  
         [0015]      FIG. 2  illustrates a generalized model of an uplink  200  that consists of functional components that perform specific duties. For example, an encoder  210  takes raw program input and encodes it into another format for output. It may take video and audio and encode it using an MPEG compliant algorithm, or it may take IP packets via Ethernet and encode it using DVB MPE.  
         [0016]     The generalized uplink  200  consists of encoders  210  used to encode programs for insertion into the transport stream and a multiplexer  220  to combine programs from the encoders  210  to form the transport stream. An uplink control server  230 , such as a Network Centre Server, manages the uplink devices and configures the decoders  300  ( FIG. 3 ) to listen to a selected set of global control streams, such as storage control stream (SCS) remote control streams. DVR control servers  240 ,  250  inject global control streams to control operation of the decoders  300 , such as the operation of the program storage system. In one embodiment, the uplink  200  may also include a file distribution DVR control server.  
         [0017]     For example, because the control data stream is global, a plurality of decoders may be controlled simultaneously. Also, the addition of storage devices to the decoders helps to reduce and manage the amount of bandwidth required over the satellite transmission. Decoders with a storage system allow for program regionalization where an entire program is substituted to overcome rights restrictions in particular locations as well as inject local stories and news. The storage system also allows for storing of programs transmitted to the headend prior to their scheduled playout time, but which may then be played out later during the scheduled time. This may be referred to as “store and forward”. For example, a program is stored for time zone delay or for multiple playbacks in a short amount of time.  
         [0018]     The present invention includes a control system for controlling groups of decoders simultaneously. A global control data stream is a collection of data used for global applications. This data stream is global in the sense the data is not addressed to any individual decoder or to any particular group of decoders as is an entitlement management message (EMM). There are preferably at least three global control data streams—disaster recovery, live event control, and storage control. The streams may exist on a shared or independent PID. The global control data stream is a set of messages that are multiplexed into all signals of a network. A global control data controller is able to produce messages on the global PID on demand. The command to produce a message may come from a human operator pushing a button in a control room, from an Automation System or time scheduled. Commands can be sent once or repetitively.  
         [0019]     The decoder is initialized using the control system initialization EMM before it can respond to any control stream. This EMM delivers the network&#39;s Customer Code and the control system Ids. Control system Ids exist for each control system: the storage control system (SCS_Id), event control system (ECS_Id) and disaster recovery system (DR_Id). The Customer Code is a unique number assigned to each customer that has independent networks. If the decoder&#39;s Customer Code does not match the one on transmission, then either the decoder has not been initialized or the decoder has changed networks. If the control system Id does not match, then it is possible that there are multiple global control data streams on transmission for a particular customer.  
         [0020]     Groups are assigned to a decoder as a block. Given the preference of unlimited groups, the current recommendation is for the decoder to support the storage of all available groups. The EMM can deliver up to 10 groups at a time. The decoder caches the group codes delivered in multiple EMMs until all have been received. When we are sure a complete set has been received, they are written to non-volatile memory. All groups assigned to a decoder have equal priority, as far as the targeting system is concerned. When an event control table (ECT) is received, the decoder checks for group code matches. Any group code either matches or does not match. There is no dependency on other group codes in deciding a match.  
         [0021]     One aspect of the control system is group targeting. A control table of the global control data stream contains a list of subscriber group code matching instructions and each one must be checked against the set of decoder group codes. If a particular decoder is “targeted” then it performs the associated action. Targeting a decoder follows a simple matching algorithm. The targeting system is order dependent. The uplink systems creating the stream and the decoders consuming the stream, implement the same algorithm. For this algorithm, the term targeted means that a particular decoder will implement an action. Any decoder not targeted will not be affected in any way by the actions received. The common control syntax consists of two loops. The first loop provides the targeting list and the second provides the list of actions. Inside the first loop are descriptors and each descriptor provides a list of group codes. A descriptor is of limited size so it may be necessary to use multiple descriptors. Multiple descriptors are required to implement some more complex grouping methods.  
         [0022]     Group targeting should follow these general rules. All decoders start not targeted. The descriptor may direct all decoders to change its targeted state relative to the previous calculated value. Before a descriptor is processed, the current targeted state may be the same as it was at the end of the previous descriptor or inverted relative to what it was at the end of the previous descriptor. Each group code listed may change the current targeted state through one of the following tests: make a decoder targeted if the group code matches; make a decoder not targeted if the group code matches; or make no change to the targeted state if the group code does not match.  
         [0023]     The concept for this system is a single variable used to hold the decoders targeted state. This variable is initialized to not target when a new control table arrives to be processed. The state is modified first by the global control data stream and then by each group code and matching instruction listed in the descriptor. This is repeated for each descriptor in the first loop. When all descriptors have been processed, the variable will be in one of two states, targeted or not targeted. If it is targeted, then the actions listed in the second loop are to be executed. If it is not targeted, then the decoder takes no action.  
         [0024]     The control table delivers a list of actions that are to be executed if targeted. One action typically associated with an event control system is the force tune feature. A storage control system would typically issue actions of acquire or play out.  
         [0025]     In one embodiment, still referring to  FIG. 2 , the DVR control server  240  injects a global control data stream, such as the storage control stream for directing the actions of the storage enabled decoders  300 , shown in  FIG. 3 . The storage control stream may carry one or more of a Content Control Table (CCT), an Acquisition Control Table (ACT), and a Playout Control Table (PCT). Each of the tables share syntax and may contain specific types of action descriptors. The CCT is used to deliver the content that is expected to exist on a decoder now or in the future. Any content that is network controlled, but not listed in this table, is to be deleted from the decoder storage. The content may consist of video and audio content remotely triggered for acquisition. The decoder  300  will create an entry in its directory for each content description. When a playback command is given, the decoder  300  needs to determine if the content requested has actually been acquired or not. If the content reference id matches a previous directory entry, then this indicates that the entry should be renamed with the new information.  
         [0026]     A content reference consists of two parts—the data that is delivered to the decoder  300  and the data that is locally managed on the hard drive  150 . The CCT may be used to reserve disk space for high priority acquisitions and for storing local content from an Ethernet port or triggered by the front panel interface  318  ( FIG. 3 ) independent of the global data stream control. The downloaded information is the content reference id, the filename the decoder  300  should use, the service id to tune to for live playout, the content type selector, and the expiry date. The locally maintained information is whether the content is present and the actual size of the content. Content deletion occurs if there is no entry in any new CCT. The CCT will always be sent as a complete table and may require multiple sections to deliver all of the information. The decoder  300  acquires all sections and save the information in temporary storage until it is complete. The table also contains a version number. If this value changes, then any in-progress download of the CCT should be restarted. If the version is the same as the previous table processed, the decoder  300  should be able to ignore it, since it is the same data. To avoid possible timing problems, there should be some hysteresis provided before deleting a file. The decoder  300  should flag a file for delete and only perform the actual delete after a predetermined time, or after processing two complete CCT downloads for verification, or some similar type of self-check.  
         [0027]     The ACT provides the date, time, and duration for a network controlled acquisition. Since the filename is delivered in the CCT, it is possible that there is no entry present at the time of the record. This could be due to a slow update of a CCT and a “record now” request. Less likely is an error in formatting the CCT or missed updates by the decoder. To alleviate this problem, the ACT will contain a copy of the filename and expiry date. This should be used only if there is no entry in the local CCT. The ACT data would be updated when the actual content control data finally arrives. One concern with this duplicate data is the waste of bandwidth with long filenames. In one embodiment, the ACT will send a temporary unique filename and the real filename will be sent in the CCT and renamed upon arrival. The ACT will support recording of live content from a local source, such as an RF tuner, DVB ASI input, or a special IP transport input. Content may also be copied from an existing file, a text message embedded in the ACT, or a URL addressed to content from a source connected to the decoder&#39;s Ethernet port. The date and time provides an exact time to start recording. The duration in the ACT provides the record time window. The actual number of frames recorded is saved by the decoder. The duration in the ACT is only of use to schedule recording. In addition to triggering the requests of content based upon a time window, the recording can also be triggered by uplink signaling embedded in the program such as cue triggers or digital program insertion (DPI) messages, uplink signaling embedded in the program within a time window, or a front panel input within a time window.  
         [0028]     The PCT provides the date, time, and window for all scheduled playout sessions. The playout content includes live program content, stored program content, text messages embedded in the PCT, and text messages in a file. There are additional controls to allow for playout of a partial file, such as indexed into the file, for example, starting the playout other than at the beginning, and to loop the file, such as playing the content repetitively within a time window. The window provides the time over which a playout should occur. However, the actual content may be less than, the same length, or longer than the window. When less, the decoder will need to fill the time with some default content until the window expires. If the content is too long, it should simply stop playing the content and return to the default content or follow on content that may be specified. If the PCT does not specify any playout, default playout instructions, such as displaying a text message or tuning to a channel to playout a specific file, are followed.  
         [0029]     Disaster recovery applications include alternative mapping services. For example, if a normally tuned signal is lost for a period of time, a backup service would be desired. The backup service would tune the lost signal through an alternative satellite or carrier.  
         [0030]     Event control applications include live programming such as sports, for example, which allows realtime force tuning of groups of decoders to follow regionalized sporting events or to provide alternate programs where rights restrictions prevent viewing of the sporting event.  
         [0031]     The event control system, utilizing the global event control stream, is intended to force tune a plurality of decoders simultaneously. Authorization is normally an EMM function. However, the normal force tune operation using EMM distribution has too large a latency between when the first decoder and the last decoder retune. In addition to force tune, it is desirable to control the authorization state of the decoder. Deauthorizing a decoder may be referred to as “blocking”. Both event control and blocking are controlled by the global control data stream. However, the setup of the feature (i.e. Assigning group membership to subscribers and decoders) is preferably still done using EMM distribution.  
         [0032]     Referring to  FIG. 3 , the decoder  300  includes a hardware platform  310  and a software platform  320 . The decoder hardware platform  310  takes in one or more transport streams  312  and plays out one or more programs  314 . The decoder hardware platform  310  provides one or more of the controls streams  316  to the decoder operating system  320  and has a front panel interface  318  that is used to submit the requests to the decoder operating system  320 . The decoder operating system  320  has one or more control streams processors  322  to extract and forward arbitration contexts  324  to an arbiter  326  to resolve conflicting requests from controllers using the arbitration contexts  324 , and requests to perform decoder functions to a remote controller  328  which submits the requests. The decoder operating system  320  also has local controllers  330  to manage login sessions into the decoder  300  and a requests processor  332  to handle the requests from controllers producing program control data that is used to control the decoder hardware platform  310 .  
         [0033]      FIG. 4  illustrates one embodiment of the decoder hardware platform  310  in more detail where there are multiple transport stream inputs  410 . The input source tuners  420  take one or more transport streams inputs  410  and produce a single transport stream output to the input source routing matrix  430 . The input source routing matrix  430  outputs the transport streams. Each output is capable of selecting any of the inputs and is capable of being sent to a program source  440 . The program sources  440  are used to send a live program to the program routing matrix  450 . The program can be sourced from the transport stream by its service ID or sourced from content injected by the decoder operating system  320 . The program source  440  can also provide the SCS control streams. Any SCS control stream in the transport stream may be extracted and sent to the decoder operating system  320 . It can be selected by its own service ID or included in the service ID of the live program. The program routing matrix  450  has an input for the program source  440  and the program reader  460 . The program routing matrix  450  also has an output for each program play out and program write and is capable of selecting from any input.  
         [0034]     The decoder hardware platform  310  also has a storage system  470  which includes multiple storage units  480  and a program writer  482  capable of writing a program into a storage unit and a program reader  460 . The program outputs  484  are produced by a translator  486  used to convert from multiple native program formats to a single playout format. The program output  484  can also be produced by a playout to output, and the program is groomed, such as output mapping and routing, to a form that can be consumed by external equipment. Control stream translators  488  are used to convert the raw control streams to a form that can be used by the decoder operating system  320 . The front panel interface  318  can be used to submit the requests to the decoder operating system  320 .  
         [0035]      FIG. 5  illustrates one embodiment of another decoder hardware platform  500 . The inputs can be multiple satellite RF input sources with DVB complaint PSI/SI streams or an ASI input. The tuners  520  can tune among the inputs to provide a single compliant transport stream from a carrier, which can be used to control tuner operation. The input source routing matrix  530  is hardwired to provide the DVB compliant transport stream from the tuners  520  to all the program sources. Live programs can be provided by the transport stream. Each is identified by its DVB service ID and has a corresponding program mat table (PMT). One program source is an MPEG program extractor  550 . It is only capable of extraction and provides the master control stream. The MPEG program extractor  550  provides live MPEG program content used for playout and storage. It is not directly available to the decoder operating system  320  for processing. The MPEG program extractor  550  can provide file distribution control streams if the PMT of the MPEG program carriers MPE data targeted for file distribution. A second program source is a file distribution program extractor  540 . It is capable of both extraction and injection of program content. The file distribution targeted MPE data streams are passed directly to the IP Packetizer  560 . The file distribution streams may contain control data, playout content and storage content all of which are passed to the file distribution client residing in the decoder OS. MPEG content in the PMT is ignored. The file distribution client can write playout content directly to the IP Packetizer  560  for playout. The file distribution client can also inject storage content to be stored.  
         [0036]     There are preferably four output playouts  570 . Three for MPEG programs and one for file distribution programs. The MPEG program playout includes analog, Ethernet, and digital. The analog program playout is used to pay out programs presented on output ports that are intended to be connected to peripheral equipment that is used to display or record the program such as TV, radio tuner, VCR, etc. The Ethernet program playout is used to stream the IP data received in MPE format. The digital program playout is used to play out programs in the form of MPEG transport packets on a DVB ASI output. The file distribution program playout is of file distribution content on Ethernet. Translation of file distribution programs for MPEG playout and vice versa is also possible.  
         [0037]     The decoder hardware platform  500  also has a storage system  470 . If only one program may be written into storage at a time, multiple requests to write to storage will be performed in sequence. If only one program may be read from storage at a time then multiple requests to read from storage will be disallowed. Storage will be supported with a hard disk drive with a partition for MPEG programs and a partition for file distribution programs. The program routing matrix  450  will support the routing of MPEG live or stored programs to MPEG playout outputs and the MPEG storage unit. The program routing matrix  450  will also support the routing of file distribution live or stored programs to file distribution playout outputs and the file distribution storage unit.  
         [0038]      FIG. 6  illustrates one embodiment of the decoder software platform  320  in more detail. There is a control stream processor  322  for each control stream. In one embodiment, the two control streams would be a global control data stream and a file distribution control stream. Each control stream processor  322  is capable of extracting remote control requests from the control stream and passing them to the appropriate control stream processor&#39;s appropriate remote controller  328 . The remote control requests may be segmented for a subset of the decoder population. Each subset will have its own remote controller  328 . The control stream processor  322  is capable of extracting any program content present in the control stream and passing it to the appropriate remote controller. A controller pool  620  is an entity that is capable of processing remote control requests and submitting the resulting decoder requests to the arbiter  326 , and processing program content and submitting the resulting decoder requests to the arbiter  326 . The controller pool  620  may contain one FPI controller  630  to handle requests originating from the decoder&#39;s front panel interface  318 , one or more local controllers  330  used to handle requests from any users locally logged into the decoder, and one or more remote controllers  328  used to handle any requests extracted from the control streams. The arbiter  326  has a context pool  640 . Each controller in the controller pool  620  must have a corresponding context in the context pool  640 . Rights/arbitration logic  650  makes use of the contexts in the context pool  640  to determine if a controller has the rights to issue the request or to access the necessary resources to perform the request. The rights/arbitration logic  650  also arbitrates controller conflicts. A controller conflict can be detected by determining if an operation needed to be performed by a request has been locked by a request form another controller or a resource needed by a request has been locked by a request from another controller. A controller conflict can be resolved by determining relative priorities of the conflicting requests or by determining interruptability of existing requests. A higher priority request may override another request if the outstanding request is interruptible. The rights/arbitration logic  650  also produces an arbitrated request that contains only changes that the controller has rights for. A request processor  332  processes the arbitrated request to produce the program control data used to drive the decoder hardware platform  310 .  
         [0039]     It should be emphasized that the above-described embodiments of the invention are merely possible examples, among others, of the implementations, setting forth a clear understanding of the principles of the invention. Many variations and modifications may be made to the above-described embodiments of the invention without departing substantially from the principles of the invention. All such modifications and variations are intended to be included herein within the scope of the disclosure and invention and protected by the following claims. In addition, the scope of the invention includes embodying the functionality of the embodiments of the invention in logic embodied in hardware and/or software-configured mediums.