# Patent

## Title
Real-time transport protocol ad cue extensions

## Abstract

A method, system, and apparatus are provided for delivery and synchronization of an ad to a user of a streaming media. An embodiment uses a Real-time Transport Protocol header extension to provide an ad cue to a splicer for the delivery of an ad within the primary media stream (the stream containing the header extension) or in an ancillary stream. An existing ancillary stream my be used, or a new ancillary stream may be initiated in response to the ad cue. The ad may have a variety of formats such as takeover, overlay, standard banner, and rich media.

## Background
SUMMARY
The present invention is defined by the claims below. Embodiments of the present invention provide a system, method and apparatus for delivery and synchronization of an ad to a user of a primary media stream, either within streaming media or external to the streaming media.
In an embodiment of the present invention, the primary media stream contains a Real-time Transport Protocol header extension in a Real-time Transport Protocol. The header extension defines a cue point at which the ad is to be delivered to the user. The primary media stream is received by a splicer, which transmits the primary media stream to the user. The splicer interprets the ad cue defined by the header extension, and transmits the ad to the user either within the primary media stream or in a secondary media stream, based on the information in the ad cue.



BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
Illustrative embodiments of the present invention are described in detail below with reference to the attached drawing figures, which are incorporated by reference herein and wherein:
FIG. 1 is a block diagram of an exemplary system suitable for use in implementing embodiments of the present invention;
FIG. 2 depicts block diagrams illustrative of various ad formats suitable for use in implementing embodiments of the present invention;
FIG. 3 is a block diagram illustrative of an exemplary splicer suitable for use in implementing embodiments of the present invention;
FIG. 4 is a flowchart illustrative of an exemplary method suitable for use in implementing embodiments of the present invention; and
FIG. 5 is a block diagram illustrative of an exemplary protocol header extension format suitable for use in implementing embodiments of the present invention.



DETAILED DESCRIPTION
Embodiments of the present invention provide systems, methods and apparatuses for ad cues in streaming media. This is analogous to digital programming insertion in cable television broadcasting. A description of digital programming insertion may be found in specifications ANSI/SCTE 35 2004 Digital Program Insertion Cueing Message for Cable by the Society of Cable Telecommunications Engineers, Inc. of Exton, Pa. and ANSI/SCTE 30 2006 Digital Program Insertion Splicing API by the Society of Cable Telecommunications Engineers, Inc. of Exton, Pa., which are incorporated herein by reference. Embodiments of the present invention extend ad cues to enable the delivery and synchronization of an ad to a user within a streaming media and also external to the streaming media, in multiple formats and from multiple sources by means of an ad cue implemented as a Real-time Transport Protocol (RTP) header extension in an RTP media stream. It will be apparent to one skilled in the art that embodiments of the invention are not limited to RTP and may use any communication protocol suitable for delivering media over an Internet Protocol (IP) network.
Acronyms and Shorthand Notations
Throughout the description of the present invention, several acronyms and shorthand notations are used to aid the understanding of certain concepts pertaining to the associated system and services. These acronyms and shorthand notations are solely intended for the purpose of providing an easy methodology of communicating the ideas expressed herein and are in no way meant to limit the scope of the present invention. The following is a list of these acronyms:













ANSI
American National Standards Institute


CD-ROM
Compact Disc read-only memory


DVD
Digital Versatile Disc


EEPROM
Electrically Erasable Programmable Read-Only Memory


HTTP
Hypertext Transfer Protocol


IP
Internet Protocol


IPTV
Internet Protocol Television


RAM
Random Access Memory


ROM
Read Only Memory


RTP
Real-time Transport Protocol


SCTE
Society of Cable Telecommunications Engineers


SLA
Service Level Agreement


TCP/IP
Society of Cable Telecommunications Engineers









