Patent ID: 12219214

DETAILED DESCRIPTION

FIG.1shows an illustrative scenario100for generating a personalized media guide for offline media devices. InFIG.1, a media device102receives as input media content guide data104. The media content guide data104includes a plurality of identifiers for channels114and a plurality of timeslots124, each including a media content identifier134corresponding to a media content item that will be distributed during that timeslot124. The media device102then retrieves one or more media content items116corresponding to the media content identifiers134from a database112provided by a content source106. If a first media content item corresponding to one of the media content identifiers134is not available for retrieval from the content source106, the media device102identifies a second media content item126that is related to the first media content item that is not available for retrieval and retrieves the second media content item126. The media device102then generates for display a personalized media content guide108in which a media content identifier118of the second media content item126is displayed in a timeslot of the first media content item.

The media device102may be any device on which media content guides can be displayed, such as a smartphone, a personal computer (PC), a laptop computer, a tablet computer, a handheld computer, a personal digital assistant (PDA), a smart television (TV), a streaming media device, a WebTV box, a personal computer television (PC/TV), a wearable computer, an automotive media system, and/or any other computing equipment on which media content guides can be displayed. As described further below, the media device102is configured to display a graphical user interface (GUI) that shows the personalized media content guide108and may further show the media content items126.

The media content guide data104may be any data from which a media content guide may be generated. For example, the media content guide data104may include electronic program guide (EPG) data usable for generating conventional EPGs. In some embodiments, the media content guide data104includes linear content distribution data—that is, data indicating the media content items that will be distributed by a particular channel114at a particular time. In other embodiments, the media content guide data104includes on-demand or streaming content availability data indicating media content items that are available from a particular channel114at any time, not necessarily limited to a particular time. The channels114may thus be linear distribution channels (e.g., broadcast television and/or live streaming channels) and/or on-demand distribution channels (e.g., on demand retrieval and/or streaming channels).

The content source106may be any server or other computing device from which media content items116and126, and/or metadata related to the media content items116and126may be retrieved. For example, the content source106may be a cloud storage platform by means of which media content items are collected, stored, and distributed, and from which a media device102may retrieve the media content items116and126. The media content items116and126may be any audio and/or video content distributed by a content source106and retrievable by the media device102. Examples of media content items116and126include television shows, web-TV shows, video shorts, movies, home videos, music and other audio recordings, etc.

FIG.2shows an illustrative system for generating a personalized media guide for offline media devices. In particular,FIG.2shows a system200where the media device102retrieves the media content items116and126, and/or the metadata related to the media content items116and126from the content source106via a communications path232. The communications path232may be any network or communication equipment or medium by means of which the media device102can communicate with (e.g., submit a query to and/or retrieve data or content from) the content source106. In one illustrative example, the communications path232includes devices connected via the Internet.

A media content guide-generating application may be implemented on any one or a combination of the media device102, the content source106, and/or an application server220, each of which may function as a stand-alone device or may be part of a network of devices. Various network configurations of devices may be implemented and are discussed in more detail below. In the system200, there may be multiple media devices102, but only one is shown inFIG.2to avoid overcomplicating the drawing. In addition, multiple users may each utilize more than one type of media device102and also more than one of each type of media device102, as described above.

The media device102may be coupled to a communication network230. The communication network230may be one or more networks including the Internet, mobile phone network, mobile voice or data network (e.g., a 4G or LTE network), cable network, public switched telephone network, or other types of communication network or combinations of communication networks. The media device102, the content source106, and the application server220may be connected to the communication network230via one or more communications paths232, such as a satellite path, a fiber-optic path, a cable path, a path that supports Internet communications (e.g., IP), free-space connections (e.g., for wireless signals), and/or any other suitable wired or wireless communications path or combination of such paths.

Although communications paths232are not drawn directly between the media device102and the content source106or the application server220, these devices may communicate directly with each other via communications paths232, such as short-range point-to-point communications paths, for example USB cables, IEEE 1394 cables, wireless paths (e.g., BLUETOOTH, infrared, IEEE 802-11x, etc.), or other short-range communication via wired or wireless paths. BLUETOOTH is a certification mark owned by Bluetooth SIG, INC. The devices may also communicate with each other directly through an indirect path via the communication network230.

