# Patent

## Title
Technique for effectively delivering targeted advertisements through a communications network having limited bandwidth

## Abstract

When an advertisement break is detected on a program channel stream, demographic data is obtained which is descriptive of the subscribers who are currently watching material from the program channel stream, and one or more streams containing substitute advertisements are generated based on the demographic data. The substitute advertisements in each stream, thus generated, are targeted at a different demographic group of the subscribers. The number of substitute advertisement streams corresponds to the number of unused transmission channels allocated for transmission of such streams. Groups of subscribers' set-top terminals (STTs) are directed to tune to the allocated transmission channels during the advertisement break to receive the substitute advertisement streams, respectively. Consequently, the subscribers are shown the substitute, targeted advertisements instead of the regularly-scheduled advertisements.

## Background
PRIORITY APPLICATIONS
This application is a continuation of and claims priority to co-owned and co-pending U.S. patent application Ser. No. 10/639,070 filed on Aug. 12, 2003 of the same title, and issuing as U.S. Pat. No. 9,247,288 on Jan. 26, 2016, which is incorporated herein by reference in its entirety.


FIELD OF THE INVENTION
The invention relates to communications systems and methods, and more particularly to a system and method for delivering programming content, along with alternate targeted advertisements, through a communications network, e.g., a cable TV network.
BACKGROUND OF THE INVENTION
In traditional cable networks, a broadcast stream containing program material, e.g., a TV show, typically contains one or more splice points (commonly referred to as advertisement breaks) allowing for the insertion of advertisements. Many cable operators utilize these splice points to insert local advertisements or for self-promotion. For example, a cable operator may broadcast an advertisement for a local car dealership at a splice point during the TV show “Friends.” Although this form of advertising has been used for years, it is inefficient because in many instances the majority of subscribers watching the respective program material may not be a member of the audience for whom the advertisement is intended. For instance, in the example given above, many teenagers watch “Friends,” but relatively few teenagers are potential purchasers of automobiles.
In response to this problem, an improved technique known as targeted advertising has been used recently in some cable networks. Targeted advertising generally allows a cable operator to generate one or more sets of “targeted advertisements” aimed at various demographic groups, and deliver the targeted advertisements to those groups. Several techniques exist for delivering targeted advertisements to subscribers* set-top terminals (STTs) in a cable television network. According to one such technique, a cable operator's headend facility provides one or more sets of advertisements targeted at various demographic groups. Each STT in the network receives these targeted advertisements at opportune times, such as between 2:00 am and 6:00 am when the STT is not active, and stores them in memory. Subsequently, when subscribers are watching a cable program, the STT detects an upcoming advertisement break in the program and substitutes one or more of the targeted advertisements stored in memory for the regularly scheduled advertisements. The STT may use demographic information associated with the program currently being watched, or subscriber-related data collected by the STT, to select an appropriate substitute advertisement from among those stored in memory. In accordance with this technique, the targeted advertisements are inserted into the broadcast stream being received by the STT.
In accordance with another technique, a cable operator assigns, for a given program channel, a predetermined number of transmission channels to carry alternate targeted advertisements to the subscribers watching the given program channel. Using this technique, the cable operator prepares in advance a collection of targeted advertisements, without knowledge of the make-up of the actual audience of the given program channel at an advertisement break. To generate targeted advertisements, the cable operator utilizes a database containing demographic information describing the whole subscriber base. Typically, multiple targeted advertisement streams are generated for various demographic groups identified within the subscriber base. When an advertisement break occurs, the cable operator transmits the prepared streams of targeted advertisements through the respective transmission channels. Each stream of targeted advertisements contains control information indicating the demographic group for which the advertisements are intended. An STT in the network selects one of the streams of targeted advertisements based on one or more factors. These factors may include a demographic profile associated with the TV show currently being shown, or information known about the respective STT household. The STT tunes to the appropriate transmission channel, plays the selected stream of targeted advertisements during the advertisement break, and then re-tunes to the original TV show channel after the advertising break ends. However, this technique proves to be ineffective especially when members of a demographic group for which a targeted advertisement is intended are not present in the actual audience of the show.
The prior art techniques described above are inefficient for other reasons as well. For example, they require the installation and maintenance on STTs in the network of special software applications that perform tasks such as monitoring a program channel for advertisement breaks, maintaining and analyzing demographic information concerning the subscriber, and selecting one or more advertisements appropriate for the subscriber household. For many cable operators, it is costly and inefficient to install and maintain software applications in large numbers of STTs in a network.
SUMMARY OF THE INVENTION
The invention is premised upon the recognition that, in prior art, a cable operator does not know which subscribers are in fact watching material from a given program channel at the moment an advertising break occurs. Consequently, the cable operator does not know precisely who the target is. Not having the capability to determine precisely who is watching material from a respective program channel at a given moment, prior art systems require the cable operator to prepare a stream of targeted advertisements well in advance of the instant when an advertising break occurs. As a result, the prior art systems fail to to provide the cable operator a high level of accuracy in “targeting” advertisements.
In accordance with the invention, in response to a signal indicative of an event (e.g., an advertising break) in the delivery of programming content, an audience currently receiving the programming content is determined. Data descriptive of at least one group of members of the audience is then determined. At least one programming segment containing, e.g., targeted advertisements is generated based at least on the data. The at least one programming segment is provided, in lieu of the programming content, to the at least one group during the event.
Thus, the invention allows multiple sets of substitute advertisements to be generated, targeted at various demographic groups among the subscribers. In such case, a first specified set of set-top terminals (STTs) shows a first set of substitute advertisements, a second specified set of STTs shows a second set of substitute advertisements, etc.
In an illustrative embodiment of the invention, upon a detection of an upcoming advertising break on a program channel stream, the set-top terminals (STTs) that are currently receiving the program channel stream (the “targeted STTs) is dynamically identified. Data is obtained which is descriptive of the subscribers associated with the targeted STTs. The number of available transmission channels in the network is also determined. One or more streams of substitute advertisements targeted at all or a portion of the targeted STTs are generated. The substitute advertisements may be generated based on a variety of factors, including demographic data concerning the subscribers associated with the targeted STTs, and data indicating the number of unused transmission channels in the network.
During the advertising break, one or more streams of substitute advertisements are transmitted over one or more assigned transmission channels, respectively. The targeted STTs are directed to tune to the assigned transmission channels during the advertising break, and receive a stream of substitute advertisements. Consequently, the subscribers are shown substitute advertisements instead of the regularly-scheduled advertisements.