Further, various technical terms are used throughout this description. An illustrative resource that fleshes out various aspects of these terms can be found in Newton's Telecom Dictionary by H. Newton, 22nd Edition (2006).
As one skilled in the art will appreciate, embodiments of the present invention may be embodied as, among other things: a method, system, or computer-program product. Accordingly, the embodiments may take the form of a hardware embodiment, a software embodiment, or an embodiment combining software and hardware. In one embodiment, the present invention takes the form of a computer-program product that includes computer-useable instructions embodied on one or more computer-readable media.
Computer-readable media include both volatile and nonvolatile media, removable and nonremovable media, and contemplates media readable by a database, a switch, and various other network devices. By way of example, and not limitation, computer-readable media comprise media implemented in any method or technology for storing information. Examples of stored information include computer-useable instructions, data structures, program modules, and other data representations. Media examples include, but are not limited to information-delivery media, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile discs (DVD), holographic media or other optical disc storage, magnetic cassettes, magnetic tape, magnetic disk storage, and other magnetic storage devices. These technologies can store data momentarily, temporarily, or permanently.
The particular embodiments herein are intended in all respects to be illustrative rather than restrictive. Alternative embodiments will become apparent to those skilled in the art to which the present invention pertains without departing from its scope.
In traditional television broadcasting, an insertion point for a local ad is indicated to a local broadcaster by means of cue tones. A cue tone indicates the point at which a video ad may be inserted into the broadcast video. As with traditional television broadcasting, it is desirable in Internet Protocol Television (IPTV) broadcasting to deliver an ad to a user, but in a variety of formats.
RTP provides a means for delivering audio and video data over an Internet Protocol network. The RTP specification provides for user-defined header extensions that may contain other types of information. Embodiments of the present invention provide apparatuses, systems and methods for using an RTP header extension to indicate a cue point, in IPTV broadcasting, for an ad in any of a variety of formats. Unlike a traditional cue point, which defines an ad insertion point in a primary media stream, embodiments of the present invention provide a cue point that indicates the delivery of an ad to a user within the primary media stream, within an ancillary stream, or from other sources (such as an exemplary HTTP connection) accessed by a media player. One skilled in the art will recognize that protocols other than RTP may be used in implementing embodiments of the present invention.
Referring to the drawings in general, and initially to FIG. 1 in particular, an exemplary system suitable for use in implementing embodiments of RTP ad cue extensions is shown and designated generally as ad cue system 100. Ad cue system 100 is but one example of a suitable ad cue system and is not intended to suggest any limitation as to scope of use or functionality. Neither should the ad cue system 100 be interpreted as having any dependency or requirement relating to any one or combination of components or modules illustrated. It will be appreciated by one skilled in the art that protocols other than RTP may be used in implementing ad cue system 100 and other systems that are embodiments of the present invention.
Ad cue system 100 is an exemplary system for using RTP ad cue extensions to deliver an ad, in a variety of formats, to a user of streaming media. With continued reference to FIG. 1, ad cue system 100 comprises a splicer 105 configured to: receive programming in primary media stream 110 containing an RTP ad cue extension 115, transmit programming in primary media stream 120 with an ad 125 inserted into it, and transmit an ad 130 in a secondary media stream 135. The programming and ads are transmitted to a user 140. User 140 may be a computing device capable of at least receiving the streaming media and the ad. The computing device may also present the media and the ad to a viewer or listener.
In the present embodiment, the streaming media is carried in RTP format, with RTP header extensions (ad cue extensions) indicating ad cue points. The splicer will deliver ads to the user as directed by the information contained in the ad cue points, with specified timing and ad format. Exemplary formats may include, but are not limited to, overlay, takeover, rich media, and standard banner.
Exemplary ad formats suitable for use in implementing embodiments of RTP ad cue extensions are shown in FIG. 2 and are designated generally as ad formats 205, 225, and 245. Ad formats 205, 225, and 245 are but examples of suitable ad formats and are not intended to suggest any limitation as to scope of use or functionality. Neither should the ad formats 205, 225, and 245 be interpreted as having any dependency or requirement relating to any one or combination of components or modules illustrated. One skilled in the art will recognize that protocols other than RTP may be used in implementing ad cue extensions for the exemplary ad formats illustrated in FIG. 2 as well as other suitable ad formats.
FIG. 2A illustrates an exemplary takeover ad 210, which is inserted into the video stream in such a way that the video 215 is paused while the ad 210 is displayed, and the video 215 resumes once the ad 210 completes. FIG. 2B illustrates exemplary overlay ads 230 and 235, showing how they are displayed with respect to the video 240. Overlay ads 230 and 235 are also inserted into the video stream, but are displayed along with the video 240. They are transparent and may be positioned anywhere on the displayed video 240. FIG. 2C illustrates exemplary ads that are external to the video stream. An exemplary standard banner ad 250 is displayed separately from the video 255. The standard banner ad 250 may also be a sync ad, i.e., an ad that is relevant to the video being played. An exemplary rich media ad 260 is also displayed separately from the video. Rich media ads typically use various formats such as audio, video, animation, and interaction with the user.
While takeover ads and overlay ads are inserted into the primary media stream, an external ad is transmitted either in an existing media stream other than the primary media stream, or a new stream may be initiated in which to transmit the ad. Alternatively, the splicer may direct the media player to retrieve the ad from another web source.
Referring now to FIG. 3, an exemplary apparatus suitable for use in implementing embodiments of RTP ad cue extensions is depicted, designated generally as splicer 300. The splicer 300 is but one example of a suitable splicer and is not intended to suggest any limitation as to scope of use or functionality. Neither should the splicer 300 be interpreted as having any dependency or requirement relating to any one or combination of components or modules illustrated. It will be apparent to one skilled in the art that protocols other than RTP may be used in implementing the splicer 300 and other apparatuses suitable for use in embodiments of the present invention.
By way of background, a traditional splicer is a device for inserting programming or ads into broadcast programming such as in cable television. A splicer typically is used by a broadcast affiliate to insert local ads or programming into regionally broadcast programming. The broadcast programming is received on a primary channel of the splicer, and ads or other programming to be inserted are received on an insertion channel. An upcoming insertion point in the broadcast programming is indicated to the splicer by some means, such as a cue embedded in the broadcast programming. The splicer requests an ad from an ad server, which then sends the ad to the splicer over the insertion channel. The ad is inserted by the splicer into the media stream at the insertion point. Splicer operation for broadcast cable programming is more fully addressed in the aforementioned references ANSI/SCTE 35 2004 and ANSI/SCTE 30 2006.
With continued reference to FIG. 3, the splicer 300 includes a processor module 305, a memory module 310, a primary input module 315, an ad input module 320, a primary output module 325, and a secondary output module 330. The primary input module 315 receives streaming media formatted in RTP or other suitable protocol. Ad cues contained in header extensions in the stream are decoded by the splicer to determine the type of ad to be delivered and the timing of the ad. An ad is received by the ad input module 320. Depending on the ad type indicated by the ad cue, the ad may be inserted into the streaming media and transmitted by the primary output module, or the ad may be transmitted by the secondary output module. The secondary output module may make use of a preexisting media stream or initiate a new media stream.
FIG. 4 depicts an exemplary method suitable for use in implementing embodiments of RTP ad cue extensions and is generally designated as ad cue method 400. The ad cue method 400 is but one example of a suitable ad cue method and is not intended to suggest any limitation as to scope of use or functionality. Neither should the ad cue method 400 be interpreted as having any dependency or requirement relating to any one or combination of components or modules illustrated. One skilled in the art will recognize that protocols other than RTP may be used in implementing the ad cue method 400 and other methods that are embodiments of the present invention.
With continued reference to FIG. 4, at step 405 an RTP header extension, in which an ad cue is encoded, is transmitted in a media stream formatted with RTP or other suitable protocol. The media stream is received by a splicer, and the cue point is identified at step 410 for an ad to be inserted into the media stream or transmitted in a secondary media stream. Identifying a cue point may consist of recognizing the RTP header extension and decoding the bits within that header extension that specify the type of ad to be delivered and the associated timing information. A media stream is selected, at step 415, based on the type of ad designated by the ad cue. The ad is inserted into the selected stream at step 420 and delivered to the user at step 425. Delivering the ad to the user may be, but is not limited to, transmitting the ad to a media player or other computing device.
An exemplary RTP header extension format suitable for use in implementing embodiments of RTP ad cue extensions is shown in FIG. 5 and is generally designated as header extension format 500. The header extension format 500 is but one example of a suitable header extension format and is not intended to suggest any limitation as to scope of use or functionality. Neither should the header extension format 500 be interpreted as having any dependency or requirement relating to any one or combination of components or modules illustrated. In other embodiments, some data fields may be omitted or other data fields may be defined. It will be appreciated by one skilled in the art that protocols other than RTP may be used in implementing the header extension format 500 and other protocol formats that are embodiments of the present invention.
With continued reference to FIG. 5, the top row 505 of header extension format 500 is not part of the data in the header extension, it merely serves to designate the bit positions of the exemplary data fields in the header extension. Other embodiments may define these or other data fields in other bit positions and formats.
The TAG field 510 is an exemplary 4-bit label, defined by the user, identifying the header extension. The value of the TAG field 510 does not affect the ad cue, other than identifying it to whatever system, method or apparatus is making use of the ad cue.
The LENGTH field 515 is an exemplary 4-bit value indicating the length of the header extension in 32-bit words, exclusive of the first 32-bit word of the header extension. In this embodiment, the value of the LENGTH field 515 is one, or a binary value of 0001, because the header extension is defined as having a total of 64 bits. Other embodiments may be defined such that the LENGTH field 515 takes on other values.
The TYPE field 520 is an exemplary 2-bit field indicating the type of the ad cue. In this embodiment, the bit definitions, in binary format, for the TYPE field 520 are as follows: a value of 00 indicates a Splice In point, which signifies that an ad is to begin at the designated point in the media stream; a value of 01 indicates a Splice Out point, which signifies that an ad is to end at the designated point; a value of 10 indicates an Informational ad cue, which may convey other information about an ad cue not defined in this embodiment; and a value of 11 is reserved for purposes not defined in this embodiment.
The AD TYPE MASK field 525 is an exemplary 4-bit field indicating the type of ad or ads allowable in response to the ad cue. Each bit represents a different ad type: bit 0—Overlay; bit 1—Takeover; bit 2—Rich Media; and bit 3—Standard Banner. Any combination of these ad types may be specified in the AD TYPE MASK field 525.
The LIMIT field 530 is an exemplary 4-bit field indicating the maximum number of ads that may be played in response to the ad cue. It should be noted that, in the embodiment in FIG. 5, the LIMIT field 530 appears to be two separate fields, however, the field wraps around from one line to the next as displayed in the figure. The four bits of the field are actually contiguous.
The DURATION field 535 is an exemplary 16-bit field indicating the maximum duration, in seconds, of the ad or ads to be played in response to the ad cue. As with the LIMIT field 530, it should be noted that, in the embodiment in FIG. 5, the DURATION field 535 appears to be two separate fields, however, the field wraps around from one line to the next as displayed in the figure. The 16 bits of the field are actually contiguous.
The SIB field 540 is an exemplary 2-bit field indicating the Stream Insertion Behavior associated with delivery of the ad in response to the ad cue. A binary value of 00 indicates Do Nothing, signifying that the ad is not to be inserted into the primary stream (the stream containing the RTP header extension) but will be delivered by another means, such as a Standard Banner ad delivered to the user via HTTP; a binary value of 01 indicates Splice Over Content, signifying that the ad will be inserted into the primary media stream; a binary value of 10 indicates Treat as Playlist, signifying that ads will be played sequentially from a predetermined list; and a binary value of 11 is reserved for purposes not defined in this embodiment.
The SPLICE IN SEQUENCE OFFSET field 545 is an exemplary 12-bit field indicating the offset position, in number of RTP packets, of the splice in point (the point at which the ad will begin), with respect to the current RTP sequence number.
The SPLICE OUT SEQUENCE OFFSET field 550 is an exemplary 16-bit field indicating the offset position, in number of RTP packets, of the splice out point (the point at which the ad will end), with respect to the current RTP sequence number.
Many different arrangements of the various components depicted, as well as components not shown, are possible without departing from the spirit and scope of the present invention. Embodiments of the present invention have been described with the intent to be illustrative rather than restrictive. Alternative embodiments will become apparent to those skilled in the art that do not depart from its scope. A skilled artisan may develop alternative means of implementing the aforementioned improvements without departing from the scope of the present invention.
It will be understood that certain features and subcombinations are of utility and may be employed without reference to other features and subcombinations and are contemplated within the scope of the claims. Not all steps listed in the various figures need be carried out in the specific order described.