The system200may include more than one content source106, but only one is shown inFIG.2to avoid overcomplicating the drawing. As shown inFIG.1, the content source106includes a database, table, or other data structure, (referred to hereinafter as database212) storing a list of each media content item116and126on the content source106, and/or data indicating other media content items to which each media content item116and126is related.

The media content guide-generating application may be, for example, a stand-alone application implemented on the media device102described above. For example, the media content guide-generating application may be implemented as software or a set of executable instructions, which may be stored in storage308(described below with reference toFIG.3) and executed by control circuitry304(described below with reference toFIG.3) of the media device102. In some embodiments, the media content guide-generating application is a client/server-based application where only a client application resides on the media device102, and a server application resides on the application server220. For example, a media content guide-generating application may be implemented partially as a client application on the control circuitry304of the media device102and partially on the application server220as a server application running on the control circuitry304of the application server220. When executed by the control circuitry304of the application server220, the media content guide-generating application may instruct the control circuitry304of the media device102to transmit the media content guide data and/or data regarding the second media content item126to the application server220, which then generates the personalized media content guide108and transmits the personalized media content guide108back to the media device102.

While system200is shown inFIG.2as including only the media device102, the content source106, and the application server220, those skilled in the art will appreciate that the system200may further include various other devices. In some embodiments, the media device102may operate in a cloud computing environment to access cloud services. In a cloud computing environment, various types of computing services for content sharing, storage, or distribution are provided by a collection of network-accessible computing and storage resources, referred to as “the cloud.” The media device102may be a cloud client that relies on cloud computing for application delivery, or the media device102may have some functionality without access to cloud resources. For example, some applications running on the media device102, such as the media content guide-generating application, may be cloud applications, that is, applications delivered as a service over the Internet, while other applications may be stored and run on the media device102. In some embodiments, the media device102uses cloud resources for processing operations, such as the processing operations performed by the processing circuitry306described in relation toFIG.3. For example, the media device102may rely on the application server220and/or another cloud resource to generate the personalized media content guide108.

FIG.3shows a generalized embodiment of an illustrative media device300. As depicted, the media device300may be a smartphone or tablet. The media device300may receive content and data via an input/output (hereinafter “I/O”) path302. The I/O path302may provide user input, user preferences, the media content guide data104, the media content items116and126, and/or metadata related to any of the aforementioned to control circuitry304, which includes processing circuitry306and storage308. The control circuitry304may send and receive commands, requests, and other suitable data using the I/O path302. The I/O path302may connect the control circuitry304(and specifically the processing circuitry306) to one or more communications paths (described below). I/O functions may be provided by one or more of these communications paths, but a single path is shown inFIG.3to avoid overcomplicating the drawing.

The control circuitry304may be based on any suitable processing circuitry, such as the processing circuitry306. As referred to herein, processing circuitry should be understood to mean circuitry based on one or more microprocessors, microcontrollers, digital signal processors, programmable logic devices, field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), etc., and may include a multi-core processor (e.g., dual-core, quad-core, hexa-core, octa-core, or any suitable number of cores). In some embodiments, processing circuitry is distributed across multiple separate processors or processing units, for example, multiple of the same type of processing units (e.g., two INTEL CORE i7 processors) or multiple different processors (e.g., an INTEL CORE i5 processor and an INTEL CORE i7 processor). In some embodiments, the control circuitry304executes instructions for a media content guide-generating application stored in memory (i.e., the storage308). Specifically, the control circuitry304may be instructed by the media content guide-generating application to identify the second media content item126that is related to the first media content item, generate the media content guide, and/or perform the other functions described above and below.

In client/server-based embodiments, the control circuitry304includes communications circuitry suitable for communicating with a media content guide-generating application server or other networks or servers. The instructions for carrying out the above-mentioned functionality may be stored on a server. Communications circuitry may include a cable modem, an integrated services digital network (ISDN) modem, a digital subscriber line (DSL) modem, a telephone modem, an Ethernet card, or a wireless modem for communications with other equipment, or any other suitable communications circuitry. Such communications may involve the Internet or any other suitable communication networks or paths. In addition, the communications circuitry may include circuitry that enables peer-to-peer communication of media devices, or communication of media devices in locations remote from each other.

