NETWORK-BASED DIGITAL VIDEO RECORDER PLAYBACK ADAPTER

- COX COMMUNICATIONS, INC.

This disclosure describes systems and methods related to a network-based digital video recorder playback adapter. In some embodiments, a request for digital content may be received from a customer device. A plurality of segments associated with the digital content may be received. A content stream may be generated based at least in part on the plurality of segments associated with the digital content. The content stream may be transmitted.

Skip to: Description  ·  Claims  · Patent History  ·  Patent History
Description
RELATED APPLICATIONS

This application claims priority to U.S. Provisional Patent Application No. 61/765,344, entitled “Cloud-Enabled Network-Based Digital Video Recorder,” filed on Feb. 15, 2013, the contents of which are incorporated by reference herein in their entirety.

TECHNICAL FIELD

Aspects of the disclosure related generally to digital video recorder functionality, and more particularly to a network-based digital video recording playback adapter.

BACKGROUND

Broadband service providers, such as cable service providers and satellite service providers, typically communicate broadband signals and/or other signals to customers in order to provide a wide variety of services, such as television service, telephone service, Internet service, etc. In conventional systems, a signal is communicated from a service provider to a set-top box (“STB”) situated within a customer's household. The signal is then processed by the STB in order to format data for presentation to the customer. Additionally, many conventional systems utilize digital video recorders (“DVRs”) to facilitate the recording of broadband content at the customer's direction. Conventional DVRs are typically situated within the customer's household. Conventional STBs and/or DVRs may not be compatible with digital content delivery network systems.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is set forth with reference to the accompanying drawings. The use of the same reference numerals indicates similar or identical components or elements; however, different reference numerals may be used as well to indicate components or elements which may be similar or identical. Various embodiments of the disclosure may utilize elements and/or components other than those illustrated in the drawings, and some elements and/or components may not be present in various embodiments. Depending on the context, singular terminology used to describe an element or a component may encompass a plural number of such elements or components and vice versa.

FIG. 1 is a block diagram including various hardware and software components of for a system for a network-based digital video recorder playback adapter in accordance with one or more embodiments of the disclosure.

FIG. 2 is a block diagram of illustrative components of an nDVR playback adapter in accordance with one or more embodiments of the disclosure.

FIG. 3 is a block diagram of illustrative components of a legacy adapter home gateway in accordance with one or more embodiments of the disclosure.

FIG. 4 is a process flow diagram of an illustrative method for processing digital content in a system for a network-based digital video recorder playback adapter in accordance with one or more embodiments of the disclosure.

FIG. 5 is a process flow diagram of an illustrative method for processing QAM content in a system for a network-based digital video recorder playback adapter in accordance with one or more embodiments of the disclosure.

DETAILED DESCRIPTION

This disclosure relates to, among other things, systems, methods, computer-readable media, techniques, and methodology for a network-based digital video recording playback adapter. In some embodiments, a content delivery network may provide network-based digital video recording, where content may be stored for a user in a cloud service and retrieved upon request by a user. Such a system may provide a user with access to increased storage without having to upgrade hardware in their homes. However, in many cases, such updated network-based digital content delivery networks may not be compatible with older customer premise devices. A network-based digital video recording playback adapter may allow a user continued user of their customer premise device by receiving a request for digital content, retrieving segments associated with the digital content, generating a content stream based on the segments associated with the digital content, and transmitting the content stream to the customer premise device.

Various illustrative embodiments have been discussed above. These and other example embodiments of the disclosure will be described in more detail hereinafter through reference to the accompanying drawings. The drawings and the corresponding description are provided merely for illustration and are not intended to limit the disclosure in any way. It should be appreciated that numerous other embodiments, variations, and so forth are within the scope of this disclosure.

Illustrative use Cases and System Architecture

FIG. 1 is a block diagram including various hardware and software components of for a system for a network-based digital video recorder playback adapter in accordance with one or more embodiments of the disclosure. In some embodiments, the system may include one or more nDVR storage array(s) 105, one or more digital rights management (DRM) keystore(s) 110, one or more video on demand (VOD) back office server(s) 115, one or more content delivery network server(s) 120, one or more nDVR playback adapter(s) 125, one or more pump(s) 130, one or more quadrature amplitude modulation (QAM) device(s), one or more nDVR API server(s) 140, one or more out of band (OOB) device(s) 145, one or more IP client(s) 150, one or more remote set-top boxes 155, one or more home gateway(s) 160, and/or one or more set top boxes 165.