## Claims

1. A method for delivering an ad to a user of a primary media stream, the method comprising:
transmitting at least one of a video and an audio within a Real-time Transport Protocol;
transmitting a Real-time Transport Protocol header extension as part of the Real-Time Transport Protocol in the primary media stream;
encoding at least a group of one or more bits within the Real-time Transport Protocol header extension to specify at least one of a group of a starting point and an ending point of the ad, with respect to a point in the primary media stream;
identifying a cue point, defined in the Real-time Transport Protocol header extension, for an ad to be inserted into at least one of the primary media stream or one or more secondary media streams, wherein the Real-time Transport Protocol header extension includes an ad-type field that indicates a type of ad format that is allowable in response to the cue point, and wherein identifying the cue point comprises decoding a group of timing bits in the Real-time Transport Protocol header extension to determine a delivery time of the ad with respect to a content of the primary stream;
selecting the at least one of the primary media stream or the one or more secondary media streams based on information in the Real-time Transport Protocol header extension;
selecting the ad based at least on the type of ad format that is allowable;
inserting the ad by way of a splicer at the cue point in the selected at least one of the primary media stream the one or more secondary media streams; and
delivering the ad to the user.

2. The method of claim 1, further comprising initiating a member of the one or more secondary media streams in response to the cue point in the Real-time Transport Protocol header extension.

3. The method of claim 2, wherein the primary media stream and the one or more secondary media streams are selected from a group including unicast streams and multicast streams.

4. A system for delivering an ad to a user of a primary media stream, the system comprising:
the primary media stream connected to a splicer;
a Real-time Transport Protocol header extension in a Real-time Transport Protocol within the primary media stream, wherein the Real-time Transport Protocol header extension defines at least a cue point at which the ad is to be delivered to the user, wherein the Real-time Transport Protocol header includes one or more fields that define aspects of the cue point, wherein the one or more fields include an ad-type field indicating a type of ad format that is allowable in response to the cue point, and wherein within the Real-time Transport Protocol header extension is encoded at least a group of one or more bits to specify at least one of a group of a starting point and an ending point of the ad, with respect to a point in the primary media stream;
a media presentation device operable to:
(A) receive at least one of the primary media stream or one or more secondary media streams,
(B) retrieve the ad from an external source other than the primary media stream and the one or more secondary media streams at the direction of a splicer, and
(C) present to the user at least one of the primary media stream, the one or more secondary media streams, or the ad from the external source;

the splicer operable to:
(A) receive at least the primary media stream,
(B) identify the cue point, wherein identifying the cue point includes decoding a group of timing bits in the Real-time Transport Protocol header extension to determine a delivery time of the ad with respect to a content of the primary stream;
(C) transmit at least the primary media stream to the user, transmit the ad having the type of ad format that is allowable to the user in at least one of the primary media stream or the one or more secondary media streams based on information in the Real-time Transport Protocol header extension, and
(D) direct the media presentation device to retrieve the ad from the external source.