BRIEF DESCRIPTION OF THE DRAWING
Further objects, features and advantages of the invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings showing illustrative embodiments of the invention, in which:
FIG. 1 illustrates a tree structure representing a TV show including regularly scheduled advertising segments and substitute advertisements shown in place of the advertising segments;
FIG. 2 illustrates a cable TV system in accordance with the invention;
FIG. 3 illustrates M carriers associated with M transmission channels in a forward passband;
FIG. 4 illustrates a program channel change message from a set-top terminal (STT) to a controller in the system of FIG. 2.
FIG. 5 illustrates a table used to monitor the program channel activities of various STTs in the system of FIG. 2;
FIG. 6 illustrates components of the controller in the system of FIG. 2;
FIG. 7 illustrates a switching table used by the controller to manage the flow of program channel streams;
FIG. 8 illustrates an assignment table used by the controller to manage the dynamic assignment of carriers for transmitting program channel streams;
FIG. 9 illustrates schematically transmission channels for transmit program channel streams and targeted advertisement streams in accordance with the invention;
FIG. 10 is a flowchart describing a process for detecting an upcoming advertising break in a respective program channel stream currently being broadcast, and generating information concerning the STTs that are currently receiving the respective program channel stream;
FIG. 11 is a flowchart describing a process for identifying one or more demographic groups among subscribers viewing a certain program channel, assigning one or more unused transmission channels for conveying targeted advertisements to the subscribers, and generating a stream of targeted advertisements for each assigned transmission channel;
FIG. 12 illustrates the data structure of a demographic parameter database in accordance with the invention;
FIG. 13 illustrates a set of STTs currently receiving a certain program channel stream; and
FIG. 14 is a flowchart describing a process performed by an STT to receive a respective targeted advertisement stream.



