Software RASP parser for a PVR-enabled set-top system

According to one aspect, there is provided a method for parsing RASP events in a number of packets in a PVR-enabled set-top system using a software RASP parser. The method includes retrieving a first SCID from a first packet, determining if the first SCID is on a SCIDList, and determining if the first packet is scrambled if the first SCID is on the SCIDList. The method further includes retrieving a second SCID from a second packet if the first SCID is not on the SCIDList. The method further includes determining if the first packet is an auxiliary packet if the first packet is not scrambled. The method further includes checking for a bundle boundary RASP event if the first packet is scrambled. The method further includes parsing the first packet for a scrambled RASP event if the first packet is scrambled.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention is generally in the field of set-top systems. More specifically, the present invention is in the field of random access scrambled stream processing (RASP) parsers for personal video recorders in set-top systems.

2. Related Art

A Set-Top Box (STB) can include a Personal Video Recorder (PVR) for recording a TV program for later viewing. The STB can further include a Random Access Scrambled Stream Processing (RASP) module to provide access to encrypted TV programs that are recorded by the PVR. The RASP module can include a RASP parser, which can be implemented in a hardware device. The RASP parser can be configured to generate a table including indexes associated with particular access points in an encrypted TV program, which has been recorded on a hard disk in the STB. When the encrypted TV program is played back, the index table generated by the RASP parser can be utilized to allow the PVR to perform trick mode functions, such as fast forward and rewind, between the access points in the encrypted program.

To add features to the RASP parser or to accommodate changes that may occur in set-top technology or encrypted TV programming, the RASP parser may require modification. However, a conventional RASP parser typically cannot be easily or quickly modified.

SUMMARY OF THE INVENTION

A software RASP parser for a PVR-enabled set-top system, substantially as shown in and/or described in connection with at least one of the figures, as set forth more completely in the claims.

DETAILED DESCRIPTION OF THE INVENTION

The present invention is directed to a software RASP parser for a PVR-enabled set-top system. Although the invention is described with respect to specific embodiments, the principles of the invention, as defined by the claims appended herein, can obviously be applied beyond the specifically described embodiments of the invention described herein. Moreover, in the description of the present invention, certain details have been left out in order to not obscure the inventive aspects of the invention. The details left out are within the knowledge of a person of ordinary skill in the art.

The drawings in the present application and their accompanying detailed description are directed to merely example embodiments of the invention. To maintain brevity, other embodiments of the invention which use the principles of the present invention are not specifically described in the present application and are not specifically illustrated by the present drawings. It should be borne in mind that, unless noted otherwise, like or corresponding elements among the figures may be indicated by like or corresponding reference numerals.

As shown inFIG. 1, harmonizer test tool module106is coupled to record/RASP driver module120and play driver module118via harmonizer API module108and API module114. Harmonizer test tool module106provides enhanced TV test tools on a graphical user interface (GUI) to allow users to interactively test enhanced TV file systems, RASP events, and enhanced TV record and playback capabilities. Harmonizer API module108provides an interface to allow harmonizer test tool module106to communicate with API module114, which provides an interface for communication with record/RASP driver module120and play driver module118. API module114also provides a meta-indexer for generating meta-indexer files during enhanced TV mode program recording on a PVR, which can utilize a hard disk that can reside in set-top hardware104. Record/RASP driver module120provides software for controlling the operation of the PVR in a record mode and play driver module118provides software for controlling the operation of the PVR in playback mode.

Also shown inFIG. 1, application module110is coupled to record/RASP driver module120and player driver module118via API module114and also coupled to driver module116via API module112. Application module110provides applications for controlling the PVR, which is included in set-top hardware104, in the enhanced TV mode and for controlling set-top hardware104in a non-enhanced TV mode. In the non-enhanced TV mode, API module112provides an interface to allow application module110to communicate with driver module116to control the operation of set-top hardware104in the non-enhanced TV mode.

Further shown inFIG. 1, Record/RASP drive module120is coupled to software RASP parser module122and porting interface module124. Software RASP parser module122comprises a software RASP parser (not shown inFIG. 1), which can be configured to inspect and process RASP events from recorded packets. For example, the software RASP parser can inspect and process the RASP events after the packets are recorded into a memory buffer, which can reside in set-top hardware104, and before saving the transport packets to the hard disk for playback at a later time. The RASP events, which can correspond to respective bits in a packet, can include bundle boundary, change of content to not scrambled, change of content to scrambling polarity0, change of content to scrambling polarity1, time code flag, RTS flag, AUX packet, modifiable flag, packet replacement, first packet in the recording, and internal RASP tick, for example.

