Identifying and rerecording only the incomplete units of a program broadcast recording

Each data integrity value, from among a plurality of data integrity values each associated with a separate unit of a program comprising a plurality of units, is checked against a separate recorded portion of a recording of the program corresponding to one of the plurality of units, wherein the recording of the program is recorded from a broadcast of the program. Responsive to a particular data integrity value from among the plurality of data integrity values not matching when checked against a particular separate recorded portion of the program corresponding to a particular unit from among the plurality of units, the recording is corrected by replacing only the particular separate recorded portion of the program from a second recording of only the particular unit from a subsequent broadcast of the program.

BACKGROUND

1. Technical Field

This invention relates in general to recording programs and more particularly to identifying and rerecording only the incomplete units of a recording of a previous broadcast of a program.

2. Description of the Related Art

Television broadcast subscribers and other broadcast program subscribers typically have an option to add a recording device, such as a digital video recorder (DVR) device, to receive and record programs as the programs are broadcast. Many recording devices are also programmable, such that a user may pre-program the recording device to record programs during scheduled broadcast times. Recordings of program broadcasts by recording devices may be incomplete, or otherwise compromised, by errors introduced by the program receiver, errors introduced by the recording device, errors in the broadcast equipment, and errors in the broadcast transmission.

BRIEF SUMMARY

When errors are introduced into the recording of a program broadcast, the errors may only impact portions of the recorded program, not the entire program recording. In view of the foregoing, there is a need for a method, system, and program product for identifying and rerecording only the incomplete units of a recording of a previous broadcast of a program.

In one embodiment, a system for managing program recordings includes a computer, comprising at least one processor, configured to check each data integrity value, from among a plurality of data integrity values each associated with a separate unit of a program comprising a plurality of units, against a separate recorded portion of a recording of the program corresponding to one of the plurality of units, wherein the recording of the program is recorded from a broadcast of the program. The system includes the computer, responsive to a particular data integrity value from among the plurality of data integrity values not matching when checked against a particular separate recorded portion of the program corresponding to a particular unit from among the plurality of units, configured to select to correct the recording by replacing only the particular separate recorded portion of the program from a second recording of only the particular unit from a subsequent broadcast of the program.

In another embodiment, a computer program product for managing program recordings includes one or more computer-readable tangible storage devices. The computer program product includes program instructions, stored on at least one of the one or more storage devices, to check each data integrity value, from among a plurality of data integrity values each associated with a separate unit of a program comprising a plurality of units, against a separate recorded portion of a recording of the program corresponding to one of the plurality of units, wherein the recording of the program is recorded from a broadcast of the program. The computer program product includes program instructions, stored on at least one of the one or more storage devices, responsive to a particular data integrity value from among the plurality of data integrity values not matching when checked against a particular separate recorded portion of the program corresponding to a particular unit from among the plurality of units, to select to correct the recording by replacing only the particular separate recorded portion of the program from a second recording of only the particular unit from a subsequent broadcast of the program.

DETAILED DESCRIPTION

In addition, in the following description, for purposes of explanation, numerous systems are described. It is important to note, and it will be apparent to one skilled in the art, that the present invention may execute in a variety of systems, including a variety of computer systems and electronic devices operating any number of different types of operating systems.

As described herein, embodiments of the invention provide a solution for identifying and rerecording only the incomplete units of a recording of a previous broadcast of a program segmented into multiple units.

With reference now to the figures, and in particular with reference now toFIG. 1, a block diagram illustrates one example of a system for identifying and rerecording only the incomplete units of a recording of a previous broadcast of a program. In the example, a program broadcaster102broadcasts one or more programs on one or more channels or streams. In the example, among the one or more programs simultaneously broadcast on one or more channels or streams, program broadcaster102broadcasts a program identified as “program A” at a first time, illustrated as a broadcast110.

While a program such as “program A” may be broadcast as a single, seamless, program, program broadcaster102, or another entity, may identify a program as including multiple, consecutively broadcast, units or chapters, each representing a segment of the program identified by a start time and a stop time, segment duration, unit name or unique number, or other unit identifiers. In the example, “program A” is identified by three consecutively broadcast units identified by unit1identifiers118, unit2identifiers120, and unit3identifiers122. In one example, each unit of a program may represent a separate segment of the program. In another example, units of a program may include segments including overlapping portions of the program. Units of a program may each be set to a same length of time or different lengths of time. In one example, the advertisements included within the program broadcast may be identified as separate units of a program from the units of the program representing non-advertising content of the program. Unit identifiers may also include context or labeling to indicate the type of content within the unit. For example, a unit identifier may specify that the content within the unit is broadcast live, an advertisement, a recap of portions of previous episodes, new episode content, and an end cap of preview portions of shows to be fully broadcast in the future.

In addition, program broadcaster102, or another entity, may compute and provide a data integrity value for each unit of a program. In one example, in association with broadcast110of “program A”, program broadcaster102may send a data integrity value112correlating with the unit identified by unit1identifiers118, a data integrity value114correlating with the unit identified by unit2identifiers120, and a data integrity value116correlating with the unit identified by unit3identifiers122. In one example, program broadcaster102sends unit1identifiers118, unit2identifiers120, and unit3identifiers122, along with data integrity value112, data integrity value114, and data integrity value116, prior to or concurrent with the broadcast of “program A”, in response to a communication received from program recording controller106indicating that program recording controller106is scheduled to or triggered to record program A broadcast110. In another example, program broadcaster102sends pairings of each set of unit identifiers and correlating data integrity value, for each unit, prior to, concurrent with, or subsequent to broadcasting “program A”. In one example, the unit identifiers and correlating data integrity values are embedded into the data transmitted during the program broadcast. In another example, the unit identifiers and correlating data integrity values are sent in a transmission separate from the broadcast of a program containing unit identifiers and data integrity values only. In another example, the unit identifiers and data integrity values are sent as part of the information data for the program, such as within the data for a program schedule150identifying the scheduled broadcast times and other information about one or more programs scheduled for broadcast by program broadcaster102. In another example, unit identifiers and data integrity values may be computed, sent, or provided by entities other than program broadcaster102.