DETAILED DESCRIPTION
The invention is directed to delivering program materials and targeted advertisements to subscribers through a broadband communications network, e.g., a cable TV network. The program materials transmitted over such a network may comprise one or more broadcast programs, e.g., TV shows, which typically are interrupted by advertisements. In this illustrative embodiment, streams containing the program materials of various program channels are transmitted through the network in accordance with a switched broadcast technique. One such switched broadcast technique is described, e.g., in Patent Application Publication No. 20030056217 published Mar. 20, 2003 and entitled “TECHNIQUE FOR EFFECTIVELY PROVIDING PROGRAM MATERIAL IN A CABLE TELEVISION SYSTEM”, hereby incorporated by reference. As fully described below, using the switched broadcast technique, the cable TV network makes available to subscribers in the same service area selected program channels on an as needed basis. As a result, the number of program channels furnished here, although not simultaneously, may exceed the maximum number of carriers or transmission channels allowed in the network.
The term “transmission channel” used here should not be confused with “program channel.” A “transmission channel” signifies a designated frequency band through which a stream containing program material is transmitted. On the other hand, a “program channel” signifies the source of the program material selected by a subscriber to view. For example, a subscriber may select program channel 18 to view program material provided by CBS, program channel 5 to view program material provided by FOX, program channel 7 to view program material provided by HBO, etc. In addition, as used herein, “program channel stream” refers to a stream containing program material provided by a respective program channel. “Program transmission channel” refers to a transmission channel through which a program channel stream is transmitted.
The aforementioned switched broadcast technique is particularly well-suited to targeted advertising. Because in accordance with such a technique, program channel streams are provided on an as needed basis, not all transmission channels in the network are utilized to transmit program channel streams all the time, resulting in one or more unused transmission channels in the network from time to time. The invention takes advantage of these unused transmission channels to transmit to subscribers alternate, targeted advertisements which, because of their short durations, do not occupy the unused transmission channels for an extended period of time anyway.
In accordance with the invention, when an upcoming advertisement break in a program is detected, one or more sets of substitute advertisements are generated in real time as alternates to the regularly-scheduled advertisements. The substitute advertisements may be generated based on demographic data descriptive of the subscribers currently receiving the program, i.e., the actual audience of the program. During the advertisement break, the sets of substitute advertisements are transmitted on unused transmission channels, respectively. A subscriber's STT may be directed to tune to a selected, unused transmission channel at the beginning of the advertisement break to receive a particular set of substitute advertisements, which may be targeted at the subscriber or his/her demographic group. Consequently, a first specified set of STTs may be directed to receive a first stream of substitute advertisements, a second specified set of STTs directed to receive a second stream of substitute advertisements, etc. After the advertisement break, those STTs having tuned away to receive substitute advertisements re-tune to the program transmission channel to receive the original programming.
FIG. 1 illustrates the principles of the invention using a simple tree structure. For example, trunk section 40 of the tree represents a program channel stream containing program material for a TV show that includes advertising segments (e.g., 45, 49) and TV show segments (e.g., 43 and 47). Advertising segments 45 and 49 represent regularly scheduled advertisements which are inserted into the stream by the provider of program material. One or more branches (two are shown here, e.g., 52, 53) extending from each advertising segment (e.g., 45) represent substitute advertising segments that may be shown in place of the segment The advertisements in a substitute advertisement segment are targeted at a group of subscribers currently viewing the TV show that is identified by the cable operator as a distinct audience for the targeted advertisements. Accordingly, advertisements are shown to each individual viewer based on which group he or she is assigned to. Thus, in accordance with the invention, the cable operator may wish to show substitute advertising segments 52 and 56 to a first group, say, subscribers in households with young children. Advertising segments 53 and 57 are intended for subscribers in a second group, say, college students. If a subscriber watching the TV show is assigned to the first group, the subscriber will not see advertising segments 45 and 49, but instead will be shown segments 52 and 56. Similarly, if a subscriber watching the TV show is assigned to the second group, the subscriber will be shown segments 53 and 57, instead. In the case just described, the cable operator may wish to show the regularly scheduled advertising segments 45 and 49 to all individuals who are assigned neither to the first nor to the second groups.
FIG. 2 illustrates cable TV system 10 embodying the principles of the invention for providing program materials to STTs on subscriber premises. As shown in FIG. 2, system 10 includes headend 100, fiber node 122, cable distribution network 124, and service area nodes 126, 127, etc. Service area node 126 is connected to STTs 128-1 through 128-L in a neighborhood or service area, where L represents a predetermined number.
Downstream Transmissions
In headend 100, program material processing unit 102 receives program materials from various sources via satellites, terrestrial microwave transmissions, cable, etc. The program materials are processed by unit 102 to form K individual program channel streams in a digital format, where K is an integer. Each program channel stream contains program material, which requires a transmission channel having a specified frequency band for its distribution.
Switching unit 104, under control of controller 112, selectively switches a subset of the K program channel streams, say, p program channel streams (where p≠K), to p input ports of ad cue detector 105, respectively. The p program channel streams are selected in a manner described below. The p input ports of detector 105 are selected by controller 112 which correspond to the appropriate inputs of modulators in modulator bank 106 so that the p program channel streams, after being processed by detector 105, are modulated onto the respective p carriers assigned by controller 112.
Ad cue detector 105 processes the p program channel streams to detect signals indicating that an advertisement break is imminent in a stream. Such signals may include, e.g., cue messages placed in the program channel stream in accordance with industry standards. Ad cue detector 105 informs controller 112 if an upcoming advertisement break in a program channel stream is detected.
Ad cue detector 105 feeds the p program channel streams to the corresponding inputs of modulators in modulator bank 106. For example, in accordance with a quadrature amplitude modulation (QAM) scheme, the modulators modulate the respective streams onto different carriers corresponding to the modulators. The modulated carriers traverse transmission channels (also known as “in-band” channels) associated therewith, which may occupy a forward passband ranging from 50 MHz to 550 MHz of a coaxial cable.
FIG. 3 illustrates M carriers, C1 through CM, associated with M transmission channels in the forward passband, respectively, which are pre-selected for use in this instance. Since the forward passband is limited in bandwidth, M in this instance represents the maximum number of transmission channels that the forward passband can accommodate. As shown in FIG. 3, the carrier frequency of C1 is denoted CF1; the carrier frequency of C2 is denoted CF2; . . . ; and the carrier frequency of CFM is denoted CFM.
Combiner 108 combines the p modulated carriers to form a combined signal, which is fed to optical transceiver 110. The latter generates an optical signal representing the combined signal. The optical signal traverses optical fiber 113 to fiber node 122. A transceiver (not shown) in fiber node 122 which performs the inverse function to transceiver 110 converts the optical signal back to the combined signal in electrical form. The combined signal traverses cable distribution network 124 to one or more service area nodes (e.g., 126, 127). At each service area node (e.g., 126), the combined signal is multicast to one or more STTs in a service area, e.g., STTs 128-1 through 128-L.
In this instance, each STT in the service area contains a service table which associates the set of program channels, aggregately selected by the subscribers in that area, with the carriers from which the respective program channel materials can be obtained. For example, in response to a change in the selected program channels, controller 112 sends control messages, e.g., via a forward data channel (FDC) described below, to revise the service table in the STTs to reflect the new assignment of carrier frequencies to the latest set of program channels. Thus, based on such a service table, an STT can extract a desired program channel stream from the aforementioned combined signal by tuning to the corresponding carrier frequency. The program material is then derived in a well known manner from the extracted stream for viewing.
In addition to the in-band channels, downstream data, e.g., the aforementioned control messages and other system messages, may be communicated from headend 100 to STTs 128 via one or more FDCs, sometimes referred to as “out-of-band” channels. Such downstream data may be modulated by modem 130, e.g., in accordance with a quaternary phase shift keying (QPSK.) scheme, onto the FDCs which may occupy the 70-130 MHz band of a coaxial cable.
Upstream Transmissions
Upstream data, communicated from STTs 128 to headend 100, may be modulated by a cable modem in an STT onto one or more reverse data channels (RDCs), which occupies a reverse passband, e.g., 5-40 MHz band, of a coaxial cable. The modulated upstream data is demodulated by modem 130 before the data is processed, e.g., by controller 112. Data carried in the RDCs may be modulated in accordance with a QPSK scheme.
In accordance with the switched broadcast technique, the STTs utilize the RDCs to inform controller 112 of a subscriber's program channel change event. For example, when a subscriber at an STT selects a different program channel to watch, a program channel change message is sent from the STT to controller 112. It should be noted at this point that each of set-top terminals 128-1 through 128-L is pre-assigned with an identifier for identifying the STT. In this instance, a media access control (MAC) address of the STT is used for such identification. Alternatively, an Internet protocol (IP) address of the STT may be used. FIG. 4 illustrates the program channel change message which includes, among others, STID field 402 containing an identifier (e.g., MAC address) identifying the originating set-top terminal, PCHNEW field 404 containing the newly-selected program channel number, PCHOLD field 406 containing the previously-selected program channel number, and destination field 408 contains the destination address to which the message is destined, which in this instance may be the MAC or IP address of controller 112.
Thus, for example, if the subscriber changes the program channel selection from channel 8 to channel 2 (or in other words “deselects” channel 8 in favor of channel 2), the value of PCHNEW field 404 would be set to “8” and that of PCHOLD field 406 would be set to “2.” If the subscriber has just turned on the cable TV to watch program channel 9, the value of PCHNEW field 404 in that instance would be set to “9” and that of PCHOLD field 406 would be set to “0,” indicating an off state. Conversely, if the subscriber who has been watching program channel 9 chooses to turn off the cable TV, the value of PCHNEW field 404 would be set to “0” and that of PCHOLD field 406 would be set to “9.”
To keep track of the program channels currently selected by the STTs in a service area (e.g., STTs 128-1 through STT-L), controller 112 may maintain a table such as that shown in FIG. 5. Table 432 includes two columns 436 and 437, and comprises L rows 444-1 through 444-L, corresponding to the number of STTs in the service area. Column 436 lists STIDs for the respective STTs in the service area. Column 437 indicates a program channel X currently selected by a respective STT. A Null value is inserted in column 437 to indicate that a respective STT is in an “off” state. For example, referring to row 444-1, an STT, e.g., 128-1, whose STID is MAC 1 (representing its MAC address) is currently receiving program materials from program channel X=4. Referring to row 444-2 where X=“NULL,” the STT identified by MAC 2 is off and not receiving any program channel stream.
Dynamic Assignment of Carriers
In accordance with the switched broadcast technique, carriers are dynamically assigned to carry program materials of only those program channels selected by the STTs (or subscribers) in a service area. The number of program channels K that the cable TV system can provide, although not simultaneously, can exceed M, the maximum number of transmission channels that the forward passband can accommodate. That is, K can be greater than M in this instance.
Referring to FIG. 6, controller 112 includes processor 204 of conventional design, which is connected to memory 206 and interface 202. Processor 204 receives, from one or more of STTs 128-1 through 128-L, program channel change messages via interface 202. If an STT changes to a new program channel that has not been selected by any STT in the service area, processor 204 assigns an unused transmission channel to transport the new program channel stream, and causes the stream to be switched to a respective input of ad cue detector 105, and thus to a corresponding input to modulator bank 106. In such case, processor 204 also transmits control messages, receivable by the STTs, to revise their service table described above to identify the frequency of the carrier carrying the new program channel stream.
Thus, controller 112 directs switching unit 104 to switch to the selected inputs of detector 105 the p streams corresponding to the p program channels currently selected by the STTs in the service area. Controller 112 specifies to unit 104 the selected inputs of detector 105 to which the p program channel streams are switched. To direct switching unit 104 in an efficient manner, controller 112 may maintain a switching table associating each of the p program channel streams with a respective input port of ad cue detector 105. In one implementation, the input ports of ad cue detector 105 has a predetermined correspondence with the inputs of the modulators in modulator bank 106. For example, in accordance with this implementation, a program channel stream received by input port 1 of ad cue detector 105 is fed to the input of a first modulator in bank 106, which is associated with carrier C1; a program channel stream received by input port 2 of ad cue detector 105 is fed to the input of a second modulator in bank 106, which is associated with carrier C2; etc.
FIG. 7 illustrates switching table 377 which may be used by controller 112 to keep track of the input ports of detector 105 to which program channel X streams are assigned or switched. Table 377 comprises two columns 373 and 374. Column 373 lists each program channel X selectable by a subscriber through an STT; X ranges from 1 to K in this instance. Column 374 indicates an input port of ad cue detector 105 to which the corresponding program channel stream is assigned. Referring to row 371-2, for example, the program channel 2 stream in this instance is assigned to input port 3 of detector 105 (and is thus carried by carrier C3, in accordance with the predetermined correspondence between the input ports of detector 105 and the inputs of modulators in bank 106). A “NULL” in column 374 indicates that the corresponding program channel stream currently is not switched to an input port of ad cue detector 105 as it is currently not selected by the STTs, and thus not transmitted, in the service area. For example, referring to row 371-1, the program channel 1 stream is not currently switched to any input port of ad cue detector 105.
To facilitate its dynamic assignment of transmission channels, controller 112 may also maintain an assignment table in memory 206, FIG. 8 illustrates such an assignment table (denoted 300), which includes columns 304, 306 and 308. Column 304 lists each program channel X selectable by a subscriber at an STT; X ranges from 1 to K in this instance. Column 306 tracks, for each program channel X, the number of subscribers (or STTs) in the service area which have selected to watch materials from that program channel (NPCHX). Column 308 includes entries identifying the carriers assigned by processor 204 to carry the respective program channel X streams. Thus, with assignment table 300, processor 204 has knowledge that, for example, referring to row 311, carrier C3 is assigned to carry the program channel 2 stream (X=2), which 12 subscribers (NPCHX=12) have selected to watch. In addition, as indicated in row 313, no subscriber (NPCHX=0) has chosen to watch material from program channel 1 (X=1). Thus, no carrier (Null) is assigned for program channel 1. That is, program channel 1 material is currently not being transmitted to service area node 126 and thus not currently made available to STTs 128-1 through 128-L.
Also relying on assignment table 300, controller 112 may retire a carrier carrying program channel X stream when NPCHX changes from a non-zero value to zero. The retired carrier is subject to reassignment by controller 112.
Targeted Advertising
FIG. 9 illustrates M=14 transmission channels, denoted T-1 through T-14, for carrying program channel streams and advertising streams directed to a service area in this instance. It should be noted that M=14 here is for illustrative purposes only, cable TV system 10 may include more or fewer transmission channels.
As illustrated in FIG. 9, at time t, transmission channels T-1 through T-7 are assigned to carry, respectively, p=7 program channel streams for program channels 4, 19, 7, 5, 18, 2 and 20 while transmission channels T-8 through T-14 are unused. For purposes of illustration, in FIG. 9 program channels 4, 19, 7, 5, 18, 2 and 20 are associated, respectively, with the ESPN, ABC, HBO, FOX, CBS, SHOWTIME, and CNN services.
According to one aspect of the present invention, ad cue detector 105 monitors each of the program channel streams that are currently being transmitted, and detects that an advertisement break is imminent. When ad cue detector 105 detects an upcoming advertisement break in one of the p program channel streams currently being broadcast, it notifies controller 112. Based on table 432, controller 112 compiles a list of those STTs in the service area which are currently receiving the program channel stream in question. This group of STTs is referred to herein as the “targeted STTs.” Controller 112 informs ad server 103 how many transmission channels are available for conveying streams containing advertisements targeted at the subscribers of the targeted STTs. Ad server 103 then generates one or more targeted advertisement streams, conveyed by one or more of the available transmission channels, respectively.
Ad cue detector 105 in this instance monitors the program channel streams carried on transmission channels T-1 through T-7 for cues messages, indicating an upcoming advertisement break. Standards for the insertion of such cue messages are established by the American National Standard ANSI/SCTE 35 2001 (formerly DVS 253), Digital Program Insertion Cueing Messages for Cable (May 8, 2001) referred to herein as the DVS 253 Standard, which is incorporated by reference herein. Cable programming services generally provide time space during a broadcast program for use by cable operators. These time spaces are often sold by cable operators to local advertisers or used for channel self-promotion. Each of these time spaces is referred to as an “avail,” and is demarcated by “splice points” in the program channel stream. For example, splice information may be provided in a splice information table associated with a particular program and/or in a cue message in the program channel stream. The splice table and cue messages may be sent multiple times. For example, a cue message may be sent 8, 5, 4 and 2 seconds prior to the splice event. Messages that comply with the SCTE standards are referred to herein as digital program insertion (DPI) cues or DPI messages. In this instance, cue messages are inserted in a program channel stream to give advance notice of an avail, which may provide details as to the start and end times of the avail, the number of advertisements in the avail, etc.
Referring to FIG. 10 as well as FIG. 9, at step 505, ad cue detector 105 monitors each of the p program channel streams that are being transmitted for cue messages indicating that an advertisement break is imminent. For example, at step 508, ad cue detector 105 detects a cue message indicating an upcoming avail in one of the program channel streams being transmitted to subscribers. The term “cueing stream” is used herein to refer to a stream in which ad cue detector 105 detects a cue message indicating an upcoming avail. Referring to FIG. 9, in this instance ad cue detector 105 at t detects cue message 682 in the program channel 4 stream, which is transported on transmission channel T-1. By way of example, cue message 682 indicates that upcoming avail 684 is scheduled to begin at 9:40 p.m. and will end at 9:43 p.m.
At step 510, ad cue detector 105 notifies controller 112 of the upcoming avail, and identifies to controller 112 the input port (e.g., input port 1 corresponding to transmission channel T-1) through which the cueing stream enters detector 105. At step 513, controller 112 compiles a list of targeted STTs. Specifically, controller 112 relies on table 377 to translate the identification of the input port (input port 1) of detector 105 to the identity of program channel X (X=4) with which the cueing stream is associated. In addition, controller 112 consults table 432 to identify the targeted STTs, i.e., those STTs (e.g., STT having STID=MAC 1) which are receiving program channel 4 stream, which is the cueing stream in this instance. Controller 112 generates a list of the targeted STTs identified by their STIDs, in a form that is receivable by ad server 103.
At step 516, controller 112 consults assignment table 300 to determine the number of unused transmission channels. This calculation may be performed by determining the difference between the number of transmission channels that are currently assigned, as indicated in column 308 of table 300, and the total number of transmission channels, M. In this instance controller 112 determines that seven transmission channels are unused (T-8 through T-14).
Controller 112 may reserve one or more unused transmission channels to ensure that capacity is available in the event a subscriber in the service area selects a new program channel for which no program channel stream is currently being provided to the service area. In this instance controller 112 reserves transmission channels T-8 and T-9 to provide capacity for the cable network in the event new program channel streams are requested by subscribers during avail 684. Accordingly, five transmission channels (T-10 through T-14) remain unused and are available for transmission of targeted advertisement streams.
At step 518, controller 112 communicates with ad server 103 and provides information including data identifying the cueing stream, data concerning the upcoming avail, a list of identifiers for targeted STTs, and the number of unused transmission channels for transmission targeted advertisement streams. Controller 112 directs ad server 103 to generate one or more streams containing targeted advertisement for the targeted STTs. Referring to FIG. 9, in this instance, controller 112 in this instance notifies ad server 103 that an avail will occur between 9:40 p.m. and 9:43 p.m. on program channel 4 stream, and that five transmission channels are available for targeted advertisements. Controller 112 also provides to ad server 103 the MAC addresses of the targeted STTs that are currently receiving the program channel stream associated with program channel 4 (i.e., the ESPN service).
Ad server 103, among others, generates streams of targeted advertisements in response to the directives and data received from controller 112. Ad server 103 may be a server system comprising one or more software applications. As shown in FIG. 2, ad server 103 also comprises memory 203 which may contain a catalog of targeted advertisements and one or more databases for generating targeted advertisements, and server 103 may have access to the targeted advertisements using the catalog.
According to another aspect of the invention, ad server 103 obtains demographic data associated with the targeted STTs from one of the databases, analyzes the demographic data to identify one or more demographic groups, determines the number of unused transmission channels for carrying targeted advertisements to the targeted STTs and generates a stream of targeted advertisements for each transmission channel determined to be used.
FIG. 11 is a flowchart that depicts various steps performed by ad server 103 in carrying out this aspect of the invention. At step 522, ad server 103 obtains data containing demographic parameters associated with the targeted STTs. In one implementation, ad server 103 utilizes the list of targeted STTs provided by controller 112 to access a demographic parameter database maintained by ad server 103. FIG. 12 illustrates the data structure of a demographic parameter database 620 that may be used to store demographic information for various STTs in a service area, e.g., STTs 128-1 through 128-L. Demographic parameter database 620 includes one or more STT records each corresponding to a respective STT in the service area. Each row in database 620 corresponds to a single STT record. Each STT record comprises a plurality of fields, each of which includes information pertaining to the respective STT. The demographic parameter database is structured so that a given STT record may be indexed, identified and retrieved based on an identifier associated with the respective STT. In this instance, database 620 comprises L STT records 645-1 through 645-L. Referring to record 645-1, for example, the first field 652 holds the MAC address of a respective STT for its identification, e.g., STT 128-1 identified by MAC 1. Additional fields 653-656 hold data representing various demographic parameters associated with STT 128-1. For example, field 653 may hold data indicating the age of one or more subscribers associated with STT 128-1. Field 654 may hold data indicating the sex of one or more subscribers. Field 655 may indicate a household income associated with STT 128-1. Field 656 may indicate a primary language of the household that uses STT 128-1. It should be noted that these examples are intended for illustrative purposes only.
It should be further noted that the structure of database 620 shown in FIG. 10 is intended for illustrative purposes only. In other implementations, a demographic parameter database may comprise any number of STT records, and an STT record may comprise any number of parameter fields.
Returning to FIG. 11, at step 524, ad server 103 analyzes the demographic parameters obtained from database 620, and the data received from controller 112 concerning the number of unused transmission channels, and server 103 identifies one or more demographic groups of STTs from among the targeted STTs. Each group corresponds to a group of subscribers having similar demographic characteristics. Continuing with the above example where the program channel 4 stream is the cueing stream, controller 112 in this instance conveys to ad server 103 the MAC addresses of 1000 targeted STTs (NPCH4=1000) which are currently receiving the cueing stream and have different demographic characteristics. Ad server 103 may determine that the 1000 targeted STTs contains a number of identifiable demographic groups that is smaller than or equal to the number of unused transmission channels. In this instance, once ad server 103 identifies one or more demographic groups, each of the targeted STTs is associated with one of the demographic groups.
FIG. 12 shows schematically, of STTs 128-1 through 128-L in the service area, the 1000 targeted STTs which are singled out in set 673. Ad server 103 identifies, based on demographic data obtained from database 620, and the list of targeted STTs and the number of unused transmission channels for targeted advertising from controller 112, four demographic groups 675-678 among the targeted STTs in set 673. For example, group 675 includes, among others, STTs 128-4, 128-17, 128-23, 128-24, and 128-45.
The manner by which ad server 103 identifies demographic groups is determined by the particular implementation. For example, groups 675-678 may be: (1) single men aged 18-25, (2) men aged 35-50, (3) women aged 50-65 and (4) individuals with annual income in excess of $50,000. Ad server determines if any STT in set 673 qualifies for more than one group (such as (3) and (4)) and assigns such STTs to a single group based on predetermined criteria by the cable operator. It should be noted that the groups (1)-(4) defined above are for illustrative purposes only.
Returning to FIG. 11, at step 528, ad server 103 determines one or more of the unused transmission channels to carry targeted advertisements for the targeted STTs. To determine how many of the unused transmission channels to be used, ad server 103 may consider a variety of factors. If the number of demographic groups associated with the targeted STTs is smaller than the number of unused transmission channels, ad server 103 may allocate one unused transmission channel to each group. For example, if the number of groups is four, and the number of unused transmission channels is five, ad server 103 may allocate one unused transmission channel to each of the four identified groups.
However, in some cases, ad server 103 may identify a number of demographic groups that exceeds the number of unused transmission channels. In such case, ad server 103 assigns unused transmission channels based on priorities established by the cable operator. For example, if the number of groups is four, but the number of unused transmission channels is only two, ad server 103 may prioritize the groups according to parameters established by the cable operator. Ad server 103 may, for example, allocate one unused transmission channel to each of the two largest demographic groups. Ad server 103 may additionally allocate the program transmission channel carrying the cueing stream to the third largest demographic group to substitute the corresponding targeted advertisements for the regularly scheduled advertisements in the cueing stream.
Ad server 103 may additionally determine how many avails are expected to occur in other program channel streams during the upcoming avail on the cueing stream. Cable operators may receive information concerning the scheduling of avails in advance, especially in regularly scheduled programs; such information may be stored in a schedule of avails in memory 203 in ad server 103. Using such information, ad server 103 can in some cases predict with reasonable accuracy an expected number of avails for any given time period. Avails are relatively easy to predict at certain times, such as at the top and bottom of each hour. Accordingly, if a cue message indicates that an avail will begin on a particular cueing stream at, say, 8:59 p.m., and end at 9:03 p.m., ad server 103 may reserve a relatively large number of unused transmission channels for that period for other potential cueing streams.
Thus, if an avail is expected in another program channel stream, ad server 103 may reserve one or more of the unused transmission channels to carry targeted advertisements to the STTs that are receiving the other program channel stream. Referring to FIG. 9, ad server 103 expects avail 686 to occur between 9:42 p.m. and 9:45 p.m. in the program channel stream corresponding to program channel 5 (FOX). This time period overlaps with that of avail 684 scheduled on the program channel 4 (ESPN). Accordingly, ad server 103 in this instance reserves two of the five unused transmission channels to carry targeted advertisements, during avail 686, to those STTs receiving the program channel 5 stream.
Ad server 103 may, in some cases, identify two or more program channel streams in which an avail is expected, and identify one or more demographic groups associated with each program channel stream such that the total number of demographic groups exceeds the number of unused transmission channels. In such ease, ad server 103 allocates unused transmission channels in accordance with priorities established by the cable operator. For example, one avail may be expected in a first program channel stream showing a very popular TV show (with a large number of viewers), while another avail is expected to occur concurrently in a second program channel stream having a substantially smaller number of viewers. Ad server 103 may in such case assign all unused transmission channels to carry targeted advertisements to viewers of the popular TV show.
At step 531 in FIG. 11, ad server 103 generates one or more streams containing one or more targeted advertisements for the targeted STTs. To generate a stream, ad server 103 selects advertisements targeted at the corresponding demographic group. The method by which advertisements are chosen to reach a given audience depends on the particular implementation. For example, referring to FIGS. 9 and 13, ad server 103 generates targeted advertisement stream 1-A containing advertisements targeted at, say, group 675. Ad server 103 additionally generates targeted advertisement streams 1-B, 1-C and 1 -D targeted at groups 676, 677, and 678, respectively.
At this point, ad server 103 communicates to controller 112 information indicating how many unused transmission channels server 103 has determined to carry targeted advertisements for the targeted STTs, which group of STTs for which each targeted advertisement streams is intended, and the input ports of switching unit 104 to which ad server 103 feeds the respective advertisement streams. Following the example provided above, ad server 103 informs controller 112 that advertisement stream 1-A at a first input port of unit 104 is intended for the STTs in group 675, advertisement stream 1-B at a second input port of unit 104 is intended for the STTs in group 676, etc. Ad server 103 transmits the various targeted advertisement streams to switching unit 104 to the respective ports through path 816. It should be noted that path 816 here represents multiple links for carrying multiple streams of targeted advertisements. In this instance, controller 112 dynamically assigns three unused transmission channels (T-10, T-11 and T-12), in addition to the program transmission channel (T-1) carrying the cueing stream, to carry the four targeted advertisement streams (i.e., 1-A, 1-B, 1-C and 1-D) provided at the respective input ports of switching unit 104. Controller 112 then causes unit 104 to switch at 9:40 p.m. the targeted advertisement streams to the respective input ports of ad cue detector 105 corresponding to the assigned transmission channels and the program transmission channel.
In accordance with yet another aspect of the invention, controller 112 directs the targeted STTs in groups 675, 676 and 677 to tune to the assigned transmission channels (T-9, T-10 and T-11) for the duration of avail 682 to receive the respective targeted advertisement streams transmitted through the channels. To that end, controller 112 transmits control messages receivable by the targeted STTs. Each control message may include an STID identifying each STT for which the message is intended, and, for each intended STT, an assigned transmission channel to which it should tune at a specified start time till a specified end time, where the start and end times correspond to those of the avail. The control messages are transmitted over one or more FDCs. In an alternative implementation, the control messages are transmitted over the program transmission channel carrying the cueing stream. In this example, the control messages may direct the targeted STTs in groups 675, 676 and 678 to tune to transmission channels T-10, T-11, and T-12, respectively. The control messages additionally indicate that avail 684 is scheduled to begin at 9:40 and end at 9:43 p.m.
Each of STTs 128-1 and 128-L in the service area determines whether one such control message is intended for the STT by checking for its STID in the control message, as indicated at step 720 in FIG. 14. If not, the subject routine returns to step 720. Otherwise, the STT at step 723 reads information concerning its assigned transmission channel in the control message, and the start and end times of the upcoming avail. At step 726, the STT tunes to its assigned transmission channel at the start time of the avail to receive the targeted advertisement stream from the assigned channel. At step 730, the STT re-tunes to the original program transmission channel at the end time of the avail, and as a result, the STT returns to the original programming.
Returning briefly to FIG. 9, at 9:42 p.m., as soon as avail 686 is ascertained, controller 112 similarly causes ad server 103 to generate advertisement streams 4-A and 4-B targeted at groups of subscribers currently viewing the FOX program channel. Controller 112 causes targeted advertisement streams 4-A and 4-B to be transmitted through transmission channels T-13 and T-14, respectively, between 9:42 p.m. and 9:45 p.m., to coincide with avail 686 on the FOX program channel.
The foregoing merely illustrates the principles of the invention. It will thus be appreciated that those skilled in the art will be able to devise numerous other arrangements which embody the principles of the invention and are thus within its spirit and scope.
For example, in the disclosed embodiment, the network transport is illustratively realized using cable distribution network 124. However, other networks such as digital subscriber line (DSL) networks, ethernet networks and satellite networks may be used, instead.
Finally, system 10 is disclosed herein in a form in which various functions are performed by discrete functional blocks. However, any one or more of these functions could equally well be embodied in an arrangement in which the functions of any one or more of those blocks or indeed, all of the functions thereof, are realized, for example, by one or more appropriately programmed processors.

