The present invention relates generally to multimedia content and, more specifically, to a method for changing media streams in a manner that allows the beginning of programming segments to be viewed.
In the world today, there are many different streams, or channels, of information and entertainment. With so many programming choices, viewers frequently change the channel from one program to another. This type of activity is often referred to as “channel surfing.” One issue with channel surfing is that often the channel is changed to a program that is in the middle of a programming segment. For example, if a viewer changes to a news channel, an interesting story may be reaching the end, thus causing the viewer to either miss the bulk of the story or be forced to wait until the story is repeated at a later time.
Current technology does not enable a consumer to recapture portions of programming that have occurred prior to the point in time the consumer tunes in to the programming. Consumers thus may only be able to view a fraction of a particular programming choice, which may have cost a producer of such content a large amount of money to produce. Both consumers and producers have a vested interest in providing the consumer with a means to access content in its entirety.
What is needed is a method of providing a viewer with an entire programming segment regardless of when the particular segment is tuned in. If, for example, a viewer turns into a news story after the beginning of the segment, the viewer should have the option to view the particular segment from the beginning. In the alternative, the viewer should have the option to view the entire news program from the beginning.
Provided is a method for caching a media stream such as a television channel or a radio station such that a viewer or listener may receive an entire programming segment regardless of when in the segment the stream is accessed. For example, if a user changes to a news channel on a television, the claimed technology enables the user to elect to view a particular story, or the entire news program, from the beginning rather than merely from the point in time that the stream was first received.
The claimed technology employs a local storage to denote and cache a current content of a particular segment. In the case of Internet protocol (IP) television, or “web-TV,” the beginning of a segment is recalled, or downloaded, to a local cache during a switch to the channel transmitting the segment. Playback markers are associated with data blocks of the cache. The current streaming of the segment is also cached as the segment is transmitted. The user views the segment from the beginning, first from the cache downloaded when the channel is switched and, then, from the local cache stored as the programmed is viewed.
In the case of broadcast television or radio, a number of channels or stations, respectively, are designated as monitored streams. The programming on monitored streams is segmented into programs or smaller segments and the segments are cached on local memory as the programs are broadcast. For example, a movie channel is designated as a monitor stream and each movie is cached when the movie begins. A playback marker is associated with a data block corresponding to the start of the movie. If the viewer accesses the movie in the middle, the entire movie is displayed starting from the cached portion associated with the playback marker. In the alternative, segments may be associated with a playback marker based upon the detection of a commercial and only a particular segment such as a scene following the latest commercial is cached.
Once a program or segment has concluded, if the monitored channel has not been accessed, the cache is typically deleted to make room for the next program or segment. Of course, with improvements in storage technology, the amount of cached material may cease to be an issue and entire programs or multiple programs and/or segments may remain in the cache at any particular point in time.
This summary is not intended as a comprehensive description of the claimed subject matter but, rather, is intended to provide a brief overview of some of the functionality associated therewith. Other systems, methods, functionality, features and advantages of the invention will be or will become apparent to one with skill in the art upon examination of the following figures and detailed description.
A better understanding of the present invention can be obtained when the following detailed description of the disclosed embodiments is considered in conjunction with the following figures, in which:
Although described with particular reference to an IP-enabled television, the claimed subject matter can be implemented in any media content distribution system in which convenience of access is desirable. Those with skill in the computing arts will recognize that the disclosed embodiments have relevance to a wide variety of computing environments in addition to those described below. In addition, the methods of the disclosed invention can be implemented in software, hardware, or a combination of software and hardware. The hardware portion can be implemented using specialized logic; the software portion can be stored in a memory and executed by a suitable instruction execution system such as a microprocessor, personal computer (PC) or mainframe.
In the context of this document, a “memory” or “recording medium” can be any means that contains, stores, communicates, propagates, or transports the program and/or data for use by or in conjunction with an instruction execution system, apparatus or device. Memory and recording medium can be, but are not limited to, an electronic, magnetic, optical, electromagnetic or semiconductor system, apparatus or device. Memory an recording medium also includes, but is not limited to, for example the following: a portable computer diskette, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), and a portable compact disk read-only memory or another suitable medium upon which a program and/or data may be stored.
One embodiment, in accordance with the claimed subject, is directed to a programmed method for recalling selected media content at arbitrary times such that portions of the content are not missed. The term “programmed method”, as used herein, is defined to mean one or more process steps that are presently performed; or, alternatively, one or more process steps that are enabled to be performed at a future point in time. The term programmed method anticipates three alternative forms. First, a programmed method comprises presently performed process steps. Second, a programmed method comprises a computer-readable medium embodying computer instructions, which when executed by a computer performs one or more process steps. Finally, a programmed method comprises a computer system that has been programmed by software, hardware, firmware, or any combination thereof, to perform one or more process steps. It is to be understood that the term “programmed method” is not to be construed as simultaneously having more than one alternative form, but rather is to be construed in the truest sense of an alternative form wherein, at any given point in time, only one of the plurality of alternative forms is present.
It should be noted that, although devices 102, 114 and 116 are illustrated as separate devices; a large degree of integration is possible. For example, the recording and playback capabilities of DVD player/recorder 116 may be incorporated into computing system 102 and/or television 114. Those with skill in the relevant arts should appreciate the extent to which the capabilities of such devices are currently, and may be, integrated into single units.
Computing system 102 includes a central processing unit (CPU) 104, coupled to a monitor 106, a keyboard 108 and a mouse 110, which together facilitate human interaction with computer 102. Also included in computer 102 and attached to CPU 104 is a data storage component 112, which may either be incorporated into CPU 104 i.e. an internal device, or attached externally to CPU 104 by means of various, commonly available connection devices such as but not limited to, a universal serial bus (USB) port (not shown).
In this example, television 114 is Internet-enabled or, in other words, able to download an appropriate signal from Internet 124. Television 114 is also able to receive programming from a cable 128. Programming signals are transmitted by content provider 126 via Internet 124 or cable 128. In other words, content provider 126 may transmit programming to television via Internet 124, cable 128 or both. PCD 118, which in this example implements the claimed functionality, is illustrated as a stand alone device. It should be noted that in alternative embodiments PCD 118 and the associated functionality may be coupled to or incorporated into content provider 126, television 114, computing system 102 or a stand-alone device in the transmission path between television 114 and content provider 126 via Internet 124. Configuration and operation of PCD 118 are described in more detail below in conjunction with
Processor 132 controls the coordination of modules 134, 136, 138, 140 and 142 while executing the claimed subject matter. Memory 134 provides storage for data and executables employed by processor 132. PCD configuration module 136 provides involatile storage for information employed in the claimed subject matter. Simply stated, module 136 stores information related to various programming streams to be monitored and cache as well as various caching options. The monitoring streams and caching options are described in more detail below in conjunction with
Input/Output (I/O) port 138 handles communication between PCD 118 and target devices such as television 114 (
Attribute section 202 includes a “cdoID” attribute 208, a “channelID” attribute 210, a “cacheParameters” attribute 212, a “programID” attribute 214, a cacheBlocks attribute 216, an “activated” attribute 218, and a playback marker (PBM) attribute 220. Instantiations of object 200 are stored in PCD config 136 (
CdoID attribute 208 is a variable of type CDObjectID that contains a reference to the particular instance of object 200. Each instance of object 200 has a unique value for attribute 208 that allows each instance to be uniquely identified. ChannelID attribute 210 is a variable of type ChannelObjectID that stores information to enable PCD 118 to identify a particular channel or media stream to be a target of the claimed subject matter. Examples of possible media streams are different channels received by television 114 (
CacheParameters attribute 212 is a variable of type CPObject that stores information for possible configurations for recording the channel specified in attribute 210. Logic associated with any particular configuration is typically stored in memory 134 and executed on processor 132, although specialized functions associated with a particular configuration may be stored and/or executed on one of the specialized modules 138, 140, 142 and 146 (
ProgramID attribute 214 is a variable of type ProgramObjectID that identifies a specific programming selection on the channel or media stream identified by channelID attribute 210. The identified programming selection is the target of the caching techniques described below in conjunction with
CacheBlocks attribute 216 is a variable of type Vector. Attribute 216 stores a linked series of pointers, each of which point to a block of stored content (not shown) corresponding to a portion of the selected programming identified by programID attribute 214. The setup of attribute 216 is explained in more detail below in conjunction with
Activated attribute 218 is a variable of type Boolean that stores a value indicating whether or not the CDO object 200 associated with cdoID 208 is currently active. In other words, PCD 118 provides the ability to define channels and corresponding caching schemes that may be executed in the future but are currently inactive. PBM attribute 220 is a variable of type Boolean that stores a value indicating whether or not the CDO object 200 associated with cdoID 208 is associated with a playback marker object (not shown). The use of playback markers is described in more detail below in conjunction with
Method section 206 of object 200 includes three (3) exemplary functions, or methods; i.e. an “ActivateChannel” method 222, a “ModifyParameters” method 224 and a “GetNextBlock” method 226. Methods 222, 224 and 226 are described in more detail below in conjunction with
Only three methods are illustrated for the sake of simplicity. Those with skill in the programming arts should appreciate that an object such as object 200 would typically include many additional methods including, but not limited to, constructors, destructors, and methods to set and get values for various attributes. It should be understood that CDO object 200 is only one example of a memory object that may be used to implement the claimed subject matter. Other memory objects with fewer, more and/or different attributes and methods may be employed. In addition, there are many ways other than employing object 200 to implement the functionality and data storage of the claimed subject matter. For example, the claimed subject matter may be implemented by means of a computer program in conjunction with a relational database.
Process 230 starts in a “Begin Execute PCDL” block 232 and control proceeds immediately to a “Retrieve Program Data” block 234. During block 234, process 230 downloads configuration information such as data stored in instances of ChacheDescriptorObject (CDO) memory object 200 (
During an “Exceed Parameters?” block 260, process 230 determines whether or not any limits such as storage capacity of PCD 118 have been exceeded. If so, control proceeds to a “Purge Cache” block 242 during which process 230 cleans up memory and then proceeds to a “Move playback marker (PBM)” block 244. During block 244, PCMs associated with portions of the cache that are purged are moved to appropriate memory blocks that have not been purged. Process 230 then returns to block 236, reconfigures and proceeds as described above. If during block 240, process 230 determines that parameters have not been exceeded, control returns to block 238 and processing continues as described above.
Finally, since process 230 is designed to operate continuously while PCD 118 is powered on, an asynchronous interrupt 244 is initiated to terminate process 230. Interrupt 244 causes process 230 to proceed to an “End Execute PRDL” block 249 in which process 230 is complete.
Process 260 starts in a “Begin Create Cache” block 262 and proceeds immediately to an “Identify Program” block 264. During block 264, process 260 retrieves a CDO object 200 (
During a “Detect Program Start” block 266, process 260 determines that the program identified by CDO object 200 retrieved during block 264 has commenced. Process 260 then proceeds to an “Record Block” block 262 during which process 260 stores the transmitted programming into a storage block of a type and size specified by the information stored in cacheParameters attribute 212 (
During a “PBM point?” block 272, process 260 determines whether or not the block cached and addressed during block 270 represents a point in the programming segment from which a playback is configured to be initiated. Examples of playback points include, but are not limited to, the beginning of programs and at point in the program following a commercial or other interruption. If process 260 determines that the block represents a playback point, process 260 proceeds to a “Create playback marker (PCM)” block 274. During block 274, process 260 creates a PCM data object (not shown), associates the PCM data object with the data block created during block 270 and sets pbm attribute 220 (
Following block 274, or if process 260 determines during block 272 that a playback marker is not required, control proceeds to an “End of Program?” block 276. During block 276, process 260 determines whether or not the targeted program has concluded or the storage parameters limits defined by attribute 212 have been exceeded. In other words, although a particular program may be one (2) hours in length, attribute may specify that only one (1) hour be stored in a corresponding cache. If the program has concluded or the storages parameters have been exceeded, process 260 returns to block 268 and continues recording as described above. Finally, if process 260 determines that the recording should end, control proceeds to an “End Create Cache” block 279 during which process 260 is complete.
Process 300 starts in a “Begin Display Channel” block 302 and proceeds immediately to a “Retrieve Program Request” block 304. As explained above, process 300 is initiated by a request transmitted from television 114. A request typically is transmitted when a user of television 114 changes channels such that a new program is selected for viewing. A request may be transmitted via LAN 122 (
During a “Search for Cache” block 306, process 300 scans memory 134 for a CDO memory object 200 (
If during block 308, process 300 determines that a corresponding cache exists, control proceeds to a “Display Cache?” block 312. During block 312 process 300 displays a graphical user interface (GUI) (not shown) on television 114 that enables a user to choose whether or not to view the selected programming from the current location in the transmission or from the cache. If the user chooses to view the program form the current location, process 300 proceeds to block 310 and processing continues as described above.
If during block 312 the user chooses to view the selected program from the cache, process 300 proceeds to a “Retrieve Cache” block 314. During block 314, process 300 stores the corresponding cache in memory 134 to control the transmission of the corresponding program to television 114. During a “Display From playback marker (PCM)” block 316, process 260 locates a cache block associated with the appropriate PBM, iteratively executes GetNextBlock method 226 (
The claimed subject matter may also be configured to enable a user to fast forward through or skip segments of programming. For example, during a commercial in a television program, a signal from the user initiates one or more calls to GetNextBlock method 226 prior to the completion of a current block, thus enabling PCD 118 to transmit programming either faster than normal speed or in a manner that skips undesirable programming.
While the invention has been shown and described with reference to particular embodiments thereof, it will be understood by those skilled in the art that the foregoing and other changes in form and detail may be made therein without departing from the spirit and scope of the invention, including but not limited to additional, less or modified elements and/or additional, less or modified blocks performed in the same or a different order.