In the example, data integrity value112, data integrity value114, and data integrity value116may each hold a value representing a checksum or hash sum calculated for the data corresponding to each of the units identified by unit1identifiers118, unit2identifiers120, and unit3identifiers122, respectively. In one example, program broadcaster102or another entity may perform a checksum function on each unit of a program to compute a numerical value from the data in each unit, representing the data integrity value for each unit. Each data integrity value is provided for the purpose of detecting errors that may be introduced during the transmission of each unit of a program broadcast or recording and storage of each unit of a program broadcast. The integrity of the data transmitted and recorded in each unit of a program broadcast can be checked by a device receiving and recording each unit of the program broadcast by the device computing a checksum from each received unit and comparing the computed checksum with the data integrity value sent for each unit from among data integrity value112, data integrity value114, and data integrity value116. If the checksum computed by a receiving device for a unit of a program and the data integrity value sent for the unit of the program do not match, then the receiving device may detect an error for the unit of the program.

One or more types of checksum functions may be implemented to calculate each of data integrity value112, data integrity value114, and data integrity value116, and also implemented by receiving devices checking each of the data integrity values against received data units. In general, a checksum function calculates a numerical value from the data in the program unit. In one example, a checksum function, which may be referred to as a parity byte or parity word function, breaks data in each unit into “words” with a fixed number n of bits and computes the exclusive or of all those words, where the exclusive or of all the words is the data integrity value for the unit. In another example, a checksum function, which may be referred to as a modular sum function, breaks data in each unit into the words, adds all the words as unsigned binary numbers, discarding any overflow bits, and sets the total as the data integrity value for each unit. In another example, a checksum function, which may be referred to as a position-dependent checksum, such as Fletcher's checksum or cyclic redundancy checks, calculates a value for each word and also considers the position of each word in a sequence, when calculating a checksum for each data unit to set as the data integrity value for the data unit. One of ordinary skill in the art will appreciate that additional or alternate types of checksum functions may be implemented. In selecting a checksum function to apply, the more accurate or complex the value is that is calculated by the checksum function, the more time or resources that may be required for performing the checksum function to check for errors. A program broadcaster may select to apply a particular checksum function and only send a single checksum value calculated by that checksum function. In addition, a program broadcaster may select to send multiple data integrity values for each unit, where each data integrity value represents a checksum calculated by a different type of checksum function, such that receiving devices may be programmed to apply one of multiple checksum functions depending on the type and amount of resources available for the device to apply a checksum function.

In the example, a program receiver104is able to receive program broadcasts from one or more program broadcasters, including program broadcaster102. In the example, a program recording controller106of program receiver104may control the recording of one or more programs broadcast by program broadcaster102. In the example, program recording controller106records broadcast110of “program A” as a program A recording130. In one example, program recording controller106may select to automatically record a particular program broadcast by program broadcaster102according to selections of programs or selections of recording times set in a scheduled recordings list156. In another example, a user may press a record request button while a program is broadcasting to trigger program recording controller106to record the broadcast of the program.

In the example, a program completion controller108monitors program A recording130to determine, on a unit by unit basis, whether the recording of the broadcast of “program A” is complete. In the example, program completion controller108uses the unit identifiers and correlated data integrity value for each unit sent by program broadcaster102, from among unit1identifiers118and data integrity value112, unit2identifiers120and data integrity value114, and unit3identifiers122and data integrity value116, to check whether the recording of “program A” is complete. In one example, program completion controller108detects portions of the recording specified by the unit identifiers, where the portion of program A recording130identified as unit1132is specified by unit1identifiers118, unit2134is specified by unit2identifiers120, and unit3136is specified by unit3identifiers122. In the example, program completion controller108checks data integrity value112against a check value138representing a checksum for unit1132, checks data integrity value114against a check value140representing a checksum for unit2134, and checks data integrity value116against a check value142representing a checksum for unit3136. In the example, if a data integrity value does not match the check value for a unit, program completion controller108sets a flag for the unit. In the example, program completion controller108does not set a flag144for unit1132and a flag148for unit3136, but program completion controller108sets a flag146for unit2134, indicating that unit2134, the recording of the portion of “program A” identified by unit identifiers120, is incomplete.

In the example, when program completion controller108detects that one or more units of a program are incomplete, program completion controller108automatically checks a compiled program schedule154containing one or more future program broadcasts, to determine whether the incomplete program or units of the incomplete program are scheduled for a subsequent broadcast time. Programs and program units may be identified in compiled program schedule154by program name, program number, or other identifiers. In the example, a program scheduling controller152of program receiver104manages access to compiled program schedule154, which may include scheduled program broadcasts by one or more program broadcasters. In one example, program scheduling controller152receives program schedule150indicating the scheduled program broadcasts by program broadcaster102. In addition, program scheduling controller152may access program scheduling by other program broadcasters and from other entities that provide other recordable sources of programs and program units. In addition, if program completion controller108does not detect a rebroadcast of an incomplete program unit scheduled in compiled program schedule154, program completion controller108may automatically trigger program scheduling controller152to search all available program media for access to the incomplete program unit, including searching for live streams, downloadable media, on-demand playback media, viewable media, and other recordable sources of the incomplete program unit available at a future time or available instantaneously, and to add any identified options to compiled program schedule154. In one example, program scheduling controller152may use a search engine to search for one or more program host systems, which are able to provide other recordable sources of the incomplete unit of a program, using the name or other identifier for the program or the name or other identifier for the incomplete program unit.

In the example, program completion controller108detects a subsequent broadcast160of “program A” scheduled in compiled program schedule154, identified as “program A: broadcast (2)”. In the example, responsive to detecting subsequent broadcast160in compiled program schedule164, program completion controller108automatically schedules a new scheduled recording158of “unit2”, the flagged unit, of “program A” during subsequent broadcast160, within scheduled recordings156. Program recording controller106automatically records programs and program units according to the entries under scheduled recordings156.

In the example, program broadcaster102broadcasts subsequent broadcast160of “program A” at the scheduled time and may also send, in association with subsequent broadcast160of “program A”, unit identifiers and correlated data integrity values for subsequent broadcast160of “program A”. In one example, unit1identifiers168, unit2identifiers170, and unit3identifiers172include the same data included in unit1identifiers118, unit2identifiers120, and unit3identifiers122, respectively and data integrity value162, data integrity value164, and data integrity value166include the same data included in data integrity value112, data integrity value114, and data integrity value116, respectively. In another example, any of unit1identifiers168, unit2identifiers170, and unit3identifiers172may include data that is different from the included in unit1identifiers118, unit2identifiers120, and unit3identifiers122, respectively and any of data integrity value162, data integrity value164, and data integrity value166may include data that is different from the data included in data integrity value112, data integrity value114, and data integrity value116, respectively.