## Claims

1. A method for delivery of programming content to a plurality of user devices over a communications network, comprising:
detecting, during playback of the programming content, a data element indicative of an advertising event scheduled to occur at a first time;
based at least on the detecting of the data element, identifying which ones of the plurality of user devices are currently tuned to the programming content;
obtaining first data descriptive of at least one group of the identified ones of the plurality of user devices;
based at least on the first descriptive data, identifying first targeted advertising content;
identifying one or more unused transmission channels; and
at the first time, providing, to the at least one group, the first targeted advertising content via at least one of the one or more identified unused transmission channels, the at least one unused transmission channel being allocated based at least on a priority, the priority based at least on (i) a quantity of the identified ones of the plurality of user devices that are currently tuned to the programming content relative to another programming content, and (ii) a quantity of the identified one or more unused transmission channels being greater than the quantity of the identified ones of the plurality of user devices that are currently tuned to the programming content.

2. The method of claim 1, wherein the identifying of which ones of the plurality of user devices are currently tuned to the programming content comprises compiling a list which identifies each of the identified ones of the plurality of user devices, the list comprising a user device identifier associated with a plurality of demographic parameters for each of the identified ones of the plurality of user devices, the plurality of demographic parameters comprising the first descriptive data and second descriptive data, the second descriptive data differing from the first descriptive data in at least one demographic aspect.

