Virtual content store in interactive services architecture

A virtual content store may be provided. Upon receiving a request for a content stream from a subscriber at a regional headend, a central content vault may be examined to determine whether the content stream is available. Once the content stream is determined to be available in the central content vault, a streaming session may be established to the subscriber from the regional headend. The content stream may be retrieved from the central content vault and provided to the subscriber via the streaming session.

BACKGROUND

A virtual content store in an Interactive Services Architecture provides a method and system for consolidating resources in a central storage facility while maintaining operational consistency. Further, the virtual content store maintains adherence to the Interactive Services Architecture (ISA) standard as defined by the ISA 1.4 Specification, which is hereby incorporated by reference in its entirety. In conventional systems, content provider networks often have to use multiple content stores that are geographically proximate to their service areas. For example, content stores that each maintain copies of all available content may need to be available for every 10,000 subscribers. This results in an inefficient and duplicative use of storage resources.

DESCRIPTION OF EXAMPLE EMBODIMENTS

Overview

Consistent with embodiments of the present invention, systems and methods are disclosed for providing a virtual content store. Upon receiving a request for a content stream from a subscriber and/or headend, a central content vault may be examined to determine whether the content stream is available. Once the content stream is determined to be available in the central content vault, a streaming session may be established to the subscriber from the regional headend. The content stream may be retrieved from the central content vault and/or an intermediate caching node. If the content is retrieved in response to a subscriber request, the content may be provided to the subscriber via the streaming session.

It is to be understood that both the foregoing general description and the following detailed description are examples and explanatory only, and should not be considered to restrict the invention's scope, as described and claimed. Further, features and/or variations may be provided in addition to those set forth herein. For example, embodiments of the invention may be directed to various feature combinations and sub-combinations described in the detailed description.

DETAILED DESCRIPTION

Current content distribution implementations often result in multiple independent nodes with each node replicating the work effort and the hardware required to deliver Video on Demand (VOD) content to digital Set Top Boxes (STBs). Building each of the nodes as an independent entity as a customer base expands is highly inefficient and expensive.

A virtual content store in an Interactive Services Architecture (ISA) may comprise a solution to deploy content distribution storage—a central vault—in a single location accessible by a large subscriber base through geographically dispersed regional distribution points. For example, the central vault may provide at least 30,000 standard definition equivalent (SDE) hours of content storage. The central vault may create streamer assets in cooperation with the regional distribution point in order to provide requested content from the central vault to a requesting subscriber. Consistent with embodiments of the invention, the regional distribution points may comprise local vaults for storing region-specific content and/or caching some live content to provide a Start Over feature. Such region-specific content may comprise, for example, a local news program and/or local sports team coverage. The Start Over feature may allow customers to jump to the beginning of a program in progress of a live broadcast without any preplanning or in-home recording devices.

FIG. 1is a block diagram view of a cable television system (CTS)100comprising an integrated network system that features video, audio, voice and data services to audience members or set top box (STB) users. CTS100may comprise a headend110comprising a content manager115, a streamer118, and a local vault125. Headend110may be communicatively coupled to an access network130, such as a hybrid fiber coax (HFC) cable television network operative to transmit data to and/or from a client set top box (STB)140. Local vault125may be operative to store local interest content and cached content for use with a Start Over feature.

Digital and analog video programming and digital and analog data may be provided to a display device such as a television set145via set-top box (STB)140associated with a subscriber. Interactive television services that allow a customer to input data to CTS100may likewise be provided by STB140. As illustrated inFIG. 3, STB140may comprise a multipurpose computing device having a computer processor, memory and an input/output mechanism. The input/output mechanism may receive input from server-side processes via access network130and from customers via input devices such as a remote control device148. Remote control device148may communicate with STB140via a suitable communication transport such as an infrared connection. STB140may also include a video processor for processing and providing digital and analog video signaling to television set145via a cable communication transport. A multi-channel tuner may be provided for processing video and data to and from STB140and headend110. STB140may also comprise an operating system150for directing the functions of STB140in conjunction with a variety of client applications.

Because a variety of different operating systems150may be utilized by a variety of different brands and types of set-top boxes, a middleware layer154may be provided to allow a given software application to be executed by a variety of different operating systems. According to embodiments of the present invention, middleware layer154may include a set of application programming interfaces (API) that are exposed to client application152and operating system150that allow client application152to communicate with operating system150through common data calls understood via the API set. A corresponding middleware layer may be included on the server side of CATV system100for facilitating communication between server-side content server115and client-side STB140. In CTS100, STB140may send a channel request signal back to headend110. If a channel is not currently being transmitted on the coaxial line, a distribution hub may allocate a new QAM channel and transmit the new channel to the coaxial cable via a fiber optic node in access network130.