In the example, program recording controller106records subsequent broadcast160according to new scheduled recording158, which specifies recording only “unit2” of “program A”, from among the multiple units of “program A”, during subsequent broadcast160. Program recording controller106uses unit2identifiers170to identify the segment of subsequent broadcast160specified as “unit2”. From subsequent broadcast160, program recording controller106only records the segment of subsequent broadcast160specified as “unit2” and inserts the recorded segment into program A recording130as unit2182. Program completion controller108detects the insertion of unit2182into program A recording130, computes a check value184for unit2182, compares check value184against data integrity value164, and if there is a match between check value184and data integrity value164, does not set flag186. In addition, program completion controller108deletes unit2134, to remove the incomplete unit of the program. In the example, if program completion controller108were to set flag186, program completion controller108would repeat the process of searching compiled program schedule154for another subsequent broadcast of “program A” and, if another subsequent broadcast is identified, set scheduled recordings156to include a scheduled recording of “unit2” of the another subsequent broadcast of “program A”.

In the example, by identifying whether a program is complete on a unit by unit basis, program completion controller108may apply checksum functions to segments of recorded data smaller than the entire program, which increases the accuracy of the use of checksum functions to identify whether there are any data errors in recorded data. In addition, when data in a program is checked in smaller segments, program completion controller108may use available memory resources to apply a checksum function that is more complex than would be available for the entire program, and therefore provides greater accuracy in checking for errors for the program as a whole. In addition, by a program broadcaster sending unit identifiers for each unit of the program and data integrity values correlated with each unit of the program, program completion controller108is enabled to detect the position of specific segments of a program that are incomplete and to schedule the recording of only those specific segments of a program that are incomplete, including scheduling recording of a segmented unit of a program in the middle of the program and including scheduling recordings of multiple segments of a program that are not consecutive units. In addition, by detecting a particular unit of a program that is incomplete, only the selected unit of a previously recorded program needs to be recorded during a subsequent broadcast of the program and used to replace the previously incomplete unit of the program, which minimizes the bandwidth, computational resources, and storage resources required to complete a previously incomplete program.

In the example, there are many reasons why a program recording by program receiver104may be incomplete within one or more units of the program. In one example, the equipment implemented by program broadcaster102to broadcast a program may fail or introduce errors in the broadcast, which would cause program receiver104to receive an incomplete broadcast of a program and therefore, any recordings of the broadcast of the program would also be incomplete. In another example, the transmission, network, and wiring infrastructure between program broadcaster102and program receiver104may fail or introduce errors in the broadcast of a program, which may cause the program receiver104to receive an incomplete broadcast of a program and therefore, any recordings of that program would also be incomplete. In another example, the device executing program receiver104may fail or introduce errors when receiving a broadcast of a program or recording the broadcast of the program, which would cause program receiver104to store an incomplete recording of the broadcast of the program. In each of these examples, regardless of the point at which failure or error is introduced and the portion of the program in which the failure or error is introduced during, program completion controller108identifies the units of the recorded program that are incomplete by using the unit identifiers specified for the program to identify recorded units of the program and checking each recorded unit of a program against a data integrity value specified for each program unit by the program broadcaster. In addition, in each of these example, regardless of the point at which the failure or error is introduced and the portion of the program in which the failure or error is introduced during, program completion controller108identifies errors on a unit by unit basis, schedules recordings of the incomplete units alone during a subsequent broadcast of the program or program units, and replaces the incomplete units of a program with newly recorded units of the program, to provide a user with a complete recording of the program without having to rerecord the entire program. In recording devices implementing program receiver104where the number of channels that can simultaneously be recorded is limited and the amount of storage space for recording programs is limited, reducing the amount of time required for rerecording programs to a unit by unit basis and reducing the amount of space required for completing program recordings to a unit by unit basis, minimizes the impact of on recording bandwidth and recording storage space for the functions performed by program completion controller108.

With reference now toFIG. 2, a block diagram illustrates one example of a network environment in which a program broadcaster and program receiver are implemented. One of ordinary skill in the art will appreciate that environment200is illustrative of one type of network environment that may support clients, servers and other components of a broadcast system and communication system. In addition, one of ordinary skill in the art will appreciate that the distribution of systems within network environment200is illustrative of a distribution of systems, however, other distributions of systems within a network environment may be implemented.

As illustrated, multiple systems within network environment200may be communicatively connected via network202, which is the medium used to provide communications links between various devices and computer systems communicatively connected. Network202may include permanent connections such as wire or fiber optics cables and temporary connections made through telephone connections and wireless transmission connections, for example, and may include routers, switches, gateways and other hardware to enable a communication channel between the systems connected via network202. Network202may represent one or more of broadcast television networks, including cable, satellite, and internet based television networks across which programs are transmitted, packet-switching based networks, telephony based networks, local area and wire area networks, public networks, and private networks. Network environment200may implement multiple types of network architectures.

Network202and the systems communicatively connected within network environment200via network202may implement one or more layers of one or more types of network protocol stacks which may include one or more of a physical layer, a link layer, a network layer, a transport layer, a presentation layer, and an application layer. For example, network202may implement one or more of the Transmission Control Protocol/Internet Protocol (TCP/IP) protocol stack or an Open Systems Interconnection (OSI) protocol stack. In addition, for example, network202may represent the worldwide collection of networks and gateways that use the TCP/IP suite of protocols to communicate with one another.

In the embodiment, as illustrated, a client system240and a client system250are communicatively connected via network202to one or more of a server system210, a server system220, and a server system230. Each of client system240, client system250, server system210, server system220, and server system230may represent one or more computer systems, such as computer system700ofFIG. 7, to be described below.

In one example, client system240hosts a program receiver system242and client system250hosts a program receiver system252, where program receiver system242and program receiver system252each represent instances of program receiver104, for one or more subscribers. In the example, server system210hosts program broadcaster system212, where program broadcaster system212represents an instance of program broadcaster102. In the example, program broadcaster system212may simultaneously broadcast or stream multiple programs on different channels and program receiver system242and program receiver system252may each receive one or more channels for playback and recording of the programs currently broadcast on the channels.

