CA2875845C - Method and system for efficient manifest manipulation - Google Patents
Method and system for efficient manifest manipulation Download PDFInfo
- Publication number
- CA2875845C CA2875845C CA2875845A CA2875845A CA2875845C CA 2875845 C CA2875845 C CA 2875845C CA 2875845 A CA2875845 A CA 2875845A CA 2875845 A CA2875845 A CA 2875845A CA 2875845 C CA2875845 C CA 2875845C
- Authority
- CA
- Canada
- Prior art keywords
- manifest
- advertisement
- session
- server
- segments
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0241—Advertisements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/258—Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
- H04N21/25866—Management of end-user data
- H04N21/25891—Management of end-user data being end-user preferences
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/262—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
- H04N21/26208—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints
- H04N21/26233—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints involving content or additional data duration or size, e.g. length of a movie, size of an executable file
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/44016—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for substituting a video clip
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/812—Monomedia components thereof involving advertisement data
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Marketing (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Game Theory and Decision Science (AREA)
- Computer Graphics (AREA)
- Economics (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
Description
FIELD OF THE INVENTION
[0001] The present invention relates generally to service provider video networks, and more particularly to a method and system for efficiently manipulating a session manifest when a length of an ad break pointed to by the manifest changes in length.
BACKGROUND OF THE INVENTION
[0002] Traditionally, programming of broadcast and cable television and radio, including content (i.e., the video or audio program) and (the placement of) ads in a video or audio signal stream, has followed a linear model. Programming may be linear in the sense that a program begins and is streamed and in progress when a user chooses to view entertainment content. Figure 1 illustrates a conventional linear or video-on-demand (VOD) model for advertisement placement. Entertainment content 2, when processed as a digital data stream over a cable network, may be divided into a number of time intervals.
The time intervals 4 include time reserved for a viewed program (content), such as "Golden Girls." The intervals 6, 8, 9, represent sections of time reserved for advertisements or "avails." These "avails" may be viewed as advertisement placement opportunities. As used herein, a "placement opportunity" was traditional called an avail and is sometimes referred to as a slot (into which a spot (e.g., an ad or content) is to be inserted). A placement opportunity (PO) is a construct that represents an opportunity to insert an advertisement or entertainment content, and defines the rules for that opportunity, such as its duration, interactivity, ownership, and technical constraints.
advertisement placement opportunities may appear based on space, time, content, and user context and may be highly non-linear (i.e., the user chooses to initiate the playing of content and in response, the content starts). All of the intervals 6, 8, 9 in such play lists are ripe for the insertion of advertisements, i.e., advertisement placement opportunities.
202a-202n (e.g., Internet ready televisions, radios, smartphones, tablets, PCs, etc.).
Apple, Microsoft, Adobe, etc., have very specific and incompatible formats. To overcome this problem, each of these companies has constructed facilities called content deliver networks (CDN) 204 where a "set top box" for each channel is configured to receive broadcasts from satellites. A signal received by a "set top box" from upstream devices 206 is fed to a transcoder 208 to place the signal in a desired format and to fragment the formatted signal into the predetermined (e.g., 2 second) segments of data.
These segments are then stored at the CDN 204 on server farms located physically close to where the content is to be delivered.
one or more of the segments) in the channel data stream (session).
One deficiency of conventional manifest manipulators is that it may be necessary for a manifest manipulator to maintain a very large number of manifests which need to be updated periodically (e.g., 10-30 seconds) for each subscriber. For some MSOs, the number of smart appliances 202a-202n may be in the thousands to hundreds of thousands.
In certain situations, some or all of the smart appliances 202a-202n may request manifests substantially simultaneously. Fortunately, alleviating factors include the number of people watching a given channel simultaneously and zoning.
is very, very low, so the load for VOD advertising is rather smooth because not all the smart appliances 202a-202n are typically synchronized. Unfortunately, an MSO may need to render ad decisions for each active session during session startup when a viewer clicks a remote to watch the VOD, even if there may an ad that may be placed an hour and a half into a data stream corresponding to an active session. If a show transmitted on one channel is very popular, (e.g., the Super Bowl), the problem of handling thousands of manifests resurfaces.
Manifests served to different smart appliances 202a-202n within a zone may become "unsynchronized." As discussed above, a manifest, which represents a playlist, may comprise a list of URLs pointing to a predetermined number of segments of streaming data corresponding to a fixed time interval (e.g., fifteen (15), two (2) second "chunks" for a total of a 30 second manifest). Referring now to Figure 3, a first manifest 302 representing a total of 30 second of advertising (adl) may comprise, for example 15 URLs 304a-304o (URL1.-URL15). In a particular zone, an MSO may swap the single 30 second ad (adl) for two (2), 15 second ads as shown in a second manifest 306 (ad2, ad3). Because the segments 308a-308p (URL1-URL16) are aligned on two second boundaries, the number of URLs increases by one to sixteen (URLl 6). Over time, manifest alignment may drift when ads are continuously swapped to change the total length of time of an ad break in either a negative direction or a positive direction as represented by the manifest.
Unfortunately, this may require processing power on the order of hundreds to thousands of threads of execution, translating to a need to maintain and operate a large number of multi-threaded computers.
Accordingly, what would be desirable, but has not yet been provided, is a method and system for efficiently manipulating a session manifest when a length of an ad break pointed to by the manifest changes in length.
SUMMARY OF THE INVENTION
manifest manipulator of a server receives from a smart appliance a request for a manifest corresponding to a session identifier. The manifest manipulator retrieves from a session server a session manifest based on the session identifier. The manifest manipulator adjusts a session offset based on a difference in a session length represented by the session manifest from a session length represented by a previous session manifest corresponding to the session. When the session manifest comprises an address of an ad break, the manifest manipulator identifies in a cache at least one advertisement to be inserted into the session and replaces at least one address corresponding to at least one segment of the at least one advertisement in the session manifest based on the difference. The manifest manipulator transmits the session manifest to the smart appliance.
BRIEF DESCRIPTION OF THE DRAWINGS
DETAILED DESCRIPTION OF THE INVENTION
permit both pre-configured advertisement decisions as well as real-time fulfillment models. An ADM implementation may incorporate some simple advertisement selection rules (e.g., advertisement rotations) but more complex advertisement decisions are the responsibility of an ADS.
The query service is available on an ad-hoc basis and may be called by any other logical service at any time without any prior registration. Queries specify values or patterns to be sought in the query message metadata and the specified matching information (or an error indication) is returned in a response message.
permits an Advertising Manager (ADM) and/or Advertisement Decision Service (ADS) to retrieve and utilize content metadata in their advanced advertising decision processing.
appliance, an Advertising Manager (ADM) and/or Advertisement Decision Service (ADS) can retrieve and utilize placement opportunity metadata in their advanced advertising decision making.
any other device able to process data. The computer/computer platform is configured to include one or more microprocessors communicatively connected to one or more non-transitory computer-readable media and one or more networks. The term "communicatively connected" is intended to include any type of connection, whether wired or wireless, in which data may be communicated. The term "communicatively connected" is intended to include, but not limited to, a connection between devices and/or programs within a single computer or between devices and/or separate computers over a network. The term "network" is intended to include, but not limited to, OTA
(over-the-air transmission, ATSC. DVB-T), packet-switched networks (TCP/IP, e.g., the Internet), satellite (microwave, MPEG transport stream or IP), direct broadcast satellite, analog cable transmission systems (RF), and digital video transmission systems (ATSC, HD-SDI, HDMI, DVI, VGA), etc.
video, audio, etc., in predetermined "chunks" or segments to the CDN 406 as described above.
The transcoder 422 is also configured to generate one or more manifests of a predetermined time length (e.g., 30 seconds) that comprises the addresses (e.g., URLs) of the segments of a signal stream to one or more downstream devices (normally the CDN 406) based on an address stored in the transcoder 422 during a registration process. In one embodiment, the registered downstream device is the server 402.
416 is further configured to insert the signal ID and the channel identifier into the rnetadata of the source signal stream using the appropriate in-band carriage format.
424 is configured to "confirm" unconfirmed placement opportunities by identifying temporal starting locations of the unconfirmed placement opportunities (i.e., including advertisement signal point(s)) relative to both the content stream and a wall clock. The POIS 424 is configured to return a globally unique value, a UUID, referred to as a signal identifier or signal ID that uniquely identifies a PO as a confirmed PO and its starting location within the end-to-end operational system. The POTS 424 then inserts the signal ID
and the channel identifier into other extracted metadata of the source signal stream using the appropriate in-band carriage format.
426 transmits the channel identifier to the session manager 428, which provides the ADM
426 with a list of client identities indicative of a number of active transport streams (e.g., a number of sessions) having the channel identifier, e.g., a list of recipient signal streams having the same channel identifier that are currently being "watched" by subscribers. The ADM 426 is also configured to obtain a plurality of advertisements corresponding to the list of all active sessions from one or more ADSs 404a-404n. The ADM 426 receives, from the ADSs 404a-404n, the plurality of advertisements targeted to the list representative of the plurality of active signal streams.
In the process, an observer 420, which may be include in transcoder 422, notes the presence of an SCTE-35 cue tone. In one embodiment, the indication that an advertisement placement opportunity is located in the signal stream is an instance of an SCTE-35 packet indicative of a cue tone. The cue tone also provides an indication that an advertisement placement opportunity is located in the signal stream a time period prior to an advertisement signal point in the signal stream. The observer 420 of the transcoder 422 then places a web call to the CIS 416 to inform the CIS 416 that the cue tone for a specific channel ID has been observed.
This confirmed signal point results in the generation of confirmed POs that are now ready for ad insertion.
extracting metadata including the channel identifier from the source signal stream. As used herein, the term "binding" refers to an identification of signals and content within a PO. PO's are frequently created for broad amounts of content that are not yet published (i.e., any show on TNT network in the evening).
[00711 In parallel, the POIS 424 initiates a workflow whereby the POIS
generates a set of confirmed placement opportunities in the source signal stream and fires a look-ahead decision trigger with the signal ID as the trigger data. The look-ahead decision trigger recipient is an instance of an SCTE 130 Ad Management Service, or the ADM 426 associated with the server 402.
[0072] At block 520, the ADM 426 of the server 402 identifies a representative of a number of recipient signal streams having the channel identifier prior to expiration of the time period. The list representative of a plurality of recipient signal streams having the channel identifier corresponds to the number of confirmed placement opportunities. To identify the list, the ADM 426 transmits the channel identifier to the session manager 428, which provides the ADM 426 with a list of session identifiers indicative of a number of recipients currently viewing a channel corresponding to the channel identifier.
[0073] At block 525, the ADM 426 of the server 402 obtains from one or more ADSs 404a-404n a plurality of advertisements corresponding to the list correlated to the session identifiers and the channel identifier. The ADM 426 receives from the ADSs 404a-404n, the plurality of advertisements corresponding to the list representative of the plurality of recipient signal streams having the channel identifier.
[0074] At block 530, the ADM 426 of the server 402 stores the obtained list of advertisements in at least one cache 412a-412n in the one or more ADSs 404a-404n.
While storing the list of advertisements in the least one cache 412a-412n, the associates unique signal IDs with each of the list of advertisements. Storing the obtained list of advertisement in the at least one cache 412a-412n may include transmitting the list of advertisements to at least one JAR (i.e., a Java archive) associated with the one or more clients 410a-410n. Since there may be thousands to millions of ads to be stored in the caches 412a-412n, in an embodiment, the ADM 426 divides the time interval from the reception of a cue tone to an expected arrival of the corresponding signal point in the source signal stream into a predetermined number of sub-time intervals and divides the number (i.e., the count) of received signal streams into a predetermined number of sub-signal streams. The predetermined number of sub-signal streams is distributed over the predetermined number of sub-time intervals to the caches 412a-412n associated with the clients 410a-410n.
[0075] At block 535, for each active session in .the list, the manifest manipulator 430 associates the original manifest with a channel identifier, a session identifier, and an initial offset of zero in a memory 432. In one embodiment, the memory 432 may be, for example, a static memory. The offset indicates the number of segments and corresponding URLs of a session manifest to be delivered to a smart appliance (e.g., 408a) deviates from the number of segment in a corresponding previous session manifest (see Figure 7).
[0076] At block 540, the manifest manipulator 430 derives and maintains in the static memory (see Figure 6) a plurality of stored manifests 602 having different offsets from the original manifest. In one embodiment, the statically stored manifests/and the corresponding number of segments per stored manifest may be numbered consecutively from a minimum expected negative value, through 0, to positive maximum expected value. As ads are retrieved and inserted into ad breaks, the value of the offset may change and an original or a non-original "previous" session manifest may be replaced (see Figure 7) depending on the length of one or more ads to be inserted into the ad break.
[0077] Figure 7 is a flow diagram illustrating an example of a method 700 for manipulating a manifest. The method 700 may be performed by a computer system 400 of Figure 4 and may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device), or a combination thereof. In one example, the method 700 is performed by the manifest manipulator 430 of the server 402 of Figure 4.
[0078] As shown in Figure 7, at block 705, the manifest manipulator 430 of the server 402 receives a request for a manifest corresponding to a session identifier from a smart appliance (e.g., 408a). At block 710, the manifest manipulator 430 identifies a session manifest from the session manager 432 and an offset based on the session identifier. The session manifest and current offset are identified as one of the stored manifests and offsets located in the static memory 432.
[0079] At block 715, the manifest manipulator 430 adjusts a session offset based on a difference in a session length represented by the session manifest from a session length represented by a previous session manifest stored in the memory 432 corresponding to the session. In one embodiment, based on the session identifier, the manifest manipulator 430 identifies a client (e.g., 404a) from which to obtain the length of time of at least one ad.
The manifest manipulator 430 adjusts the session offset based on the length of the retrieved at least one ad. The manifest manipulator 430 replaces the previously stored session offset in the memory 432 with the adjusted session offset.
[0080] At block 720, when the current manifest comprises an address of an ad break, the manifest manipulator 430 identifies in a cache (e.g. 412a) at least one advertisement to be inserted into the session and replaces at least one address corresponding to at least one segment of the at least one advertisement in the session manifest based on the difference.
The manifest manipulator 430 replaces the previous session manifest (which may be an original session manifest or another updated previous manifest) in the memory 432 with the updated session manifest.
[0081] At block 720, the manifest manipulator 430 transmits the updated session manifest to the smart appliance (e.g., 408a).
[0082] If the adjusted offset does not change because the total length of the ad break does not change, or if there is only content addressed by the current manifest, then the previously stored manifest is a copy of the cunent manifest. The previously stored manifest is a copy of another manifest different from the current manifest when the session offset change value. Further, when the smart appliance (e.g., 408a) tunes to another channel or terminates its session, the session offset is reset to zero. The method of Figure 7 is repeated whenever the transcoder 422 delivers a new original manifest as the transport stream progresses in time transmitted.
[0083] In an embodiment, when the session manifest comprises an address of an ad break, the server 402 may instruct a client (e.g., 410a) associated with an ad decision service (e.g., 404a) to splice the at least one advertisement from an associated cache (e.g., 412a) into the address of the ad break in the session based on the at least one replaced address of the session manifest. Instructing an ad decision service (e.g., 404a) to splice the at least one advertisement into the address of the ad break in the session may further comprise the server 402 transmitting, to the ad decision service (e.g., 404a), at least one ad call for the address of the ad break corresponding to the session identifier, receiving, from the ad decision service (e.g., 404a) at least one advertisement, and storing the at least one advertisement in the associated cache (e.g., 412a). Instructing an ad decision service (e.g., 404a) to splice the at least one ad into the address of the ad break in the session may further comprise, before splicing, the manifest manipulator 430 instructing the ad decision service (e.g., 404a) to retrieve the at least one advertisement from the associated cache (e.g., 412a).
[0084] Figure 8 illustrates a diagrammatic representation of a machine in the example form of a computer system 800 within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed. In some examples, the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the Internet. The machine may operate in the capacity of a server machine in client-server network environment. The machine may be a personal computer (PC), a set-top box (STB), a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term "machine" shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
[0085] The example computer system 800 includes a processing device (processor) 802, a main memory 804 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM)), a static memory 806 (e.g., flash memory, static random access memory (SRAM)), and a data storage device 816, which communicate with each other via a bus 808.
[0086] Processor 802 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processor 802 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. The processor 802 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The manifest manipulator 830 shown in Figure 4 may be executed by processor 802 configured to perform the operations and steps discussed herein.
[0087] The computer system 800 may further include a network interface device 822.
The computer system 800 also may include a video display unit 810 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 812 (e.g., a keyboard), a cursor control device 814 (e.g., a mouse), and a signal generation device 820 (e.g., a speaker).
[0088] A drive unit 816 may include a computer-readable medium 824 on which is stored one or more sets of instructions (e.g., instructions of the manifest manipulator 430) embodying any one or more of the methodologies or functions described herein.
The instructions of the manifest manipulator 430 may also reside, completely or at least partially, within the main memory 804 and/or within the processor 802 during execution thereof by the computer system 800, the main memory 804 and the processor 802 also constituting computer-readable media. The instructions of the manifest manipulator 430 may further be transmitted or received over a network via the network interface device 827.
[0089] While the computer-readable storage medium 824 is shown in an example to be a single medium, the term "computer-readable storage medium" should be taken to include a single non-transitory medium or multiple non-transitory media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term "computer-readable storage medium"
shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure. The term "computer-readable storage medium" shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
[0090] In the above description, numerous details are set forth. It is apparent, however, to one of ordinary skill in the art having the benefit of this disclosure, that examples of the disclosure may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the description.
[0091] Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
[0092] It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as "receiving", "writing", "maintaining", or the like, refer to the actions and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (e.g., electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
[0093] Examples of the disclosure also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions.
[0094] The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the required method steps.
Example structure for a variety of these systems appears from the description herein.
In addition, the present disclosure is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the disclosure as described herein.
[0095] It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other examples will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the disclosure should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
Claims (14)
storing, by a server, one or more manifests in a list of manifests in a memory, the one or more manifests differing in a number of segments corresponding to one or more advertisement breaks of different lengths;
receiving, by the server from a smart appliance, a request for a manifest having a first length of an advertisement break corresponding to a first number of segments corresponding to the advertisement break;
searching, by the server, for a manifest having a matching length to the first length of the advertisement break and having a matching number of segments to the first number of segments corresponding to the advertisement break in a list of one or more manifests stored in the memory;
when the server identifies a manifest in the list of the one or more manifests stored in the memory having the matching length to the first length of the advertisement break and having the matching number of segments to the first number of segments corresponding to the advertisement break, retrieving, by the server, the identified manifest from the list of one or more manifests stored in the memory;
identifying, by the server, at least one advertisement to be inserted into an advertisement break of the identified manifest and replacing one or more addresses of segments in the identified manifest with one or more corresponding addresses of the at least one advertisement;
and transmitting, by the server, the identified manifest to the smart appliance;
and when the server does not identify a manifest in the list of the one or more manifests stored in the memory having the matching length to the first length of the advertisement break and having the matching number of segments to the first number of segments corresponding to the advertisement break, generating, by the server, a manifest having the matching length to the first length of the advertisement break and having the matching number of segments to the first number of segments corresponding to the advertisement break;
inserting, by the server, the generated manifest in the list of the one or more manifests stored in the memory;
identifying, by the server, at least one advertisement to be inserted into an advertisement break of the generated manifest and replacing one or more addresses of segments in the generated manifest with one or more corresponding addresses of the at least one advertisement;
and transmitting, by the server, the generated manifest to the smart appliance.
transmitting, to the advertisement decision service using the server, at least one advertisement call for an address of the advertisement break corresponding to a session identifier;
receiving, from the advertisement decision service at the server, at least one advertisement; and storing, using the server, the at least one advertisement in at least one cache.
a processor; and a memory storing instructions that, when executed by the processor, cause the apparatus to perform the method of any one of claims 1 to 12.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2013/039275 WO2014178872A2 (en) | 2013-05-02 | 2013-05-02 | Method and system for efficient manifest manipulation |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CA2875845A1 CA2875845A1 (en) | 2014-11-06 |
| CA2875845C true CA2875845C (en) | 2020-08-25 |
Family
ID=51844079
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CA2875845A Active CA2875845C (en) | 2013-05-02 | 2013-05-02 | Method and system for efficient manifest manipulation |
Country Status (5)
| Country | Link |
|---|---|
| EP (1) | EP2883201A4 (en) |
| BR (1) | BR112014029971B1 (en) |
| CA (1) | CA2875845C (en) |
| MX (1) | MX359563B (en) |
| WO (1) | WO2014178872A2 (en) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2018121865A1 (en) * | 2016-12-29 | 2018-07-05 | Telefonaktiebolaget Lm Ericsson (Publ) | Handling of video segments in a video stream |
| US10887799B2 (en) * | 2019-01-10 | 2021-01-05 | Cisco Technology, Inc. | SRv6 user-plane-based triggering methods and apparatus for session or flow migration in mobile networks |
| CN112488762B (en) * | 2020-11-30 | 2024-06-28 | 维沃移动通信有限公司 | Method, device, equipment and readable storage medium for processing advertising resources |
| NL2035970B1 (en) * | 2023-10-06 | 2025-04-11 | Liberty Global Europe Holding B V | Load balancing content delivery over linear ip |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8949882B2 (en) * | 2007-12-06 | 2015-02-03 | This Technology, Inc. | System and method for enabling content providers to identify advertising opportunities |
| US8914824B2 (en) | 2009-01-07 | 2014-12-16 | Microsoft Corporation | Video ad delivery using configurable video ad policies |
| JP5497919B2 (en) | 2010-03-05 | 2014-05-21 | サムスン エレクトロニクス カンパニー リミテッド | File format-based adaptive stream generation and playback method and apparatus and recording medium therefor |
| AU2010202741B1 (en) * | 2010-06-30 | 2010-12-23 | Adeia Media Holdings Llc | Dynamic chunking for media streaming |
| US9319448B2 (en) * | 2010-08-10 | 2016-04-19 | Qualcomm Incorporated | Trick modes for network streaming of coded multimedia data |
| KR20120060134A (en) | 2010-08-16 | 2012-06-11 | 삼성전자주식회사 | Method and apparatus for reproducing advertisement |
| US8677428B2 (en) | 2010-08-20 | 2014-03-18 | Disney Enterprises, Inc. | System and method for rule based dynamic server side streaming manifest files |
| US20120198492A1 (en) * | 2011-01-31 | 2012-08-02 | Cbs Interactive, Inc. | Stitching Advertisements Into A Manifest File For Streaming Video |
| US8234350B1 (en) * | 2011-12-19 | 2012-07-31 | Seachange International, Inc. | Systems and methods for generating targeted manifest files |
-
2013
- 2013-05-02 MX MX2014015107A patent/MX359563B/en active IP Right Grant
- 2013-05-02 BR BR112014029971-4A patent/BR112014029971B1/en not_active IP Right Cessation
- 2013-05-02 WO PCT/US2013/039275 patent/WO2014178872A2/en not_active Ceased
- 2013-05-02 EP EP13883523.6A patent/EP2883201A4/en not_active Withdrawn
- 2013-05-02 CA CA2875845A patent/CA2875845C/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| BR112014029971B1 (en) | 2022-08-09 |
| WO2014178872A2 (en) | 2014-11-06 |
| BR112014029971A8 (en) | 2021-05-25 |
| CA2875845A1 (en) | 2014-11-06 |
| EP2883201A2 (en) | 2015-06-17 |
| WO2014178872A3 (en) | 2015-04-02 |
| EP2883201A4 (en) | 2016-03-09 |
| MX2014015107A (en) | 2015-08-06 |
| MX359563B (en) | 2018-10-01 |
| BR112014029971A2 (en) | 2017-06-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8799943B1 (en) | Method and system for efficient manifest manipulation | |
| US10038925B2 (en) | Server side adaptive bit rate reporting | |
| US8863164B1 (en) | Server side adaptive bit rate reporting | |
| EP2839638B1 (en) | Accelerating advertising decision resolution | |
| US20130291014A1 (en) | Method and system for uniformly marking and identifying placement opportunity locations for facilitating accelerated decision resolution | |
| EP2845387B1 (en) | Method for ingesting multiple signals of the same meaning | |
| CA2875845C (en) | Method and system for efficient manifest manipulation | |
| US20240147019A1 (en) | In-Band Trick Mode Control |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| EEER | Examination request |
Effective date: 20180501 |
|
| MPN | Maintenance fee for patent paid |
Free format text: FEE DESCRIPTION TEXT: MF (PATENT, 12TH ANNIV.) - STANDARD Year of fee payment: 12 |
|
| U00 | Fee paid |
Free format text: ST27 STATUS EVENT CODE: A-4-4-U10-U00-U101 (AS PROVIDED BY THE NATIONAL OFFICE); EVENT TEXT: MAINTENANCE REQUEST RECEIVED Effective date: 20250425 |
|
| U11 | Full renewal or maintenance fee paid |
Free format text: ST27 STATUS EVENT CODE: A-4-4-U10-U11-U102 (AS PROVIDED BY THE NATIONAL OFFICE); EVENT TEXT: MAINTENANCE FEE PAYMENT PAID IN FULL Effective date: 20250425 |