In an illustrative example, a legacy set top box (STB) 165 may be incompatible to receive digital content directly from a digital content delivery network service provided by a service provider via one or more CDN server(s) 120. In some embodiments, a STB 165 may be in communication with a home gateway device 160. The home gateway device 160 may provide a local area network (LAN) within a pre-defined space, such as a residence. The home gateway 160 may request and receive digital content and distribute the content to one or more devices connected to the LAN (e.g., remote set top box 155, IP client 150, and/or STB 165). In some embodiments, the home gateway 160 may server as a load balancing mechanism by receiving requests for content from the various devices connected to the LAN and determining where each device should obtain the requested digital content (e.g., directly a CDN 120 or via a QAM device 135).

The nDVR API server 140 may generate and maintain information associated with content accessible by users associated with a user account. For example, the nDVR API server 140 may identify a user account associated with one or more customer premise devices (e.g., STB 165, home gateway 160, remote STB 155, and/or IP client(s) 150). The nDVR API server 140 may determine that the user account has access to digital content based at least in part on a subscription or service type associated with the user account. For example, the user account may be associated with a basic cable package and have 100 gigabytes of storage available to store digital content. In some embodiments, the nDVR API server 140 may generate a listing of live content available to the customer premise devices based at least in part the user account and may manage and maintain storage of digital content on one or more remote servers in association with the user account. In some embodiments, the nDVR API server 140 may receive requests from one or more IP clients 150 associated with a user account. The nDVR API server 140 may transmit lists of available content, either via a subscription associated with the user account and/or digital content stored in association with the user account to an IP client 150, a home gateway 160, and/or a STB 165.

In some embodiments, the legacy STB 165 may receive a listing of digital content available via the digital content delivery network from an nDVR API server 140 through the OOB device 145. In some embodiments, the STB 165 and/or home gateway 160 may generate requests to communicate with an nDVR API server 140 and/or an nDVR playback adapter 125 to request digital content. In some embodiments, the requests are received by an OOB device 145 and processed prior to being transmitted to their intended destinations. In some embodiments, the OOB device 145 processes the requests to ensure the message is compatible with the destination devices.

In some embodiments, the nDVR playback adapter 125 may receive a request for content. The request may originate from a home gateway 160 or a STB 165. In some embodiments, the request for digital content may be a network uniform resource locator (URL).

The nDVR playback adapter 125, based at least in part on the request, may communicate with one or more CDN server(s) 120 to retrieve the requested digital content. In some embodiments, the CDN server(s) 120 may retrieve the plurality of segments associated with the digital content based at least in part on the network URL of the request. The CDN 120 may communicate with one or more nDVR storage arrays 105 to obtain a plurality of segments associated with the digital content. The CDN 120 may package the segments to transmit to the nDVR playback adapter 125.

In some embodiments, the nDVR playback adapter 125 may receive and process the packaged segments from the CDN 120. The nDVR playback adapter 125 may obtain one or more keys from a DRM keystore 110. The nDVR playback adapter 125 may decrypt or unencrypt the processed segments based at least in part on the keys obtained from the DRM keystore 110.

The nDVR playback adapter 125 may communicate with one or more VOD back office server(s) 115 to identify one or more resources (e.g., pumps 130 and/or QAM devices 135) available to further process the requested digital content. The nDVR playback adapter 125 may receive information associated with available resources within the network for further processing the digital content.

The nDVR playback adapter 125 may generate a digital content stream based at least in part on the plurality of segments. The nDVR playback adapter 125 may decrypt, trans-encapsulate, enrich, and/or concatenate the plurality of segments to generate the digital content stream and transmit the content stream to one or more pumps 130. The pump may process the content stream received from the nDVR playback adapter 125 to facilitates encoding the content stream and equalize the stream. The pump may transmit the processed stream to the QAM device 135. The QAM device may receive the processed content stream and modulate and encrypt. The content stream may then be transmitted to requesting device (e.g., STB 165 and/or home gateway 160).

The STB may receive the content stream from the QAM 135 and display the content stream to a user. In some embodiments, the STB may request 165 that one or more trick modes be applied to the content stream. The STB 165 may generate a request to the nDVR playback adapter 125 with regards to the trick modes. In some embodiments, the nDVR playback adapter 125 may have generated data associated with trick modes during the generation of the content stream. The nDVR playback adapter 125 may receive the request associated with the trick modes and may make modifications to the content stream prior to transmitting the content stream to the pump 130.

In some embodiments, the IP client 150 may be in communication with the home gateway 160 and may request digital content via the home gateway 160. In some embodiments, the IP client 150 may access the content delivery network from a different network based at least in part on its association with a user account and may access content directly from one or more CDN server(s) 120 or via the nDVR API server 140.