3. The method of claim 2, further comprising identifying one or more groups of the identified ones of the plurality of user devices, the at least one group comprising one of the identified one or more groups;
wherein the identifying of the one or more groups comprises utilizing the list and grouping the identified ones of the plurality of user devices according to the at least one demographic parameter, the identified one or more groups comprising the at least one group associated with the first descriptive data and at least one other group associated with the second descriptive data.

4. The method of claim 3, wherein the identifying of the one or more groups further comprises identifying of the one or more groups as a function of at least a quantity of the identified one or more groups and the quantity of the one or more identified unused transmission channels.

5. The method of claim 4, wherein the identifying of the one or more groups as the function comprises determining whether a quantity of the identified one or more groups is fewer than or equal to the quantity of the one or more identified unused transmission channels.

6. The method of claim 1, wherein the identifying of the first targeted advertising content comprises identifying and accessing a digital catalog of targeted advertisements using a software process.

7. A method for delivery of programming content to a plurality of user devices over a communications network, the method comprising:
detecting, during playback of particular programming content, an indicator indicative of an advertising event scheduled to occur therein at a first time;
in response to the detecting of the indicator, generating a list of individual ones of the plurality of user devices currently tuned to the particular programming content;
obtaining first data comprising demographic parameters correlated with users of the plurality of user devices;
in response to the obtaining of the first data, identifying first targeted advertising content based at least on the first data comprising the demographic parameters correlated with the users;
identifying an unused transmission channel, the identifying of the unused transmission channel comprising determining a difference between a total number of assigned channels and a maximum number of channels accommodated by the communications network;
at the first time during the playback of the particular programming content, providing, to at least a portion of the individual ones of the plurality of user devices, the first targeted advertising content based at least on the first data via the identified unused transmission channel; and
when a quantity of at least the portion of the individual ones of the plurality of user devices exceeds a quantity of unused transmission channels, assigning, based on a priority, one or more unused channels to the at least the portion of the individual ones of the plurality of user devices.

