US 20040158858 A1
A broadcast system and method for identification and insertion of advertising in broadcast programs includes receiving a broadcast data stream, identifying an advertisement in the broadcast data stream, and updating an advertisement schedule including information identifying the advertisement and a location of the advertisement within a program in the broadcast data stream. On playback, the advertisement or a replacement advertisement is inserted into the program at the location or at another location within the program.
1. A broadcast method, comprising:
receiving a broadcast data stream;
identifying an advertisement in said broadcast data stream; and
updating an advertisement schedule including information identifying said advertisement and a location of said advertisement within a program in said broadcast data stream.
2. The broadcast method of
extracting service information associated with said program; and
updating a program schedule using said service information associated with said program.
3. The broadcast method of
extracting service information associated with said advertisement, wherein said information identifying said advertisement and said location are based on said service information.
4. The broadcast method of
5. The broadcast method of
6. The broadcast method of
7. The broadcast method of
creating an archive copy of said program, said archive copy stored at a location identified by said program schedule.
8. The broadcast method of
receiving, from a subscriber, a request for said archive copy of said program;
identifying a location of said archive copy of said program using said program schedule; and
identifying said location of said advertisement within said program.
9. The broadcast method of
selecting a replacement advertisement, based at least in part on said program, said subscriber, and said advertisement information.
10. The broadcast method of
transmitting said archive copy of said program to said subscriber; and
inserting said replacement advertisement at said location within said program.
11. A broadcast system, comprising:
means for receiving a broadcast data stream;
means for identifying an advertisement in said broadcast data stream; and
means for updating an advertisement schedule including information identifying said advertisement and a location of said advertisement within a program in said broadcast data stream.
12. The broadcast system of
means for extracting service information associated with said program;
means for extracting service information associated with said advertisement, said information identifying said advertisement and said location of said advertisement based from said service information; and
means for updating a program schedule using said service information associated with said program, said program schedule identifying a storage location of a copy of said program.
13. The broadcast system of
means for uni-casting said copy of said program to a subscriber; and
means for inserting a replacement advertisement in said program at said location during said uni-casting.
14. A broadcast system, comprising:
a head end, coupled to receive an input broadcast channel data stream including a program having an advertisement;
a service information processor, in communication with said head end and retrieving service information associated with said program and said advertisement including information identifying a location of said advertisement within said program;
a storage server, in communication with said head end and said service information processor, storing a copy of said program and associating a storage location of said copy with service information associated with said program;
an advertising server, in communication with said service information processor, storing a copy of said advertisement and further storing a replacement advertisement and service information associated with said advertisement; and
a distribution system, coupled to said storage server and said advertising server, operable to transmit said copy of said program to a subscriber and to insert a selected replacement advertisement at said location.
15. The broadcast system of
16. A subscriber-initiated method for viewing a program, comprising:
interacting with a program schedule displayed on a display device to select a desired program stored in an archive;
transmitting information identifying the subscriber and information identifying the desired program;
receiving a uni-cast transmission of said desired program; and
receiving a uni-cast transmission of a replacement advertisement embedded within said program, said replacement advertisement different than an advertisement included in a live broadcast of said program.
17. A broadcast method, comprising:
receiving, from a subscriber, a request to play an archive copy of a program;
identifying a location of said archive copy of said program;
selecting at least a first advertisement based at least in part on information associated with said program; and
inserting said at least first advertisement into said program.
18. The broadcast method of
identifying an advertising slot within said program; and
inserting said at least first advertisement into said program in said advertising slot.
19. The broadcast method of
20. The broadcast method of
playing said program and said advertisement for said subscriber, wherein said playing said advertisement causes said further promotional materials to be displayed to said subscriber.
 This application is related to, hereby incorporates by reference for all purposes, and claims priority to GB Application Serial No. GB0303176.2, filed 12 Feb. 2003, and titled “A SYSTEM FOR CAPTURE AND SELECTIVE PLAYBACK OF BROADCAST PROGRAMMES”, this application is also related to, and hereby incorporates by reference for all purposes, co-pending and commonly assigned U.S. patent application Ser. No. ______ (Attorney Docket No. V01.001), filed on even date herewith, for “SYSTEM FOR CAPTURE AND SELECTIVE PLAYBACK OF BROADCAST PROGRAMS”.
 Embodiments relate to the broadcast of programs. More particularly, embodiments relate to systems, methods, computer program code, and means for the identification and insertion of advertising in broadcast programs.
 A television viewer can receive a television signal in many ways including: VHF/UHF antenna; cable; satellite receiver dish; and copper wire (telephone, power line). The viewer can receive television content directly from content providers, for instance by receiving UHF television signals, or indirectly from a re-broadcaster, for instance from a cable service provider. Re-broadcasters take the output of content providers and re-distribute it.
 In broadcast television, advertisements are inserted between sections of main programs by the broadcaster. Advertisements are often scheduled to air at a particular time to coincide with the scheduled broadcasting of a particular main program, for example sportsware being advertised during the broadcast televising of sporting events. Broad regional variations can be reflected in the broadcast output of a single television channel by providing different sets of advertisements to respective television transmitters. These regional variations are somewhat limited in that each advertising slot has a predetermined duration.
 Advertisements can therefore be broadcast with reference to the context of a corresponding program event, and to the demographics of the viewers served by any given transmitter, but with very little correlation to the personal context of any particular viewer.
 When the viewer makes use of a video cassette recorder (VCR) to “time shift” (i.e., to delay playback), the advertisements are recorded along with the main program. Recent technological advances, including personal video recording devices (PVRs) and digital video recorders (DVRs), provide viewers with greater flexibility in recording programs. These so-called ‘super-video’ devices can provide personalized functionality by building up a profile of TV usage and attempting to record similar programs. ‘Super-video’ devices are also known to provide a ‘time-shift functionality, whereby the broadcast video stream is recorded at the same time as it is being played back, so that a video stream of the main program being played back can be halted at any desired point and resumed later, even while later parts of the same main program are being broadcast.
 Furthermore, certain PVRs can be configured to allow viewers to fast forward through advertisements so that a main program can be viewed without the intervening advertisements. While this ‘super-video’ functionality might be attractive to a viewer, it presents a challenge to broadcasters' advertising revenues. If every viewer used their ‘super-video’ device to playback the output of commercial television channels, it can be expected that a significant proportion of these viewers would opt never to watch the advertisements at all. Advertising through the television would be correspondingly less effective for advertisers, and advertisements would be placed elsewhere. Consequently, the broadcaster or re-broadcaster would accrue less profit as a result of advertising.
 In addition to broadcasting television programs, certain television suppliers provide subscribers with further “view on demand” facilities (including systems providing “near video on demand” or NVOD and systems providing “video on demand” or VOD). Typically, a broadcaster will offer to broadcast a restricted number of selected events (such as movies), at regular time intervals. Viewers may subscribe to receive a particular broadcast of the event. After subscription, the event will be broadcast directly to the viewer's set top box, using satellite or cable distribution methods, for example. The broadcast times of the events themselves cannot however be controlled by the viewer.
 Broadcasters often broadcast “view on demand” events without advertisements. Generally, “view on demand” events command a premium that compensates for any loss in advertising revenue. When, however, view on demand facilities are provided by a re-broadcaster to allow time-shifting, the suppression or lack of advertisements represents a loss of potential revenue—viewers watching the re-broadcast are able to view the program without paying the original premium and without advertisements.
 In many copyright jurisdictions, a “client-side” device, such as a VCR or a super-video device, is treated in a different way from a “server-side” device. As a result, a viewer with a client-side device can effectively make recordings of television programs for personal use without infringing copyright. Any broadcast service provider using a server-side device that provides a subscriber with the same facility would breach copyright both by recording the broadcast program and by re-broadcasting the same program at a later time. Broadcast service providers that wish to provide a time-shift functionality for their subscribers using server-side devices must therefore have a license from the content providers. Since advertising is an important source of revenue for the majority of content providers, it is likely that any potential reduction in advertising effectiveness will result in either a corresponding increase in license royalties or an outright refusal to license.
 It would be desirable to provide a rebroadcast service that maintains the advertisements provided by content providers. It would also be desirable to provide a rebroadcast service that increases the effectiveness of advertisements in general.
 To alleviate problems inherent in the prior art, the present invention introduces systems, methods, apparatus, computer program code and means for the identification and insertion of advertising in broadcast programs includes receiving a broadcast data stream, identifying an advertisement in the broadcast data stream, and updating an advertisement schedule including information identifying the advertisement and a location of the advertisement within a program in the broadcast data stream. On playback, the advertisement or a replacement advertisement is inserted into the program at the location.
 In some embodiments, the replacement advertisement is selected based at least in part on information associated with the subscriber requesting playback, information associated with the requested program, or information associated with the original advertisement. In some embodiments, broadcast method includes receiving, from a subscriber, a request to play an archive copy of a program, identifying a location of the archive copy of the program, selecting an advertisement based at least in part on information associated with the program, and inserting the advertisement into the program. In some embodiments, this selected advertisement is inserted into the program in a time slot which included an advertisement when the program was originally broadcast. In some embodiments, the selected advertisement is inserted into a new advertising slot of the program. In some embodiments, inserted advertisements may include a link or reference to additional promotional materials which may be viewed when the advertisement is played. With these and other advantages and features of the invention that will become hereinafter apparent, the invention may be more clearly understood by reference to the following detailed description of the invention, the appended claims, and the drawings attached herein.