CTS100may further comprise a central distribution node155. Central distribution node155may comprise a central vault160, an ingest driver165, and a caching node170. Central vault160may be operative to store a plurality of content streams that may be provided to regional distribution nodes, such as headend110, and/or to subscribers via STB140. Ingest driver165may be operative to contact content providers (not shown), request updates to available content, and retrieve content from the content providers for storage in central vault160on an automatic basis and/or upon receiving a request from headend110and/or STB140.

An ingest driver client may operate in association with local vault125while ingest driver165operates in association with central vault160. Ingest driver165may be operative to scan the contents of central vault160and distribute a list of available content to each of a plurality of regional distribution nodes, such as regional headend110. The distribution list may comprise, for example, an XML file comprising details about each program such as an index code for locating the content in central vault160, pricing information, title, description, file size, format, bit rate, etc. The distribution list may be transmitted in the XML format through an HTTP communication. When the ingest driver client requests downloading of a content which has not been previously ingested, ingest driver165may create a record in a database for that content with an initial reference count of 1. Subsequent ingest requests by other regional distribution nodes may result in the reference count for that content being incremented and updated/stored in the database record. Likewise, deletion requests from the regional distribution nodes may result in decrementing the reference count associated with the record. When the reference count reaches 0, ingest driver165may delete the content.

Caching node170may comprise a streamer service that may provide a communication interface between central vault160and streamer118. Streamer118may be configured to contact caching node170instead of and/or before contacting central vault160to retrieve the requested content. Caching node170may retrieve that content from the central vault160and provide it to streamer118. Caching node170may be used when CTS100comprises a geographically dispersed subscriber base, such as a multi-state region. In such a case, caching node170may be used to alleviate traffic congestion between numerous regional streamers, such as streamer118, and central vault160for retrieval/playing of content. Caching node170may mitigate this problem by retrieving single copies of popular content and serving them to multiple streamers requesting it within its region. Caching node170may thus reduce traffic between the large numbers of individual streamers and central distribution node155.

CTS100may deliver broadcast video signals as digitally formatted signals in addition to delivering traditional broadcast analog video signals. Furthermore, CTS100may support one-way broadcast services as well as both one-way data services and two-way media and data services. The two-way operation of the network may allow for user interactivity with services, such as Pay-Per-View programming, Near Video-On-Demand (NVOD) programming, Video-on-Demand (VOD) programming, and interactive applications, such as Internet connections and interactive services that render real-time bi-directional communication on a personalized basis such as bi-directional audio-visual communication. CTS100may also provide interfaces, network control, transport control, session control, and servers to access content and services, and may distribute content and services to STT users. CTS100may also provide the interfaces, network control, transport control, session control, and servers to establish on-demand session-based bi-directional communication service between a particular remote destination and a STT user for delivering media from the particular remote destination to the STT user and input information from the STT user to the particular remote destination. A remote destination during a session of a bi-directional communication service may comprise a remote personal destination such as a friend or a remote vendor that offers a bi-directional communication service for a purchasable period of time in which a viewer communicates real-time with the vendor on a personal basis. In either case, dedicated CTS100resources may be allocated to fulfill individualized bi-directional communication over a purchasable period.

Content manager115may comprise a virtual content store comprising a list of available content stored on local vault125and/or known to be available via the distribution list associated with central vault160. Content manager115may be operative to generate requests for content, such as new release movies to provide to video on demand subscribers. The content requests may be generated automatically, such as by scheduling periodic requests for programs from a particular content provider and/or may be individual requests generated by an operator at headend110. Headend110may be configured so that requests to ingest and/or delete content may be based on licensing windows, rental windows, user purchase of content, etc.

A request may first determine whether the content is available, such as in local vault125and/or central vault160. If the content is available, on central vault160for example, a reference count associated with the content may be incremented. Otherwise, ingest driver165may download the requested content for storage in central vault160.

Ingest driver165may provide a communication proxy to an ingest driver client associated with content manager115that may be transparent to the standard ISA communication protocol. This may allow regional sites, such as headend110, to stream content from central distribution node165without disruption to the streaming sessions should a failure requiring a switch to a new streaming source (e.g., a backup vault) occur. Further, the regional sites may be able to set up their own networks without requiring a central domain name server (DNS) as is conventionally needed for in an ISA-compliant setup.

Content manager115may also be operative to receive requests for content from a subscriber, such as standard programming and/or video on demand content and configure streamer118to transmit the content to the requesting subscriber.