In the example, server system220hosts program host system222, where program host system222hosts one or more recordable sources of one or more programs in response to program receiver system242or program receiver system252requesting the recordable source of the one or more programs. In the example, program host system222may host recordable sources of one or more programs by providing live streams, on-demand streams, on-demand downloads, scheduled downloads, viewable media, program playback, and other recordable or viewable sources of program media. In addition, program host system222may host recordable sources of one or more programs by providing broadcasts of programs.

In one example, program broadcaster212pushes programs on channels that are then received and selectively accessed by program receiver system242and program receiver system252and may push scheduling information and other data to each of program receiver system242and program receiver system252. In one example, program receiver system242and program receiver system252push requests for specific content to program host system222and program host system222delivers schedules, returns responses to the requests with the requested recordable media or error messages if the requested content is not available. In another example, program receiver system242and program receiver system252may also send requests to program broadcaster system212and program host system222may push data to program receiver system242and program receiver system252.

In one example, client system240and client system250, executing program receiver system242and program receiver system252, respectively, may represent stand-alone recording devices, such as stand-alone DVR devices and gaming devices with program recording controller106and program completion controller108embedded within the devices. In another example, client system240and client system250may represent general computer systems executing program receiver system242and program receiver system252, respectively, through a browser or other interface, running program recording controller106and program completion controller108as functions of the browser or other interface, as plug-ins, as stand-alone functions, or as other executable components of the computer system. In one example, each of server system210, server system220, and server system230may represent a networked environment including multiple server systems.

In one example, program broadcaster system212publishes a schedule that specifies the times and dates of scheduled upcoming program broadcasts on one or more channels and may also include a list of program broadcasts available on-demand, in response to a user request to view the program. In addition, in one example, program host system222provides a schedule representing a directory or searchable listing of recordable sources of programs and whether the recordable sources are available immediately, on-demand, or scheduled for availability at a particular time. Each of program broadcaster system212and program host system222may push scheduling information to one or more client systems, including program receiver system242and program receiver system252, and each of program broadcaster system212and program host system222may send scheduling information in response to pull requests for scheduling information from client system240and client system250. In one example, the scheduling information provided by each of program broadcaster system212and program host system222may include one or more of unit identifiers for the units of a program and data integrity values for units of a program. In one example, if program receiver system242or program receiver system252receive a schedule from program host system222, each program receiver system may filter the schedule to only include recordable sources of a program of a type that are supported by and recordable by the recording functions of the program receiver system. In one example, program receiver system242and program receiver system252may each support the recording of one or more types of other recordable sources available from program host system222, such as program receiver system242including a component for recording a program from a live stream of the program by program host system222and program receiver system252including a component for recording program files downloadable from program host system222. Each of program receiver system242and program receiver system252may include additional components for converting recordings made from recordable sources hosted by program host system222into a data format that can be integrated into and played back with the program recording made from a broadcast of the program by program broadcaster system212.

In one example, program receiver system242and program receiver system252may record broadcasts of programs from program broadcast system212and program host system222and may also record other programs that are accessible from program broadcast system212and program host system222. In the example, each of program receiver system242and program receiver system252may include a program completion controller, such as program completion controller108, for detecting unit identifiers and data integrity values for each program, checking data integrity values against the recorded units of a program as specified by the unit identifiers, and setting a flag for any recorded unit of a program that includes an error. In addition, each of program receiver system242and program receiver system252may include program completion controller108for searching the scheduling information available from one or more of program broadcaster system212and program host system222, to identify whether the program as a whole or the incomplete units of the program are scheduled to be broadcast again or are available from another recordable source, and, if available, then automatically schedule a recording of the incomplete units only. Each of program receiver system242and program receiver system252may include program completion controller108for automatically replacing the incomplete recorded units of a program with the newly recorded units of a program, checking the newly recorded units of the program for completeness, and deleting the previously recorded incomplete recorded units of the program.

In one example, program receiver system242and program receiver system252may each support a graphical user interface through which a user may view schedule information, select to record programs from the schedule information, view the status of each recorded program as incomplete or complete, and specify preferences for managing incomplete recorded programs. In addition, the graphical user interface may provide additional or alternate interfaces and information.

In one example, program receiver system and program receiver system252may also report information about incomplete recorded units to one or more of program broadcaster system212, program host system222, and an emergency monitoring system232. Each of the systems receiving information about incomplete recorded units may collect the information from multiple client systems, and analyze the information, to track patterns, make decisions, and automate actions.

FIG. 3illustrates a block diagram of one example of components of a program receiver system including a program completion controller for identifying incomplete units from among multiple units of a recording of a program broadcast and for managing recording of incomplete units to provide a complete program recording.

In the example, a program receiver system302includes program scheduling controller162, which accesses program schedule information from one or more program broadcaster systems, program host systems, and other systems enabled to provide program receiver system302with access to programs, and compiles the program schedules into compiled program schedule154. Each scheduled program may include program info320including, but not limited to, a scheduled time and date or on-demand availability, a program name and number, and episode name and number, and other information identifying the particular scheduled program. In addition, program information320, for one or more programs, may include unit identifiers including time stamps, durations, order, and other information for identifying a segment of a program, such as unit identifiers322and unit identifiers324. In addition, program information320, for one or more programs, may include one or more data integrity values specified for each of the unit identifiers, such as a data integrity value326for unit identifiers322and a data integrity value328for unit identifiers324. Moreover, if program information320is received from program host system222or other host of recordable sources of programs, program information320may include a recordable source type, including, but not limited to, live stream, on-demand stream, and on-demand download. In the example, program scheduling controller152may filter compiled program schedule154to only list recordable sources of a type supported by program recording controller106of program receiver system302.

In the example, program receiver system302includes program recording controller106for making recordings of program broadcasts and other recordable sources and storing the recordings in program recordings304. In one example, program recording controller106may make recordings of broadcasts by recording the data broadcast on a particular television channel. In another example, program recording controller106may make recordings of other recordable sources by capturing the playback of a recordable source or downloading a file of a recordable source and retrieving the portion or portions of program requested for the recording from captured or downloaded recordable source.

