This disclosure relates generally to content delivery and, more particularly, to methods and apparatus to provide secondary content in association with primary broadcast media content.
Identifying media content (e.g., television (TV) programs, radio programs, advertisements, commentary, audio/video content, movies, commercials, advertisements, etc.) is useful for assessing audience exposure to such content. For example, in audience metering applications, a code may be inserted into the audio or video of media content (e.g., a program or advertisement), wherein the code is later detected at one or more monitoring sites when the media content is presented (e.g., played at monitored households). The information payload of the code/watermark embedded into an original signal can include unique program identification, source identification, and/or time of broadcast. Monitoring sites may include locations such as, households, stores, places of business and/or any other public and/or private facilities, where media content exposure and/or consumption of media content is monitored. For example, at a monitoring site, codes from the audio and/or video are captured. The collected codes may then be sent to a central data collection facility for analysis.
Example methods, apparatus and articles of manufacture to provide secondary content in association with primary broadcast media content are disclosed. A disclosed example method includes receiving an audio signal output by a first media presentation device, the audio signal being associated with first media content, decoding the audio signal to extract a code from the audio signal, the code identifying at least one of the first media content or a broadcaster of the first media content, setting a clock using a timestamp associated with the code, obtaining second media content based on the code and the timestamp, the second media content comprising a plurality of pieces of secondary content for respective ones of a plurality of timestamps, and presenting, at a second media presentation device, a first of the plurality of pieces of secondary media when its respective timestamp substantially corresponds to time value obtained from the clock.
Another example method includes receiving an audio signal output by a first media presentation device, the audio signal being associated with first media content, decoding the audio signal to extract a code from the audio signal, the code representative of at least one of the first media content or a broadcaster of the first media content, and transmitting a wireless signal to a second media presentation device, the signal including the extracted code, the signal to trigger the second media presentation device to obtain second media content based on the code and to present the second media content at the second media presentation device.
Still another example methods includes receiving audio output by a first media presentation device, obtaining at least one of a Nielsen code or an Arbitron® code from the audio, the obtained code being representative of at least one of the first media content or a broadcaster of the first media content, obtaining second media content based on the extracted code, and presenting the second media content on a second media presentation device different from the first media presentation device.
A disclosed example apparatus includes an audio interface to receive an audio signal output by a first media presentation device, the audio signal being associated with first media content, a decoder to decode the audio signal to extract a code from the audio signal, the code representative of at least one of the first media content or a broadcaster of the first media content, the decoder to obtain a timestamp associated with the code, a secondary content module to obtain second media content based on the code and the timestamp, the second media content comprising a plurality of pieces of secondary content for respective ones of a plurality of timestamps, and a user interface module to present a first of the plurality of pieces of secondary content media when its respective timestamp substantially corresponds to a time value determined from the timestamp.
Another example apparatus includes an audio interface to receive an audio signal output by a first media presentation device, the audio signal being associated with first media content, a decoder to decode the audio signal to extract a code, the code being associated with at least one of the first media content or a broadcaster of the first media content, and a wireless interface to transmit a wireless signal to a second media presentation device, the signal including the extracted code, the signal to trigger the second media presentation device to obtain second media content based on the code and to present the second media content at the second media presentation device.
Still another example apparatus includes an audio input interface to receive audio output by a first media presentation device, a decoder to obtain at least one of a Nielsen code or an Arbitron code from the audio, the obtained code corresponding to at least one of the first media content or a broadcaster of the first media content, a secondary content module to obtain second media content based on the extracted code, and a user interface module to present the second media content on a second media presentation device different from the first media presentation device.
The following description makes reference to audio encoding and decoding that is also known as audio watermarking and watermark detection, respectively. It should be noted that in this context, audio is any type of signal having a frequency falling within the normal human audibility spectrum. For example, audio may be speech, music, an audio portion of an audio and/or video program or work (e.g., a television (TV) program, a movie, an Internet video, a radio program, a commercial spot, etc.), noise, or any other sound.
In general, encoding of audio refers to inserting one or more codes into the audio. In some examples, the code is psycho-acoustically masked so that the code is inaudible to human hearers of the audio. However, there may be certain situations in which the code may be audible to certain human listeners. Additionally, these codes may also be referred to as watermarks. The codes that are embedded in audio may be of any suitable length, and any suitable technique for mapping information (e.g., a channel identifier, a station identifier, a program identifier, a timestamp, a broadcast identifier, etc.) to the codes may be utilized. Furthermore, the codes may be converted into symbols that are represented by signals having selected frequencies that are embedded in the audio. Any suitable encoding and/or error correcting technique may be used to convert codes into symbols. A Nielsen code is any code embedded into any media content by and/or in association with The Nielsen Company (US), LLC or any affiliate of The Nielsen Company (US), LLC.
While the following examples are described with reference to broadcast audio/video media content (e.g., a TV program, a commercial, a movie, etc.) that include codes embedded and/or encoded into the audio portion thereof, such examples are merely illustrative. For example, codes may, additionally or alternatively, be embedded and/or encoded into other types of primary media content such as, but not limited to, video content, graphical content, an image, a game, a survey, and/or a webpage. For example, codes can be hidden and/or placed in non-viewable portions of video by, for instance, inserting codes into a vertical blanking interval and/or a horizontal retrace interval. Moreover, the methods and apparatus described herein may be used to detect codes embedded in any number and/or type(s) of additional and/or alternative primary media content (e.g., a radio broadcast, an audio announcement, etc.) and to trigger the display of secondary content associated with such broadcasted primary media. Further, primary media content need not be broadcast in order to trigger the presentation of secondary media content. For example, primary media content may be distributed via any number and/or type(s) of tangible medium, such as a digital versatile disc (DVD) and/or a compact disc (CD), that includes embedded codes that can trigger the presentation of secondary media content contained on the tangible medium, on a local media store, and/or on a media store accessible via, for example, the Internet and/or a local area network (LAN). Further still, non-media content data associated with the primary media content may be used to trigger the display of secondary media content associated with the primary media content. For example, data, variables and/or identifiers contained in one or more headers associated with a stream of packets transporting the primary media content (e.g., program and system information protocol (PSIP) information, a transport stream identifier, a program identifier (PID), a station identifier (SID), a timestamp, a CRC, etc.) can be used to trigger the display of secondary media content. It should be understood that such header information is carried along side and/or in connection with the data that represents the primary media content and, thus, occurs in a non-payload portion of a stream transporting the primary media content.
In the examples described herein, before and/or during transmission and/or broadcasting, the primary media content is encoded to include one or more codes indicative of the source of the primary media content, the broadcast time of the primary media content, the distribution channel of the primary media content, an identifier for the primary media content, a link (e.g., a URL, an ASCII reference to URL, etc.), particular portions of the primary media content, and/or any other information deemed relevant to the operator of the system. When the primary media content is presented on a primary content presentation device (e.g., played through a TV, a radio, a computing device, a cellular telephone, a hand-held device, and/or any other suitable device), persons in the area of the presentation are exposed not only to the primary media content, but, unbeknownst to them, are also exposed to the code(s) embedded in the primary media content. As described herein, in addition to the primary media device presenting the broadcasted media content (referred to herein as the “primary media content” or “primary broadcast media content”), persons may be provided with and/or utilize a secondary content presentation device (e.g., handheld, mobile and/or otherwise portable devices such as a hand-held computer, a personal digital assistant (PDA), a cellular telephone, a smartphone, a laptop computer, a netbook computer, an iPod™, a iPad™, and/or any other type(s) of hand-held, mobile and/or portable user device capable to present media content to a person). Some example secondary content presentation devices include a microphone and a decoder, and use free-field detection to detect the code(s) embedded in the primary media content. Additionally or alternatively, secondary content presentation devices can obtain and/or receive primary content identifiers (e.g., codes, signatures, non-payload information, etc.) via other methods and/or interfaces, such as a network interface, a Bluetooth interface, etc. Based on the detected code(s), the secondary content presentation device retrieves and presents secondary content related to the primary media content identified by the codes. The secondary content may or may not be related to the primary media content and may itself include media content, user interfaces, advertisements, and/or applications. In some examples, the secondary content presentation device may be implemented by and/or within the primary presentation device.
Further still, while the examples described herein utilize embedded audience measurement codes to identify primary media content, any number and/or type(s) of additional and/or alternative methods may be used to identify primary media content. For example, one or more signatures and/or fingerprints may be computed from and/or based on the primary media content and compared with a database of signatures to identify the primary media content. An example signature is computed via data compression applied to an audio portion of the primary media content. Example methods, apparatus and articles of manufacture to compute signatures and/or to identify media using signatures are described in U.S. patent application Ser. No. 12/110,951, entitled “Methods and Apparatus For Generating Signatures” and filed Apr. 28, 2008; and U.S. patent application Ser. No. 12/034,489, entitled “Methods and Apparatus For Characterizing Media” and filed Feb. 20, 2008. Each of U.S. patent application Ser. No. 12/110,951 and U.S. patent application Ser. No. 12/034,489 is hereby incorporated by reference in its entirety.
In the example delivery system 100 of
To provide and/or broadcast primary media content, the example delivery system 100 of
To provide secondary content, which may or may not be related to primary media content being presented at and/or via the media server 105 and/or the primary content presentation device 110, the example primary media content and secondary content delivery system 100 of
To provide secondary content identified via primary broadcast media content, the example secondary content presentation device 150 of
As described below in connection with
Additionally or alternatively, the example media server 105 of
The example secondary content server 175 of
To determine audience rating information, the example delivery system of
To decode primary media signals, the example media server 105 of
To store received media content, the example media server 105 of
To trigger the example secondary content presentation device 150 to retrieve and present secondary content related to primary media content, the example media server 105 of
To provide secondary content, the example media server 105 of
While an example manner of implementing the example media server 105 of
It should be apparent that turning off the decoder 310 might affect how promptly the secondary content presentation device 150 can detect a change in primary media content. To reduce such effects, the decoder 310 could continuously operate to detect SIDs thereby remaining responsive to, for example, channels changes while less frequently detecting, decoding and/or validating timestamps. How often timestamps are detected, decoded and/or validated may be adjusted depending on the time duration encompassed by a particular secondary content schedule, and/or to achieve a desired level of time synchronization between primary and secondary media content. For example, timestamps may be continuously detected in order to accommodate the skipping of commercials and/or other portions of the primary media content when the primary media content was, for example, pre-recorded.
To retrieve and present secondary content, the example secondary content presentation device 150 of
To present, among other things, secondary content, the example secondary content presentation device 150 of
In some examples, the user interface module 325 of
To store, among other things, primary and/or secondary media content received by and/or obtained by the secondary content module 170, the example secondary content presentation device 150 of
In some examples, the example secondary content module 170 of
While an example manner of implementing the example secondary content presentation device 150 of
Each of the example user interfaces of
The example user interface of
While user interfaces are illustrated in
The example secondary content delivery scenario of
When the example decoder 310 of the secondary content presentation device 105 detects a code 615 in the audio 172, 173 (block 610), the secondary content module 170 provides the code 615 to the example ratings server 190 to facilitate audience measurement. The example secondary content module 170 also queries the content server 175 based on the code 615 to receive one or more links 620 to secondary content. The user interface module 325 and the example secondary content module 170 display the obtained links 620 using, for example, the example user interface of
Turning to
In the illustrated example of
In the illustrated example of
When the example secondary content serving module 185 receives secondary content 820, the secondary content serving module 185 stores and/or caches the secondary content 820 in the media store(s) 130 (block 825).
When the example decoder 310 of the secondary content presentation device 105 detects a code 815 in the audio 172, 173 (block 810), the secondary content module 170 provides the code 815 to the example ratings server 190 to facilitate audience measurement. The example secondary content module 170 queries the secondary content serving module 185 based on the code 815, and receives one or more links 835 to secondary content. The user interface module 325 and the example secondary content module 170 display the obtained links 835 using, for example, the example user interface of
In the illustrated example of
When the secondary content triggerer 180 detects a code 925 in the primary media content 905 (block 920), the secondary content serving module 185 sends the code 925 to the ratings server 192, and the secondary content triggerer 180 sends a trigger 930 to the secondary content presentation device 150 via the Bluetooth interface 220 and/or the wireless interface 225. The secondary content serving module 185 also sends links 935 associated with the detected code 925 to the secondary content presentation device 150. In alternative examples, rather than sending links and/or the trigger 930, the secondary content serving module 185 pushes the secondary content to the secondary content presentation device 150. The trigger 930 sent by the secondary content triggerer 180 to the secondary content presentation device 150 may, additionally or alternatively, include the code detected in the primary media content 905, a signature and/or fingerprint computed based on the primary media content 905, and/or an identifier contained in a non-payload portion of the primary media content 905 (e.g., a PID, a SID and/or a timestamp contained in one or more packet headers).
The user interface module 325 and the example secondary content module 170 display the provided links 935 (or the secondary content) using, for example, the example user interface of
In the illustrated example of
When the example decoder 310 of the secondary content presentation device 105 detects a code 1015 in the audio 172, 173 (block 1010), the secondary content module 170 provides the code 1015 to the example ratings server 190 to facilitate audience measurement. The example secondary content module 170 queries the content server 175 based on the code 1015 and receives secondary content 1025 for the primary media content 1005. The secondary content 1025 is stored and/or cached in the example media store 340 (block 1030). In the example of
The user interface module 325 and the example secondary content module 170 displays the secondary content 1025 using, for example, the example user interface of
In alternative examples, rather than retrieving links and/or secondary content in response to the code 1015, the secondary content server 175 may push the secondary content to the secondary content presentation device 150 independent of any code detection at the secondary presentation device 150. In such alternatives, the secondary content module 170 can query the media store 340 for the secondary content 1025 associated with the detected code 1015 before querying the secondary content server 175 for the secondary content 1025. If the collection of audience measurement data is not desired, the interaction with the ratings server 190 may be omitted in the illustrated example of
The example client interface 1110 of
In some examples, the action scheduler 1125 of
To allow the example media server 105 and/or the secondary content presentation device 150 to query for and/or obtain secondary content, the example secondary content server 175 of
Based on access information provided by the example action server 1140 and/or based on secondary content access and/or selection information provided by the example secondary content presentation device 150 and/or the example media server 105, the example action auditor 1145 of
To encode actions, secondary content, invitations for secondary content, and/or links to secondary content into primary media content, the example secondary content server 175 includes an action encoder 1150. Thus, codes in primary media content are not restricted to only identifying the primary media content for audience measurement purposes but may, additionally or alternatively, be dual use codes corresponding to secondary content and/or links thereto. An example of implementing the example action encoder 1150 of
To build and/or add secondary content items to a secondary content schedule based on loyalty and/or affinity groups, the example secondary content server 175 of
The example loyalty-based scheduler 1160 may be used to reward certain users with special offers based the degree of loyalty that a user exhibits towards certain primary media content and/or content provider(s) 130. Loyalty may be determined based on any number and/or type(s) of criteria including, but not limited to, number of hours spent consuming certain primary media content and/or episodes/telecasts of certain primary media content, the diversity of shows watched on a particular content delivery network, how often the user activates and/or selects secondary content offers, etc. Loyalty may be expressed on any number and/or type(s) of scales based on any number and/or type(s) of gradations. For example, loyalty may be expressed as the number of times an episode of a particular TV show has been watched in the last ten days.
While an example manner of implementing the example secondary content server 175 of
To identify a client, person and/or organization associated with an action, each of the example entries 1205 of
To identify an action type, each of the example entries 1205 of
To specify the action, each of the example entries 1205 of
To define when an action is valid, each of the example entries 1205 of
To define how the action is presented, each of the example entries 1205 of
To define whether the action may be saved, each of the example entries 1205 of
While an example data structure that may be used to implement the example action database 1120 of
To identify an action, each of the example entries 1305 of
To identify when the action ID 1315 is validly associated with the content ID 1310, each of the example entries 1305 of
To record access of the secondary content, each of the example entries 1305 of
While an example data structure that may be used to implement the example content database 1135 of
In the illustrated example of
In the illustrated example of
The example machine-accessible instructions of
In a second process, the example machine-accessible instructions of
In a third process, the example machine-accessible instructions of
Audio Codes and Watermarks
An example encoding and decoding system 1800 is shown in
The audio signal 1804 may be any form of audio including, for example, voice, music, noise, commercial advertisement audio, audio associated with a television program, live performance, etc. In the example of
Although the transmit side of the example system 1800 shown in
The transmitter 1806 may include one or more of a radio frequency (RF) transmitter that may distribute the encoded audio signal through free space propagation (e.g., via terrestrial or satellite communication links) or a transmitter used to distribute the encoded audio signal through cable, fiber, etc. In some examples, the transmitter 1806 may be used to broadcast the encoded audio signal throughout a broad geographical area. In other cases, the transmitter 1806 may distribute the encoded audio signal through a limited geographical area. The transmission may include up-conversion of the encoded audio signal to radio frequencies to enable propagation of the same. Alternatively, the transmission may include distributing the encoded audio signal in the form of digital bits or packets of digital bits that may be transmitted over one or more networks, such as the Internet, wide area networks, or local area networks, as described above in connection with
When the encoded audio signal is received by a receiver 1810, which, in the media monitoring context, may be located at a statistically selected metering site 1812, the audio signal portion of the received program signal is processed to recover the code, even though the presence of that code is imperceptible (or substantially imperceptible) to a listener when the encoded audio signal is presented by speakers 1814 of the receiver 1810. To this end, a decoder 1816 is connected either directly to an audio output 1818 available at the receiver 1810 or to a microphone 1820 placed in the vicinity of the speakers 1814 through which the audio is reproduced. The received audio signal can be either in a monaural or stereo format. Further details regarding decoding and example decoders are provided below. It should be understood that the example decoder 1816 and the example microphone 1820 of
Audio Encoding
As explained above, the encoder 1802 inserts one or more inaudible (or substantially inaudible) codes into the audio 1804 to create encoded audio. An example manner of implementing the example encoder 1802 of
In some examples in which the audio 1804 is provided to the encoder 1802 in analog form, the sampler 1902 is implemented using an analog-to-digital (A/D) converter or any other suitable digitizer. The sampler 1902 may sample the audio 1804 at, for example, 48,000 Hertz (Hz) or any other sampling rate suitable to sample the audio 1804 while satisfying the Nyquist criteria. For example, if the audio 1804 is frequency-limited at 15,000 Hz, the sampler 1902 may operate at 30,000 Hz. Each sample from the sampler 1902 may be represented by a string of digital bits, wherein the number of bits in the string indicates the precision with which the sampling is carried out. For example, the sampler 1902 may produce 8-bit, 16-bit, 24-bit, or 32-bit.
In addition to sampling the audio 1804, the example sampler 1902 accumulates a number of samples (i.e., an audio block) that are to be processed together. For example, the example sampler 1902 accumulates a 512 sample audio block that is passed to the masking evaluator 1904 at one time. Alternatively, in some examples, the masking evaluator 1904 may include an accumulator in which a number of samples (e.g., 512) may be accumulated in a buffer before they are processed.
The masking evaluator 1904 receives or accumulates the samples (e.g., 512 samples) and determines an ability of the accumulated samples to hide code frequencies to human hearing. That is, the masking evaluator determines if code frequencies can be hidden within the audio represented by the accumulated samples by evaluating each critical band of the audio as a whole to determine its energy and determining the noise-like or tonal-like attributes of each critical band and determining the sum total ability of the critical bands to mask the code frequencies. Critical frequency bands, which were determined by experimental studies carried out on human auditory perception, may vary in width from single frequency bands at the low end of the spectrum to bands containing ten or more adjacent frequencies at the upper end of the audible spectrum. If the masking evaluator 1904 determines that code frequencies can be hidden in the audio 1804, the masking evaluator 1904 indicates the amplitude levels at which the code frequencies can be inserted within the audio 1804, while still remaining hidden and provides the amplitude information to the code synthesizer 1908.
In some examples, the masking evaluator 1904 conducts the masking evaluation by determining a maximum change in energy Eb or a masking energy level that can occur at any critical frequency band without making the change perceptible to a listener. The masking evaluation carried out by the masking evaluator 1904 may be carried out as outlined in the Moving Pictures Experts Group—Advanced Audio Encoding (MPEG-AAC) audio compression standard ISO/IEC 13818-7:1997, for example. The acoustic energy in each critical band influences the masking energy of its neighbors and algorithms for computing the masking effect are described in the standards document such as ISO/IEC 13818-7:1997. These analyses may be used to determine for each audio block the masking contribution due to tonality (e.g., how much the audio being evaluated is like a tone) as well as noise like (i.e., how much the audio being evaluated is like noise) features. Further analysis can evaluate temporal masking that extends masking ability of the audio over short time, typically, for 50-100 ms. The resulting analysis by the masking evaluator 1904 provides a determination, on a per critical band basis, the amplitude of a code frequency that can be added to the audio 1804 without producing any noticeable audio degradation (e.g., without being audible).
In some examples, the code frequency selector 1906 is implemented using a lookup table that relates an input code 1803 to a state, wherein each state is represented by a number of code frequencies that are to be emphasized in the encoded audio signal. For example, the code frequency selector 1906 may include information relating symbols or data states to sets of code frequencies that redundantly represent the data states. The number of states selected for use may be based on the types of input codes. For example, an input code representing two bits may be converted to code frequencies representing one of four symbols or states (e.g., 22). In other examples, an input code representing four bits of information is represented by one of 16 symbols or states (e.g., 24). Some other encoding may be used to build in error correction when converting the code 1803 to one or more symbols or states. Additionally, in some examples, more than one code may be embedded in the audio 1804.
An example chart illustrating a code frequency configuration is shown in
As shown in
As shown in
Thus, if the code frequency selector 1906 operates premised on the chart 2000 of
The encoding used to select states in the chart 2000 to convey information may include data blocks and synchronization blocks. For example, the message to be encoded by the system using these 144 different states includes a synchronization block that is followed by several data blocks. Each of the synchronization block and the data blocks is encoded into 18,432 samples and is represented by emphasizing the indices of one of the states shown in one column of the chart 2000.
For example, a synchronization block is represented by emphasizing the indices of one of 16 states selected to represent synchronization information. That is, the synchronization block indicates the start of one of 16 different message types. For example, when considering media monitoring, network television stations may use a first state to represent synchronization and a local affiliate may use a second state to represent synchronization. Thus, at the start of a transmission, one of 16 different states is selected to represent synchronization and transmitted by emphasizing the indices associated with that state. Information payload data follows synchronization data.
In the foregoing example, with regard to how these 16 states representing synchronization information are distributed throughout the 144 states, in some examples the 16 states are selected so that a frequency range including first code frequencies representing each of those 16 states is larger than a frequency amount separating that frequency range from an adjacent frequency range including second code frequencies also representing each of those 16 states. For example, the 16 states representing the synchronization information may be spaced every 9 states in the table above, such that states S1, S10, S19, S28, S37, S46, S54, S63, S72, S81, S90, S99, S108, S117, S126, S135 represent possible states that the synchronization information may take. In Code Band 0 and Code Band 1, this corresponds to a width in frequency indices of 135 indices. The frequency spacing between the highest possible synchronization state (S135) of Code Band 0 and the lowest possible synchronization state (S1) of Code Band 1 is 10 frequency indices. Thus, the range of each collection of frequency indices representing the synchronization information is much larger (e.g., 135 indices) than the amount separating adjacent collections (e.g., 10 indices).
In this example, the remaining 128 states of the 144 state space that are not used to represent synchronization may be used to transmit information data. The data may be represented by any number of suitable states required to represent the number of desired bits. For example, 16 states may be used to represent four bits of information per state, or 128 states may be used to represent seven bits of information per state. In some examples, the states selected to represent data are selected such that a frequency range including first code frequencies representing each of the data states is larger than a frequency amount separating that frequency range from an adjacent frequency range including second code frequencies also representing each of the data states. Thus, states used to represent potential data include at least one substantially low numbered state (e.g., S2) and at least one substantially high numbered state (e.g., S144). This ensures that the ranges including states that may be used to represent data occupy a wide bandwidth within their respective code bands, and that the spacing between adjacent ranges are narrow.
The encoder 1802 may repeat the encoding process and, thereby, encode a number of audio blocks with a particular code. That is, the selected code frequencies may be inserted into several consecutive 512-sample audio blocks. In some examples, the code frequencies representing symbols may be repeated in 36 consecutive audio blocks of 512 samples or 72 overlapping blocks of 256 samples. Thus, at the receive side, when 18,432 samples are processed by a Fourier transform such as a DFT, the emphasized code frequencies will be visible in the resulting spectrum.
As with the chart 2000 of
Chart 2060 of
In example encoders 1802 operating according to the chart 2060 of
As with the charts 2000 and 2030 described above, the chart 2060 indicates that the code bands are separated by the same frequency distance as the frequency indices representing adjacent symbol. For example, Code Band 0 includes a code frequency component having a frequency index of 83, which is one frequency index from the Code Band 1 frequency index 84 representing the state S1.
Returning now to
While the foregoing describes an example code synthesizer 1908 that generates sine waves or data representing sine waves, other example implementations of code synthesizers are possible. For example, rather than generating sine waves, another example code synthesizer 1908 may output frequency domain coefficients that are used to adjust amplitudes of certain frequencies of audio provided to the combiner 1910. In this manner, the spectrum of the audio may be adjusted to include the requisite sine waves.
The combiner 1910 receives both the output of the code synthesizer 1908 and the audio 1804 and combines them to form encoded audio. The combiner 1910 may combine the output of the code synthesizer 1908 and the audio 1804 in an analog or digital form. If the combiner 1910 performs a digital combination, the output of the code synthesizer 1908 may be combined with the output of the sampler 1902, rather than the audio 1804 that is input to the sampler 1902. For example, the audio block in digital form may be combined with the sine waves in digital form. Alternatively, the combination may be carried out in the frequency domain, wherein frequency coefficients of the audio are adjusted in accordance with frequency coefficients representing the sine waves. As a further alternative, the sine waves and the audio may be combined in analog form. The encoded audio may be output from the combiner 1910 in analog or digital form. If the output of the combiner 1910 is digital, it may be subsequently converted to analog form before being coupled to the transmitter 1806.
While an example manner of implementing the example encoder 1802 of
The example process 2100 of
The example process 2100 then determines the code frequencies that will be used to include the code (obtained at block 2102) into the audio block (obtained at block 2106) (block 2108). This is an encoding process in which a code or code bits are converted into symbols that will be represented by frequency components. As described above, the example process 2100 may use one or more lookup tables to convert codes to be encoded into symbols representative of the codes, wherein those symbols are redundantly represented by code frequencies in the audio spectrum. As described above, seven frequencies may be used to redundantly represent the selected symbol in the block of audio. The selection of symbols to represent codes may include consideration of the block number being processed error coding, etc.
Having obtained the audio into which the codes are to be included (block 2106), as well as the code frequencies that are to be used to represent the codes (block 2108), the process 2100 computes the ability of the audio block to mask the selected code frequencies (block 2110). As explained above, the masking evaluation may include conversion of the audio block to the frequency domain and consideration of the tonal or noise-like properties of the audio block, as well as the amplitudes at various frequencies in the block. Alternatively, the evaluation may be carried out in the time domain. Additionally, the masking may also include consideration of audio that was in a previous audio block. As noted above, the masking evaluation may be carried out in accordance with the MPEG-AAC audio compression standard ISO/IEC 13818-7:1997, for example. The result of the masking evaluation is a determination of the amplitudes or energies of the code frequencies that are to be added to the audio block, while such code frequencies remain inaudible or substantially inaudible to human hearing.
Having determined the amplitudes or energies at which the code frequencies should be generated (block 2110), the example process 2100 synthesizes one or more sine waves having the code frequencies (block 2112). The synthesis may result in actual sine waves or may result in digital data equivalent representative of sine waves. Some example sine waves are synthesized with amplitudes specified by the masking evaluation. Alternatively, the code frequencies may be synthesized with fixed amplitudes and then amplitudes of the code frequencies may be adjusted subsequent to synthesis.
The example process 2100 then combines the synthesized code frequencies with the audio block (block 2114). The combination may be carried out through addition of data representing the audio block and data representing the synthesized sine waves, or may be carried out in any other suitable manner.
In another example, the code frequency synthesis (block 2112) and the combination (block 2114) may be carried out in the frequency domain, wherein frequency coefficients representative of the audio block in the frequency domain are adjusted per the frequency domain coefficients of the synthesized sine waves.
As explained above, the code frequencies are redundantly encoded into consecutive audio blocks. In some examples, a particular set of code frequencies is encoded into 36 consecutive blocks. Thus, the example process 2100 monitors whether it has completed the requisite number of iterations (block 2116) (e.g., the process 2100 determines whether the example process 2100 has been repeated 36 times to redundantly encode the code frequencies). If the example process 2100 has not completed the requisite iterations (block 2116), the example process 2100 samples audio (block 2104), analyses the masking properties of the same (block 2110), synthesizes the code frequencies (block 2112) and combines the code frequencies with the newly acquired audio block (block 2114), thereby encoding another audio block with the code frequencies.
However, when the requisite iterations to redundantly encode the code frequencies into audio blocks have completed (block 2116), the example process 2100 obtains the next code to be included in the audio (block 2102) and the example process 2100 iterates. Thus, the example process 2100 encodes a first code into a predetermined number of audio blocks, before selecting the next code to encode into a predetermined number of audio blocks, and so on. It is, however, possible, that there is not always a code to be embedded in the audio. In that instance, the example process 2100 may be bypassed. Alternatively, if no code to be included is obtained (block 2102), no code frequencies will by synthesized (block 2112) and, thus, there will be no code frequencies to alter an audio block. Thus, the example process 2100 may still operate, but audio blocks may not always be modified—especially when there is no code to be included in the audio.
Audio Decoding
In general, the decoder 1816 detects the code signal that was inserted into the audio 1804 to form encoded audio at the encoder 1802. That is, the decoder 1816 looks for a pattern of emphasis in code frequencies it processes. Once the decoder 1816 has determined which of the code frequencies have been emphasized, the decoder 1816 determines, based on the emphasized code frequencies, the symbol present within the encoded audio. The decoder 1816 may record the symbols, or may decode those symbols into the codes that were provided to the encoder 1802 for insertion into the audio.
The samples from the sampler 2202 are provided to a time to frequency domain converter 2204. The time to frequency domain converter 2204 may be implemented using a DFT, or any other suitable technique to convert time-based information into frequency-based information. In some examples, the time to frequency domain converter 2204 may be implemented using a sliding DFT in which a spectrum is calculated each time a new sample is provided to the example time to frequency converter 2204. In some examples, the time to frequency domain converter 2204 uses 18,432 samples of the encoded audio and determines a spectrum therefrom. The resolution of the spectrum produced by the time to frequency domain converter 2204 increases as the number of samples used to generate the spectrum. Thus, the number of samples processed by the time to frequency domain converter 2204 should match the resolution used to select the indices in the charts of
The spectrum produced by the time to frequency domain converter 2204 passes to a code frequency monitor 2206, which monitors all the frequencies or spectral lines corresponding to the frequency indices that can potentially carry codes inserted by the example encoder 1802. For example, if the example encoder 1802 sends data based on the chart of
The monitoring of the code frequencies includes evaluating the spectral energies at each of the code frequencies. Thus, the code frequency monitor 2206 normalizes the energies for a specific row of the chart of
Based on the normalized energies produced by the code frequency monitor 2206, a symbol determiner 2208 to determines the symbol that was present in the encoded audio. In some examples, the symbol determiner 2208 sums all of the normalized energies corresponding to each state. That is, the symbol determiner 2208 creates 144 sums, each corresponding to a column, or state, in the chart 2000. The column or state having the highest sum of normalized energies is determined to be the symbol that was encoded. The symbol determiner 2208 may use a lookup table similar to the lookup table of
The most probable symbols are processed by the validity checker 2210 to determine if the received symbols correspond to valid data. That is, the validity checker 2210 determines if bits corresponding to the most probable symbol are valid given the encoding scheme used to convert the code into a symbol at the code frequency selector 1906 of the encoder 1802. The output of the validity checker 2210 is the code, which corresponds to the code provided to the code frequency selector 1906 of
While an example manner of implementing the example decoder 1816 of
The example process 2300 of
As each sample is obtained, a sliding time to frequency conversion is performed on a collection of samples including numerous older samples and the newly added sample obtained at block 2302 (block 2304). In some examples, a sliding DFT is used to process streaming input samples including 18,431 old samples and the one newly added sample. In some examples, the DFT using 18,432 samples results in a spectrum having a resolution of 2.6 Hz.
After the spectrum is obtained through the time to frequency conversion (block 2304), the energies of the code frequencies are determined (block 2306). In some examples, the energies may be obtained by taking the magnitude of the result of the time to frequency conversion (block 2304) for the frequency components that may be emphasized to encode the audio. To save processing time and minimize memory consumption, only frequency information corresponding to the code frequencies may be retained and processed further, because those frequencies are the only frequencies at which encoded information may be located. Of course, the example process 2300 may use other information than the energies. For example, the example process 2300 could retain both magnitude and phase information and process the same.
Additionally, the frequencies that are processed in the process 2300 may be further reduced by considering a previously-received synchronization symbol. For example, if a particular synchronization symbol is always followed by one of six different symbols, the frequencies that are processed may be reduced to those of the six different symbols after that particular synchronization symbol is received.
After the energies are determined (block 2306), the example process 2300 normalizes the code frequency energies of each Code Block based on the largest energy in that Code Block (block 2308). That is, the maximum energy of a code frequency in a Code Block is used as a divisor against itself and all other energies in that Code Block. The normalization results in each Code Block having one frequency component having a normalized energy value of one, with all other normalized energy values in that Code Block having values less than one. Thus, with reference to
The example process 2300 then operates on the normalized energy values to determine the most likely symbol based thereon (block 2310). As explained above, this determination includes, for example, summing the normalized energy values corresponding to each symbol, thereby resulting in the same number of sums as symbols (e.g., in consideration of the chart of
After having determined the received symbol (block 2310), the example process 2300 determines the code corresponding to the received symbol (block 2312). That is, the example process 2300 decodes the encoding of a code into a symbol that was carried out by the example encoding process 2100 (e.g., the encoding performed by block 2108).
After the decoding is complete and codes are determined from symbols (block 2312), the example process 2300 analyzes the code for validity (block 2314). For example, the received codes may be examined to determine if the code sequence is valid based on the encoding process by which codes are sent. Valid codes are logged and may be sent back to a central processing facility at a later time, along with a time and date stamp indicating when the codes were received. Additionally or alternatively, as described above in connection with
The processor platform P100 of the example of
The processor P105 is in communication with the main memory (including a ROM P120 and/or the RAM P115) via a bus P 125. The RAM P115 may be implemented by dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), and/or any other type of RAM device, and ROM may be implemented by flash memory and/or any other desired type of memory device. Access to the memory P115 and the memory P120 may be controlled by a memory controller (not shown). The example memory P115 may be used to, for example, implement the example media stores 130, 340 and/or the example databases 1120, 1130 and 1135.
The processor platform P100 also includes an interface circuit P130. Any type of interface standard, such as an external memory interface, serial port, general-purpose input/output, etc, may implement the interface circuit P130. One or more input devices P135 and one or more output devices P140 are connected to the interface circuit P130. The input devices P135 and the output devices P140 may be used to implement any of the example broadcast input interface 205, the example Bluetooth interface 220, the example wireless interface 225, the example communication interface 230, the example audio input interface 305, the example display 330, the example input device(s) 335, the example wireless interface 315, the example cellular interface 320 and/or the example Bluetooth interface 345.
To identify a portion of and/or location within primary media content, the example secondary content module 170 of
To select secondary content to be displayed, the example secondary content module 170 of
To archive secondary content and/or secondary content offers, the example secondary content module 170 of
Example machine-accessible instructions that may be executed to implement the example secondary content module 170 of
While an example manner of implementing the example secondary content module 170 of
The example data structure of
To identify a secondary content offer, each of the example entries 2610 of
To identify times within the primary media content identified in the SID field 2612 during which the secondary content offer is to be displayed, each of the example entries 2610 of
To specify an offer type, each of the example entries 2610 of
To specify a banner to be displayed to present an offer (e.g., in the example user interface of
To identify an action type, each of the example entries 2610 of
To specify an action, each of the example entries 2610 of
To identify content to be cached, each of the example entries 2610 of
To categorize the secondary content, each of the example entries 2610 of
To define whether the secondary content and/or secondary content offer may be saved, each of the example entries 2610 of
To identify an expiration date and/or time, each of the example entries 2610 of
While example data structures that may be used to implement a secondary content schedule have been illustrated in
The example machine-accessible instructions of
When the decoder 310 detects a valid code (e.g., a SID) 2812, the example fetcher 2505 determines whether the SID has changed and/or is different from a preceding SI (block 2815). If the SID has changed (block 2815), the fetcher 2505 fetches a new secondary content schedule from the secondary content server 175 (block 2820), stores the received schedule in the schedule database 2510 (block 2825), and sets the program clock 2515 to correspond to the timestamp t(n) detected by the decoder 310 (block 2830).
Returning to block 2815, if the SID has not changed (block 2815), the fetcher 2505 determines whether the current timestamp t(n) falls within the time interval defined and/or encompassed by the secondary content schedule stored in the schedule database 2510 (block 2835). If the current timestamp t(n) is falls within the secondary content schedule (block 2835), the selector 2520 determines whether the timestamp t(n) corresponds to an offer (e.g., secondary content) in the schedule (block 2840). If the timestamp t(n) corresponds to a secondary content offer in the schedule (block 2840), the selector 2520 obtains the corresponding secondary content from the schedule 2510, and displays the corresponding secondary content via the user interface module 325 (block 2845).
The example selector 2520 compares time values generated by the program clock 2515 to the begin times 2628 (
If the user indicates via the user interface module 325 that an offer and/or secondary content is to be archived, and/or an offer is to be automatically archived (e.g., based on archive settings) (block 2855), the archiver 2525 stores the secondary content offer(s) and/or secondary content in the archive 2530 (block 2860).
If the user indicates via the user interface module 325 that an secondary content offer and/or secondary content is to be retrieved (e.g., by providing search query criteria), the archiver 2525 retrieves the secondary content offer and/or secondary content from the archive 2530 (block 2865), and the selector 2520 displays the retrieved secondary content via the user interface module 325 (block 2845).
If the user indicates via the user interface module 325 that the archive 2530 is to be edited and/or modified (e.g., items removed), the archiver 2525 makes corresponding changes to the archive 2530 (block 2870).
Portions of the example machine-accessible instructions of
At block 2815 (
Returning to block 2915, if the timestamp t(n) does not fall within the secondary content schedule (block 2915), the fetcher 2505 fetches a new secondary content schedule (block 2820).
Aperiodically and/or periodically, the fetcher 2505 determines whether it is time to synchronize schedules (block 2930). If it is time to synchronize schedules (block 2930), control proceeds to block 2905 to decode another timestamp t(n).
The example secondary content delivery scenario of
The example media server 105 receives primary media content 3015 via the example broadcast input interface 205. The example media server 105 and/or the example primary content presentation device 110 emits and/or outputs the free-field radiating audio signal 172, 173 associated with the primary media content 3015 via, for example, one or more speakers.
When the example decoder 310 of the secondary content presentation device 105 detects a SID in the audio 172, 173 (block 3020), the program clock 2515 synchronizes its output to the timestamp t(n) (block 3025). If the SID has changed (block 3030), the fetcher 2505 sends the SID and timestamp t(n) to the secondary content server 175. The secondary content server 175 forms a schedule of secondary content based on the SID and timestamp t(n) (block 3035), and sends the secondary content schedule to the fetcher 2505. The fetcher 2505 stores the secondary content schedule received from the secondary content server 175 in the schedule database 2510 (block 3040).
The example selector 2520 displays secondary content offers according to the received secondary content schedule using, for example, the example user interface of
Returning to block 3030, if the SID has not changed (block 3030), the fetcher 2505 determines whether the new timestamp t(n) is greater than a sum of the previous timestamp t(n−1) and the timeout interval T (block 3075). If the new timestamp t(n) is greater than the sum (block 3075), the fetcher 2505 sends the SID and timestamp t(n) to the secondary content server 175 to request an updated secondary content schedule. If the new timestamp t(n) is not greater than the sum (block 3075), control proceeds to block 3045 to select and display secondary content.
At some subsequent time (depicted by a dashed line 3107), and after a secondary content schedule has been received using, for example, the example process of
If automatic archiving is enabled for the category of offers including the displayed offer (block 3120), the archiver 2525 archives the offer in the archive 2530 (block 3125). If automatic archiving is not applicable (block 3120), but the user has indicated that the offer is to be archived (block 3130), the archiver 2525 archives the offer in the archive 2530 (block 3125).
If any displayed link and/or secondary content offer is selected and/or activated by a user (block 3140), a corresponding link ID 3145 is sent to the ratings server 190 and the secondary content server 175. In response to the link ID 3145, the secondary content server 175 provides to the secondary content presentation device 150 secondary content 3150 associated with the link ID 3060. The secondary content presentation device 150 displays the received secondary content 3150 (block 3155).
If at some subsequent time (depicted by a dashed line 3160), the user desires to retrieve one or more archived secondary content offers (block 3165), the archiver 2525 retrieves and/or sorts offers corresponding to one or more criteria provided by the user (block 3170). The example selector 2520 displays the retrieved and/or sorted secondary content offers (block 3175) and sends a content ID 3180 corresponding to the offer to the rating server 190. If the collection of audience measurement data is not desired, the interactions with the ratings server 190 may be omitted in the illustrated example of
To create user profiles, the example loyalty-based scheduler 1160 of
An example data structure that may be used to implement the example profile database 3220 is illustrated in
Returning to
For a given loyalty metric (e.g., number of episodes of a TV show that were watched during a period of time), the example loyalty analyzer 3225 segments the users of the secondary content server 175 into, for example, three groups of equal size. An example group represents the users who are most loyal and, thus, may be presented additional and/or special secondary content offers. In some examples, a user is only credited with consuming primary media content when a certain percentage of the primary media content has been consumed (e.g., watched and/or listened to). In some examples, loyalty groups are defined in a loyalty database 3230 and the loyalty analyzer 3225 compares a user's profile with the defined loyalty groups to determine their level of loyalty.
In some examples, affinity groups (e.g., those who watch sports a lot, those who tend to watch a lot of movies, those who watch primarily during the day, etc.) can be identified and/or defined manually. Additionally or alternatively, data mining techniques can be applied to the user profiles stored in the profile database 3220 to automatically define affinity groups.
An example process that may be carried out to perform data mining to define affinity groups can be illustrated with reference to the example user profiles of
The example loyalty analyzer 3225 performs dimensional analysis to develop indicators of a user's volume of media consumption, and their propensity and/or affinity to watch one type of program versus other types of programs. As shown in
The media consumption volume ratios PGMS and propensity ratios S/(R+S) can be used to identify and/or define clusters and/or affinity groups of users, as illustrated in
While the example process of defining groups described and illustrated in connection with
Returning to
To select secondary content offers for the received SID, UID and timestamp t(n) combination, the example loyalty-based scheduler 1160 of
To allow any number and/or type(s) of advertiser(s), program owner(s), content creator(s) and/or content provider(s) 3245 to define, specify and/or provide secondary content offers for particular loyalty and/or affinity groups, the example loyalty-based scheduler 1160 includes a loyalty/affinity manager 3250. The example loyalty/affinity manager 3250 implements any number and/or type(s) of API(s) and/or web-based interface(s) that allow the advertiser(s), program owner(s), content creator(s) and/or content provider(s) 3245 to interact with the database 3230 and 3240 to add, create, modify, remove and/or specify loyalty and/or affinity based secondary content offers.
The example databases 3210, 3220, 3230 and 3240 of
While an example manner of implementing the example loyalty-based scheduler 1160 of
The example machine-accessible instructions of
The loyalty analyzer 3225 computes and/or determines the user's loyalty score (e.g., number of times they have watched an episode of a TV show) (block 3620) and computes and/or determines the user's loyalty level based on the loyalty score (block 3625). In some examples, the loyalty analyzer 3225 automatically segments the user profiles into loyalty levels (block 3630).
Based on the loyalty score determined by the loyalty analyzer 3225 (block 3625), the offer selector 3235 queries the offers database 3240 to determine whether there are any applicable loyalty-based secondary content offers (block 3635). If there is an applicable loyalty-based secondary content offer (block 3635), the offer selector 3235 adds the identified offer(s) to the user's schedule 3645 (block 3640).
If a primary content owner and/or a content provider provide loyalty input(s) 3650 and 3655, respectively, the loyalty/affinity manager 3250 updates the loyalty database 3230 (blocks 3660 and 3665, respectively). If the primary content owner and/or the content provider provide loyalty-based offer(s) 3650 and 3655, respectively, the loyalty/affinity manager 3250 updates the offer database 3240 (blocks 3670).
The example machine-accessible instructions of
The example loyalty analyzer 3225 compares the user's profile to one or more affinity groups 3725 to determine whether the user belongs to any affinity groups (block 3730). The loyalty analyzer 3225 periodically or aperiodically analyzes the user profiles stored in the profile database 3220 to define the one or more affinity groups 3725 (block 3735).
Based on the affinity group determination by the loyalty analyzer 3225 (block 3730), the offer selector 3235 queries the offers database 3240 to determine whether there are any applicable affinity group based secondary content offers (block 3740). If there is an applicable affinity-based secondary content offer (block 3740), the offer selector 3235 adds the identified offer(s) to the user's schedule 3750 (block 3745).
If a user provides an affinity group based offer 3755, the loyalty/affinity manager 3250 updates the offers database 3240 (block 3760).
An example encoding and decoding system 3800 is shown in
The audio signal 3804 may be any form of audio including, for example, voice, music, noise, commercial advertisement audio, audio associated with a television program, live performance, etc. In the example of
Some example audio signals 3804 are a digitized version of an analog audio signal, wherein the analog audio signal has been sampled at 48 kHz. As described below in detail, two seconds of audio, which correspond to 96,000 audio samples at the 48 kHz sampling rate, may be used to carry one message, which may be a synchronization message and 49 bits of information. Using an encoding scheme of 7 bits per symbol, the message requires transmission of eight symbols of information. Alternatively, in the context of overwriting described below, one synchronization symbol is used and one information symbol conveying one of 128 states follows the synchronization symbol. As described below in detail, according to one example, one 7-bit symbol of information is embedded in a long block of audio samples, which corresponds to 9216 samples. Some such long blocks include 36 overlapping short blocks of 256 samples, wherein in a 50% overlapping block 256 of the samples are old and 256 samples are new.
Although the transmit side of the example system 3800 shown in
The transmitter 3806 may include one or more of a radio frequency (RF) transmitter that may distribute the encoded audio signal through free space propagation (e.g., via terrestrial or satellite communication links) or a transmitter used to distribute the encoded audio signal through cable, fiber, etc. Some example transmitters 3806 are used to broadcast the encoded audio signal throughout a broad geographical area. In other examples, the transmitter 3806 may distribute the encoded audio signal through a limited geographical area. The transmission may include up-conversion of the encoded audio signal to radio frequencies to enable propagation of the same. Alternatively, the transmission may include distributing the encoded audio signal in the form of digital bits or packets of digital bits that may be transmitted over one or more networks, such as the Internet, wide area networks, or local area networks. Thus, the encoded audio signal may be carried by a carrier signal, by information packets or by any suitable technique to distribute the audio signals.
When the encoded audio signal is received by a receiver 3810, which, in the media monitoring context, may be located at a statistically selected metering site 3812, the audio signal portion of the received program signal is processed to recover the code, even though the presence of that code is imperceptible (or substantially imperceptible) to a listener when the encoded audio signal is presented by speakers 3814 of the receiver 3810. To this end, a decoder 3816 is connected either directly to an audio output 3818 available at the receiver 3810 or to a microphone 3820 placed in the vicinity of the speakers 3814 through which the audio is reproduced. The received audio signal can be either in a monaural or stereo format. Further details regarding decoding and example decoders are provided below. It should be understood that the example decoder 3816 and the example microphone 3820 of
Audio Encoding
As explained above, the encoder 3802 inserts one or more inaudible (or substantially inaudible) codes into the audio 3804 to create encoded audio. One example encoder 3802 is shown in
In general, during operation, the encoder 3802 receives the audio 3804 and the prior code detector 3904 determines if the audio 3804 has been previously encoded with information, which will make it difficult for the encoder 3802 to encode additional information into the previously encoded audio. For example, a prior encoding may have been performed at a prior location in the audio distribution chain (e.g., at a national network level). The prior code detector 3904 informs the encoding lineup 3902 as to whether the audio has been previously encoded. The prior code detector 3904 may be implemented by a decoder as described herein.
The encoding lineup 3902 receives the information 3803 and produces code frequency signals based thereon and combines the code frequency signal with the audio 3804. The operation of the encoding lineup 3902 is influenced by the output of the prior code detector 3904. For example, if the audio 3804 has been previously encoded and the prior code detector 3904 informs the encoding lineup 3902 of this fact, the encoding lineup 3902 may select an alternate message that is to be encoded in the audio 3804 and may also alter the details by which the alternate message is encoded (e.g., different temporal location within the message, different frequencies used to represent symbols, etc.).
The encoding lineup 3902 is also influenced by the masking lineup 3906. In general, the masking lineup 3906 processes the audio 3804 corresponding to the point in time at which the encoding lineup 3902 wants to encode information and determines the amplitude at which the encoding should be performed. As described below, the masking lineup 3906 may output a signal to control code frequency signal amplitudes to keep the code frequency signal below the threshold of human perception.
As shown in the example of
Some example message formats 3922 representative of messages output from the message generator 3910 include a synchronization symbol 3924. The synchronization symbol 3924 is used by decoders, examples of which are described below, to obtain timing information indicative of the start of a message. Thus, when a decoder receives the synchronization symbol 3924, that decoder expects to see additional information following the synchronization symbol 3924.
In the example message format 3922 of
The message format 3922 also includes pre-existing code flag information 3930. However, the pre-existing code flag information 3930 is only selectively used to convey information. When the prior code detector 3904 informs the message generator 3910 that the audio 3804 has not been previously encoded, the pre-existing code flag information 3930 is not used. Accordingly, the message output by the message generator only includes the synchronization symbol 3924, the 42 bits of message information 3926, and the seven bits of message information 3928; the pre-existing code flag information 3930 is blank or filled by unused symbol indications. In contrast, when the prior code detector 3904 provides to the message generator 3910 an indication that the audio 3804 into which the message information is to be encoded has previously been encoded, the message generator 3910 will not output the synchronization symbol 3924, the 42 bits of message information 3926, or the seven bits of message information 3928. Rather, the message generator 3910 will utilize only the pre-existing code flag information 3930. Some example pre-existing code flags information include a pre-existing code flag synchronization symbol to signal that pre-existing code flag information is present. The pre-existing code flag synchronization symbol is different from the synchronization symbol 3924 and, therefore, can be used to signal the start of pre-existing code flag information. Upon receipt of the pre-existing code flag synchronization symbol, a decoder can ignore any prior-received information that aligned in time with a synchronization symbol 3924, 42 bits of message information 3926, or seven bits of message information 3928. To convey information, such as a channel indication, a distribution identification, or any other suitable information, a single pre-existing code flag information symbol follows the pre-existing code flag synchronization symbol. This pre-existing code flag information may be used to provide for proper crediting in an audience monitoring system.
The output from the message generator 3910 is passed to the symbol selector 3912, which selects representative symbols. When the synchronization symbol 3924 is output, the symbol selector may not need to perform any mapping because the synchronization symbol 3924 is already in symbol format. Alternatively, if bits of information are output from the message generator 3910, the symbol selector may use straight mapping, wherein, for example seven bits output from the message generator 3910 are mapped to a symbol having the decimal value of the seven bits. For example, if a value of 1010101 is output from the message generator 3910, the symbol selector may map those bits to the symbol 85. Of course other conversions between bits and symbols may be used. In certain examples, redundancy or error encoding may be used in the selection of symbols to represent bits. Additionally, any other suitable number of bits than seven may be selected to be converted into symbols. The number of bits used to select the symbol may be determined based on the maximum symbol space available in the communication system. For example, if the communication system can only transmit one of four symbols at a time, then only two bits from the message generator 3910 would be converted into symbols at a time.
Another example message includes 8 long blocks followed by several null short blocks to pad the duration of the message to approximately 1.6 seconds. The first of the 8 long blocks represents the synchronization symbol followed by 7 long blocks representing, for example, the payload or message content depicted in
The symbols from the symbol selector 3912 are passed to the code frequency selector 3914 that selects code frequencies that are used to represent the symbol. The symbol selector 3912 may include one or more look up tables (LUTs) 3932 that may be used to map the symbols into code frequencies that represent the symbols. That is, a symbol is represented by a plurality of code frequencies that the encoder 3802 emphasizes in the audio to form encoded audio that is transmitted. Upon receipt of the encoded audio, a decoder detects the presence of the emphasized code frequencies and decodes the pattern of emphasized code frequencies into the transmitted symbol. Thus, the same LUT selected at the encoder 3910 for selecting the code frequencies needs to be used in the decoder. An example LUT is described in conjunction with
The code frequency selector 3914 may select any number of different LUTs depending of various criteria. For example, a particular LUT or set of LUTs may be used by the code frequency selector 3914 in response to the prior receipt of a particular synchronization symbol. Additionally, if the prior code detector 3904 indicates that a message was previously encoded into the audio 3804, the code frequency selector 3914 may select a lookup table that is unique to pre-existing code situations to avoid confusion between frequencies used to previously encode the audio 3804 and the frequencies used to include the pre-existing code flag information.
An indication of the code frequencies that are selected to represent a particular symbol is provided to the synthesizer 3916. The synthesizer 3916 may store, for each short block constituting a long block, three complex Fourier coefficients representative of each of the possible code frequencies that the code frequency selector 3914 will indicate. These coefficients represent the transform of a windowed sinusoidal code frequency signal whose phase angle corresponds to the starting phase angle of code sinusoid in that short block.
While the foregoing describes an example code synthesizer 3908 that generates sine waves or data representing sine waves, other example implementations of code synthesizers are possible. For example, rather than generating sine waves, another example code synthesizer 3908 may output Fourier coefficients in the frequency domain that are used to adjust amplitudes of certain frequencies of audio provided to the combiner 3920. In this manner, the spectrum of the audio may be adjusted to include the requisite sine waves.
The three complex amplitude-adjusted Fourier coefficients corresponding to the symbol to be transmitted are provided from the synthesizer 3916 to the inverse Fourier transform 3918, which converts the coefficients into time-domain signals having the prescribed frequencies and amplitudes to allow their insertion into the audio to convey the desired symbols are coupled to the combiner 3920. The combiner 3920 also receives the audio. In particular, the combiner 3920 inserts the signals from the inverse Fourier transform 3918 into one long block of audio samples. As described above, for a given sampling rate of 48 kHz, a long block is 9216 audio samples. In the provided example, the synchronization symbol and 49 bits of information require a total of eight long blocks. Because each long block is 9216 audio samples, only 73,728 samples of audio 3804 are needed to encode a given message. However, because messages begin every two seconds, which is every 96,000 audio samples, there will be many samples at the end of the 96,000 audio samples that are not encoded. The combining can be done in the digital domain, or in the analog domain.
However, in the case of a pre-existing code flag, the pre-existing code flag is inserted into the audio 3804 after the last symbol representing the previously inserted seven bits of message information. Accordingly, insertion of the pre-existing code flag information begins at sample 73,729 and runs for two long blocks, or 18,432 samples. Accordingly, when pre-existing code flag information is used, fewer of the 96,000 audio samples 3804 will be unencoded.
The masking lineup 3906 includes an overlapping short block maker that makes short blocks of 512 audio samples, wherein 256 of the samples are old and 256 samples are new. That is, the overlapping short block maker 3940 makes blocks of 512 samples, wherein 256 samples are shifted into or out of the buffer at one time. For example, when a first set of 256 samples enters the buffer, the oldest 256 samples are shifted out of the buffer. On a subsequent iteration, the first set of 256 samples are shifted to a latter position of the buffer and 256 samples are shifted into the buffer. Each time a new short block is made by shifting in 256 new samples and removing the 256 oldest samples, the new short block is provided to a masking evaluator 3942. The 512 sample block output from the overlapping short block maker 3940 is multiplied by a suitable window function such that an “overlap-and-add” operation will restore the audio samples to their correct value at the output. A synthesized code signal to be added to an audio signal is also similarly windowed to prevent abrupt transitions at block edges when there is a change in code amplitude from one 512-sample block to the next overlapped 512-sample block. These transitions if present create audible artifacts.
The masking evaluator 3942 receives samples of the overlapping short block (e.g., 512 samples) and determines an ability of the same to hide code frequencies to human hearing. That is, the masking evaluator determines if code frequencies can be hidden within the audio represented by the short block by evaluating each critical band of the audio as a whole to determine its energy and determining the noise-like or tonal-like attributes of each critical band and determining the sum total ability of the critical bands to mask the code frequencies. According to the illustrated example, the bandwidth of the critical bands increases with frequency. If the masking evaluator 3942 determines that code frequencies can be hidden in the audio 3804, the masking evaluator 3904 indicates the amplitude levels at which the code frequencies can be inserted within the audio 3804, while still remaining hidden and provides the amplitude information to the synthesizer 3916.
Some example the masking evaluators 3942 conduct the masking evaluation by determining a maximum change in energy Eb or a masking energy level that can occur at any critical frequency band without making the change perceptible to a listener. The masking evaluation carried out by the masking evaluator 3942 may be carried out as outlined in the Moving Pictures Experts Group—Advanced Audio Encoding (MPEG-AAC) audio compression standard ISO/IEC 13818-7:1997, for example. The acoustic energy in each critical band influences the masking energy of its neighbors and algorithms for computing the masking effect are described in the standards document such as ISO/IEC 13818-7:1997. These analyses may be used to determine for each short block the masking contribution due to tonality (e.g., how much the audio being evaluated is like a tone) as well as noise like (i.e., how much the audio being evaluated is like noise) features. Further analysis can evaluate temporal masking that extends masking ability of the audio over short time, typically, for 50-100 milliseconds (ms). The resulting analysis by the masking evaluator 3942 provides a determination, on a per critical band basis, the amplitude of a code frequency that can be added to the audio 3804 without producing any noticeable audio degradation (e.g., without being audible).
Because a 256 sample block will appear in both the beginning of one short block and the end of the next short block and, thus, will be evaluated two times by the masking evaluator 3942, the masking evaluator makes two masking evaluations including the 256 sample block. The amplitude indication provided to the synthesizer 3916 is a composite of those two evaluations including that 256 sample block and the amplitude indication is timed such that the amplitude of the code inserted into the 256 samples is timed with those samples arriving at the combiner 3920.
Referring now to
While an example LUT 3932 is shown in
In some example operations of the code frequency selector 3914, a symbol of 25 (e.g., a binary value of 0011001) is received from the symbol selector 3912. The code frequency selector 3914 accesses the LUT 3932 and reads row 25 of the symbol column 4002. From this row, the code frequency selector reads that code frequency indices 217, 288, 325, 403, 512, 548, and 655 are to be emphasized in the audio 3804 to communicate the symbol 25 to the decoder. The code frequency selector 3914 then provides an indication of these indices to the synthesizer 3916, which synthesizes the code signals by outputting Fourier coefficients corresponding to these indices.
The combiner 3920 receives both the output of the code synthesizer 3908 and the audio 3804 and combines them to form encoded audio. The combiner 3920 may combine the output of the code synthesizer 3908 and the audio 3804 in an analog or digital form. If the combiner 3920 performs a digital combination, the output of the code synthesizer 3908 may be combined with the output of the sampler 3902, rather than the audio 3804 that is input to the sampler 3902. For example, the audio block in digital form may be combined with the sine waves in digital form. Alternatively, the combination may be carried out in the frequency domain, wherein frequency coefficients of the audio are adjusted in accordance with frequency coefficients representing the sine waves. As a further alternative, the sine waves and the audio may be combined in analog form. The encoded audio may be output from the combiner 3920 in analog or digital form. If the output of the combiner 3920 is digital, it may be subsequently converted to analog form before being coupled to the transmitter 3806.
While an example manner of implementing the example encoder 3802 of
The example process 4300 of
If the received samples have not been previously encoded (block 4304), the process 4300 generates a communication message (block 4306), such as a communication message having the format shown in
The communication message is then mapped into symbols (block 4308). For example, the synchronization information need not be mapped into a symbol if the synchronization information is already a symbol. In another example, if a portion of the communication message is a series of bits, such bits or groups of bits may be represented by one symbol. As described above in conjunction with the symbol selector 3912, which is one manner in which the mapping (block 4308) may be carried out, one or more tables or encoding schemes may be used to convert bits into symbols. For example, some techniques may include the use of error correction coding, or the like, to increase message robustness through the use of coding gain. In one particular example implementation having a symbol space sized to accommodate 128 data symbols, seven bits may be converted into one symbol. Of course, other numbers of bits may be processed depending on many factors including available symbol space, error correction encoding, etc.
After the communication symbols have been selected (block 4308), the process 4300 selects a LUT that will be used to determine the code frequencies that will be used to represent each symbol (block 4310). In some examples, the selected LUT may be the example LUT 3932 of
After the symbols have been generated (block 4308) and the LUT is selected (block 4310), the symbols are mapped into code frequencies using the selected LUT (block 4312). In some examples in which the LUT 3932 of
Code signals including the code frequencies are then synthesized (block 4314) at amplitudes according to a masking evaluation, which is described in conjunction with blocks 3940 and 3942 or
After the code signals including the code frequencies have been synthesized, they are combined with the audio samples (block 4316). As described in conjunction with
The insertion of the code signal into the audio may be carried out by adding samples of the code signal to samples of the host audio signal, wherein such addition is done in the analog domain or in the digital domain. Alternatively, with proper frequency alignment and registration, frequency components of the audio signal may be adjusted in the frequency domain and the adjusted spectrum converted back into the time domain.
The foregoing described the operation of the process 4300 when the process determined that the received audio samples have not been previously encoded (block 4304). However, in situations in which a portion of media has been through a distribution chain and encoded as it was processed, the received samples of audio processed at block 4304 already include codes. For example, a local television station using a courtesy news clip from CNN in a local news broadcast might not get viewing credit based on the prior encoding of the CNN clip. As such, additional information is added to the local news broadcast in the form of pre-existing code flag information. If the received samples of audio have been previously encoded (block 4304), the process generates pre-existing code flag information (block 4318). The pre-existing code flag information may include the generation of an pre-existing code flag synchronization symbol and, for example, the generation of seven bits of data, which will be represented by a single data symbol. The data symbol may represent a station identification, a time, or any other suitable information. For example, a media monitoring site (MMS) may be programmed to detect the pre-existing code flag information to credit the station identified therein.
After the pre-existing code flag information has been generated (block 4318), the process 4300 selects the pre-existing code flag LUT that will be used to identify code frequencies representative of the pre-existing code flag information (block 4320). In some examples, the pre-existing code flag LUT may be different than other LUTs used in non-pre-existing code conditions. For instance, the pre-existing code flag synchronization symbol may be represented by the code frequencies 220, 292, 364, 436, 508, 580, and 652.
After the pre-existing code flag information is generated (block 4318) and the pre-existing code flag LUT is selected (block 4320), the pre-existing code flag symbols are mapped to code frequencies (block 4312), and the remainder of the processing follows as previously described.
Sometime before the code signal is synthesized (block 4314), the process 4300 conducts a masking evaluation to determine the amplitude at which the code signal should be generated so that it still remains inaudible or substantially inaudible to human hearers. Accordingly, the process 4300 generates overlapping short blocks of audio samples, each containing 512 audio samples (block 4322). As described above, the overlapping short blocks include 50% old samples and 50% newly received samples. This operation may be carried out by, for example, the overlapping short block maker 3940 of
After the overlapping short blocks are generated (block 4322), masking evaluations are performed on the short blocks (block 4324). For example, this may be carried out as described in conjunction with block 3942 of
Lookup Table Generation
A system 4400 for populating one or more LUTs with code frequencies corresponding to symbols may be implemented using hardware, software, combinations of hardware and software, firmware, or the like. The system 4400 of
A critical band pair definer 4402 defines a number (P) of critical band pairs. For example, referring to
A frequency definer 4404 defines a number of frequencies (N) that are selected for use in each critical band pair. In some examples, the value of N is sixteen, meaning that there are sixteen data positions in the combination of the critical bands that form each critical band pair. Reference numeral 4704 in
A number generator 4406 defines a number of frequency positions in the critical band pairs defined by the critical band pair definer 4402. In some examples the number generator 4406 generates all NP, P-digit numbers. For example, if N is 16 and P is 7, the process generates the numbers 0 through 268435456, but may do so in base 16—hexadecimal, which would result in the values 0 through 10000000.
A redundancy reducer 4408 then eliminates all number from the generated list of numbers sharing more than one common digit between them in the same position. This ensures compliance with criteria (1) above because, as described below, the digits will be representative of the frequencies selected to represent symbols. An excess reducer 4410 may then further reduce the remaining numbers from the generated list of numbers to the number of needed symbols. For example, if the symbol space is 129 symbols, the remaining numbers are reduced to a count of 129. The reduction may be carried out at random, or by selecting remaining numbers with the greatest Euclidean distance, or my any other suitable data reduction technique. In another example, the reduction may be carried out in a pseudorandom manner.
After the foregoing reductions, the count of the list of numbers is equal to the number of symbols in the symbol space. Accordingly, a code frequency definer 4412 defines the remaining numbers in base P format to represent frequency indices representative of symbols in the critical band pairs. For example, referring to
Using the first hexadecimal number as an example of mapping to a particular frequency index, the decimal value of Fh is 15. Because position four of each critical band pair is reserved for non-data information, the value of any hexadecimal digit greater than four is incremented by the value of one decimal. Thus, the 15 becomes a 16. The 16 is thus designated (as shown with the asterisk in
A LUT filler 4414 receives the symbol indications and corresponding code frequency component indications from the code frequency definer 4412 and fills this information into a LUT.
While an example manner of implementing a LUT table generator 4400 is illustrated in
The example machine-accessible instructions of
The example process 4500 of
After the band pairs have been defined (block 4502), a number of frequencies (N) is selected for use in each critical band pair (block 4504). In some examples, the value of N is sixteen, meaning that there are sixteen data positions in the combination of the critical bands that form each critical band pair. As shown in
After the number of critical band pairs and the number of frequency positions in the pairs is defined, the process 4500 generates all NP, P-digit numbers with no more than one hexadecimal digit in common (block 4506). For example, if N is 16 and P is 7, the process generates the numbers 0 through 268435456, but may do so in base 16—hexadecimal, which would results in 0 through FFFFFFF, but does not include the numbers that share more than one common hexadecimal digit. This ensures compliance with criteria (1) above because, as described below, the digits will be representative of the frequencies selected to represent symbols.
According to an example process for determining a set of numbers that comply with criteria (1) above (and any other desired criteria), the numbers in the range from 0 to NP−1 are tested. First, the value corresponding to zero is stored as the first member of the result set R. Then, the numbers from 1 to NP−1 are selected for analysis to determine if they meet criteria (1) when compared to the members of R. Each number that meets criteria (1) when compared against all the current entries in R is added to the result set. In particular, according to the example process, in order to test a number K, each hexadecimal digit of interest in K is compared to the corresponding hexadecimal digit of interest in an entry M from the current result set. In the 7 comparisons not more than one hexadecimal digit of K should equal the corresponding hexadecimal digit of M. If, after comparing K against all numbers currently in the result set, no member of the latter has more than one common hexadecimal digit, then K is added to the result set R. The algorithm iterates through the set of possible numbers until all values meeting criteria (1) have been identified.
While the foregoing describes an example process for determining a set of numbers that meets criteria (1), any process or algorithm may be used and this disclosure is not limited to the process described above. For example, a process may use heuristics, rules, etc. to eliminate numbers from the set of numbers before iterating throughout the set. For example, all of the numbers where the relevant bits start with two 0's, two 1's, two 2's, etc. and end with two 0's, two 1's, two 2's, etc. could immediately be removed because they will definitely have a hamming distance less than 6. Additionally or alternatively, an example process may not iterate through the entire set of possible numbers. For example, a process could iterate until enough numbers are found (e.g., 128 numbers when 128 symbols are desired). In another implementation, the process may randomly select a first value for inclusion in the set of possible values and then may search iteratively or randomly through the remaining set of numbers until a value that meets the desired criteria (e.g., criteria (1)) is found.
The process 4500 then selects the desired numbers from the generated values (block 4510). For example, if the symbol space is 129 symbols, the remaining numbers are reduced to a count of 129. The reduction may be carried out at random, or by selecting remaining numbers with the greatest Euclidean distance, or my any other suitable data reduction technique.
After the foregoing reductions, the count of the list of numbers is equal to the number of symbols in the symbol space. Accordingly, the remaining numbers in base P format are defined to represent frequency indices representative of symbols in the critical band pairs (block 4512). For example, referring to
Using the first hexadecimal number as an example of mapping to a particular frequency index, the decimal value of Fh is 15. Because position four of each critical band pair is reserved for non-data information, the value of any hexadecimal digit greater than four is incremented by the value of one decimal. Thus, the 15 becomes a 16. The 16 is thus designated (as shown with the asterisk in
After assigning the representative code frequencies (block 4512), the numbers are filled into a LUT (block 4514).
Of course, the systems and processes described in conjunction with
Audio Decoding
In general, the decoder 3816 detects a code signal that was inserted into received audio to form encoded audio at the encoder 3802. That is, the decoder 3816 looks for a pattern of emphasis in code frequencies it processes. Once the decoder 3816 has determined which of the code frequencies have been emphasized, the decoder 3816 determines, based on the emphasized code frequencies, the symbol present within the encoded audio. The decoder 3816 may record the symbols, or may decode those symbols into the codes that were provided to the encoder 3802 for insertion into the audio.
In one implementation, the example decoder 3816 of
As shown in
The samples from the sampler 4802 are provided to a stacker 4804. In general, the stacker 4804 accentuates the code signal in the audio signal information by taking advantage of the fact that messages are repeated or substantially repeated (e.g., only the least significant bits are changed) for a period of time. For example, 42 bits (3926 of
By way of example, a watermarked signal y(t) can be represented by the sum of the host signal x(t) and watermark w(t):
y(t)=x(t)+w(t)
In the time domain, watermarks may repeat after a known period T:
w(t)=w(t−T)
According to an example stacking method, the input signal y(t) is replaced by a stacked signal S(t):
In the stacked signal S(t), the contribution of the host signal decreases because the values of samples x(t), x(t−T), . . . , x(t−nT) are independent if the period T is sufficiently large. At the same time, the contribution of the watermarks being made of, for example, in-phase sinusoids, is enhanced.
Assuming x(t), x(t−T), . . . , x(t−nT) are independent random variables drawn from the same distribution X with zero mean E[X]=0:
Accordingly, the underlying host signal contributions x(t), . . . , x(t−nT) will effectively be canceling each other while the watermark is unchanged allowing the watermark to be more easily detected.
In the illustrated example, the power of the resulting signal decreases linearly with the number of stacked signals n. Therefore, averaging over independent portions of the host signal can reduce the effects of interference. The watermark is not affected because it will always be added in-phase.
An example process for implementing the stacker 4804 is described in conjunction with
The decoder 3816 may additionally include a stacker controller 4806 to control the operation of the stacker 4804. The example stacker controller 4806 receives a signal indicating whether the stacker 4804 should be enabled or disabled. For example, the stacker controller 4806 may receive the received audio signal and may determine if the signal includes significant noise that will distort the signal and, in response to the determination, cause the stacker to be enabled. In another implementation, the stacker controller 4806 may receive a signal from a switch that can be manually controlled to enable or disable the stacker 4804 based on the placement of the decoder 3816. For example, when the decoder 3816 is wired to the receiver 3810 or the microphone 3820 is placed in close proximity to the speaker 3814, the stacker controller 4806 may disable the stacker 4804 because stacking will not be needed and will cause corruption of rapidly changing data in each message (e.g., the least significant bits of a timestamp). Alternatively, when the decoder 3816 is located at a distance from the speaker 3814 or in another environment where significant interference may be expected, the stacker 4804 may be enabled by the stacker controller 4806. Further, the stacker 4804 may be disabled when a) the sampling rate accuracy of the sampler 4802 and/or the highest frequency used to convey messages are selected such that the stacking may have limited effect, and/or b) the variable data in the last 7 bit group 3932 representing time increments in seconds, which varies from message to message, is to be decoded. Of course, any type of desired control may be applied by the stacker controller 4806.
The output of the stacker 4804 is provided to a time to frequency domain converter 4808. The time to frequency domain converter 4808 may be implemented using a Fourier transform such as a DFT, or any other suitable technique to convert time-based information into frequency-based information. In some examples, the time to frequency domain converter 4808 may be implemented using a sliding long block fast Fourier transform (FFT) in which a spectrum of the code frequencies of interest is calculated each time eight new samples are provided to the example time to time to frequency domain converter 4808. In some examples, the time to frequency domain converter 4808 uses 1,536 samples of the encoded audio and determines a spectrum therefrom using 192 slides of eight samples each. The resolution of the spectrum produced by the time to frequency domain converter 4808 increases as the number of samples used to generate the spectrum is increased. Thus, the number of samples processed by the time to frequency domain converter 4808 should match the resolution used to select the indices in the tables of
The spectrum produced by the time to frequency domain converter 4808 passes to a critical band normalizer 4810, which normalizes the spectrum in each of the critical bands. In other words, the frequency with the greatest amplitude in each critical band is set to one and all other frequencies within each of the critical bands are normalized accordingly. For example, if critical band one includes frequencies having amplitudes of 112, 56, 56, 56, 56, 56, and 56, the critical band normalizer would adjust the frequencies to be 1, 0.5, 0.5, 0.5, 0.5, 0.5, and 0.5. Of course, any desired maximum value may be used in place of one for the normalization. The critical band normalizer 4810 outputs the normalized score for each of the frequencies of the interest.
The spectrum of scores produced by the critical band normalizer 4810 is passed to the symbol scorer 4812, which calculates a total score for each of the possible symbols in the active symbol table. In an example implementation, the symbol scorer 4812 iterates through each symbol in the symbol table and sums the normalized score from the critical band normalizer 4810 for each of the frequencies of interest for the particular symbol to generate a score for the particular symbol. The symbol scorer 4812 outputs a score for each of the symbols to the max score selector 4814, which selects the symbol with the greatest score and outputs the symbol and the score.
The identified symbol and score from the max score selector 4814 are passed to the comparator 4816, which compares the score to a threshold. When the score exceeds the threshold, the comparator 4816 outputs the received symbol. When the score does not exceed the threshold, the comparator 4816 outputs an error indication. For example, the comparator 4816 may output a symbol indicating an error (e.g., a symbol not included in the active symbol table) when the score does not exceed the threshold. Accordingly, when a message has been corrupted such that a great enough score (i.e., a score that does not exceed the threshold) is not calculated for a symbol, an error indication is provided. In an example implementation, error indications may be provided to the stacker controller 4806 to cause the stacker 4804 to be enabled when a threshold number of errors are identified (e.g., number of errors over a period of time, number of consecutive errors, etc.).
The identified symbol or error from the comparator 4816 is passed to the circular buffers 4818 and the pre-existing code flag circular buffers 4820. An example implementation of the standard buffers 4818 is described in conjunction with
The example pre-existing code flag circular buffers 4820 are implemented in the same manner as the circular buffers 4818, except the pre-existing code flag circular buffers 4820 include one location for the pre-existing code flag synchronize symbol and one location for each symbols in the pre-existing code flag message (e.g., an pre-existing code flag synchronize that includes one message symbol would be stored in two location circular buffers). The pre-existing code flag circular buffers 4820 are populated at the same time and in the same manner as the circular buffers 4818.
The example message identifier 4822 analyzes the circular buffers 4818 and the pre-existing code flag circular buffers 4820 for a synchronize symbol. For example, the message identifier 4822 searches for a synchronize symbol in the circular buffers 4818 and an pre-existing code flag synchronize symbol in the pre-existing code flag circular buffers 4820. When a synchronize symbol is identified, the symbols following the synchronize symbol (e.g., seven symbols after a synchronize symbol in the circular buffers 4818 or one symbol after an pre-existing code flag synchronize symbol in the pre-existing code flag circular buffers 4820) are output by the message identifier 4822. In addition, the sample index identifying the last audio signal sample processed is output.
The message symbols and the sample index output by the message identifier 4822 are passed to the validator 4824, which validates each message. The validator 4824 includes a filter stack that stores several consecutively received messages. Because messages are repeated (e.g., every 2 seconds or 16,000 samples at 8 kHz, or every 1.6 seconds at 12 kHz), each message may be compared with other messages in the filter stack that are separated by approximately the number of audio samples in a single message to determine if a match exists. If a match or substantial match exists, both messages are validated. If a message cannot be identified, it is determined that the message is an error and is not emitted from the validator 4824. In cases where messages might be affected by noise interference, messages might be considered a match when a subset of symbols in a message match the same subset in another already validated message. For example, if four of seven symbols in a message match the same four symbols in another message that has already been validated, the message can be identified as partially validated. Then, a sequence of the repeated messages can be observed to identify the non-matching symbols in the partially validated message.
Further, for each hypothetical long block that is analyzed during decoding, a score that represents the strength and/or probability that the decoding decision is correct may be computed. For example, for each of the seven frequencies that constitute a potential code pattern divide the power of that frequency by the average power of the other code frequencies in its code band. By summing this value across the seven frequencies a score for each potential pattern can be determined. The selected pattern is the code pattern with the highest score and that exceeds a certain minimum threshold. To improved decoding accuracy, the score of the winning pattern may be combined with that of the score(s) corresponding to the same pattern at a long block location that is exactly 3, 6, 9, etc. message slots away from the current location. If this long block is one of the 6 long blocks of the message that carries a substantially constant payload, the score of the winning pattern will be enhanced. However, such stacking does not help the 7th long block which contains information that changes from message to message. By stacking, code detection accuracy may be increased by a factor of 2 or 3, without being sensitive to sampling rate inaccuracies and/or jitter. Other example methods and apparatus to increase the accuracy of watermark decoding are described in U.S. patent application Ser. No. 12/604,176, entitled “Methods and Apparatus to Extract Data Encoded in Media Content,” and filed Oct. 22, 2009.
The validated messages from the validator 4824 are passed to the symbol to bit converter 4826, which translates each symbol to the corresponding data bits of the message using the active symbol table.
While an example manner of implementing the example decoder 3816 of
The example process 4900 of
As each sample is obtained, the sample is aggregated by a stacker such as the example stacker 4804 of
The new stacked audio samples from the stacker process 4904 are inserted into a buffer and the oldest audio samples are removed (block 4906). As each sample is obtained, a sliding time to frequency conversion is performed on a collection of samples including numerous older samples and the newly added sample obtained at blocks 4902 and 4904 (block 4908). In some examples, a sliding FFT may be used to process streaming input samples including 9215 old samples and the one newly added sample. In some examples, the FFT using 9216 samples results in a spectrum having a resolution of 5.2 Hz.
After the spectrum is obtained through the time to frequency conversion (block 4908), the transmitted symbol is determined (block 4910). An example process for determining the transmitted symbol is described in conjunction with
After the transmitted message is identified (block 4910), buffer post processing is performed to identify a synchronize symbol and corresponding message symbols (block 4912). An example process for performing post-processing is described in conjunction with
After post processing is performed to identify a transmitted message (block 4912), message validation is performed to verify the validity of the message (block 4914). An example process for performing the message validation is described in conjunction with
After a message has been validated (block 4914), the message is converted from symbols to bits using the active symbol table (block 4916). Control then returns to block 4806 to process the next set of samples.
When the stacker control is enabled, newly received audio signal samples are pushed into a buffer and the oldest samples are pushed out (block 5004). The buffer stores a plurality of samples. For example, when a particular message is repeatedly encoded in an audio signal every two seconds and the encoded audio is sampled at 8 kHz, each message will repeat every 16,000 samples so that buffer will store some multiple of 16,000 samples (e.g., the buffer may store six messages with a 96,000 sample buffer). Then, the stacker 4808 selects substantially equal blocks of samples in the buffer (block 5006). The substantially equal blocks of samples are then summed (block 5008). For example, sample one is added to samples 16,001, 32,001, 48,001, 64,001, and 80,001, sample two is added to samples 16,002, 32,002, 48,002, 64,002, 80,002, sample 16,000 is added to samples 32,000, 48,000, 64,000, 80,000, and 96,000.
After the audio signal samples in the buffer are added, the resulting sequence is divided by the number of blocks selected (e.g., six blocks) to calculate an average sequence of samples (e.g., 16,000 averaged samples) (block 5010). The resulting average sequence of samples is output by the stacker (block 5012). The process of
After the frequencies of interest have been normalized (block 5102). The example symbol scorer 4812 selects the appropriate symbol table based on the previously determined synchronization table (block 5104). For example, a system may include two symbol tables: one table for a normal synchronization and one table for an pre-existing code flag synchronization. Alternatively, the system may include a single symbol table or may include multiple synchronization tables that may be identified by synchronization symbols (e.g., cross-table synchronization symbols). The symbol scorer 4812 then computes a symbol score for each symbol in the selected symbol table (block 5106). For example, the symbol scorer 4812 may iterate across each symbol in the symbol table and add the normalized scores for each of the frequencies of interest for the symbol to compute a symbol score.
After each symbol is scored (block 5106), the example max score selector 4814 selects the symbol with the greatest score (block 5108). The example comparator 4816 then determines if the score for the selected symbol exceeds a maximum score threshold (block 5110). When the score does not exceed the maximum score threshold, an error indication is stored in the circular buffers (e.g., the circular buffers 4818 and the pre-existing code flag circular buffers 4820) (block 5112). The process of
When the score exceeds the maximum score threshold (block 5110), the identified symbol is stored in the circular buffers (e.g., the circular buffers 4818 and the pre-existing code flag circular buffers 4820) (block 5114). The process of
For example,
The pre-existing code flag circular buffers 4820 of
Returning to
For example,
Returning to
When the message has not been previously validated (block 5504), the validator 4824 determines if there is another suitably matching message in the filter stack (block 5506). A message may be suitably matching when it is identical to another message, when a threshold number of message symbols match another message (e.g., four of the seven symbols), or when any other error determination indicates that two messages are similar enough to speculate that they are the same. According to the illustrated example, messages can only be partially validated with another message that has already been validated. When a suitable match is not identified, control proceeds to block 5514.
When a suitable match is identified, the validator 4824 determines if a time duration (e.g., in samples) between identical messages is proper (block 5508). For example, when messages are repeated every 16,000 samples, it is determined if the separation between two suitably matching messages is approximately a multiple of 16,000 samples. When the time duration is not proper, control proceeds to block 5514.
When the time duration is proper (block 5508), the validator 4824 validates both messages by setting the validation flag for each of the messages (block 5510). When the message has been validated completely (e.g., an exact match) the flag may indicate that the message is fully validated (e.g., the message validated in
When it is determined that there is not a suitable match for the top message (block 5506) or that the time duration between a suitable match(es) is not proper (block 5508), the top message is not validated (block 5514). Messages that are not validated are not output from the validator 4824.
After determining not to validate a message (blocks 5506, 5508, and 5514) or outputting the top message (block 5512), the validator 5516 pops the filter stack to remove the top message from the filter stack. Control then returns to block 5502 to process the next message at the top of the filter stack.
While example manners of implementing any or all of the example encoder 3802 and the example decoder 3816 have been illustrated and described above one or more of the data structures, elements, processes and/or devices illustrated in the drawings and described above may be combined, divided, re-arranged, omitted, eliminated and/or implemented in any other way. Further, the example encoder 3802 and example decoder 3816 may be implemented by hardware, software, firmware and/or any combination of hardware, software and/or firmware. Thus, for example, the example encoder 3802 and the example decoder 3816 could be implemented by one or more circuit(s), programmable processor(s), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)), etc. For example, the decoder 3816 may be implemented using software on a platform device, such as a mobile telephone. If any of the appended claims is read to cover a purely software implementation, at least one of the prior code detector 3904, the example message generator 3910, the symbol selector 3912, the code frequency selector 3914, the synthesizer 3916, the inverse FFT 3918, the mixer 3920, the overlapping short block maker 3940, the masking evaluator 3942, the critical band pair definer 4402, the frequency definer 4404, the number generator 4406, the redundancy reducer 4408, the excess reducer 4410, the code frequency definer 4412, the LUT filler 4414, the sampler 4802, the stacker 4804, the stacker control 4806, the time domain to frequency domain converter 4808, the critical band normalize 4810, the symbol scorer 4812, the max score selector 4814, the comparator 4816, the circular buffers 4818, the pre-existing code flag circular buffers 4820, the message identifier 4822, the validator 4824, and the symbol to bit converter 4826 are hereby expressly defined to include a tangible medium such as a memory, DVD, CD, etc. Further still, the example encoder 3802 and the example decoder 3816 may include data structures, elements, processes and/or devices instead of, or in addition to, those illustrated in the drawings and described above, and/or may include more than one of any or all of the illustrated data structures, elements, processes and/or devices.
Although certain example methods, apparatus and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the claims of this patent either literally or under the doctrine of equivalents.
This patent claims the benefit of U.S. provisional patent application Ser. No. 61/174,787, entitled “Methods and Apparatus To Provide Secondary Content in Association with Primary Broadcast Media Content,” and filed on May 1, 2009, which is hereby incorporated by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
4230990 | Lert, Jr. et al. | Oct 1980 | A |
4647974 | Butler et al. | Mar 1987 | A |
4677466 | Lert, Jr. et al. | Jun 1987 | A |
4697209 | Kiewit et al. | Sep 1987 | A |
4745468 | Von Kohorn | May 1988 | A |
4876592 | Von Kohorn | Oct 1989 | A |
4876736 | Kiewit | Oct 1989 | A |
4926255 | Von Kohorn | May 1990 | A |
4973952 | Malec et al. | Nov 1990 | A |
5019899 | Boles et al. | May 1991 | A |
5023929 | Call | Jun 1991 | A |
5034807 | Von Kohorn | Jul 1991 | A |
5057915 | Von Kohorn | Oct 1991 | A |
5081680 | Bennett | Jan 1992 | A |
5117228 | Fuchigami et al. | May 1992 | A |
5128752 | Von Kohorn | Jul 1992 | A |
5227874 | Von Kohorn | Jul 1993 | A |
5249044 | Von Kohorn | Sep 1993 | A |
5283734 | Von Kohorn | Feb 1994 | A |
5331544 | Lu et al. | Jul 1994 | A |
5373315 | Defresne et al. | Dec 1994 | A |
5401946 | Weinblatt | Mar 1995 | A |
5425100 | Thomas et al. | Jun 1995 | A |
5444769 | Koen et al. | Aug 1995 | A |
5450490 | Jensen et al. | Sep 1995 | A |
5481294 | Thomas et al. | Jan 1996 | A |
5485199 | Elkind et al. | Jan 1996 | A |
5512933 | Wheatley et al. | Apr 1996 | A |
5524195 | Clanton, III et al. | Jun 1996 | A |
5526427 | Thomas et al. | Jun 1996 | A |
5543856 | Rosser et al. | Aug 1996 | A |
5574962 | Fardeau et al. | Nov 1996 | A |
5579124 | Aijala et al. | Nov 1996 | A |
5594934 | Lu et al. | Jan 1997 | A |
5629739 | Dougherty | May 1997 | A |
5659366 | Kerman | Aug 1997 | A |
5666293 | Metz et al. | Sep 1997 | A |
5682196 | Freeman | Oct 1997 | A |
5719634 | Keery et al. | Feb 1998 | A |
5734413 | Lappington et al. | Mar 1998 | A |
5740035 | Cohen et al. | Apr 1998 | A |
5815671 | Morrison | Sep 1998 | A |
5841978 | Rhoads | Nov 1998 | A |
5848155 | Cox | Dec 1998 | A |
5850249 | Massetti et al. | Dec 1998 | A |
5872588 | Aras et al. | Feb 1999 | A |
5880789 | Inaba | Mar 1999 | A |
5889548 | Chan | Mar 1999 | A |
5893067 | Bender et al. | Apr 1999 | A |
5907366 | Farmer et al. | May 1999 | A |
5918223 | Blum et al. | Jun 1999 | A |
5930369 | Cox et al. | Jul 1999 | A |
5933789 | Byun et al. | Aug 1999 | A |
5956716 | Kenner et al. | Sep 1999 | A |
5966120 | Arazi et al. | Oct 1999 | A |
5974396 | Anderson et al. | Oct 1999 | A |
5978855 | Metz et al. | Nov 1999 | A |
5987855 | Dey et al. | Nov 1999 | A |
6005490 | Higashihara | Dec 1999 | A |
6034722 | Viney et al. | Mar 2000 | A |
6035177 | Moses et al. | Mar 2000 | A |
6049830 | Saib | Apr 2000 | A |
6055573 | Gardenswartz et al. | Apr 2000 | A |
6097441 | Allport | Aug 2000 | A |
6128597 | Kolluru et al. | Oct 2000 | A |
6154209 | Naughton et al. | Nov 2000 | A |
6157413 | Hanafee et al. | Dec 2000 | A |
6208735 | Cox et al. | Mar 2001 | B1 |
6216129 | Eldering | Apr 2001 | B1 |
6266815 | Shen et al. | Jul 2001 | B1 |
6286036 | Rhoads | Sep 2001 | B1 |
6286140 | Ivanyi | Sep 2001 | B1 |
6298348 | Eldering | Oct 2001 | B1 |
6300888 | Chen et al. | Oct 2001 | B1 |
6308327 | Liu et al. | Oct 2001 | B1 |
6331876 | Koster et al. | Dec 2001 | B1 |
6335736 | Wagner et al. | Jan 2002 | B1 |
6363159 | Rhoads | Mar 2002 | B1 |
6389055 | August et al. | May 2002 | B1 |
6400827 | Rhoads | Jun 2002 | B1 |
6411725 | Rhoads | Jun 2002 | B1 |
6421445 | Jensen et al. | Jul 2002 | B1 |
6466913 | Yasuda et al. | Oct 2002 | B1 |
6467089 | Aust et al. | Oct 2002 | B1 |
6487564 | Asai et al. | Nov 2002 | B1 |
6505160 | Levy et al. | Jan 2003 | B1 |
6512836 | Xie et al. | Jan 2003 | B1 |
6513014 | Walker et al. | Jan 2003 | B1 |
6522771 | Rhoads | Feb 2003 | B2 |
6539095 | Rhoads | Mar 2003 | B1 |
6546556 | Kataoka et al. | Apr 2003 | B1 |
6553178 | Abecassis | Apr 2003 | B2 |
6607136 | Atsmon et al. | Aug 2003 | B1 |
6621881 | Srinivasan | Sep 2003 | B2 |
6642966 | Limaye | Nov 2003 | B1 |
6647269 | Hendrey et al. | Nov 2003 | B2 |
6647548 | Lu et al. | Nov 2003 | B1 |
6651253 | Dudkiewicz et al. | Nov 2003 | B2 |
6654480 | Rhoads | Nov 2003 | B2 |
6665873 | Van Gestel et al. | Dec 2003 | B1 |
6675383 | Wheeler et al. | Jan 2004 | B1 |
6681209 | Schmidt et al. | Jan 2004 | B1 |
6683966 | Tian et al. | Jan 2004 | B1 |
6710815 | Billmaier et al. | Mar 2004 | B1 |
6714683 | Tian et al. | Mar 2004 | B1 |
6741684 | Kaars | May 2004 | B2 |
6750985 | Rhoads | Jun 2004 | B2 |
6766523 | Herley | Jul 2004 | B2 |
6795972 | Rovira | Sep 2004 | B2 |
6804379 | Rhoads | Oct 2004 | B2 |
6804566 | Colomes et al. | Oct 2004 | B1 |
6823310 | Ishito et al. | Nov 2004 | B2 |
6829368 | Meyer et al. | Dec 2004 | B2 |
6853634 | Davies et al. | Feb 2005 | B1 |
6871180 | Neuhauser et al. | Mar 2005 | B1 |
6871323 | Wagner et al. | Mar 2005 | B2 |
6873688 | Aarnio | Mar 2005 | B1 |
6941275 | Swierczek | Sep 2005 | B1 |
6956575 | Nakazawa et al. | Oct 2005 | B2 |
6968371 | Srinivasan | Nov 2005 | B1 |
6968564 | Srinivasan | Nov 2005 | B1 |
6970886 | Conwell et al. | Nov 2005 | B1 |
6996213 | De Jong | Feb 2006 | B1 |
7003731 | Rhoads et al. | Feb 2006 | B1 |
7039932 | Eldering | May 2006 | B2 |
7050603 | Rhoads et al. | May 2006 | B2 |
7051086 | Rhoads et al. | May 2006 | B2 |
7058697 | Rhoads | Jun 2006 | B2 |
7082434 | Gosselin | Jul 2006 | B2 |
7095871 | Jones et al. | Aug 2006 | B2 |
7143949 | Hannigan | Dec 2006 | B1 |
7158943 | Van der Riet | Jan 2007 | B2 |
7171018 | Rhoads et al. | Jan 2007 | B2 |
7174293 | Kenyon et al. | Feb 2007 | B2 |
7185201 | Rhoads et al. | Feb 2007 | B2 |
7194752 | Kenyon et al. | Mar 2007 | B1 |
7197156 | Levy | Mar 2007 | B1 |
7215280 | Percy et al. | May 2007 | B1 |
7221405 | Basson et al. | May 2007 | B2 |
7227972 | Brundage et al. | Jun 2007 | B2 |
7248715 | Levy | Jul 2007 | B2 |
7254249 | Rhoads et al. | Aug 2007 | B2 |
7260221 | Atsmon | Aug 2007 | B1 |
7273978 | Uhle | Sep 2007 | B2 |
7280970 | Tamir et al. | Oct 2007 | B2 |
7317716 | Boni et al. | Jan 2008 | B1 |
7328153 | Wells et al. | Feb 2008 | B2 |
7328160 | Nishio et al. | Feb 2008 | B2 |
7334735 | Antebi et al. | Feb 2008 | B1 |
7346512 | Li-Chun Wang et al. | Mar 2008 | B2 |
7356700 | Noridomi et al. | Apr 2008 | B2 |
7363278 | Schmelzer et al. | Apr 2008 | B2 |
7369678 | Rhoads | May 2008 | B2 |
7383297 | Atsmon et al. | Jun 2008 | B1 |
7421723 | Harkness et al. | Sep 2008 | B2 |
7440674 | Plotnick et al. | Oct 2008 | B2 |
7443292 | Jensen et al. | Oct 2008 | B2 |
7463143 | Forr et al. | Dec 2008 | B2 |
7519658 | Anglin et al. | Apr 2009 | B1 |
7577195 | Hickey, Jr. | Aug 2009 | B2 |
7592908 | Zhang et al. | Sep 2009 | B2 |
7623823 | Zito et al. | Nov 2009 | B2 |
7941480 | Atsmon et al. | May 2011 | B2 |
7961881 | Jensen et al. | Jun 2011 | B2 |
8019609 | Tamir et al. | Sep 2011 | B2 |
8069037 | Singhai | Nov 2011 | B2 |
8121830 | Srinivasan et al. | Feb 2012 | B2 |
8359205 | Srinivasan et al. | Jan 2013 | B2 |
8369972 | Topchy et al. | Feb 2013 | B2 |
20010044899 | Levy | Nov 2001 | A1 |
20010056573 | Kovac et al. | Dec 2001 | A1 |
20020032734 | Rhoads | Mar 2002 | A1 |
20020033842 | Zetts | Mar 2002 | A1 |
20020053078 | Holtz et al. | May 2002 | A1 |
20020056094 | Dureau | May 2002 | A1 |
20020059218 | August et al. | May 2002 | A1 |
20020062382 | Rhoads et al. | May 2002 | A1 |
20020088011 | Lamkin et al. | Jul 2002 | A1 |
20020091991 | Castro | Jul 2002 | A1 |
20020102993 | Hendrey et al. | Aug 2002 | A1 |
20020108125 | Joao | Aug 2002 | A1 |
20020111934 | Narayan | Aug 2002 | A1 |
20020112002 | Abato | Aug 2002 | A1 |
20020124246 | Kaminsky et al. | Sep 2002 | A1 |
20020133562 | Newnam et al. | Sep 2002 | A1 |
20020138851 | Lord et al. | Sep 2002 | A1 |
20020144262 | Plotnick et al. | Oct 2002 | A1 |
20020144273 | Reto | Oct 2002 | A1 |
20020162118 | Levy et al. | Oct 2002 | A1 |
20020174425 | Markel et al. | Nov 2002 | A1 |
20020194592 | Tsuchida et al. | Dec 2002 | A1 |
20030021441 | Levy et al. | Jan 2003 | A1 |
20030039465 | Bjorgan et al. | Feb 2003 | A1 |
20030088674 | Ullman et al. | May 2003 | A1 |
20030103645 | Levy et al. | Jun 2003 | A1 |
20030105870 | Baum | Jun 2003 | A1 |
20030108200 | Sako | Jun 2003 | A1 |
20030115598 | Pantoja | Jun 2003 | A1 |
20030131350 | Peiffer et al. | Jul 2003 | A1 |
20030177488 | Smith et al. | Sep 2003 | A1 |
20030185232 | Moore et al. | Oct 2003 | A1 |
20030195851 | Ong | Oct 2003 | A1 |
20030229900 | Reisman | Dec 2003 | A1 |
20040004630 | Kalva et al. | Jan 2004 | A1 |
20040006696 | Shin et al. | Jan 2004 | A1 |
20040008615 | Oh | Jan 2004 | A1 |
20040024588 | Watson et al. | Feb 2004 | A1 |
20040031058 | Reisman | Feb 2004 | A1 |
20040037271 | Liscano et al. | Feb 2004 | A1 |
20040038692 | Muzaffar | Feb 2004 | A1 |
20040058675 | Lu et al. | Mar 2004 | A1 |
20040064319 | Neuhauser et al. | Apr 2004 | A1 |
20040073916 | Petrovic et al. | Apr 2004 | A1 |
20040073951 | Bae et al. | Apr 2004 | A1 |
20040120417 | Lynch et al. | Jun 2004 | A1 |
20040125125 | Levy | Jul 2004 | A1 |
20040128514 | Rhoads | Jul 2004 | A1 |
20040137929 | Jones et al. | Jul 2004 | A1 |
20040143844 | Brant et al. | Jul 2004 | A1 |
20040146161 | De Jong | Jul 2004 | A1 |
20040162720 | Jang et al. | Aug 2004 | A1 |
20040184369 | Herre et al. | Sep 2004 | A1 |
20040199387 | Wang et al. | Oct 2004 | A1 |
20040236819 | Anati et al. | Nov 2004 | A1 |
20050028189 | Heine et al. | Feb 2005 | A1 |
20050033758 | Baxter | Feb 2005 | A1 |
20050036653 | Brundage et al. | Feb 2005 | A1 |
20050058319 | Rhoads et al. | Mar 2005 | A1 |
20050086488 | Kori et al. | Apr 2005 | A1 |
20050086682 | Burges et al. | Apr 2005 | A1 |
20050144004 | Bennett et al. | Jun 2005 | A1 |
20050192933 | Rhoads et al. | Sep 2005 | A1 |
20050216346 | Kusumoto et al. | Sep 2005 | A1 |
20050234728 | Tachibana et al. | Oct 2005 | A1 |
20050234774 | Dupree | Oct 2005 | A1 |
20050262351 | Levy | Nov 2005 | A1 |
20050271246 | Sharma et al. | Dec 2005 | A1 |
20060059277 | Zito et al. | Mar 2006 | A1 |
20060083403 | Zhang et al. | Apr 2006 | A1 |
20060095401 | Krikorian et al. | May 2006 | A1 |
20060107195 | Ramaswamy et al. | May 2006 | A1 |
20060107302 | Zdepski | May 2006 | A1 |
20060136564 | Ambrose | Jun 2006 | A1 |
20060153041 | Miyashita et al. | Jul 2006 | A1 |
20060167747 | Goodman et al. | Jul 2006 | A1 |
20060168613 | Wood et al. | Jul 2006 | A1 |
20060212290 | Ide | Sep 2006 | A1 |
20060221173 | Duncan | Oct 2006 | A1 |
20060224798 | Klein et al. | Oct 2006 | A1 |
20070006250 | Croy et al. | Jan 2007 | A1 |
20070016918 | Alcorn et al. | Jan 2007 | A1 |
20070055987 | Lu et al. | Mar 2007 | A1 |
20070110089 | Essafi et al. | May 2007 | A1 |
20070118375 | Kenyon et al. | May 2007 | A1 |
20070124771 | Shvadron | May 2007 | A1 |
20070127717 | Herre et al. | Jun 2007 | A1 |
20070129952 | Kenyon et al. | Jun 2007 | A1 |
20070143778 | Covell et al. | Jun 2007 | A1 |
20070149114 | Danilenko | Jun 2007 | A1 |
20070162927 | Ramaswamy et al. | Jul 2007 | A1 |
20070198738 | Angiolillo et al. | Aug 2007 | A1 |
20070201835 | Rhoads | Aug 2007 | A1 |
20070226760 | Neuhauser et al. | Sep 2007 | A1 |
20070274523 | Rhoads | Nov 2007 | A1 |
20070276925 | La Joie et al. | Nov 2007 | A1 |
20070276926 | La Joie et al. | Nov 2007 | A1 |
20070288476 | Flanagan, III et al. | Dec 2007 | A1 |
20070294057 | Crystal et al. | Dec 2007 | A1 |
20070294132 | Zhang et al. | Dec 2007 | A1 |
20070294705 | Gopalakrishnan et al. | Dec 2007 | A1 |
20070294706 | Neuhauser et al. | Dec 2007 | A1 |
20080019560 | Rhoads | Jan 2008 | A1 |
20080022114 | Moskowitz | Jan 2008 | A1 |
20080028223 | Rhoads | Jan 2008 | A1 |
20080028474 | Horne et al. | Jan 2008 | A1 |
20080040354 | Ray et al. | Feb 2008 | A1 |
20080059160 | Saunders et al. | Mar 2008 | A1 |
20080065507 | Morrison et al. | Mar 2008 | A1 |
20080071530 | Ehara | Mar 2008 | A1 |
20080077956 | Morrison et al. | Mar 2008 | A1 |
20080082510 | Wang et al. | Apr 2008 | A1 |
20080082922 | Biniak et al. | Apr 2008 | A1 |
20080083003 | Biniak et al. | Apr 2008 | A1 |
20080101454 | Luff et al. | May 2008 | A1 |
20080133223 | Son et al. | Jun 2008 | A1 |
20080137749 | Tian et al. | Jun 2008 | A1 |
20080139182 | Levy et al. | Jun 2008 | A1 |
20080140573 | Levy et al. | Jun 2008 | A1 |
20080168503 | Sparrell | Jul 2008 | A1 |
20080209491 | Hasek | Aug 2008 | A1 |
20080215333 | Tewfik et al. | Sep 2008 | A1 |
20080219496 | Tewfik | Sep 2008 | A1 |
20080235077 | Harkness et al. | Sep 2008 | A1 |
20080292134 | Sharma et al. | Nov 2008 | A1 |
20080319739 | Mehrotra et al. | Dec 2008 | A1 |
20090070408 | White | Mar 2009 | A1 |
20090070587 | Srinivasan et al. | Mar 2009 | A1 |
20090119723 | Tinsman | May 2009 | A1 |
20090150553 | Collart et al. | Jun 2009 | A1 |
20090240505 | Villemoes et al. | Sep 2009 | A1 |
20090259325 | Topchy et al. | Oct 2009 | A1 |
20090265214 | Jobs et al. | Oct 2009 | A1 |
20090281815 | Zopf | Nov 2009 | A1 |
20090306920 | Zwinger et al. | Dec 2009 | A1 |
20090307061 | Monighetti et al. | Dec 2009 | A1 |
20090307084 | Monighetti et al. | Dec 2009 | A1 |
20090326960 | Breebaat | Dec 2009 | A1 |
20100027837 | Levy et al. | Feb 2010 | A1 |
20100030838 | Atsmon et al. | Feb 2010 | A1 |
20100106510 | Topchy et al. | Apr 2010 | A1 |
20100106718 | Topchy et al. | Apr 2010 | A1 |
20100134278 | Srinivasan et al. | Jun 2010 | A1 |
20100135638 | Mio | Jun 2010 | A1 |
20100223062 | Srinivasan et al. | Sep 2010 | A1 |
20100226526 | Modro et al. | Sep 2010 | A1 |
20100324708 | Ojanpera | Dec 2010 | A1 |
20120101827 | Topchy et al. | Apr 2012 | A1 |
20120203363 | McKenna et al. | Aug 2012 | A1 |
20120203559 | McKenna et al. | Aug 2012 | A1 |
20130096706 | Srinivasan et al. | Apr 2013 | A1 |
Number | Date | Country |
---|---|---|
8976601 | Feb 2002 | AU |
9298201 | Apr 2002 | AU |
2003230993 | Nov 2003 | AU |
2006203639 | Sep 2006 | AU |
0112901 | Jun 2003 | BR |
0309598 | Feb 2005 | BR |
2483104 | Nov 2003 | CA |
1149366 | May 1997 | CN |
1303547 | Jul 2001 | CN |
1372682 | Oct 2002 | CN |
1592906 | Mar 2005 | CN |
1647160 | Jul 2005 | CN |
0713335 | May 1996 | EP |
0769749 | Apr 1997 | EP |
1026847 | Aug 2000 | EP |
1267572 | Dec 2002 | EP |
0883939 | May 2003 | EP |
1349370 | Oct 2003 | EP |
1406403 | Apr 2004 | EP |
1463220 | Sep 2004 | EP |
1307833 | Jun 2006 | EP |
1745464 | Oct 2007 | EP |
1704695 | Feb 2008 | EP |
1504445 | Aug 2008 | EP |
2000307530 | Nov 2000 | JP |
2002521702 | Jul 2002 | JP |
2001040322 | Aug 2002 | JP |
2002247610 | Aug 2002 | JP |
2003208187 | Jul 2003 | JP |
2003536113 | Dec 2003 | JP |
2006154851 | Jun 2006 | JP |
2007318745 | Dec 2007 | JP |
9527349 | Oct 1995 | WO |
9702672 | Jan 1997 | WO |
WO0004662 | Jan 2000 | WO |
0019699 | Apr 2000 | WO |
0119088 | Mar 2001 | WO |
0124027 | Apr 2001 | WO |
0131497 | May 2001 | WO |
0140963 | Jun 2001 | WO |
0153922 | Jul 2001 | WO |
0175743 | Oct 2001 | WO |
0191109 | Nov 2001 | WO |
0199109 | Dec 2001 | WO |
0205517 | Jan 2002 | WO |
0215081 | Feb 2002 | WO |
0217591 | Feb 2002 | WO |
WO0211123 | Feb 2002 | WO |
0219625 | Mar 2002 | WO |
WO0227600 | Apr 2002 | WO |
0237381 | May 2002 | WO |
0245034 | Jun 2002 | WO |
02065305 | Aug 2002 | WO |
02065318 | Aug 2002 | WO |
WO02061652 | Aug 2002 | WO |
02069121 | Sep 2002 | WO |
WO03009277 | Jan 2003 | WO |
03094499 | Nov 2003 | WO |
WO03091990 | Nov 2003 | WO |
WO03096337 | Nov 2003 | WO |
WO2004010352 | Jan 2004 | WO |
WO2004040416 | May 2004 | WO |
WO2004040475 | May 2004 | WO |
2005025217 | Mar 2005 | WO |
WO2005064885 | Jul 2005 | WO |
WO2005101243 | Oct 2005 | WO |
WO2005111998 | Nov 2005 | WO |
WO2006012241 | Feb 2006 | WO |
WO2006025797 | Mar 2006 | WO |
WO2007056531 | May 2007 | WO |
WO2007056532 | May 2007 | WO |
WO2008042953 | Apr 2008 | WO |
WO2008044664 | Apr 2008 | WO |
WO2008045950 | Apr 2008 | WO |
WO2008110002 | Sep 2008 | WO |
WO2008110790 | Sep 2008 | WO |
2009011206 | Jan 2009 | WO |
2009064561 | May 2009 | WO |
WO2009061651 | May 2009 | WO |
Entry |
---|
International Searching Authority, “International Search Report,” issued in connection with counterpart international application No. PCT/US2010/033201, mailed Oct. 1, 2010 (8 pages). |
International Searching Authority, “Written Opinion,” issued in connection with counterpart international application No. PCT/US2010/033201, mailed Oct. 1, 2010 (8 pages). |
Fink et al., “Social- and Interactive-Television Applications Based on Real-Time Ambient-Audio Identification,” EuroITV, 2006 (10 pages). |
Claburn, “Google Researchers Propose TV Monitoring,” Information Week, Jun. 7, 2006 (3 pages). |
Anderson, “Google to compete with Nielsen for TV-ratings info?,” Ars Technica, Jun. 19, 2006 (2 pages). |
“What is Jacked?,” http://jacked.com/, retrieved on Dec. 3, 2009 (1 page). |
Sullivan, “Google Cozies Up to SMBs for Digital Content,” MediaPost News, Mar. 18, 2009, (2 pages). |
Wang, “An Industrial-Strength Audio Search Algorithm,” Shazam Entertainment, Ltd., in Proceedings of the Fourth International Conference on Music Information Retrieval, Baltimore, Oct. 26-30, 2003 (7 pages). |
Boehret, “Yahoo Widgets Lend Brains to Boob Tube,” The Wall Street Journal, Mar. 25, 2009 (3 pages). |
Stross, “Apple Wouldn't Rist Its Cool Over a Gimmick, Would It?,” The New York Times, Nov. 14, 2009 (3 pages). |
Stultz, “Handheld Captioning at Disney World Theme Parks,” article retrieved on Mar. 19, 2009, http://goflorida.about.com/od/disneyworld/a/wdw—captioning.htm, (2 pages). |
Kane, “Entrepreneur Plans On-Demand Videogame Service,” The Wall Street Journal, Mar. 24, 2009 (2 pages). |
Shazam, “Shazam turns up the volume on mobile music,” http://www.shazam.com/music/web/newsdetail.html?nid=NEWS137, Nov. 28, 2007 (1 page). |
Shazam, “Shazam and VidZone Digital Media announce UK1s first fixed price mobile download service for music videos,” http://www.shazam.com/music/web/newsdetail.html?nid=NEWS136, Feb. 11, 2008 (1 page). |
Shazam, “Shazam launches new music application for Facebook fans,” http://www.shazam.com/music/web/newsdetail.html?nid=NEWS135, Feb. 18, 2008 (1 page). |
International Searching Authority, “International Search Report and Written Opinion,” issued in connection with PCT Application Serial No. PCT/US05/26426, mailed Aug. 18, 2006 (10 pages). |
International Bureau, “International Preliminary Report on Patentability,” issued in connection with PCT Application Serial No. PCT/US05/26426, issued Jan. 23, 2007 (9 pages). |
Canadian Intellectual Property Office, “Office Action,” issued in connection with CA Application Serial No. 2,574,998, mailed Aug. 26, 2008 (4 pages). |
Canadian Intellectual Property Office, “Office Action,” issued in connection with CA Application Serial No. 2,574,998, mailed Mar. 23, 2009 (5 pages). |
Canadian Intellectual Property Office, “Office Action,” issued in connection with CA Application Serial No. 2,574,998, mailed Nov. 13, 2009 (10 pages). |
U.S. Patent and Trademark Office, “Non-final Office Action,” issued in connection with U.S. Appl. No. 11/618,245, mailed Feb. 5, 2009 (35 pages). |
U.S. Patent and Trademark Office, “Final Office Action,” issued in connection with U.S. Appl. No. 11/618,245, mailed Jul. 21, 2009 (26 pages). |
U.S. Patent and Trademark Office, “Advisory Action,” issued in connection with U.S. Appl. No. 11/618,245, mailed Sep. 30, 2009 (3 pages). |
Heuer, et al., “Adaptive Multimedia Messaging based on MPEG-7—The M3-Box,” Nov. 9-10, 2000, Proc. Second Int'l Symposium on Mobile Multimedia Systems Applications, pp. 6-13 (8 pages). |
Wactlar et al., “Digital Video Archives: Managing Through Metadata” Building a National Strategy for Digital Preservation: Issues in Digital Media Archiving, Apr. 2002, pp. 84-88. [http://www.informedia.cs.cmu.edu/documents/Wactlar-CLIR-final.pdf, retrieved on Jul. 20, 2006] (14 pages). |
Mulder, “The Integration of Metadata From Production to Consumer,” EBU Technical Review, Sep. 2000, pp. 1-5. [http://www.ebu.ch/en/technical/trev/trev—284-contents.html, retrieved on Jul. 20, 2006] (5 pages). |
Hopper, “EBU Project Group P/META Metadata Exchange Standards,” EBU Technical Review, Sep. 2000, pp. 1-24. [http://www.ebu.ch/en/technical/trev/trev—284-contents.html, retrieved on Jul. 20, 2006] (24 pages). |
Evain, “TV-Anytime Metadata—A Preliminary Specification on Schedule!,” EBU Technical Review, Sep. 2000, pp. 1-14. [http://www.ebu.ch/en/technical/trev/trev—284-coments.html, retrieved on Jul. 20, 2006] (14 pages). |
“EBU Technical Review (Editorial),” No. 284 Sep. 2000, pp. 1-3. [http://www.ebu.ch/en/technical/trev/trev—284-contents.html, retrieved on Jul. 20, 2006] (3 pages). |
International Preliminary Examing Authority, “International Preliminary Examination Report,” issued in connection with PCT Application Serial No. PCT/US03/31180, mailed Aug. 17, 2004 (4 pages). |
International Searching Authority, “International Search Report,” issued in connection with PCT Application Serial No. PCT/US03/31180, mailed Jun. 8, 2004 (5 pages). |
U.S. Patent and Trademark Office, “Non-final Office Action,” issued in connection with U.S. Appl. No. 10/530,233, mailed Sep. 16, 2009 (8 pages). |
U.S. Patent and Trademark Office, “Final Office Action,” issued in connection with U.S. Appl. No. 10/530,233, mailed Mar. 18, 2010 (9 pages). |
International Search Report, issued in PCT/US2009/061749, mailed May 26, 2010, 6 pages. |
Written Opinion of the International Search Report, issued in PCT/US2009/061749, mailed May 26, 2010, 9 pages. |
International Search Report, issued in PCT/US2009/061750, mailed Mar. 9, 2010, 3 pages. |
Written Opinion of the International Search Report, issued in PCT/US2009/061750, mailed Mar. 9, 2010, 7 pages. |
International Search Report, issued in PCT/US2009/061827, mailed May 15, 2010, 4 pages. |
Written Opinion of the International Search Report, issued in PCT/US2009/061827, mailed May 15, 2010, 8 pages. |
Canadian Intellectual Property Office, “Office Action,” issued in connection with application No. CA 2,760,677, on Sep. 30, 2013, 3 pages. |
United States Patent and Trademark Office, “Notice of Allowance,” issued in connection with parent U.S. Appl. No. 12/604,176, on Oct. 24, 2011 (25 pages). |
United States Patent and Trademark Office, “Supplemental Notice of Allowability,” issued in connection with parent U.S. Appl. No. 12/604,176, on Nov. 8, 2011 (6 pages). |
Australian Patent Office, “Patent Examination Report No. 1,” issued in connection with application No. AU 2009308256, on Jun. 25, 2012 (6 pages). |
Japanese Patent Office, “Notice of Reasons for Rejection,” issued in connection with application No. JP 2011-533363, on Oct. 2, 2012 (6 pages). |
Japanese Patent Office, “Final Rejection,” issued in connection with application No. JP 2011-533363, on Mar. 19, 2013 (4 pages). |
United States Patent and Trademark Office, “Non-Final Office Action,” issued in connection with U.S. Appl. No. 12/551,220 on Apr. 26, 2012 (39 pages). |
United States Patent and Trademark Office, “Notice of Allowance,” issued in connection with U.S. Appl. No. 12/551,220, on Dec. 5, 2012 (24 pages). |
Australian Patent Office, “Patent Examination Report No. 1,” issued in connection with application No. AU 2009308305, on Jun. 25, 2012 (5 pages). |
Japanese Patent Office, “Notice of Reasons for Rejection,” issued in connection with application No. JP 2011-533357, on Aug. 7, 2012 (5 pages). |
Japanese Patent Office, “Final Rejection,” issued in connection with application No. JP 2011-533357, on Mar. 19, 2013 (4 pages). |
Canadian Intellectual Property Office, “Office Action,” issued in connection with application No. CA 2,741,536, on Feb. 22, 2013 (2 pages). |
Australian Patent Office, “Examination Report No. 1,” issued in connection with application AU 2009308304, on Jun. 29, 2012 (11 pages). |
Japanese Patent Office, “Notice of Reasons for Rejection,” issued in connection with application No. JP 2011-533356, on Jul. 31, 2012 (9 pages). |
United States Patent and Trademark Office, “Non-Final Office Action,” issued in connection with U.S. Appl. No. 12/464,811, on Aug. 31, 2012 (47 pages). |
United States Patent and Trademark Office, “Non-Final Office Action,” issued in connection with U.S. Appl. No. 12/464,811, on Apr. 1, 2013 (23 pages). |
European Patent Office, “Communication Pursuant to Article 94(3) EPC,” issued in connection with application No. EP 10725310.6, on Apr. 17, 2013 (7 pages). |
European Patent Office, “Communication Pursuant to Rules 161(1) and 162 EPC,” issued in connection with application No. EP 10725310.6, on Jan. 20, 2012 (2 pages). |
International Bureau of WIPO, “International Preliminary Report on Patentability and Written Opinion,” issued in connection with PCT/US2010/033201, on Nov. 10, 2011 (9 pages). |
United States Patent and Trademark Office, “Non-Final Office Action,” issued in connection with U.S. Appl. No. 12/771,640, on Apr. 4, 2013 (51 pages). |
Canadian Intellectual Property Office, “Notice of Allowance,” issued in connection with application No. CA 2,574,998, on Aug. 10, 2010 (1 page). |
United States Patent and Trademark Office, “Non-Final Office Action,” issued in connection with U.S. Appl. No. 11/618,245, on Apr. 28, 2011 (48 pages). |
United States Patent and Trademark Office, “Final Office Action,” issued in connection with U.S. Appl. No. 11/618,245, on Oct. 26, 2011 (38 pages). |
United States Patent and Trademark Office, “Non-Final Office Action,” issued in connection with U.S. Appl. No. 10/530,233, on Mar. 25, 2013 (28 pages). |
Japanese Patent Office, “Notice of Reasons for Rejection,” issued in connection with application No. JP P2011-533356, on May 7, 2013 (5 pages). |
IP Australia, “Patent Examination Report No. 1,” issued in connection with application No. AU 2010242814, on May 10, 2013 (5 pages). |
IP Australia, “Patent Examination Report No. 1,” issued in connection with application No. AU 2013203888, on May 15, 2013 (4 pages). |
State Intellectual Property Office of China, “First Notification of Office Action,” issued in connection with application No. CN 2009801486371, on Jul. 2, 2013 (7 pages). |
Japanese Patent Office, “Notice of Reasons for Rejection,” issued in connection with application No. JP P2012-508780, on Jul. 2, 2013 (9 pages). |
United States Patent and Trademark Office, “Non-Final Office Action,” issued in connection with U.S. Appl. No. US 11/618,245, on Jul. 3, 2013 (32 pages). |
United States Patent and Trademark Office, “Non-Final Office Action,” issued in connection with U.S. Appl. No. 13/341,092, on Aug. 30, 2012 (18 pages). |
United States Patent and Trademark Office, “Notice of Allowance,” issued in connection with U.S. Appl. No. 13/341,092, on May 10, 2013 (16 pages). |
Intellectual Property Office of China, “Office Action,” issued in connection with application No. CN 200981052527.3, on Jun. 24, 2013 (6 pages). |
Intellectual Property Office of China, “Search Report,” issued in connection with application No. CN 200981052527.3, on Jun. 8, 2013 (2 pages). |
Canadian Intellectual Property Office, “Office Action,” issued in connection with application No. CA 2,741,342, on Jul. 29, 2013 (3 pages). |
IP Australia, “Notice of Acceptance,” issued in connection with application No. AU 2009308305, on Aug. 19, 2013 (2 pages). |
State Intellectual Property Office of China, “First Office Action,” issued in connection with application No. CN 200980152518.4, on Aug. 9, 2013 (10 pages). |
IP Australia, “Examination Report No. 2,” issued in connection with application No. AU 2009308304, on Aug. 21, 2013 (6 pages). |
Number | Date | Country | |
---|---|---|---|
20100280641 A1 | Nov 2010 | US |
Number | Date | Country | |
---|---|---|---|
61174787 | May 2009 | US |