FIG. 1 is a block diagram of a broadcast system pursuant to some embodiments;
FIG. 2 is a block diagram of a broadcast system pursuant to some embodiments;
FIG. 3 is a block diagram of a broadcast system pursuant to some embodiments;
 FIGS. 4A-4D are diagrams depicting data structures in a broadcast data channel stream;
FIG. 5 is a flow diagram showing a process for identifying and processing advertisements in some embodiments;
FIG. 6 is a flow diagram showing a process for playing a program and inserting advertisements pursuant to some embodiments; and
FIG. 7 is a further block diagram of a broadcast system pursuant to some embodiments.
 Embodiments relate to systems, methods, computer program code and means for the identification and insertion of advertising in broadcast programs. Pursuant to some embodiments, features of the present invention may be implemented in a broadcast system such as the broadcast system described in our co-pending, commonly-assigned U.S. patent application Ser. No. ______ filed on even date herewith (Attorney Docket No. Vo1.001). For example, as will be discussed below, embodiments allow the identification and insertion of advertising in programs broadcast by a broadcast service provider, including programs broadcast “live” or programs broadcast from archives (including short and longer-term archives). Upon reading this disclosure, those skilled in the art will recognize that features of embodiments may be implemented in other broadcast systems as well.
 For convenience, and ease of exposition, a number of terms are used herein. For example, the term “subscriber” is used to refer to an individual or entity which has a subscriber relationship with a broadcast service provider to receive and view broadcast data (either live broadcast data or archived broadcast data or both). A subscriber, for example, may be associated with a particular set top box identifying the subscriber. “Subscribers” may also be referred to herein as “users” or “viewers”. As used herein, the term “set top box” is generally used to refer to devices associated with subscribers which receive broadcast data from a broadcast data service provider. A set top box may be a dedicated device designed to receive broadcast data, or it may be implemented as a component or function associated with a personal computer or other computing device.
 The term “broadcast service provider” or “service provider” may be used to refer to an entity (or entities) which operate components of broadcast systems pursuant to embodiments described herein to deliver live broadcast data and archived broadcast data to subscribers. For example, in some embodiments, a “broadcast service provider” may be an entity which operates (or is associated with) one or more systems configured to transmit programs to subscribers. In some embodiments, broadcast service providers operate systems including exchanges or central offices that are configured to deliver digital data to subscribers over the twisted pair communication lines that are present in many households and businesses around the world (e.g., such as telephone or copper wires). In some embodiments, broadcast service providers deliver this data using digital subscriber line (“DSL”) techniques. In one illustrative embodiment to be discussed herein, a broadcast service provider delivers digital data using asymmetric DSL (“ADSL”) techniques, although those skilled in the art will recognize that other DSL techniques (generally referred to as “xDSL” may also be utilized). Further, although wired communication techniques are discussed, those skilled in the art will appreciate that features of embodiments may also be implemented using wireless techniques.
 As used herein, the term “live broadcast data” or “live broadcast program” refers to broadcast data viewed at the time scheduled and broadcast by the broadcasting entity. As used herein, the term “archived broadcast data” or “archived programs” refers to broadcast data or programs which is stored for viewing at a time later than the “live broadcast”. Embodiments provide two different types of data archives: short-term archives (e.g., where programs are stored for a relatively short period such as 24-72 hours), and longer-term archives (e.g., where programs may be stored for a longer time period). For example, longer-term archives may allow storage of programs indefinitely. As another example, in some embodiments, a broadcast service provider may store programs for up to a set period (e.g., such as one month or one year). As yet another example, a broadcast service provider may periodically query subscribers to determine whether the archived program should be deleted from the archive.
 As used herein, the term “advertisement” is generally used to refer to a promotion or solicitation which generally includes video and audio data (but which may include teletext, video, or audio data) which is embedded or inserted into a stream of broadcast data. Advertisements may be positioned at numerous locations within a broadcast data stream, including at the beginning of programs, at various times during programs, at the end of programs, etc.
 By way of introduction, features of some embodiments will now be described by first referring to FIG. 1, where a depiction of a broadcast system 50 pursuant to some embodiments is shown. Broadcast system 50 includes one or more broadcast service providers 51 delivering content to one or more subscribers 54 a-n. The delivered content can include both broadcast programs (either live or archived) and advertisements.
 Pursuant to some embodiments, subscribers may receive broadcast program data in several ways. For example, subscribers (such as subscriber 54 n) may receive “live” broadcast programs; that is, the subscriber way view a program at the time at which it is being broadcast. As an illustrative example, (which will be continued throughout this description) a “live” broadcast program may be the “Evening News”, broadcast every weeknight starting at 6 pm local time. Broadcast system 50 allows subscribers, such as subscriber 54 n, to view this program at its designated time (at 6 pm local time). As used herein, (and as further defined below) the term “live” is used to generally refer to the actual and planned time of broadcast of a broadcast program (and is not necessarily intended to refer to a program which is both filmed and viewed at the same time). Pursuant to some embodiments, to minimize traffic on the backhaul to the ADSL central office or exchange, these “live” broadcasts are transmitted to subscribers 54 via multicast to avoid duplications of traffic. In this manner, embodiments increase the system's ability to transmit video and audio program data to a large number of subscribers without impairing the capacity of the backhaul (and thereby allowing a larger number of subscribers to interact with the system to selectively view archived programs as described below).
 In some embodiments, subscribers are added to multi-cast broadcasts of programs using techniques such as those described by Internet Group Management Protocol (IGMP), IETF RFC 3376 (October 2002) (available at www.ietf.org) the contents of which are incorporated herein by reference for all purposes.
 These live broadcasts may include advertisements in addition to programs. For example, the “Evening News” program may include groups of two or three (or more) advertisements located at the beginning of the program, every 15 minutes during the program, and at the end of the program. Pursuant to some embodiments, broadcast service provider 51 may capture and identify these advertisements during broadcast and, in some embodiments, may replace some or all of the advertisements with advertisements specifically directed to one or more subscribers 54.
 Embodiments allow subscribers (such as subscriber 54 b) to view a program at some time after the “live” broadcast time. Embodiments generate and store a short-term archive copy of all broadcast programs received by broadcast service provider 51. Further details of how this short-term archive copy is generated and stored will be provided below. In general, broadcast service provider 51 includes a storage device 53 (or group of devices) adapted to store copies of broadcast programs for a number of different broadcast channels. In some embodiments, sufficient storage space is provided to store 24-72 hours of broadcast programs for a number of different channels. In conjunction with the generation and storage of these short-term archive copies; a schedule of programs is created. Subscribers wishing to view a program within 24-72 hours of the time at which it originally aired (that is, after the “live” broadcast) may interact with the schedule of programs to select the program and cause the program to be streamed to the subscriber. In some embodiments, these programs are stored in a manner which allows the subscriber to fast forward, pause, and rewind while viewing the program. As an example, subscriber 54 b may choose to view the “Evening News” at 6:15 pm rather than at the “live” broadcast time of 6 pm. Further, subscriber 54 b may fast forward, rewind, or pause as desired during his viewing of the program.
 Embodiments further allow subscribers (such as the subscriber 54 a) to select particular programs for longer-term archival. For example, broadcast service provider 51 or a subscriber (such as subscriber 54 a as shown in FIG. 1) may wish to create a longer-term copy of a particular broadcast of the “Evening News”. Subscriber 54 a may indicate this desire by communicating with broadcast service provider 51 (e.g., via a set top box or other device as will be discussed further below). A copy of the broadcast may then be stored on a storage device 52 used for longer-term storage of programs. In some embodiments, the copy of the program is associated with information uniquely identifying the subscriber 54 a so that the subscriber 54 a may be allowed access to the program as desired. Subscriber 54 a may then view the program as desired. For example, subscriber 54 a may view the particular episode of the “Evening News” weeks after it aired. Subscriber 54 a may repeatedly view the same episode until the episode is deleted from the archive (e.g., at the subscriber's request or once an archive period has expired). In some embodiments, to reduce storage needs, multiple subscribers may have access to a copy of a program stored in a longer-term archive. For example, information identifying each customer who has requested the creation of a copy of a program may be given access permissions to share access to an archive.
 Embodiments allow each of these types of broadcasts to be selectively delivered to subscribers, providing subscribers with greater choice, control and flexibility in viewing. Pursuant to some embodiments, subscribers may access these broadcasts via telephone wires such as the copper telephone wires currently installed in many households. Some embodiments deliver broadcast and archived programs to subscribers using asymmetric digital subscriber line (ADSL) techniques (although those skilled in the art will appreciate that other techniques now known or later developed may be used to deliver programs pursuant to embodiments disclosed herein). In some embodiments, programs are delivered using encoding schemes such as the widely-used “Moving Picture Experts Group version 2” (MPEG-2) scheme, although those skilled in the art will appreciate that other encoding schemes may also be utilized.
 Pursuant to some embodiments, broadcast data is delivered from broadcast service provider 51 to subscribers 54 using constant bit rate (CBR) encoding techniques, thereby providing a maximum bitrate that is used for both video and audio data. Applicants have found that the use of CBR encoding provides reliable and consistent content delivery over ADSL networks, despite issues with distance from the ADSL exchange (or “central office”) and despite the demands for high bitrates to provide quality video services. Where video bitrates for particular programs vary, embodiments utilize encoders configured to pad or “stuff” the video data extra (blank) data to create an actual constant bitrate. Further, in some embodiments, the backhaul to the ADSL central office or exchange is “overbooked” to assume a particular level of contention which ensures sufficient bandwidth is available to subscribers. For example, in some embodiments, the backhaul may be designed such that 33% of all subscribers serviced by the backhaul are assumed to be active at any time. This may be implemented, in some embodiments, by reducing the number of subscribers associated with each digital subscriber line access multiplexor (DSLAM) associated with a particular exchange or central office.
 Pursuant to some embodiments, broadcast service provider 51 further operates to identify and capture advertisements in conjunction with the creation of archive copies of broadcast programs. In some embodiments, a variety of different types of information about advertisements is captured. For example, when a program is broadcast, broadcast service provider 51 may generate information identifying the location of each advertisement in the program as well as information identifying details of the advertisement and the advertisement's audio and video data. This information may be stored in longer-term or short-term archives 52, 53 or may be stored in separate advertisement databases (not shown). The information is used when a program is transmitted to a subscriber for viewing and allows broadcast service provider 51 to identify the point in the transmission where an advertisement should be inserted. This information also allows broadcast service provider 51 to select an appropriate advertisement for insertion (e.g., by targeting a subscriber's particular demographic). That is, broadcast service provider 51 may select different advertisements for insertion into a program. In some embodiments, different subscribers may be presented with different advertisements. In some embodiments, when a program is viewed at different times, different advertisements are inserted (for example, if a program is viewed in July, an advertisement for an amusement park may be played; if the program is viewed in December, an advertisement for a ski area may be displayed). Embodiments allow great control over the selection and insertion of advertisements in programs that are broadcast to subscribers, thereby increasing advertiser revenue and ensuring that time-shifted programs are able to generate advertising revenues.
 Pursuant to some embodiments, broadcast service provider 51 operates to select appropriate advertisements for insertion into programs that are transmitted to subscribers. These selected advertisements may be inserted at the location where original advertisements were included during the original broadcast of a program, or they may be inserted at other locations. For example, a movie which originally contained advertisements every 20 minutes may be transmitted with advertisements every 30 minutes. As another example, a movie which was originally broadcast on demand and which did not include any advertisements may be transmitted by broadcast service provider 51 with a number of advertisements inserted. In some embodiments, the advertisements inserted by broadcast service provider 51 include service information which has a link to additional promotional information which is presented to the subscriber when the advertisement is viewed. In some embodiments, the system of the present invention may further be configured to allow subscribers to skip some or all advertisements. For example, broadcast service provider 51 may operate a “premium” service which subscribers may pay additional fees to participate in and which allows participating subscribers to skip or fast forward through advertisements.
 Further details of some embodiments will now be described by referring to FIG. 2, where a system pursuant to some embodiments is depicted. The system of FIG. 2 depicts a number of different components that may be operated by (or on behalf of) a broadcast service provider to allow a subscriber to view both live broadcast programs and archived programs on a television 9. A number of components of the system of FIG. 2 may be operated by, or on behalf of, a service provider offering broadcast and archived programs to subscribers. Some or all of the components may be implemented on one or more computing devices configured to perform the functions described herein. Although some components are shown as separate devices, some or all of the functionality described herein may be implemented on one or more computing devices or networks of computing devices.
 In FIG. 2 a broadcast channel source 1 generates a data feed of broadcast channels which are provided to a broadcast distribution head-end 2 (BDHE). For example, broadcast channel source 1 may be any of a number of different types of sources of broadcast data, such as, for example, sources of television, video, audio, or other data. Each data feed includes video and audio information for each channel as well as service information (SI) for each program broadcast on each channel. The service information includes information about each program including start time and duration, and a synopsis of the program.
 As used herein, the term “service information” (or “program specific information”, or SI) refers to information embedded in the MPEG-2 transport stream as additional transport packets having unique packet identifiers. For example, SI may include electronic program guide information such as the nature of a program, the timing and channel on which it is located, and other information identifying the type, content, and timing of a particular program. In some embodiments, SI may include additional information such as a “service description table” (or SDT) providing information identifying the service provider of a program, an “event information table” (or EIT) containing program names, start times, durations, etc., and other timing and event information.
 Broadcast data may be transmitted using a variety of communications media. For example, the broadcast channel source 1 may provide a number of channels of broadcast data as digital or analogue television captured by digital satellite, digital terrestrial, cable, digital subscriber line (xDSL), or as analogue or direct feeds over a network. In some currently preferred embodiments, the broadcast data is received from a digital source (or is otherwise converted into digital broadcast data prior to receipt by BDHE 2). Further, the digital broadcast data may be encoded using an encoding scheme such as the MPEG-2 encoding scheme, although other encoding schemes may also be utilized. Use of an encoding scheme such as MPEG-2 allows the receipt of digital broadcast data which includes encapsulated MPEG-2 transport stream service information associated with the digital broadcast data. This service information, as will be described further herein, provides for accurate timing of programs.
 A number of broadcast channel sources 1 may be utilized in the system of FIG. 2. For example, in some embodiments, the system may receive dozens or even hundreds of different channel data feeds from various broadcast channel sources. Each channel data feed consists of a number of programs. These channel data feeds are acquired by BDHE 2. BDHE 2 includes video acquisition equipment and may also include encoders to compress the channel data into a form which is suitable for a set top box to decode and display on a television. The BDHE 2 may also include multiplexing equipment to multiplex the data. In some embodiments, the broadcast data is encoded into a digital video broadcast (DVB) standard, such as the MPEG-2 video and audio and encapsulated in an MPEG-2 transport stream. Further details of some embodiments of BDHE 2 will be discussed in conjunction with FIG. 3 below.
 Following acquisition, encoding and multiplexing, each of the broadcast channels are directed, encapsulated in the MPEG-2 transport stream, to a timeslip server 3 and broadcast schedule server 4 under instruction from a video server manager 5. In some embodiments, the same output is sent to each server. In some embodiments, separate data is transmitted to a service information processor (not shown, but which may be configured as part of BDHE 2 or as a separate component) and then used to create schedule information at broadcast schedule server 4. The use of a service information processor will be described further below in conjunction with FIG. 3.
 Timeslip server 3 is typically a computer system (or network of computer systems) with a storage capacity that allows it to save the data from the broadcast feeds locally. In some embodiments, all programs from each of the broadcast channels are stored at least for a period of time. For example, in some embodiments, timeslip server 3 may store 24-72 hours of programming from each of the broadcast channels, allowing subscribers to view programs from the broadcast channels for some period (e.g., 24-72 hours) after the time the program is originally broadcast. As will be described further below, timeslip server 3 also operates to allow subscribers to selectively archive broadcast programs for viewing at a time of their choosing. These longer-term archives may be stored at (or accessible by) archive content server 10.
 Although further details will be provided below, in general, the timeslip server 3 receives a number of encoded channels of broadcast data from BDHE 2 and stores the video and audio data for each channel on a disk as a continuous stream. The timeslip server 3 also functions to accurately identify the start and end of each program as well as the locations where each program is stored on disk. This information allows the timeslip server 3 to quickly and accurately retrieve programs when requested by subscribers. Further, in some embodiments, the timeslip server 3 functions to store broadcast channel data so that it may be efficiently and accurately rewound or fast-forwarded upon request by subscribers. Further details of these features will be discussed further below.
 The broadcast schedule server 4 interacts with the timeslip server 3 (and with other sources of schedule information) to construct an accurate historical schedule of programs. This schedule information is presented to subscribers who can interact with the schedule to select a desired program to view or to archive. Broadcast schedule server 4, as will be discussed further below, may create and maintain different types of schedules (e.g., including a long form, or detailed schedule, and a short form, or summary schedule). These schedules may be presented to subscribers and used by subscribers to interactively identify programs for viewing or archival (e.g., a subscriber may interact with a schedule to select one or more programs for viewing from the short-term archive, or to select one or more programs to be stored in the longer-term archive for later viewing).
 The video server manager 5 controls the distribution of the digital broadcast data to viewers for live broadcasting of each channel. Video server manager 5 also stores (or has access to) customer information. For example, customer information may include information associating a particular customer or subscriber with the unique identifier assigned to the customer's set top box 8. Customer information may also include information used to track customer viewing preferences, demographic information, etc. In some embodiments, video server manager 5 also stores (or has access to) advertisement information, including advertisement data identifying the location of advertisement slots in programs that have been archived as well as data identifying the advertisement that was originally broadcast with each program. Further, video server manager 5 may also store (or have access to) new or replacement advertisements including the video and audio data associated with the advertisement.
 In some embodiments, video server manager 5 uses this advertisement data to select a replacement advertisement and provide the replacement advertisement to switching and routing network 6 for transmission to a subscriber in an appropriate location within a program. In some embodiments, advertisements may be selected for transmission based at least in part on information associated with a subscriber (e.g., such as customer demographic information retrieved from the customer database), information associated with the original advertisement (e.g., a rule may be implemented which ensures that if the original advertising slot was paid for by Coca-Cola, Inc., the replacement advertisement must be a Coca-Cola advertisement), and information associated with the program (e.g., a rule may be implemented which ensures that if the program is a cartoon intended for young children, the replacement advertisement cannot be an advertisement targeted to an older audience such as a beer commercial).
 Other information may also be provided as will be discussed below. The video server manager 5 provides control of switching and routing facilities 6 including unicast, multicast and broadcast of each channel. Each broadcast channel is transmitted across a network 7 to the set top box 8 which directs the data to the television 9. Network 7 may be any of a number of different types of networks or combinations of networks. For example, in some embodiments, network 7 is a wide area distribution network to local exchanges and local loop delivery using ADSL. Network 7 allows broadcast data to be delivered to subscriber set to boxes 8, and also allows the transmission of data from set top box 8 to switching and routing facilities 6 (e.g., to select programs for archive, for play of programs, etc.). Subscribers may also be able to access service or program information related to the current program via the set top box 8.
 Set top box 8 may be any device configured to receive digital broadcast data at a subscriber's home. In some embodiments, where digital broadcast data is delivered to subscribers via ADSL techniques, set top box 8 includes a modem or receiver allowing the receipt and transmission of data over telephone wires. In embodiments where broadcast data is delivered in MPEG formats, set top box 8 includes an ability to decode the received MPEG data. In some embodiments, set top box 8 includes information uniquely identifying the subscriber associated with the set top box. For example, in some embodiments, set top box 8 may include a unique identifier such as a digital signature or other cryptographic identifier. This identifier may be provided on a tamper resistant device such as, for example, a smart card. This unique subscriber identifier may be appended to messages transmitted from the set top box 8 to the broadcast service provider, allowing the broadcast service provider to identify the subscriber. Further, the unique identifier may be used in setting up unicast sessions between the switching and routing 6 and individual set top boxes 8. Set top box 8 may be equipped with an infra red or other sensor, allowing a subscriber to interact with set top box 8 using a remote control device.
 Embodiments provide subscribers with the ability to view live broadcast programs, view archived broadcast programs some period after the initial live broadcast (e.g., for a period of 24-72 hours after initial broadcast), or store and view specific programs in a longer-term archive for later viewing. For programs which are viewed after the initial live broadcast, subscribers are able to interactively control the play of the programs (e.g., subscribers may pause play, fast forward, or rewind as desired). Further, because embodiments create an accurate historical program schedule based on the actual broadcast data received by a broadcast service provider, subscribers can view and interact with a detailed and accurate schedule to select programs for viewing or for archival. Embodiments also allow the creation of an accurate historical advertisement database, including information identifying the location or position of each advertisement in each program. This advertisement database may be used to control the insertion (and, if appropriate) replacement of advertisements in programs broadcast to subscribers. Further, each of these viewing options is provided using relatively low bandwidth technologies such as ADSL, allowing subscribers to view and interact with a wide variety of broadcast programs over existing home telephone wires.
 Further details of some embodiments will now be described by reference to FIG. 3, where an embodiment of a broadcast system 50 is shown. Broadcast system 50 includes one or more broadcast channel provider/rights owner(s) 12 which generates (or causes to be generated) broadcast data that is provided to BDHE 2 for distribution to subscribers via a number of set top boxes 8. In the depicted embodiment, digital broadcast channel data is received at BDHE 2 via one or more digital channel sources 30 (e.g., such as digital terrestrial, digital satellite, or digital cable sources). In some embodiments, this digital broadcast channel data is received encoded in MPEG (or similar) formats. As shown, digital broadcast channel data received in MPEG-2 format from digital channel source 30 is typically received in a “multiple program transport stream” (or MPTS) (that is, in a transport stream of packets having multiple programs encoded therein).
 This MPTS of channel information is provided to a decoder 31 which decodes the digital broadcast channel data into serial digital information for each channel. Operation of decoder 31 causes the service information associated with individual programs to be lost. Pursuant to some embodiments, this service information (or at least portions thereof) is preserved by passing the digital broadcast channel data received at digital channel source 30 to a service information (“SI”) processor 19. This SI processor 19 may be implemented as part of BDHE 2 or it may be implemented as a separate component in communication with BDHE 2.
 SI processor 19 receives the digital broadcast channel data in MPTS format and then parses information from each broadcast channel to obtain detailed program information associated with each channel. For example, in some embodiments, SI processor 19 parses incoming data to obtain a “service description table” (SDT) and “event information tables” (EIT) for each broadcast channel. These tables provide information about each program as well as about upcoming programs on each channel. For example, the tables provide information identifying the name of the program, a description of the program, a duration of the program, start and end times (scheduled and actual) and information about the program's genre.
 SI processor 19 returns information to BDHE 2 for multiplexing with the video and audio information for each channel. BDHE 2 re-encodes each channel into “single program transport streams” (or SPTS) using an encoder 32. This encoded audio and video information is associated with the SI information from SI processor 19 using a multiplexor 33. In some embodiments, SI processor 19 returns an MPEG transport stream containing program access table (PAT) and program map table (PMT) service information as well as private data carried on multiple program identifiers (PIDs) for each channel. Multiplexor 33 inserts these private PIDs alongside the audio and video data for each channel. To ensure playback consistency, in some embodiments, the total bandwidth used by each of the private data PIDs is at a constant bit rate (CBR). In general, the total bandwidth allocated to each private data PID which is re-associated with the audio and video data by multiplexor 33 is kept relatively small in comparison to the video and audio bandwidth.
 Each of the MPTS transport streams are then divided into multiple individual single program transport streams (including SI data for each program) using a network interface 34. In some embodiments, network interface 34 is an MPEG-2 transport stream aware interface. The multiple single program transport streams are passed to the switching and routing devices 6 for routing (under direction of the video server manager 5) as live broadcast data to appropriate set top boxes 8.
 Pursuant to some embodiments, SI processor 19 also parses broadcast data streams to identify and retrieve information associated with advertisements. Examples of broadcast data streams parsed to retrieve advertisement information will now be provided by briefly referring to FIGS. 4A-4D. As shown in FIG. 4A, a broadcast data stream (such as the stream received at BDHE 2) may include a number of programs without advertisements (e.g., such as programs received from a channel which does not receive income from advertisements). Such a broadcast data stream may include EIT information (shown as “E1”, “E2” and “E3”) separating each program. EIT information “E1” occurs at time “t1” and has a duration equal to the difference “d” between “t1” and “t2” (the ending time of the program). This information is extracted by SI processor 19 for use in creating an accurate historical program schedule (e.g., stored at broadcast schedule server 4) and program archives.
 As shown in FIG. 4B, a broadcast data stream may include a number of programs, each having advertisements placed within the program. As shown, a program begins at time “t1” indicated by EIT “E1”. Placed within the program are three advertisements, which are indicated by EIT information “Ea1”, “Ea2” and “Ea3”, and having times “ta1”, etc. This information is extracted by SI processor 19 to create an accurate historical program schedule as well as to create advertisement information (e.g., which may be stored at, or accessible to, video server manager 5). This advertisement information is used to select and insert advertisements when the program is played. In particular, on playback, the advertisement information extracted by SI processor 19 is used to identify the appropriate time in a program at which to insert an advertisement (such as a replacement advertisement targeted to the subscriber).
 In particular, in the data stream of FIG. 4B, on playback, a playback timer will identify the time (“ta1”) during playback at which an advertisement was originally located when the program was broadcast. Playback of the program may be paused and an advertisement may be inserted at time “ta1” and played. A second advertisement may be inserted at time “ta2”, and a third at “ta3”. Play of the program is resumed at a time equal to “ta1+da1+da2+da3”. Additional advertisements may be inserted at times “ta4” and “ta5”. For each of the types of data streams of FIG. 4, advertisement information extracted by SI processor 19 may also include information which identifies the content of the advertisement. For example, EIT information may include information identifying an advertiser, information identifying the particular commercial, information identifying the target audience, information identifying the dates during which the advertisement should be played, etc. This information, along with the timing and duration information, is stored and used to allow the selection and insertion of advertisements during program playback.
 As shown in FIG. 4C, a broadcast data stream may include a number of programs, each having a block of advertisements embedded within the program. For example, as shown, a program begins at time “t1” indicated by EIT “E1”. An “ad break” is located within the program and is identified by EIT information “Ea1” at “ta1”. The ad break may be sufficiently large to include more than one advertisement. Unlike the data stream of FIG. 4B, the data stream of FIG. 4C does not utilize separate EIT information for each individual advertisement.
 As shown in FIG. 4D, a broadcast data stream may include a number of programs which have embedded advertisements which are not identified by EIT information. It may not be possible for SI processor 19 to parse and identify these advertisements. As an alternative, embodiments may utilize other indicators to identify these advertisements. For example, in some embodiments, an operator may manually view the broadcast data stream and identify the start and end of each advertisement or block of advertisements.
 Referring again to FIG. 3, in some embodiments, SI processor 19 may be configured to save further bandwidth by selectively parsing and using particular types of service information. For example, in some embodiments, subtitle information may be manipulated to reduce bandwidth. As a particular example, SI processor 19 extracts teletext subtitles from the MPTS data received from BDHE 2 by parsing the complete teletext stream and extracting only the subtitle information from the stream. For example, some broadcast systems include teletext subtitles in a particular “page” of teletext information associated with a broadcast. In some systems, the subtitles are include in teletext “page 888”. In such an system, SI processor 19 is configured to repackage the “page 888” packets, and optionally inserts a new packet (e.g., such as a “page 100” packet) into the stream using another private data PID (again, in CBR).
 The dropped teletext pages may, in some embodiments, be stored on a teletext server or database (not shown in FIG. 3) which can later be queried by a subscriber's set top box 8 during viewing of the broadcast program. As another example, DVB subtitles (where present) can also be extracted by SI processor 19 to reduce bandwidth. For example, SI processor 19 may parse the subtitle information and translate the subtitles into a bandwidth-reduced form (e.g., the information may be stored on a server and displayed only in response to particular queries from set top boxes 8). In this manner, SI processor 19 can operate in conjunction with BDHE 2 to remove certain types of service information from the transport stream, while ensuring that needed service information remains associated the correct programs.
 SI processor 19 may also be configured to handle radio channels (e.g., by identifying radio channels as having audio-only PIDs). The audio-only PIDs may be passed directly to multiplexor 33 without need for re-encoding. Further, SI processor 19 may also be configured to extract interactive applications (which may be stored by video server manager 5 for use on-demand), thereby avoiding the need to use carouselling systems typically used in broadcast environments. In some broadcast environments, such as conventional satellite and cable systems, there is often no back channel which can be used to request interactive applications and associated assets. Previous systems overcome this lack of a back channel by using a carousel. For example, a channel provider repeatedly transmits (or “carousels”) the interactive application and associated assets on a separate MPEG PID. These previous systems rely on the set top box to identify, retrieve, and cache this information. This can lead to problems. For example, if a viewer moves within an application, or moves from one application to another, the needed information may not have been cached, and the set top box must wait until the channel provider retransmits the data (or until the data reappears on the carousel).
 One protocol which is used to implement such carouselling techniques is specified by the Digital Storage Media Command and Control (DSM-CC) extensions of MPEG-2, Part 6. Embodiments disclosed herein allow broadcast systems to broadcast interactive applications without need for such carouselling techniques. Further, pursuant to some embodiments, alternative versions of interactive applications may be delivered to subscribers based on access rules or permissions established by channel providers or content owners (e.g., to ensure that only the latest version of a particular interactive application is made available to subscribers, etc.).
 In addition to providing processed service information to the head-end for recombination with audio and video data for each program, SI processor 19 also provides the processed service information to broadcast schedule server 4 for use in creating accurate schedule data 15. By utilizing service information based on digital broadcast channel data as it is actually received by BDHE 2, embodiments are able to create a historical schedule with accurate information about the actual start and end times for broadcast programs on each of the broadcast channels received at BDHE 2. This information may be combined with published schedule data (e.g., such as broadcast schedule data published by broadcast channel providers/channel owners 12) to create schedule data 15 having substantially complete and accurate program information.
 As an example, many programs, such as live sporting events, have a scheduled broadcast time which is an estimated time. This estimated time is used by the broadcast channel provider/rights owner 12 to produce a program schedule. Often, however, such programs may finish early (or late). Embodiments allow the creation of schedule data 15 which accurately identifies the actual schedule for the program. This information may be utilized to accurately and efficiently archive programs for later playback (e.g., a sporting event that actually lasts for 47 minutes will be identified as lasting 47 minutes rather than some estimated time such as an hour).
 The network interface 34 of BDHE 2 also provides the de-multiplexed SPTS data to timeslip server 3. As shown, timeslip server 3 has a number of different functional components. In particular, each of the de-multiplexed channels of SPTS data are provided to an acquire and store channel 42 which operates to read the received transport stream and store it onto the correct storage location in the next available storage device. Acquire and store channel 42 also operates to wrap around the end of each storage device and to maintain a circular buffer. In some embodiments, the transport stream received from BDHE 2 is stored in an unaltered format (i.e., it is stored in the format in which it is received). As depicted, the data is stored in separate storage devices 43, 44 (or storage areas) for each channel. In some embodiments, each storage device (or storage area) is configured to act as a circular or wrap-around buffer sized to store a certain amount of broadcast data (e.g., if the short-term archive function is intended to provide 24 hours of short-term archived programs, each buffer is sized to accommodate 24 hours of data). When the end of the buffer is reached, the oldest programs in the buffer are overwritten with the most recent broadcast programs for each channel.
 Acquire and store channel 42 also operates to parse the private data SI packets from the transport stream. The private data SI packets are passed to a schedule table 41, along with storage information identifying where the program associated with particular SI data is stored. For example, schedule table 41 may include an information record for each program which includes the SI information for the program, along with disk location information particularly identifying the disk storage location on which the program is stored (e.g., such as a buffer location in a particular channel data store such as data stores 43 or 44). In some embodiments, the SPTS stream received by acquire and store channel 42 is CBR, allowing acquire and store channel 42 to reliably predict the amount of storage required for each program and to ensure the timeliness of reading data back off disk upon playout. CBR ensures that the output rate of a stream on playout equals the input rate.
 Schedule table 41 may be configured to contain information identifying a list of channels, each of which is associated with records containing an event or program identifier, an event time, and a disk position at which the program is stored. This allows the start and end times of programs to be accurately located for playout. In some embodiments, the start and end positions are located at program boundaries. For example, the start and end positions may always be located on a video “group of programs” (GOP) or audio “packetized elementary stream” (PES) boundary to ensure that playback always begins at a safe point. In some embodiments, program information in schedule table 41 is removed once the circular buffer of programs wraps past the program.
 Timeslip server 3 also includes a video and audio stream analyzer 45. Video and audio stream analyzer 45 operates to uniquely identify each video GOP boundary. The streams received by acquire and store channel 42 are parsed to identify these boundaries. The disk position of each GOP on each channel is stored in a GOP list 46. A GOP can span many MPEG transport stream packets (and may typically include approximately 12 video frames, including Intra or I frames, Predicted or P frames, and Bi-directional or B frames). Pursuant to the MPEG-2 standard, a GOP always starts with an I frame. In some embodiments, video and audio stream analyzer 45 is configured to identify these boundaries and to associate them with storage locations. Analyzer 45 further analyzes the streams to identify audio PES packet locations. Those skilled in the art will recognize that embodiments may be used with other standards as well (e.g., by parsing streams to identify boundaries established by those other standards).
 Timeslip server 3 also includes a fast forward (“FF”)/rewind (“REW”) frame extractor 47 which is configured to extract I frames from video streams as they are being stored by timeslip server 3. In this manner, expensive and time consuming searches for 1 frames in response to subscriber requests are avoided. Both an FF and a REW stream are created by extracting the I frames and wrapping them in an MPEG transport stream. Transport stream timing information including PTS/DTS and PCR clock information are generated by timeslip server 3.
 Embodiments utilize the placement of I frames at the start of each GOP to identify boundaries. GOPs do not necessarily contain the same number of frames; for example, encoders may sometimes terminate a GOP to insert an I frame on scene changes. Embodiments ensure an appropriate FF/REW playback speed by monitoring (and adjusting, if appropriate) the rate at which I frames are stored to disk. Unlike regular program playback, the output rate of FF/REW playback is not determined by the input rate (that is, the FF/REW information need not be stored at the same rate that it will be played back). Instead, the playback rate is configurable by specifying a desired interval between I frames. When writing FF/REW information to database 46, FF/REW frame extractor 47 may drop certain I frames in the feed received from the acquire and store channel 42. In this manner, the playback rate can be configured for consistency.
 The time and storage location relationship between the FF/REW streams and the original content stream is stored (e.g., at data store 46) to allow timeslip server 3 to locate the correct FF/REW point when requested and to ensure that after completion of a FF/REW that the correct point of the program is located to resume play. Playback pacing is controlled by timeslip server 3 by using switching and routing 6 (or other output device) as an accurate timing source (e.g., in an ATM environment, the ATM switch may be used as a timing source).
 Timeslip server 3 also includes a playout module 49 to control playout of archived programs. Playout involves locating the start of a requested program and streaming the content off the appropriate storage device to the particular set top box 8 associated with the subscriber who requested the content. A request message submitted from a set top box 8 will include information identifying the particular subscriber making the request (as well as information to allow switching and routing devices 6 to set up a unicast session with the set top box). When a subscriber requests a program, the request is routed to timeslip server 3 through playout module 49 which causes schedule table 41 to be consulted to identify the start point of the requested program. In some embodiments, the start point of each program is aligned to a GOP or audio PES packet to ensure a clean start to the playback. Playout continues until the end of the program is reached or until other instructions are received, such as, for example, a request to stop playout, a request to skip, or a request to view another program.
 If a program is skipped or another program is selected, the current program continues to play until the end of the video GOP (or audio PES packet) is reached. Once reached, a message is transmitted to set top box 8 using a private data PID packet warning the set top box 8 of an impending discontinuity. Playback continues from the start of the next program or nearest GOP (or audio PES) frame to the skip point. Timeslip server 3 may be configured to play back from either the nearest video GOP frame (or audio PES packet), allowing different types of set top boxes to be used with the system (as different set top boxes may respond differently to discontinuities in playout).
 As discussed above, embodiments permit subscribers to selectively request the creation of an archive copy of a program for storage in a longer-term archive. Timeslip server 3, under direction from video server manager 5, may operate to cause one or more programs to be saved by an archive content server 10. For example, a subscriber may request that a particular program be archived for future viewing by the subscriber. This request is transmitted from the subscriber's set top box 8 to video server manager 5 which causes a request to be sent to the timeslip server 3. When the SPTS packets including the requested program are received by timeslip server 3, timeslip server 3 functions to initiate the transmission of a copy of the program to archive content server 10 for storage in an archive data store 17.
 In some embodiments, these archive features may result in the storage of at least two copies of a program: one copy in archive data store 17 (the “longer-term” archive, for later retrieval by the subscriber(s) requesting the archival) and one copy in timeslip server 3 (the “short term” archive, for viewing by any subscriber desiring to view a program during the period in which the system stores broadcast programs). As a result, embodiments provide for greater longevity and choice of viewing of programs. The version stored by timeslip server 3 may be viewed as a more ephemeral content store providing a viewing window of, for example, several days after the program is broadcast, while the version stored by archive content server 10 may provide for longer term storage and viewing of the program. That is, in some embodiments, timeslip server 3 provides a circular buffer of archived programs for each channel, while archive content server 10 provides dedicated long term storage of selected programs.
 In some embodiments, a number of different storage configurations may be used for storing program information. For example, hard disks or tape drives may be used. Entire disks may be used, or partitioned disks. As a further protection against failure, RAID partitions may be employed. In some embodiments, multiple disks per channel may be used. In some embodiments, multiple redundant disks may be used to store identical content, reducing failure and potentially allowing for automated fail-over recovery. Further, such a configuration may provide improved overall performance by spreading the load on very popular channels over multiple disks. In this manner, live broadcast data may be delivered to authorized subscribers while generating service information data, archiving programs, and constructing an accurate historical schedule.
 In some embodiments, not all channels are provided to all timeslip servers. For example, in some embodiments, the allocation of channels to timeslip servers is dependent on the popularity of programs available on that channel. The allocation of channels to timeslip servers is done in such a way to result in the set of timeslip servers being capable of satisfying peak time simultaneous viewing.
 In some embodiments, playback of a program (e.g., either from a longer-term or short term archive) may also include the selection and insertion of advertisements into the program for transmission to a subscriber. In some embodiments, this selection and insertion is performed under control of video server manager 5 which has access to information identifying the location of advertisements in each program and channel (e.g., based on the information extracted by SI processor 19). Video server manager 5 may also have access to a database of advertisements (e.g., such as ad database 20). Pursuant to some embodiments, video server manager 5 may select a replacement advertisement for inclusion in a program transmitted to a subscriber. Further details of such embodiments will now be described by first referring to FIG. 5, where a flow diagram is shown representing a method pursuant to some embodiments of the present invention. The flow diagram of FIG. 5 (and other flow diagrams contained herein) include a number of process steps. These process steps need not be performed in the sequence shown; those skilled in the art will appreciate that different sequences consistent with embodiments discussed herein may be used.