Those of ordinary skill in the art will appreciate that the illustrative architecture 100 depicted in FIG. 1 is provided by way of example only. Numerous other operating environments, system architectures, and device configurations are within the scope of this disclosure. Other embodiments of the disclosure may include fewer or greater numbers of components and/or devices and may incorporate some or all of the functionality described with respect to the illustrative architecture 100 depicted in FIG. 1, or additional functionality.

FIG. 2 is a block diagram of illustrative components of an nDVR playback adapter 125 in accordance with one or more embodiments of the disclosure. The illustrative system architecture 200 may include one or more processors (processor(s)) 202 and one or more memories 210 (referred to herein generically as memory 210). The processor(s) 202 may include any suitable processing unit capable of accepting digital data as input, processing the input data based on stored computer-executable instructions, and generating output data. The computer-executable instructions may be stored, for example, in the data storage 204 and may include, among other things, operating system software and application software. The computer-executable instructions may be retrieved from the data storage 204 and loaded into the memory 210 as needed for execution. The processor(s) 202 may be configured to execute the computer-executable instructions to cause various operations to be performed. The processor(s) 202 may include any type of processing unit including, but not limited to, a central processing unit, a microprocessor, a microcontroller, a Reduced Instruction Set Computer (RISC) microprocessor, a Complex Instruction Set Computer (CISC) microprocessor, an Application Specific Integrated Circuit (ASIC), a System-on-a-Chip (SoC), a field-programmable gate array (FPGA), and so forth.

The data storage 204 may store program instructions that are loadable and executable by the processor(s) 202, as well as data manipulated and generated by the processor(s) 202 during execution of the program instructions. The program instructions may be loaded into the memory 210 as needed for execution. Depending on the configuration and implementation of the nDVR playback adapter(s) 125, the memory 210 may be volatile memory (memory that is not configured to retain stored information when not supplied with power) such as random access memory (RAM) and/or non-volatile memory (memory that is configured to retain stored information even when not supplied with power) such as read-only memory (ROM), flash memory, and so forth. In various implementations, the memory 210 may include multiple different types of memory, such as various forms of static random access memory (SRAM), various forms of dynamic random access memory (DRAM), unalterable ROM, and/or writeable variants of ROM such as electrically erasable programmable read-only memory (EEPROM), flash memory, and so forth.

The nDVR playback adapter(s) 125 may further include additional data storage 204 such as removable storage and/or non-removable storage including, but not limited to, magnetic storage, optical disk storage, and/or tape storage. Data storage 204 may provide non-volatile storage of computer-executable instructions and other data. The memory 210 and/or the data storage 204, removable and/or non-removable, are examples of computer-readable storage media (CRSM).

The nDVR playback adapter(s) 125 may further include network interface(s) 208 that facilitate communication between the nDVR playback adapter(s) 125 and other devices of the illustrative system architecture 100 or application software via the network(s). The nDVR playback adapter(s) 125 may additionally include one or more input/output (I/O) interfaces 206 (and optionally associated software components such as device drivers) that may support interaction between a user and a variety of I/O devices, such as a keyboard, a mouse, a pen, a pointing device, a voice input device, a touch input device, a display, speakers, a camera, a microphone, a printer, and so forth.

Referring again to the data storage 204, various program modules, applications, or the like may be stored therein that may comprise computer-executable instructions that when executed by the processor(s) 202 cause various operations to be performed. The memory 210 may have loaded from the data storage 204 one or more operating systems (O/S) 212 that may provide an interface between other application software (e.g., dedicated applications, a browser application, a web-based application, a distributed client-server application, etc.) executing on the nDVR playback adapter(s) 125 and the hardware resources of the nDVR playback adapter(s) 125. More specifically, the O/S 212 may include a set of computer-executable instructions for managing the hardware resources of the nDVR playback adapter(s) 125 and for providing common services to other application programs (e.g., managing memory allocation among various application programs). The O/S 212 may include any operating system now known or which may be developed in the future including, but not limited to, any mobile operating system, desktop or laptop operating system, mainframe operating system, or any other proprietary or open-source operating system.

The data storage 204 may further include one or more database management systems (DBMS) 214 for accessing, retrieving, storing, and/or manipulating data stored in one or more datastores. The DBMS 214 may use any of a variety of database models (e.g., relational model, object model, etc.) and may support any of a variety of query languages.

The data storage 204 may additionally include various other program modules that may include computer-executable instructions for supporting a variety of associated functionality. For example, the data storage 204 may include one or more playback client(s) 216, one or more de-packager(s) 218, one or more transcoders(s) 220, one or more DRM agent(s) 222, and/or one or more trick mode file generator(s) 224.