Upon receiving a content request from STB140, content manager115may be operative to determine whether the requested content is stored in local vault125and/or central vault160. If the content is not stored in either, content manager115may request that the content be ingested, if available. For example, content manager115may request that ingest driver165retrieve the content from a content provider and store it in central vault160. Streamer118may then establish a transmission of the content to STB140from central vault160.

FIG. 2is a flow chart setting forth the general stages involved in a method200consistent with embodiments of the invention for providing a virtual content store. Method200may be implemented using a computing device300as described in more detail below with respect toFIG. 3. Ways to implement the stages of method200will be described in greater detail below. Method200may begin at starting block205and proceed to stage210where computing device300may receive a content request. For example headend110may receive a request for a Video on Demand content stream from STB140over access network130. For another example, headend110may generate a request for a program's content stream and transmit the request to central distribution node155.

From stage210, method200may advance to stage215where computing device300may determine whether the requested content is available. For example, content manager115may determine whether the content is stored and/or cached in local vault125and/or may refer to a list of content available in central vault160. The content list may comprise, for example, an XML formatted list of content stored in central vault160created by ingest driver165. The list may be retrieved by and/or distributed to a plurality of regional headends, including headend110, each of which may request access to content stored in central vault160.

If the content is determined not to be currently available at stage215, method200may advance to stage220where computing device300may determine whether the content comprises a local interest content stream. For example, headend110may comprise a list of categories of content that are unlikely to be requested by users accessing content through other regional headends such as local news, local public access, and local sports team coverage.

If the content is determined to be of local interest, method200may advance to stage225where computing device300may ingest the content locally. For example, content manager115may contact a provider of the requested content (e.g., a local news station) and download the content to local vault125.

Otherwise, method200may advance to stage230where computing device300may cause the content to be ingested at a vault accessible to multiple headends. For example, regional headend110may send a request to central distribution node155to retrieve and store the requested content. Ingest driver165may receive the request, contact a provider of the requested content, such as a movie distributor, retrieve the content and/or a corresponding license, and store the content in central vault160. The license may comprise details such as a duration that the content may be retained in central vault160.

After ingesting the content, either locally at stage225or centrally at stage230, or if the content was already determined to be available at stage215, method200may advance to stage235where computing device300may establish a streaming session. For example, streamer118may retrieve the content from central vault160and/or caching node170, allocate a QAM channel for providing the content to STB140, and inform STB140which channel should be tuned to receive and display the content on television145. Regional headend110may also determine appropriate pricing to be charged to a subscriber associated with STB140and track such charges in a billing system (not shown). The pricing information may be included, for example, in the content list provided by ingest driver165.

From stage235, method200may advance to stage240where computing device300may determine whether the content request comprises a first request for the content. For example, central vault160may periodically download content from content providers that has not been requested by a subscriber. This content may be maintained until space is needed, a license expires, or other business logic dictates that the content may be deleted.

If, at stage240, computing device300determines that the content request does comprise the first request, computing device300may create a retention record associated with the content. The retention record may comprise a counter initialized to “1”, for the one subscriber currently receiving the streamed content. Otherwise, computing device300may increment the counter in the retention record associated with the content for each additional viewer. The retention record may be stored at regional headend110and/or central distribution node155. Consistent with embodiments of the invention, each of a plurality of regional headends may be operative to maintain their own retention records and/or may be operative to request the creation and/or update of retention records at central distribution node155. Further consistent with embodiments of the invention, retention records may be created as content is ingested at stage225and/or stage230. For example, the retention record may be created with the counter initialized to zero when content is ingested without a specific subscriber request for the content being received.

From stage245and/or stage250, method200may advance to stage255where computing device300may determine whether the content has finished streaming. While the content continues streaming to STB140, method200may remain in stage255. Consistent with embodiments of the invention, method200may remain in stage255if the subscriber pauses playback and/or turns off STB140if the content has not been finished. Further consistent with embodiments of the invention, method200may remain in stage255after the streaming session to STB140has been completed if the subscriber's request for the content comprises a requested duration. For example, the request may comprise a purchase of video on demand content to which the subscriber will have access for 24 hours; the subscriber may re-watch the content multiple times during that duration. Streamer118may establish a new streaming session for each repeat viewing and/or after an interruption in viewing without re-incrementing the counter in the retention record.

Once the content streaming has finished, method200may advance to stage260where computing device300may decrement the retention counter. For example, regional headend110may inform central distribution node155that the content is no longer needed by the subscriber and the counter in the retention record may be decremented.

From stage260, method200may advance to stage265where computing device300may delete the content. For example, when a content's retention record reaches zero, the content may be deleted from local vault125and/or central vault160. Content deletion may occur according to one and/or more business logic rules. For example, content may be retained as long as the retention record's counter is greater than zero, as long as a license associated with the content allows, and/or until space is needed on the vault. Consistent with embodiments of the invention, content with a “zero” counter may be deleted to free up available space before the license has expired. Method200may then end at stage270.

An embodiment consistent with the invention may comprise a system for providing a virtual content store. The system may comprise a memory storage and a processing unit coupled to the memory storage. The processing unit may be operative to receive a request for a content stream from a subscriber or a regional distribution node, determine whether the content stream is available from a central content vault, and in response to determining that the content stream is available from the central content vault, establish a streaming session to the subscriber and provide the requested content stream to the subscriber from the central content vault via the streaming session. In response to determining that the content stream is not available from the central content vault, the processing unit may be operative to determine whether the content stream comprises a local interest content stream and, if so, establish the streaming session to the subscriber from the regional headend and provide the requested content stream to the subscriber from a local content vault via the streaming session.

The processing unit may be further operative to determine whether the request for the content stream comprises a first request for the content stream and, if so, create a retention record comprising a counter associated with the content stream. If not, the processing unit may increment the counter of the retention record associated with the content stream. In response to determining that the streaming session has been completed, the processing unit may be operative to decrement the counter of the retention record associated with the content stream. If the counter of the retention record associated with the content stream indicates that the content stream is not associated with an active streaming session and/or that a license associated with the content stream has expired, the processing unit may be operative to delete the content stream.

Another embodiment consistent with the invention may comprise a system for providing a virtual content store. The system may comprise a memory storage and a processing unit coupled to the memory storage. The processing unit may be operative to receive a request over a network from a regional headend for a content stream to be transmitted to a subscriber, determine whether the content stream is available on a central content vault, in response to determining that the content stream is available on the central content vault, establish a transmission session between the central content vault and the regional headend, and provide the content stream to the regional headend for transmission to the subscriber via the transmission session. The processing unit may be further operative to receive a plurality of requests from a plurality of regional headends. In response to determining that the content stream is not available on the central content vault, the processing unit may be operative to determine whether the content stream is available from a content stream provider and, in response to determining that the content stream is available from the content stream provider, ingest the content stream to the central content vault. The processing unit may be further operative to establish a deletion date for the ingested content stream according to a license agreement with the content stream provider.

Yet another embodiment consistent with the invention may comprise a system for providing a virtual content store. The system may comprise a memory storage and a processing unit coupled to the memory storage. The processing unit may be operative to receive a request from at least one of a plurality of regional headends for a content stream to be transmitted to a subscriber, determine whether the content stream is available from a central content vault, and, in response to determining that the content stream is not available from the central content vault, ingest the content stream to the central content vault from a content provider and create a retention record associated with the content stream, wherein the retention record comprises a viewer counter and a license expiration date. The processing unit may be further operative to increment the viewer counter associated with the retention record associated with the content stream and transmit the content stream from the central content vault to the subscriber via a streaming session established between the at least one of the regional headends and the subscriber. The processing unit may be further operative to determine whether the subscriber is no longer receiving the content stream and, in response to determining that the subscriber is no longer receiving the content stream, decrement the viewer counter associated with the retention record associated with the content stream. The processing unit may be further operative to download a plurality of available content streams from the content provider to the central content vault on a periodic basis and create a retention record associated with each of the plurality of available content streams.

FIG. 3illustrates a computing device300. Computing device300may include a processing unit310and a memory unit320. Memory320may include software configured to execute application modules such as content manager115and/or streamer118. Computing device300may execute, for example, one or more stages included in method300as described above with respect toFIG. 3. Moreover, any one or more of the stages included in method300may be performed on any element shown inFIG. 1.

Computing device300may be implemented using a personal computer, a network computer, a mainframe, or other similar microcomputer-based workstation. The processor may comprise any computer operating environment, such as hand-held devices, multiprocessor systems, microprocessor-based or programmable sender electronic devices, minicomputers, mainframe computers, and the like. The processor may also be practiced in distributed computing environments where tasks are performed by remote processing devices. Furthermore, the processor may comprise a mobile terminal, such as a smart phone, a cellular telephone, a cellular telephone utilizing wireless application protocol (WAP), personal digital assistant (PDA), intelligent pager, portable computer, a hand held computer, a conventional telephone, a wireless fidelity (Wi-Fi) access point, or a facsimile machine. The aforementioned systems and devices are examples and the processor may comprise other systems or devices.