The memory may be an electronic storage device provided as the storage308that is part of the control circuitry304. As referred to herein, the phrase “electronic storage device” or “storage device” should be understood to mean any device for storing electronic data, computer software, or firmware, such as random-access memory, hard drives, optical drives, solid state devices, quantum storage devices, or any other suitable fixed or removable storage devices, and/or any combination of the same. Nonvolatile memory may also be used. Cloud-based storage, described in relation toFIG.2, may be used to supplement the storage308or instead of the storage308.

The circuitry described herein may execute instructions included in software running on one or more general purpose or specialized processors. Multiple circuits may be provided to handle simultaneous processing functions. If the storage308is provided as a separate device from the media device300, the circuitry may be associated with the storage308.

A user may send instructions to the control circuitry304using a user input interface310of the media device300. The user input interface310may be any suitable user interface, such as a remote control, mouse, trackball, keypad, keyboard, touchscreen, touchpad, stylus input, joystick, or other user input interfaces. Display312may be a touchscreen or touch-sensitive display. In such circumstances, user input interface310may be integrated with or combined with the display312. A camera, microphone, or other visual or voice recognition interface may also be used to receive user input. Speakers314may be provided as integrated with other elements of the media device300.

The media content guide-generating application may be implemented using any suitable architecture. For example, it may be a stand-alone application wholly implemented on the media device300. The media content guide-generating application and/or any instructions for performing any of the embodiments discussed herein may be encoded on computer-readable media. Computer-readable media include any media capable of having computer-executable instructions encoded thereon that, when executed by a processor, cause a device, such as media device300, to perform the instructed operations. In some embodiments, the media content guide-generating application is a client/server-based application. Data for use by a thick or thin client implemented on the media device300are retrieved on demand by issuing requests to a server remote from the media device300, as described above. Those skilled in the art will appreciate that the media device102ofFIG.1may be implemented as the media device300ofFIG.3.

FIG.4is a flowchart of an illustrative process for generating a personalized media guide for offline media devices, in accordance with some embodiments of the disclosure. A process400for generating a personalized media guide for offline media devices may begin at block402, where control circuitry, such as the control circuitry304, retrieves media content guide data, such as the media content guide data104, for a plurality of channels114. For example, the control circuitry304of the media device102may retrieve the media content guide data104from a content source, such as the content source106, or another provider of media content guide data. In some embodiments, the media content guide data indicates, for each of the plurality of channels114, the media content items116that will be distributed by each respective channel114during a plurality of timeslots124. In some embodiments, the media content guide data104includes data for multiple days or even weeks, but the control circuitry304retrieves media content guide data for merely a subset of that period, for example, only one or two days.

At block404, the control circuitry304determines whether any of the plurality of channels114do not make media content items116distributed by such channels available for retrieval. For example, some channels114may make media content items116distributed by such channels available only via linear distribution (e.g., live distribution during a predetermined time). Other channels114may also make media content items116distributed by such channels available via streaming. Both of these example channels114, however, do not make the media content items116they distribute available for retrieval. In response to determining that one or more of the plurality of channels114do not make media content items116distributed by such channels available for retrieval, the process400proceeds to block406. In response to determining that none of the plurality of channels114do not, and thus all of the plurality of channels do, make the media content items116distributed by the channels114available for retrieval, the process skips ahead to block408.

At block406, the control circuitry304excludes the channels114determined at block404to not make media content items116available for retrieval from the plurality of channels114. For example, the control circuitry304may generate a list of the channels114included in the plurality of channels114for which media content guide data104was retrieved at block402and may remove from the list any channels114determined at block404to not make media content items116available for retrieval.

