US-12627852-B2 - Caching recorded content segments on playback
Abstract
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.
Inventors
- Christopher Lintz
- Jeremy Pfeifer
Assignees
- COMCAST CABLE COMMUNICATIONS, LLC
Dates
- Publication Date
- 20260512
- Application Date
- 20240904
Claims (20)
- 1 . A method, comprising: receiving, from a user device, a request for a segment of a plurality of segments of a content item; determining, based on the request, which bundle of a plurality of bundles of segments of the content item contains the requested segment; retrieving, from storage, metadata associated with the determined bundle; storing, in a cache memory, the determined bundle; and sending, to the user device, and based on the retrieved metadata, the requested segment of the segments of the determined bundle stored in the cache memory.
- 2 . The method of claim 1 , further comprising: deleting the requested segment of the segments of the determined bundle from the cache memory after sending the requested segment to the user device; and maintaining the remaining segments of the bundle in the cache memory.
- 3 . The method of claim 1 , further comprising: receiving, from the user device, another request for another segment of the segments of the determined bundle; determining, based on the another request, whether the determined bundle is still stored in the cache memory; retrieving, based on determining that the determined bundle is still stored in the cache memory, the another segment from the cache memory; and sending, to the user device, the another segment from the cache memory.
- 4 . The method of claim 3 , further comprising: deleting the another segment from the cache memory after sending the another segment to the user device.
- 5 . The method of claim 1 , further comprising: creating, in the cache memory, a data structure containing the segments of the determined bundle, wherein the data structure is created based on the retrieved metadata.
- 6 . The method of claim 5 , wherein the data structure facilitates removal of an element of the data structure containing one of the segments of the determined bundle.
- 7 . The method of claim 5 , wherein the data structure comprises a linked list.
- 8 . The method of claim 1 , wherein the metadata comprises an end of segment location, and wherein the end of segment location comprises an end of segment byte offset.
- 9 . A method comprising: retrieving, from storage, a bundle of segments of a plurality of bundles of segments, wherein the bundle of segments comprise a plurality of segments; retrieving, from the storage, metadata associated with the bundle of segments, wherein the metadata specifies, for each of the plurality of segments of the bundle of segments, an end of segment location within the bundle of segments; creating, based on the metadata, a data structure comprising the plurality of segments; and storing, in a cache memory, the data structure.
- 10 . The method of claim 9 , further comprising: receiving a request for a segment of the plurality of segments; and sending the requested segment from data structure stored in the cache memory.
- 11 . The method of claim 10 , further comprising: deleting the requested segment from the data structure stored in the cache memory after sending the requested segment; and maintaining remaining segments of the plurality of segments in the cache memory.
- 12 . The method of claim 9 , wherein the data structure facilitates removal of an element of the data structure containing a segment of the plurality of segments.
- 13 . The method of claim 9 , wherein the data structure comprises a linked list data structure.
- 14 . A computing device, comprising: one or more processors; and memory storing computer-executable instructions, which when executed by the one or more processors, cause the computing device to: receive, from a user device, a request for a segment of a plurality of segments of a content item; determine, based on the request, which bundle of a plurality of bundles of segments of the content item contains the requested segment; retrieve, from storage, metadata associated with the determined bundle; store, in a cache memory, the determined bundle; and send, to the user device, and based on the retrieved metadata, the requested segment of the segments of the determined bundle stored in the cache memory.
- 15 . The computing recited in claim 14 , wherein the computer-executable instructions, when executed by the one or more processors, further cause the computing device to: delete the requested segment of the segments of the determined bundle from the cache memory after sending the requested segment to the user device; and maintain the remaining segments of the bundle in the cache memory.
- 16 . The computing device of claim 14 , wherein the computer-executable instructions, when executed by the one or more processors, further cause the computing device to: receive, from the user device, another request for another segment of the segments of the determined bundle; determine, based on the another request, whether the determined bundle is still stored in the cache memory; retrieve, based on determining that the determined bundle is still stored in the cache memory, the another segment from the cache memory; and send, to the user device, the another segment from the cache memory.
- 17 . The computing device of claim 16 , wherein the computer-executable instructions, when executed by the one or more processors, further cause the computing device to: delete the another segment from the cache memory after sending the another segment to the user device.
- 18 . The computing device of claim 14 , wherein the computer-executable instructions, when executed by the one or more processors, further cause the computing device to: create, in the cache memory, a data structure containing the segments of the determined bundle, wherein the data structure is created based on the retrieved metadata.
- 19 . The computing device of claim 18 , wherein the data structure facilitates removal of an element of the data structure containing one of the segments of the determined bundle.
- 20 . The computing device of claim 18 , wherein the data structure comprises a linked list.
Description
CROSS-REFERENCE TO RELATED APPLICATION This application is a continuation of U.S. patent application Ser. No. 17/708,152, filed Mar. 30, 2022, now U.S. Pat. No. 12,114,036, issued Oct. 8, 2024, which is a continuation of U.S. patent application Ser. No. 16/577,583, filed Sep. 20, 2019, now U.S. Pat. No. 11,323,764, issued May 3, 2022, the contents of which are hereby incorporated by reference in their entirety. 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. BRIEF DESCRIPTION OF THE DRAWINGS The following detailed description is better understood when read in conjunction with the appended drawings. For the purposes of illustration, examples are shown in the drawings; however, the subject matter is not limited to specific elements and instrumentalities disclosed. In the drawings: FIG. 1 illustrates an example content item; FIG. 2 shows an example system; FIG. 3 illustrates an example storage format; FIG. 4 illustrates an example method; FIG. 5 illustrates an example linked list; FIG. 6 illustrates another aspect of the linked list of FIG. 5; FIG. 7 illustrates an example computing device. DETAILED DESCRIPTION FIG. 1 illustrates an example content item 100. In various i