8. The method of claim 7, wherein the determining of the difference between the total number of assigned channels and the maximum number of accommodated channels comprises determining a total number of unused channels the identified unused transmission channel being a selected one of the unused transmission channels.

9. The method of claim 8, further comprising reserving one or more of the one or more unused transmission channels for other programming content not currently provided to the plurality of user devices.

10. The method of claim 9, wherein the identifying of the unused transmission channel further comprises:
adding a total number of reserved channels and the total number of assigned channels, the reserved channels providing capacity for one or more requests from the plurality of user devices; and
determining a difference between the added total number of assigned and reserved channels and the maximum number of channels accommodated by the communications network.

11. The method of claim 8, wherein the obtaining of the first data, the first data being descriptive of the at least the portion of the individual ones of the plurality of user devices, comprises identifying at least one group of members, and the method further comprises:
determining a total number of groups of members for the individual ones of the plurality of user devices, the total number of groups of members including the at least one group of members;
in response to determining that the maximum number of channels accommodated by the communications network is less than the total number of groups of members, determining each of a first size of the at least one group of members, and a second size of at least one other group of members of the individual ones of the plurality of user devices; and
based at least on the determining that the first size is larger than the second size, providing to the at least one other group of members, at the first time during the playback of the particular programming content, the first targeted advertising content via the identified unused transmission channel.