In one example, each program broadcast recording stored in program recordings304, such as program306, may be stored as identified by unit identifiers for the program, into one or more units, such as unit308and unit310. In addition, program completion controller108may set one or more flags with each of the one or more units for each program identified as incomplete, such as flag312for unit308and flag314for unit310. In particular, as described with reference toFIG. 1, during or subsequent to program recording controller106recording a program broadcast into program recordings304, program completion controller108may analyze the program recording to identify units of the program according to unit identifiers specified by the program broadcaster, such as unit identifiers322and unit identifiers324, and may check each unit of the program against a data integrity value specified for the unit by the program broadcaster, such as data integrity value326and data integrity value328. If program completion controller108detects an error when checking a unit of a program against a data integrity value received for the unit, then program completion controller108sets a flag for the unit, such as by setting flag312for unit308or flag314for unit310.

Program completion controller108responds to each flag set for each program unit by searching compiled program schedule154for one or more subsequent scheduled broadcasts or other options to access the incomplete program units. If program completion controller108identifies a subsequent scheduled broadcast of the incomplete program units within compiled program schedule154, program completion controller108automatically schedules a recording of the incomplete program units during the subsequent scheduled broadcast in scheduled recordings156. Each scheduled recording within scheduled recordings156may identify a particular program330, by time, date, unique number, or other identifier, along with identifying whether all of the program should be recorded as illustrated at reference numeral332or whether the program should be recorded by unit, for only a selection of the total units, for completing a previously recorded broadcast of the program, as illustrated at reference numeral334. In the example, in scheduling incomplete program units from program306to be rerecorded in scheduled recordings156, program completion controller108may identify one or more broadcasts or one or more broadcast sources for rerecording each of the incomplete units and schedule a single recording in scheduled recordings156identifying multiple incomplete units or schedule a separate program recording in scheduled recordings156for each incomplete unit.

If program completion controller108does not identify any subsequent scheduled broadcasts or other options to access the program or the incomplete program units within compiled program schedule154, then program completion controller108may trigger program scheduling controller152to query program broadcaster systems and program host systems, such as program broadcaster system212and program host system222, for scheduling updates and may request a rebroadcast of the incomplete program units from program broadcaster system212and program host system222.

In the example, for each unit of program306, if a flag is set for the unit, an additional rerec status may be set to indicate whether the incomplete unit is scheduled to be rerecorded. In the example, a rerec status316is set if flag312is set to incomplete and a rerec status318is set if flag314is set to incomplete. If program completion controller108is able to schedule a rerecording of an incomplete program unit for a program, then the rerec status for the incomplete unit is set to indicate that a rerecording of the incomplete unit is scheduled. Each of rerec status316and rerec status318may also indicate the scheduled time for rerecording each incomplete unit.

In one example, program completion controller108may apply a checksum function or other data integrity function to determine whether checksum calculated for a recorded unit of a program matches the data integrity value for the unit of the unit of the program. In addition, program completion controller108may use the checksum function or a digital compensation function to analyze the corruption level of the errors in the recording of each program unit when attempting to put together frames of the program. In one example, program completion controller108may calculate a corruption level before or during playback of a program that indicates the level of corruption of data on a scale from 1 to 10, with a “9” meaning there is a slight pixilation of data calculated by the digital compensation function and a “2” meaning the image is not watchable when processed by the digital compensation function. The corruption level calculated by program completion controller108may represent the number of blocks of corrupted recording along with the level of corruption on the scale.

A playback controller340controls a graphical user interface for a user to view program recordings304and to selectively manage playback of programs from program recordings304. In the example, when a flag is set for one or more units of a program in program recordings304, in a graphical interface displaying a selectable entry to playback the program, playback controller340may graphically distinguish the selectable entry for the program. In addition, in the example, when a flag is set for one or more units of a program in program recordings304, playback controller340may also identify a context of each flagged unit of the program, from program info320or other information accessible to program receiver system302, and graphically distinguish different contexts within the flagged unit. In addition, in the example, when a flag is set for one or more units of a program in program recordings304, playback controller340may identify the relative position of the flagged unit within the program and the length of the flagged unit from the unit identifiers for the units of the program and graphically show the relative position and length of the flagged unit within the program. Moreover, in the example, playback controller340may also graphically indicate the status of recording setting316for each recording with flagged units, graphically distinguishing between incomplete program units with a rerec status indicating the incomplete program units that are not scheduled to be completed and with a rerec status indicating the incomplete program units that are scheduled to be completed. Playback controller340may also graphically indicate the corruption status of an incomplete unit within a playback interface by showing the corruption level of portions of a program within a timebar showing the position of the current frame within the sequence of frames of the program.

When program completion controller108replaces a flagged unit with a newly recorded unit that is not flagged as incomplete, playback controller340may adjust the graphical display of the selectable entry for the program to indicate that the program unit was previously incomplete, but is now complete. In addition, playback controller340may mark each start and end position of each previously flagged, incomplete unit, after one or more incomplete units are replaced with complete units, and enable a search option for a user to automatically forward to the start or end position of each replaced unit, such that if a user has previously played back the incomplete recording, once at least one incomplete unit of the recording is replaced with a complete unit, the user may select to view the program and automatically forward to the previously incomplete units during playback.

In the example, user completion preferences352may further specify a user's preferences for program completion controller108and playback controller340. In one example, a user may set a preference in user completion preferences352for program receiver system302to automatically attempt to rerecord incomplete units of particular programs or particular types of programs, but to wait for a user to request rerecording of incomplete units of any other programs. In another example, a user may set a preference in user completion preferences352for how graphical indicators of incomplete program units, scheduled and unscheduled incomplete program units, and other completion related graphical indicators are displayed by playback controller340within a user interface.

In the example, program receiver system302may include an incomplete reporting controller342for reporting information about flagged incomplete units in program recordings304, for reporting information about rerecorded units in program recordings304, and for reporting additional or alternate information recorded by program receiver system302. In the example, reporting devices344may specify one or more systems to which incomplete reporting controller342is set to report information including, but not limited to, program broadcaster system212, program broadcaster system222, and emergency monitoring system232. In addition, incomplete reporting controller342may request information collected from multiple subscribers about incomplete units from one or more of program broadcaster system212, program host system222, and emergency monitoring system230and receive collective reports346specifying statistical information program units that have been reported as incomplete by other subscribers in the region. In the example, playback controller340may integrate collective reports346into one or more interfaces to provide a subscriber with statistical information about incomplete unit reporting by a group or region of subscribers.

FIG. 4illustrates a block diagram of one example of a recording selection interface for identifying one or more recorded programs available for playback and a completion status of each of the one or more recorded programs.