The playback client(s) 216 may include computer-executable instructions that in response to execution by the processor(s) 202 cause operations to be performed including receiving a request for digital content from a legacy device, such as a set top box 165, and/or retrieving or otherwise obtaining files containing or associated with the requested digital content from one or more CDN server(s) 120 and/or nDVR API server(s) 140. The de-packager(s) 218 may include computer-executable instructions that in response to execution by the processor(s) 202 cause operations to be performed including receiving the digital content from the playback client 216 and de-packaging or unzipping the digital content from the retrieved files.

The transcoder (s) 220 may include computer-executable instructions that in response to execution by the processor(s) 202 cause operations to be performed including receiving the unpackaged digital content from the de-packager 218 and transcoding the digital content.

The DRM agent(s) 222 may include computer-executable instructions that in response to execution by the processor(s) 202 cause operations to be performed including retrieving one or more keys from a DRM keystore 110 and decrypting the digital content received from the transcoder based at least in part on the one or more keys retrieved from the DRM keystore 110.

The trick mode file generator(s) 224 may include computer-executable instructions that in response to execution by the processor(s) 202 cause operations to be performed including generating data associated with one or more trick modes based at least in part on the digital content. For example, the trick mode file generator 224 may generate frames to be used for trick modes, such as fast forward or rewind, of the digital content.

Within the data storage 204, one or more modules may be stored. As used herein, the term module may refer to a functional collection of instructions that may be executed by the one or more processor(s) 202. For ease of description, and not by way of limitation, separate modules are described. However, it is understood that in some implementations the various functions provided by the modules may be merged, separated, and so forth. Furthermore, the modules may intercommunicate or otherwise interact with one another, such that the conditions of one affect the operation of another.

While various program modules (e.g., software modules) have been depicted and described with respect to various illustrative components of the architecture 200, it should be appreciated that the functionality described as being supported by the program modules may be enabled by any combination of hardware, software, and/or firmware.

It should further be appreciated that each of the above-mentioned modules may, in various embodiments, represent a logical partitioning of supported functionality. This logical partitioning is depicted for ease of explanation of the functionality and may not be representative of the structure of hardware, software, or firmware for implementing the functionality. Accordingly, it should be appreciated that the functionality described as being provided by a particular module may, in various embodiments, be provided at least in part by one or more other modules. Further, one or more depicted modules may not be present in certain embodiments, while in other embodiments, additional modules not depicted may be present and may support at least a portion of the described functionality and/or additional functionality. Further, while certain modules may be depicted and described as sub-modules of another module, in certain embodiments, such modules may be provided as independent modules.

While various program modules (e.g., software modules) have been depicted and described with respect to various illustrative components of the architecture 200, it should be appreciated that the functionality described as being supported by the program modules may be enabled by any combination of hardware, software, and/or firmware.

It should further be appreciated that each of the above-mentioned modules may, in various embodiments, represent a logical partitioning of supported functionality. This logical partitioning is depicted for ease of explanation of the functionality and may not be representative of the structure of hardware, software, or firmware for implementing the functionality. Accordingly, it should be appreciated that the functionality described as being provided by a particular module may, in various embodiments, be provided at least in part by one or more other modules. Further, one or more depicted modules may not be present in certain embodiments, while in other embodiments, additional modules not depicted may be present and may support at least a portion of the described functionality and/or additional functionality. Further, while certain modules may be depicted and described as sub-modules of another module, in certain embodiments, such modules may be provided as independent modules.

FIG. 3 is a block diagram of illustrative components of a legacy adapter home gateway 160 in accordance with one or more embodiments of the disclosure. The illustrative system architecture 300 may include one or more processors (processor(s)) 302 and one or more memories 310 (referred to herein generically as memory 310). The processor(s) 302 may include any suitable processing unit capable of accepting digital data as input, processing the input data based on stored computer-executable instructions, and generating output data. The computer-executable instructions may be stored, for example, in the data storage 304 and may include, among other things, operating system software and application software. The computer-executable instructions may be retrieved from the data storage 304 and loaded into the memory 310 as needed for execution. The processor(s) 302 may be configured to execute the computer-executable instructions to cause various operations to be performed. The processor(s) 302 may include any type of processing unit including, but not limited to, a central processing unit, a microprocessor, a microcontroller, a Reduced Instruction Set Computer (RISC) microprocessor, a Complex Instruction Set Computer (CISC) microprocessor, an Application Specific Integrated Circuit (ASIC), a System-on-a-Chip (SoC), a field-programmable gate array (FPGA), and so forth.