FIG. 5 depicts a process 300 for identifying advertisements in a broadcast data stream. Process 300 may be implemented using the broadcast system of FIGS. 1-3, although those skilled in the art will appreciate that other systems and configurations may also be used. Process 300 begins at 302 where a broadcast data stream is received. For example, in the system of FIG. 3, the broadcast data stream is a digital data stream received by BDHE 2.
 Processing continues at 304 where advertisements are identified. According to some embodiments, advertisements are identified by SI processor 19. BDHE 2 transmits the data stream to SI processor 19 where service information is parsed and identified. In some embodiments, where advertisements are identified by EIT information (such as the data streams of FIG. 4B or 4C discussed above), SI processor 19 identifies the location of each advertisement based on the EIT information. In some embodiments, where EIT information is not provided for advertisements, an operator may be used to monitor the broadcast data stream to identify the location of advertisements in the stream.
 Processing continues at 306 where the EIT or other location information is used to create or update a schedule table including advertisement information and location. In some embodiments, the EIT information (or manually-captured location information) is provided from SI processor 19 to broadcast schedule server 4 to construct a schedule of advertisements associated with the broadcast schedule created by broadcast schedule server 4. For example, for each program, an advertising event schedule is created indicating the position of each advertisement in the program. Information may also be captured identifying details associated with the advertisement (e.g., such as the advertiser, the genre, the target audience, a description or identifier, suggested dates of play, etc.). A copy of the advertisement is also stored. In some embodiments, broadcast schedule server 4 stores schedule information and video server manager 5 stores advertisement data 20. When a program is played back (as will be discussed below) both sets of information are used to insert advertisements into programs.
 In some embodiments, the system of the present invention may be configured to insert targeted promotions and advertising directed to particular subscribers. For example, such advertising may be inserted at the start, end or at some other point in the playback of programs from either the short-term or the longer-term archives (or during the multi-cast of live programs to subscribers). Targeting may be achieved by consulting the customer database 14 for information including, but not limited to, subscriber preferences, subscriber viewing history, age, sex and demographic information.
 Referring now to FIG. 6, a process 400 is shown for selecting and inserting advertisements into a program (e.g., such as a live broadcast program or an archived program). In some embodiments, the process 400 is performed using the system of FIGS. 1-3, although those skilled in the art will appreciate that other systems may utilize features of the present invention to select and insert advertisements into programs. Process 400 begins at 402 where a request is received from a subscriber to play a program.
 For example, the request received at 402 may be a request to play an archived copy of a program (e.g., such as a recently-broadcast program stored in a short-term archive associated with timeslip server 3 or a program stored in a longer-term archive such as an archive associated with the subscriber maintained by archive content server 10). The request received at 402 includes information identifying the program. The request also includes information identifying the subscriber (e.g., such as a subscriber identifier or an identifier associated with a set top box assigned to the subscriber).
 Processing continues at 404 where a broadcast system operates to identify a location of the requested program and advertising information associated with the program. For example, processing at 404 may include determining if the requested program is a program in the short-term archive associated with timeslip server 3 or if it is a program stored in the longer-term archive associated with the archive content server 10. Processing at 404 also includes identifying a storage location of the program, e.g., by consulting schedule table 41 or other resources indicating the particular storage location of the program. Information about the advertisements associated with the program are also identified at 404. In some embodiments, this advertisement information is the information extracted by the SI processor 19 when the program was originally broadcast. For example, the advertisement information may include information identifying where advertisements are located in the program as well as information identifying the length of each advertisement spot and information identifying the advertisement (including the advertiser, the name or identifier of the advertisement, the target audience, the dates during which the advertisement is to be played, etc.).
 In some embodiments, if the requested program did not include any advertisements (e.g., the program was broadcast over a commercial-free channel), processing may continue at 410 where the requested program is played without inserting any advertisements. In some embodiments, advertisements may be selected for insertion at 408 even if the program was originally broadcast without advertisements (for example, a movie may have been originally broadcast as a video on demand without advertisements, but will be rebroadcast from an archive with one or more advertisements inserted).
 If the requested program includes advertising, processing continues at 406 where information associated with the subscriber requesting the program are retrieved. For example, processing at 406 may include retrieving information from customer database 14 to identify demographic and other information associated with the subscriber as well as any entitlement information needed to confirm that the subscriber is authorized to view the requested program.
 Processing continues at 408 where advertisement(s) are selected for insertion. This selection, in some embodiments, is performed under control of video server manager 5 in communication with timeslip server 3 (and/or in communication with archive content server 10). In some embodiments, the advertisements selected for insertion are the same advertisements which were extracted from the program when the program was originally broadcast (e.g., at step 304 of the process of FIG. 5). In some embodiments, the advertisements selected for insertion are different advertisements than the advertisements which were originally broadcast with the program. For example, replacement advertisements are selected which more appropriately match the subscriber's demographics or the genre of the program. Further, the replacement advertisement may be selected to fit in the time slot as originally broadcast (e.g., a 30-second ad is used in a 30-second slot). Other considerations may also be used in selecting advertisements. In some embodiments, replacement advertisements are inserted into the program at different locations. For example, a program may have been broadcast with advertising slots every 20 minutes. A broadcast service provider may determine that the advertising slots are better located every 30 minutes. On playback (at 410), the new timeslots may be used.
 Processing continues at 410 where the program is played back for the subscriber with the selected advertisements inserted into the advertising slots of the program. If the program is an archived program requested from a short-term or longer-term archive, the program is transmitted to the subscriber via a uni-cast session established with the subscriber's set top box. The video and audio data associated with each advertisement may be multiplexed into the data stream as the program is being transmitted. The advertisement data is inserted at the position indicated by the EIT information originally extracted from the program. For example, when the time to play an advertisement occurs (that is, the playback has reached the location where the advertising event time matches the playback time), playback of the archived program is temporarily stopped and the video server manager 5 causes the archive content server (or other server storing advertising content) to play the advertisement selected at 408. If the program is being played in a uni-cast session, the selected advertisement is also played in the same uni-cast session. When play of the advertisement is complete, the video server manager 5 returns control of playback to the timeslip server 3 for restarting of the program. The timeslip server 3 restarts playback from the point where the original advertisement would have completed.
 In some embodiments, an advertisement may be associated with further promotional material (such as a promotional offer). For example, an advertisement (including an advertisement identified at 304 of FIG. 5 and an advertisement selected at 408) may include SI associated with an advertisement may include information identifying one or more promotional links. For example, a sponsor of a program may provide promotional information or products in association with a program or in association with a particular advertisement. The advertisement may have SI which includes a link (e.g., such as an Internet URL or the like) to the promotional offer. When such an advertisement is played at 410, the subscriber's set top box displays an indicator that a promotion is associated with the advertisement. The subscriber can view the promotional information by selecting the promotion via a remote control device. If the subscriber selects to view the promotional information, the set top box is routed to the link included in the SI, and the promotional information is displayed. The subscriber may then view the promotional information (which may be, for example, a product offering, a product description, a promotional video, a purchase offer, a link to an operator to make a purchase, etc.). When the subscriber is finished viewing the promotional information, he may return to either the point he left the original advertisement, to the end of the advertisement or to the end of the advertisement break.
 This playback and insertion process is repeated until the program is completed. If multiple advertisements are to be played in series, control will revert to timeslip server 3 after each of the advertisements have been played. In some embodiments, such a series of advertisements may be combined into a single packet or file for insertion into the broadcast data stream, thereby minimizing the need to switch control between the video server manager 5 and the timeslip server 3. In such embodiments, the video server manager 5 may also control the selection of the order of play of the advertisements in the series.
 In some embodiments, video and audio data associated with each advertisement is also stored at (or accessible to) timeslip server 3, allowing timeslip server 3 to efficiently insert advertisements during playback. In some embodiments, some advertisements in a program are replaced and some are played in the form as originally broadcast. In some embodiments, the ability to FF or REW through an advertisement may be disabled to prevent subscribers from skipping advertisements.
 As discussed above, embodiments allow the insertion of targeted advertisements into programs transmitted to subscribers. This targeting may be performed in a number of ways. Referring now to FIG. 7, an embodiment of broadcast system 50 is shown in which broadcast service provider 51 maintains (or has access to) customer data and advertising data used to target advertisements and promotions to subscribers 54. For convenience, only selected components of broadcast system 50 are depicted in FIG. 7.
 In the embodiment depicted, broadcast service provider 51 operates to provide live broadcast data to subscribers 54. Broadcast service provider 51 additionally provides archived programs to subscribers 54, including programs from a short term archive 53 and a longer-term archive 52. The transmission of these programs to particular subscribers is controlled, in part, by video server manager 5. For example, video server manager 5 may consult customer database 14 to determine if a particular subscriber is authorized to view a particular program or a particular archived copy of the program or whether the subscriber is authorized to cause a longer-term copy of a program to be archived. Broadcast service provider 51 may also use this customer data to monitor subscriber viewing habits, identify trends, and select and target advertisements and promotions to individual subscribers.
 In some embodiments, customer database 14 includes data identifying individuals having a subscriber relationship with broadcast service provider 51. This data may include, for example: a unique subscriber identifier (which may be the same as, or associated with, a unique identifier of a set top box issued to the subscriber); demographic information of the subscriber (e.g., including the subscriber's age, gender, marital status, family size, etc.); geographic information (e.g., including the subscriber's address); and subscription information (e.g., including information identifying particular channels and entitlements associated with each subscriber). This information may be used by video server manager 5 to control subscriber access to live and archived programs. In some embodiments, subscription information may also include information specifying whether a subscriber is authorized to make copies of programs from the subscriber's set top box or television. For example, a subscriber may attach a video cassette recorder or rewritable CD-ROM or a DVR to his television or set top box and make copies of some programs broadcast using embodiments of the present invention. Pursuant to some embodiments, a subscriber's ability to make copies may be restricted by including copy protection measures in certain programs that are transmitted to the subscriber. In some embodiments, the copy protection measures may be specified for particular programs.
 In some embodiments, customer database 14 also includes information about subscriber viewing habits associated with live broadcasts. For example, in some embodiments, video server manager 5 tracks and identifies each request received from a subscriber to join a multicast of a live broadcast. Video server manager 5 then captures (and stores in customer database 14) information identifying the name, genre, channel, and broadcast time of each program requested by each subscriber. In this manner, broadcast service provider 51 may capture, maintain, and track detailed live broadcast viewing information for each subscriber.
 In some embodiments, customer database 14 also includes information about subscriber viewing habits associated with programs stored in short-term and longer-term archives. For example, video server manager 5 tracks and identifies each request received from a subscriber to view a program stored in short-term archive 53 (e.g., including information identifying the program name, genre, channel, and time of each request). Video server manager 5 also tracks and identifies each request received from a subscriber to create a copy of a program for storage in longer-term archive 52, as well as each request to view a program from the longer-term archive 52 (e.g., including information identifying the program name, genre, channel, and time of viewing request). In this manner, broadcast service provider 51 is able to create, maintain, and update customer database 14 with relevant and timely information about each subscriber's viewing habits and preferences.
 In some embodiments, this customer database information associated with each subscriber is used in conjunction with advertisement and promotional data stored at (or accessible to) broadcast service provider 51. For example, as shown in FIG. 7, video server manager 5 is in communication with an advertisement database 20. Advertisement database 20, in some embodiments, includes information about a number of different types of advertisements or promotions, and the ability to stream these to a subscriber. For example, advertisement database 20 may include regular broadcast advertisements, such as 30 or 60-second advertisements. Advertisement database 20 may also include banner advertisements created to be displayed across the top or bottom of a television screen. Advertisement database 20 may store the video and audio portions of advertisements in MPEG or other formats. Other types of advertisements or promotions may also be provided.
 In some embodiments, advertisement database 20 includes identifying information associated with each advertisement or promotion. For example, each advertisement is identified by a unique identifier. This unique identifier is used by broadcast service provider 51 to track and manage advertisements and promotions. For example, video server manager 5 may request play of a particular advertisement by reference to this unique identifier. Advertisement database 20 may also include other information associated with each advertisement, including information identifying an audience to which the advertisement should be targeted. For example, a brewing company may create a beer advertisement which is intended to be displayed to males aged 21-35. This demographic information identifying the advertisement's intended target audience is stored in advertisement database 20 in a record associated with the advertisement itself. Pursuant to some embodiments, video server manager 5 uses this information, in conjunction with information from the customer database 14, to provide targeted advertisements to subscribers in conjunction with the transmission of live or archived broadcast data.
 For example, when a subscriber joins a multi-cast of a live broadcast program, the subscriber submits a program selection request to broadcast service provider 51 through a set top box. This program selection request message includes information identifying the subscriber (or information identifying the set top box associated with the subscriber). Video server manager 5 utilizes this identifying information to determine if the subscriber has access permission to view the requested program, and, if so, adds the subscriber to the multi-cast of the program.
 Pursuant to some embodiments, video server manager 5 may also selectively cause one or more advertisements or promotions to be transmitted to the subscriber. These advertisements or promotions may be selected based on information associated with the subscriber, information associated with the program requested by the subscriber, and/or information associated with the advertisement which was originally broadcast with the program. For example, if the subscriber is a 25 year-old male, and the subscriber submits a request to view a live broadcast of a sporting event, video server manager 5 may identify one or more advertisements which are targeted to the subscriber (because of the subscriber's demographics, the genre of the program requested, or a combination of both sets of information). For example, the beer commercial discussed above may be selected (because the subscriber's demographic information matches the target audience information associated with the beer commercial) for broadcast to the subscriber. Video server manager 5 may cause the selected advertisement (or advertisements) to be broadcast to the subscriber in conjunction with the broadcast of the program by causing the advertisement to be inserted at a location identified by EIT information extracted by SI processor 19 (shown in FIG. 3).
 Similar targeting may be performed in conjunction with the broadcast of programs from the short-term or longer-term archives. In this manner, embodiments allow accurate targeting of advertisements or promotions to subscribers based on information about the subscriber, information about the program, information about the advertisement or promotion, or a combination of this information. Further, in some embodiments, advertisements or promotions may be transmitted to subscribers in a way which prevents the subscriber from skipping or fast-forwarding through the advertisement. For example, advertisements may be transmitted as banner advertisements which are displayed along a top or bottom portion of a screen during a program.
 As another example, advertisements may be transmitted for display during a period in which the subscriber has paused playback of a program. As yet another example, advertisements may be transmitted for play at the beginning of a requested program, and must be viewed before the program is viewed. In this manner, advertisers may accurately target select audiences, reducing inefficiencies related to existing television advertising techniques.
 In some embodiments, when a subscriber views an archived program (e.g., from either the short-term or longer-term archives) some or all of the advertisements that were originally broadcast with the live broadcast of the program are replaced with one or more targeted advertisements which are specifically targeted to the subscriber.
 Embodiments of the present invention have been described in terms of several embodiments solely for the purpose of illustration. Persons skilled in the art will recognize from this description that the invention is not limited to the embodiments described, but may be practiced with modifications and alterations limited only by the spirit and scope of the appended claims. For example, while embodiments have been described with reference to the MPEG-2 standard, those skilled in the art will appreciate, upon reading this disclosure, that other encoding technologies may be utilized. For example, other standards currently used or may also be utilized (e.g., such as MPEG-4 and/or H.264, etc.).