12. The method of claim 8, further comprising:
obtaining second data descriptive of at least one other portion of the individual ones of the plurality of user devices;
in response to obtaining the second data, identifying second targeted advertising content based at least on the second data, and identifying another one of the one or more unused transmission channels; and
at the first time during the playback of the particular programming content, providing, to the at least one other portion of the plurality of user devices, the second targeted advertising content via the another identified unused transmission channel.

13. The method of claim 7, further comprising monitoring the assigned channels for the indicator, the indicator indicating that the first targeted advertising content is to be provided at the first time.

14. Apparatus configured to deliver a program stream containing programming material over a transmission system of a communications network to a plurality of user devices, the apparatus comprising:
a controller module configured to dynamically assign transmission channels;
a detector configured to detect, in the program stream, data that identifies a substitutable programming segment, the substitutable programming segment comprising first content directed to a first demographic, the first content being substitutable with second content directed to a second demographic, the second demographic being different from the first demographic;
a processor apparatus in data communication with the detector and configured to, based at least on the data:
identify a plurality of user devices receiving the program stream at a first time period;
group the identified plurality of user devices into one or more groups based on the first demographic, the second demographic, and a third demographic, the third demographic being different from the first demographic and the second demographic;
determine a total number of the one or more groups; and
compare the total number of the one or more groups and a number of available transmission channels; and