The data storage 304 may store program instructions that are loadable and executable by the processor(s) 302, as well as data manipulated and generated by the processor(s) 302 during execution of the program instructions. The program instructions may be loaded into the memory 310 as needed for execution. Depending on the configuration and implementation of the legacy adapter home gateway 160, the memory 310 may be volatile memory (memory that is not configured to retain stored information when not supplied with power) such as random access memory (RAM) and/or non-volatile memory (memory that is configured to retain stored information even when not supplied with power) such as read-only memory (ROM), flash memory, and so forth. In various implementations, the memory 310 may include multiple different types of memory, such as various forms of static random access memory (SRAM), various forms of dynamic random access memory (DRAM), unalterable ROM, and/or writeable variants of ROM such as electrically erasable programmable read-only memory (EEPROM), flash memory, and so forth.

The legacy adapter home gateway 160 may further include additional data storage 304 such as removable storage and/or non-removable storage including, but not limited to, magnetic storage, optical disk storage, and/or tape storage. Data storage 304 may provide non-volatile storage of computer-executable instructions and other data. The memory 310 and/or the data storage 304, removable and/or non-removable, are examples of computer-readable storage media (CRSM).

The legacy adapter home gateway 160 may further include network interface(s) 308 that facilitate communication between the legacy adapter home gateway 160 and other devices of the illustrative system architecture 100 or application software via the network(s). The legacy adapter home gateway 160 may additionally include one or more input/output (I/O) interfaces 306 (and optionally associated software components such as device drivers) that may support interaction between a user and a variety of I/O devices, such as a keyboard, a mouse, a pen, a pointing device, a voice input device, a touch input device, a display, speakers, a camera, a microphone, a printer, and so forth.

Referring again to the data storage 304, various program modules, applications, or the like may be stored therein that may comprise computer-executable instructions that when executed by the processor(s) 302 cause various operations to be performed. The memory 310 may have loaded from the data storage 304 one or more operating systems (O/S) 312 that may provide an interface between other application software (e.g., dedicated applications, a browser application, a web-based application, a distributed client-server application, etc.) executing on the legacy adapter home gateway 160 and the hardware resources of the legacy adapter home gateway 160. More specifically, the O/S 312 may include a set of computer-executable instructions for managing the hardware resources of the legacy adapter home gateway 160 and for providing common services to other application programs (e.g., managing memory allocation among various application programs). The O/S 312 may include any operating system now known or which may be developed in the future including, but not limited to, any mobile operating system, desktop or laptop operating system, mainframe operating system, or any other proprietary or open-source operating system.

The data storage 304 may further include one or more database management systems (DBMS) 314 for accessing, retrieving, storing, and/or manipulating data stored in one or more datastores. The DBMS 314 may use any of a variety of database models (e.g., relational model, object model, etc.) and may support any of a variety of query languages.

The data storage 304 may additionally include various other program modules that may include computer-executable instructions for supporting a variety of associated functionality. For example, the data storage 304 may include one or more QAM demodulators 316, one or more segmenter(s) 318, one or more load balancer(s) 320, one or more encryptor(s) 322, and/or one or more DRM agent(s) 324.

The QAM demodulator(s) 316 may include computer-executable instructions that in response to execution by the processor(s) 302 cause operations to be performed including receiving one or more content streams from QAM 135 and demodulating the one or content streams.

The segmenter(s) 318 may include computer-executable instructions that in response to execution by the processor(s) 302 cause operations to be performed including receiving one or more content streams from QAM demodulator 316 and segmenting the content stream into a plurality of segments.

The one or more load balancer(s) 320 may include computer-executable instructions that in response to execution by the processor(s) 302 cause operations to be performed including analyzing the one or more active connections from one or more IP clients 150, remote set-top boxes 155, and/or set top boxes 165 and their respective content requests. Based at least in part on the type of content requested and current bandwidth status, the load balancer 320 may direct each of the devices to retrieve the digital content from the CDN 120 and/or from the nDVR playback adapter 125.

The one or more encryptor(s) 322 may include computer-executable instructions that in response to execution by the processor(s) 302 cause operations to be performed including receive the plurality of segments from the segmenter 318 and encrypt the digital content (e.g., plurality of segments) prior to transmitting the requested digital content to an IP client 150 and/or a remote set-top box 155.

The DRM agent(s) 324 may include computer-executable instructions that in response to execution by the processor(s) 302 cause operations to be performed including decrypting content received from the CDN 120 via an IP client 150 using one or more keys retrieved from the DRM keystore 110 or locally stored on the home gateway 160.

Within the data storage 304, one or more modules may be stored. As used herein, the term module may refer to a functional collection of instructions that may be executed by the one or more processor(s) 302. For ease of description, and not by way of limitation, separate modules are described. However, it is understood that in some implementations the various functions provided by the modules may be merged, separated, and so forth. Furthermore, the modules may intercommunicate or otherwise interact with one another, such that the conditions of one affect the operation of another.

While various program modules (e.g., software modules) have been depicted and described with respect to various illustrative components of the architecture 300, it should be appreciated that the functionality described as being supported by the program modules may be enabled by any combination of hardware, software, and/or firmware.

It should further be appreciated that each of the above-mentioned modules may, in various embodiments, represent a logical partitioning of supported functionality. This logical partitioning is depicted for ease of explanation of the functionality and may not be representative of the structure of hardware, software, or firmware for implementing the functionality. Accordingly, it should be appreciated that the functionality described as being provided by a particular module may, in various embodiments, be provided at least in part by one or more other modules. Further, one or more depicted modules may not be present in certain embodiments, while in other embodiments, additional modules not depicted may be present and may support at least a portion of the described functionality and/or additional functionality. Further, while certain modules may be depicted and described as sub-modules of another module, in certain embodiments, such modules may be provided as independent modules.

While various program modules (e.g., software modules) have been depicted and described with respect to various illustrative components of the architecture 300, it should be appreciated that the functionality described as being supported by the program modules may be enabled by any combination of hardware, software, and/or firmware.

It should further be appreciated that each of the above-mentioned modules may, in various embodiments, represent a logical partitioning of supported functionality. This logical partitioning is depicted for ease of explanation of the functionality and may not be representative of the structure of hardware, software, or firmware for implementing the functionality. Accordingly, it should be appreciated that the functionality described as being provided by a particular module may, in various embodiments, be provided at least in part by one or more other modules. Further, one or more depicted modules may not be present in certain embodiments, while in other embodiments, additional modules not depicted may be present and may support at least a portion of the described functionality and/or additional functionality. Further, while certain modules may be depicted and described as sub-modules of another module, in certain embodiments, such modules may be provided as independent modules.

Illustrative Processes

FIG. 4 is a process flow diagram of an illustrative method 400 for processing digital content in a system for a network-based digital video recorder playback adapter in accordance with one or more embodiments of the disclosure. At block 405, the nDVR playback adapter 125 may receive a request for digital content. In some embodiments, the request may originate from a legacy set top box 165. The request may travel, via the OOB 145 module to the nDVR playback adapter 125. In some embodiment, the request for digital content may original from a home gateway device 160 on behalf of one or more additional devices, such as the remote set-top box 155 and/or one or more IP clients 150. The nDVR playback adapter 125 may receive a request for digital content from an nDVR API server 140 on behalf of one or more devices, such as an IP client 150, a home gateway device 160, and/or a legacy set top box 165.

At block 410, the nDVR playback adapter 125 may request a plurality of segments associated with the digital content. In some embodiments, the playback client 216 may request a plurality of segments associated with the requested digital content from one or more CDN servers 120. The CDN servers 120 may retrieve the requested segments associated with the digital content from one or more nDVR storage array devices 105 and transmit the segments to the nDVR playback adapter 125. In some embodiments, the de-packager(s) 218 may de-package and/or unzip the digital content from the data (e.g., received segments) from the nDVR playback adapter.

At block 415, the nDVR playback adapter 125 may obtain an encryption key from a DRM keystore and decrypt the plurality of segments based at least in part on the encryption key. In some embodiments, the DRM agent 222 of the nDVR playback adapter may determine whether it possesses the required encryption key in local storage of the nDVR playback adapter 125. If the DRM agent 222 determines the encryption key is not located in the nDVR playback adapter, the DRM agent 222 may identify and establish a communication with an appropriate DRM keystore 110. The DRM agent 222 may request an encryption key based at least in part on information associated with the requested digital content. The DRM agent 222 may receive or otherwise obtain one or more encryption key or similar authentication tool associated with the requested digital content. The DRM agent 22 may then decrypt and/or unencrypt the plurality of segments received from the CDN server 120. In some embodiments, the plurality of segments received from the CDN server 120 may require multiple levels of decryption and/or unencryption using multiple encryption keys and/or different authentication tools.

At block 420, the nDVR playback adapter 125 may generate a digital content stream based at least in part on the decrypted plurality of segments. In some embodiments, the transcoder (s) 220 may transcoding the digital content stream prior to transmitting the stream to the pump 130.