In the example, a recording selection interface402illustrates multiple selectable entries for programs recorded from program broadcasts by a recording device and available for selection for playback. In the example, recording selection interface402illustrates a selectable entry for program A410, selectable for playback of “program A”, and a selectable entry for program B440, selectable for playback of “program B”. In additional or alternate embodiments, recording selection interface402may include additional or alternate selectable entries and may include additional or alternate graphical indicators of each selectable entry.

In the example, recording selection interface402includes a completion status graphically displayed with each selectable program entry. In one example, a completion status412indicates that the recording of program A410is incomplete. In another example, a completion status442indicates that the recording of program B440is complete.

In the example, along with completion status412indicating that the recording of program A410is incomplete, each unit of program A410is further graphically distinguished to indicate whether the unit is flagged as complete or incomplete. In the example, unit1status414indicates that “unit1” of “program A” is complete, unit2status420indicates that “unit2” of “program A” is incomplete, and unit3status432indicates that “unit3” of “program A” is complete.

In the example, along with unit2status420indicating the recording of “unit2” of “program A” is incomplete, “unit2” is further graphically distinguished to indicate additional information about the unit. In the example, the additional information illustrated under unit2status420includes an indicator of the amount of time in unit422, unit context426, a corruption level427, and rerecord status428. In the example, unit context426may indicate a context of the content of “unit2” including, but not limited to, advertising, live event, or new content. In the example, rerecord status428may indicate whether “unit2” is scheduled for rerecording, along with the scheduled time for the rerecording, or whether “unit2” is not available for rerecording. Recording selection interface402may also include rerecord options430that are specified for the content of rerecord status428. For example, if rerecord status428indicates that “unit2” is scheduled for rerecording, rerecord options430may include a selectable option for a user to select to cancel the rerecording of “unit2” or select between multiple rebroadcast times. In another example, if rerecord status428indicates that “unit2” is not scheduled for rerecording, rerecord options430may include a selectable option for a user to submit feedback about the incomplete recording to the program broadcaster. Corruption level427may indicate an average or range of corruption levels of the incomplete unit on a corruption scale, where a corruption level of “2” may indicate that there is insufficient data for a digital compensation algorithm to put together frames of data and a corruption level of “9” may indicate that there is sufficient data for the digital compensation algorithm to put together frames of data, but that there may be pixilation of the data.

In the example, a user may view the amount of time in a unit marked as incomplete, the context of the unit marked as incomplete, and the corruption level of a unit marked as incomplete and determine, via rerecord options430, whether to change the completion settings for an incomplete unit. For example, if “unit2” is only thirty seconds long, “unit2” is an recap of a previous program, or “unit2” is only at a corruption level of “2”, while “unit2” is considered incomplete, the user may elect to through rerecord options430not to request that the incomplete unit be rerecorded and the user may elect to watch the incomplete unit as-is.

FIG. 5illustrates a block diagram of one example of a recording playback interface illustrating a graphical interface for playback of a recording identified with an incomplete unit. In the example, a recording playback interface502provides an interface in which a recorded program plays. In the example, a time bar510includes a marker reflecting the time stamp of the portion of the program currently playing in recording playback interface502. In addition, time bar510may include graphical indicators of each unit of the multiple units of the program within time bar510, or as illustrated, positioned below time bar510. In the example, the recorded program currently playing within recording playback interface502includes segments identified as a unit512, a unit514, a unit516, and a unit518. In the example, unit516has been flagged as an incomplete unit. Unit516is shaded, graphically and includes an “X” to distinguish unit516, which is an incomplete unit, from unit512, unit514, and unit518, which are complete units.

In one example, at position522, the marker within time bar510reflects that the program playback is during the segment identified as unit512. In the example, once the marker within time bar510reaches a position524, at the start of unit516, multiple options may be presented to the user within recording playback interface502, or within time bar510. In one example, when the marker within time bar510reaches position524, a selectable option526may be displayed which when selected automatically forwards the playback marker to the next complete unit. In another example, when a user selects a forward option while the marker within time bar is within the time specified for unit516, the option to automatically forward the playback marker to the next complete unit may be triggered. In addition, in the example, when the marker within time bar510reaches position524, playback controller340may provide the user with information from collective reports346, specified for the particular program, such as through graphical display520, which indicates the number of users in the subscriber group reporting the incomplete unit. In addition, in the example, when the marker within time bar510reaches position524, playback controller340may provide the user with the rerecord status for the unit, as illustrated at reference numeral526, graphically distinguishing between a rerecord status indicating “rerecording scheduled” and “rerecording not available”.

FIG. 6illustrates a block diagram of one example of a collective system for receiving incomplete unit reports from multiple subscriber receiver systems, analyzing the incomplete unit reports, and performing one or more actions based on the analyzed incomplete unit reports.

In one example, a collective system600may be implemented within one or more of program broadcaster system212, program host system222, emergency monitoring system232, and other systems enabled to receive incomplete unit reports from program receiver systems for one or more subscribers via network202. In one example, collective system600may include an incomplete unit report collector602for receiving incomplete unit reports from one or more program receiver systems or other systems, extracting information from the incomplete unit reports, identifying additional information about each program receiver system based on subscriber account information, and storing the extracted information from the incomplete unit reports and additional information about each program receiver system in incomplete unit statistics database604. Incomplete unit report collector602may perform additional analysis of the information stored in incomplete unit statistics database604to calculate statistical percentages of one or more data components including, but not limited to, program identifier, incomplete unit identifier, region, subscriber group, time period, and other components extracted from incomplete unit reports and subscriber account information.

In one example, collective system600also includes an incomplete unit collective reporter610for handling requests for collective reports received from one or more program receiver systems. In one example, a program receiver system may submit a request for one or more collective reports for a particular program identifier, unit identifier, region, subscriber group, time period, or other component. Incomplete unit collective reporter610searches incomplete unit statistics database604with the request criteria and returns the results to the program receiver system in a collective report. In another example, incomplete unit collective reporter610may also receive a subscription request from a program receiver system requesting that collective reports be periodically pushed to the program receiver system and incomplete unit collective reporter610may periodically collect information from incomplete unit statistics database604and push the collected information in collective reports to the subscribing program receiver system.

In one example, incomplete unit decision controller612analyzes incomplete unit statistics database604according to decision criteria614and triggers automated actions in response to he analyzed information according to decision criteria614. In the example, decision criteria614may be specified according to the type of system implementing collective system600to perform one or more services.