5. The system of claim 4, wherein the primary media stream comprises at least one of a video and an audio.

6. The system of claim 5, wherein the secondary media stream is initiated in response to the cue point in the Real-time Transport Protocol header extension.

7. The system of claim 6, wherein the primary media stream and the one or more secondary media streams are selected from a group including unicast streams and multicast streams.

8. An apparatus for delivering an ad to a user of a primary media stream, the apparatus comprising:
a splicer having a processor and a memory, the splicer connected to at least a primary input channel, an ad input channel, a primary output channel, and one or more secondary output channels; and
the splicer operable to:
receive the primary media stream over the primary input channel, the primary media stream having, within a Real-time Transport Protocol, a Real-time Transport Protocol header extension that defines at least an ad cue point, wherein within the Real-time Transport Protocol header extension is encoded at least a group of one or more bits that specify at least one of a group of a starting point and an ending point of the ad, with respect to a point in the primary media stream,
interpret one or more fields within the header extension that define aspects of the ad cue point, wherein an ad-type field indicates a type of ad format that is allowable in response to the ad cue point, and a limit field indicates a maximum number of ads that may be played in response to the ad cue point, and wherein interpreting one or more fields that define aspects of the ad cue point includes decoding a group of timing bits in the Real-time Transport Protocol header extension to determine a delivery time of the ad with respect to a content of the primary stream;
transmit the primary media stream over the primary output channel,
transmit at least one or more secondary media streams over the one or more secondary output channels,
receive the ad over the ad input channel, and
transmit the ad at the ad cue point in at least one of the primary media stream and the one or more secondary media streams, based on information in the Real-time Transport Protocol header extension.

9. The apparatus of claim 8, wherein a member of the one or more secondary media streams is initiated in response to the cue point in the Real-time Transport Protocol header extension.

10. The apparatus of claim 9, wherein the primary media stream and the one or more secondary media streams are selected from a group including unicast streams and multicast streams.

11. The apparatus of claim 10, wherein at least one of the primary media stream and the one or more secondary media streams is received by a computing device operable to present the at least one of the primary media stream and the one or more secondary media streams to the user.

12. The apparatus of claim 11, wherein the splicer is further operable to direct the computing device to retrieve the ad from an external source; and
wherein the computing device is further operable to retrieve the ad from an external source at the direction of the splicer.