a server configured to serve the second content for substitution with the first content within the program stream;
wherein the apparatus is further configured to cause the transmission system to provide the second content over an available transmission channel to a selected one of the one or more groups, the selected one of the one or more groups being associated with the second demographic, the available transmission channel being selected from one or more identified available transmission channels; and
wherein the one or more identified available transmission channels are determined based on the number of available transmission channels, the number of available transmission channels comprising a difference between a maximum number of channels accommodated by the transmission system and a total number of assigned channels.

15. The apparatus of claim 14, wherein the processor apparatus is further configured to, responsive to the total number of the one or more groups being greater than the number of available transmission channels:
determine a total size of the selected one of the one or more groups and a total size of another one of the one or more groups, the other one of the one or more groups being associated with the third demographic; and
compare the total size of the selected one of the one or more groups to the total size of the other one of the one or more groups.

16. The apparatus of claim 15, wherein, responsive to the processor apparatus determining that the total size of the other one of the one or more groups is less than the total size of the selected one of the one or more groups, the apparatus is configured to cause the transmission system to provide one of the first content or the second content to the other one of the one or more groups.

17. The apparatus of claim 14, wherein the processor apparatus is further configured to, responsive to a determination that the one or more groups comprises one or more non-targeted user devices that are not associated with any of the first demographic, the second demographic, or the third demographic, cause the transmission system to provide a regularly scheduled content to the one or more non-targeted user devices.

18. The apparatus of claim 14, wherein the processor apparatus is further configured to, responsive to the total number of the one or more groups exceeding the number of available transmission channels, and based on the comparison of the total number of the one or more groups and the number of available transmission channels, assign, according to a priority, the one or more identified available transmission channels.

19. The apparatus of claim 18, wherein the priority is determined based on a size of each of the one or more groups, or based on a number of viewers corresponding to each of the one or more groups.

20. An apparatus for delivery of programming content to a plurality of user devices over a communications network, the apparatus comprising:
means for detecting, during playback of the programming content, a data element indicative of an advertising event scheduled to occur at a first time;
means for identifying which ones of the plurality of user devices are currently tuned to the programming content, the identifying being responsive to at least the detecting of the data element;
means for obtaining first data descriptive of at least one group of the identified ones of the plurality of user devices;
means for identifying first targeted advertising content, the identifying the first targeted advertising content being based at least on the first descriptive data;
means for identifying one or more unused means for transmission; and
means for providing, at the first time, the first targeted advertising content to the at least one group via at least one of the one or more identified unused means for transmission, the at least one unused means for transmission being allocated based at least on a priority, the priority being based at least on (i) a quantity of the identified ones of the plurality of user devices that are currently tuned to the programming content relative to another programming content, and (ii) a quantity of the identified one or more unused means for transmission being greater than the quantity of the identified ones of the plurality of user devices that are currently tuned to the programming content.