BACKGROUND

Cloud-based digital video recorder (DVR) solutions move the functionality of a home DVR device to the cloud. Cloud DVRs function like traditional home DVRs, but they store recorded content in the service provider network (i.e., the cloud), eliminating the need for a physical DVR device in the home. With cloud DVR, recorded content may be streamed to a number of different playback devices via the service provider network.

Due to legal and regulatory requirements, cloud DVR systems must store individual copies of a recorded content item for each user who makes a personal copy, even though the recorded content item, such as a television program, may be virtually identical for each user. For example, if one hundred users all record the same television program broadcast at a particular time, the service provider's cloud DVR system must store one hundred individual copies of the recorded television program—one for each user. For service providers with large numbers of users, storage and retrieval of cloud DVR content can be challenging. Hence, there is a need for methods and apparatus for efficient storage and retrieval of cloud DVR content.

SUMMARY

Methods and apparatus are disclosed for efficient storage and retrieval of content items, such as recorded content items of a cloud DVR system or other system storing content items. The one or more content items may be stored in a storage. A content item may comprise a plurality of segments of content. The plurality of segments of content may be divided into a plurality of bundles, and each bundle of segments of the content item may be stored in the storage.

A request for a segment of a plurality of segments of a content item may be received from a playback device of a user. A determination may be made, based on the request, which of a plurality of bundles of segments of the content item contains the requested segment. The determined bundle may be retrieved from the storage. The retrieved bundle may be stored in a cache memory. The requested segment of the plurality of segments of the stored bundle may be sent to the playback device. The requested segment sent to the playback device may be deleted from the cache memory, whereas the remaining segments of the bundle may be maintained in the cache memory.

Another request may be received from the playback device for another segment of the plurality of segments of the retrieved bundle. In response to the another request, it may be determined whether the retrieved bundle is still stored in the cache memory. If so, the another segment may be retrieved from the cache memory, without again having to retrieve the determined bundle from the storage. The another requested segment retrieved from the cache memory may be sent to the playback device. The another requested segment sent to the playback device may also be deleted from the cache memory, whereas the remaining segments of the bundle may be maintained in the cache memory.

A linked list of the plurality of segments of the determined bundle may be created in the cache memory. Metadata associated with the determined bundle may be stored in the storage to facilitate creation of the linked list. The metadata may specify, for each of the plurality of segments of the determined bundle, an end of segment byte offset within the bundle. The linked list may be created based on the metadata.

This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to limitations that solve any or all disadvantages noted in any part of this disclosure.