At block408, the control circuitry304identifies a subset of the plurality of channels114that are preferred by a user. For example, the control circuitry304may retrieve, from a user profile of the user, a viewing history indicating a group of channels114that are viewed regularly by the user. In some embodiments, the control circuitry304may determine that a channel that is viewed at least once every seven days is a channel that the user views regularly. In other embodiments, the control circuitry304may determine that a channel that is viewed at least three times every seven days is a channel that the user views regularly. Those skilled in the art will appreciate that these examples of regularity are merely illustrative, and that other intervals or thresholds may be substituted for these examples without departing from the scope of the present disclosure. The control circuitry304may then select, from the group of channels114that are viewed regularly by the user, those channels114that make media content134available for retrieval as the subset of the plurality of channels114that are preferred by the user.

At block410, the control circuitry304determines whether any media content items116that will be distributed by the plurality of channels114in the subset are not available for retrieval. For example, the control circuitry304may determine whether a first media content item116, that is indicated in the media content guide data104as scheduled for distribution by one of the channels114in the subset identified at block408, is not available for retrieval from the content source106. In response to determining that none of the media content items116that will be distributed by the plurality of channels114in the subset are not available, and thus all of the media content items116are available, for retrieval, the process400ends. In response to determining that the first media content item116is not available for retrieval, the process400proceeds to block412.

At block412, the control circuitry304identifies a second media content item126that is related to the first media content item and is available for retrieval. For example, the control circuitry304may identify a second media content item126that has the same genre, plot, director, starring cast member, and/or is from the same series of media content items as the first media content item. The process for identifying the second media content item126is further described below with reference toFIGS.5and6.

At block414, the control circuitry304retrieves the second media content item126identified at block412. For example, the control circuitry304may download the second media content item126from the content source106, store a stream of the second media content item126received from the content source106, and/or load a previously downloaded or stored copy of the media content item126from the memory308. In other words, in some embodiments, the second media content item126has previously been retrieved from the content source106and is thus already stored in the memory308. In such embodiments, the control circuitry304determines whether the second media content item126is stored in the memory308, and in response to determining that the second media content item126is stored in the memory308, the control circuitry304does not again retrieve the second media content item126from the content source106.

At block416, the control circuitry304retrieves a plurality of media content items116that will be distributed by the channels114in the subset. For example, the control circuitry304may identify, from the plurality of media content items116that the media content guide data104indicates will be distributed by the channels114in the subset of the plurality of channels114preferred by the user, such media content items116that are available for retrieval from the content source106, and send a request to the content source106to retrieve such media content items116from the database112. In some embodiments, the control circuitry304may first determine which of the plurality of media content items116that will be distributed by the channels114in the subset are currently stored on the media device102(e.g., in the storage308), and exclude such media content items116when determining which media content items116to retrieve since those media content items116are already stored on the media device102.

At block418, the control circuitry304retrieves a media content preference of the user. For example, the control circuitry304may retrieve, from the user profile of the user, a media content preference of the user—e.g., a particular genre, character, starring cast member, media content series or franchise, director or other production member, etc.

At block420, the control circuitry304identifies a plurality of media content items116matching the media content preference of the user, as retrieved at block418. For example, the control circuitry304may retrieve metadata associated with the media content items116and parse the metadata to determine if the metadata describe the media content preference of the user.

At block422, the control circuitry304determines whether any of the plurality of media content items116that were determined to match the media content preference of the user at block420are not stored on the media device102, and thus need to be retrieved. In some embodiments, the control circuitry304selects a subset of the plurality of media content items116matching the media content preference of the user for inclusion in a personalized channel and determines whether the selected subset of media content items116are currently stored on the media device102. In response to determining that one or more of the media content items116in the plurality of media content items116are not currently stored on the media device102, the process400proceeds to block424. In response to determining that all of the media content items116in the plurality of media content items116are already stored on the media device102, the process400skips ahead to block426.