In one example, if collective system600is implemented within program broadcaster system212, incomplete unit report collector602may collect the information from multiple client systems into incomplete unit statistics database604about incomplete recorded units. Incomplete unit decision controller612may apply decision criteria614specified to determine a number of subscribers that were not able to record a complete program, by subscriber area and by the scheduled time of the incomplete units, and make decisions about whether to schedule another broadcast of the program as a whole or of only the incomplete recorded units and whether to schedule the broadcast for a particular subscriber area or for multiple subscriber areas. In one example, where multiple program receiver systems for a group of subscribers in a particular region each report incomplete program units for a portion of a program that is a live event not scheduled for rebroadcast, incomplete unit decision controller612may automatically trigger program broadcaster system212to schedule a rebroadcast of the incomplete program units only for the particular region only. In another example, where program broadcaster system212provides program broadcasts via a satellite network infrastructure, if incomplete unit decision controller612detects that multiple program recording systems for a region are reporting incomplete units of different programs scheduled during a same period of time, incomplete unit decision controller612may further identify whether a weather system caused satellite broadcasts to go out based on groupings of incomplete units scheduled during an overlapping time, predict what other markets may be impacted by the same weather system, and adjust or delay a program broadcast in other markets of any live events or other programs not scheduled for rebroadcast. Incomplete unit decision controller612may also identify an external cause of program broadcast interference, such as a weather system, in a particular area, and sends alerts to local program broadcast systems to delay broadcasts until the control system identifies that the external cause has dissipated.

In one example, if collective system600is implemented within program host system222, incomplete unit report collector602may collect information from multiple client systems about incomplete recorded units to determine what program units users may need to access on-demand or from a download. Incomplete unit decision controller612may determine, based on decision criteria614, if the programs are not already accessible, whether to host the programs or units of the programs. In one example, program host system222may support access to program units through a peer-to-peer network allowing subscribers to a program broadcaster to share program units for completing previously incomplete programs.

In one example, if collective system600is implemented within emergency monitoring system232, incomplete unit report controller600may collect incomplete program unit information from multiple client systems, or may received incomplete program unit information compiled from multiple subscribers from program broadcaster system212and program host system222, along with receiving location or region information, identify locations where recordings of program broadcasts were not complete for a particular period of time, and identify what emergency conditions, such as weather, impacted the recordings of program broadcasts. Incomplete unit decision controller612may make decisions about rescheduling other program broadcasts in other regions that may be impacted by an ongoing emergency situation, such as a heavy storm. In addition, incomplete unit report collector602may collect incomplete program unit information from multiple client systems along with receiving location or region information and incomplete unit decision controller612may analyze the information to determine a type of emergency situation that may have occurred and automatically perform additional responses to handle the emergency situation.

FIG. 7illustrates a block diagram of one example of a computer system in which one embodiment of the invention may be implemented. The present invention may be performed in a variety of systems and combinations of systems, made up of functional components, such as the functional components described with reference to a computer system700and may be communicatively connected to a network, such as network702.

Computer system700includes a bus722or other communication device for communicating information within computer system700, and at least one hardware processing device, such as processor712, coupled to bus722for processing information. Bus722preferably includes low-latency and higher latency paths that are connected by bridges and adapters and controlled within computer system700by multiple bus controllers. When implemented as a server or node, computer system700may include multiple processors designed to improve network servicing power. Where multiple processors share bus722, additional controllers (not depicted) for managing bus access and locks may be implemented.

Processor712may be at least one general-purpose processor such as IBM® PowerPC® processor that, during normal operation, processes data under the control of software750, which may include at least one of application software, an operating system, middleware, and other code and computer executable programs accessible from a dynamic storage device such as random access memory (RAM)714, a static storage device such as Read Only Memory (ROM)716, a data storage device, such as mass storage device718, or other data storage medium. Software750may include, but is not limited to, code, applications, protocols, interfaces, and processes for controlling one or more systems within a network including, but not limited to, an adapter, a switch, a server, a cluster system, and a grid environment.

In one embodiment, the operations performed by processor712may control the operations of flowchart ofFIGS. 8, 9 and 10and other operations described herein. Operations performed by processor712may be requested by software750or other code or the steps of one embodiment of the invention might be performed by specific hardware components that contain hardwired logic for performing the steps, or by any combination of programmed computer components and custom hardware components. In one embodiment, one or more components of computer system700, or other components, which may be integrated into one or more components of computer system700, may contain hardwired logic for performing the operations of flowchartsFIGS. 8, 9, and 10.

Those of ordinary skill in the art will appreciate that aspects of one embodiment of the invention may be embodied as a system, method or computer program product. Accordingly, aspects of one embodiment of the invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment containing software and hardware aspects that may all generally be referred to herein as “circuit,” “module,” or “system.” Furthermore, aspects of one embodiment of the invention may take the form of a computer program product embodied in one or more tangible computer readable medium(s) having computer readable program code embodied thereon.

Computer program code for carrying out operations of on embodiment of the invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java™, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, such as computer system700, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server, such as server740. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, such as network202, through a communication interface, such as network interface732, over a network link that may be connected, for example, to network202.

In the example, network interface732includes an adapter734for connecting computer system700to network202through a link and for communicatively connecting computer system700to server740or other computing systems via network702. Although not depicted, network interface732may include additional software, such as device drivers, additional hardware and other controllers that enable communication. When implemented as a server, computer system700may include multiple communication interfaces accessible via multiple peripheral component interconnect (PCI) bus bridges connected to an input/output controller, for example. In this manner, computer system700allows connections to multiple clients via multiple separate ports and each port may also support multiple connections to multiple clients.

Network interface732, the network link to network202, and network202may use electrical, electromagnetic, or optical signals that carry digital data streams. The signals through the various networks and the signals on network202, the network link to network202, and network interface732which carry the digital data to and from computer system700, may be forms of carrier waves transporting the information.

In addition, computer system700may include multiple peripheral components that facilitate input and output. These peripheral components are connected to multiple controllers, adapters, and expansion slots, such as input/output (I/O) interface726, coupled to one of the multiple levels of bus722. For example, input device724may include, for example, a microphone, a video capture device, an image scanning system, a keyboard, a mouse, or other input peripheral device, communicatively enabled on bus722via I/O interface726controlling inputs. In addition, for example, output device720communicatively enabled on bus722via I/O interface726for controlling outputs may include, for example, one or more graphical display devices, audio speakers, and tactile detectable output interfaces, but may also include other output interfaces. In alternate embodiments of the present invention, additional or alternate input and output peripheral components may be added.