At block 425, the nDVR playback adapter 125 may transmit the digital content stream. In some embodiments, the nDVR playback adapter 125 may transmit the digital content stream to the pump 130. In some embodiments, the nDVR playback adapter 125 may transmit the digital content stream to an nDVR API server 140.

In some embodiments, the trick mode file generator(s) 224 may generate data associated with one or more trick modes based at least in part on the digital content. The generated data may be transmitted with the digital content stream. In some embodiments, the generated data associated with the digital content may be generated and maintained by the nDVR playback adapter 125 and used when requests are received from one or more legacy devices (e.g., STB 165) to effectuate one or more trick modes in association with the digital content.

FIG. 5 is a process flow diagram of an illustrative method 500 for processing QAM content in a system for a network-based digital video recorder playback adapter in accordance with one or more embodiments of the disclosure. At block 505, the legacy adapter home gateway 160 may receive content as QAM payload. In some embodiments, the QAM payload may be received from the QAM 135 module. For example, the home gateway 160 may receive the digital content stream via the pump 130 as described in relation to FIG. 4.

At block 510, the legacy adapter home gateway 160 may process the QAM payload. In some embodiments, the QAM demodulator 316 may process the QAM payload to extract or otherwise obtain the requested digital content from the QAM payload. The segmenter 318 may receive the demodulated digital content from the QAM demodulator 316 and segment or otherwise divide the digital content stream into a plurality of smaller files.

At block 515, the legacy adapter home gateway 160 may generate adaptive bit rate (ABR) transport of content based at least in part on the processed QAM payload. In some embodiments, the home gateway 160 may generate an ABR transport of content based at least in part on the encrypted plurality of segments derived from the digital content stream.

At block 520, the legacy adapter home gateway 160 may encrypt the content. In some embodiments, the encryptor 322 may encrypt the one or more plurality of segments from the segmenter 318 using an authentication tool, such as an encryption key obtained by the DRM agent 324 from a DRM keystore 110.

At block 525, the legacy adapter home gateway 160 may transmit the content to one or more user devices. In some embodiments, the home gateway 160 may transmit the content to one or more IP clients 150, remote set top boxes 155, and/or a set top box 165.

CONCLUSION

The operations and processes described and shown above may be carried out or performed in any suitable order as desired in various implementations. Additionally, in certain implementations, at least a portion of the operations may be carried out in parallel. Furthermore, in certain implementations, less than or more than the operations described may be performed.

Certain aspects of the disclosure are described above with reference to block and flow diagrams of systems, methods, apparatuses, and/or computer program products according to various implementations. It will be understood that one or more blocks of the block diagrams and flow diagrams, and combinations of blocks in the block diagrams and the flow diagrams, respectively, can be implemented by computer-executable program instructions Likewise, some blocks of the block diagrams and flow diagrams may not necessarily need to be performed in the order presented, or may not necessarily need to be performed at all, according to some implementations.

These computer-executable program instructions may be loaded onto a special-purpose computer or other particular machine, a processor, or other programmable data processing apparatus to produce a particular machine, such that the instructions that execute on the computer, processor, or other programmable data processing apparatus create means for implementing one or more functions specified in the flow diagram block or blocks. These computer program instructions may also be stored in a computer-readable storage media or memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable storage media produce an article of manufacture including instruction means that implement one or more functions specified in the flow diagram block or blocks. As an example, certain implementations may provide for a computer program product, comprising a computer-readable storage medium having a computer-readable program code or program instructions implemented therein, said computer-readable program code adapted to be executed to implement one or more functions specified in the flow diagram block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational elements or steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide elements or steps for implementing the functions specified in the flow diagram block or blocks.

Accordingly, blocks of the block diagrams and flow diagrams support combinations of means for performing the specified functions, combinations of elements or steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flow diagrams, and combinations of blocks in the block diagrams and flow diagrams, can be implemented by special-purpose, hardware-based computer systems that perform the specified functions, elements or steps, or combinations of special-purpose hardware and computer instructions.

Conditional language, such as, among others, “can,” “could,” “might,” or “may,” unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain implementations could include, while other implementations do not include, certain features, elements, and/or operations. Thus, such conditional language is not generally intended to imply that features, elements, and/or operations are in any way required for one or more implementations or that one or more implementations necessarily include logic for deciding, with or without user input or prompting, whether these features, elements, and/or operations are included or are to be performed in any particular implementation.

Many modifications and other implementations of the disclosure set forth herein will be apparent having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the disclosure is not to be limited to the specific implementations disclosed and that modifications and other implementations are intended to be included within the scope of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.

Claims

1. A system, comprising:

at least one memory storing computer-executable instructions; and
at least one processor, wherein the at least one processor is configured to access the at least one memory and to execute the computer executable instructions to: receive, from a customer device, a request for digital content; receive a plurality of segment associated with the digital content; generate a content stream based at least in part on the plurality of segments associated with the digital content; and transmit the content stream.

2. The system of claim 1, wherein the at least one processor is further configured to execute the computer-executable instructions to:

obtain an encryption key associated with the digital content; and
decrypt the plurality of segment based at least in part on the encryption key.

3. The system of claim 1, wherein to generate the plurality of segments associated with the digital content, the at least one processor is further configured to execute the computer-executable instructions to:

at least one of decrypt, trans-encapsulate, enrich, or concatenate the plurality of segments associated with the digital content.

4. The system of claim 1, wherein the at least one processor is further configured to execute the computer-executable instructions to:

receive, from the customer device, a request for a listing of available digital content;
receive information associated with the available digital content;
generate the listing of the available digital content; and
transmit the listing of the available digital content.

5. The system of claim 1, wherein the at least one processor is further configured to execute the computer-executable instructions to:

transmit the content stream to a pump.

6. The system of claim 5, wherein the pump facilitates one or more trick-modes associated with the content stream.

7. The system of claim 5, wherein the pump facilitates encoding the content stream.

8. The system of claim 1, wherein the at least one processor is further configured to execute the computer-executable instructions to:

transcode the plurality of segments.

9. The system of claim 1, wherein the request for digital content is a network uniform resource locator (URL) and wherein the at least one processor is further configured to execute the computer-executable instructions to: retrieve the plurality of segments associated with the digital content based at least in part on the network URL.

10. A method comprising:

receiving, from a customer device, a request for digital content;
receiving a plurality of segment associated with the digital content;
generating a content stream based at least in part on the plurality of segments associated with the digital content; and
transmitting the content stream.

11. The method of claim 10, further comprising:

obtaining an encryption key associated with the digital content; and
decrypting the plurality of segment based at least in part on the encryption key.

12. The method of claim 10, wherein generating the plurality of segments associated with the digital content further comprises at least one of decrypting, trans-encapsulating, enriching, or concatenating the plurality of segments associated with the digital content.

13. The method of claim 10, further comprising:

receiving, from the customer device, a request for a listing of available digital content;
receiving information associated with the available digital content;
generating the listing of the available digital content; and
transmitting the listing of the available digital content.

14. The method of claim 10, further comprising:

transmitting the content stream to a pump.

15. The method of claim 14, wherein the pump facilitates one or more trick-modes associated with the content stream.

16. The method of claim 14, wherein the pump facilitates encoding the content stream.

17. The method of claim 10, further comprising:

transcoding the plurality of segments.

18. The method of claim 10, wherein the request for digital content is a network uniform resource locator (URL) and further comprising:

retrieving the plurality of segments associated with the digital content based at least in part on the network URL.

19. A gateway device, comprising:

at least one memory storing computer-executable instructions; and
at least one processor, wherein the at least one processor is configured to access the at least one memory and to execute the computer-executable instructions to: receive content as quadrature amplitude modulation (QAM) payload; process the content; generate transport of content based at least in part on the processed QAM payload; and transmit the content to one or more user devices.

20. The gateway device of claim 19, wherein to process the content, the at least one processor is further configured to execute the computer-executable instructions to:

segment the content; and
encrypt the segmented content.

21. The gateway device of claim 19, wherein the at least one processor is further configured to execute the computer-executable instructions to:

load balance the generation of adaptive bit rate (ABR)-encoded content or transmission of the ABR-encoded content to one or more user devices.

22. The gateway device of claim 19, wherein the at least one processor is further configured to execute the computer-executable instructions to:

generate a list of available content; and
transmit the list of available content to the one or more user devices.
Patent History
Publication number: 20140237505
Type: Application
Filed: Feb 17, 2014
Publication Date: Aug 21, 2014
Applicant: COX COMMUNICATIONS, INC. (Atlanta, GA)
Inventors: Keith Alan Rothschild (Atlanta, GA), Slavisha Karach (Atlanta, GA)
Application Number: 14/182,114
Classifications
Current U.S. Class: With Encryption Or Scrambling Of Video Signal (725/31); Having Link To External Network (e.g., Interconnected Computer Network) (725/109); Link Transmission (e.g., Url Sent To User) (725/112)
International Classification: H04N 21/236 (20060101); H04N 21/238 (20060101); H04N 21/2347 (20060101);