At block424, the control circuitry304retrieves the media content items116identified at block422as not currently being stored on the media device102. For example, the control circuitry304may download the media content items116identified at block422from the content source106, store a stream of the media content items116identified at block422received from the content source106, and/or load previously downloaded or stored copies of the media content items116identified at block422from the memory308. Thus, similar to the retrieval of the second media content item126described above with reference to block414, in some embodiments, the media content items116identified at block422were previously retrieved from the content source106and are thus already stored in the memory308. In such embodiments, the control circuitry304determines whether the media content items116identified at block422are stored in the memory308, and in response to determining that the media content items116identified at block422are stored in the memory308, the control circuitry304does not again retrieve the media content items116identified at block422from the content source106.

At block426, the control circuitry304generates for display a media content guide interface108in which a media content identifier118for the second media content item126, as identified at block412, is displayed in a timeslot124for the first media content item116that was determined to be unavailable for retrieval at block410. The media content guide interface108may include identifiers for media content items that were retrieved from the content source106at blocks416and424, as well as identifiers for media content items that were previously retrieved and thus already stored in the memory308. In some embodiments, the control circuitry304replaces an identifier for the first media content item116with the identifier118for the second media content item126and generates for display only the identifier118for the second media content item126in the timeslot of the first media content item116. In other embodiments, the control circuitry304generates for display both the identifier for the first media content item116and the identifier118for the second media content item126in the timeslot for the first media content item116. In such embodiments, the control circuitry304may generate for display the identifier for the first media content item116in such a manner that indicates that the first media content item116has been replaced by the second media content item126. For example, the identifier for the first media content item may be greyed-out, dimmed, struck through, highlighted in a different color, etc. The control circuitry304may further generate for display an indication that the second media content item126is provided in place of the first media content item116. For example, the control circuitry304may generate for display a visual indicator or mark indicating that the second media content item126is replacing the first media content item116. The control circuitry304may further generate for display identifiers for media content items116that are available for retrieval in timeslots corresponding to those media content items116. In some embodiments, the control circuitry304may generate for display the media content guide interface108at a time when the media device108is not connected to the content source106, and thus not able to receive live distributions or streaming of the media content items116. For example, the control circuitry304may determine whether the media device102has a high-bandwidth connection to the content source106, and if the media device102does not, generate for display the media content guide interface108.

At block428, the control circuitry304generates for display a personalized channel with a channel identifier matching the media content preference of the user, and identifiers of the plurality of media content items116matching the user preference, as identified at block420, in timeslots of the personalized channel. For example, the control circuitry304may generate for display a personalized channel of media content items116matching the user preference. The channel identifier for the personalized channel may correspond to the media content preference (e.g., a particular media content series or franchise, character, etc.) and the control circuitry304may fill the timeslots for the personalized channel with identifiers for the media content items116preferred by the user, as identified at block420.

FIG.5is a flowchart of a detailed illustrative process for identifying a second media content item that is related to a first media content item, in accordance with some embodiments of the disclosure. A process500for identifying a second media content item that is related to a first media content item may begin at block502. At block504, the control circuitry304determines that the first media content item is part of a media content series or franchise. For example, the control circuitry304may retrieve metadata associated with the first media content item and determine, based on the metadata, that the first media content item is part of the media content series or franchise.

At block506, the control circuitry304identifies an other media content item in the media content series or franchise that is available for retrieval. For example, the control circuitry304may query the database112for media content items126that are part of the media content series or franchise identified at block504.

At block508, the control circuitry304determines whether the other media content item identified at block506has the same duration as the first media content item116. For example, the control circuitry304may compare the duration of the first media content item116with the duration of the other media content item identified at block506. In response to determining that the duration of the first media content item116and the other media content item identified at block506are not the same, the process500returns to block506where the control circuitry304identifies another media content item in the media content series or franchise. In response to determining that the first media content item116and the other media content item identified at block506have the same duration, the process500proceeds to block510. In some embodiments, the control circuitry304selects multiple other media content items to replace the first media content item116. For example, if the first media content item116has a duration that is longer than the other media content items identified at block506, the control circuitry304may select multiple other media content items to fill the duration of the first media content item116. In such embodiments, the control circuitry304may use various algorithms to select the other media content items to fill the duration of the first media content item116. An example of such algorithms is the 0-1 knapsack algorithm, which is an optimization solution that maximizes the value of a collection of assets drawn from a larger set, where each asset has a “weight” and “value,” and each asset must be taken in whole (as opposed to the fractional-knapsack algorithm where you can select a portion of an asset if needed). The collection of selected assets must fit into a given size container. This algorithm draws from a set of solutions that display an optimal substructure, where the solution for a knapsack of size W draws from an optimal solution for W−wi, and can thus be solved by dynamic programming. Specifically, to consider an item for inclusion, the algorithm must compare the solution to the subproblem where the item is included versus the subproblem where the item is excluded before determining if the item should be included in the optimal solution.

