BACKGROUND OF THE INVENTION This invention relates to on-demand systems. More particularly, this invention relates to managing local storage of on-demand content in on-demand systems.
On demand systems (e.g., video-on-demand (VOD) systems) have been developed that allow a user to order content (e.g., a video program) from an on demand server for playback (or execution, in the case of an application) by the user's equipment. In some approaches, a rental period associated with a VOD program defines a period of time during which a user may access the content. Rental periods may, or may not, be fee based.
For example, in a VOD system, it may be desirable to store a VOD program or a portion of a VOD program at the user's equipment to allow, for example, local VCR-like playback control. If the locally-stored VOD program were accessible by the user beyond an applicable rental period, the user would be able to, perhaps, watch the VOD program in contravention of the VOD provider's viewing policies and fee structure. Thus, it is desirable to prevent the user from retrieving, or to otherwise control the user's access to, locally-stored VOD programs beyond the expiration of the applicable rental period. More generally, it is desirable to control a user's access to locally cached on-demand content beyond an applicable use period defined by the content provider.
SUMMARY OF THE INVENTION It is an object of this invention to provide systems and methods for storing on-demand content in a local storage device and managing usage of the locally-stored on-demand content. As used herein “on-demand content” includes on-demand programs (and/or data and/or audio), on-demand applications (e.g., games and interactive mini-guides) and content related to one or more on-demand programs such as special features related to on-demand programs, on-demand program previews, related on-demand programs, on-demand associated applications (e.g., bound or unbound OpenCable Applications Platform (OCAP) applications) or a combination of such content provided as part of a package. For clarity, and not by way of limitation, the invention is at times herein discussed in the context of managing the playback of locally-cached on-demand video program content, but the principles of the invention may also be applied to managing other suitable on-demand content.
In response to a user's request for playback of on-demand content from an on-demand server, the on-demand server sends a content stream of the on-demand content to an on-demand client implemented on a user's equipment. The on-demand client stores the content stream (or a portion of it) on a local storage device to allow local playback control. The on-demand client uses constraint criteria to control the deletion of and/or access to locally-stored on-demand content. The constraint criteria may include on-demand rental conditions, dynamic factors, and/or keys, which are associated with one or more on-demand contents or categories of on-demand content. In some embodiments, the constraint criteria used to control access to locally-stored on-demand content may be different from the constraint criteria used to control deletion of locally-stored on-demand content.
BRIEF DESCRIPTION OF THE DRAWINGS The above and other objects and advantages of the invention will be apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which like reference characters refer to like parts throughout, and in which:
FIG. 1 is a block diagram of an on-demand system in accordance with one embodiment of the present invention.
FIG. 2 is a flow chart of an illustrative process for retrieving and displaying on-demand content from a local storage device in accordance with one embodiment of the present invention.
FIGS. 3 and 4 are flow charts of two illustrative processes for managing on-demand content in a local storage device as a function of dynamic factors that affect the availability in the local storage device in accordance with one embodiment of the present invention.
FIG. 5 is a flow chart of an illustrative process for deleting on-demand content in a local storage device as a function of a dynamic factor and on-demand rental conditions, in accordance with one embodiment of the invention.
FIG. 6 is a flow chart of another illustrative process for deleting on-demand content from a local storage device as a function of a dynamic factor and on-demand rental conditions, in accordance with one embodiment of the invention.
FIG. 7 is a flow chart of an illustrative process for managing locally-stored on-demand content as a function of keys and other constraint criteria in accordance with one embodiment of the present invention.
FIG. 8 is a flow chart of an illustrative process for managing locally-stored on-demand content as a function of a time period in accordance with one embodiment of the invention.
FIG. 9 is a flow chart of an illustrative process for managing locally-stored on-demand content as a function of a maximum amount of on-demand content viewing time in accordance with another embodiment of the present invention.
FIG. 10 is a flow chart of an illustrative process for managing locally-stored on-demand content as a function of a maximum number of on-demand content viewings in accordance with one embodiment of the present invention.
FIG. 11 is a flow chart of an illustrative process for managing locally-stored on-demand content as a function of a maximum number of on-demand contents that is allowed to be concurrently stored in a local storage device, in accordance with one embodiment of the invention.
FIG. 12 is a flow chart of an illustrative process for managing locally-stored on-demand content using flags in accordance with one embodiment of the invention.
DETAILED DESCRIPTION OF THE INVENTIONFIG. 1 is a simplified block diagram of one embodiment of an on-demand system100 according to the present invention. On-demand system100 includesuser equipment110 and remote on-demand server150. In some embodiments, on-demand content may be distributed from a headend or remote site (not shown) to, and stored on, remote on-demand server150. AlthoughFIG. 1 illustrates one remote on-demand server150 for clarity, on-demand system100 may include more than one remote on-demand server150 and/or additional types of servers that interface withuser equipment110.
Remote on-demand server150, which may include a storage device and processing circuitry, communicates withuser equipment110 overcommunications path136.Communications path136 may be a satellite path, a fiber-optic path, a cable path, an Internet Protocol (IP) path, or any other suitable wired or wireless path. Data (e.g., an on-demand content stream, on-demand constraint criteria, on-demand-related messages, etc.) is sent or exchanged viacommunications path136 using a synchronous delivery mechanism (e.g., MPEG-2 transport over a hybrid-fiber coax network), an asynchronous delivery mechanism (e.g., store-and-forward, best-effort, or Internet Protocol (IP)), or a combination of synchronous and asynchronous delivery mechanisms. Althoughcommunications path136 is shown as a single path for clarity,communications path136 may include multiple paths (e.g., multiple IP paths betweenuser equipment110 and multiple distributed remote on-demand servers150).
In practice, there may be many installations ofuser equipment110, but only one has been shown to avoid over-complicating the drawing.User equipment110 may be any in-home equipment suitable for providing on-demand functionality, such as a suitably equipped television, set-top box, digital video recorder (DVR), personal video recorder (PVR), or PCTV. Whatever the chosen equipment,user equipment110 may include at leastuser input device120,processing circuitry130,storage device134, anddisplay device140.User input device120 may be any suitable device or combination of input devices including, for example, a remote control, a keyboard, a mouse, a touch pad, a touch screen, or a voice recognition interface.Display device140 may be any suitable device configured to provide for the output of video and audio such as, for example, a television, plasma display, LCD, or computer monitor.
Processing circuitry130 may include a processor, such as a microprocessor, and any other suitable circuitry for providing on-demand-related functionality, including, for example, caching circuitry, video-decoding circuitry, direct memory access circuitry, input-output circuitry (including communications circuitry for communicating with remote on-demand server150 over communications path136), decryption circuitry, and transcryption circuitry.
Storage device134 may be any suitable storage device or combination of coupled storage devices for storing on-demand client programming logic, data, and on-demand content including, for example, RAM, flash memory, one or more hard disk drives, removable storage media, one or more CD-ROM drives, or one or more networked drives on an in-home entertainment network.
Processing circuitry130 executes the on-demand client to perform multiple functions, including: (1) receiving commands fromuser input device120 overcommunications path122 and either sending the commands to remote on-demand server150 or processing the commands locally, (2) playing back on-demand content fromstorage device134 and/or remote on-demand server150, (3) storing on-demand content instorage device134, and (4) controlling the deletion of and/or access to on-demand content stored onstorage device134 as a function of constraint criteria. In some embodiments the on-demand client is part of, or communicates with, an interactive television application such as an interactive television program guide.
Communications path138 may be any suitable display interface such as, for example, a Digital Visual Interface (DVI) or FireWire Interface (IEEE 1394).Communications path122 may be any suitable wired or wireless path (e.g., an infrared path).
In a typical use scenario, a user of on-demand system100 selects content for playback usinguser input device120.User input device120 sends a signal to the on-demand client which, in response, requests the selected on-demand content from on-demand server150. On-demand server150 retrieves the on-demand content and transmits it touser equipment110 as a digital stream (e.g., an MPEG stream). The on-demand client stores the stream instorage device134 and may begin playing back the content fromstorage device134 before the entire stream is received (i.e., when only a portion of the content is stored), or in some approaches may store the entire content stream before playing back the content. In still other approaches, the entire on-demand content is not stored locally, and a circular cache is used to store or buffer only a portion of the content at a given point in time.
Given the overhead already required to establish the communications link between remote on-demand server150 anduser equipment110, the additional overhead required to store the entire on-demand content compared to storing a portion of the on-demand content may be minimal. Thus in some embodiments, the on-demand client stores the entirety of the on-demand content independent of whether the user actually watches the entire on-demand content. In such embodiments, the on-demand client may stop storing the entirety of an on-demand content in response to, for example, a tuner or communications path becoming unavailable, if recording the entire on-demand content is undesirable as a result of other system requirements, or if access to the program violates constraint criteria as described below.
In some embodiments, remote on-demand server150 may encode and compress the content stream before transmitting it touser equipment110. In such embodiments, the on-demand client stores the encoded and compressed content stream instorage device134. The on-demand client may immediately start playing the on-demand content by retrieving the content stream fromstorage device134 in a first-in, first-out (FIFO) fashion, and decoding and decompressing the stream for output to displaydevice140. The on-demand client may also access the stream at a later time (such as to provide the user with local playback control, or when the entire stream is stored before it is played back).
In the prior art, on-demand content stored onstorage device134, until deleted, may remain accessible to the user beyond the expiration of the on-demand service provider's rental period (which may or may not be fee-based, depending on the desired implementation). This would be undesirable as the on-demand provider could lose control over what the user does with the on-demand content. For example, the user could store the on-demand content instorage device134 as long as the user wants (e.g., until the user deletes the on-demand content from storage device134), or view the on-demand content as many times as the user wants.
To avoid this undesirable result, the on-demand client controls the deletion of and/or access to the on-demand content (or portions of the on-demand content) stored instorage device134 as a function of constraint criteria associated with each content or groups of contents (e.g., on-demand contents of a particular genre, contents that cost a similar fee, or any other suitable group). The on-demand client may control the deletion of on-demand content stored instorage device134 using the same criteria as, or different criteria from, the constraint criteria used to control access to the content. As used herein, “control access” may include, for example, controlling (a) the retrieval of the on-demand content fromstorage device134, (b) the decoding of an encoded content stream, and (c) the decryption (or transcryption) of an encrypted (or transcrypted) content stream, or controlling any other activity the user may perform when accessing the locally stored on-demand content.
In some embodiments, remote on-demand server150 transmits constraint criteria touser equipment110. In other embodiments, another suitable server such as, for example, a different remote on-demand server150 (i.e., an on-demand server other than the one that provided the stored on-demand content), an interactive program guide server, a digital rights management server, or an authentication server (e.g., RADIUS server), may transmit the constraint criteria.Processing circuitry130 stores the constraint criteria instorage device134.
Remote on-demand server150, or another suitable server, may transmit the constraint criteria as part of, or independent from (such as part of a distinct metadata stream along thesame communications path136 or along a different communications path136), the content stream. The constraint criteria may be transmitted prior to, at the same time as, or after the transmission of the content stream (but typically before the rental window expires). For example, constraint criteria may be transmitted at certain times (e.g., daily, weekly, monthly, or any time the constraint criteria changes) in response to a user (1) enrolling in the on-demand service, (2) the first time that the user requests playback of any on-demand content from remote on-demand server150, (3) each time that the user requests playback of any on-demand content from remote on-demand server150, (4) just prior to a time at which the on-demand client determines whether to delete and/or prevent the user from accessing the on-demand content from storage device134 (but before the rental window expires), or (5) at any other suitable time.
In some embodiments, the constraint criteria may be initially stored inprocessing circuitry130,storage device134, or other circuitry inuser equipment110. In still other embodiments, a portion of the constraint criteria is provided by remote on-demand server150 or another suitable server, and a portion is initially stored inuser equipment110.
The constraint criteria may include on-demand rental conditions. These are conditions related to the system provider's rental policies (which may or may not be fee-based). The on-demand rental conditions may, for example, specify an on-demand rental window, one or more other time periods, usage limits, or a combination of these or other suitable rental conditions. The rental conditions may, for example, specify characteristics of other on-demand content that are permitted to be, or forbidden from being, stored onstorage device134 with content or contents associated with the rental condition. Such characteristics may include, for example, availability, size, duration, pricing, marketing, whether part of a common series, whether part of a common promotional package, and other suitable factors relating to the other on-demand content.
Rental condition time periods may be defined in any suitable manner. In some embodiments, the time period is based on the time when the on-demand content was initially stored instorage device134. For example, the on-demand client may, as a function of this time period, delete the on-demand content from, or prevent the user from accessing the on-demand content from,storage device134 twenty-four hours after the on-demand content is stored instorage device134.
A time period may be based, for example, on the time when the on-demand content was initially made available from remote on-demand server150 (which is independent from the actual time that the on-demand content is ordered (e.g., by a user) and/or the time when the on-demand content was stored locally). For example, the on-demand client may, as a function of the time period, delete the on-demand content from, or prevent the user from accessing the on-demand content from,storage device134 seven days after the on-demand content was initially made available from remote on-demand server150.
As another example, a time period may be based on the time when the on-demand content will be removed from remote on-demand server150. For example, the on-demand client may, as a function of the time period, delete the on-demand content from, or prevent the user from accessing the on-demand content from,storage device134 at the same time that, or some period after, the on-demand content is removed from remote on-demand server150.
In yet another example, a time period may be based on the time when the user first requested playback of the on-demand content fromstorage device134. For example, the on-demand client may, as a function of the time period, delete the on-demand content from, or prevent the user from accessing the on-demand content from,storage device134 twelve hours after the user initially requests playback of the on-demand content fromstorage device134. The user may have ordered (e.g., purchased) the on-demand content at the same time as, or prior to, the time in which the user requested playback of the on-demand content.
In a final example, the time period may be based on the current date and time. For example, the on-demand client may, as a function of the time period, delete on-demand content fromstorage device134 each Sunday at midnight.
Rental condition usage limits may also be defined in any suitable manner. The usage limit may be an allowable number of times that the user has requested playback of the on-demand content fromstorage device134. For example, the on-demand client may, as a function of this rental condition, delete the on-demand content from, or prevent the user from accessing the on-demand content from,storage device134 after the user has requested and viewed the on-demand content fromstorage device134 three times.
The usage limit may be a cumulative time that the user may spend viewing the on-demand content fromstorage device134. For example, the on-demand client may, as a function of this rental condition, delete the on-demand content from, or prevent the user from accessing the on-demand content from,storage device134 after the user has spent a total of eighteen hours viewing the on-demand content in its entirety or in various portions.
The usage limit may be a parental control that limits the number of times and/or the cumulative time that a user may request and/or view an on-demand content that exceeds a particular rating (or a combination of on-demand contents that exceeds a set of ratings) fromstorage device134.
The usage limit may be an allowable number of currently stored on-demand contents. For example, the on-demand client may only allow a user to store a maximum of four on-demand contents at any given time instorage device134. In response to the user requesting a fifth on-demand content, the on-demand client may delete and/or prevent access to one of the on-demand contents currently stored instorage device134. This maximum may be based on the number of on-demand contents in one or more categories (e.g., first-run, classic, action, comedy, movies starring a particular actor, movies in a particular series, etc.) concurrently stored instorage device134. For example, the on-demand client may only allow a user to concurrently store a maximum of five first-run movies and/or ten classics. In response to the user requesting a sixth first-run movie (or an eleventh classic), the on-demand client may delete and/or prevent access to one of the first-run movies (or classics) currently stored instorage device134.
In some embodiments, the constraint criteria may include dynamic factors that specify conditions of the user's equipment. Such factors may include, for example, whether the user is actively watching the on-demand content, dynamic factors regarding the availability in the local storage device (e.g., whether other system activities require use of the local storage device or other conflicts), whether the portion of the on-demand content stored in the local storage device meets a “keep” criterion (e.g., a threshold amount of the on-demand content that needs to be stored in the local storage device below which the user's equipment deletes the on-demand content from the local storage device) or a combination of such factors.
In some embodiments, the on-demand client may employ cryptographic techniques (e.g., encryption/decryption and transcryption). In such embodiments, the constraint criteria may include keys. The on-demand client uses the keys from the constraint criteria to process (e.g., decrypt, transcrypt) the content stream for display to the user. Remote on-demand server150 can send an encrypted (or transcrypted) content stream, or a portion thereof, touser equipment110. The on-demand client may decrypt (or transcrypt) the content stream using the keys prior to, or after, storing the content stream instorage device134. If desired, the keys and other sensitive information may be stored in a secure memory device or otherwise handled in a secure manner.
Prior to deleting and/or preventing the user from accessing an on-demand content fromstorage device134 as a function of the constraint criteria, the on-demand client may provide the user the option to extend the viewing time window of the on-demand content or otherwise relax the constraint criteria associated with the on-demand content. When the user does not accept such an option, the on-demand client may then delete and/or prevent the user from accessing the on-demand content fromstorage device134. When the user accepts the option, the user may be charged a fee (e.g., at the original fee or at a discount), or may receive incentives such as special features related to the on-demand content or previews of related on-demand contents. This extended viewing time window may have the same constraint criteria as, or different constraint criteria from, the original constraint criteria for the locally-stored on-demand content.
FIG. 2 is a flow chart of an illustrative process for retrieving and displaying locally-stored on-demand contents in accordance with one embodiment of the present invention. In this embodiment, the on-demand client may begin playback prior to storing the entire content instorage device134.
Process200 starts atstep202 where the on-demand client receives a request for a segment (e.g., at least a portion) of on-demand content (e.g., from a local user). Atstep204, the on-demand client determines whether the entire on-demand content is locally stored (e.g., in storage device134). If the entire on-demand content is not locally stored,process200 proceeds to step206 where the on-demand client determines whether retrieval of the on-demand content from remote on-demand server150 is underway. If it is not,process200 then moves to step208 where the on-demand client initiates the retrieval of the on-demand content from remote on-demand server150. If atstep206 it is determined that the on-demand client has already initiated retrieval of the on-demand content, or afterstep208,process200 then moves to step210. Under certain conditions, step208 may be skipped. For example, it may be undesirable to attempt to retrieve an entire on-demand content when, necessary resources are unavailable, such as when a user in a single-tuner system tunes away from the on-demand content. Thus, in such a circumstance,process200 may move directly to step210.
Atstep210, the on-demand client determines whether the requested segment of the on-demand content is available onlocal storage device134. If the requested segment is not available,process200 moves to step212 where the on-demand client determines whether there is a resource timeout (e.g., an error state, or an exceptional delay on a tuner resource or an IP connection). If a resource timeout is detected, then instep214, the on-demand client informs the user or system of the problem.Process200 then ends atstep220. If a resource timeout is not detected atstep212,process200 returns to step210.
If the requested segment is available atstep210 or step204,process200 moves to step216 where the requested segment is retrieved fromlocal storage device134. Then atstep218, the on-demand client decodes and displays the requested segment.Process200 ends atstep220.
FIGS. 3-11 are flow charts of illustrative processes that the on-demand client may perform to control the deletion of and/or access to locally stored on-demand contents as a function of various combinations of constraint criteria. The on-demand client may initiate these processes in response to, for example, a triggering event or timer. In some embodiments, the on-demand client may perform one or more of these processes periodically or continuously (such as in a round-robin fashion). These processes are only illustrative as other embodiments may combine the constraint criteria in the processes ofFIGS. 3-11 in any suitable combination, and may use other types of constraint criteria not shown in the figures.
FIGS. 3 and 4 are flow charts of two illustrative processes for managing on-demand content in a local storage device as a function of dynamic factors that affect the availability in the local storage device. In these examples, the dynamic factors specified by the constraint criteria include determining whether the user is watching the program and determining whether storage is needed for other system activities (FIGS. 3 and 4), and whether “keep” criteria are met (FIG. 4). These examples assume as an initial state that the rental period has not expired (determining whether the rental period has not expired is not shown).Process300 ofFIG. 3 starts atstep302. Atstep304, the on-demand client determines whether the user is actively watching an on-demand content that has been stored in local storage device134 (FIG. 1). If the user is actively watching the on-demand content, the process repeatsstep304 until the user is no longer watching the on-demand content.
If the user is not actively watching, or once the user is no longer actively watching, the on-demand content,process300 moves to step306 where the on-demand client determines whether the portion oflocal storage device134 storing the on-demand content is needed by the system for other activities (such as storing new on-demand content. If space onlocal storage device134 is not presently needed for other system activities,process300 returns to step304. If space onlocal storage device134 is needed for other system activities, the on-demand client deletes the on-demand content, making that portion oflocal storage device134 available for other system activities (step308). As described herein, deleting on-demand content includes deleting a portion of the on-demand content or deleting the entirety of the on-demand content stored inlocal storage device134. Only a portion of the on-demand content may be deleted when only that portion is stored inlocal storage device134 or when less disk space is needed than is used for the entire on-demand content stored inlocal storage device134.Process300 then ends atstep310.
Process400 ofFIG. 4 starts atstep402. Atstep404, the on-demand client determines whether the user is actively watching an on-demand content that has been stored inlocal storage device134. If the user is actively watching the on-demand content, the process repeatsstep404 until the user is no longer watching the on-demand content.
If the user is not actively watching, or once the user is no longer actively watching, the on-demand content,process400 moves to step406 where the on-demand client determines whether the portion oflocal storage device134 storing the on-demand content is needed by the system for other activities. If the portionlocal storage device134 is not presently needed for other system activities,process400 moves to step408 where the on-demand client determines whether the portion of the stored on-demand content meets a “keep” criterion. For example, the on-demand content may be “kept” if, relative to the size of the entire on-demand content and/or the space available on the local storage device, a threshold amount of the program has been stored. If the keep criterion is met,process400 returns to step404. Iflocal storage device134 is needed for other system activities atstep406, or if the keep criterion is not met atstep408,process400 moves to step410 where the on-demand client deletes the on-demand content, making that portion ofstorage device134 available for other system activities.Process400 then ends atstep412.
In one or more variants ofprocesses300 and400, the test ofstep306 ofprocess300 and/or the test ofstep406 ofprocess400 is further conditioned by a priority determination. In other words, the test is modified to read “Is storage needed for other ‘higher priority’ system activities.”
FIG. 5 is a flow chart of an illustrative process for deleting on-demand content in a local storage device as a function of a dynamic factor (in this example, whether the user is watching the on-demand content) and on-demand rental conditions, in accordance with one embodiment of the invention. In this illustrative process, on-demand rental conditions are used by the on-demand client as deletion criteria for determining whether to delete a locally stored on-demand content. In such an approach, other rental conditions are used to otherwise control access to the programs.
Process500 starts atstep502. Atstep504, the on-demand client determines whether the user is actively watching an on-demand content that has been stored inlocal storage device134. If the user is actively watching the on-demand content, the process repeatsstep504 until the user is no longer watching the on-demand content. In some embodiments, the on-demand client may, based on some on-demand rental conditions (e.g., an outstanding balance overdue on a user's account), delete a locally-stored on-demand content, or prevent a user from viewing locally-stored on-demand content, even when the user is actively engaged in watching a program. This is not shown inprocess500 to avoid overcomplicating the drawing.
If the user is not actively watching, or once the user is no longer actively watching, the on-demand content,process500 moves to step506 where the on-demand client determines whether the on-demand content meets the on-demand rental conditions and therefore should be deleted fromlocal storage device134 in this circumstance. If the on-demand content does not meet the on-demand rental condition's deletion criteria,process500 returns to step504. If the on-demand content meets the on-demand rental condition's deletion criteria, then instep508, the on-demand client deletes the on-demand content, making the portion of thelocal storage device134 available for other system activities.Process500 then ends atstep510.
FIG. 6 is a flow chart of an illustrative process for deleting on-demand content from a local storage device as a function of a dynamic factor (in this example, whether the user is watching a locally-stored on-demand content), and on-demand rental conditions, including whether the on-demand content needs to be securely erased, in accordance with one embodiment of the invention. In this illustrative process, on-demand rental conditions are used by the on-demand client as deletion criteria for determining whether to delete a locally stored on-demand content. In such an approach, other rental conditions are used to otherwise control access to the programs.
Note that typically, freeing storage in a computer system does not necessarily remove the data (and thus leaves it accessible). For example, in a Unix-based computer system, the system function free( ) simply removes pointers to the stored data, but leaves the data intact until the space is later overwritten by another process writing to a newly malloco( ) 'ed block that overlaps the previously freed portion of memory.
Process600 starts atstep602. Atstep604, the on-demand client determines whether the user is actively watching an on-demand content that has been stored in the local storage device. If the user is actively watching the on-demand content, the process repeatsstep604 until the user is no longer watching the on-demand content. In some embodiments, the on-demand client may, based on some on-demand rental conditions (e.g., an outstanding balance overdue on a user's account), delete a locally-stored on-demand content, or prevent a user from viewing locally-stored on-demand content, even when the user is actively engaged in watching a program. This is not shown inprocess600 to avoid overcomplicating the drawing.
If the user is not actively watching, or once the user is no longer actively watching, the on-demand content,process600 moves to step606 where the on-demand client determines whether the on-demand content meets the on-demand rental conditions that would indicate whether the on-demand content should be deleted from thelocal storage device134 in this circumstance. If the on-demand content does not meet the on-demand rental condition's deletion criteria,process600 returns to step604. If the on-demand content meets the on-demand rental condition's deletion criteria, then instep608, the on-demand client determines whether the on-demand content was distribution controlled (e.g., whether the copyrighted material was subject to distribution limitations).
If the on-demand content is distribution controlled,process600 moves to step610 where the on-demand client securely erases the on-demand content fromlocal storage device134. This can occur by overwriting the on-demand content (e.g., writing with multiple passes of various patterns to reduce the probability of recovery of the content) or by corrupting key portions of the on-demand content (e.g., using quantization matrices, CRC checks, headers) to render the on-demand content more difficult to play. Secure erasure can also be as simple a technique as setting a “broadcast” flag in the on-demand content to indicate that the content can no longer be distributed. Alternatively, a “never copy” flag can be set, or a “play once” flag can be reset, in digital rights management protocols such as IEEE 1394 5C. More information on IEEE 1394 5C can be found in “Digital Transmission Content Protection Specification Revision 1.4 (Informational Version),” Feb. 28, 2005, DTLA, www.dtcp.com, which is incorporated herein by reference in its entirety.
If the on-demand content is not distribution controlled or, alternatively, afterstep610,process600 moves to step612 where the on-demand client deletes the on-demand content from the local storage device, making that portion of the local storage device available for other system activities.Process600 then ends atstep614.
FIG. 7 is a flow chart of an illustrative process for managing locally-stored on-demand content as a function of keys and other constraint criteria in accordance with one embodiment of the present invention. Process700 starts atstep702. Atstep704, the on-demand client sends a request for playback of an on-demand content to remote on-demand server150. Atstep706, the on-demand client receives an encrypted content stream of the on-demand content and constraint criteria for the on-demand content from remote on-demand server150. The constraint criteria include one or more keys and other constraint criteria (e.g., rental conditions or dynamic factors) for the on-demand content. Atstep708, the on-demand client stores the encrypted content stream for the on-demand content instorage device134. Atstep710, the on-demand client receives a request to initiate playback of the on-demand content fromstorage device134 viauser input device120. Note that this request may have been implicit in the request ofstep704 or it may precede it.
Atstep712, the on-demand client determines whether to prevent the playback of the on-demand content based on criteria other than the security-key specific constraint criteria. If playback of the on-demand content is prevented,process700 moves to step714 where processing circuitry informs the user, via a suitable display, of the nature of the restriction (e.g., nonpayment of a bill, expiration of the rental period, unavailability of the on-demand content) and the process ends atstep726. The user may also be offered an opportunity to enable the playback of the on-demand content (e.g., to pay an outstanding bill using a credit card, to purchase an extension on the rental period). Although not shown, if the user enables the playback of the on-demand content,process700 then moves to step716.
If playback of the on-demand content is not prevented atstep712, then atstep716, the on-demand client retrieves the encrypted content stream for the on-demand content fromstorage device134. Atstep718, it decrypts the encrypted content stream based on the keys from the constraint criteria. Atstep720, it renders the decrypted content stream to displaydevice140.
Atstep722, the on-demand client again checks the criteria other than the security-key specific constraint criteria and determines whether to delete and/or prevent access to the content stream fromstorage device134. If the content stream is to be deleted from, and/or access is to be prevented from,storage device134 atstep722, the on-demand client corrupts or overwrites the content stream in storage device134 (step724) andprocess700 ends atstep726. If the content stream is to be maintained in, and retrievable from,storage device134 atstep722,process700 ends atstep726.
FIG. 8 is a flow chart of an illustrative process for managing locally-stored on-demand content as a function of a time period in accordance with one embodiment of the invention. Process800 starts atstep802. Atstep804, the on-demand client sends a request for playback of an on-demand content to remote on-demand server150. Atstep806, the on-demand client receives from remote on-demand server150 a content stream for the on-demand content and as a rental condition, a time period for deleting and/or controlling access to the program. Atstep808, the on-demand client stores the content stream for the on-demand content and the time period instorage device134. Atstep810, the on-demand client automatically deletes and/or prevents access to the content stream fromstorage device134 after the specific time period. The process ends atstep812.
FIG. 9 is a flow chart of an illustrative process for managing locally-stored on-demand content as a function of a maximum amount of on-demand content viewing time in accordance with one embodiment of the present invention. Process900 starts atstep902. Atstep904, the on-demand client sends a request for playback of an on-demand content to remote on-demand server150. Atstep906, the on-demand client receives from remote on-demand server150 a content stream for the on-demand content and a rental condition specifying a total viewing time for the on-demand content. Atstep908, the on-demand client stores the content stream for the on-demand content and the condition instorage device134. Atstep910, the on-demand client receives a request to initiate playback of the on-demand content fromstorage device134 viauser input device120. Note that this request may have been implicit in the request ofstep904, or it may precede it. Atstep912, the on-demand client retrieves the content stream for the on-demand content fromstorage device134. Atstep913, the on-demand client transmits the content stream to displaydevice140 for display.
Atstep916, the on-demand client determines, as a function of the viewing time specified in the rental conditions, whether the amount of time spent viewing the on-demand content is greater than or equal to a maximum viewing time T (e.g., T is four hours or another suitable time). If the viewing time is less than the maximum viewing time,process900 moves to step918 where the on-demand client determines whether playback of the on-demand content has terminated. If playback of the content has not terminated,process900 returns to step913. Although not shown, while the on-demand client performssteps916 and918, if playback of the on-demand content has not terminated, it continues to send the content stream to displaydevice140 for display. If playback of the content has terminated atstep918,process900 returns to step910 where the on-demand client receives subsequent requests to initiate the playback of the content.
If the viewing time is greater than or equal to the maximum viewing time instep916,process900 moves to step920 where the on-demand client automatically deletes and/or prevents access to the content stream fromstorage device134. The process ends atstep922.
FIG. 10 is a flow chart of an illustrative process for managing locally-stored on-demand content as a function of a maximum number of on-demand content viewings in accordance with one embodiment of the present invention.Process1000 starts atstep1002. Atstep1004, the on-demand client sends a request for playback of an on-demand content to remote on-demand server150. Atstep1006, the on-demand client receives from remote on-demand server150 a content stream for the on-demand content and a rental condition specifying a maximum number of viewings for the on-demand content. Atstep1008, the on-demand client stores the content stream for the on-demand content and the rental condition instorage device134. Atstep1010, the on-demand client receives a request to initiate playback of the on-demand content fromstorage device134 viauser input device120. Note that this request may have come prior tostep1004. Atstep1012, the on-demand client retrieves the content stream for the on-demand content fromstorage device134. Atstep1014, the on-demand client sends the content stream to displaydevice140 for display. Note that here and in related embodiments,step1014 may include sending only a portion of the on-demand content to the display.
Atstep1016, the on-demand client determines whether the number of viewings of the on-demand content is equal to a maximum number of viewings N specified in the rental condition. If the number of viewings is less than the maximum number of viewings,process1000 returns to step1010 where the on-demand client receives subsequent requests to initiate the playback of the content. If the number of viewings is equal to the maximum number of viewings,process1000 moves to step1018 where the on-demand client automatically deletes and/or prevents access to the content stream fromstorage device134. The process ends atstep1020.
FIG. 11 is a flow chart of an illustrative process for managing locally-stored on-demand content as a function of a maximum number of on-demand contents that are allowed to be concurrently stored in the local storage device, in accordance with one embodiment of the invention.Process1100 starts atstep1102. Atstep1104, the on-demand client sends a request for playback of an on-demand content, received fromuser input device120, to remote on-demand server150. Atstep1106, the on-demand client receives from remote on-demand server150 a rental condition indicating a maximum number S of contents C that may be stored bystorage device134. Atstep1108, the on-demand client determines whether the number of on-demand contents C stored instorage device134 is equal to the maximum number of on-demand contents S (e.g., four).
In this embodiment, the on-demand client maintains the counter C that indicates the number of on-demand contents currently stored instorage device134. If the number of on-demand contents stored instorage device134 is equal to the maximum number of on-demand contents,process1100 moves to step1110 where the on-demand client informs the user through a suitable display that the maximum number of on-demand contents are stored instorage device134, and provides the user with an option to select one of the on-demand contents currently stored instorage device134 for deletion. Atstep1112, the on-demand client deletes the selected on-demand content fromstorage device134 and decrements counter C by one (represented inFIG. 11 by the following programming code syntax: “C−−”). In another embodiment, the user may have the option to select more than one on-demand content currently stored instorage device134 for removal atstep1110. In such an embodiment, counter C is decremented to reflect the number of on-demand contents removed fromstorage device134. In yet another embodiment, the on-demand client may automatically delete one of the on-demand contents stored instorage device134. Afterstep1112,process1100 returns to step1108.
If the number of on-demand contents C stored instorage device134 is less than the maximum number of on-demand contents S atstep1108,process1100 moves to step1114 where the on-demand client receives a content stream for the on-demand content from remote on-demand server150. Atstep1116, the on-demand client stores the content stream for the on-demand content instorage device134 and increments counter C by one (represented inFIG. 11 by the following programming code syntax: “C++”). Atstep1118, the on-demand client receives a request to initiate playback of the on-demand content fromstorage device134 viauser input device120. This request may be part of, or may precede the request ofstep1104. Atstep1120, the on-demand client retrieves the content stream for the on-demand content fromstorage device134. Atstep1122, the on-demand client sends the content stream to displaydevice140 for display.Process1200 then ends atstep1124.
In some embodiments, the on-demand client may associate flags with locally-stored on-demand content to control the deletion of and/or access to the on-demand content. These flags may be stored, for example, in a table or directory onstorage device134. There may be a delete flag, a control access flag, or one flag for deleting and controlling access to a given on-demand content. The on-demand client may set the flags as a function of the constraint criteria including, for example, the on-demand rental conditions, the keys, or dynamic factors.
For example, the on-demand client may set a control-access flag when an on-demand content is content-protected (e.g., single-user purchased, copyright protected, or distribution-limited) and constraint criteria are met to indicate that the program is not to be accessed, or accessed only with a key. The on-demand client may, upon determining that a control-access flag is set, alter (e.g., corrupt) the bit representation of the content stream stored instorage device134 to prevent the user from viewing the video after the on-demand rental period. The on-demand client may alter the bit representation of the video by randomly modifying cyclic redundancy check (CRC) bits in various packets of the stored video, inserting null packets at regular intervals of the stored video, replacing quantization matrices with zero bits, reordering various packets of the stored video, or any other suitable alteration. Upon or during an attempted playback of the on-demand content, the on-demand client may examine the control-access flag, see that it is set, and determine whether it has the appropriate key for decoding the program. If it does not, the on-demand client may indicate to the user that the program is not accessible, or that the user may gain access only after paying a fee.
As another example of how flags are used, the on-demand client may set a flag indicating that the on-demand content is to be deleted fromstorage device134. When another on-demand content is to be recorded (or when space onrecording device134 is otherwise needed), the on-demand client may examine the delete flag to determine if it is set, and overwrite the program with the new one.
FIG. 12 is a flow chart of an illustrative process for managing locally-stored on-demand content using flags in accordance with one embodiment of the invention.Process1200 starts atstep1202. Atstep1204, the on-demand client determines whether to prevent the user from accessing the on-demand content fromstorage device134 by determining whether a control-access flag (Flag A) associated with the on-demand content is set (e.g., to binary “1”). If the control-access flag is not set,process1200 moves to step1206.
If the control-access flag is set,process1200 moves to step1208 where the on-demand client prevents the user from accessing the on-demand content from storage device134 (e.g., by altering the bit representation of the on-demand content). Atstep1210, the on-demand client resets the control-access flag (e.g., to binary “0”). This second flag may be subsequently used in association with another on-demand content that is later stored instorage device134.Process1200 then ends atstep1216.
Atstep1206, the on-demand client determines whether to delete an on-demand content fromstorage device134 by determining whether a deletion flag (Flag B) associated with the on-demand content is set. If the deletion flag is not set,process1200 returns to step1204. If the deletion flag is set,process1200 moves to step1212 where the on-demand client deletes the on-demand content fromstorage device134 by, for example, replacing the on-demand content with other content. Atstep1214, the on-demand client resets the second flag.
In some embodiments, after the on-demand client prevents the user from accessing the on-demand content fromstorage device134 atstep1208 and resets the control-access flag atstep1210, it may continue to check the delete flag (at step1206) until the delete flag is set in order to delete the on-demand content fromstorage device134.
Although not shown, duringprocess1200, the on-demand client continually monitors the on-demand rental conditions associated with each locally-stored on-demand content. In response to any of the on-demand contents satisfying an on-demand rental condition, the flags corresponding to that on-demand content are set accordingly.
The processes shown inFIGS. 3-12 are illustrative. Steps may be performed in a different order, steps may be omitted, or steps may be added as appropriate.
Thus, it is seen that systems and methods are provided for storing on-demand content in a local storage device and managing the locally-stored on-demand content as a function of certain on-demand constraint criteria. One skilled in the art will appreciate that the invention can be practiced by other than the described embodiments, which are presented for purposes of illustration and not of limitation, and the present invention is limited only by the claims which follow.