Those of ordinary skill in the art will appreciate that the hardware depicted inFIG. 7may vary. Furthermore, those of ordinary skill in the art will appreciate that the depicted example is not meant to imply architectural limitations with respect to the present invention.

FIG. 8illustrates one example of a high level logic flowchart of a process and program for identifying and rerecording incomplete units of a recording of a program broadcast.

In the example, the process and program starts at block800and thereafter proceeds to block802. Block802illustrates a determination whether a recording of a broadcast of a program or a recordable source of a program is triggered. In one example, a recording of a broadcast of a program or a recordable source of a program may be triggered when the scheduled recording time for the broadcast of the program or recordable source of the program is reached. When a recording of a broadcast of a program or a recordable source of a program is triggered, then the process passes to block804. Block804illustrates a determination whether all of the program or only one or more units of the program are designated for recording.

At block804, if all of the program is designated for recording, then the process passes to block806. Block806illustrates accessing the unit identifiers and associated data integrity values for the program. In one example, a program broadcaster system or program host system may send unit identifiers and associated data integrity values for a program within schedule information for the program. In another example, a program broadcaster system or program host system may send unit identifiers and associated data integrity values in response to receiving a communication from a program receiver system indicating the program receiver system will record a broadcast of the program from the program broadcaster system or will record a recordable source of the program from the program host system. Next, block808illustrates recording the program from the broadcast of the program or from another recordable source of the program. In one example, where unit identifiers or data integrity values are embedded into the broadcast or other recordable source of the program, the unit identifiers and data integrity values may be accessed from the broadcast or other recordable source of the program, concurrent with the program recording. Thereafter, block810illustrates identifying a recorded portion of the program corresponding to each unit in the program according to the unit identifiers. Next, block812illustrates checking each recorded unit against the data integrity value associated with the program unit. In one example, block812may be performed at the conclusion of the recording of the entire program or may be performed multiple times, at the conclusion of the recording of each of the units of the program. In one example, to check each recorded unit against the data integrity value associated with the program unit, the process and program ofFIG. 10is triggered for each recorded unit. Thereafter, block814illustrates flagging any unit in the recording that fails to check against the data integrity value associated with the unit, and the process passes to block816.

Returning to block804, if the recording of the program is triggered on a unit basis, then the process passes to block820. Block820illustrates accessing the unit identifiers and associated data integrity values for the one or more units of the program scheduled for rerecording. Next, block822illustrates recording only the scheduled units from the program, starting and stopping the recording according to the unit identifiers for the scheduled units, in place of one or more previously recorded units of the program flagged as incomplete. Block824illustrates deleting the flagged units from the previous recording of the program that are replaced by the rerecorded units. Next, block826illustrates checking each rerecorded unit against the data integrity value associated with the unit. Thereafter, block828illustrates flagging any rerecorded unit that fails to check against the data integrity value associated with the unit, and the process passes to block816.

Block816illustrates a determination whether any units of a program recording are flagged as incomplete. At block816, if no units of a program recording are flagged as incomplete, then the process passes to block818. Block818illustrates marking the completion status for the program recording as complete, and the process ends. At block816, if any units of the program recording are flagged as incomplete, then the process passes to block830. Block830illustrates marking the completion status for the program recording as incomplete. Next, block832illustrates triggering a search for a subsequent broadcast or other recordable source of the program according to user preferences. Thereafter, block834illustrates reporting the incomplete unit status to at least one reporting device, and the process ends.

FIG. 9illustrates one example of a high level logic flowchart of a process and program for searching for a rebroadcast of one or more incomplete units of a program. In the example, the process and program starts at block900and thereafter proceeds to block902. Block902illustrates a determination whether a search is triggered for incomplete flags set for one or more units in a program recording. In the example, if a search is triggered for incomplete flags set for one or more units of a program recording, then the process passes to block904. Block904illustrates searching the compiled schedule for an additional broadcast or other recordable source of each of the flagged program units. Next, block906illustrates a determination whether an additional broadcast or other recordable source for at least one flagged program unit is identified in the compiled schedule. At block906, if no additional broadcast or other recordable source for at least one flagged program unit is identified in the compiled schedule, then the process passes to block912. Block912illustrates reporting the lack of rerecording options available for the incomplete units to at least one reporting device, and the process ends. At block906, if an additional broadcast or other recordable source for at least one flagged program unit is identified in the compiled schedule, then the process passes to block908. Block908illustrates automatically scheduling the at least one flagged program unit to only be rerecorded during the additional broadcast or other recordable source of the program. Next, block910illustrates setting a rerec status of each of the at least one flagged program units that are scheduled for rerecording to indicate the scheduled recording time, and the process ends.

FIG. 10illustrates a high level logic flowchart of a process and program for checking a recorded unit of a program against a data integrity value for a program unit. In the example, the process starts at block1000and thereafter proceeds to block1002. Block1002illustrates a determination whether a check of a recorded unit against the data integrity value for the program unit is triggered. In the example, block812may trigger the process and program ofFIG. 10for each recorded unit of multiple recorded units of a program identified by multiple units. At block1002, if a check of a recorded unit against the data integrity value for the program unit is triggered, then the process passes to block1004. Block1004illustrates calculating a checksum for the recorded portion of the program corresponding to the program unit using a selected checksum function, where the checksum function calculates a numerical value from the data within the recorded portion of the program. Next, block1006illustrates comparing the checksum calculated for the recorded portion of the program corresponding with the program unit with the data integrity value for the program unit. Thereafter, block1008illustrates a determination whether the calculated checksum for the recorded unit matches the data integrity value for the program unit. At block1008, if the calculated checksum for the recorded unit matches the data integrity value for the program unit, then the process passes to block1012. Block1012illustrates returning an indicator that the recorded unit checks against the data integrity value for the program unit, and the process ends. Returning to block1008, if the calculated checksum for the recorded unit does not match the data integrity value for the program unit, then the process passes to block1010. Block1010illustrates returning an error indicating the recorded unit does not check against the data integrity value for the program unit, and the process ends.

While the invention has been particularly shown and described with reference to one or more embodiments, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention.