Patent Description:
Cloud-enabled/network-based digital video recording (cDVR) facilitates media content recording and delivery (e.g., playback). A cDVR system often stores media content as a media object that corresponds to a complete recording, such as an entire episode of a television show. Typically, a media object includes a number of discrete media segments. In order to manage (e.g., record, playback, and delete) the discrete media segments, a conventional cDVR system associates each discrete media segment with a corresponding metadata file that describes the media segment. However, the conventional cDVR system utilizes a high level of system resources (e.g., memory and processing resources) and power in storing and processing each corresponding metadata file.

<CIT>, discloses a device and process for data storage and read/write efficiency using adaptive bitrate streaming protocols at client devices.

<CIT> discloses a method and device for sharing segmented video content across multiple manifests.

The cited documents do not disclose storing a plurality of sequential media segments based on a common metadata file. The solutions proposed in these documents rather apply the inverse approach, namely that content is firstly stored and subsequently a common metadata file is generated, e.g. in the form of a manifest file.

The scope of protection of the present invention is as defined in the appended claims. Any embodiments not falling within such scope should be construed as examples which do not describe parts of the invention.

So that the present disclosure can be understood by those of ordinary skill in the art, a more detailed description may be had by reference to aspects of some illustrative embodiments, some of which are shown in the accompanying drawings.

In accordance with common practice, various features illustrated in the drawings may not be drawn to scale. Accordingly, the dimensions of the various features may be arbitrarily expanded or reduced for clarity. In addition, some of the drawings may not depict all of the components of a given system, method or device. Finally, like reference numerals may be used to denote like features throughout the specification and figures.

Numerous details are described in order to provide a thorough understanding of the example embodiments shown in the drawings. However, the drawings merely show some example aspects of the present disclosure and are therefore not to be considered limiting. Those of ordinary skill in the art will appreciate that other effective aspects and/or variants do not include all of the specific details described herein. Moreover, well-known systems, methods, components, devices, and circuits have not been described in exhaustive detail so as not to obscure more pertinent aspects of the example embodiments described herein.

Techniques for managing (e.g., storing, playing back, and deleting) a media object in a more efficient manner are described herein. Namely, various methods, systems (e.g., cDVR systems), and apparatuses include generating and utilizing a single, common metadata file for a media object. The media object includes sequencing information associated with multiple sequential media segments of the media object.

To that end, in accordance with some embodiments, a method is performed at an electronic device with one or more processors and a non-transitory memory, such as at a cDVR recorder (e.g., storage and playback system). The method includes receiving a request to initiate recording of a media object. The media object includes a first plurality of sequential media segments. The first plurality of sequential media segments is associated with a corresponding plurality of metadata files. In some embodiments, a portion of the corresponding plurality of metadata files are respectively associated with a plurality of metadata records. Each of the corresponding plurality of metadata files provides a description of a respective one of the first plurality of sequential media segments. The method includes generating, in response to receiving the request to initiate recording of the media object, a first common metadata file that is associated with the media object as a function of the corresponding plurality of metadata files. The first common metadata file includes sequencing information associated with the first plurality of sequential media segments. The method includes storing the first plurality of sequential media segments based on the sequencing information included in the first common metadata file.

In accordance with some embodiments, an electronic device includes one or more processors and a non-transitory memory. The one or more programs are stored in the non-transitory memory and configured to be executed by the one or more processors and the one or more programs include instructions for performing or causing performance of the operations of any of the methods described herein. In accordance with some embodiments, a non-transitory computer readable storage medium has stored therein instructions which when executed by one or more processors of an electronic device, cause the device to perform or cause performance of the operations of any of the methods described herein. In accordance with some embodiments, an electronic device includes means for performing or causing performance of the operations of any of the methods described herein. In accordance with some embodiments, an information processing apparatus, for use in an electronic device, includes means for performing or causing performance of the operations of any of the methods described herein.

A cDVR system facilitates recording and playback of media content. In some systems, media content is often stored as a media object that corresponds to a complete recording, such as an entire episode of a television show. Typically, a media object includes a number of discrete media segments. For example, a cDVR system may record every two seconds of a television show. In an adaptive bit rate (ABR) environment, the cDVR system records a plurality of discrete media segments respectively corresponding to a plurality of different representations (e.g., different encoding rates providing resolution of 720p, 1080p, <NUM>) of the same media content.

A cDVR system typically includes a storage system and a sequencing system for sequencing the discrete media segments based on the corresponding metadata files. In order to manage (e.g., record, playback, and delete) the discrete media segments, the cDVR system associates each discrete media segment with a corresponding metadata file that describes the media segment. For example, a metadata file includes a source identifier, a recording identifier, and a segment identifier. However, because a separate metadata file is associated with each discrete media segment, the storage system often requires a large storage capacity in order to store the relatively high number of metadata files. Moreover, the required storage capacity is even higher for cases in which multiple representations of the same media object are stored. Additionally, the sequencing system utilizes a large amount of computational resources (e.g., processing resources and power) when performing complex sequencing operations with respect to the media segments, based on corresponding metadata files. For example, in order to delete a media object, a system processes a number of separate delete requests corresponding to the number of media segments in the media object. Moreover, the storage and processing challenges resulting from using per-segment metadata files are amplified in unique copy systems, as a distinct set of metadata files is stored for each recording identifier (e.g., each user profile). The high storage demands and high processing demands prevent effective scaling of the system.

<FIG> is a block diagram of a cloud-based digital video recording (cDVR) operating environment <NUM>. Briefly, a content acquisition platform (CAP) <NUM> can communicate with a cDVR system <NUM>, which includes a media store <NUM> for storing media content, such as a television show. The cDVR system <NUM> often stores media content as a media object that corresponds to a complete recording, such as an entire episode of a television show. Typically, a media object includes a number of discrete media segments. One or more client devices <NUM> can communicate over one or more networks <NUM> with the cDVR system <NUM>.

The CAP <NUM> includes one or more computing devices that provide content streaming (real-time and/or non-real-time content delivery), the delivery of stored and/or recorded discrete media segments, or the like. Additionally, the CAP <NUM> acquires and transcodes discrete media segments and optionally protects and encrypts the discrete media segments. The cDVR system <NUM> may include one or more edge servers, one or more routers and/or bridges, one or more data center servers, one or more content databases, and/or one or more content servers. The various elements of the cDVR system <NUM> can cooperate to receive discrete media segments from the CAP <NUM> and appropriately cache the discrete media segments for access by the one or more client devices <NUM>.

The cDVR system <NUM> stores records associated with user accounts and discrete media segments associated with the user accounts on magnetic recording and reproducing devices, such as the media store <NUM>. The media store <NUM> includes one or more hard disk drives, which may be controlled by various hard disk controllers.

In order to facilitate management (e.g., recording, playback, and deletion) of discrete media segments, the cDVR system <NUM> includes a metadata management controller <NUM>. The metadata management controller <NUM> performs sequencing with respect to a plurality of discrete media segments based on a corresponding plurality of metadata files. Each metadata file describes a corresponding discrete media segment and each metadata file is stored on the cDVR system <NUM>. For example, in order to store five discrete media segments of a media object (e.g., the first <NUM> seconds of a television show), the metadata management controller <NUM> performs five sequencing operations on the five discrete media segments. For each of the five sequencing operations, the metadata management controller <NUM> processes a corresponding metadata file.

The cDVR system <NUM> includes one or more processors <NUM>, one or more memories <NUM>, one or more input/output (I/O) interfaces <NUM>, and one or more communication interfaces <NUM>. The one or more processors <NUM> can individually comprise one or more cores and can be configured to access and execute, at least in part, instructions stored in the one or more memories <NUM>. The one or more memories <NUM> include one or more non-transitory computer readable storage media (CRSM). The one or more memories <NUM> can include, but are not limited to, random access memory (RAM), flash RAM, magnetic media, optical media, and so forth. The one or more memories <NUM> can be volatile in that information is retained while providing power or nonvolatile in that information is retained without providing power.

The one or more memories <NUM> store instructions for execution by the processor <NUM> in order to perform certain actions or functions. These instructions can include an operating system (OS) <NUM> configured to manage hardware resources, such as the I/O interfaces <NUM>, and provide various services to applications executing on the processor <NUM>. The one or more memories <NUM> can also store data files including information about the operating system <NUM>.

The one or more client devices <NUM> communicate over one or more networks <NUM> with the cDVR system <NUM>. The one or more client devices <NUM> include, but are not limited to, a set top-box (STB), smartphones, laptop computers, tablets, electronic book reading devices, processor-based devices, or the like. The one or more client devices <NUM> communicate with the cDVR system <NUM> over the one or more types of networks <NUM>, such as a Wi-Fi network, a Wi-Fi Direct network, BLUETOOH, a radio network, a cellular network (e.g., third generation, fourth generation (e.g., LTE), and/or fifth generation (<NUM>)), a satellite network, a cable network, a landline-based network, the Internet, intranets, a telephone network, a television network, data networks, or other communication mediums connecting multiple computing devices to one another, as non-limiting examples.

The one or more client devices <NUM> each include one or more processors <NUM>, one or more memories <NUM>, data storage <NUM>, one or more input/output (I/O) interfaces <NUM>, and one or more communication interfaces <NUM>. The one or more processors <NUM> can individually comprise one or more cores and can be configured to access and execute, at least in part, instructions stored in the one or more memories <NUM>. The one or more memories <NUM> include one or more non-transitory computer readable storage media (CRSM). The one or more memories <NUM> can include, but are not limited to, random access memory (RAM), flash RAM, magnetic media, optical media, and so forth. The one or more memories <NUM> can be volatile in that information is retained while providing power or nonvolatile in that information is retained without providing power.

The one or more communication interfaces <NUM> provide for the transfer of data between the client device <NUM> and another device directly, via a network, or both. The communication interfaces <NUM> can include, but are not limited to, personal area networks (PANs), wired local area networks (LANs), wireless local area networks (WLANs), wireless wide area networks (WWANs), and so forth. The one or more communication interfaces <NUM> can utilize acoustic, radio frequency, optical, or other signals to exchange data between the one or more client devices <NUM> and another device such as an access point, a host computer, a router, an e-reader device, another one of the one or more client devices <NUM>, and the like.

The one or more memories <NUM> store instructions for execution by the processor <NUM> in order to perform certain actions or functions. These instructions can include an operating system (OS) <NUM> configured to manage hardware resources, such as the I/O interfaces <NUM>, and provide various services to applications executing on the processor <NUM>. The one or more memories <NUM> can also store data files <NUM> including information about the operating system <NUM>.

The one or more memories <NUM> store a cDVR client <NUM>. The cDVR client <NUM> can receive or access information associated with the cDVR operating environment <NUM>. The cDVR client <NUM> can communicate over the one or more networks <NUM> with the cDVR system <NUM>. The memory <NUM> stores manifest data accessible to the cDVR client <NUM>, where the manifest data is provided to enable the client device <NUM> to specify media segments when requesting a recorded media segment.

The one or more memories <NUM> store a live client <NUM>. The live client <NUM> can receive information collected or generated by the cDVR client <NUM>. The live client <NUM> can be in communication over one or more networks <NUM> with the cDVR system <NUM>.

The one or more memories <NUM> store a cDVR client application <NUM>. The cDVR client application <NUM> can receive requests from one or more client devices <NUM>, schedule recordings, perform validation checks, perform quality control checks, and perform other cDVR functionality. The cDVR client application <NUM> communicates over the one or more networks <NUM> with the one or more client devices <NUM> or other devices in the cDVR operating environment <NUM>.

The one or more memories <NUM> store an adaptive bit-rate (ABR) application <NUM>. The ABR application <NUM> can receive information associated with the network connection quality and/or the client device <NUM> to determine an adaptive bit-rate associated with the client device <NUM>. The ABR application <NUM> can determine an optimal set of bitrates associated with a particular device class associated with the client device <NUM> based at least in part on the information associated with the client device <NUM>, the information associated with the network connection quality of the client device <NUM>, the received request from the client device <NUM>, and/or a user account profile associated with the client device <NUM>.

The cDVR system <NUM> is in communication with the content experience platform (CEP) <NUM>. The CEP <NUM> can provide guide data (e.g., linear video metadata management), include application interface servers (e.g., API servers or "app servers" for linear and on-demand services), and/or provide a content and service protection platform (e.g., a combination of privacy, network security, conditional access, and content protection of digital rights components). For example, the CEP <NUM> communicates to the cDVR system <NUM> that a unique-copy modality is required, and thus the cDVR system <NUM> stores, for a particular media object, a unique copy of distinct media segments on a per client device basis or on a per subscriber (e.g., per user account) basis.

The cDVR system <NUM> manages source data, which can describe where the source is located, and any information that can be requested by a user in association with the distinct media segment (e.g., rating information for the distinct media segment, duration of the distinct media segment, date the distinct media segment was recorded, and the like). For example, the cDVR system <NUM> stores the current segment duration for each of one or more sources. Other characteristics can also be stored in association with the distinct media segment. The cDVR system <NUM> can store information indicating whether to store a segment in a manner so that a user can receive a copy of the segment or if a segment can be shared by multiple users.

The cDVR client <NUM> generates and transmits a request to the cDVR client application <NUM> for a list of distinct media segment associated with the user account associated with the client device <NUM>. The cDVR client application <NUM> can retrieve or otherwise obtain information other components within the cDVR system <NUM> and generate a list of all distinct media segment associated with the user account and metadata associated with the distinct media segment. For example, the metadata can include, but is not limited to, availability of the distinct media segment, quota information associated with the distinct media segment, or the like. The list of the distinct media segment associated with a user account, recording state, and quota information can be compiled and transmitted to the cDVR client <NUM> of a client device <NUM>.

<FIG> is a data flow diagram associated with multiple playback requests in a cDVR operating environment <NUM>. Briefly, the cDVR operating environment <NUM> includes a cDVR system <NUM> that processes multiple playback requests on a corresponding per metadata file basis. Briefly, the cDVR system <NUM> includes a metadata management controller <NUM> that performs sequencing operations with respect to media segments in response to various playback requests. The metadata management controller <NUM> performs sequencing operations based on metadata <NUM> that is stored on the cDVR system <NUM>.

Namely, the metadata management controller <NUM> receives a plurality of requests <NUM>-<NUM>-<NUM>-N to playback a corresponding plurality of media segments <NUM>-<NUM>-<NUM>-N stored on the cDVR system <NUM>. For example, each of the plurality of media segments <NUM>-<NUM>-<NUM>-N corresponds to a distinct representation of a media object, which itself may correspond to a complete recording of a television program. For example, the first media segment <NUM>-<NUM> represents the first two seconds of the media object, the second media segment <NUM>-<NUM> represents the second two seconds of the media object, etc. Additionally, as illustrated in <FIG>, each of the plurality of media segments <NUM>-<NUM>-<NUM>-N is associated with a 720p video resolution. One of ordinary skill in the art will appreciate that, in other circumstances, the video resolution of the segments is different.

In order to process the plurality of requests <NUM>-<NUM>-<NUM>-N, the metadata management controller <NUM> obtains metadata <NUM> that is stored on the cDVR system <NUM>. The metadata <NUM> including a plurality of metadata files <NUM>-<NUM>-<NUM>-N respectively associated with the plurality of media segments <NUM>-<NUM>-<NUM>-N. Specifically, the metadata <NUM> includes a first metadata file <NUM>-<NUM> that describes the first media segment <NUM>-<NUM>, a second metadata file <NUM>-<NUM> that describes the second media segment <NUM>-<NUM>, etc. Thus, in response to receiving a request <NUM>-<NUM> to playback a 720p representation of the first media segment, the metadata management controller <NUM> obtains and processes the first metadata file <NUM>-<NUM> in order to enable retrieval of the first media segment <NUM>-<NUM> stored on the cDVR system <NUM>. Accordingly, for a particular media segment, the cDVR system <NUM> stores a corresponding metadata file, and the metadata management controller <NUM> processes the corresponding metadata file in response to receiving a request associated with the particular media segment. Moreover, in an ABR environment, the metadata <NUM> additionally includes a separate plurality of metadata files for each additional encoding rate. Thus, in a 1080p-<NUM> dual encoding rate environment involving a recording request of <NUM> media segments, the cDVR system <NUM> stores <NUM> metadata files associated with the 1080p representation and another <NUM> metadata files associated with the <NUM> representation.

Reference will now be made to embodiments that provide improvements in storage and processing utilization with respect to a cDVR environment. Examples of the embodiments are illustrated in the accompanying drawings. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the various described embodiments.

In contrast to managing media segments on a corresponding per metadata file basis as described with reference to <FIG> and <FIG>, various embodiments disclosed herein include methods, cDVR systems, and apparatuses for generating and using a common metadata file. The common metadata file includes sequencing information associated with a plurality of sequential media segments, such as a combination of temporal information and sparse distinguishing metadata (e.g., identifying a first segment of a media object). Based on the sequencing information, a method includes storing the plurality of sequential media segments at, for example, a storage device that is separate from a recording agent or a playback agent. In some embodiments, the method includes recording the media object at different representations (e.g., different video resolutions, such as 720p, 1080p, <NUM>) by generating and utilizing a separate common metadata file for each representation. In some unique-copy circumstances (e.g., as required by law), the method includes utilizing the sequencing information included in the common metadata file, and utilizing limited additional information (e.g., recording identifier of an additional client) in order to store a unique copy of the plurality of sequential media segments. Accordingly, as compared with some cDVR systems that store and utilize a plurality of metadata files corresponding to a plurality of media segments, a smaller, common metadata file is stored and utilized. Thus, various embodiments disclosed herein utilize less storage and processing resources.

<FIG> is an example of a cDVR environment <NUM> for storing a media object <NUM> in accordance with some embodiments. Briefly, the cDVR environment <NUM> includes a cDVR system <NUM> for storing the media object <NUM> that includes a plurality of sequential media segments based on sequencing information included in a common metadata file <NUM>.

The cDVR environment <NUM> includes a common metadata file generator <NUM>. In some embodiments, as illustrated in <FIG>, the common metadata file generator <NUM> is separate from (e.g., located on a different device than) the cDVR system <NUM>. In some embodiments, the common metadata file generator <NUM> is integrated within the cDVR system <NUM>.

The common metadata file generator <NUM> generates the common metadata file <NUM> from a plurality of metadata files <NUM>-<NUM>-<NUM>-M. The common metadata file <NUM> includes sequencing information associated with the plurality of sequential media segments, which will be detailed below. The plurality of metadata files <NUM>-<NUM>-<NUM>-M is respectively associated with a plurality of sequential media segments included in the media object <NUM>. Each of the plurality of metadata files <NUM>-<NUM>-<NUM>-M provides a description of a respective one of the plurality of sequential media segments. In some embodiments, the common metadata file generator <NUM> generates the common metadata file <NUM> by concatenating the plurality of metadata files <NUM>-<NUM>-<NUM>-M. In some embodiments, the common metadata file generator <NUM> generates the common metadata file <NUM> by aggregating the plurality of metadata files <NUM>-<NUM>-<NUM>-M together.

In some embodiments, the sequencing information includes temporal information associated with the media object <NUM>. For example, the temporal information includes a temporal range (e.g., length of recording) and/or a start time value and stop time value. In some embodiments, the sequencing information includes a first segment identifier (e.g., a presentation time stamp (PTS)) associated with a first one of the plurality of sequential media segments. For example, the first one of the plurality of sequential media segments is the chronologically first segment of a television program (e.g., the opening credits). The temporal information can indicate the time span of the recording in a variety of ways. In some embodiments, the temporal information indicates one or more standard programming slots (e.g., <NUM>:<NUM> pm to <NUM>:<NUM> pm and <NUM>:<NUM> pm to <NUM>:<NUM> pm) and the cDVR system <NUM> determines the time span of the recording based on the programming slot.

In some embodiments, the common metadata file <NUM> includes a source identifier that identifies a source associated with the media object <NUM>, such a particular television channel. For example, the source identifier indicates a broadcast channel or sub-channel (also referred to as profiles). In some embodiments, a broadcast channel can include sub-channels with multiple versions of the same broadcast. For example, the broadcast channel can include sub-channels (also referred to as channels) with video data at different bitrates or with different audio/subtitles. Thus, in some embodiments, the source identifier indicates a broadcast channel and a recording request further includes data indicating the sub-channel or profile. In some embodiments, the source identifier indicates the sub-channel or profile.

In some embodiments, the common metadata file <NUM> includes a recording identifier associated with the media object <NUM>, such as a user profile identifier (e.g., a user's credential) or a subscriber identifier. In some embodiments, the recording identifier may be different for each recording request. For example, the recording identifier can be a UUID (universally unique identifier). In some embodiments, the request identifier includes a user ID or, at least, indicates a user identifier or user device (such as a set-top box).

In some embodiments, the common metadata file <NUM> includes an encoding rate identifier, such as "480p," "1080p," etc. for different video resolutions.

The cDVR system <NUM> obtains the plurality of sequential media segments (to be stored in a media object datastore <NUM>), and obtains the common metadata file <NUM>. In some embodiments, a common metadata file datastore <NUM> stores the common metadata file <NUM>. The common metadata file <NUM> is smaller in size (e.g., requires less storage space) than the sum of respective sizes of the plurality of metadata files <NUM>-<NUM>-<NUM>-M. Accordingly, as compared with the cDVR system <NUM> in <FIG>, the cDVR system <NUM> utilizes less storage resources in storing metadata for processing (e.g., storing, playing back, and deleting) media segments of a media object.

The cDVR system <NUM> includes a media segment concatenator <NUM>. The media segment concatenator <NUM> stores the plurality of sequential media segments in the media object datastore <NUM> based on the sequencing information included in the common metadata file <NUM>. Because the media segment concatenator <NUM> processes the single, common metadata file <NUM>, the media segment concatenator <NUM> utilizes less processing resources than the metadata management controller <NUM> in <FIG>, which processes a plurality of metadata files <NUM>-<NUM>-<NUM>-N.

In some embodiments, the media segment concatenator <NUM> generates a map that maps the sequencing information to an address range, and stores the plurality of sequential media segments at the address range. For example, in some embodiments, the map includes a plurality of logical byte offset values. As another example, in some embodiments, the address range corresponds to a contiguous address range.

<FIG> is an example of a block diagram of a first cDVR system 400A operating in a common copy mode in accordance with some embodiments. According to various embodiments, the first cDVR system 400A is similar to and adapted from the cDVR system <NUM> in <FIG>. While certain specific features are illustrated, those of ordinary skill in the art will appreciate from the present disclosure that various other features have not been illustrated for the sake of brevity and so as not to obscure more pertinent aspects of the example embodiments disclosed herein.

With respect to recording operations, the first cDVR system 400A includes an ingester <NUM> that receives data <NUM> (e.g., from the content acquisition platform <NUM>), a recording agent <NUM> that receives one or more record request(s) <NUM> to store the data <NUM>, and a media object datastore <NUM> that stores the data <NUM>. The media object datastore <NUM> includes a number of storage locations at which media objects can be stored. The media object datastore <NUM> stores, among other things, common copies of different media objects (e.g., different episodes of a television show or different television shows). For example, a particular common copy of a media object corresponds to a sports program requested to be recorded by multiple subscribers. Accordingly, during playback, the first cDVR system 400A may retrieve the particular common copy multiple times for the multiple subscribers.

In some embodiments, the recording agent <NUM> includes a common metadata file generator (e.g., the common metadata file generator <NUM> in <FIG>) that generates and stores a plurality of common metadata files into a common metadata files datastore <NUM>. Each of the plurality of common metadata files is associated with a corresponding media object. Accordingly, each of the plurality of common metadata files includes sequencing information associated with a respective plurality of sequential media segments included in the corresponding media object.

Moreover, in some embodiments, the recording agent <NUM> includes a media segment concatenator (e.g., the media segment concatenator <NUM> in <FIG>) that processes incoming sequential media segments based a corresponding one of the plurality of common metadata files. For example, in response to receiving a request <NUM> to record a first media object including a first plurality of sequential media segments, the recording agent <NUM> generates a corresponding common metadata file and stores the common metadata file into the common metadata files datastore <NUM>. Continuing with this example, the recording agent <NUM> stores the first plurality of sequential media segments based on sequencing information included in the corresponding metadata file.

With respect to playback operations, the first cDVR system 400A includes a playback agent <NUM> that receives one or more playback request(s) <NUM> to playback (e.g., retrieve) one or more media objects from the media object datastore <NUM>. In response to receiving the one or more playback request(s) <NUM>, the playback agent <NUM> retrieves a corresponding common copy from the media object datastore <NUM> and outputs the corresponding common copy of the media object <NUM>.

In some embodiments, the playback agent <NUM> includes a media segment concatenator (e.g., the media segment concatenator <NUM> in <FIG>) that obtains, from the common metadata files datastore <NUM>, the plurality of common metadata files and utilizes a portion thereof. For example, in response to receiving a request <NUM> to playback a first media object including a first plurality of sequential media segments, the playback agent <NUM> identifies a corresponding one of the plurality of common metadata files. Continuing with this example, the playback agent <NUM> retrieves the first plurality of sequential media segments based on sequencing information included in the corresponding one of the plurality of common metadata files.

<FIG> is an example of a block diagram of a second cDVR system 400B operating in a unique copy mode in accordance with some embodiments. While certain specific features are illustrated, those of ordinary skill in the art will appreciate from the present disclosure that various other features have not been illustrated for the sake of brevity and so as not to obscure more pertinent aspects of the example embodiments disclosed herein. For example, the second cDVR system 400B includes some of the components included within the first cDVR system 400A, and thus discussion of the components are omitted for the sake of brevity.

In contrast to the first cDVR system 400A, the second cDVR system 400B operates in a unique copy mode, such as according to requirements imposed by copyright law. Accordingly, as illustrated in <FIG>, the second cDVR system 400B stores, within the media object datastore <NUM>, a plurality of unique copies of a media object. For example, the second cDVR system 400B receives, from a logical client <NUM>, a recording request <NUM> that includes a plurality of recording identifiers that respectively identify a plurality of subscribers <NUM>-<NUM>-<NUM>-<NUM>. In some embodiments, the logical client <NUM> corresponds to a head-end device. In some embodiments, the plurality of subscribers <NUM>-<NUM>-<NUM>-O is associated with a plurality of user profiles.

The second cDVR system 400B manages (e.g., records, plays back, and deletes) media segments based on sequencing information within the common metadata file <NUM>, as described with respect to <FIG>, and based on distinguishing metadata <NUM>. The distinguishing metadata <NUM> distinguishes the plurality of subscribers <NUM>-<NUM>-<NUM>-O (e.g., plurality of user profiles) from each other. For example, in some embodiments, the distinguishing metadata <NUM> includes a plurality of metadata files (e.g., stored in a corresponding plurality of metadata file datastores <NUM>-<NUM>-<NUM>-<NUM>) that respectively identify the plurality of subscribers <NUM>-<NUM>-<NUM>-<NUM>. For example, each of the plurality of metadata files <NUM>-<NUM>-<NUM>-<NUM> includes a respective recording identifier. Thus, continuing with this example, each of the recording agent <NUM> and the playback agent <NUM> compares the plurality of recording identifiers within the distinguishing metadata against recording identifiers included in the recording request <NUM> in order to facilitate recording and playback operations, respectively. Accordingly, in some embodiments, the second cDVR system 400B utilizes a combination of the common metadata file <NUM> and the plurality of metadata files <NUM>-<NUM>-<NUM>-<NUM>. Nevertheless, the second cDVR system 400B utilizes less storage and processing resources than the cDVR system <NUM> illustrated in <FIG> because the cDVR system <NUM> utilizes A x B number of total metadata files, where A is the number of media segments in a media object and B is the number of subscribers identified in a corresponding request.

<FIG> is an example of a block diagram of a cDVR system <NUM> satisfying playback requests requesting different representations of a media object in accordance with some embodiments. For example, in some embodiments, the cDVR system <NUM> operates in an ABR mode. According to various embodiments, the cDVR system <NUM> is similar to and adapted from the cDVR system <NUM> in <FIG>. According to various embodiments, the cDVR system <NUM> is similar to and adapted from the first cDVR system 400A in <FIG>. According to various embodiments, the cDVR system <NUM> is similar to and adapted from the second cDVR system 400B in <FIG>. While certain specific features are illustrated, those of ordinary skill in the art will appreciate from the present disclosure that various other features have not been illustrated for the sake of brevity and so as not to obscure more pertinent aspects of the example embodiments disclosed herein.

According to various embodiments, the cDVR system <NUM> utilizes a plurality of common metadata files respectively associated with a plurality of representations of a media object. In some embodiments, each of the plurality of representations is associated with a different encoding rate, resolution, audio quality, or a combination thereof. For example, as illustrated in <FIG>, the cDVR system <NUM> includes a first common metadata file datastore <NUM>-<NUM> that stores a first common metadata file associated with a 720p video resolution of the media object. The cDVR system <NUM> includes a second common metadata file datastore <NUM>-<NUM> that stores a second common metadata file associated with a 1080p video resolution of the media object. The cDVR system <NUM> includes a third common metadata file datastore <NUM>-<NUM> that stores a third common metadata file associated with a <NUM> video resolution of the media object. One of ordinary skill in the art will appreciate, in some embodiments, the cDVR system <NUM> stores and utilizes more or fewer common metadata files, such as associated with different video resolutions, audio rates, etc..

The cDVR system <NUM> receives a playback request <NUM> requesting playback of the media at the 720p resolution. In response to receiving the playback request <NUM>, the cDVR system <NUM> identifies the first common first common metadata file that is associated with the 720p resolution and obtains the first common first common metadata file from the first common metadata file datastore <NUM>-<NUM>. The first common first common metadata file includes sequencing instructions that enable the cDVR system <NUM> to retrieve 720p media segments from a media object datastore <NUM>. The cDVR system <NUM> provides the 720p media object <NUM> to the requesting entity for playback. In some embodiments, the cDVR system <NUM> generates a map that maps the sequencing information to byte values associated with the media object datastore <NUM>.

The cDVR system <NUM> also receives a playback request <NUM> requesting playback of the media at the 1080p resolution and a playback request <NUM> requesting playback of the media at the <NUM> resolution. Accordingly, the cDVR system <NUM> obtains the second common metadata file <NUM>-<NUM> and the third common metadata file <NUM>-<NUM>, respectively, and provides a corresponding 1080p media object <NUM> and a <NUM> media object <NUM> similar to as discussed above with respect to satisfying the playback request <NUM> for the 720p media object.

Accordingly, the cDVR system <NUM> utilizes (e.g., stores and processes) a single common metadata file per representation of a media object. Other cDVR systems, on the other hand, utilize a B x C number of total metadata files for satisfying requests for different representations of media objects, wherein B is the number of metadata files associated with a number of media segments within a media object and C is the number of different representations. Thus, as compared with other cDVR systems, the cDVR system <NUM> utilizes less storage and processing resources.

<FIG> is an example of a flow diagram of a method <NUM> of managing media segments using a common metadata file in accordance with some embodiments. In some embodiments, the method <NUM> or portions thereof is performed at the cDVR system <NUM> in <FIG>, the first cDVR system 400A in <FIG>, the second cDVR system 400B in <FIG>, or the cDVR system <NUM> in <FIG>. In some embodiments, the method <NUM> or portions thereof are performed by an electronic device or an apparatus.

As represented by block <NUM>, the method <NUM> includes receiving a request to initiate recording of a media object, such as the record request <NUM> in <FIG> and <FIG>. As represented by block <NUM>, the media object includes a first plurality of sequential media segments. The first plurality of sequential media segments is associated with a corresponding plurality of metadata files, and each of the corresponding plurality of metadata files provides a description of a respective one of the first plurality of sequential media segments. In some embodiments, a portion of the corresponding plurality of metadata files are respectively associated with a plurality of metadata records. For example, the media object is a complete (e.g., entire) recording. In some embodiments, a recording agent, which is separate from a storage device, receives the request. In some embodiments, the request is idempotent, such as a HTTP PUT request. In some embodiments, the request is not idempotent, such as a HTTP POST request, in which case successive requests may change the result caused by the initial request.

As represented by block <NUM>, the method <NUM> includes generating, in response to receiving the request to initiate recording of the media object, a first common metadata file that is associated with the media object as a function of the corresponding plurality of metadata files. For example, with reference to <FIG>, the common metadata file generator <NUM> generates the common metadata file <NUM>. The first common metadata file is smaller than the sum of the corresponding plurality of metadata files.

As represented by block <NUM>, the first common metadata file includes sequencing information associated with the first plurality of sequential media segments. In some embodiments, the sequencing information includes object size information that indicates the total size of the first plurality of sequential media segments. In some embodiments, the sequencing information includes segment number information indicative of the number of the first plurality of sequential media segments.

As represented by block <NUM>, in some embodiments, the method <NUM> includes generating a map that maps the sequencing information to an address range. In some embodiments, the map is maintained at a storage device separate from a recording agent or from a playback agent. For example, the address range corresponds to bytes on a disc. As represented by block <NUM>, in some embodiments, the map includes a plurality of logical byte offset values. In some embodiments, the address range is a contiguous address range.

As represented by block <NUM>, the method <NUM> includes storing the first plurality of sequential media segments based on the sequencing information included in the first common metadata file. In some embodiments, a storage device stores the first plurality of sequential media segments. For example, with reference to <FIG>, the media segment concatenator <NUM> stores, within the media object datastore <NUM>, a first plurality of sequential media segments based on the sequencing information stored at the common metadata file datastore <NUM>. As another example, with reference to <FIG> and <FIG>, the method <NUM> includes storing, within the media object datastore <NUM>, the first plurality of sequential media segments based on the sequencing information stored at the common metadata file datastore <NUM>. Accordingly, in some embodiments, the method <NUM> provides on-the-fly flattening of media segments that are described by the first common metadata file. For example, in some embodiments, the one-the-fly flattening of the media segments includes concatenating the media segments based on the sequencing information. As represented by block <NUM>, in some embodiments, storing the first plurality of sequential media segments includes storing the first plurality of sequential media segments at the address range.

As represented by block <NUM>, in some embodiments, the method <NUM> includes receiving a request to initiate playback of the media object. For example, with reference to <FIG>, the cDVR system <NUM> receives different playback requests <NUM>-<NUM> associated with different representations of the media object. In some embodiments, the playback request is associated with a single representation, such as a single user profile. In some embodiments, the playback request is received at a playback agent, which may be separate from the storage device. In some embodiments, the playback request is a GET request. In some embodiments, the playback request is received from a logical client (e.g., the logical client <NUM> in <FIG>) that communicates with a plurality of subscribers (e.g., the plurality of subscribers <NUM>-<NUM>-<NUM>-<NUM> in <FIG>). In some embodiments, the playback request is received directly from a particular subscriber. As represented by block <NUM>, in some embodiments, the method <NUM> includes, in response to receiving the request to initiate playback of the media object, retrieving the first plurality of sequential media segments at the address range indicated by the map, and providing the first plurality of sequential media segments for playback. For example, with reference to <FIG>, the second cDVR system 400B provides a playback media object <NUM> to the logical client <NUM>.

In some implementations, the method <NUM> includes flattening media segments in order to enable more efficient playback of sequential media segments. For example, the method <NUM> includes flattening <NUM>, <NUM> sequential media segments by sequentially storing the <NUM> sequential media segments in a <NUM> memory block. Thus, the first <NUM> of the <NUM> memory block includes the first <NUM> sequential media segment, the second <NUM> of the <NUM> memory block includes the second <NUM> sequential media segment, etc. In some implementations, in response to receiving a request to playback the first <NUM> sequential media segment, the method <NUM> includes performing an I/O operation with respect to the <NUM> memory block, and retrieving the first <NUM> sequential media segment for playback based on the I/O operation. For example, performing the I/O operation includes copying the contents of the <NUM> memory block into a RAM, and retrieving the first <NUM> sequential media segment includes reading out the first <NUM> sequential media segment from the RAM. In response to playback requests of subsequent sequential media segments, such as the second <NUM> sequential media segment, the third <NUM> sequential media segment, etc., the method <NUM> includes reading out the respective sequential media segments from the RAM, without having to perform additional I/O operations. For example, the method <NUM> includes using one or more offset byte values in order to read sequential media segments from the RAM. Thus, the methods <NUM> enables a more efficient playback operation than other cDVR systems, in which a separate I/O operation is performed for each playback request of a media segment.

As represented by block <NUM>, in some embodiments, the method <NUM> includes receiving a request to delete a particular one of the plurality of sequential media segments. As represented by block <NUM>, in some embodiments, the method <NUM> includes determining, based on contents of the request to delete, that the particular one of the plurality of sequential media segments is associated with the media object. Moreover, in response to determining that the particular one of the plurality of sequential media segments is associated with the media object, the method <NUM> includes removing the plurality of sequential media segments included in the media object. In some embodiments, the contents of the request to delete include source information associated with the media object, start time information associated with the media object, and stop time information associated with the media object. Thus, in contrast to other cDVR systems in which multiple delete requests are utilized in order to trigger deletion operations of corresponding multiple media segments, the method <NUM> enables processing of a single delete request in order to remove a plurality of media segments. Accordingly, the method <NUM> utilizes less storage and processing resources, enabling a more efficient lifecycle for a corresponding cDVR system. In contrast to features described with reference to the method <NUM>, other cDVR systems receive numerous delete requests corresponding to the number of media segments to be deleted, such as <NUM>,<NUM> separate delete requests for a media object including <NUM>,<NUM> media segments. Thus, the features of the method <NUM> utilize less processing and storage in performing a deletion of a media object resources than the other cDVR systems.

<FIG> is an example of a flow diagram of a method <NUM> of storing different representations of media segments using different common metadata files in accordance with some embodiments. In some embodiments, the method <NUM> or portions thereof is performed at the cDVR system <NUM> in <FIG>, the first cDVR system 400A in <FIG>, the second cDVR system 400B in <FIG>, or the cDVR system <NUM> in <FIG>. In some embodiments, the method <NUM> or portions thereof is performed by an electronic device or an apparatus.

As represented by block <NUM>, the method <NUM> includes receiving a request to initiate recording of a media object. As represented by block <NUM>, the media object includes a first plurality of sequential media segments. As represented by block <NUM>, the first plurality of sequential media segments is characterized by a first representation, such as a video resolution, audio resolution, a combination thereof, etc. For example, with reference to <FIG>, the first plurality of sequential media segments corresponds to the plurality of media segments associated with a 720p video resolution, stored within the media object datastore <NUM>.

As represented by block <NUM>, the media object also includes a second plurality of sequential media segments. As represented by block <NUM>, the second plurality of sequential media segments is characterized by a second representation that is different from the first representation. The second plurality of sequential media segments is associated with a second corresponding plurality of metadata files. Each of the second corresponding plurality of metadata files provides a description of a respective one of the second plurality of sequential media segments. For example, with reference to <FIG>, the second plurality of sequential media segments corresponds to the plurality of media segments associated with a 1080p video resolution, stored within the media object datastore <NUM>. In some embodiments, the first and second representations are utilized according to ABR implementations.

As represented by block <NUM>, in some embodiments, the method <NUM> includes generating, in response to receiving the request to initiate recording of the media object, a first common metadata file that is associated with the media object. The method <NUM> includes generating the first common metadata file as a function of the corresponding plurality of metadata files associated with the first plurality of sequential media segments. The first common metadata file includes sequencing information associated with the first plurality of sequential media segments. As represented by block <NUM>, in some embodiments, the first common metadata file includes a first encoding rate identifier that provides information associated with the first representation.

As represented by block <NUM>, in some embodiments, the method <NUM> includes generating, in response to receiving the request to initiate recording of the media object, a second common metadata file that is associated with the media object. The method <NUM> includes generating the second common metadata file as a function of a corresponding plurality of metadata files associated with the second plurality of sequential media segments. The second common metadata file includes sequencing information associated with the second plurality of sequential media segments. As represented by block <NUM>, in some embodiments, the second common metadata file includes a second encoding rate identifier that provides information associated with the second representation.

As represented by block <NUM>, in some embodiments, the method <NUM> includes storing the first plurality of sequential media segments based on the sequencing information included in the first common metadata file. As represented by block <NUM>, in some embodiments, the method <NUM> includes storing the second plurality of sequential media segments based on the sequencing information included in the second common metadata file.

<FIG> is an example of a flow diagram of a method <NUM> of performing unique copy operations and common copy operations with respect to media segments in accordance with some embodiments. In some embodiments, the method <NUM> or portions thereof is performed at the cDVR system <NUM> in <FIG>, the first cDVR system 400A in <FIG>, the second cDVR system 400B in <FIG>, or the cDVR system <NUM> in <FIG>. In some embodiments, the method <NUM> or portions thereof is performed by an electronic device or an apparatus.

As represented by block <NUM>, in some embodiments, the method <NUM> includes receiving, from a logical client, a request to initiate recording of a media object. The media object includes a first plurality of sequential media segments. The first plurality of sequential media segments is associated with a corresponding plurality of metadata files, and each of the corresponding plurality of metadata files provides a description of a respective one of the first plurality of sequential media segments. For example, with reference to <FIG>, the second cDVR system 400B receives, from the logical client <NUM>, a record request <NUM>. As another example, the logical client corresponds to a head-end device that services a plurality of subscribers.

As represented by block <NUM>, in some embodiments, the request includes a plurality of recording identifiers. As represented by block <NUM>, in some embodiments, the plurality of recording identifiers identifies a respective plurality of user profiles. For example, with reference to <FIG>, the record request <NUM> includes a plurality of recording identifiers that respectively identify the plurality of subscribers <NUM>-<NUM>-<NUM>-<NUM>. As another example, the plurality of recording identifiers respectively identifies a plurality of subscribers. In some embodiments, the method <NUM> includes receiving a separate recording request for each recording identifier (e.g., each user profile) that is interested in a media segment.

As represented by block <NUM>, the method <NUM> includes generating a common metadata file that is associated with the media object as a function of the corresponding plurality of metadata files. The common metadata file includes sequencing information associated with the first plurality of sequential media segments.

As represented by block <NUM>, in some embodiments, the method <NUM> includes obtaining distinguishing metadata that distinguishes the respective plurality of user profiles from each other. For example, with reference to <FIG>, the distinguishing metadata <NUM> includes a plurality of metadata files (e.g., stored at a corresponding plurality of metadata file datastores <NUM>-<NUM>-<NUM>-<NUM>).

As represented by block <NUM>, in some embodiments, the method <NUM> includes determining whether or not a unique copy mode of operation is appropriate, such as may be imposed by copyright law. In accordance with a determination that the unique copy mode of operation is appropriate, the method <NUM> proceeds to a portion of the method <NUM> represented by block <NUM>. On the other hand, in accordance with a determination that the unique copy mode of operation is not appropriate, the method <NUM> proceeds to a portion of the method <NUM> represented by block <NUM>.

As represented by block <NUM>, in some embodiments, the method <NUM> includes storing a plurality of unique copies of the first plurality of sequential media segments based on a function of the sequencing information and the distinguishing metadata. For example, with reference to <FIG>, the second cDVR system 400B stores a plurality of unique copies within the media object datastore <NUM> based on a function of the distinguishing metadata <NUM> and the common metadata file stored in the common metadata file datastore <NUM>.

As represented by block <NUM>, in some embodiments, the method <NUM> includes storing a common copy of the first plurality of sequential media segments based on a function of the sequencing information. For example, with reference to <FIG>, the first cDVR system 400A stores a single common copy within the media object datastore <NUM> based on a function of the common metadata file stored in the common metadata file datastore <NUM>.

In some embodiments, the method <NUM> includes storing the first common metadata file in association with the distinguishing metadata.

The present disclosure describes various features, no single one of which is solely responsible for the benefits described herein. It will be understood that various features described herein may be combined, modified, or omitted, as would be apparent to one of ordinary skill. Other combinations and sub-combinations than those specifically described herein will be apparent to one of ordinary skill, and are intended to form a part of this disclosure. Various methods are described herein in connection with various flowchart steps and/or phases. It will be understood that in many cases, certain steps and/or phases may be combined together such that multiple steps and/or phases shown in the flowcharts can be performed as a single step and/or phase. Also, certain steps and/or phases can be broken into additional sub-components to be performed separately. In some instances, the order of the steps and/or phases can be rearranged and certain steps and/or phases may be omitted entirely. Also, the methods described herein are to be understood to be open-ended, such that additional steps and/or phases to those shown and described herein can also be performed.

Claim 1:
A method comprising:
receiving (<NUM>) a request to initiate recording of a media object, wherein the media object includes a first plurality of sequential media segments (<NUM>), wherein the first plurality of sequential media segments is associated with a first corresponding plurality of metadata files, and wherein each of the first corresponding plurality of metadata files provides a description of a respective one of the first plurality of sequential media segments;
generating (<NUM>), in response to receiving the_request to initiate recording of the media object, a first common metadata file that is associated with the media object as a function of the first corresponding plurality of metadata files, wherein generating (<NUM>) the first common metadata file includes concatenating the first corresponding plurality of metadata files with each other, and wherein the first common metadata file includes a source identifier that identifies a source associated with the media object, a recording identifier associated with the request, and sequencing information (<NUM>) associated with the first plurality of sequential media segments, wherein the sequencing information indicates the concatenation of the first plurality of sequential media segments, temporal information associated with the media object, and a first segment identifier associated with a first one of the first plurality of sequential media segments; and
storing the first plurality of sequential media segments based on the sequencing information included in the first common metadata file.