To map the 0-1 knapsack algorithm to the problem of selecting other media content items to fill the duration of the first media content item116, each item for consideration is simply a media content item stored in the storage308of the media device102that matches any predefined content restriction rules (e.g., must be part of the same media content series or franchise). Since the size of the knapsack, W, would be the duration of the first media content item116, the “weight” of each item, wi, would be its duration. The “value” of the item, vi, would be a relevancy score of the other media content item to the first media content item116. For example, an other media content item that is the immediately preceding or subsequent installment in the media content series or franchise will have a higher relevancy score than other media content items that are further removed in the media content series or franchise from the first media content item116. Thus, the 0-1 knapsack will attempt to find the maximum Σvisuch that their corresponding Σwi≤W.

In some embodiments, the top-scoring/highest-valued other media content item has a duration that is shorter than the duration of the first media content item116, and thus the algorithm will attempt to fill the remainder of the duration of the first media content item116with a second other media content item. Thus, in some embodiments, the control circuitry304may fill the duration of the first media content item116with multiple other media content items that have a higher relevancy score, and that together fill the duration of the first media content item116.

At block510, the control circuitry304selects the other media content item identified at block506as the second media content item126.

FIG.6is a flowchart of another detailed illustrative process for identifying a second media content item126that is related to a first media content item116, in accordance with some embodiments of the disclosure. A process600for identifying a second media content item126that is related to a first media content item116may begin at block602. At block604, the control circuitry304retrieves a media content preference of the user. For example, the control circuitry304may retrieve, from the user profile of the user, a media content preference of the user—e.g., a particular genre, character, starring cast member, media content series or franchise, director or other production member, etc.

At block606, the control circuitry304identifies an other media content item that is related to the first media content item116and is available for retrieval. For example, the control circuitry304may identify an other that has the same genre, plot, director, starring cast member, and/or is from the same series of media content items as the first media content item, and query the database112to determine if the other media content item is available for retrieval.

At block608, the control circuitry304determines whether the other media content item identified at block606matches the media content preference of the user retrieved at block604. For example, the control circuitry304may retrieve metadata of the other content item identified at block606and parse the metadata to determine if the metadata describes the media content preference of the user. In response to determining that the other media content item identified at block606does not match the media content preference of the user, the process600returns to block606where the control circuitry304selects another media content item that is related to the first media content item116and is available for retrieval. In response to determining that the other media content item identified at block606matches the media content preference of the user, the process600proceeds to block610.

At block610, the control circuitry304selects the other media content item identified at block606as the second media content item126.

It will be apparent to those of ordinary skill in the art that methods involved in the present invention may be embodied in a computer program product that includes a computer-usable and/or -readable medium. For example, such a computer-usable medium may consist of a read-only memory device, such as a CD-ROM disk or conventional ROM device, or a random-access memory, such as a hard drive device or a computer diskette, having a computer-readable program code stored thereon. It should also be understood that methods, techniques, and processes involved in the present disclosure may be executed using processing circuitry.

The processes discussed above are intended to be illustrative and not limiting. More generally, the above disclosure is meant to be exemplary and not limiting. Only the claims that follow are meant to set bounds as to what the present invention includes. Furthermore, it should be noted that the features and limitations described in any one embodiment may be applied to any other embodiment herein, and flowcharts or examples relating to one embodiment may be combined with any other embodiment in a suitable manner, done in different orders, or done in parallel. In addition, the systems and methods described herein may be performed in real time. It should also be noted, the systems and/or methods described above may be applied to, or used in accordance with, other systems and/or methods.