The software RASP parser can be further configured to receive meta-indexer data from record/RASP driver module120and generate an index table (not shown inFIG. 1), which includes indexes associated with particular sections of a recorded enhanced TV program. The index table, which is generated by the software RASP parser, can be utilized by the PVR during program playback for performing trick mode functions, such as reverse and fast-forward. For example, the index table provided by the software RASP parser can be utilized by the PVR to fast-forward to a desired section of a recorded news program during program playback. The present invention's software RASP parser can be advantageously utilized as a substitute for a conventional RASP parser that is implemented in hardware. The operation of the invention's software RASP parser will be further discussed in relation toFIGS. 3A,3B,4A,4B, and5.

Also shown inFIG. 1, record/RASP driver module120, play driver module118, and driver module116are coupled to set-top hardware104via porting interface module124. Porting interface module124provides an interface through which record/RASP driver module120, play driver module118, and driver module116can control set-top hardware104. Set-top hardware104can include a hard disk, which can be utilized by the PVR to record TV programs and play back the recorded TV programs, and a processor, such as a microprocessor, for executing set-top software module102. Set-top hardware104can also include other types of hardware devices, such as a memory device.

FIG. 2shows a diagram of an example software RASP parser module, according to one embodiment of the present invention. Software RASP parser module222inFIG. 2corresponds to software RASP parser module122inFIG. 1and includes software RASP parser226and index table230. Software RASP parser226can be configured to inspect and process RASP events from recorded transport packets in a data stream received from record/RASP driver module120inFIG. 1, and generate index table228, which can reside in the hard disk in the PVR. Index table228can include indexes associated with particular sections of a recorded enhanced TV program.

FIGS. 3A and 3Bshow flowchart300depicting a method for parsing RASP events by a software RASP parser, according to one embodiment of the present invention. Certain details and features have been left out of flowchart300ofFIGS. 3A and 3Bthat are apparent to a person of ordinary skill in the art. For example, a step may consist of one or more sub-steps or may involve specialized equipment, as known in the art. While steps302through342shown in flowchart300are sufficient to describe one embodiment of the present invention, other embodiments of the invention may utilize steps different from those shown in flowchart300. The RASP event parsing process in flowchart300can be performed, i.e., executed, by a processor, such as a microprocessor, which can reside in set-top hardware, such as set-top hardware104inFIG. 1.

The RASP event parsing process in flowchart300starts at step302. Initially, a transport buffer, which can reside in set-top hardware, such as set-top hardware104inFIG. 1, can be provided with a number of packets for inputting into the invention's software RASP parser. At step304, a number (PktNum) of packets are inputted into a packet buffer (pBuf) and a packet counter is set to 0. At step306, the software RASP parser determines if PktNum (the number of packets in pBuf) is greater than 0. If PktNum is not greater than 0, flowchart300proceeds to step308. At step308, the software RASP parser triggers the “Notifying the software RASP processing thread” to send any event logs (from the input packets) to the RASP high level component. At step310, the software RASP parser updates the PSI message read pointer (ReadPtr) for all SCID (packet identifier code) to insure that there are additional locations for subsequent packets. At step312, the RASP event parsing process ends.

At step306, if PktNum is greater than 0, flowchart300proceeds to step314. At step314, the software RASP parser increases the packet counter for the next packet, obtains a prefix packet header, and retrieves a SCID (packet identifier code) from the current packet. At step316, the software RASP parser determines if SCIDList, which is a list of SCID that is configured for a particular record channel by enhanced TV middleware, is greater than 0. If SCIDList is greater than 0, flowchart300proceeds to step318. At step318, the software RASP parser compares the SCID from the current packet with each SCID in the SCIDList. If the SCID is not found in the SCIDList, i.e., SCIDList is equal to 0, flowchart300proceeds to step306. If PktNum is greater than 0 at step306, flowchart300proceeds to step314, where the software RASP parser increases the packet counter and retrieves a SCID from the next packet. The process of comparing the current SCID with each SCID on the SCIDList to determine if the current SCID is on the SCIDList is repeated by the software RASP parser at step318. If the current SCID is on the SCIDList, flowchart300proceeds to step320.

At step320, the software RASP parser determines if the current packet is the first recorded packet for this record channel. If the current packet is the first recorded packet for this record channel, flowchart300proceeds to step322. At step322, the software RASP parser marks the first record packet RASP event for this packet. At step324, the software RASP parser checks the control flag (CF) bit for a clear network packet, i.e., an unscrambled packet. If CF=1, which indicates that the current packet is a clear network packet, flowchart300proceeds to step330. At step330, the software RASP parser checks the header designation (HD) and continuity counter (CC) to determine if this is an auxiliary packet. If CF=0 and HD=0, which indicates that the current packet is an auxiliary packet, flowchart300proceeds to step332, where AUX_PKT is set to 1. If the current packet is not an auxiliary packet, flowchart300proceeds to step336. At step334, the software RASP parser parsers the auxiliary packet for RASP events.

At step324, if CF=0, which indicates that the current packet is a scrambled packet, flowchart300proceeds to step326. At step326, the software RASP parser checks for the bundle boundary RASP event. At step328, the software RASP parser parsers for the scramble parity change. The software RASP parser can also handle packet corruption and packet replacement. At step336, the software RASP parser parsers for the packet replacement RASP event. The packet replacement or corruption is only applied to the recorded packets by the record hardware. At step338, all RASP events in the packet can be masked together and saved in a circular queue of events (EVENTQ), which is initially created by the software RASP parser.

For any new RASP event that occurs in a packet, the software RASP parser selects an entry in the EVENTQ and stores the SCID, record packet number, record timer, RTS, and the RASP event mask for the packet into the EVENT data structure. After a number of entries are added, the software RASP parser triggers the “software RASP processing thread” to send all RASP events to the RASP high level component. The software RASP parser maintains the EVENTQ to avoid an overrun condition and out of synchronization access. No event log is saved for packets that do not contain a RASP event. The software RASP parser increases the event counter after an event log has been saved.

At step340, the software RASP parser determines if the RASP event count (EvtCnt) is greater than a maximum count (MAXCNT). If EvtCnt is greater than MAXCNT, flowchart300proceeds to step342. At step342, the software RASP parser triggers the “Notifying the software RASP processing thread” to notify the RASP high level component. At step340if RASP EvtCnt is not greater than MAXCNT, flowchart300proceeds to step306. The software RASP parser repeats the above process in flowchart300for the next recorded packet until all packets have been processed.

FIGS. 4A and 4Bshow flowchart400depicting a method for parsing RASP events from an auxiliary packet by a software RASP parser according to one embodiment of the present invention. Certain details and features have been left out of flowchart400ofFIGS. 4A and 4Bthat are apparent to a person of ordinary skill in the art. For example, a step may consist of one or more sub-steps or may involve specialized equipment, as known in the art. While steps402through442shown in flowchart400are sufficient to describe one embodiment of the present invention, other embodiments of the invention may utilize steps different from those shown in flowchart400. The RASP event parsing process in flowchart400can be executed by a processor, such as a microprocessor, which can reside, for example, in set-top hardware, such as set-top hardware104inFIG. 1.

The RASP event parsing process in flowchart400starts at step402. When a packet is an auxiliary (AUX) packet, the software RASP parser sets the AUX Packet RASP event. When a packet is an AUX packet, the software RASP parser can parse for modifiable flag (MF), current field flag (CFF), time-code (TimeCode), and RTS flag RASP events. At step404, the software RASP parser can check the MF bit in the AUX packet. If the software RASP parser checks the MF, flowchart400proceeds to step406. At step406, the software RASP parser determines if the MF in the auxiliary data group header (ADGHdr_MF) is set. If ADGHdr_MF is set, flowchart400proceeds to step408. At step408, the software RASP parser sets the modifiable flag RASP event. If the software RASP parser does not check the MF at step404or if ADGHdr_MF is not set at step406, flowchart400proceeds to step410.

At step410, the software RASP parser can check the CFF in the AUX packet. If the software RASP parser checks the CFF in the AUX packet, flowchart400proceeds to step412. At step412, the software RASP parser determines if ADGHdr_CFF is set. If ADGHdr_CFF is set, flowchart400proceeds to step414. At step414, the software RASP parser sets the current field flag RASP event. If the software RASP parser does not check the CFF at step410or if ADGHdr_CFF is not set at step412, flowchart400proceeds to step416. At step416, the software RASP parser can check TimeCode in the AUX packet. If the software RASP parser checks TimeCode, flowchart400proceeds to step418. At step418, the software RASP parser determines if ADGHdr_AFID is equal to 000100. If ADGHdr_AFID is equal to 000100, flowchart400proceeds to step420. At step420, the software RASP parser sets the TimeCode RASP event. If the software RASP parser does not check the TimeCode at step416or if ADGHdr_AFID is not equal to 000100 at step418, flowchart400proceeds to step422.

At step422, the software RASP parser can check the RTS flag in the AUX packet. If the software RASP parser checks the RTS flag, flowchart400proceeds to step424. At step424, the software RASP parser determines if ADGHdr_AFID is equal to 000011. If ADGHdr_AFID is equal to 000011, flowchart400proceeds to step426. At step426, the software RASP parser sets the RTS flag RASP event and extracts the first 5 bytes of the auxiliary data block for the RTS value and stores it in the 32-bit RTS while ignoring the first byte. For example, the RTS format can be as follows: RTS value=ADG_Data [1]|(ADG_Data [4]<<8)|(ADG_Data [3]<<16)|(ADG_Data [3]<<24). If the software RASP parser does not check the RTS flag at step422or if ADGHdr_AFID is not equal to 000011 at step424, flowchart400proceeds to step428.

At step428, the software RASP parser determines if the control word packet (CWP) parity is enabled. If the CWP is enabled, flowchart400proceeds to step430. At step430, the software RASP parser determines if ADGHdr_AFID is equal to 000001 or 000011. If ADGHdr_AFID is equal to 000001 or 000011, flowchart400proceeds to step432. If the software RASP parser determines that CWP parity is not enabled at step428or if ADGHdr_AFID is not equal to 000001 or 000011 at step430, flowchart400proceeds to step442, where the process ends. At step432, the software RASP parser determines if previous control sync (PrevCS) value is not equal to current control sync (CurrCS) value. If the PrevCS value is not equal to the CurrCS value, flowchart400proceeds to step434. If the PrevCS value is equal to the CurrCs value, flowchart400proceeds to step442, where the process ends.

At step434, the software RASP parser determines if the CurrCS value is equal to 1. If the CurrCS value is equal to 1, flowchart400proceeds to step436. At step436, the software RASP parser sets CWP parity to odd parity (CWP_ODD_PAR). At step434, if the CurrCS value is not equal to 1, flowchart400proceeds to step438. At step438, the software RASP parser sets CWP parity to even parity (CWP_EVEN_PAR). At step440, the software RASP parser sets the PrevCS value to be equal to the CurrCS value. At step442, the method of parsing RASP events from an auxiliary packet by the software RASP parser ends.

FIG. 5shows flowchart500depicting a method for parsing a scrambled parity change RASP event by a software RASP parser according to one embodiment of the present invention. Certain details and features have been left out of flowchart500ofFIG. 5that are apparent to a person of ordinary skill in the art. For example, a step may consist of one or more sub-steps or may involve specialized equipment, as known in the art. While steps502through520shown in flowchart500are sufficient to describe one embodiment of the present invention, other embodiments of the invention may utilize steps different from those shown in flowchart500. The RASP event parsing process in flowchart500can be executed by a processor, such as a microprocessor, which can reside, for example, in set-top hardware, such as set-top hardware104inFIG. 1.

The RASP event parsing process in flowchart500starts at step502. At step504, the software RASP parser checks the control flag (CF) bit in a packet header to determine if it is a scrambled packet. For example, the packet can be a DirecTV packet. If CF is equal to 0, which indicates that the packet is a scrambled packet, the software RASP parser obtains the CurrCS (current control sync) value and flowchart500proceeds to step506. If CF is not equal to 0, the software RASP parser obtains the CurrCS value and flowchart500proceeds to step508. At step508, the software RASP parser compares the CurrCS value with the PrevCS (previous CS) value. If the CurrCS value and the PrevCS value are different, flowchart500proceeds to step510. At step510, the software RASP parser sets the “change to not scrambled” RASP event. If the CurrCS value is equal to the PrevCS value, flowchart500proceeds to step520, where the process ends.

At step506, the software RASP parser compares the CurrCS value with the PrevCS value. A difference between the CurrCS value and the PrevCS value indicates a scrambled parity change in the packet. If the CurrCS value is different than the PrevCS value, flowchart500proceeds to step512. If the CurrCS value is equal to the PrevCS value, flowchart500proceeds to step520, where the process ends. At step512, the software RASP parser determines if the CurrCS value is equal to 1. If the CurrCS value is equal to 1, which indicates an odd scrambled parity change in the packet, flowchart500proceeds to step514. At step514, the software RASP parser sets the “scrambled parity change odd” RASP event. If the CurrCS value is not equal to 1, which indicates an even scrambled parity change in the packet, flow chart500proceeds to step516. At step516, the software RASP parser sets the “scrambled parity change even” RASP event. At step520, the process ends.

Thus, as discussed above, the present invention advantageously achieves a software RASP parser for parsing RASP events in a PVR-enabled set-top system. The invention also advantageously achieves a software RASP parser that can be more easily updated and modified compared to a conventional RASP parser that is implemented in hardware.

The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. Those skilled in the art will recognize that changes and modifications may be made to the embodiments without departing from the scope of the present invention. These and other changes or modifications are intended to be included within the scope of present invention, as broadly described herein.