US20120180099A1 - Monitoring Presentation Timestamps - Google Patents
Monitoring Presentation Timestamps Download PDFInfo
- Publication number
- US20120180099A1 US20120180099A1 US13/421,673 US201213421673A US2012180099A1 US 20120180099 A1 US20120180099 A1 US 20120180099A1 US 201213421673 A US201213421673 A US 201213421673A US 2012180099 A1 US2012180099 A1 US 2012180099A1
- Authority
- US
- United States
- Prior art keywords
- content
- timestamps
- client
- clock
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/24—Systems for the transmission of television signals using pulse code modulation
- H04N7/52—Systems for transmission of a pulse code modulated video signal with one or more other pulse code modulated signals, e.g. an audio signal or a synchronizing signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/4302—Content synchronisation processes, e.g. decoder synchronisation
- H04N21/4305—Synchronising client clock from received content stream, e.g. locking decoder clock with encoder clock, extraction of the PCR packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/4302—Content synchronisation processes, e.g. decoder synchronisation
- H04N21/4307—Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
- H04N21/43072—Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of multiple content streams on the same device
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/04—Synchronising
Definitions
- a network operator may provide a wide variety of content to clients.
- the network operator may be configured as a head end to provide television content, video-on-demand, music and so on to clients, such as televisions, digital video recorders and set-top boxes.
- the network operator typically obtains this content from content providers for streaming to the clients, such as households, businesses and so on.
- the network operator configures the content into a form that is suitable for use by the households.
- the network operator may change a format of the content, map the content to particular channels, and so on such that the content is in a form that is suitable for consumption by the clients.
- the network operator may employ a variety of devices, such as integrated receivers/decoders, encoders, servers, and so on.
- these devices may be provided through use of a distributed system. Therefore, the distribution of content between the devices and to clients may introduce data impairment. Consequently, the data impairment may lead to errors by the client when consuming the content, such as improper playback including missed frames, repeated frames, and so on. For instance, data impairment may result in “bad data” which may cause a client or a renderer of the client to stop processing data properly (e.g., “hang up”). Thus, the clients may output the content in a manner that does not follow the expected content-viewing experience.
- Techniques to monitor presentation timestamps for content are described, which may be used to render content at a client.
- content is received having timestamps that define expected timing for output of the content at a client.
- the timestamps may then be monitored and compared to a client clock to determine if the content rendered matches the content expected to be rendered.
- one or more corrective actions may be undertaken to restore output of the content to the timing defined by the timestamps.
- FIG. 1 is an illustration of an environment in an exemplary implementation that is operable to employ techniques to monitor presentation timestamps.
- FIG. 2 is an illustration of a system employing a network operator and a client of FIG. 1 in greater detail.
- FIG. 3 is a flow diagram depicting a procedure in an exemplary implementation in which timestamps are employed to output content according to a presentation clock.
- FIG. 4 is a flow diagram depicting a procedure in an exemplary implementation in which timestamps are monitored to synchronize presentation of content at a client with timing defined by the timestamps.
- Network operators typically obtain content from content providers to be streamed to clients, such as households, businesses, educational institutions, and so on.
- the network operator may employ a variety of devices to provide this content which may be implemented as a distributed system. Because the system is distributed, however, communication of content between devices and over a network may cause “bad data” to be introduced, which may cause inaccurate presentation of content at a client. For instance, “bad data” may cause a content renderer to stop processing data properly, e.g., “hang up.”
- timestamps may be associated with content available from a network operator to clients over a network. Timestamps may also be associated with contain available locally, such as from a DVD or other computer-readable media. The timestamps may define timing for output of the content. For example, the timestamps may be used to define a presentation clock for the content which is indicative of expected timing of portions of content relative to one another.
- a client clock local to the client may be initialized and executed to monitor the timing of the output content. For instance, the timestamps may be monitored and compared relative to the client clock to determine if the content rendered at a given time matches the content expected to be rendered based on the timestamps.
- one or more corrective actions may be undertaken. For instance, the client or a renderer of the client may be reset, “bad data” may be deleted or ignored, a next expected portion of content may be obtained and output based on the timestamps, and so forth. In this manner, output of the content may be restored to the timing that is defined by the timestamps.
- an exemplary environment is first described that is operable to perform techniques to monitor presentation timestamps. Exemplary procedures are then described that may be employed in the exemplary environment, as well as in other environments. Although monitoring presentation timestamps is described in a television environment in the following discussion, it should be readily apparent that these techniques may be employed in a wide variety of environments without departing from the spirit and scope thereof.
- FIG. 1 is an illustration of an environment 100 in an exemplary implementation that is operable to employ techniques to monitor presentation timestamps at a client.
- the illustrated environment 100 includes a network operator 102 (e.g., a “head end”), a client 104 , and a content provider 106 that are communicatively coupled via network connections 108 , 110 .
- the network operator 102 , the client 104 and the content provider 106 may be representative of one or more entities, and therefore reference may be made to a single entity (e.g., the client 104 ) or multiple entities (e.g., the clients 104 , the plurality of clients 104 , and so on).
- the client 104 may also relate to a person and/or entity that operate a device.
- the client 104 may describe a logical client that includes software and/or devices.
- a plurality of network connections 108 - 110 are shown separately, the network connections 108 - 110 may be representative of network connections achieved using a single network or multiple networks.
- the client 104 may be configured in a variety of ways.
- the client 104 may be configured as a computer that is capable of communicating over the network connection 108 , such as a desktop computer, a mobile station, an entertainment appliance, a set-top box communicatively coupled to a display device as illustrated, a wireless phone, and so forth.
- the content provider 106 includes one or more items of content 112 ( k ), where “k” can be any integer from 1 to “K”.
- the content 112 ( k ) may include a variety of data, such as television programming, video-on-demand, recorded video, music, web pages, and so forth.
- the content 112 ( k ) is communicated over the network connection 110 to the network operator 102 , such as through a broadcast.
- Content 112 ( k ) communicated via the network connection 110 is received by the network operator 102 and configured for distribution to the client 104 over the network connection 108 .
- Distribution from the network operator 102 to the client 104 may be accommodated in a number of ways, such as through a broadcast including cable, radio frequency (RF), microwave, digital subscriber line (DSL), and satellite.
- RF radio frequency
- DSL digital subscriber line
- the network operator 102 may employ a variety of devices which may be implemented via a distributed system, examples of which are illustrated as an integrated receiver/decoder 114 , an encoder 116 and a server 118 (e.g., distribution server) as shown in FIG. 1 .
- an integrated receiver/decoder 114 an encoder 116 and a server 118 (e.g., distribution server) as shown in FIG. 1 .
- a server 118 e.g., distribution server
- Integrated receiver/decoder 114 represents functionality to receive content 112 ( k ) from content sources, such as the content provider 106 of FIG. 1 .
- integrated receiver/decoder 114 may further represent functionality to decode the content 112 ( k ) for processing by the network operator 102 .
- the encoder 116 is representative of functionality of the network operator 102 to utilize one or more techniques to ready the content 112 ( k ) for distribution to the client 104 .
- the encoder 116 may operate to provide video and audio encoding of content 112 ( k ) from content providers 106 .
- Encoding by the encoder 116 may include compression, translation, time encoding, analog/digital conversion, and encryption techniques performed on the content 112 ( k ).
- network operator 102 includes a timestamp module 120 that may be employed to associate timing data with content 112 ( k ).
- timestamp module 120 may be implemented as a component of the encoder 116 .
- encoder 116 may further represent functionality to encode timing data in the content 112 ( k ), which may then be monitored by a client 104 to output content 112 ( k ) according the techniques described herein.
- the encoder 116 may then communicate the content 112 ( k ) to the server 118 for further processing in a variety of ways, such as through use of a Motion Picture Experts Group (MPEG) Transport Stream (TS).
- MPEG Motion Picture Experts Group
- TS Transport Stream
- Server 118 is illustrated as having distribution module 122 that may represent functionality of the network operator 102 to configure content 112 ( k ) for output (e.g., streaming) over the network connection 108 to the client 104 .
- the distribution module 122 may configure content 112 ( k ) received from the content provider 106 to be suitable for transmission over the network connection 108 , such as to “packetize” the content for distribution over the Internet, configuration for a particular broadcast channel, map the content 112 ( k ) to particular channels, and so on.
- the distribution module 122 may further encrypt “packetized” content 112 ( k ) for communication over an IP network (e.g., network connection 108 ) to client 104 .
- the encryption performed by the distribution module 122 is selected such that the client 104 may decrypt the content 112 ( k ) for rendering.
- the content provider 106 may broadcast the content 112 ( k ) over a network connection 110 to a multiplicity of network operators, an example of which is illustrated as network operator 102 .
- the network operator 102 may then stream the content 112 ( k ) over a network connection 108 to a multitude of clients, an example of which is illustrated as client 104 .
- the client 104 is depicted as having received content 124 ( c ) (where “c” can be any integer from one to “C”), which may be inclusive of content 112 ( k ) that is communicated from the network operator 102 over the network connection 108 .
- the client 104 may then output the content 124 ( c ) immediately (e.g., “streaming” playback) and/or store the content in a storage device, such as when the client 104 is configured to include digital video recorder (DVR) functionality.
- DVR digital video recorder
- the client 104 includes a communication module 126 that is representative of functionality on the client 104 to control content playback on the client 104 , such as to tune to particular channels, purchase pay-per-view content, through the use of one or more “command modes”, and so on.
- the command modes may provide non-linear playback of the content 124 ( c ) (i.e., time shift the playback of the content 124 ( c )) such as pause, rewind, fast forward, slow motion playback, and the like.
- Communication module 126 may also include functionality to interact with the network operator 102 to navigate and select content options, such as through an electronic programming guide (EPG) output at the client 104 .
- An EPG may be formed via the communication module 126 at least in part through guide data received from the network operator 102 over network connection 108 and/or using guide data received from a third party service (not shown).
- processing at the network operator 102 and/or distribution from the network operator may introduce data impairments (e.g., “bad data”).
- a traditional communication module 126 of a client 104 that is used to display the content 124 ( c ) that is delivered from the server 118 may not display the content 124 ( c ) as intended by the client 104 .
- “bad data” may cause skipping or repeating of frames in television content.
- “bad data” may even cause a client 104 to become stuck, e.g., communication module 126 at the client 104 may “hang up” or freeze on a frame of content 124 ( c ) when attempting to process/output the “bad data”.
- the “hang up” may persist until the client 104 is reset and/or reinitialized to clear the “bad data”. Naturally, such “hang ups” disrupt presentation of content 124 ( c ) via the client 104 , which may be confusing and frustrating to a viewer.
- presentation timing data associated with content 112 ( k ) may be monitored at a client 104 to avoid, detect, and/or resolve “hang ups” due to data impairments such as “bad data”. For example, based on the monitoring of timing data, a “hang up” may be detected and the communication module 126 and/or client 104 may be reset. The reset of a communication module 126 and/or client 104 based on monitoring of timing data may occur automatically and without viewer intervention.
- timing data may be associated with content 112 ( k ), such as by the encoder 116 of network operator 102 .
- timestamp module 120 may be configured to encode/associate timing data with content 112 ( k ) that defines timing for presentation of the content 112 ( k ).
- Content 112 ( k ) having timing data may then be communicated via the network connection 108 to a client 104 .
- the timing data is configured as timestamps 128 ( t ) which may be associated with portions of content 112 ( k ) to indicate expected timing of the portions one to another. Therefore, content 124 ( c ) that is received at the client 104 may include associated timestamps 128 ( t ) as illustrated in FIG. 1 .
- timestamps 128 ( t ) may be associated with successive portions of content 124 ( c ). For example, a timestamp 128 ( t ) may be associated with each frame of content 124 ( c ). Alternatively, timestamps 128 ( t ) may be associated with content 124 ( c ) at a frame interval, such as being associated with every 10 frames, 100 frames, and so forth. A variety of other examples are also contemplated.
- Timestamps 128 ( t ) may be implemented as program clock reference (PCR) timestamps provided through use of the timestamp module 120 .
- the timestamps 128 ( t ) may represent a presentation clock for a content stream.
- the timestamps 128 ( t ) may define proper and/or expected timing for playback of content 124 ( c ).
- Timestamps 128 ( t ) encoded in content 124 ( c ) may be used by the communication module 126 of the client 104 to compare to a client clock 130 . For instance, a comparison may be made between the client clock 130 and the presentation clock that is defined by the timestamps 128 ( t ) to ensure that content 124 ( c ) that is expected to be output at a given time is output at that time.
- timestamps 128 ( t ) associated with frames or portions of content 124 ( c ) may be compared to the client clock 130 as they are rendered for display on a display device by the communication module 126 . If a problem occurs, such as a “hang up” due to “bad data”, the timestamp value for the rendered frame may fall behind or otherwise begin to deviate from the client clock 130 . This deviation may indicate that content 124 ( c ) that is expected to be output by the client 104 has not been output. Accordingly, one or more corrective actions may be initiated to resolve the problem.
- the one or more corrective action may include, for example, resetting the client 104 and/or communication module 126 , obtaining a next expected frame for output based on the client clock, clearing “bad data”, and so forth.
- presentation timestamps 128 ( t ) associated with content 124 ( c ) may be monitored to ensure that content 124 ( c ) that is output by a client 104 matches expected timing. Further discussion of the monitoring presentation timestamps may be found in relation to the following figures.
- FIG. 2 illustrates an exemplary implementation of a system showing a client 104 of FIG. 1 in greater detail.
- the client 104 is depicted as including a processor 202 and a memory 204 .
- Processor 202 is not limited by the materials from which it is formed or the processing mechanisms employed therein, and as such, may be implemented via semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)), and so forth.
- ICs electronic integrated circuits
- a single memory 204 is shown for the client 104 , a wide variety of types and combinations of memory may be employed, such as random access memory (RAM), hard disk memory, removable medium memory (e.g., the memory 204 may be implemented via a slot that accepts a removable memory cartridge), and other types of computer-readable media.
- RAM random access memory
- hard disk memory hard disk memory
- removable medium memory e.g., the memory 204 may be implemented via a slot that accepts a removable memory cartridge
- the memory 204 is illustrated as storing a variety of content 124 ( c ) associated with timestamps 128 ( t ). As discussed, timestamps 128 ( t ) may be associated with content 112 ( k ) at the encoder 116 of FIG. 1 . Content 112 ( k ) having associated timestamps 128 ( t ) may then be communicated by the server 118 of FIG. 1 to the client 104 for streaming output or storage in the memory 204 as content 124 ( c ).
- Client 104 in the example of FIG. 2 is further depicted as executing the communication module 126 on processor 202 .
- Communication module 126 is also storable in the memory 204 .
- Processor 202 is further illustrated as illustrated as executing a rendering module 206 that represents functionality of client 104 to output content 124 ( c ) on one or more display devices, for example output of video and audio content via a monitor and speakers. While illustrated as a stand-alone module in FIG. 2 , the rendering module 206 may be implemented as a component of the communication module 126 .
- Rendering module 206 is further depicted as including a clock monitor module 208 that is representative of functionality to manage the client clock 130 , such as initializing the client clock 130 , synchronizing presentation of content 124 ( c ) based on the clock, obtaining a value of the client clock 130 , and so forth.
- Clock monitor module 208 is further representative of functionality to monitor timestamps 128 ( t ) provided with content 124 ( c ). For instance, clock monitor module 208 may operate to obtain timestamps 128 ( t ) associated with content 124 ( c ) that is rendered by the rendering module 206 , and to compare the timestamps 128 ( t ) to the client clock 130 .
- the clock monitor module 208 may assess whether content 124 ( c ) being rendered by the rendering module 206 is rendered as “expected”. In other words, the clock monitor module 208 may check whether the timestamp 128 ( t ) value for a given frame or portion of content matches an “expected” value that is derived from the client clock 130 when the frame or portion is rendered. If a problem or deviation is detected, clock monitor module 208 may initiate corrective actions to resolve the problem. Further discussion of the monitoring of presentation timestamps may be found in relation to the following procedures.
- While aspects of monitoring presentation timestamp techniques are described with respect to content 112 ( k ) from content providers 106 that may be processed by and communicated to a client 104 from a network operator 102 , it is contemplated that a client 104 may receive content 124 ( c ) in a variety of ways. For instance, content 124 ( c ) may be obtained locally by the client 104 , such a being stored in memory 204 and/or provided from various computer-readable media. A variety of computer-readable media is contemplated including optical disks such as compact discs (CDs) and digital video disks (DVDs), a hard disk, and so forth.
- CDs compact discs
- DVDs digital video disks
- a client 104 may include a media drive 210 that is configured to obtain data from a corresponding media source 212 .
- Media drive 210 may be configured to receive a media source 212 that is configured as computer-readable media insertable into the media drive 210 , e.g., insertion of a flash memory card into a media drive 210 configured to receive the flash memory card.
- Media drive 210 may also be configured to interface via a wired or wireless connection 214 to a media source 212 that is implemented as an external storage device.
- Media source 212 may be representative of various computer-readable media, storage devices, and so forth that may maintain various content 216 ( m ) (where “m” may be any integer from one to “M”).
- Content 216 ( m ) of a media source 212 includes respective timestamps 128 ( t ) that may be encoded when the content 216 ( m ) is produced and/or when the content 216 ( m ) is stored on the media source 212 .
- media drive 210 may be a DVD device that is configured to read and playback optical disks (e.g., DVDs) which store content 216 ( m ).
- Other types and formats for a media drive 210 and a corresponding media source 212 are also contemplated.
- media drive 210 may be an internal drive as illustrated in FIG. 2
- media drive 210 may alternatively be configured as an external drive communicatively coupled to the client via a suitable media interface and/or wired or wireless connection 214 .
- any of the functions described herein can be implemented using software, firmware, hardware (e.g., fixed-logic circuitry), manual processing, or a combination of these implementations.
- the terms “module”, “functionality” and “logic” as used herein generally represent software, firmware, hardware, or a combination thereof
- the module, functionality, or logic represents program code that performs specified tasks when executed on a processor (e.g., CPU or CPUs).
- the program code can be stored in one or more computer-readable memory devices.
- the features of the techniques to monitor presentation timestamps are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.
- FIG. 3 depicts a procedure 300 in an exemplary implementation in which a client uses timestamps associated with content to synchronize output of the content to a presentation clock.
- Content is received that has timestamps that define a presentation clock for the content (block 302 ).
- client 104 of FIG. 1 may receive content 112 ( k ) over the network connection 108 from network operator 102 .
- client 104 may receive content 216 ( m ) from a media source 212 , such as a DVD, via a media drive 210 locally at the client as discussed with respect to FIG. 2 .
- client 104 may receive content 124 ( c ) that is configured for streaming output and/or for storage in memory 204 .
- the received content 124 ( c ) of a client 104 may be associated with respective timestamps 128 ( t ).
- the timestamps 128 ( t ) may define a presentation clock for the content 124 ( c ).
- timestamps 128 ( t ) associated with respective portions of content 124 ( c ) may indicate proper and/or expected timing for output of the portions relative to each other in an ordered output of the content 124 ( c ).
- a portion having a timestamp of “2 seconds” would be expected to be output one second after a portion having a time stamp of “1 second”.
- timestamps 128 ( t ) associated with content 124 ( c ) may be used to define a proper or expected presentation clock for content 124 ( c ), e.g., timing for output of portions of content relative to one another.
- a client clock value is initialized based on the timestamps (block 304 ).
- clock monitor module 208 of FIG. 2 may be executed to manage a client clock 130 .
- the client clock 130 may be employed to ensure that content 124 ( c ) that is expected to be presented is output by the client 104 .
- the clock monitor module 208 may utilize the client clock 130 in various ways to manage timing of output content 124 ( c ) based upon timestamps 128 ( t ) with which the content 124 ( c ) is associated.
- the initialization of the client clock 130 may be inclusive of starting the client clock 130 to keep track of time.
- Client clock 130 may also be configured as a running clock (e.g., a continuous clock) that may be referenced to perform techniques described herein.
- the client clock 130 may be synchronized with a presentation clock that is defined by the timestamps 128 ( t ).
- the client clock 130 may be set to a value of a timestamp 128 ( t ) associated with a portion of content 124 ( c ), such as a portion initially rendered when a viewer tunes to a channel or begins viewing a television program, movie, or other content 124 ( c ).
- the initialization may be further inclusive of resetting the client clock 130 , establishing a difference between the presentation clock and the client clock 130 , determining an initial value of the client clock 130 , and so forth.
- the client clock 130 When the client clock 130 is initialized, the client clock may begin running or continue to run to keep track of time.
- a viewer navigates a communication module 126 to begin viewing content 124 ( c ) that is associated with a particular programming channel.
- the viewer may begin viewing the content 124 ( c ) at the beginning of a program, in the middle, at the end, and so forth.
- the viewer may view a first portion of content that may be associated with a particular timestamp 128 ( t ).
- This particular timestamp 128 ( t ) may be used by clock monitor module 208 to initialize the client clock 130 .
- the client clock 130 may be initialized to a value of the particular timestamp 128 ( t ).
- the client clock may be set to zero initially.
- a difference between the client clock and the presentation clock based on the timestamps 128 ( t ) associated with content 124 ( c ) may be established.
- the difference for example, may be zero when the client clock 130 is initialized to a value of the particular timestamp 128 ( t ).
- the difference may be another determined value, for example, if a “running” client clock 130 is employed.
- the clock monitor module 208 may monitor the established difference to ensure that the correct content 124 ( c ) is output at the expected time, and to further detect when a “hang up” may have occurred.
- clock monitor module 208 may obtain each timestamp 128 ( t ) associated with content 124 ( c ) and compare the timestamps 128 ( t ) to the client clock 130 to check and recheck the difference or initialization value established in the preceding example. In this manner, the clock monitor module 208 may understand when the content 124 ( c ) is being output in accordance with the presentation clock that is defined by the timestamps 128 ( t ). Clock monitor module 208 may also understand when a deviation occurs that may prompt corrective actions to be initiated.
- clock monitor module 208 may control the output of content 124 ( c ) in a variety of ways based on comparison of the client clock 130 to the presentation clock defined by the timestamps 128 ( t ).
- rendering module 206 may continue to output the content 124 ( c ).
- clock monitor module 208 determines that a problem exists, it may intervene to control output of content 124 ( c ) on the client 104 such that the output is as expected.
- clock monitor module 208 may initiate corrective actions to ensure that the output of content 124 ( c ) is in accordance with the presentation clock defined by associated timestamps 128 ( t ). Again, the presentation clock is indicative of the expected timing for output of portions of content 124 ( c ) relative to one another.
- a tolerance value may be established that defines acceptable operating parameters for a difference between the client clock 130 and the presentation clock defined by timestamps 128 ( t ).
- a tolerance value may be a configurable value that sets an amount of difference or deviation between the client clock 130 and the presentation clock that may be tolerated before action to control output of content 124 ( c ) is undertaken.
- clock monitor module 208 may intervene to restore timing of the output to within the acceptable parameters defined by the tolerance value.
- clock monitor module 208 may continue to read a timestamp 128 ( t ) associated with the “bad data” as a current value for the presentation clock. However, at the same time the client clock 130 may continue to run. Thus, a difference between the client clock 130 and the current value for the presentation clock may grow. If a “hang up” persists, then the difference may exceed a designated tolerance value. Responsive to a determination that the tolerance value has been exceeded, clock monitor module 208 may initiate various corrective actions to control the output of content 124 ( c ) to correspond with the proper and/or expected presentation of the content 124 ( c ). Further discussion of corrective actions to restore output of content 124 ( c ) to correspond to a presentation clock may be found in relation to the following figure.
- FIG. 4 depicts a procedure 400 in an exemplary implementation in which monitoring of timestamps is performed to synchronize output of content to timing defined by the timestamps.
- Content is received at a client over a network from a network operator having timestamps defining timing for output of the content (block 402 ).
- an encoder 116 of FIG. 1 may be executed to associate timestamps 128 ( t ) with content 112 ( k ) at a network operator 102 .
- Network operator 102 may communicate the content 112 ( k ) to a client 104 over a network connection 108 .
- Client 104 receives the content 112 ( k ) as content 124 ( c ) which may be output immediately and/or stored in memory 204 .
- the content 124 ( c ) is configured as television content.
- a variety of other content is also contemplated including but not limited to: music, video-on-demand, web pages, and so forth.
- a clock local to the client is initialized based on the timestamps (block 404 ).
- a client clock 130 may be initialized in a variety of ways to enable comparisons to timestamps 128 ( t ) as discussed with respect to FIG. 3 .
- the content is output at the client (block 406 ), such as through the communication module 126 and/or rendering module 206 as described with respect to FIG. 2 .
- monitoring may be performed to ensure that the content 124 ( c ) expected to be output is being output by the client 104 . Further, the monitoring may be able to detect when a “hang up” occurs. In general, the monitoring uses the timestamps 128 ( t ) to understand the expected timing of the content 124 ( c ) and compares the values of timestamps 128 ( t ) to the client clock 130 to check that the timing matches expectations.
- timestamps of the output content are monitored relative to the client clock (block 408 ).
- the monitoring may be performed to detect a deviation between the timestamps and the client clock (block 410 ).
- procedure 400 may return to block 408 where the monitoring continues, so long as the output of content 124 ( c ) continues.
- the client clock 130 is set to zero when output of content 124 ( c ) is initiated and that a difference of zero is established between the client clock 130 and timing that is indicated by the timestamps 128 ( t ) associated with the content 124 ( c ).
- a first timestamp 128 ( t ) may have a value of zero and the client clock 130 is initially set to zero. Then, the client clock 130 begins to run to keep time as the content 124 ( c ) is being output.
- monitoring may be undertaken by clock monitor module 208 to maintain the difference of zero between the client clock 130 and timing indicated by the timestamps 128 ( t ).
- the output of content 124 ( c ) may be said to be as expected or “synchronized” with timing defined by the timestamps 128 ( t ).
- client clock 130 may operate to detect a deviation that exceeds an established tolerance value.
- procedure 400 may return to the monitoring of timestamps in block 408 , so long as the output of content 124 ( c ) continues.
- client 104 of FIG. 2 may be configured to detect when output content 124 ( c ) deviates from timing defined by timestamps 128 ( t ) associated with the content.
- the clock monitor module 208 may determine based on the monitoring of the preceding example that a deviation has occurred between the client clock 130 and expected timing for output of content 124 ( c ) via the rendering module 206 .
- a “hang up” may occur that causes the clock monitor module 208 to read a timestamp 128 ( t ) associated with output content 124 ( c ) that is different than the value of the client clock 130 .
- the client clock 130 may be ahead of the timestamp 128 ( t ) due to the “hang up”.
- a deviation from the difference of zero established in the example may be determined when the timestamp 128 ( t ) is compared to the client clock 130 . If the deviation is significant, (e.g., exceeds a tolerance value) then clock monitor module 208 may respond by initiating one or more corrective actions to restore synchronization of the content 124 ( c ) with timing defined by the timestamps 128 ( t ).
- corrective actions may be inclusive of resetting a client 104 , resetting a rendering module 206 and/or communication module 126 configured to output content 124 ( c ), clearing “bad data” from memory 204 of a client, and so forth.
- the clock monitor module 208 may skip portions of content 124 ( c ) to restore synchronization of the content 124 ( c ) with timing defined by the timestamps 128 ( t ).
- the clock monitor module 208 may know a time value for content 124 ( c ) that is expected to be output. Accordingly, clock monitor module 208 also may determine an expected value for a timestamp 128 ( t ) to restore synchronization. Thus, the clock monitor module 208 may cause rendering module 206 and/or communication module 126 to obtain and output a portion of content 124 ( c ) that is associated with a timestamp 128 ( t ) that has the expected value to restore synchronization. In other words, clock monitor module 208 may match the client clock 130 to a timestamp 128 ( t ) to determine a starting place within content 124 ( c ) to restart rendering.
- the rendering module 206 and/or communication module 126 may be instructed to ignore the preceding data (e.g. “bad data”, “hang up”) and to restart rendering at a starting place corresponding to the expected value for a timestamp 128 ( t ). In this manner, the clock monitor module 208 may bypass “bad data” to correct a “hang up” and restore synchronization of the content 124 ( c ) to correspond timing defined by the timestamps 128 ( t ).
- the preceding data e.g. “bad data”, “hang up”
- the clock monitor module 208 may bypass “bad data” to correct a “hang up” and restore synchronization of the content 124 ( c ) to correspond timing defined by the timestamps 128 ( t ).
- the corrective actions initiated by client 104 to restore presentation of content 124 ( c ) to timing defined by timestamps 128 ( t ) may occur automatically and without viewer intervention.
- clock monitor module 208 may initiate corrective actions that are carried out automatically by the client 104 .
- client 104 may output prompts to a viewer requesting actions on the part of the viewer. For instance, the client 104 may alert a viewer to check connections, toggle power off/on, and so forth, in addition to or in lieu of corrective actions undertaken automatically.
- viewer prompts may be employed when corrective actions undertaken automatically are unsuccessful in restoring presentation of content 124 ( c ) to timing defined by timestamps 128 ( t ).
- timing of different portions or streams of content 124 ( c ) may be managed independent of one another.
- an audio stream may be associated with timestamps 128 ( t ) that are independent of timestamps 128 ( t ) associated with a video stream, e.g., derived from a common time-base using timestamp module 120 .
- the client clock 130 may be shared as the time source for both an audio renderer and a video renderer that may be represented by the rendering module 206 .
- the clock monitor module 208 may compare the client clock 130 to ensure that the timing matches expected timestamps 128 ( t ) for both an audio stream being rendered by the audio renderer and a video stream being rendered by the video renderer.
- the clock monitor module 208 makes a simultaneously comparison to ensure synchronization of the audio stream and the video stream.
- the clock monitor module 208 detects a deviation in the timing of rendering of the audio stream and/or video stream relative to the expected timestamps 128 ( t )
- corrective action is taken to control output of content 124 ( c ).
- clock monitor module 208 may be to facilitate synchronization of the output of various streams associated with content 124 ( c ). To do so, a client 104 may maintain different client clocks 130 for different respective streams. Additionally or alternatively, clock monitor module 208 may establish and monitor differences between a single client clock 130 and timing that is defined for multiple streams, such as timing defined at a network operator 102 using different sets of timestamps 128 ( t ) for different streams. Thus, clock monitor module 208 may detect and manage an audio stream “hang up” separately from output of video stream, and vice versa. In this manner, client 104 and in particular clock monitor module 208 may manage different streams associated with content 124 ( c ) individually. A variety of other examples are also contemplated without departing from the spirit and scope thereof.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
Description
- This application is a divisional of and claims priority under 35 U.S.C. §121 to application Ser. No. 11/964,737 filed on Dec. 27, 2007 and titled “Monitoring Presentation Timestamps,” the disclosure of which is incorporated by reference herein in its entirety.
- A network operator may provide a wide variety of content to clients. For example, the network operator may be configured as a head end to provide television content, video-on-demand, music and so on to clients, such as televisions, digital video recorders and set-top boxes. The network operator typically obtains this content from content providers for streaming to the clients, such as households, businesses and so on. To provide this content, the network operator configures the content into a form that is suitable for use by the households. For example, the network operator may change a format of the content, map the content to particular channels, and so on such that the content is in a form that is suitable for consumption by the clients.
- To perform this configuration and then distribute the content over a network, the network operator may employ a variety of devices, such as integrated receivers/decoders, encoders, servers, and so on. However, these devices may be provided through use of a distributed system. Therefore, the distribution of content between the devices and to clients may introduce data impairment. Consequently, the data impairment may lead to errors by the client when consuming the content, such as improper playback including missed frames, repeated frames, and so on. For instance, data impairment may result in “bad data” which may cause a client or a renderer of the client to stop processing data properly (e.g., “hang up”). Thus, the clients may output the content in a manner that does not follow the expected content-viewing experience.
- Techniques to monitor presentation timestamps for content are described, which may be used to render content at a client. In an implementation, content is received having timestamps that define expected timing for output of the content at a client. The timestamps may then be monitored and compared to a client clock to determine if the content rendered matches the content expected to be rendered. When a discrepancy is detected, one or more corrective actions may be undertaken to restore output of the content to the timing defined by the timestamps.
- This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
- The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different instances in the description and the figures may indicate similar or identical items.
-
FIG. 1 is an illustration of an environment in an exemplary implementation that is operable to employ techniques to monitor presentation timestamps. -
FIG. 2 is an illustration of a system employing a network operator and a client ofFIG. 1 in greater detail. -
FIG. 3 is a flow diagram depicting a procedure in an exemplary implementation in which timestamps are employed to output content according to a presentation clock. -
FIG. 4 is a flow diagram depicting a procedure in an exemplary implementation in which timestamps are monitored to synchronize presentation of content at a client with timing defined by the timestamps. - Overview
- Network operators typically obtain content from content providers to be streamed to clients, such as households, businesses, educational institutions, and so on. The network operator, however, may employ a variety of devices to provide this content which may be implemented as a distributed system. Because the system is distributed, however, communication of content between devices and over a network may cause “bad data” to be introduced, which may cause inaccurate presentation of content at a client. For instance, “bad data” may cause a content renderer to stop processing data properly, e.g., “hang up.”
- Techniques to monitor presentation timestamps for output of content at a client are described. In an implementation, timestamps may be associated with content available from a network operator to clients over a network. Timestamps may also be associated with contain available locally, such as from a DVD or other computer-readable media. The timestamps may define timing for output of the content. For example, the timestamps may be used to define a presentation clock for the content which is indicative of expected timing of portions of content relative to one another.
- When content is output at a client, a client clock local to the client may be initialized and executed to monitor the timing of the output content. For instance, the timestamps may be monitored and compared relative to the client clock to determine if the content rendered at a given time matches the content expected to be rendered based on the timestamps. When a discrepancy is detected between the client clock and the timing defined by the timestamps, one or more corrective actions may be undertaken. For instance, the client or a renderer of the client may be reset, “bad data” may be deleted or ignored, a next expected portion of content may be obtained and output based on the timestamps, and so forth. In this manner, output of the content may be restored to the timing that is defined by the timestamps.
- In the following discussion, an exemplary environment is first described that is operable to perform techniques to monitor presentation timestamps. Exemplary procedures are then described that may be employed in the exemplary environment, as well as in other environments. Although monitoring presentation timestamps is described in a television environment in the following discussion, it should be readily apparent that these techniques may be employed in a wide variety of environments without departing from the spirit and scope thereof.
- Exemplary Environment
-
FIG. 1 is an illustration of anenvironment 100 in an exemplary implementation that is operable to employ techniques to monitor presentation timestamps at a client. The illustratedenvironment 100 includes a network operator 102 (e.g., a “head end”), aclient 104, and acontent provider 106 that are communicatively coupled vianetwork connections network operator 102, theclient 104 and thecontent provider 106 may be representative of one or more entities, and therefore reference may be made to a single entity (e.g., the client 104) or multiple entities (e.g., theclients 104, the plurality ofclients 104, and so on). Theclient 104, in portions of the following discussion, may also relate to a person and/or entity that operate a device. In other words, theclient 104 may describe a logical client that includes software and/or devices. Additionally, although a plurality of network connections 108-110 are shown separately, the network connections 108-110 may be representative of network connections achieved using a single network or multiple networks. - The
client 104 may be configured in a variety of ways. For example, theclient 104 may be configured as a computer that is capable of communicating over thenetwork connection 108, such as a desktop computer, a mobile station, an entertainment appliance, a set-top box communicatively coupled to a display device as illustrated, a wireless phone, and so forth. - The
content provider 106 includes one or more items of content 112(k), where “k” can be any integer from 1 to “K”. The content 112(k) may include a variety of data, such as television programming, video-on-demand, recorded video, music, web pages, and so forth. The content 112(k) is communicated over thenetwork connection 110 to thenetwork operator 102, such as through a broadcast. - Content 112(k) communicated via the
network connection 110 is received by thenetwork operator 102 and configured for distribution to theclient 104 over thenetwork connection 108. Distribution from thenetwork operator 102 to theclient 104 may be accommodated in a number of ways, such as through a broadcast including cable, radio frequency (RF), microwave, digital subscriber line (DSL), and satellite. - As previously described, the
network operator 102 may employ a variety of devices which may be implemented via a distributed system, examples of which are illustrated as an integrated receiver/decoder 114, anencoder 116 and a server 118 (e.g., distribution server) as shown inFIG. 1 . - Integrated receiver/
decoder 114 represents functionality to receive content 112(k) from content sources, such as thecontent provider 106 ofFIG. 1 . When content 112(k) is received in encrypted form, integrated receiver/decoder 114 may further represent functionality to decode the content 112(k) for processing by thenetwork operator 102. - The
encoder 116 is representative of functionality of thenetwork operator 102 to utilize one or more techniques to ready the content 112(k) for distribution to theclient 104. Theencoder 116, for instance, may operate to provide video and audio encoding of content 112(k) fromcontent providers 106. Encoding by theencoder 116 may include compression, translation, time encoding, analog/digital conversion, and encryption techniques performed on the content 112(k). - In an implementation,
network operator 102 includes atimestamp module 120 that may be employed to associate timing data with content 112(k). As illustrated inFIG. 1 ,timestamp module 120 may be implemented as a component of theencoder 116. Thus,encoder 116 may further represent functionality to encode timing data in the content 112(k), which may then be monitored by aclient 104 to output content 112(k) according the techniques described herein. Theencoder 116 may then communicate the content 112(k) to theserver 118 for further processing in a variety of ways, such as through use of a Motion Picture Experts Group (MPEG) Transport Stream (TS). A variety of other examples are also contemplated. -
Server 118 is illustrated as havingdistribution module 122 that may represent functionality of thenetwork operator 102 to configure content 112(k) for output (e.g., streaming) over thenetwork connection 108 to theclient 104. Thedistribution module 122, for instance, may configure content 112(k) received from thecontent provider 106 to be suitable for transmission over thenetwork connection 108, such as to “packetize” the content for distribution over the Internet, configuration for a particular broadcast channel, map the content 112(k) to particular channels, and so on. Thedistribution module 122, for instance, may further encrypt “packetized” content 112(k) for communication over an IP network (e.g., network connection 108) toclient 104. The encryption performed by thedistribution module 122 is selected such that theclient 104 may decrypt the content 112(k) for rendering. - Thus, in the
environment 100 ofFIG. 1 , thecontent provider 106 may broadcast the content 112(k) over anetwork connection 110 to a multiplicity of network operators, an example of which is illustrated asnetwork operator 102. Thenetwork operator 102 may then stream the content 112(k) over anetwork connection 108 to a multitude of clients, an example of which is illustrated asclient 104. Theclient 104 is depicted as having received content 124(c) (where “c” can be any integer from one to “C”), which may be inclusive of content 112(k) that is communicated from thenetwork operator 102 over thenetwork connection 108. Theclient 104 may then output the content 124(c) immediately (e.g., “streaming” playback) and/or store the content in a storage device, such as when theclient 104 is configured to include digital video recorder (DVR) functionality. - The
client 104 includes acommunication module 126 that is representative of functionality on theclient 104 to control content playback on theclient 104, such as to tune to particular channels, purchase pay-per-view content, through the use of one or more “command modes”, and so on. The command modes may provide non-linear playback of the content 124(c) (i.e., time shift the playback of the content 124(c)) such as pause, rewind, fast forward, slow motion playback, and the like.Communication module 126 may also include functionality to interact with thenetwork operator 102 to navigate and select content options, such as through an electronic programming guide (EPG) output at theclient 104. An EPG may be formed via thecommunication module 126 at least in part through guide data received from thenetwork operator 102 overnetwork connection 108 and/or using guide data received from a third party service (not shown). - Using traditional techniques, processing at the
network operator 102 and/or distribution from the network operator may introduce data impairments (e.g., “bad data”). Thus atraditional communication module 126 of aclient 104 that is used to display the content 124(c) that is delivered from theserver 118 may not display the content 124(c) as intended by theclient 104. For instance, “bad data” may cause skipping or repeating of frames in television content. In some cases, “bad data” may even cause aclient 104 to become stuck, e.g.,communication module 126 at theclient 104 may “hang up” or freeze on a frame of content 124(c) when attempting to process/output the “bad data”. The “hang up” may persist until theclient 104 is reset and/or reinitialized to clear the “bad data”. Naturally, such “hang ups” disrupt presentation of content 124(c) via theclient 104, which may be confusing and frustrating to a viewer. - In accordance with techniques described herein, presentation timing data associated with content 112(k) may be monitored at a
client 104 to avoid, detect, and/or resolve “hang ups” due to data impairments such as “bad data”. For example, based on the monitoring of timing data, a “hang up” may be detected and thecommunication module 126 and/orclient 104 may be reset. The reset of acommunication module 126 and/orclient 104 based on monitoring of timing data may occur automatically and without viewer intervention. - As noted, timing data may be associated with content 112(k), such as by the
encoder 116 ofnetwork operator 102. In particular,timestamp module 120 may be configured to encode/associate timing data with content 112(k) that defines timing for presentation of the content 112(k). Content 112(k) having timing data may then be communicated via thenetwork connection 108 to aclient 104. In an implementation, the timing data is configured as timestamps 128(t) which may be associated with portions of content 112(k) to indicate expected timing of the portions one to another. Therefore, content 124(c) that is received at theclient 104 may include associated timestamps 128(t) as illustrated inFIG. 1 . - Generally, timestamps 128(t) may be associated with successive portions of content 124(c). For example, a timestamp 128(t) may be associated with each frame of content 124(c). Alternatively, timestamps 128(t) may be associated with content 124(c) at a frame interval, such as being associated with every 10 frames, 100 frames, and so forth. A variety of other examples are also contemplated.
- Timestamps 128(t) may be implemented as program clock reference (PCR) timestamps provided through use of the
timestamp module 120. The timestamps 128(t) may represent a presentation clock for a content stream. In other words, the timestamps 128(t) may define proper and/or expected timing for playback of content 124(c). Timestamps 128(t) encoded in content 124(c) may be used by thecommunication module 126 of theclient 104 to compare to aclient clock 130. For instance, a comparison may be made between theclient clock 130 and the presentation clock that is defined by the timestamps 128(t) to ensure that content 124(c) that is expected to be output at a given time is output at that time. - More particularly, timestamps 128(t) associated with frames or portions of content 124(c) may be compared to the
client clock 130 as they are rendered for display on a display device by thecommunication module 126. If a problem occurs, such as a “hang up” due to “bad data”, the timestamp value for the rendered frame may fall behind or otherwise begin to deviate from theclient clock 130. This deviation may indicate that content 124(c) that is expected to be output by theclient 104 has not been output. Accordingly, one or more corrective actions may be initiated to resolve the problem. The one or more corrective action may include, for example, resetting theclient 104 and/orcommunication module 126, obtaining a next expected frame for output based on the client clock, clearing “bad data”, and so forth. In this manner, presentation timestamps 128(t) associated with content 124(c) may be monitored to ensure that content 124(c) that is output by aclient 104 matches expected timing. Further discussion of the monitoring presentation timestamps may be found in relation to the following figures. -
FIG. 2 illustrates an exemplary implementation of a system showing aclient 104 ofFIG. 1 in greater detail. Theclient 104 is depicted as including aprocessor 202 and amemory 204.Processor 202 is not limited by the materials from which it is formed or the processing mechanisms employed therein, and as such, may be implemented via semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)), and so forth. Additionally, although asingle memory 204 is shown for theclient 104, a wide variety of types and combinations of memory may be employed, such as random access memory (RAM), hard disk memory, removable medium memory (e.g., thememory 204 may be implemented via a slot that accepts a removable memory cartridge), and other types of computer-readable media. - The
memory 204 is illustrated as storing a variety of content 124(c) associated with timestamps 128(t). As discussed, timestamps 128(t) may be associated with content 112(k) at theencoder 116 ofFIG. 1 . Content 112(k) having associated timestamps 128(t) may then be communicated by theserver 118 ofFIG. 1 to theclient 104 for streaming output or storage in thememory 204 as content 124(c). -
Client 104 in the example ofFIG. 2 is further depicted as executing thecommunication module 126 onprocessor 202.Communication module 126 is also storable in thememory 204.Processor 202 is further illustrated as illustrated as executing arendering module 206 that represents functionality ofclient 104 to output content 124(c) on one or more display devices, for example output of video and audio content via a monitor and speakers. While illustrated as a stand-alone module inFIG. 2 , therendering module 206 may be implemented as a component of thecommunication module 126. -
Rendering module 206 is further depicted as including a clock monitor module 208 that is representative of functionality to manage theclient clock 130, such as initializing theclient clock 130, synchronizing presentation of content 124(c) based on the clock, obtaining a value of theclient clock 130, and so forth. Clock monitor module 208 is further representative of functionality to monitor timestamps 128(t) provided with content 124(c). For instance, clock monitor module 208 may operate to obtain timestamps 128(t) associated with content 124(c) that is rendered by therendering module 206, and to compare the timestamps 128(t) to theclient clock 130. Based on the comparison, the clock monitor module 208 may assess whether content 124(c) being rendered by therendering module 206 is rendered as “expected”. In other words, the clock monitor module 208 may check whether the timestamp 128(t) value for a given frame or portion of content matches an “expected” value that is derived from theclient clock 130 when the frame or portion is rendered. If a problem or deviation is detected, clock monitor module 208 may initiate corrective actions to resolve the problem. Further discussion of the monitoring of presentation timestamps may be found in relation to the following procedures. - While aspects of monitoring presentation timestamp techniques are described with respect to content 112(k) from
content providers 106 that may be processed by and communicated to aclient 104 from anetwork operator 102, it is contemplated that aclient 104 may receive content 124(c) in a variety of ways. For instance, content 124(c) may be obtained locally by theclient 104, such a being stored inmemory 204 and/or provided from various computer-readable media. A variety of computer-readable media is contemplated including optical disks such as compact discs (CDs) and digital video disks (DVDs), a hard disk, and so forth. - In an implementation, a
client 104 may include amedia drive 210 that is configured to obtain data from acorresponding media source 212. Media drive 210 may be configured to receive amedia source 212 that is configured as computer-readable media insertable into the media drive 210, e.g., insertion of a flash memory card into amedia drive 210 configured to receive the flash memory card. Media drive 210 may also be configured to interface via a wired orwireless connection 214 to amedia source 212 that is implemented as an external storage device. -
Media source 212 may be representative of various computer-readable media, storage devices, and so forth that may maintain various content 216(m) (where “m” may be any integer from one to “M”). Content 216(m) of amedia source 212 includes respective timestamps 128(t) that may be encoded when the content 216(m) is produced and/or when the content 216(m) is stored on themedia source 212. For example, media drive 210 may be a DVD device that is configured to read and playback optical disks (e.g., DVDs) which store content 216(m). Other types and formats for amedia drive 210 and acorresponding media source 212 are also contemplated. Thus, techniques to monitor presentation timestamps described herein may be employed during playback of a movie at aclient 104 from a DVD orother media source 212. While media drive 210 may be an internal drive as illustrated inFIG. 2 , media drive 210 may alternatively be configured as an external drive communicatively coupled to the client via a suitable media interface and/or wired orwireless connection 214. - Generally, any of the functions described herein can be implemented using software, firmware, hardware (e.g., fixed-logic circuitry), manual processing, or a combination of these implementations. The terms “module”, “functionality” and “logic” as used herein generally represent software, firmware, hardware, or a combination thereof In the case of a software implementation, for instance, the module, functionality, or logic represents program code that performs specified tasks when executed on a processor (e.g., CPU or CPUs). The program code can be stored in one or more computer-readable memory devices. The features of the techniques to monitor presentation timestamps are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.
- Exemplary Procedures
- The following discussion describes techniques that may be implemented utilizing the previously described environment, systems and devices. Aspects of each of the procedures may be implemented in hardware, firmware, or software, or a combination thereof The procedures are shown as a set of blocks that specify operations performed by one or more devices and are not necessarily limited to the orders shown for performing the operations by the respective blocks. In portions of the following discussion, reference will be made to the
environment 100 ofFIG. 1 , and/or thesystem 200 ofFIG. 2 . -
FIG. 3 depicts aprocedure 300 in an exemplary implementation in which a client uses timestamps associated with content to synchronize output of the content to a presentation clock. Content is received that has timestamps that define a presentation clock for the content (block 302). For example,client 104 ofFIG. 1 may receive content 112(k) over thenetwork connection 108 fromnetwork operator 102. In another example,client 104 may receive content 216(m) from amedia source 212, such as a DVD, via amedia drive 210 locally at the client as discussed with respect toFIG. 2 . In either case,client 104 may receive content 124(c) that is configured for streaming output and/or for storage inmemory 204. Further, the received content 124(c) of aclient 104 may be associated with respective timestamps 128(t). - The timestamps 128(t) may define a presentation clock for the content 124(c). In other words, timestamps 128(t) associated with respective portions of content 124(c) may indicate proper and/or expected timing for output of the portions relative to each other in an ordered output of the content 124(c). As an illustrative example, a portion having a timestamp of “2 seconds” would be expected to be output one second after a portion having a time stamp of “1 second”. Thus, timestamps 128(t) associated with content 124(c) may be used to define a proper or expected presentation clock for content 124(c), e.g., timing for output of portions of content relative to one another.
- A client clock value is initialized based on the timestamps (block 304). For example, clock monitor module 208 of
FIG. 2 may be executed to manage aclient clock 130. Theclient clock 130 may be employed to ensure that content 124(c) that is expected to be presented is output by theclient 104. More particularly, the clock monitor module 208 may utilize theclient clock 130 in various ways to manage timing of output content 124(c) based upon timestamps 128(t) with which the content 124(c) is associated. - In an implementation, the initialization of the
client clock 130 may be inclusive of starting theclient clock 130 to keep track of time.Client clock 130 may also be configured as a running clock (e.g., a continuous clock) that may be referenced to perform techniques described herein. Additionally or alternatively, theclient clock 130 may be synchronized with a presentation clock that is defined by the timestamps 128(t). For example, theclient clock 130 may be set to a value of a timestamp 128(t) associated with a portion of content 124(c), such as a portion initially rendered when a viewer tunes to a channel or begins viewing a television program, movie, or other content 124(c). The initialization may be further inclusive of resetting theclient clock 130, establishing a difference between the presentation clock and theclient clock 130, determining an initial value of theclient clock 130, and so forth. When theclient clock 130 is initialized, the client clock may begin running or continue to run to keep track of time. - For instance, assume a viewer navigates a
communication module 126 to begin viewing content 124(c) that is associated with a particular programming channel. The viewer may begin viewing the content 124(c) at the beginning of a program, in the middle, at the end, and so forth. In each case, the viewer may view a first portion of content that may be associated with a particular timestamp 128(t). This particular timestamp 128(t) may be used by clock monitor module 208 to initialize theclient clock 130. For example, theclient clock 130 may be initialized to a value of the particular timestamp 128(t). In another example, the client clock may be set to zero initially. In either case, a difference between the client clock and the presentation clock based on the timestamps 128(t) associated with content 124(c) may be established. The difference, for example, may be zero when theclient clock 130 is initialized to a value of the particular timestamp 128(t). The difference may be another determined value, for example, if a “running”client clock 130 is employed. Thereafter, the clock monitor module 208 may monitor the established difference to ensure that the correct content 124(c) is output at the expected time, and to further detect when a “hang up” may have occurred. - More particularly, when the content is output, the timestamps are compared to the client clock to output the content according to the presentation clock (block 306). For instance, clock monitor module 208 may obtain each timestamp 128(t) associated with content 124(c) and compare the timestamps 128(t) to the
client clock 130 to check and recheck the difference or initialization value established in the preceding example. In this manner, the clock monitor module 208 may understand when the content 124(c) is being output in accordance with the presentation clock that is defined by the timestamps 128(t). Clock monitor module 208 may also understand when a deviation occurs that may prompt corrective actions to be initiated. - For instance, based on the comparison, the output of the content is controlled to correspond with the presentation clock defined by the timestamps (block 308). Continuing with the previous example, clock monitor module 208 may control the output of content 124(c) in a variety of ways based on comparison of the
client clock 130 to the presentation clock defined by the timestamps 128(t). When, the output of content 124(c) is as expected based on the comparison,rendering module 206 may continue to output the content 124(c). When clock monitor module 208 determines that a problem exists, it may intervene to control output of content 124(c) on theclient 104 such that the output is as expected. For instance, clock monitor module 208 may initiate corrective actions to ensure that the output of content 124(c) is in accordance with the presentation clock defined by associated timestamps 128(t). Again, the presentation clock is indicative of the expected timing for output of portions of content 124(c) relative to one another. - In an implementation, a tolerance value may be established that defines acceptable operating parameters for a difference between the
client clock 130 and the presentation clock defined by timestamps 128(t). A tolerance value may be a configurable value that sets an amount of difference or deviation between theclient clock 130 and the presentation clock that may be tolerated before action to control output of content 124(c) is undertaken. Thus, when the difference exceeds the established tolerance value, then clock monitor module 208 may intervene to restore timing of the output to within the acceptable parameters defined by the tolerance value. - For example, when “bad data” causes
rendering module 206 to “hang up”, clock monitor module 208 may continue to read a timestamp 128(t) associated with the “bad data” as a current value for the presentation clock. However, at the same time theclient clock 130 may continue to run. Thus, a difference between theclient clock 130 and the current value for the presentation clock may grow. If a “hang up” persists, then the difference may exceed a designated tolerance value. Responsive to a determination that the tolerance value has been exceeded, clock monitor module 208 may initiate various corrective actions to control the output of content 124(c) to correspond with the proper and/or expected presentation of the content 124(c). Further discussion of corrective actions to restore output of content 124(c) to correspond to a presentation clock may be found in relation to the following figure. -
FIG. 4 depicts aprocedure 400 in an exemplary implementation in which monitoring of timestamps is performed to synchronize output of content to timing defined by the timestamps. Content is received at a client over a network from a network operator having timestamps defining timing for output of the content (block 402). For example, anencoder 116 ofFIG. 1 may be executed to associate timestamps 128(t) with content 112(k) at anetwork operator 102.Network operator 102 may communicate the content 112(k) to aclient 104 over anetwork connection 108.Client 104 receives the content 112(k) as content 124(c) which may be output immediately and/or stored inmemory 204. In an implementation, the content 124(c) is configured as television content. A variety of other content is also contemplated including but not limited to: music, video-on-demand, web pages, and so forth. - A clock local to the client is initialized based on the timestamps (block 404). For example, a
client clock 130 may be initialized in a variety of ways to enable comparisons to timestamps 128(t) as discussed with respect toFIG. 3 . The content is output at the client (block 406), such as through thecommunication module 126 and/orrendering module 206 as described with respect toFIG. 2 . - While content 124(c) is being output, monitoring may be performed to ensure that the content 124(c) expected to be output is being output by the
client 104. Further, the monitoring may be able to detect when a “hang up” occurs. In general, the monitoring uses the timestamps 128(t) to understand the expected timing of the content 124(c) and compares the values of timestamps 128(t) to theclient clock 130 to check that the timing matches expectations. - More particularly, timestamps of the output content are monitored relative to the client clock (block 408). The monitoring may be performed to detect a deviation between the timestamps and the client clock (block 410). When no deviation has been detected,
procedure 400 may return to block 408 where the monitoring continues, so long as the output of content 124(c) continues. - For the purposes of example, assume now that the
client clock 130 is set to zero when output of content 124(c) is initiated and that a difference of zero is established between theclient clock 130 and timing that is indicated by the timestamps 128(t) associated with the content 124(c). In other words, in this example, a first timestamp 128(t) may have a value of zero and theclient clock 130 is initially set to zero. Then, theclient clock 130 begins to run to keep time as the content 124(c) is being output. Thus, in this example, monitoring may be undertaken by clock monitor module 208 to maintain the difference of zero between theclient clock 130 and timing indicated by the timestamps 128(t). When the difference is maintained, the output of content 124(c) may be said to be as expected or “synchronized” with timing defined by the timestamps 128(t). As noted,client clock 130 may operate to detect a deviation that exceeds an established tolerance value. - When a deviation is detected, one or more corrective actions are initiated to synchronize output of the content to the timing defined by the timestamps (block 412). Then, when proper output has been restored,
procedure 400 may return to the monitoring of timestamps inblock 408, so long as the output of content 124(c) continues. - For example,
client 104 ofFIG. 2 may be configured to detect when output content 124(c) deviates from timing defined by timestamps 128(t) associated with the content. The clock monitor module 208, for instance, may determine based on the monitoring of the preceding example that a deviation has occurred between theclient clock 130 and expected timing for output of content 124(c) via therendering module 206. In particular, a “hang up” may occur that causes the clock monitor module 208 to read a timestamp 128(t) associated with output content 124(c) that is different than the value of theclient clock 130. In this case, theclient clock 130 may be ahead of the timestamp 128(t) due to the “hang up”. Accordingly, a deviation from the difference of zero established in the example may be determined when the timestamp 128(t) is compared to theclient clock 130. If the deviation is significant, (e.g., exceeds a tolerance value) then clock monitor module 208 may respond by initiating one or more corrective actions to restore synchronization of the content 124(c) with timing defined by the timestamps 128(t). - A variety of corrective actions are contemplated. For example, corrective actions may be inclusive of resetting a
client 104, resetting arendering module 206 and/orcommunication module 126 configured to output content 124(c), clearing “bad data” frommemory 204 of a client, and so forth. In an implementation, the clock monitor module 208 may skip portions of content 124(c) to restore synchronization of the content 124(c) with timing defined by the timestamps 128(t). - For instance, based on the
client clock 130, the clock monitor module 208 may know a time value for content 124(c) that is expected to be output. Accordingly, clock monitor module 208 also may determine an expected value for a timestamp 128(t) to restore synchronization. Thus, the clock monitor module 208 may causerendering module 206 and/orcommunication module 126 to obtain and output a portion of content 124(c) that is associated with a timestamp 128(t) that has the expected value to restore synchronization. In other words, clock monitor module 208 may match theclient clock 130 to a timestamp 128(t) to determine a starting place within content 124(c) to restart rendering. Therendering module 206 and/orcommunication module 126 may be instructed to ignore the preceding data (e.g. “bad data”, “hang up”) and to restart rendering at a starting place corresponding to the expected value for a timestamp 128(t). In this manner, the clock monitor module 208 may bypass “bad data” to correct a “hang up” and restore synchronization of the content 124(c) to correspond timing defined by the timestamps 128(t). - The corrective actions initiated by
client 104 to restore presentation of content 124(c) to timing defined by timestamps 128(t) may occur automatically and without viewer intervention. For instance, clock monitor module 208 may initiate corrective actions that are carried out automatically by theclient 104. Additionally or alternatively,client 104 may output prompts to a viewer requesting actions on the part of the viewer. For instance, theclient 104 may alert a viewer to check connections, toggle power off/on, and so forth, in addition to or in lieu of corrective actions undertaken automatically. In implementation, viewer prompts may be employed when corrective actions undertaken automatically are unsuccessful in restoring presentation of content 124(c) to timing defined by timestamps 128(t). - It is noted that timing of different portions or streams of content 124(c) may be managed independent of one another. For example, an audio stream may be associated with timestamps 128(t) that are independent of timestamps 128(t) associated with a video stream, e.g., derived from a common time-base using
timestamp module 120. In this case, theclient clock 130 may be shared as the time source for both an audio renderer and a video renderer that may be represented by therendering module 206. The clock monitor module 208 may compare theclient clock 130 to ensure that the timing matches expected timestamps 128(t) for both an audio stream being rendered by the audio renderer and a video stream being rendered by the video renderer. In an implementation, the clock monitor module 208 makes a simultaneously comparison to ensure synchronization of the audio stream and the video stream. When the clock monitor module 208 detects a deviation in the timing of rendering of the audio stream and/or video stream relative to the expected timestamps 128(t), corrective action is taken to control output of content 124(c). - One of the features of clock monitor module 208 may be to facilitate synchronization of the output of various streams associated with content 124(c). To do so, a
client 104 may maintain different client clocks 130 for different respective streams. Additionally or alternatively, clock monitor module 208 may establish and monitor differences between asingle client clock 130 and timing that is defined for multiple streams, such as timing defined at anetwork operator 102 using different sets of timestamps 128(t) for different streams. Thus, clock monitor module 208 may detect and manage an audio stream “hang up” separately from output of video stream, and vice versa. In this manner,client 104 and in particular clock monitor module 208 may manage different streams associated with content 124(c) individually. A variety of other examples are also contemplated without departing from the spirit and scope thereof. - Conclusion
- Although the invention has been described in language specific to structural features and/or methodological acts, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claimed invention.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/421,673 US20120180099A1 (en) | 2007-12-27 | 2012-03-15 | Monitoring Presentation Timestamps |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/964,737 US8181217B2 (en) | 2007-12-27 | 2007-12-27 | Monitoring presentation timestamps |
US13/421,673 US20120180099A1 (en) | 2007-12-27 | 2012-03-15 | Monitoring Presentation Timestamps |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/964,737 Division US8181217B2 (en) | 2007-12-27 | 2007-12-27 | Monitoring presentation timestamps |
Publications (1)
Publication Number | Publication Date |
---|---|
US20120180099A1 true US20120180099A1 (en) | 2012-07-12 |
Family
ID=40800131
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/964,737 Active 2029-09-06 US8181217B2 (en) | 2007-12-27 | 2007-12-27 | Monitoring presentation timestamps |
US13/421,673 Abandoned US20120180099A1 (en) | 2007-12-27 | 2012-03-15 | Monitoring Presentation Timestamps |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/964,737 Active 2029-09-06 US8181217B2 (en) | 2007-12-27 | 2007-12-27 | Monitoring presentation timestamps |
Country Status (1)
Country | Link |
---|---|
US (2) | US8181217B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140104493A1 (en) * | 2012-10-11 | 2014-04-17 | Tangome, Inc. | Proactive video frame dropping for hardware and network variance |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9794605B2 (en) * | 2007-06-28 | 2017-10-17 | Apple Inc. | Using time-stamped event entries to facilitate synchronizing data streams |
US8667549B2 (en) * | 2009-04-28 | 2014-03-04 | Microsoft Corporation | Personal video recorder E-mail alerts and status |
EP2800365B1 (en) * | 2011-12-29 | 2019-02-27 | Sony Interactive Entertainment Inc. | Video playback system |
US20190114733A1 (en) * | 2017-10-12 | 2019-04-18 | Red Hat, Inc. | Display content currentness validation |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5559999A (en) * | 1994-09-09 | 1996-09-24 | Lsi Logic Corporation | MPEG decoding system including tag list for associating presentation time stamps with encoded data units |
US20020065940A1 (en) * | 2000-11-27 | 2002-05-30 | Kenji Suzuki | Periodic control synchronous system |
US20020087999A1 (en) * | 2000-04-26 | 2002-07-04 | Sony Corporation | Scalable filtering table |
US20030093799A1 (en) * | 2001-11-14 | 2003-05-15 | Kauffman Marc W. | Streamed content Delivery |
US7280156B2 (en) * | 2002-12-20 | 2007-10-09 | Stmicroelectronics Sa | Process and device for synchronizing presentation of audio and/or video frames |
US20080019398A1 (en) * | 2006-07-20 | 2008-01-24 | Adimos Systems Ltd. | Clock recovery in wireless media streaming |
US20090037972A1 (en) * | 2007-07-31 | 2009-02-05 | The Directv Group, Inc. | Methods and apparatus to present audio and video at non-native rates |
US8286207B1 (en) * | 1998-07-13 | 2012-10-09 | Thomson Licensing | System for processing programs and system timing information derived from multiple broadcast sources |
US20130254800A1 (en) * | 2002-05-03 | 2013-09-26 | Time Warner Cable Enterprises Llc | Use of messages in or associated with program signal streams by set-top terminals |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5126990A (en) * | 1982-01-12 | 1992-06-30 | Discovision Associates | Method of evaluating a storage medium by recirculating a test sample of a signal |
US4967273A (en) * | 1983-03-21 | 1990-10-30 | Vidcode, Inc. | Television program transmission verification method and apparatus |
US4547804A (en) * | 1983-03-21 | 1985-10-15 | Greenberg Burton L | Method and apparatus for the automatic identification and verification of commercial broadcast programs |
US5065345A (en) * | 1988-11-04 | 1991-11-12 | Dyned International, Inc. | Interactive audiovisual control mechanism |
EP0735776B1 (en) * | 1995-03-29 | 2004-01-28 | Hitachi, Ltd. | Decoder for compressed and multiplexed video and audio data |
US7072908B2 (en) * | 2001-03-26 | 2006-07-04 | Microsoft Corporation | Methods and systems for synchronizing visualizations with audio streams |
US7328345B2 (en) * | 2002-01-29 | 2008-02-05 | Widevine Technologies, Inc. | Method and system for end to end securing of content for video on demand |
US20040055013A1 (en) * | 2002-07-04 | 2004-03-18 | Toshiyuki Ishioka | Broadcast receive/play system and broadcast reception apparatus |
US7089319B2 (en) * | 2002-12-09 | 2006-08-08 | Anton Lysenko | Method and system for instantaneous on-demand delivery of multimedia content over a communication network with aid of content capturing component, delivery-on-demand client and dynamically mapped resource locator server |
US20040244057A1 (en) * | 2003-04-30 | 2004-12-02 | Wallace Michael W. | System and methods for synchronizing the operation of multiple remote receivers in a broadcast environment |
US20040240390A1 (en) * | 2003-05-30 | 2004-12-02 | Vidiator Enterprises Inc. | Method and apparatus for dynamic bandwidth adaptation |
JP3883986B2 (en) * | 2003-06-17 | 2007-02-21 | 三洋電機株式会社 | Digital tv broadcast receiver |
US20050024487A1 (en) * | 2003-07-31 | 2005-02-03 | William Chen | Video codec system with real-time complexity adaptation and region-of-interest coding |
-
2007
- 2007-12-27 US US11/964,737 patent/US8181217B2/en active Active
-
2012
- 2012-03-15 US US13/421,673 patent/US20120180099A1/en not_active Abandoned
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5559999A (en) * | 1994-09-09 | 1996-09-24 | Lsi Logic Corporation | MPEG decoding system including tag list for associating presentation time stamps with encoded data units |
US8286207B1 (en) * | 1998-07-13 | 2012-10-09 | Thomson Licensing | System for processing programs and system timing information derived from multiple broadcast sources |
US20020087999A1 (en) * | 2000-04-26 | 2002-07-04 | Sony Corporation | Scalable filtering table |
US20020065940A1 (en) * | 2000-11-27 | 2002-05-30 | Kenji Suzuki | Periodic control synchronous system |
US20030093799A1 (en) * | 2001-11-14 | 2003-05-15 | Kauffman Marc W. | Streamed content Delivery |
US20130254800A1 (en) * | 2002-05-03 | 2013-09-26 | Time Warner Cable Enterprises Llc | Use of messages in or associated with program signal streams by set-top terminals |
US7280156B2 (en) * | 2002-12-20 | 2007-10-09 | Stmicroelectronics Sa | Process and device for synchronizing presentation of audio and/or video frames |
US20080019398A1 (en) * | 2006-07-20 | 2008-01-24 | Adimos Systems Ltd. | Clock recovery in wireless media streaming |
US20090037972A1 (en) * | 2007-07-31 | 2009-02-05 | The Directv Group, Inc. | Methods and apparatus to present audio and video at non-native rates |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140104493A1 (en) * | 2012-10-11 | 2014-04-17 | Tangome, Inc. | Proactive video frame dropping for hardware and network variance |
Also Published As
Publication number | Publication date |
---|---|
US20090172457A1 (en) | 2009-07-02 |
US8181217B2 (en) | 2012-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11778249B2 (en) | Rewinding replacement television advertisements inserted by a smart television | |
US9565471B2 (en) | Method and system for PVR on internet enabled televisions (TVs) | |
US9843760B2 (en) | Video stream composed of combined video frames and methods and systems for its generation, transmission, reception and reproduction | |
US9876944B2 (en) | Apparatus, systems and methods for user controlled synchronization of presented video and audio streams | |
US20090257508A1 (en) | Method and system for enabling video trick modes | |
US7907833B2 (en) | Apparatus and method for communicating stop and pause commands in a video recording and playback system | |
JP4939550B2 (en) | Fast channel change in digital television receivers | |
US20120180099A1 (en) | Monitoring Presentation Timestamps | |
US7006152B2 (en) | System and method for providing picture-in-picture timebase management | |
US11234026B2 (en) | Methods and apparatus for responding to inoperative commands | |
US20100132007A1 (en) | Accelerating channel change time with external picture property markings | |
US20160249092A1 (en) | System and method for digital video recording backfill | |
US8676025B2 (en) | Method of timebase management for MPEG decoding with personal video recording functionality | |
US20090235321A1 (en) | Television content from multiple sources | |
US20140157311A1 (en) | Faster Access to Television Channels | |
CA2439377A1 (en) | System and method for receiving and storing a transport stream | |
US20180091571A1 (en) | Packet Placement for Scalable Video Coding Schemes | |
US20080256589A1 (en) | Reproduction controlling method and receiving apparatus | |
US11863810B1 (en) | Low-latency media streaming initialization | |
US10567703B2 (en) | High frame rate video compatible with existing receivers and amenable to video decoder implementation | |
KR101272260B1 (en) | Virtual-channel configuration method and digital broadcasting receiver apparatus using the same method | |
US20090169173A1 (en) | Display apparatus and control method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GNANASAMBANDAM, SENTHIL KUMAR;YEKOLLU, SANATH K.;FATEHPURIA, PRADIP K.;REEL/FRAME:033402/0237 Effective date: 20071220 Owner name: ROVI CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:033429/0314 Effective date: 20140708 |
|
AS | Assignment |
Owner name: ROVI TECHNOLOGIES CORPORATION, CALIFORNIA Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 033429 FRAME: 0314. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034276/0890 Effective date: 20141027 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |