The present invention relates generally to content networks and other communications networks, and, more particularly, to techniques for preparing and updating a playlist of content to be consumed, and the like.
In the realm of music storage and playback using personal computers (PCs), the term “playlist” was adopted by various media player software programs intended to organize and control music on a PC. Such music playlists may be defined, stored, and selected to run either in sequence or, if a random playlist function is selected, in a random order.
On video hosting service websites, users can make playlists of selected videos from themselves or other users.
US Patent Application Publication 2005-0278761 of Thomas L. Gonder et al. discloses playlist menu navigation, wherein a method of operating a communications system includes receiving a request for establishment of a session from a terminal, establishing the session with the terminal, and providing at least one navigation video segment to the terminal, via the session. The communications system may be a source of programming, such as a cable system, and the terminal may be a set-top terminal coupled to a display device. The navigation video segment may be used by the terminal to create selection menus to be displayed for user navigation. The video segments may be rich media video segments. A playlist may be generated comprising an indexed listing of a plurality of available video segments. The playlist may facilitate retrieval of video segments requested by a terminal.
US Patent Application Publication 2009-0150941 of Steven Riedl et al. discloses an apparatus and method for video-on-demand playlist, wherein a method of providing programming content from a video server to a client coupled to the video server by a video content network includes the steps of sending, to the client, a playlist describing an interrelationship between at least one program segment and at least one related segment; sending, from the video server to the client over the video content network, video content comprising the at least one program segment and the at least one related segment; and modifying the playlist via communication to the client. The steps of sending the playlist, sending the content, and modifying the playlist are all accomplished within a single video-on-demand session per user.
Principles of the present invention provide techniques for a TV play list. In one aspect, an exemplary method includes the steps of providing a playlist server application on a playlist at a first network node; providing a playlist local application for a remote device; obtaining an indication of a change to a playlist on one of the server and the remote device from a corresponding one of the playlist server application and the playlist local application; and synchronizing the change to another one of the server and the remote device.
In another aspect, another exemplary method includes providing a playlist server application on a server at a first network node; and constructing a playlist via the playlist server application. The playlist in turn includes at least one content item from each of a multi-service operator system; and a location outside the multi-service operator system.
In still another aspect, an exemplary server for interfacing with a remote device includes at least one hardware processor; at least one memory coupled to the at least one processor; and a playlist server application software module, embodied on a non-transitory tangible computer-readable recordable storage medium. The playlist server application software module, when loaded into the memory, causes the at least one hardware processor to: obtain an indication of a change to a playlist on one of the server and the remote device; and synchronize the change to another one of the server and the remote device.
In an even further aspect, an exemplary apparatus includes at least one hardware processor; at least one memory coupled to the at least one processor; and a playlist application software module, embodied on a non-transitory tangible computer-readable recordable storage medium. The playlist application software module, when loaded into the memory, causes the at least one hardware processor to construct a playlist which includes at least one content item from each of: a multi-service operator system; and a location outside the multi-service operator system.
In still a further aspect, a remote device for interfacing with a server includes at least one hardware processor; at least one memory coupled to the at least one hardware processor; and a playlist local application software module, embodied on a non-transitory tangible computer-readable recordable storage medium. The playlist local application software module, when loaded into the memory, causes the at least one hardware processor to: obtain an indication of a change to a playlist on one of the server and the remote device; and synchronize the change to another one of the server and the remote device.
In yet a further aspect, an exemplary method includes the steps of obtaining, at a computing device, input from a brainwave sensor indicative of brainwaves of a user; and, based at least in part on the input from the brainwave sensor, carrying out, by a processor of the device executing an application program, at least one of: (1) recommendation of a currently playing item, which has, at least in part, influenced the brainwaves, for inclusion in a first playlist; and (2) recommendation of a second playlist to at least one of complement and alter a mental state of the user, the mental state of the user being associated with the brainwaves of the user. A further step includes respectively adding the currently playing item to the first playlist or playing the second playlist in accordance with the carrying out step.
As used herein, “facilitating” an action includes performing the action, making the action easier, helping to carry the action out, or causing the action to be performed. Thus, by way of example and not limitation, instructions executing on one processor might facilitate an action carried out by instructions executing on a remote processor, by sending appropriate data or commands to cause or aid the action to be performed. For the avoidance of doubt, where an actor facilitates an action by other than performing the action, the action is nevertheless performed by some entity or combination of entities.
One or more embodiments of the invention or elements thereof can be implemented in the form of an article of manufacture including a machine readable medium that contains one or more programs which when executed implement such step(s); that is to say, a computer program product including a tangible computer readable recordable storage medium (or multiple such media) with computer usable program code for performing the method steps indicated. Furthermore, one or more embodiments of the invention or elements thereof can be implemented in the form of an apparatus including a memory and at least one processor that is coupled to the memory and operative to perform, or facilitate performance of, exemplary method steps. Yet further, in another aspect, one or more embodiments of the invention or elements thereof can be implemented in the form of means for carrying out one or more of the method steps described herein; the means can include (i) specialized hardware module(s), (ii) software module(s) stored in a tangible computer-readable recordable storage medium (or multiple such media) and implemented on a hardware processor, or (iii) a combination of (i) and (ii); any of (i)-(iii) implement the specific techniques set forth herein. The means do not include a transmission medium per se or a disembodied signal per se.
Techniques of the present invention can provide substantial beneficial technical effects. For example, one or more embodiments provide a playlist which facilitates synchronization across multiple devices and/or which collects content from diverse content sources.
These and other features and advantages of the present invention will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings.
Embodiments of the invention may be implemented in a variety of contexts, to assemble playlists with content from many different sources. Purely by way of example and not limitation, some embodiments are used in connection with a radio frequency (RF) content network such as a cable or hybrid fiber-cable (HFC) system operated by a cable multi-service operator (MSO) or the like.
It should be noted at this point that in addition to a conventional HFC network or a switched digital network to be discussed below, other kinds of video content networks can be employed for network 101 (e.g., satellite network, fiber-to-the-home (FTTH) or fiber-to-the-curb (FTTC)).
The data/application origination point 102 comprises any medium that allows data and/or applications (such as a VOD-based or “Watch TV” application) to be transferred to a distribution server 104. This can include for example a third party data source, application vendor website, compact disk read-only memory (CD-ROM), external network interface, mass storage device (e.g., Redundant Arrays of Inexpensive Disks (RAID) system), etc. Such transference may be automatic, initiated upon the occurrence of one or more specified events (such as the receipt of a request packet or acknowledgement (ACK)), performed manually, or accomplished in any number of other modes readily recognized by those of ordinary skill.
The application distribution server 104 comprises a computer system where such applications can enter the network system. Distribution servers are well known in the networking arts, and accordingly not described further herein.
The VOD server 105 comprises a computer system where on-demand content can be received from one or more of the aforementioned data sources 102 and enter the network system. These servers may generate the content locally, or alternatively act as a gateway or intermediary from a distant source.
The CPE 106 includes any equipment in the customers' premises (or other appropriate locations) that can be accessed by a distribution server 104.
The network interconnecting elements 102, 103, and the head end is not separately numbered.
Referring now to
The architecture 150 of
Content (e.g., audio, video, etc.) is provided in each downstream (in-band) channel associated with the relevant service group. To communicate with the head-end or intermediary node (e.g., hub server), the CPE 106 may use the out-of-band (OOB) or DOCSIS channels and associated protocols. The Data Over Cable System Interface Standard (DOCSIS® standard), was released in 1998. DOCSIS® establishes standards for cable modems and supporting equipment. DOCSIS® (Data Over Cable Service Interface Specification) is a registered mark of Cable Television Laboratories, Inc., 400 Centennial Parkway Louisville Colo. 80027, USA, and will be referred to for the remainder of this application in capital letters, without the ® symbol, for convenience. The DOCSIS specifications versions 1.0, 1.1, 2.0, and 3.0 are all expressly incorporated herein by reference in their entireties for all purposes. The OpenCable™ Application Platform (OCAP) 1.1.3, 1.1.5, 1.2, 1.2.1, 1.2.2, and 1.2.3 (and subsequent) specification (Cable Television laboratories Inc.) provides for exemplary networking protocols both downstream and upstream, although the invention is in no way limited to these approaches. The DOCSIS Set-top Gateway (DSG) Interface Specification, CM-SP-DSG-119-111117, and the OpenCable™ Application Platform Specifications, OpenCable Application Platform (OCAP), OC-SP-OCAP1.2-110512, both available from the aforementioned Cable Television Laboratories, Inc., are expressly incorporated herein by reference in their entireties for all purposes. Furthermore, the DAVIC 1.0 through 1.5 specifications, inclusive, available from DAVIC, the Digital Audio Video Council, are also expressly incorporated herein by reference in their entireties for all purposes. Yet further, the MoCA 1.0, 1.1, and 2.0 specifications, inclusive, available from the Multimedia over Coax Alliance (MoCA), are also expressly incorporated herein by reference in their entireties for all purposes.
It will also be recognized that multiple servers (broadcast, VOD, or otherwise) can be used, and disposed at two or more different locations if desired, such as being part of different server “farms”. These multiple servers can be used to feed one service group, or alternatively different service groups. In a simple architecture, a single server is used to feed one or more service groups. In another variant, multiple servers located at the same location are used to feed one or more service groups. In yet another variant, multiple servers disposed at different location are used to feed one or more service groups.
In some instances, material may also be obtained from a satellite feed 1108; such material is demodulated and decrypted in block 1106 and fed to block 162. Conditional access system 157 may be provided for access control purposes. Network management system 1110 may provide appropriate management functions. Note also that signals from MEM 162 and upstream signals from network 101 that have been demodulated and split in block 1112 are fed to CMTS and OOB system 156.
As shown in
Switching architectures allow improved efficiency of bandwidth use for ordinary digital broadcast programs. Ideally, the subscriber will be unaware of any difference between programs delivered using a switched network and ordinary streaming broadcast delivery.
US Patent Publication 2003-0056217 of Paul D. Brooks, entitled “Technique for Effectively Providing Program Material in a Cable Television System,” the complete disclosure of which is expressly incorporated herein by reference for all purposes, describes one exemplary broadcast switched digital architecture useful with some embodiments of the present invention, although it will be recognized by those of ordinary skill that other approaches and architectures may be substituted.
In addition to “broadcast” content (e.g., video programming), the systems of
Referring again to
The edge switch 194 forwards the packets received from the CMTS 199 to the QAM modulator 189, which transmits the packets on one or more physical (QAM-modulated RF) channels to the CPEs. The IP packets are typically transmitted on RF channels that are different that the RF channels used for the broadcast video and audio programming, although this is not a requirement. The CPE 106 are each configured to monitor the particular assigned RF channel (such as via a port or socket ID/address, or other such mechanism) for IP packets intended for the subscriber premises/address that they serve.
It will be appreciated that while some examples presented herein are described in the context of Internet services that include multicast and unicast data, other examples could involve other types of services that include multicast transmission of data delivered over a network having multiple physical channels or even virtual or logical channels. For example, switching between various physical channels that comprise a virtual channel, can itself be conducted according to the “switched” approach. As a simple illustration, if a first virtual channel is comprised of physical channels (e.g., QAMs) A, B and D, and a second virtual channel is comprised of QAMs C, E and F, a cable modem (CM) or other CPE can be configured to switch between the A/B/D and C/E/F virtual channels as if they were a single QAM.
The configurations shown in
A playlist is a list of content items chosen to run in sequence or randomly. The content items can be of any type and from one or more sources, such as live content items (e.g. live broadcasts) over radio frequency (RF) or Internet Protocol (IP), programs recorded locally on a digital video recorder (DVR), programs programmed on a network DVR (wherein material is stored in a network node remote from the television), programs from a video-on-demand (VOD) library, or programs from an online content library/stores on a private network or a public network, such as the Internet. The content items in a playlist can be chosen to represent a particular theme, interest or a variety of interests (e.g., comedy and drama). Content items chosen for a playlist can be influenced or selected by service providers', critics, friends' recommendations, genres such as “kids,” or from usage/consumption data such as “most watched.” A playlist can be associated with a household and shared among the viewers in a household, can be personalized for a specific user, or shared with a third party by sending the playlist to, for example, a friend.
In one or more embodiments, elements 4005, 4015, 4020 can access material from both MSO and non-MSO sources.
Playlists can be created, changed and played on various types of devices. Non-limiting examples of such devices include computer 4020, set-top terminal 4025, set-top terminal 200, IP set-top terminal 4005, and portable device 4015 (e.g., tablet, smart phone, laptop, through a web portal). In some instances, playlists can be viewed and modified on devices; in other instances, some devices can modify playlists but may not be able to consume the content. In one or more embodiments, the playlist is persisted on the server side and the local app synchronizes with the server data. In some cases, loading the URL from the browser involves fetching the application from the cloud and running it locally within a user agent on the device.
Referring to
For example, in memory 210, NVRAM may be used for storage of a user's settings and set-top terminal configuration settings, such as parental control codes, favorite channel lineups, set-top terminal setups, channel maps, authorization tables, and forward data channel (FDC) address assignments. DRAM may be used for most application and operating system storage requirements, such as stacks, heaps, graphics, interactive program guide data, marketing data and usage data, and functions such as MPEG-2 video decompression, DOLBY DIGITAL® (registered mark of Dolby Laboratories Licensing Corporation, San Francisco, Calif.) Adaptive Transfer Coding 3 (AC-3) audio decoding, and video manipulation. ROM may be used for storage of the operating system. Flash ROM may be used for storage of resident application software, as well as patches of the operating system and application software, which software and/or patches are downloaded to the set-top terminal 200 from the head end 150 and/or user profile/configuration server 4080, for example, after set-top terminal 200 or other CPE has been deployed at the user's premises. In general, NVRAM is used to store transient data on CPE devices while the ROM is used for storage of the operating system (OS) and application code modules.
Processing unit 215 executes instructions for the operation of set-top terminal 200. The instructions are stored in the memory 210 under the control of an operating system 220. A service application manager (SAM) application 225 is also stored in memory 210 and may form part of the operating system 220. The SAM application 225 is responsible for, among other things, monitoring channel change events; administering channel, service and other tables in the set-top terminal 200; and maintaining a registry of applications in the set-top terminal 200. One such application is the aforementioned Watch TV application 205, which is invoked to service a traditional broadcast channel (or program). An interface 230 allows receipt of in-band and out-of-brand material from the head end 150, as well as sending communications to the head end 150 via a reverse data channel (various kinds of forward and reverse data channels are known to the skilled artisan), via network 101 or the like.
Interface 230 may include an RF front end (including demodulator and decryption unit) for interface with a network, such as network 101 or the like, as well as a plurality of different types of interfaces (e.g., video/audio interfaces, IEEE-1394 “Firewire”, USB, serial/parallel ports, etc.) for interface with other end-user apparatus such as televisions, personal electronics, computers, WiFi/PAN or other network hubs/routers, etc. Other components which may be utilized within the set-top terminal 200 include RF tuner stages, buffer memory (which may be implemented in RAM or otherwise), various processing layers (e.g., DOCSIS MAC or DAVIC OOB channel, MPEG, etc.) as well as media processors and other specialized system-on-chip (SoC) or application-specific integrated circuit (ASIC) devices. These additional components and functionality are, in and of themselves, well known to those of ordinary skill in the cable and embedded system fields, and accordingly are not described further herein.
The set-top terminal 200 may also be provided with an OCAP-compliant monitor application and Java-based middleware which, inter alia, manages the operation of the set-top terminal 200 and applications running thereon. It will be recognized by those of ordinary skill that myriad different device and software architectures may be used consistent with the invention.
Exemplary set-top terminal 200 also provides digital video recorder (DVR) functionality. To this end, memory 210 further includes a terminal DVR application 235 and a terminal content memory 240 (e.g., one or more hard drives) for storing content locally on the set-top terminal 200. While, in the embodiment shown in
After playlist application 245 is started, in some cases, the user is presented with a user interface on a display (e.g., TV) associated with set-top terminal 200. In this example, in some cases, playlist application 245 is configured to present the user with a main menu after the application is started.
Optionally, the user is prompted to log in to “login and authentication server” 4050 if not logged in yet, for playlist creation, edition, synchronization and content playing. Playlists saved on the “User profile/configuration server” 4080 are synchronized with the local playlist after user login. The user does not need to log in to the server for local playlist manipulation and in such a local mode, watches only contents that do not require signing in.
Depending on the configuration, the user will be brought to the application main menu screen (as noted above), or instead may be brought to a sub menu screen, or location where the user was before he or she last exited the application. Furthermore with regard to this “resume play” aspect, the application 245 in some instances will resume play from the point where user last exited the application.
From the main menu the user may select different options, such as “create” a new playlist; “change” an existing playlist; “import” a playlist from other users' playlists or obtain “recommendations” for a playlist. A user can change an existing playlist, such as deleting, adding, or changing the order of, content items in a playlist. Other options in the main menu may include an option to “share” playlists with friends, “synchronize” a playlist to a master playlist on user profile/configuration server 4080, “play/start” or “record.” It should be mentioned that the user interface can be configured in various ways. For example, playlist application 245 can be configured to provide a rich graphical user interface (GUI) with drag and drop capability to allow a user to create and change playlists, as shown in
In one or more embodiments, the content in the playlist can be uniquely identified by a uniform resource identifier (URI) that is based on a well-known, well-defined content ID scheme such as EIDR (Entertainment Identifier Registry) or CableLabs Asset Distribution Interface (ADI). The ID scheme can be based on an industry standard such as EIDR that allows unique identification of the content and/or program by other applications outside the service MSO, or it can be based on an ID scheme that is private to the MSO domain. Using a standards-based ID scheme allows the subscribers to share the play list with their friends and/or family and other social networks irrespective of their service provider. The content URI can be extended to form a URL which helps the application to locate the content and source.
In addition to a “create” submenu discussed just below, an “edit/view” submenu and/or a “synchronize” submenu can be provided. In the “Edit/View” submenu, the user can edit an existing playlist, delete, add, or change the order of items the playlist. Items to add can be selected from an electronic program guide (EPG), search results, recommendations and/or other playlists, and the like. Refer to the above discussion regarding unique identification of playlist content by a URI.
If there are multiple playlists, users are prompted to select one of them. With regard to the “Synchronize” submenu: playlist(s) on the local device is/are synchronized with the ones on server 4080 automatically from time to time (the playlists on the server and the local device(s) may be different since the user modified them from other devices (playlists may be edited from many different devices, which in general, may or may not be devices that consume content listed in the playlists)). The “Synchronize” submenu can be selected by the user to instantly synchronize the playlists on the local device and on the server. The user can also choose to “Synchronize” the playlist contents.
In this example, at step 5010 the user selects the option to “create” a playlist from the main menu. Advancing through the main menu, playlist application 245 instructs processing unit 215 to present a submenu where the user is presented with a choice to create a playlist from a list of content items provide by various sources, for example, an electronic program guide (EPG), search results, recommendations, or shared playlists. At step 5015, the user chooses a content guide source. In this example, the user chooses the EPG as the content guide source to view programming and scheduling information for current and upcoming programming. The EPG programming and scheduling information or data, in this example, is provided by EPG server 4075. After selecting the EPG option, the user is prompted to select a name for the playlist. At step 5020, using the keypad on the remote control and menu, the user enters a name for the playlist, for example Diana1. In this example, the name is stored locally in one or more tables in user memory 210 of set-top terminal 200.
After naming the playlist, the user accesses, for example, the EPG programming and scheduling information from EPG server 4075. As mentioned above, the content items (e.g., programming) of a playlist can be from various sources, such as video 4010 (e.g., live broadcasts) over network 4030, content recorded on local DVRs (e.g. set-top terminal 200) or network DVRs 4070, content from VOD libraries (e.g. video content stores 4060), live IP video 4085, and/or content from online libraries on the internet beyond the service provider offerings (e.g. a video hosting service website).
In one or more embodiments, live content can be obtained, for example, from EPG and search results; VOD content can be obtained, for example, from the VOD catalog and search results; DVR and NDVR content can be obtained, for example, from a suitable Recording Manager program either on the client or in the cloud. Furthermore, external sources can be obtained, for example, from recommendations, social networking, browsing, search, and the like.
In this embodiment of the invention, video content information server 4055 provides information or data related to content items. For example, once an identifier for content is available, for example, in URI form with an ID for a particular domain, the client application can use the content information server to query the meta-data for the content.
Each content item can have associated with it one or more of the following exemplary properties:
The “Title” property represents the title of the content item, while the “ShortDescription” property represents a description of the content item. The “size” property represents the data size of the content item, while the “LengthInTime” property represents the time of the content item. Another property available for a content item is the “Rating” property representing a rating set, for example, by the Motion Picture Association of America (MPAA).
In this example, each content item is associated with an “ID” property, which is a unique ID that identifies the content item and associates the content item with other properties or information, such as the properties mentioned above. Each unique ID is stored in association with its properties or information in one or more tables in video content information server 4055. The unique content item ID can also be used to search availability of content from the EPG and/or content stores 4060 and to obtain a URL for a content item.
After selecting a name for the playlist, the user can select content items to include in the playlist. Using, by way of example and not limitation, the EPG, the user navigates through a list of the content items while selecting content items for playlist “Diana1.” The table below is an exemplary playlist “Diana1” having various content items; these are given generic names in the example but it will be appreciated that actual show and network names would typically be used in one or more embodiments:
Example Playlist Diana1
At step 5025, the user chooses a content item, for example, News on NW1, for the playlist Diana1. After selecting the content item the user selects a particular schedule, start date and/or frequency at step 5030. For example, using the EPG the user selects News on NW1 as the program or content item, with a frequency of every day (e.g. to play or record) and a start date of 7-20-12 and schedule from 4-5 pm, as shown in the above table. In this example, playlist application 245 instructs processing unit 215 to store in memory 210 the user selected program name, frequency, start date and schedule in one or more tables associated with the playlist Diana1. This information is used by playlist application 245 when instructing processing unit 215 to notify the user of the availability of live content items and when automatically recording live content items, if requested by the user. At step 5035 the content item location and a unique ID associated with the content item are stored in one or more tables associated with the playlist Diana1. In this example, each unique ID is associated with its own content item name, provided, in some cases, by the EPG, and is used to locate and retrieve information or properties that are related to the content item and that are stored in video content information server 4055.
The content item location is provided by, for example, the EPG.
In one or more embodiments, the URL for the content follows the syntax shown in
For a live broadcast, the content item location is a channel and for stored or recorded content items the content item location is a content item address and a device address, where the device can be, for example, video content stores 4060, network DVR 4070, or CPE or other device with content item storage capability. The content item address includes, for example, an address of a location of the content item stored in a storage device and the address of the storage device, for example, the address of network DVR 4070. At decision block 5040, a “record” property (can be passed in params) associated with the content item is set to either “yes” or “no”. In this example, the user chooses to record the content item, if unavailable to view the content item, and to store it locally on set-top terminal 200. Playlist application 245 instructs processing unit 215 to set the “record” property associated with the content item (e.g. News on NW1) to “yes” and, at step 5045, to store the content item at a location, for example, “thisDevice”, which has associated with it a device address, such as the device address of set-top terminal 200.
As soon as a playlist is created/modified/synchronized, new playlist items that are from the live broadcast are scheduled to be recorded if the playlist property “record” is set to “thisDevice,” “homeDevices,” “server,” “allDevices,” or “offlinePlay”. In at least some embodiments, items that are available on the content stores will only be recorded to local device storage when the “record” flag is set to “offlinePlay.” The playlist “Ready” flag changes from “no” to “partial” to “yes” when live broadcast programs are recorded or contents downloaded; the URLs of items may also change in such cases, for example from “tv://channelNumber:startTime” for something not yet broadcast to “dvr://recordId” or to “file://playlist/fileName” for something that has now been recorded.
In some instances, the user is provided a choice to record live content items to various locations or storage devices identified by names, such as the aforementioned “thisDevice,” “homeDevices,” “server,” “allDevices,” or “offlinePlay.” In this example, “thisDevice” is set-top terminal 200 and “homeDevices” can include set-top terminal 200 and other devices installed in the user's location. The “server” can include network DVR 4070, and “allDevices” can include all devices local and remote to the user's location. The user can also be provided with the option to access that particular show from the VOD library when made available. At decision block 5050, if there are no other content items to be added to the playlist, then playlist application 245 instructs processing unit 215 to timestamp the playlist, at step 5055. The time stamp is a time, day and year the playlist is created or last changed, which is discussed in detail below. If there are more content items to be added to the playlist, then control loops back to step 5025.
If an item is not to be recorded, flow proceeds from decision block 5040 to decision block 5060. Here again, if there are no other content items to be added to the playlist, then playlist application 245 instructs processing unit 215 to timestamp the playlist, at step 5055. The time stamp is a time, day and year the playlist is created or last changed, which is discussed in detail below. If there are more content items to be added to the playlist, then control loops back to step 5025.
A playlist can have following properties:
With regard to “ListOfItems,” in one or more embodiments, an item has following properties: Unique ID, e.g. TMS_ID, or EIDR_ID; source in URL format as seen in
Referring again to the table shown above, at step 5025 the user selects another content item to include in the playlist Diana1, such as an On Demand content item. In this example, at step 5030, the user selects SciFi Sitcom Series NW1 and selects a particular start date representing a particular episode. For example, using the EPG the user selects SciFi Sitcom Series NW1 as the program or content item, with a frequency of once week and a start date of 7-20-12, as shown above in the aforementioned table. In this case, playlist application 245 instructs processing unit 215 to store in memory 210 the user selected program name and start date in one or more tables associated with the playlist Diana1. At step 5035, the unique ID and content item location is stored in one or more tables associated with the playlist Diana1. The content item location is provided by, for example, the EPG; other approaches could be used in other embodiments. For video on demand, in this example, the content item location is an address within the storage device and the device address of video content stores 4060. All of the On Demand content items in the playlist can be viewed at any time as long as the content is available in the system. At block 5040, a “record” property associated with the content item is set to either “yes” or “no.” In this example, the user selected an On Demand content item, so recording the content item is not necessary and the “record” property is set to “no.” At block 5060, if there are no other content items to be added to the playlist, then playlist application 245 instructs processing unit 215 to timestamp the playlist, at step 5055. If there are more content items to be added to the playlist, then the logical flow returns to step 5025.
At step 5025, the user selects another content item to include in the playlist Diana1, such as a content item to record. In this example, at step 5030, the user selects Gameshow on NW1 and selects a particular schedule, start date, and frequency. For example, using the EPG the user selects Gameshow on NW1 as the program or content item, with a frequency of weekly and a start date of 7-20-12 scheduled from 4-5 pm, as shown above in the table. In this case, playlist application 245 instructs processing unit 215 to store in memory 210 the user-selected program name, frequency, start date, and schedule in one or more tables associated with the playlist Diana1, which is used to schedule the recording. At step 5035, the unique ID and content item location is stored in the one or more tables associated with the playlist Diana1. In this example, the content item location is a specific content item address and device address of the local DVR in (or connected to) set-top terminal 200. The content item location is provided by, for example, the EPG.
Further entries (e.g. “Sitcom,” “Police Drama,” and “NW3 News” can proceed in a similar fashion.
As explained above, Playlist application 245 can instruct processing unit 215 to record content items on the playlist for later viewing. At step 5040, a “record” property associated with the content item is set to either “yes” or “no.” In this example, the user chooses to record a content item, so the “record” property is set to “yes.” Refer to discussion of steps 5040-5060 above.
In a situation where different devices are available, such as video receiver devices, and more live content items have been requested to be recorded than can be recorded on a single storage device (e.g., two content items recorded at the same time), playlist application 245 instructs processing unit 215 to coordinate the recordings using multiple devices, or using network DVR 4070. Playlist application 245 can also instruct processing unit 215 to download content items on the playlist from an online content library, such as video content stores 4060, to local storage, such as set-top terminal 200, during low network usage time.
Synchronization
Generally, after a playlist is created, (e.g., Diana1), a master copy of the playlist is saved on a server in the cloud, for example, user profile/configuration server 4080. Any update or change to the playlist stored on CPE or another device is synchronized with its corresponding master copy playlist stored on user profile/configuration server 4080. As discussed elsewhere, in some instances, the user is afforded the opportunity to play and edit a playlist from any customer premises equipment or other device at any location and any time while being provided with the most current version of the playlist to play or edit. The user can create or edit a playlist on one set-top box or other device, send a copy of the playlist to user profile/configuration server 4080 and later copy the playlist from user profile/configuration server 4080 to another set-top box or other device. Again, in some cases, some devices may be capable of editing the playlist but not consuming the content thereof.
As mentioned above, when a playlist is created or edited it is given a timestamp, which is used to synchronize the playlist among various versions of the playlist stored on various devices. Although a playlist name may be a common name, such as “Diana1,” the name includes a unique identifier, such as a service provider account number, to identify the playlist among the many playlists stored in user profile/configuration server 4080. The timestamp is a time, day and year the playlist is created or last changed. After a playlist is created or edited, playlist application 245 instructs processing unit 215 to send a copy of the playlist and its timestamp to user profile/configuration server 4080 where it is stored as a master copy playlist with the timestamp. Every time a playlist is created or changed, a copy of the playlist and timestamp is shared with user profile/configuration server 4080 creating a playlist pair (i.e., a playlist stored on a device and a master copy playlist on server 4080). Every time a master copy playlist is changed its timestamp is updated to the time, date and year of the change.
Referring to
The most recent timestamp of the playlist pair represents the most up-to-date version of the playlist, either the playlist stored on the CPE or other device, in this example set-top terminal 200, or the master copy playlist stored on user profile configuration server 4080. At block 7040, if the master copy playlist has the most recent timestamp, then the master copy playlist is considered to be the most recent and up to date playlist, and is labeled as such, at step 7045. Playlist instances on user profile configuration server 4080 and on a local device may be different if the user changes the playlist from another device. At step 7050, if the master copy playlist has the most recent time stamp, user profile configuration server 4080 sends a copy of the most current playlist to set-top terminal 200 where playlist application 245 instructs processing unit 215 to store the most current playlist in local memory 210. At block 7040, if user profile configuration server 4080 determines that the master copy playlist stored on user profile configuration server 4080 does not have the most recent timestamp, then at step 7055 the playlist stored in set-top terminal 200 is considered the most current playlist and the master copy playlist is updated or replaced in user profile/configuration server 4080 to match the playlist stored in set-top terminal 200. In the example discussed above, the playlist Diana1 is a new playlist, so user profile/configuration server 4080 will not have or find a master copy of the playlist Diana1 in its databases and thus saves the playlist Diana1, received from set-top terminal 200, as the master copy.
Periodically, the playlists on local devices are automatically synchronized with the playlists on user profile/configuration server 4080. In this case, without a user starting playlist application 245, creating a new playlist or changing a playlist, playlist application 245 automatically begins the synchronization process described above. The user can also initialize a synchronization of one or more playlists by selecting a “Synchronize” submenu option from the user interface menu to synchronize the playlists on local device with the playlists on the server. See location 7055 as discussed above.
In some cases, in an alternative to creating or modifying a playlist by executing application 245 on set-top terminal 200, a version of playlist application 245 can be located on a server such as user profile/configuration server 4080, and accessed from a remote device via a web browser. In some instances of this kind of arrangement, to access playlist application 245, the user enters a playlist application URL in a web browser running on a device such as computer 4020 or portable device 4015.
Running a Playlist
Referring to
At block 6022, playlist application 245 instructs processing unit 215 to determine if the content item is expired or not expired. In this example, playlist application 245 instructs processing unit 215 to request the state of the “ExpirationDate” flag for the unique ID of the content item from video content information server 4055. In response, video content information server 4055 searches its databases for the unique ID and associated information, such as the setting of the “ExpirationDate” flag. Depending on the content item expiration date, video content information server 4055 sends either a “yes” or “no” representing the “ExpirationDate” flag to set-top terminal 200. In this example, the flag is set to “no” indicating that the content is not expired. In this example, the flag is set to “no” because the content item is a live content item that is being aired. If, at block 6022, the “ExpirationDate” flag is set to “yes” then playlist application instructs processing unit 215 to return to step 6015. At step 6025, playlist application 245 instructs processing unit 215 to determine the content item location. Knowing that the content item is available and not expired, playlist application 245 instructs processing unit 215 to determine the content item location from the one or more tables associated with the playlist Diana1. Because the content item is live, the content item location is a channel (e.g., traditional broadcast channel or switched digital video (SDV) channel) and playlist application 245 instructs processing unit 215 to tune set-top terminal 200 to the channel, enabling the user to view the content, at step 6030.
Whether a playlist is running or not, playlist application 245 instructs processing unit 215 to periodically search the tables associated with playlist Diana1 for live content items and trigger a notification to the user that a live content item (e.g., live broadcast) is about to start. If the user does not respond to the notification or is not available to view the live content item, playlist application 245 instructs processing unit 215 to request a recording device to record and store the live content item for later viewing. As mentioned above, in some embodiments, the user is provided a choice to record live content items to various locations or storage devices identified by names, such as “thisDevice,” “homeDevices,” “server,” “allDevices,” or “offlinePlay.” If the live content item is recorded, playlist application 245 instructs processing unit 215 to store the content item address and device address (e.g., local DVR in set-top terminal 200) in one or more tables associated with the particular content item in playlist Diana1. While the live content item is being recorded, playlist application 245 instructs processing unit 215 to update the “ready” property flag from “no” to “partial” to “yes” while the live content item is recorded or contents downloaded. Playlist application 245 can also instruct processing unit 215 to trigger a confirmation request for the user, in order to save network bandwidth. If the user does not respond to the confirmation request, playlist application 245 instructs processing unit 215 not to tune to the channel (e.g., switched digital video (SDV) channel), thus saving bandwidth. With customer premises equipment that can detect whether a TV screen or display is on or off, playlist application 245 can instruct processing unit 215 to automatically record live content items when the TV screen or display is off.
If the user starts the playlist and the first content item is a live content item that is not available (i.e. broadcast has not yet begun), then playlist application 245 can be set to instruct processing unit 215 to search the one or more tables of the next (or random if play is not sequential) content item in the playlist. In this example, at block 6020, after the user starts the playlist, playlist application 245 determines that the “availability” flag is set to “no” indicating that the content is unavailable. At step 6015, Playlist application 245 instructs processing unit 215 to search the one or more tables associated with playlist Diana1 for the next content item in the playlist. At block 6020, playlist application 245 instructs processing unit 215 to determine if the content is available or unavailable. In this example, playlist application 245 instructs processing unit 215 to request the state of the “available” flag for the unique ID of the content item from video content information server 4055. In response, video content information server 4055 searches its databases for the unique ID and associated information, such as the setting of the “available” flag. Depending on the content item availability, video content information server 4055 sends either a “yes” or “no” representing the “available” flag to set-top terminal 200. In this example, the flag is set to “yes” indicating that the content is available. In this example, the flag is set to “yes” because the content item is a video on demand content item.
At block 6022, playlist application 245 instructs processing unit 215 to determine if the content item is expired or not expired. In this example, playlist application 245 instructs processing unit 215 to request the state of the “ExpirationDate” flag for the unique ID of the content item from video content information server 4055. In response, video content information server 4055 searches its databases for the unique ID and associated information, such as the setting of the “ExpirationDate” flag. Depending on the content item expiration date, video content information server 4055 sends either a “yes” or “no” representing the “ExpirationDate” flag to set-top terminal 200. In this example, the flag is set to “no” indicating that the content is not expired. In this example, the flag is set to “no” because the content item is a video on demand content item that has not expired. If, at block 6022, the “ExpirationDate” flag is set to “yes” then playlist application instructs processing unit 215 to go to step 6015. At step 6025, playlist application 245 instructs processing unit 215 to determine the content item location. Knowing that the content item is available and not expired, playlist application 245 instructs processing unit 215 to determine the content item location from the one or more tables associated with the playlist Diana1. In this example, the device address is that of video content stores 4060 and the content item address is an address of a storage location within video content stores 4060. At step 6030, playlist application 245 instructs processing unit 245 to access the content item for the user to view.
In one or more embodiments, the Playlist can also keep track of the number of views for a particular content item.
After the content item discussed above is viewed, at step 6015, playlist application 245 instructs processing unit 215 to search the tables associated with the playlist Diana1 for the next content item in the playlist, which is SciFi Sitcom Series. In this example, after a content item is provided and viewed, at step 6030, playlist application 245 instructs processing unit 215 to search the tables associated with the playlist Diana1 for the next content item in the playlist, at step 6015. According to the playlist Diana1, shown above in the table above, the content item is a video on demand content item. At step 6015, playlist application 245 instructs processing unit 215 to search the one or more tables associated with playlist Diana for the next content item in the playlist. At block 6020, playlist application 245 instructs processing unit 215 to determine if the content is available or unavailable. In this example, playlist application 245 instructs processing unit 215 to requests the state of the “available” flag for the unique ID of the content item from video content information server 4055. In response, video content information server 4055 searches its databases for the unique ID and associated information, such as the setting of the “available” flag. As mentioned earlier, depending on the content item availability, video content information server 4055 sends either a “yes” or “no” to set-top terminal 200. In this example, the flag is set to “yes” indicating that the content is available because the content item is a video on demand content item.
At block 6022, playlist application 245 instructs processing unit 215 to determine if the content item is expired or not expired. In this example, playlist application 245 instructs processing unit 215 to request the state of the “ExpirationDate” flag for the unique ID of the content item from video content information server 4055. In response, video content information server 4055 searches its databases for the unique ID and associated information, such as the setting of the “ExpirationDate” flag. Depending on the content item expiration date, video content information server 4055 sends either a “yes” or “no” representing the “ExpirationDate” flag to set-top terminal 200. In this example, the flag is set to “no” indicating that the content is not expired. In this example, the flag is set to “no” because the content item is a video on demand content item that has not expired. If, at block 6022, the “ExpirationDate” flag is set to “yes” then playlist application instructs processing unit 215 to go to step 6015.
At step 6025, playlist application 245 instructs processing unit 215 to determine the content item location. Knowing that the content item is available and not expired, playlist application 245 instructs processing unit 215 to determine the content item location from the one or more tables associated with the playlist Diana1. In this example, the device address is that of video content stores 4060 and the content item address is an address of a storage location within video content stores 4060. At step 6030, after determining the content item address and device address (content item location), playlist application 245 instructs processing unit 215 to request the content item from video content stores 4060. Video content stores 4060 searches its databases for the particular content item and establishes a video connection with set-top terminal 200. In one or more embodiments, delivery of the content can be over IP using well-known streaming protocols, or content can be delivered over a QAM transport stream.
After the content item discussed above is viewed, at step 6015, playlist application 245 instructs processing unit 215 to search the tables associated with the playlist Diana1 for the next content item in the playlist, which is Gameshow on NW2. In this non-limiting example, according to the playlist, the content item was recorded and stored locally in DVR of set-top terminal 200 at a particular time and date. At block 6020, playlist application 245 instructs processing unit 215 to determine if the content is available or unavailable. In this example, playlist application 245 instructs processing unit 215 to request the state of the “available” flag for the unique ID of the content item from video content information server 4055. In response, video content information server 4055 searches its databases for the unique ID and associated information, such as the setting of the “available” flag. In this example, the flag is set to “yes” indicating that the content is available because the content item is recorded. At block 6022, playlist application 245 instructs processing unit 215 to determine if the content item is expired or not expired. In this example, playlist application 245 instructs processing unit 215 to request the state of the “ExpirationDate” flag for the unique ID of the content item from video content information server 4055. In response, video content information server 4055 searches its databases for the unique ID and associated information, such as the setting of the “ExpirationDate” flag. Depending on the content item expiration date, video content information server 4055 sends either a “yes” or “no” representing the “ExpirationDate” flag to set-top terminal 200. In this example, the flag is set to “no” indicating that the content is not expired. In this example, the flag is set to “no” because the content item is, as indicated in the table, a local DVR content item that has not expired.
If, at block 6022, the “ExpirationDate” flag is set to “yes,” then playlist application instructs processing unit 215 to go to step 6015. At step 6025, playlist application 245 instructs processing unit 215 to determine the content item location. Knowing that the content item is available and not expired, playlist application 245 instructs processing unit 215 to determine the content item location from the one or more records associated with the playlist Diana1. In this example, the device address is that of the local DVR in set-top terminal 200 and the content item address is an address within the local DVR. At step 6030, after determining the content item address and device address (content item location) of the content item, playlist application 245 instructs processing unit 215 to start the DVR and play the content item. Alternatively, if it is determined that the content item in the playlist is located or stored on network DVR 4070, then playlist application 245 instructs processing unit 215 to request the content item at the particular address from network DVR 4070.
If it is determined that a content item is a program from an online content library on the Internet, then playlist application 245 instructs set-top terminal 200 to communicate with content distribution network 4045 requesting the content, enabling the user to view the content. In one or more embodiments, the content can be streamed over an IP network using well-own streaming protocols such as HLS, HSS, DASH, and the like.
Free or paid-for-content can be monitored in a playlist. Playlist application 245 can be set to instruct processing unit 215 to check a playlist for free content. For example, playlist application can search the one or more tables of a playlist and if the entire playlist consists of free content items, playlist application 245 instructs processing unit 215 to set a “FreeOnly” property to “yes.” If the playlist does not consist entirely of free content items, playlist application 245 instructs processing unit 215 to set the “FreeOnly” property to “no.” If this property is set to “no,” the user is prompted with a “consent” window when content is about to be played. If the paid-for-content is to be recorded, the user is prompted with a “consent” window when the user selects the paid-for-content item during the creation or changing of the playlist.
The amount of content items in a playlist can also be monitored. Playlist application 245 can be set to instruct processing unit 215 to check a playlist for the amount of content items. For example, playlist application 245 can instruct processing unit 215 to search the one or more tables of a playlist, count the number of content items, and set the “NumberOfAssets” property to the number of content items in the playlist.
In one or more embodiments, the playlist can also automatically purge items on the list if they are viewed a certain number of times or expired or never viewed, thus allowing automatic clean up and/or management of the playlist.
Playlist application 245 can also monitor of the number of content items available for viewing. For example, when a content item is available or recorded, playlist application 245 instructs processing unit 215 to advance a counter and store the counter value in a “NumbersReady” property. This value is presented to the user by way of the user interface menu.
Another exemplary playlist property is “LastPlayedPosition.” This can be stored, for example, as itemNumber:NPT where itemNumber is the item number of the last played content item in the playlist, and “NPT” is the normal play time where the viewing of that item ceased. The LastPlayedPosition may change if the playlist is modified. For example, the LastPlayedPosition can be marked as itemNumber:NPT as well as with title and/or name of the program for cross reference. If the playlist is modified, the itemNumber will be updated as well to point to the same content as last time.
Still another exemplary playlist property is “ListOfItems” as discussed above.
For a playlist that includes live content items as well as OnDemand or DVR content items, playlist application 245 can instruct processing unit 215 to give higher priority to live content items and schedule the OnDemand or DVR content items in any unscheduled timeslots in the playlist. Further, if the playlist has an empty timeslot, playlist application 245 can instruct processing unit 215 to fill the timeslot with a content item selected from OnDemand or DVR.
As mentioned above, from the menu the user may select different options, such as “edit” an existing playlist, “share” a playlist, “import” a playlist from other users' playlists, or “recommendations” for a playlist. Using the user interface, the user can select the option to “edit” an existing playlist. In response to the user inputs or selections, playlist application 245 instructs processing unit 215 to search in the one or more tables associated with the playlist for content items to delete or, for example, to search the EPG or elsewhere for content items to add to the playlist. The user can also change the order of content items in a playlist. For example, when content items are added to a playlist, playlist application 245 instructs processing unit 215 to store an order number associated with the content item in one or more tables associated with the playlist. When the user changes the order of a content item, playlist application 245 instructs processing unit 215 to rearrange the sequence of the order numbers associated with the content items in the playlist to match then new order.
Other options in the menu may include an option to “share” a playlist with one or more friends. In response to the user's inputs and/or selections, playlist application 245 instructs processing unit 215 to set the “share” property of the playlist to, for example, one of private, friends, family, group, and public. In the case of sharing the playlist with a friend, the “share” property is set to “friends” and the user may grant the friend permission to read a playlist “in the cloud,” or may send a user a link to a playlist. The friend can then “import” the playlist from user profile/configuration server 4080. Alternatively, user may simply email the playlist to a friend.
Based on the user preference, playlist application 245 can instruct processing unit 215 to prioritize the live content items over OnDemand content items and rearrange the sequence as necessary. For a playlist that only includes live content items, if there are any schedule gaps between live content items on the playlist, playlist application 245 can instruct processing unit 215 to select content items for the user based on user preference, recommendations from other live content items, or any other content on the DVR/OnDemand service. The selection of content items in a playlist can be dynamic; for example, via a recommendation engine that bases its recommendations on viewing behavior, preferences, or user inputs. For example, in the case of viewing behavior, the recommendation engine can base a recommended playlist or content items on a user's favorite channels and/or programs at preferred schedules. Over time, playlist application 245 can instruct processing unit 215 to track content items watched by the user and, for example, not play or recommend some of the previously viewed content items for a configurable time period. The consumption data can also be useful metrics for targeted advertising campaigns.
In another aspect, given an EEG device, such as the NeuroSky MindSet, a person's brainwave pattern can be scanned (for example, while he or she watches TV), and depending on different brainwave patterns, a playlist can be created or content recommended based on the user's interests over time and/or current mental state or desired future mental state. In some cases, this can be accomplished without any conscious interaction with the system. Of course, such a feature is only implemented with informed consent of the user, who voluntarily wears the required headset.
By way of example, using a brain-to-computer interface, brainwaves associated with the enjoyment of watching certain content items can lead to such content being added to a playlist. In another aspect, an existing playlist can be recommended or selected based on current brain activity and possibly also based on a desired state or mood that it is desired to achieve. For example, a user in a relaxed state may desire to enter a more energetic state to facilitate a physical workout. A gradual warm-up playlist may initially be selected and when the brainwave activity indicates that the brain is “ready to go” a “hard rock” playlist may be selected to motivate the user to energetically exercise. In another example, detection of brainwaves consistent with an agitated user may result in selection of a soothing playlist of nature or gardening videos to allow the person to relax. Thus, in one or more embodiments, the behavior of the user is not monitored; rather, detection of the user's brainwave patterns allow inferences about his or her mental state with concomitant action such a selecting a playlist to complement or alter such state or to select an item for a playlist based on its effect on the user's brainwave patterns.
Furthermore in this regard, in some instances, a suitable application 1401 can be downloaded to a device 1403 such as mobile phone or other portable device 4015, IP STB 4005, computer 4020, or STB 200 or 4025. The device (see 200, 1000) on which the application runs interfaces with a brainwave-reading headset 1405 such as those available from NeuroSky, Inc., San Jose, Calif., USA, via a suitable application program interface 1407 and a wired or wireless communications interface (e.g., Bluetooth 1409). The application monitors the brainwaves to obtain an indication of the user's current activity level and/or mental state. For example, a Delta brainwave of 0.1 Hz to 3 Hz may be associated with deep, dreamless sleep, non-REM sleep, or unconsciousness; a Theta brainwave of 4 Hz to 7 Hz may be associated with intuitive, creative, recall, fantasy, imaginary, and/or dream activities; an Alpha brainwave of 8 Hz to 12 Hz may be associated with relaxed, but not drowsy, tranquil, conscious state(s); a Low Beta brainwave of 12 Hz to 15 Hz may be associated with a relaxed yet focused, integrated state; a Midrange Beta of 16 Hz to 20 Hz may be associated with a thinking, aware of self & surroundings state; a High Beta brainwave of 21 Hz to 30 Hz may be associated with alertness and/or agitation; and a Gamma brainwave of 30 Hz to 100 Hz may be associated with motor functions and/or higher mental activity.
An agitated user may want to be relaxed and so may seek to obtain an Alpha or Low Beta pattern. Logic in application 1401 may initially activate a playlist or program to achieve a mid-range Beta state to get the user's focus off of agitating thoughts, and then may seek to obtain a Low Beta state via a playlist with suitable content such as gardening or the like; material that can be viewed and enjoyed without significant cognitive demands. Then, it may be desirable to activate a further playlist to attain an Alpha state, with even more relaxing content.
Application 1401 may operate on raw data (e.g., sensed brainwave frequency) or may receive an indication of mental state based on the sensed brainwaves. Application 1401, as noted, includes logic to select existing playlist(s) and/or recommend additions to a new or existing playlist based on sensed brainwaves.
While a content item in a playlist is running, a user can bookmark any point in the content item and can access the bookmark later to continue playing the playlist from the bookmark point. A user can pause the playlist and continue to play from the paused point. Live content items can be paused using a time-shifted buffer in any device which consumes assets on the playlist. If, for example, a live content item is paused for period that is longer than the time shifted buffer can support, and if a DVR is available either on the receiver or the network, the live content item is recorded. A bookmark is automatically created when a viewing session of a playlist is terminated, so the user can resume viewing the playlist at a later time from the point of termination. The user can fast forward, rewind, forward skip, and/or reverse skip to a scene in a content item. A playlist can be configured to allow/disallow fast forward/review/skip functions based on content item metadata. The user can start to view a content item from any previously bookmarked point and/or the beginning of any content contained in the playlist, and can also search for a scene/marker in all the content items in a playlist. A search can be based on text search, for example, searching on the text contained in closed caption embedded in the video content, and/or on a local or remote database that contains metadata that is synchronized/mapped to scenes in video content. The search can also be based on ACR (Automated Content Recognition) technology. The user can optionally stop the playlist and return to the main menu. At the end of the playlist, the application returns to the main menu.
Thus, one or more embodiments are not limited to playlists in the cable/MSO VOD environment, wherein all the playlist assets are from VOD system. On the contrary, one or more embodiments are capable of creating a playlist with items from live broadcast on RF and IP, in home DVR(s), NDVR, home PC and portable devices, and contents in the private network and/or public network (Internet, such as video-sharing web sites and the like). In one or more embodiments, the playlist application also coordinates the sharing of resources, so that the items on the playlist can be recorded/downloaded onto difference devices and later the recorded contents can be shared/watched on the same or other devices (as the one recorded on). One or more embodiments of a playlist application also have a client/server feature, in that the playlist can be created/edited either on the server, or on the local devices, and then synchronized with ones on the server.
Given the discussion thus far, it will be appreciated that, in general terms, an exemplary method, according to an aspect of the invention, includes the step of providing a playlist server application on a server (in some instances, a playlist server; server 4080 is a non-limiting example) at a first network node (e.g., head end, data center, or other node remote from the CPE or other devices). An additional step includes providing a playlist local application for a remote device (e.g., one or more of elements 4025, 200, 4020, 4005, 4015). Application 245 is a non-limiting example. A still further step is obtaining an indication of a change (e.g., initial construction of the playlist or editing a pre-existing playlist) to a playlist on one of the server and the remote device from a corresponding one of the playlist server application and the playlist local application. This step can be carried out, for example, by obtaining user input to the corresponding application. See, e.g., discussion of
In some instances, a further step includes constructing the playlist by designating at least one content item from each of a multi-service operator system and a location outside the multi-service operator system.
The at least one content item from the multi-service operator system could be obtained, for example, from any one, some, or all of a video-on-demand server 4035, a live broadcast channel 4010; a local digital video reorder (e.g., part of or connected to box 200); or a network digital video recorder 4070. “Live” in this context means currently being broadcast and may or may not refer to a “live” event such as a sports event.
The at least one content item from the location outside the multi-service operator system could be obtained, for example, from any one, some, or all of a live internet protocol television channel 4085, a desktop computing device 4020 having an internet protocol network connection; a portable computing device 4015 having an internet protocol network connection; or a video-sharing web site accessible over an internet protocol network connection (e.g., one or more servers such as 1000 connected to the Internet). Again, “live” in this context means currently being broadcast and may or may not refer to a “live” event such as a sports event.
In some instances, a still further step includes playing the playlist including the at least one content item from the multi-service operator system and the at least one content item from the location outside the multi-service operator system at a given device. See, e.g.,
In some cases, in the playing step, the given device is the remote device, and the remote device is capable of consuming the playlist content.
In some cases, an additional step includes obtaining from a user a search query for at least one of a scene and a marker; and carrying out a search for the at least one of a scene and a marker across all of the content items in the playlist (non-limiting exemplary search techniques include text searching in a closed caption, searching in metadata associated with one or more of the content items, and searching via automated content recognition). Again, see, e.g., discussion of
In another aspect, an exemplary method includes the step of providing a playlist server application on a server (in some instances, a playlist server; server 4080 is a non-limiting example) at a first network node (e.g., head end, data center, or other node remote from the CPE or other devices). A further step includes constructing a playlist via the playlist server application. The playlist in turn includes at least one content item from each of a multi-service operator system; and a location outside the multi-service operator system.
The at least one content item from the multi-service operator system could be obtained, for example, from any one, some, or all of a video-on-demand server 4035, a live broadcast channel 4010; a local digital video reorder (e.g., part of or connected to box 200); or a network digital video recorder 4070. “Live” in this context means currently being broadcast and may or may not refer to a “live” event such as a sports event.
The at least one content item from the location outside the multi-service operator system could be obtained, for example, from any one, some, or all of a live internet protocol television channel 4085, a desktop computing device 4020 having an internet protocol network connection; a portable computing device 4015 having an internet protocol network connection; or a video-sharing web site accessible over an internet protocol network connection (e.g., one or more servers such as 1000 connected to the Internet). Again, “live” in this context means currently being broadcast and may or may not refer to a “live” event such as a sports event.
Any of the methods can be carried out, at least in part, with one or more distinct software modules embodied on a non-transitory tangible computer-readable recordable storage medium, executing on one or more hardware processors, and can also include the additional step of providing a system including the modules and optionally the at least one processor. For example, the modules can include a playlist server application and/or a playlist local application with code to implement the corresponding logic in the flow charts.
In another aspect, an exemplary server (in some instances, a playlist server; server 4080 is a non-limiting example) for interfacing with a remote device (e.g., one or more of elements 4025, 200, 4020, 4005, 4015). The server includes at least one hardware processor 1020, at least one memory 1030 coupled to the at least one hardware processor, and a playlist server application software module, embodied on a non-transitory tangible computer-readable recordable storage medium. The playlist server application software module, when loaded into the memory, causes the at least one hardware processor to obtain an indication of a change to a playlist on one of the server and the remote device; and synchronize the change to another one of the server and the remote device. Refer to discussion of the method(s) above.
In some cases, the playlist server application software module, when loaded into the memory, further causes the at least one hardware processor to construct the playlist by designating at least one content item from each of: a multi-service operator system; and a location outside the multi-service operator system. Again, refer to discussion of the method(s) above.
In still another aspect, an exemplary apparatus (e.g., server (in some instances, a playlist server; server 4080 is a non-limiting example) or remote device such as 200, 4005, 4015, 4020, 4025, 4030) includes at least one hardware processor 1020, at least one memory 1030 coupled to the at least one hardware processor, and a playlist application software module, embodied on a non-transitory tangible computer-readable recordable storage medium (e.g., playlist server application software module or playlist local application software module as the case may be). The playlist application software module, when loaded into the memory, causes the at least one hardware processor to construct a playlist which comprises at least one content item from each of: a multi-service operator system; and a location outside the multi-service operator system. Once again, refer to discussion of the method(s) above.
In a further aspect, a remote device (e.g., 200, 4005, 4015, 4020, 4025, 4030) for interfacing with a server (in some instances, a playlist server; server 4080 is a non-limiting example) includes at least one hardware processor 215, 1020, at least one memory 210, 1030 coupled to the at least one hardware processor; and a playlist local application software module (245 is a non-limiting example), embodied on a non-transitory tangible computer-readable recordable storage medium. The playlist local application software module, when loaded into the memory, causes the at least one hardware processor to: obtain an indication of a change to a playlist on one of the server and the remote device; and synchronize the change to another one of the server and the remote device. In some cases, the playlist local application software module, when loaded into the memory, further causes the at least one hardware processor to construct the playlist by designating at least one content item from each of: a multi-service operator system; and a location outside the multi-service operator system.
In still a further aspect, referring to
System and Article of Manufacture Details
The invention can employ hardware aspects or a combination of hardware and software aspects. Software includes but is not limited to firmware, resident software, microcode, etc. One or more embodiments of the invention or elements thereof can be implemented in the form of an article of manufacture including a machine readable medium that contains one or more programs which when executed implement such step(s); that is to say, a computer program product including a tangible computer readable recordable storage medium (or multiple such media) with computer usable program code configured to implement the method steps indicated, when run on one or more processors. Furthermore, one or more embodiments of the invention or elements thereof can be implemented in the form of an apparatus including a memory and at least one processor that is coupled to the memory and operative to perform, or facilitate performance of, exemplary method steps.
Yet further, in another aspect, one or more embodiments of the invention or elements thereof can be implemented in the form of means for carrying out one or more of the method steps described herein; the means can include (i) specialized hardware module(s), (ii) software module(s) executing on one or more general purpose or specialized hardware processors, or (iii) a combination of (i) and (ii); any of (i)-(iii) implement the specific techniques set forth herein, and the software modules are stored in a tangible computer-readable recordable storage medium (or multiple such media). Appropriate interconnections via bus, network, and the like can also be included. The means do not include a transmission medium per se or a disembodied signal per se.
The memory 1030 could be implemented as an electrical, magnetic or optical memory, or any combination of these or other types of storage devices. It should be noted that if distributed processors are employed, each distributed processor that makes up processor 1020 generally contains its own addressable memory space. It should also be noted that some or all of computer system 1000 can be incorporated into an application-specific or general-use integrated circuit. For example, one or more method steps could be implemented in hardware in an ASIC rather than using firmware. Display 1040 is representative of a variety of possible input/output devices (e.g., keyboards, mice, and the like). Every processor may not have a display, keyboard, mouse or the like associated with it.
As is known in the art, part or all of one or more aspects of the methods and apparatus discussed herein may be distributed as an article of manufacture that itself includes a tangible computer readable recordable storage medium having computer readable code means embodied thereon. The computer readable program code means is operable, in conjunction with a computer system (including, for example, system 1000 or the like), to carry out all or some of the steps to perform the methods or create the apparatuses discussed herein. A computer readable medium may, in general, be a recordable medium (e.g., floppy disks, hard drives, compact disks, EEPROMs, or memory cards) or may be a transmission medium (e.g., a network including fiber-optics, the world-wide web, cables, or a wireless channel using time-division multiple access, code-division multiple access, or other radio-frequency channel). Any medium known or developed that can store information suitable for use with a computer system may be used. The computer-readable code means is any mechanism for allowing a computer to read instructions and data, such as magnetic variations on a magnetic media or height variations on the surface of a compact disk. The medium can be distributed on multiple physical devices (or over multiple networks). As used herein, a tangible computer-readable recordable storage medium is defined to encompass a recordable medium, examples of which are set forth above, but is defined not to encompass a transmission medium or disembodied signal.
The computer systems and servers and other pertinent elements described herein each typically contain a memory that will configure associated processors to implement the methods, steps, and functions disclosed herein. The memories could be distributed or local and the processors could be distributed or singular. The memories could be implemented as an electrical, magnetic or optical memory, or any combination of these or other types of storage devices. Moreover, the term “memory” should be construed broadly enough to encompass any information able to be read from or written to an address in the addressable space accessed by an associated processor. With this definition, information on a network is still within a memory because the associated processor can retrieve the information from the network.
Accordingly, it will be appreciated that one or more embodiments of the present invention can include one or more computer programs comprising computer program code means adapted to perform one or all of the steps of any methods or claims set forth herein when such program is run, for example, on the server 4080, set-top terminal 200, 4025, or 4005; computer/device 4015/4020; or the like, and that such program may be embodied on a tangible computer readable recordable storage medium. As used herein, including the claims, a “server” includes a physical data processing system (for example, system 1000 as shown in
Furthermore, it should be noted that any of the methods described herein can include an additional step of providing a system comprising distinct software modules embodied on one or more tangible computer readable storage media. All the modules (or any subset thereof) can be on the same medium, or each can be on a different medium, for example. The modules can include, for example, a playlist server application and a playlist local application; in general, any or all of the components shown in the figures and/or described herein. The method steps can then be carried out using the distinct software modules of the system, as described above, executing on one or more hardware processors (e.g., a processor or processors in a server 4080, set-top terminal 200, 4025, or 4005; computer/device 4015/4020; processor 1020; and the like). Further, a computer program product can include a tangible computer-readable recordable storage medium with code adapted to be executed to carry out one or more method steps described herein, including the provision of the system with the distinct software modules.
Accordingly, it will be appreciated that one or more embodiments of the invention can include a computer program including computer program code means adapted to perform one or all of the steps of any methods or claims set forth herein when such program is implemented on a processor, and that such program may be embodied on a tangible computer readable recordable storage medium. Further, one or more embodiments of the present invention can include a processor including code adapted to cause the processor to carry out one or more steps of methods or claims set forth herein, together with one or more apparatus elements or features as depicted and described herein.
Although illustrative embodiments of the present invention have been described herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to those precise embodiments, and that various other changes and modifications may be made by one skilled in the art without departing from the scope or spirit of the invention.
This application is a divisional of U.S. application Ser. No. 15/644,747 filed Jul. 8, 2017, the complete disclosure of which is expressly incorporated herein by reference in its entirety for all purposes; U.S. application Ser. No. 15/644,747 is in turn a divisional of U.S. application Ser. No. 13/798,070 filed Mar. 12, 2013, the complete disclosure of which is also expressly incorporated herein by reference in its entirety for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
7624416 | Vandermolen et al. | Nov 2009 | B1 |
8234679 | Lawrence-Apfelbaum | Jul 2012 | B2 |
9706237 | Chen et al. | Jul 2017 | B2 |
20030056217 | Brooks | Mar 2003 | A1 |
20030093790 | Logan et al. | May 2003 | A1 |
20050278761 | Gonder | Dec 2005 | A1 |
20080022012 | Wang | Jan 2008 | A1 |
20080065989 | Conroy | Mar 2008 | A1 |
20090150941 | Riedl | Jun 2009 | A1 |
20100324704 | Murphy | Dec 2010 | A1 |
20110087665 | Weare | Apr 2011 | A1 |
20110126233 | Scott | May 2011 | A1 |
20120054808 | Nijim | Mar 2012 | A1 |
20120057853 | Huber | Mar 2012 | A1 |
20120060195 | Fishman | Mar 2012 | A1 |
20140068688 | Sarosi | Mar 2014 | A1 |
20140282772 | Chen et al. | Sep 2014 | A1 |
20170311023 | Chen et al. | Oct 2017 | A1 |
Entry |
---|
Micro Headphones scan brainwaves to match songs to your mood, Johnathan Fincher (Year: 2013). |
“NeuroSky Store—Developer Tools 3: iOS” downloaded from http://store.neurosky.com/products/developer-tools-3-iphone on Mar. 5, 2013, pp. 1-3. |
“NeuroSky Store—Developer Tools 3: Android” downloaded from http://store.neurosky.com/products/developer-tools-3-android on Mar. 5, 2013, pp. 1-3. |
“NeuroSky Store—Developer Tools 2.1” downloaded from http://store.neurosky.com/products/developer-tools-2-1 on Mar. 5, 2013, pp. 1-3. |
“Brain Wave Signal (EEG) of NeuroSky, Inc.” Dec. 15, 2009, NeuroSky, Inc., pp. 1-22. |
“OpenCable™ Specifications, ETV, Enhanced TV Binary Interchange Format, OC-SP-ETV-B1F1.0.1-120614”. Cable Television Laboratories, Inc. Jun. 14, 2012, pp. I-XVIII, 1-355. |
“EIDR—A universal unique identifier for movie and television assets”. downloaded from http://eidr.org/ on Feb. 22, 2013, pp. 1-2. |
“Mico headphones scan brainwaves to match songs to your mood” downloaded from http://www.gizmag.com/neurowear-mico-headphones/26627/ on Mar. 20, 2013, pp. 1-5. |
Number | Date | Country | |
---|---|---|---|
20190238916 A1 | Aug 2019 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15644747 | Jul 2017 | US |
Child | 16377187 | US | |
Parent | 13798070 | Mar 2013 | US |
Child | 15644747 | US |