Abstract: A method and a system for streaming content with targeted content are disclosed. The method includes determining the targeted content for a content viewer. The targeted content includes at least targeted content segments. The method further includes determining one or more positions for inserting the targeted content segments in between encoded content segments corresponding to the content while transmitting the content to an electronic device based on a targeted content marker data. Further, the method includes determining a first count value and second count value via a counter. Further, the method includes adapting the first count value and the second count value to indicate the segment to be fetched next for transmission to the electronic device. Further, the method includes updating a manifest is updated based on the adapted first count value and the adapted second count value.
DESC:
FORM 2
THE PATENTS ACT 1970
(39 of 1970)
&
The Patent Rules 2003
COMPLETE SPECIFICATION
(refer section 10 & rule 13)
1. TITLE OF THE INVENTION:
METHOD AND SYSTEM FOR FACILITATING STREAMING OF CONTENT WITH TARGETED CONTENT TO CONTENT VIEWERS
2. APPLICANT(S):
(a) Name:
(b) Nationality:
(c) Address:
Novi Digital Entertainment Private Limited
Indian
Star House, Urmi Estate, 95 Ganpatrao Kadam Marg, Lower Parel (W) Mumbai 400 013, Maharashtra, India
3. PREAMBLE TO THE DESCRIPTION
The following specification particularly describes the invention and the manner in which it is to be performed.
4. DESCRIPTION
(See next page)
METHOD AND SYSTEM FOR FACILITATING STREAMING OF CONTENT WITH TARGETED CONTENT TO CONTENT VIEWERS
TECHNICAL FIELD
[0001] The present technology generally relates to the delivery of digital content such as streaming content to content viewers and, more particularly, to a method and system for facilitating the streaming of content with targeted content to content viewers.
BACKGROUND
[0002] Viewership of digital content has gained popularity in recent times and viewers are increasingly using a variety of electronic devices to view content such as movies, web-series, live sport matches, and the like. The digital content can be streamed on-demand or live-streamed from an event site. Such streaming content is accessed on electronic devices using Over-The-Top (OTT) media services (i.e., over the Internet). The OTT streaming content providers typically offer several subscription levels such as a regular subscription or a premium subscription to the content subscribers for providing access to the library of streaming content. In addition to the subscription fees, targeted content provides the content provider with the ability to promote other content as well such as through advertisements inserted in-between content segments. To that end, the advertisements, hereinafter referred to as ‘Ads’, serve as a medium to market an enterprise offering, such as a product or a service, to the viewers of the content being streamed by the OTT streaming content provider. The targeted content may be inserted in-between content segments of the streaming content prior to the encoding of the content, or subsequent to the encoding of the content. If the targeted content is inserted prior to encoding the streaming content, then it may be difficult to personalize the targeted content as very little information is known about the end-user at the content encoding stage.
[0003] Accordingly, a Server Side Ad Insertion (SSAI) server typically inserts Ads post-encoding of the streaming content, i.e., targeted content is included within encoded content segments of the streaming content in real-time. In an example, the targeted content includes Ads, which are personalized or relevant for an end-user segment or specifically for a consumer of the content. The streaming content with the personalized Ads is then delivered to the content viewers. The post-encoding insertion of Ads, though serving the purpose of increasing the efficacy of Ads, is associated with several challenges. In one illustrative example, since the Ads are of varying durations, it is difficult to keep a track of which content segment to stream after the Ad has played out, as the Ad length may vary from one Ad to another. Other challenges include inconsistent Ad length, a scenario where multiple Ads may be shown to the viewer, a scenario where fillers have to be added to an Ad with inconsistent length to make them consistent, a scenario where Ads are crashed while they are being played to bring the viewer back to the streaming content, and the like. Further, if a network or a bandwidth issue has caused the content viewer’s device to request a content stream at a different resolution, then the tracking of content segments is even more cumbersome. The failure to track the content segments of the content being streamed to the content viewer may cause the same content segment to be streamed again or a content segment to be missed altogether. In some cases, mixing the order of content segments being streamed may degrade the viewing experience of the content viewer.
[0004] Accordingly, there is a need to overcome the aforementioned drawbacks caused by the real-time insertion of personalized and/or targeted content in the streaming content for content viewers. Further, there is a need to ensure that content segments of the content being streamed to the content viewers are delivered in the correct sequence without any error to enable an enjoyable viewing experience for the content viewers.
SUMMARY
[0005] Various embodiments of the present disclosure provide methods and systems for streaming content with targeted content electronic devices of subscribers.
[0006] In an embodiment of the invention, a computer-implemented method for streaming content with targeted content on an electronic device of a subscriber is disclosed. The computer-implemented method performed by a system includes determining the targeted content for the content viewer, the targeted content including at least targeted content segments. Further, the method includes determining one or more positions for inserting the targeted content segments in between encoded content segments corresponding to the content while transmitting the content to the electronic device based, at least in part, on targeted content marker data. Further, the method includes determining via a counter, a first count value, and a second count value. The first count value indicates that a segment from the encoded content segments is to be transmitted next. The second count value indicates the number of targeted content segments that replace the encoded content segments. Further, the method includes adapting the first count value and the second count value to indicate the segment to be fetched next for transmission to the electronic device. Further, the method includes updating the manifest for a Content Delivery Network (CDN) based, at least in part, on the adapted first count value and the adapted second count value.
[0007] In another embodiment of the invention, a system for streaming content with targeted content on an electronic device of a subscriber is disclosed. The system includes memory and a processor. The memory stores instructions which are executed by the processor and causes the system to determine the targeted content for the content viewer, the targeted content including at least targeted content segments. Further, the system determines one or more positions for inserting the targeted content segments in between encoded content segments corresponding to the content while transmitting the content to the electronic device based, at least in part, on a targeted content marker data. Further, the system determines via a counter, a first count value, and a second count value. The first count value indicates that a segment from the encoded content segments is to be transmitted next. The second count value indicates the number of targeted content segments that replace the encoded content segments. Further, the system adapts the first count value and the second count value to indicate the segment to be fetched next for transmission to the electronic device. Further, the system updates a manifest for a Content Delivery Network (CDN) based, at least in part, on the adapted first count value and the adapted second count value.
[0008] In yet another embodiment of the invention, a non-transitory computer-readable storage medium is disclosed. The non-transitory computer-readable storage medium includes computer-executable instructions that, when executed by at least a processor of a system, cause the system to perform a method. The method includes determining a targeted content for a content viewer, the targeted content including at least targeted content segments. Further, the method includes determining one or more positions for inserting the targeted content segments in between encoded content segments corresponding to a content while transmitting the content to an electronic device of the content viewer based, at least in part, on a targeted content marker data. Further, the method includes determining via a counter, a first count value, and a second count value. The first count value indicates that a segment from the encoded content segments is to be transmitted next. The second count value indicates the number of targeted content segments that replace the encoded content segments. Further, the method includes adapting the first count value and the second count value to indicate the segment to be fetched next for transmission to the electronic device. Further, the method includes updating a manifest for a Content Delivery Network (CDN) based, at least in part, on the adapted first count value and the adapted second count value.
BRIEF DESCRIPTION OF THE FIGURES
[0009] The advantages and features of the invention will become better understood with reference to the detailed description taken in conjunction with the accompanying drawings, wherein like elements are identified with like symbols, and in which:
[0010] FIG. 1 shows a representation for illustrating the provisioning of content offered by a streaming content provider to a subscriber, in accordance with an embodiment of the invention;
[0011] FIG. 2 is a block diagram of a system configured to facilitate streaming of content with targeted content to content viewers, in accordance with an embodiment of the invention;
[0012] FIG. 3 shows an example representation of a portion of an overall sequence of segments to be streamed from a CDN to an electronic device of a subscriber, in accordance with an embodiment of the invention;
[0013] FIG. 4 shows a snapshot of a portion of a simplified counter for illustrating tracking of streamed segments of FIG. 3 using the media sequence count value and the discontinuity sequence count value, in accordance with an embodiment of the invention;
[0014] FIGS. 5A and 5B show a sequence flow diagram for illustrating a process flow for streaming content with targeted content to a subscriber, in accordance with an embodiment of the invention;
[0015] FIG. 6 shows a flow diagram of a method for facilitating streaming of content with targeted content to content viewers, in accordance with an embodiment of the invention; and
[0016] FIG. 7 shows a flow diagram of a method for facilitating streaming of content with targeted content to content viewers, in accordance with an embodiment of the invention.
[0017] The drawings referred to in this description are not to be understood as being drawn to scale except if specifically noted, and such drawings are only exemplary in nature.
DETAILED DESCRIPTION
[0018] The best and other modes for carrying out the present invention are presented in terms of the embodiments, herein depicted in FIGS. 1 to 7. The embodiments are described herein for illustrative purposes and are subject to many variations. It is understood that various omissions and substitutions of equivalents are contemplated as circumstances may suggest or render expedient but are intended to cover the application or implementation without departing from the spirit or scope of the invention. Further, it is to be understood that the phraseology and terminology employed herein are for the purpose of the description and should not be regarded as limiting. Any heading utilized within this description is for convenience only and has no legal or limiting effect.
[0019] Reference in this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present disclosure. The appearance of the phrase “in an embodiment” in various places in the specification is not necessarily all refer to the same embodiment, nor are separate or alternative embodiments mutually exclusive of other embodiments. Moreover, various features are described which may be exhibited by some embodiments and not by others. Similarly, various requirements are described which may be requirements for some embodiments but not for other embodiments.
[0020] The terms “a” and “an” herein do not denote a limitation of quantity, but rather denote the presence of at least one of the referenced items.
[0021] FIG. 1 shows a representation 100 for illustrating the provisioning of content offered by a streaming content provider to a subscriber, in accordance with an embodiment of the invention.
[0022] The term ‘streaming content provider’ as used herein refers to an entity that holds digital rights associated with digital content present within digital video content libraries, who offers the content on a subscription basis by using a digital platform and over-the-top (OTT) media services, i.e., content is streamed over the Internet to the electronic devices of the subscribers. A streaming content provider is hereinafter referred to as a ‘content provider’ for ease of description. The term ‘subscriber’ as used herein implies a user, who has subscribed, i.e. registered to a subscription plan (whether a free subscription plan or a paid subscription plan) from among a plurality of subscription plans for accessing content offered by the content provider. In at least some embodiments, the term ‘subscriber’ may also include one or more users in addition to the individual subscriber, such as for example family members of the subscriber. To that effect, the term ‘subscriber’ as used herein may include one or more users. Further, the ‘subscriber’ is also interchangeably referred to hereinafter as a ‘content viewer’.
[0023] The representation 100 depicts an example content, such as content 110, offered by a content provider (not shown in FIG. 1). The content 110 may be embodied as streaming video content such as a livestreaming content or an on-demand video streaming content. As an example, the representation 100 shows that the content 110 may be embodied as a livestreamed content corresponding to a sports match being streamed from an event venue such as a stadium 112. In another illustrative example, the content 110 may correspond to Video On Demand (VOD) content, i.e., content streamed from a content library such as a content library 114, on subscriber demand.
[0024] It is noted that though the content 110 offered by the content provider is mentioned to be embodied as video content, the term ‘content’ as used herein may include ‘video content’, ‘audio content’, ‘gaming content’, ‘textual content’ and any combination of such content offered in an interactive or non-interactive form. Accordingly, the term content is also interchangeably referred to hereinafter as ‘media content’ for the purposes of description.
[0025] The representation 100 further depicts a content handling team 116, which may include one or more individuals tasked with analyzing the content 110 and identifying slots for inserting targeted content such as one or more Ads within the streaming content. It should be understood that the present disclosure has been described with regard to advertisements as the targeted content. However, other forms of digital content may also constitute targeted content and the same will be covered by the various embodiments of the present disclosure as well. For example, any form of ‘video content’, ‘audio content’, ‘gaming content’, ‘textual content’, and any combination of such content may be used as targeted content as well.
[0026] In one illustrative example, players of a cricket team may celebrate the fall of a wicket and there may be a brief opportunity within the livestreaming content to include an Ad before the players resume play. The content handling team 116 is tasked with identifying such slots in which the Ad may be displayed during livestreaming of content. In another illustrative example, a video on demand content such as a movie may be associated with a storyline that may include changes in screenplay, songs, or twists in the plotline. An Ad may be slotted immediately after or before the occurrence of such changes to make the content interesting for the content viewers. The content handling team 116 is tasked with identifying such slots in which the Ad may be displayed during streaming of VOD content. The content handling team 116 may insert markers or identifiers to identify locations within the streaming content at which Ads may be inserted. The markers or identifiers are hereinafter referred to as ‘Ad position markers 118’. In one embodiment, the Ad position markers 118 may be embodied as SCTE markers, such as SCTE-35 markers. It is noted that SCTE-35 is a joint ANSI/Society of Cable and Telecommunications Engineers standard that describes the inline insertion of cue tones in content streams. In addition to identifying the location of the Ad insertion, the Ad position markers 118 may be associated with metadata such as the duration of the slot, a sequence number, and details of the slot (e.g., pre-roll, mid-roll, change in plot, fall of wicket, player injured, innings break, change in sides, etc.).
[0027] The content 110 and the Ad position markers 118 are provided to a video encoder 120. The video encoder 120 is configured to convert the content 110 (i.e., video content) into a format capable of being streamed to subscribers. More specifically, the content 110 may be split into segments and each content segment may be encoded to generate a stream of encoded content segments, which may be combined to form the streaming content that is to be provided to the electronic devices of the subscribers. For example, when a live tennis match is delivered to a subscriber, encoded content segments are delivered sequentially to the electronic device of the subscriber providing a seamless experience of watching the live tennis match. In one illustrative example, the content segments may be encoded using predefined video encoding standards such as H.264 baseline profile or H.264 high profile.
[0028] In general, the content segments may be encoded using different combinations of resolutions and bitrates to ensure seamless delivery of the streaming content to subscribers. Some examples of the resolutions used during encoding include, but are not limited to, HD resolution, 1080p, 720p, and 480p. Some examples of the bitrates used during encoding include, but are not limited to, 128 kbps, 2.5 mbps, 3.5 mbps, 5 mbps, and the like.
[0029] In at least one embodiment, each encoded content segment is a fragment of fixed-length and all encoded segments of the content 110 have a uniform or identical length, for example, 4 seconds of time duration. For example, a live tennis match (i.e., the content) of 90 minutes duration may be segmented and encoded to generate 1350 encoded segments of 4 seconds each.
[0030] Further, the video encoder 120 is also configured to generate a log, referred to herein as a ‘manifest’. The manifest includes information related to the encoded content segments, such as a number of segments related to the content, a size of each segment, the overall size of the content, an order of streaming of content, available resolutions for each content segment, and available bitrates for each content segment. The manifest also includes information related to the Ad position markers 118, i.e., a number of Ad position markers 118, a location of each Ad position marker, and the like. In particular, the manifest may be further classified into master manifest including one or more child manifest. The master manifest includes different encoding ladders where each encoding ladder is placed within a separate child manifest within the master manifest. The encoding ladder indicating layer of content, i.e., different renditions of the same content in different resolution qualities. In one example, a playback URL for a 480p content stream with a specific bitrate is placed in one child manifest and a playback URL for a 720p content stream with a specific bitrate is placed in another child manifest. In another example, a playback URL for a 720p content stream with a bitrate of 1.5 mbps may be placed in a child manifest while a playback URL for a 720p content stream with a bitrate of 3.5 mbps is placed in another child manifest. The manifest and the encoded content segments are forwarded to one or more Content Delivery Networks (CDNs), such as the CDN 122. The transmission of the encoded content segments and the manifest from the video encoder 120 to the CDN 122 is shown using a communication link 132. The CDN 122 is configured to add URL information to the encoded content segments to generate an ‘original manifest’. It is noted that in some scenarios, the URL information may also be added by video encoder 120 and provided to the CDN 122 along with the encoded content segments. The original manifest is provided by the CDN 122 to a content handling server 124. The transmission of the original manifest from the CDN 122 to the content handling server 124 is shown using a communication link 134. The CDN 122 is configured to stream the encoded content segments to a plurality of subscribers on receiving a request for the content 110 from the respective subscriber’s device.
[0031] The representation 100 further depicts an example subscriber in the form of a subscriber 102. The subscriber 102 is depicted to be controlling an electronic device 104, which is capable of displaying content streamed from CDNs, such as the content 110 streamed from the CDN 122 in the form of a stream of encoded content segments. The electronic device 104 is depicted to be a television (TV) for illustration purposes. It is noted that the subscriber 102 may use one or more electronic devices, such as a smartphone, a laptop, a desktop, or a personal computer to view the content 110 provided by the content provider via the CDN 122.
[0032] In an illustrative example, to subscribe to the streaming content services offered by the content provider, content viewers including subscribers such as the subscriber 102 may register with the content provider by creating an online account on the content provider’s portal. As part of the account creation process, the subscriber 102 may provide personal information, such as age, gender, language preference, content preference, and any other personal preferences to the content provider. Such information may be stored in a content viewer profile or subscriber profile along with other account information such as a type of subscription, a validity date of the subscription, etc., in a database (not shown in FIG. 1) associated with the content provider’s digital platform, shown as a content provider platform 126.
[0033] Once the subscriber 102 has created the account, the subscriber 102 may access a user interface (UI) of a mobile application or a Web application associated with the content provider to view/access content. It is understood that the electronic device 104 may be in operative communication with a communication network, such as the Internet, enabled by a network provider, also known as the Internet Service Provider (ISP). The electronic device 104 may connect to the ISP network using a wired network, a wireless network, or a combination of wired and wireless networks. Some non-limiting examples of wired networks may include the Ethernet, the Local Area Network (LAN), a fiber-optic network, and the like. Some non-limiting examples of wireless networks may include Wireless LAN (WLAN), cellular networks, Bluetooth or ZigBee networks, and the like.
[0034] The electronic device 104 may fetch a UI associated with the content provider over the ISP network and cause the display of the UI on a display screen of the electronic device 104. In an illustrative example, the UI may include a plurality of content titles corresponding to a variety of content items offered by the content provider to its consumers. The subscriber 102 may select a content title from among the plurality of content titles shown on the UI, which is displayed on the display screen of the electronic device 104. For example, the subscriber 102 may select a content title related to the live cricket match streamed from the event venue, such as the stadium 112. The selection of the content title may trigger a request for a playback uniform resource locator (URL) to be sent from the electronic device 104 to the content provider platform 126 associated with the content provider. The transmission of the request for the playback URL from the electronic device 104 to the content provider platform 126 is shown using a communication link 106.
[0035] In addition to requesting the playback URL of the chosen content title, the request for the playback URL also includes viewer metadata. For example, the viewer metadata includes information related to a type of electronic device (for example, mobile phone, TV, or tablet device) used by the subscriber 102 for requesting the content, the type of login method (for example, Email or Web login) used by the subscriber 102, the type of network access (for example, cellular or Wi-Fi) associated with playback URL request, network provider ID, device identifier, IP address, geo-location information, browser information (e.g., cookie data), time of the day, and the like. The content provider platform 126 is configured to forward the request for the playback URL to the content handling server 124. The transmission of the request for the playback URL from the content provider platform 126 to the content handling server 124 is exemplarily depicted using a communication link 108. It is noted in some example scenarios, the content handling server 124 may be incorporated within the content provider platform 126.
[0036] The content handling server 124 determines the type of content requested by the subscriber 102 based on the request for playback URL. If the type of content requested by the subscriber 102 is a movie trailer or a non-content request (such as a request for the synopsis of the content), then the content handling server 124 may determine that no Ad insertion is required for the requested content. In some scenarios, the type of content requested by the subscriber 102 may be non-monetary in nature. For example, a president or prime minister’s public address to the nation during a pandemic, a natural disaster event, or any such announcement conveying news of national importance. In such scenarios, where the type of content requested by the subscriber 102 is non-monetary in nature, the content handling server 124 may determine that no Ad insertion is required for the requested content. Alternatively, if the type of request corresponds to a content title, then Ad insertion may be possible during the streaming of the content. In one illustrative example, if the subscriber 102 has requested a playback of a trailer of an action movie, the content handling server 124 determines that Ad content integration is not required for the request (i.e., trailer of the action movie). In another illustrative example, if the subscriber 102 has requested streaming of the live cricket match from the stadium 112, then the content handling server 124 may determine that Ad content can be integrated on the fly. If the Ad content integration is possible, then the content handling server 124 is configured to analyze the viewer metadata included in the request for playback URL along with any other subscriber related information, such as whether the subscriber 102 watched a particular brand advertisement completely in the past or not, or whether the subscriber 102 clicked a product hyperlink in an advertisement in the past and visited the product webpage, and the like. Based on the analysis, the content handling server 124 may be configured to predict a type of personalized Ads that may be suitable for the subscriber 102.
[0037] The content handling server 124 is in operative communication with an advertisement server 128, hereinafter referred to as an Ad server 128. It is noted that the advertisement server 128 can be replaced with a targeted content server (not shown) which is configured to store targeted content such as Ads. The Ad server 128 is configured to store a plurality of Ad creatives received from a plurality of advertising entities, such as an example advertiser entity 130 shown in the representation 100. The content handling server 124 is configured to analyze the original manifest received from the CDN 122 and determine a number of Ad position markers 118 or Ad slots that can accommodate Ads within the streaming content. The content handling server 124 is configured to request Ad related information corresponding to the Ads stored in the Ad server 128 based on the analysis of the original manifest and the viewer metadata. The content handling server 124 is configured to perform an analysis of the Ad related information received from the Ad server 128 and determine the Ads that are to be inserted in the place of one or more Ad position markers 118 identified in the manifest. The determination of the Ads relevant to the subscriber 102 is explained in further detail below.
[0038] In at least some embodiments, the content handling server 124 is configured to extract or access a profile associated with the content viewer or the subscriber 102 including information related to the content viewer stored in the database associated with the content provider platform 126. In a non-limiting example, the profile includes at least an information related to age, gender, location, network provider, access patterns, content genre preferences, language preferences and the like of the content viewer. Further, a viewing history of the content viewer such as the subscriber 102 may also be extracted to determine the content genres, language preference, and such other information related to the subscriber 102. In some cases, the subscriber 102 may have shown interest in some Ads or Ad related content in the past, and such other information may also be extracted by the content handling server 124. In some scenarios, the content handling server 124 is configured to classify content viewers into different cohorts. The term ‘cohort’ as used herein refers to a group of viewers who share at least two or more commonalities from among an age-group, gender, location, network provider, access patterns, content genre preferences, language preferences, and the like. For example, each cohort may prefer or appreciate certain advertisement content that is determined based on the characteristics of the respective cohort. For example, a cohort corresponding to a particular age-group (above 40 years) and having a preference for a particular content genre (e.g., Drama, Action/Adventure, etc.) may likely appreciate Ads related to health and fitness. Similarly, a cohort corresponding to a female gender having a preference for a particular content genre (e.g., fantasy, romance, etc.) may likely appreciate Ads related to beauty products. Similarly, a cohort corresponding to a discount seeker persona may likely appreciate Ads that offer lucrative deals or promotional offers. Accordingly, the content handling server 124 is configured to determine the relevant Ads for the various Ad slots as identified by the Ad position markers 118 based on the aforementioned analysis and the Ad-related information provided by the Ad server 128. In some embodiments, the content handling server 124 is also referred to as the server side ad insertion (SSAI) server as it facilitates real-time post-encoding insertion of Ad content, i.e., an example of targeted content in the streaming content. In a non-liming example, the targeted content includes advertisements that may likely interest the viewers or entice the viewers by promoting some product or services, or to make an announcement such as a new game release that the viewer may like. In other words, a preference of the content viewer for the targeted content is predicted based, at least in part, on the profile. Further, a targeted content playback URL from a content provider platform 126 or content handling server 124 is requested based, at least in part, on the preference of the content viewer.
[0039] The content handling server 124 is configured to provide the information related to one or more selected Ads to the Ad server 128. The communication exchange between the content handling server 124 and the Ad server 128 is shown using a communication link 136. The Ad server 128 is configured to provide the content related to selected Ads, also referred to herein as ‘Ad content’ to the CDN 122, which is configured to embed the Ads in appropriate locations within the encoded content segments corresponding to the content 110.
[0040] The content handling server 124 is also configured to modify the original manifest to reflect the Ad insertion and provide a modified manifest to the content provider platform 126. The transmission of the modified manifest to the content provider platform 126 from the content handling server 124 is shown using a communication link 138. The content provider platform 126, which is aware of the location of the cached content 110 in the CDN 122, is configured to generate a playback URL, which includes the URL information of the CDN 122, and provide the playback URL to the electronic device 104 along with the modified manifest. The transmission of the playback URL and the modified manifest to the electronic device 104 is shown using a communication link 140. The electronic device 104 is then configured to use the playback URL provided by the content provider platform 126 to access the CDN 122 and request the content 110 from the CDN 122 as per the modified manifest. The CDN 122 is configured to stream encoded content segments including the targeted content to the electronic device 104 as per the modified manifest. If there are fluctuations in the network/bandwidth of the electronic device 104, then the electronic device 104 may request content segments at different resolutions/bitrates as allowed within the modified manifest and the CDN 122 may provide encoded content segments as per the resolution/bitrate requested by the electronic device 104. The transmission of the content segments from the CDN 122 to the electronic device 104, i.e., the transmission of the streaming content from the CDN 122 to the electronic device 104 is shown using the communication link 142.
[0041] In many example scenarios, the Ads that are to be inserted in-between encoded content segments are of varying durations. Moreover, as explained above, the encoded content segments are of fixed length/duration (e.g., 4 seconds), as per the chosen streaming protocol. So, if an Ad length is greater than the fixed length/duration, the Ad may also be split into segments of equivalent length. In other words, at first, it is determined if the time duration of the targeted content segments is less than a fixed time duration. Then, a filler content segment is accessed from the database. The length of the filler content segment is determined based, at least in part, on the time duration of the targeted content segments. Upon determining that the targeted content segments have a time duration less than the fixed time duration, the targeted content segments with the filler content segment. For example, if an Ad length is 7 seconds and the fixed length of encoded content segments is 4 seconds, then the Ad may be split into two segments, with the first segment corresponding to the first four seconds of the Ad and the second segment including the remaining three seconds followed by a 1-second filler to configure another four second segment. It is noted that the terms ‘filler’ or ‘filler content’ as used hereinafter corresponds to any content that avoids an empty screen on the electronic device of the viewer during content/Ad streaming. As an example, a final image frame of the Ad segment may be maintained in a static state for a brief duration to avoid the empty screen on the electronic device. Accordingly, two Ad segments of 4-second duration may be inserted in-between encoded content segments. As the Ads are of varying duration, for example, some Ads may last less than 4 seconds whereas some Ads may last more than 10 seconds, it is difficult for the CDN 122 to keep track of which encoded content segment to stream next after the Ad has played out.
[0042] For example, if an encoded content segment’s sequence number is 5 in the regular order, but if an Ad of 10 second duration is inserted before the content segment, then the sequence number of the encoded content segment would be changed to 8. However, if an Ad of 4 second duration is inserted before the content segment, then the sequence number of the encoded content segment would be changed to 6. In absence of a mechanism to track transmissions, it is difficult for the CDN 122 to keep track of which encoded content segment to stream next after an Ad has played out. More specifically, it may be difficult for the electronic device of the viewer to identify which encoded content segment to request next. Further, if a network issue or a bandwidth issue has caused the content viewer’s device to request a content stream at a different resolution, then the tracking of content segments is even more cumbersome. For example, an encoded content segment’s sequence number may be 10 in a high-resolution content stream, however, the similar encoded content segment’s sequence number in a stream of standard resolution may be 6 or 7. In some scenarios, rich content with a varying playback rate may also cause a variation in the encoded content segment’s sequence number.
[0043] Accordingly, if a network or a bandwidth issue has caused the content viewer’s device to request a content stream at a different resolution, it may be difficult for the CDN 122 to keep track of which encoded content segment to stream next. The jump in the sequence of encoded content segments may cause a buffering/loading screen to be displayed to the content viewer. Further, the failure to track the content segments of the content being streamed to the content viewer may cause the same content segment to be streamed again or a content segment to be missed altogether. In some cases, mixing the order of the content segments being streamed may degrade the viewing experience of the content viewer, such as the subscriber 102.
[0044] To overcome the aforementioned drawbacks and provide additional advantages, a system 150 is provided. The system 150 is in operative communication with the content handling server 124 and the CDN 122. The system 150 is configured to facilitate real-time insertion of targeted content in streaming content, while ensuring media continuity to content viewers. More specifically, the system 150 is configured to continuously track segments, such as Ad segments or encoded content segments, being streamed from the CDN 122 to ensure that the content is streamed in the correct order to the content viewers without causing any degradation of quality even when the content viewer’s electronic device requests content at different resolutions. The system 150 is explained in further detail with reference to FIG. 2.
[0045] FIG. 2 is a block diagram of the system 150 configured to facilitate streaming of content with targeted content to content viewers, in accordance with an embodiment of the invention. The term ‘targeted content’ as used herein primarily refers to any form of content that is personalized in nature, i.e., it is predicted to be more relevant to an individual content viewer or a cohort of content viewers when compared to other content available for display during the course of streaming content corresponding to a content title, such as personalized Ads. In a non-liming example, the targeted content includes advertisements that may likely interest the viewers or entice the viewers by promoting some product or services, or to make an announcement such as a new game release that the viewer may like. It is noted that Advertisement or personalized advertisements are an example of the targeted content that is shared with the subscriber 102 and other suitable forms of content can be shared with the subscriber 102 as well.
[0046] In at least one embodiment, the system 150 may be embodied as a server machine in operative communication with the CDN 122 and the content handling server 124, as shown in FIG. 1. Alternatively, the system 150 may be included within the CDN 122 or may be communicably accessible via API plugins to the CDN 122. The system 150 is depicted to include a processing module 202, a memory module 204, an Input/Output (I/O) module 206, and a communication module 208. It is noted that although the system 150 is depicted to include the processing module 202, the memory module 204, the I/O module 206, and the communication module 208, in some embodiments, the system 150 may include more or fewer components than those depicted herein. The various components of the system 150 may be implemented using hardware, software, firmware, or any combination thereof. Further, it is also noted that one or more components of the system 150 may be implemented in a single server or a plurality of servers, which are remotely placed from each other.
[0047] In one embodiment, the processing module 202 may be embodied as a multi-core processor, a single-core processor, or a combination of one or more multi-core processors and one or more single-core processors. For example, the processing module 202 may be embodied as one or more of various processing devices, such as a coprocessor, a microprocessor, a controller, a digital signal processor (DSP), a processing circuitry with or without an accompanying DSP, or various other processing devices including integrated circuits such as, for example, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a microcontroller unit (MCU), a hardware accelerator, a special-purpose computer chip, or the like. In one embodiment, the memory module 204 is capable of storing machine-executable instructions, referred to herein as platform instructions 205. Further, the processing module 202 is capable of executing the platform instructions 205. In an embodiment, the processing module 202 may be configured to execute hard-coded functionality. In an embodiment, the processing module 202 is embodied as an executor of software instructions, wherein the instructions may specifically configure the processing module 202 to perform the algorithms and/or operations described herein when the instructions are executed. The processing module 202 is depicted to include a parsing module 210, a query module 212, and a counter module 214.
[0048] The memory module 204 stores instructions/code configured to be used by the processing module 202, or more specifically by the various modules of the processing module 202 such as the parsing module 210, the query module 212, and the counter module 214 to perform respective functionalities, as will be explained in detail with reference to FIG. 2. The memory module 204 may be embodied as one or more non-volatile memory devices, one or more volatile memory devices, and/or a combination of one or more volatile memory devices and non-volatile memory devices. For example, the memory module 204 may be embodied as semiconductor memories, such as flash memory, mask ROM, PROM (programmable ROM), EPROM (erasable PROM), RAM (random access memory), and the like.
[0049] In at least one example embodiment, the memory module 204 may store logic and/or instructions for: (1) parsing the modified manifest and inserting discontinuity tags in the parsed information, (2) analyzing the Ad information, and (3) generating a counter for tracking transmissions from the CDN to the electronic device, and (4) adapting the media sequence count value (referred interchangeably as first count value) and the discontinuity sequence count (referred interchangeably as second count value) value based on the transmissions.
[0050] In an embodiment, the I/O module 206 may include mechanisms configured to receive inputs from and provide outputs to the operator(s) of the system 150. To that effect, the I/O module 206 may include at least one input interface and/or at least one output interface. Examples of the input interface may include, but are not limited to, a keyboard, a mouse, a joystick, a keypad, a touch screen, soft keys, a microphone, and the like. Examples of the output interface may include, but are not limited to, a display such as a light-emitting diode display, a thin-film transistor (TFT) display, a liquid crystal display, an active-matrix organic light-emitting diode (AMOLED) display, a microphone, a speaker, a ringer, a vibrator, and the like.
[0051] In an example embodiment, the processing module 202 may include I/O circuitry configured to control at least some functions of one or more elements of the I/O module 206, such as, for example, a speaker, a microphone, a display, and/or the like. The processing module 202 and/or the I/O circuitry may be configured to control one or more functions of the one or more elements of the I/O module 206 through computer program instructions, for example, software and/or firmware, stored on a memory, for example, the memory module 204, and/or the like, accessible to the processing module 202.
[0052] The communication module 208 may include a communication circuitry such as for example, a transceiver circuitry including an antenna and other communication media interfaces to facilitate communication between the system 150 and one or more remote entities such as, the CDN 122 and the content handling server 124 over a communication network (not shown in FIG. 2). The communication circuitry may, in at least some example embodiments enable reception of: (1) a modified manifest related to a content requested by the subscriber from the CDN 122 or the electronic device 104 of the subscriber 102, and (2) Ad content related information from the Ad server 128. The communication circuitry may further be configured to provide a media sequence count value or a first count value and discontinuity sequence count value or a second count value to the CDN 122 for indicating the segment (i.e., segment related to media content or segment related to Ad content) that has to be streamed next to the subscriber 102.
[0053] The system 150 is further depicted to be in operative communication with a storage module 216. The storage module 216 is any computer-operated hardware suitable for storing and/or retrieving data. In one embodiment, the storage module 216 is configured to store media sequence count value and discontinuity sequence count value related to each viewer viewing media content. The storage module 216 may include multiple storage units such as hard drives and/or solid-state drives in a redundant array of inexpensive disks (RAID) configuration. In some embodiments, the storage module 216 may include a storage area network (SAN) and/or a network attached storage (NAS) system. In one embodiment, the storage module 216 may correspond to a distributed storage system, wherein individual databases are configured to store custom information such as, content view logs, etc.
[0054] The storage module 216 may be accessed by the system 150 using a storage interface (not shown in FIG. 2). The storage interface is any component capable of providing the processing module 202 with access to the storage module 216. The storage interface may include, for example, an Advanced Technology Attachment (ATA) adapter, a Serial ATA (SATA) adapter, a Small Computer System Interface (SCSI) adapter, a RAID controller, a SAN adapter, a network adapter, and/or any component providing the processing module 202 with access to the storage module 216. Alternatively, in some embodiments, the storage module 216 is integrated within the system 150. For example, the system 150 may include one or more hard disk drives as the storage module 216.
[0055] The various components of the system 150, such as the processing module 202, the memory module 204, the I/O module 206, and the communication module 208 are configured to communicate with each other via or through a centralized circuit system 218. The centralized circuit system 218 may be various devices configured to, among other things, provide or enable communication between the components of the system 150. In certain embodiments, the centralized circuit system 218 may be a central printed circuit board (PCB) such as a motherboard, a main board, a system board, or a logic board. The centralized circuit system 218 may also, or alternatively, include other printed circuit assemblies (PCAs) or communication channel media.
[0056] As explained with reference to FIG. 1, the content provider platform 126 provides a playback URL and a modified manifest to the electronic device 104. The playback URL identifies a CDN, such as the CDN 122 (shown in FIG. 1), which is caching the content corresponding to the content title selected by the subscriber 102 for playback. The modified manifest includes information about the availability of encoded streams of different resolutions and a sequence of encoded content segments within each stream that are to be transmitted from the CDN 122 along with information related to the targeted content selected for the subscriber 102. For example, a modified manifest corresponding to a livestreaming musical concert may include a schedule of streaming segments related to the live musical concert event, which further includes a schedule of streaming segments related to targeted content such as Ads, which are to be inserted at locations identified by the Ad position markers 118 inserted within the content stream.
[0057] The electronic device 104 sends a request for content identified in the playback URL to the CDN 122. In one embodiment, the electronic device 104 is also configured to send the modified manifest to the CDN 122 for requesting a content stream of a particular resolution. The system 150 on account of being in operative communication with the CDN 122 may receive the request for content along with the modified manifest sent by the electronic device 104 to the CDN 122. More specifically, the communication module 208 in the system 150 may receive the request for the content along with the modified manifest, and provide the modified manifest to the parsing module 210 in the processing module 202. In some embodiments, the electronic device 104 may only send a request for content of a particular resolution to the CDN 122 and the system 150 on account of being in operative communication with the CDN 122 may receive the request for the content via the communication module 208. The communication module 208 may be configured to forward the request for content to the parsing module 210. The parsing module 210 may then communicate, using the communication module 208, with the content handling server 124 to receive the modified manifest corresponding to the requested content.
[0058] In at least one embodiment, the parsing module 210 is configured to parse the modified manifest to extract the schedule of transmitting encoded content segments related to the content requested by the subscriber 102. In at least some embodiments, the schedule may include URLs for encoded content segments that need to be transmitted in sequence to the electronic device 104 of the subscriber 102. The schedule also includes URLs for Ad content that needs to be transmitted in-between transmission of encoded content segments to the electronic device 104.
[0059] The parsing module 210 is configured to identify breaks/discontinuities in the sequence of streaming segments to the electronic device 104 of the subscriber 102. For example, there may be one or more breaks in the sequence of transmitting content segments to accommodate Ad content. The parsing module 210 is configured to identify such breaks/discontinuities in sequence and insert discontinuity tags to mark such changes. For example, the parsing module 210 is configured to insert a discontinuity tag when the modified manifest indicates a change in transmission from a segment related to the media content to a segment related to the Ad content. Similarly, a discontinuity tag is inserted by the parsing module 210 when the modified manifest indicates a change in transmission from a segment related to an Ad content to a segment related to the media content. In yet another illustrative example, a discontinuity tag may also be inserted by the parsing module 210 during streaming, when the parsing module 210 identifies a switching of content streaming from one resolution to another, for example, a change of segment related to media content with a resolution of 720p to a segment related to the same media content with a resolution of 1080p. The discontinuity tag essentially acts as a signal for the CDN 122 to cue in/cue out for streaming segments related to the media segment or cue in/cue out to stream segments related to the Ad content. The discontinuity tag may be include in targeted content marker data. The parsing module 210 is configured to provide the parsed information along with inserted discontinuity tags to the query module 212.
[0060] The query module 212 is configured to identify the discontinuity tags and extract Ad URLs in the modified manifest, which are associated with respective discontinuity tags, to query the content handling server 124 for information related to the Ads. For example, the query module 212 may be configured to request the content handling server 124 information related to a duration of the content for each targeted content scheduled to be transmitted to the electronic device 104. In some embodiments, the content handling server 124 may lookup Ad content stored in the Ad server 128 to determine the Ad related information. The content handling server 124 may provide the Ad related information to the communication module 208, which, in turn, may forward the Ad-related information to the query module 212. Accordingly, the query module 212 is also configured to receive the response to one or more queries provided by the content handling server 124 via the communication module 208. For example, the query module 212 may receive responses, which include information such as the duration of Ads or any such relevant information, from the content handling server 124.
[0061] In at least one embodiment, the query module 212 is configured to determine a number of Ad segments that the CDN 122 may have to transmit to cause the display of each targeted content on the electronic device 104. For example, if the CDN 122 supports a HTTP Live Streaming (HLS) or MPEG-Dynamic Adaptive Streaming over HTTP (DASH) protocol for live streaming of content, then the transmission may be achieved in segments of a predefined time duration, such as 4-second segments, to a remote entity. Accordingly, the encoding of content at various resolutions and its subsequent segmenting to achieve transmission of requested content may result in generating encoded content segments of fixed time duration, such as 4-seconds for example (other fixed time durations may also be used). The Ad content that is to be transmitted in-between the encoded content segments may also be subjected to similar treatment, i.e., the Ad content may be segmented into Ad segments of fixed time duration. As an example, an Ad of 8-second duration may result in the generation of two Ad segments of 4-second duration each. In another illustrative example, an Ad of 10-second duration may result in the generation of three Ad segments with two Ad segments of 4-second duration each and one Ad segment with the remaining two-second Ad followed by a two-second filler content. Accordingly, the query module 212 may determine the number of Ad segments that are to be transmitted corresponding to each targeted content identified in the modified manifest. The query module 212 may then provide the information related to the Ad duration and the number of Ad segments for each Ad to the counter module 214.
[0062] The counter module 214 is configured to receive the information related to the Ad duration and the number of Ad segments for each Ad from the query module 212. The counter module 214 is configured to maintain a counter that tracks transmissions of segments (i.e., encoded content segments and Ad segments) from the CDN 122 to the electronic device 104 of the subscriber 102. The tracking of the segment transmission using the counter enables the CDN 122 to determine/verify what segment to transmit next. The tracking of the segment transmission is explained hereinafter.
[0063] The counter maintained by the counter module 214 is configured to keep track of a media sequence count value and a discontinuity sequence count value. The media sequence count value is configured to provide an indication to the CDN 122 that a segment related to the media content is to be streamed next to the content viewer, i.e., an encoded content segment is to be streamed next to the subscriber 102. The discontinuity sequence count value is configured to provide an indication to the CDN 122 to switch to streaming a segment related to the Ad content or switch back from Ad content streaming to streaming segments related to the media content. The counter module 214 receives information related to the segment being streamed to the subscriber 102 and accordingly, adapts the media sequence count value/discontinuity sequence count values to indicate the segment to be fetched next for streaming.
[0064] In an embodiment, the counter module 214 increases the media sequence count value by 1 on receiving information from the CDN 122 via the communication module 208 that a segment related to the media content is currently being streamed and another segment related to the media count is to be streamed next. Alternatively, if the next segment corresponds to an Ad content, the media sequence count value is not incremented but the discontinuity sequence count value is increased by 1, i.e., discontinuity sequence count value = 1, providing an indication for the CDN 122 to switch to streaming segments related to the Ad content. In particular, the media sequence count value (i.e., a first count value) and discontinuity sequence count value (i.e., a second count value) are initialized by the system 150 as null values. Then, if it is determined that the encoded content segment is to be transmitted next to the electronic device 104, the media sequence count value is incremented. Alternatively, if it is determined that the targeted content segment is to be transmitted next to the electronic device, the discontinuity sequence count value is incremented. The tracking of the segment transmission by the counter module 214 is further explained with reference to FIGS. 3 and 4.
[0065] FIG. 3 shows an example representation 300 of a portion of an overall sequence of segments to be streamed from a CDN, such as the CDN 122 shown in FIG. 1, to an electronic device of a subscriber, such as the electronic device 104 of the subscriber 102 shown in FIG. 1, in accordance with an embodiment of the invention.
[0066] In an illustrative example, the content provider platform 126 may have received a request for a playback URL in relation to a livestreamed musical concert event being conducted at a remote concert hall. The livestreamed content from the event venue may be sent to the video encoder for encoding the content and generating encoded content segments. Further, a content handling team, such as the content handling team 116 shown in FIG. 1, may provide Ad position markers 118 in relation to the musical concert. In an illustrative example, a change in songs or a break in-between the songs for the musicians may be identified as opportunities to show Ad content by the content handling team 116. The content-handling team 116 may insert Ad position markers 118 to mark the positions, in which Ad content may be included. The Ad position markers 118 and the encoded content segments may be provided to the CDN 122. The CDN 122 may generate a manifest (i.e., the schedule) outlining the sequence of transmitting content segments to a content viewer. The manifest may be provided to the content handling server 124, which may determine the targeted content to be provided to the content viewer, such as the subscriber 102 shown in FIG. 1, in conjunction with the Ad server 128. The content handling server 124 may generate a modified manifest which identifies the Ads to be played in the Ad slots in-between the transmission of encoded content segments. The CDN 122 may further receive the Ad content from the Ad server 128 as per the modified manifest. The received Ad content may be split into segments as per the livestreaming protocol to generate Ad content segments. The Ad content may be processed, i.e., subjected to at least one of encoding, compression, and the like, prior to the generation of Ad content segments. The Ad content segments are to be streamed in-between encoded content segments corresponding to the media content requested by the subscriber 102.
[0067] The representation 300 shows a portion of an overall sequence of segments scheduled for transmission from the CDN 122 to the electronic device 104 of the subscriber 102. More specifically, the representation 300 depicts a sequence of segments S1, S2, S3, A1-1, A1-2, S4, S5, S6, and S7, which are scheduled to be streamed at time instances t1, t2, t3, t4, t5, t6 and t7, respectively. The segments S1, S2, S3, S4, S5, S6, and S7 (see, 302) are related to the livestreaming musical concert event (hereinafter referred to as segments of the media content or media content segments) and the segments A1-1, and A1-2 (see, 304) are related to an Ad (hereinafter referred to as segments of the Ad content or Ad content segments) that replace media content segments, S4 and S5, and inserted in-between segments of the media content, i.e., S1, S2, S3, A1-1, A1-2, S6, and S7 (see, 306). The segments S1, S2, S3, A1-1, A1-2, S4, S5, S6, and S7 are all of uniform length and span a time duration of ‘t’ seconds, for example, 4 seconds.
[0068] As explained with reference to FIG. 2, the query module 212 is configured to provide information related to the number of Ad segments embedded in-between the encoded content segments to the counter module 214. Based on the information received from the query module 212 and a current state of transmission of segments from the CDN 122 to the electronic device 104 of the subscriber 102, the counter module 214 (shown in FIG. 2) is configured to adapt the media sequence count value C and the discontinuity sequence count value D in a counter. An example portion of a counter maintained by the counter module 214 of the system 150 is explained next with reference to FIG. 4.
[0069] Referring now to FIG. 4, a snapshot of a portion of a simplified counter 400 is shown for illustrating tracking of segments transmitted by the CDN 122 using the media sequence count value (i.e., the first count value) and the discontinuity sequence count value (second count value), in accordance with an embodiment of the invention. It is understood that a tabular form of the counter 400 is depicted for example purposes and that any data structure may be used for keeping track of segments transmitted by the CDN 122.
[0070] The counter 400 (hereinafter referred to as ‘table 400’) includes a plurality of columns such as columns 402, 404, 406, 408, and 410, which are associated with column headers ‘Time Stamp’, ‘Segment Streamed’, ‘Media Sequence Count value (C)’, ‘Discontinuity Sequence Count value (D)’ and ‘Segment to be fetched’, respectively. It is noted that the table 400 may include more or fewer columns than those depicted in FIG. 4.
[0071] The column 402 associated with the column header ‘Timestamp’ depicts timing information related to when a segment was streamed. The timestamps are equally spaced apart based on the length of each segment. For example, if each segment of media content is fragmented into a duration of 4 seconds, then timestamps in the column 402 all appear after 4 seconds such as, t2 appears 4 seconds after t1. The column 404 associated with column header ‘Segment streamed’ depicts a segment currently being streamed to the electronic device of the subscriber 102. For example, at timestamp t2, segment S2 is streamed to the electronic device. Further, the column 406 associated with a column header ‘Media Sequence Count Value’, includes entries which are configured to indicate a number of segments related to the media content that has been streamed to the subscribers at a respective time stamp. On detecting a discontinuity tag, the segment tracking is switched to counting a number of segments related to the Ad content via a discontinuity sequence count value as exemplarily depicted using entries in the column 406 associated with column header ‘Discontinuity Sequence Count Value’. A subsequent detection of the discontinuity tag is configured to cause the segment tracking to switch back to counting the segments related to the media content. The media sequence count value and the discontinuity sequence count value are synchronized so as to ensure that a correct segment of the media content/Ad content is streamed based on the modified manifest to the content viewer. The column 410 is associated with the column header ‘Segment to be fetched’ indicates which segment has to be fetched next based on the modified manifest. The example adaption of the media sequence count value and the discontinuity sequence count value in the table is explained with reference to the sequence of segments S1, S2, S3, S6, and S7 shown in FIG. 3, where new Ad segments A2-1, and A2-2 are inserted between encoded content segments instead of A1-1, and A1-2. It is noted that Ad segments A2-1, and A2-2 are configured such that the size of A2-2 is less than the uniform segment duration (in this particular example, it is assumed to be 4 seconds) and therefore, a filler content segment (F) is added to the A2-2 to achieve a content segment, i.e., equivalent to the uniform segment duration (i.e., A2-2+F=4 seconds).
[0072] At timestamp t0, the counter module 214 is configured to preset a media sequence count value C and discontinuity sequence count value D to a default value (i.e., C = 1, D = 0) prior to the initiation of transmission of the first encoded content segment, i.e., segment S1 at timestamp t1 to the electronic device 104 of the subscriber 102. At timestamp t1, the CDN 122 initiates streaming of the segment S1 to the electronic device 104 of the subscriber 102. The counter module 214 on account of being in operative communication with the CDN 122 learns about the transmission. The counter module 214 further checks if there is a discontinuity tag inserted by the parsing module 210 after the transmission of the first encoded content segment. As no discontinuity tag is inserted after segment S1, the counter module 214 increases the media sequence count value by 1 (i.e., C = 2) and retains the discontinuity sequence count value at ‘0’. The media sequence count value of ‘2’ indicates that the next segment to be transmitted is segment S2.
[0073] At timestamp t2, the CDN 122 initiates streaming of the segment S2 to the electronic device 104 of the subscriber 102. During transmission, the counter module 214 checks if a discontinuity tag is inserted after segment S2. As no discontinuity tag is inserted after segment S2, the counter module 214 increases the media sequence count value by 1 (i.e., C = 3) and retains the discontinuity sequence count value at ‘0’. The media sequence count value at timestamp t3 indicates ‘3’, whereas the discontinuity sequence count value remains at ‘0’ (i.e., D = 0) indicating that the next segment to be transmitted is segment S3.
[0074] At timestamp t3, the CDN 122 initiates streaming of the segment S3 to the electronic device 104 of the subscriber 102. During transmission, the counter module 214 checks if a discontinuity tag is inserted after segment S3. As a discontinuity tag is inserted after the segment S3, the counter module 214 increases the discontinuity sequence count value by 1 (i.e., D = 1) and retains the media sequence count value at ‘3’ indicating that the CDN 122 has to cue out to stream segments related to the Ad content, i.e., the media segment S4 is no longer transmitted to the electronic device 104 of the subscriber 102. The counter module 214 also retrieves information related to a number of Ad segments corresponding to each Ad to be transmitted in-between encoded content segments corresponding to the musical concert event. Accordingly, if the Ad ‘A’ is associated with 6-second duration, two Ad segments may be required to transmit the Ad content to the subscriber 102. As each segment as a fixed length (i.e., duration of 4 seconds), one segment of Ad content A2-1 of 4 second duration is transmitted at timestamp t4. As 2-second of Ad duration is left, the discontinuity sequence count value is incremented by 1 (i.e., D = 2) and the media sequence count value is retained at ‘3’ indicating that the next segment to be retrieved is segment A2-2, i.e., the media segment S5 is no longer transmitted to the electronic device 104 of the subscriber 102. As the remaining Ad content is of 2-second duration, i.e., it is less than the 4-second fixed length, filler content of 2-second duration is added and filler content of 2-second duration A2-2+F is transmitted at timestamp t5. During transmission, the counter module 214 checks if a discontinuity tag is inserted after segment A2-2+F. As a discontinuity tag is inserted after the segment A2-2+F, the counter module 214 increases the media sequence count value by 2 (i.e., C = 3+D) therefore, C = 6) and retains the discontinuity sequence count value at ‘2’ indicating that the CDN 122 has to cue out of streaming segments related to the Ad content and cue-in to streaming segments related to the media content and the next segment to be transmitted is segment S6.
[0075] At timestamp t6, the CDN 122 initiates streaming of the segment S6 to the electronic device 104 of the subscriber 102. During transmission, the counter module 214 checks if a discontinuity tag is inserted after segment S6. As no discontinuity tag is inserted after segment S6, the counter module 214 increases the media sequence count value by 1 (i.e., C = 7) and retains the discontinuity sequence count value at ‘2’. The media sequence count value at timestamp t6 indicates ‘7’, whereas the discontinuity sequence count value remains at ‘2’ (i.e., D = 2) indicating that the next segment to be transmitted is segment S7.
[0076] At timestamp t7, the CDN 122 initiates streaming of the segment S7 to the electronic device 104 of the subscriber 102. During transmission, the counter module 214 checks if a discontinuity tag is inserted after segment S7. As no discontinuity tag is inserted after segment S7, the counter module 214 increases the media sequence count value by 1 (i.e., C = 8) and retains the discontinuity sequence count value at ‘2’. The media sequence count value at timestamp t7 indicates ‘8’, whereas the discontinuity sequence count value remains at ‘2’ (i.e., D = 2) indicating that the next segment to be retrieved is segment S8 (not shown).
[0077] To that end, the system 150 determines a set of timestamps associated with each segment of the encoded content segment and the targeted content segment. Then, the system 150 updates the media sequence count value and the discontinuity sequence count value to indicate the segment to be fetched next for transmission to the electronic device 104 based, at least in part, on the set of timestamps. In particular, updating the media sequence count value (MSC, i.e., a first count value) and discontinuity sequence count value (DSC, i.e., a second count value) includes are initializing the MSC and DSC values as null values. It should be noted that although, it is mentioned that the segment is transmitted to the electronic device 104, it is rather the electronic device 104 that fetches the segment from the CDN 122 based on the playback URL present within the manifest. Then, if it is determined that the encoded content segment is to be transmitted next to the electronic device 104, the MSC value is incremented. Alternatively, if it is determined that the targeted content segment is to be transmitted next to the electronic device, the DSC value is incremented.
[0078] It is noted that the counter module 214 is also configured to correlate segments across different resolutions so as to determine the correct segment to be fetched if network/bandwidth issues cause a change in the encoding stream to be transmitted to the electronic device 104 of the subscriber 102. In particular, this correlation is performed based on the adapted media sequence count value and the adapted discontinuity sequence count value. For example, the segment S6 may correspond to another segment say segment S10, in a higher resolution content stream or a segment S4, in a lower resolution content stream. As the counter maintained by the counter module 214 of the system 150 tracks the content segments of the content being streamed to the content viewers, the CDN 122 is guided on what segments are to be transmitted next and, accordingly, instances such as the same content segment being streamed again or a content segment to be missed altogether do not occur. Moreover, the order of content segments being streamed is not mixed and, as such, the system 150 ensures that content segments of the content being streamed to the content viewers are delivered in the correct sequence without any error to enable an enjoyable viewing experience for the content viewers.
[0079] Conclusively, it may be said that upon receiving the manifest, the system 150, identifies the uniform segment size as 4 seconds (or any other segment size). Then, each timestamp out of the set of time stamps (t0-t7) will be of this uniform segment size (i.e., 4 seconds). Further, encoded content segments are streamed till a discontinuity tag within the targeted content marker data is detected. Upon its detection, it is determined that the targeted content segments have to be played. The counter is utilized to track the first count value and second count value. Upon transmission of each encoded content segment or targeted content segment, the first and the second count values are adapted or changed to indicate which segment to transmit next.
[0080] FIGS. 5A and 5B show a sequence flow diagram 500 for illustrating a process flow for streaming content with targeted content to a subscriber 102, in accordance with an embodiment of the invention.
[0081] At 520, a content provider platform 126 receives a request for playback URL from an electronic device 104 associated with a subscriber 102. The subscriber 102 may select a content title among a plurality of content titles displayed on the electronic device 104 by the content provider platform 126. The content title is associated with a media content and selection of the content title generates the request for the playback URL. In one illustrative example, the media content may correspond to a live cricket match stream broadcast from a stadium.
[0082] At 522, the content provider platform 126 performs a check to determine if Ad content can be integrated within the requested media content. This determination is performed based on a content policy of the content provider platform 126. The content policy may lay out a set of rules regarding which targeted content can be added to which media content. In one illustrative example, if the requested media content corresponds to live performance for a charity, the media content may include slots that may be used for incorporating Ad content. In another illustrative example, a live cricket match may include slots such as, innings break, fall of a wicket, end of over, player injury and the like during a course of the live match in which Ad contents may be inserted. If the content requested corresponds to a movie trailer or a synopsis of a web-series, then it is determined that Ad content cannot be inserted within the media content. Similarly, if the type of content requested by the subscriber 102 is non-monetary in nature, such as for example, a president or prime minister’s public address to the nation during a pandemic, a natural disaster event or any such announcement conveying news of national importance, then it is determined that Ad content cannot be inserted within the media content.
[0083] At 524, if it is determined by the content provider platform 126 that Ad content can be integrated within the media content, the request for playback URL is forwarded to a content handling server 124.
[0084] At 526, the content handling server 124 requests for an original manifest corresponding to the media content from a CDN 122. As explained with reference to FIG. 2, the original manifest includes a schedule or a sequence of transmitting encoded segments of the media content.
[0085] At 528, the CDN 122 provides the original manifest to the content handling server 124.
[0086] At 530, the content handling server 124 predicts a preference of the subscriber 102 in relation to targeted content based on information included in the request for playback URL and other subscriber related information shared by the content provider platform 126. The prediction of Ad preference may be performed as explained with reference to FIG. 2 and is not explained again herein.
[0087] At 532, the content handling server 124 requests targeted content such as Ads from the Ad server 128 based on the predicted Ad preference of the subscriber 102. In particular, the targeted content playback URL is requested from the content provider platform 126 based, at least in part, on the preference of the subscriber 102.
[0088] At 534, the Ad server 128 provides the Ad content (i.e., the targeted content) including one or more Ads to the content handling server 124, i.e., the content handling server 124 receives targeted content.
[0089] At 536, the content handling server 124 generates a modified manifest based on the original manifest and the Ad content (i.e., the targeted content) received from the Ad server 128. The modified manifest identifies the targeted content that is to be inserted in-between encoded content segments during transmission of the encoded content segments from the CDN 122 to the electronic device 104.
[0090] At 538, the content handling server 124 sends the modified manifest to the content provider platform 126 and the CDN 122.
[0091] At 540, the CDN 122 caches the targeted content identified in the modified manifest from the Ad server 128.
[0092] At 542, the content provider platform 126 forwards the modified manifest to the electronic device 104 of the subscriber 102 along with playback URL.
[0093] At 544, the electronic device 104 requests media content corresponding to the content from the CDN 122 identified in the playback URL. The request for content includes the playback URL and the modified manifest. The system 150 on account of being in operative communication with the CDN 122 receives the request for content. It is noted that the system 150 is depicted to be placed after the CDN 122 in the sequence flow diagram 500 only for illustration purposes.
[0094] At 546, the system 150 parses the modified manifest and inserts the discontinuity tags in extracted information.
[0095] At 548, the system 150 requests targeted content related information, such as the duration of the targeted content from the content handling server 124.
[0096] At 550, the content handling server 124 provides the targeted content related information, such as the duration of the targeted content, to the system 150.
[0097] At 552, the system 150 generates and maintains a counter, such as the counter explained by the counter module 214 explained with reference to FIGS. 2 to 4. The counter is configured to adapt a media sequence count value and a discontinuity sequence value after each transmission.
[0098] At 554, the CDN 122 streams segments sequentially to the electronic device 504 of the subscriber 102 based on the counter and the modified manifest. The process flow ends at 554.
[0099] As the system 150 tracks the content segments of the content being streamed to the content viewers, the CDN 122 is guided on what segments are to be transmitted next and, accordingly, instances such as the same content segment being streamed again or a content segment to be missed altogether do not occur. Moreover, the order of content segments being streamed is not mixed and, as such, the system 150 ensures that content segments of the content being streamed to the content viewers are delivered in the correct sequence without any error to enable an enjoyable viewing experience for the content viewers.
[00100] FIG. 6 shows a flow diagram of a method 600 for facilitating streaming of content with targeted content to content viewers, in accordance with an embodiment of the invention. The various steps and/or operations of the flow diagram, and combinations of steps/operations in the flow diagram, may be implemented by, for example, hardware, firmware, a processor, circuitry, and/or by a system such as the system 150 explained with reference to FIGS. 2 to 5B and/or by a different device associated with the execution of software that includes one or more computer program instructions. The method 600 starts at operation 602.
[00101] At operation 602 of the method 600, a manifest, such as the modified manifest explained with reference to FIGS. 2 to 5B, is parsed by a system such as system 150 to identify one or more targeted content segments to be inserted in-between encoded content segments corresponding to a content to be streamed from a CDN to an electronic device 104 of a subscriber 102.
[00102] At operation 604 of the method 600, targeted content related information corresponding to the one or more Ads is obtained by the system 150.
[00103] At operation 606 of the method 600, a counter is generated by the system 150 to keep track of encoded content segments and targeted content segments transmitted by the CDN to the electronic device 104. A first count value and a second count value are initialized in the counter. The first count value is configured to track a number of encoded content segments transmitted by the CDN to the electronic device 104, and the second count value is configured to track a number of targeted content segments transmitted by the CDN to the electronic device 104.
[00104] At operation 608 of the method 600, the first count value and the second count value are adapted after each transmission from the CDN to the electronic device 104 in relation to the content requested by the subscriber 102. The adapted first count value and the second count value are configured to guide subsequent downloading of the encoded content segments and the targeted content segments from the CDN to the electronic device 104 till the end of stream of the content.
[00105] FIG. 7 shows a flow diagram of a method 700 for facilitating streaming of content with targeted content to content viewers, in accordance with an embodiment of the invention. The various steps and/or operations of the flow diagram, and combinations of steps/operations in the flow diagram, may be implemented by, for example, hardware, firmware, a processor, circuitry and/or by a system such as the system 150 explained with reference to FIGS. 2 to 5B and/or by a different device associated with the execution of software that includes one or more computer program instructions. The method 700 starts at operation 702.
[00106] At operation 702, the method 700 includes receiving, by a system, a manifest (such as the modified manifest explained with reference to FIGS. 2 to 5B) related to the content requested by the content viewer from a content provider platform. The manifest may include at least a plurality of encoded content playback Uniform Resource Locators (URLs) each corresponding to an encoding ladder of the content, encoded stream availability data, sequence data of encoded content segments, and the targeted content marker data. The targeted content marker data indicates towards the location of various Ad position markers (or SCTE-35 markers) within the content stream.
[00107] At operation 704, the method 700 includes accessing, by the system, encoded content segments of the content based, at least in part, on the encoded content playback URL.
[00108] At operation 706, the method 700 includes determining, by a system, the targeted content for the content viewer, the targeted content including at least targeted content segments. In an example, each of the targeted content segments may be of a uniform duration or fixed duration such as 4 second duration. Further, it is noted that the targeted content segments are also encoded similar to the encoded content segments.
[00109] At operation 708, the method 700 includes determining, by the system, one or more positions for inserting the targeted content segments in between the encoded content segments corresponding to the content while transmitting the content to the electronic device based, at least in part, on the targeted content marker data.
[00110] At operation 710, the method 700 includes determining, by the system via a counter, a first count value, and a second count value. The first count value indicates that a segment from the encoded content segments is to be transmitted next. Further, the second count value indicates the number of targeted content segments that replace the encoded content segments.
[00111] At operation 712, the method 700 includes adapting, by the system, the first count value (i.e., media sequence count value) and the second count value (discontinuity sequence count value) to indicate the segment to be fetched next for transmission to the electronic device.
[00112] At operation 714, the method 700 includes updating, by the system, the manifest for a Content Delivery Network (CDN) based, at least in part, on the adapted first count value and the adapted second count value. The updated manifest may include a plurality of encoded content playback Uniform Resource Locators (URLs) each corresponding to an encoding ladder of the content, encoded stream availability data, sequence data of the encoded content segments, the targeted content playback URL, and the targeted content marker data. Further, the updated manifest may include information related to the encoded content segments indicating a number of segments related to the content, size of each segment, size of the content, an order of streaming of content, available resolutions for each content segment and available bitrates for each content segment.
[00113] Various embodiments disclosed herein provide numerous advantages. More specifically, the embodiments disclosed herein suggest techniques for facilitating streaming of content with targeted content such as advertisements to content viewers. The dynamic and real-time insertion of Ad content in streaming media content, without any additional delay ensures that Ad content can be added on the server side directly into the requested media content. Further, the content provider is able to control the Ad content it renders. Moreover, the tracking of count value of each segment ensures synchronization of count when Ad content is inserted in place of Ad position markets in the media content thereby indicating a correct segment to be fetched next. Such synchronization provides a seamless experience for the viewers of the media content.
[00114] The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the present invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The exemplary embodiment was chosen and described in order to best explain the principles of the present invention and its practical application, to thereby enable others skilled in the art to best utilize the present invention and various embodiments with various modifications as are suited to the particular use contemplated.
,CLAIMS:CLAIMS
I/We Claim:
1. A computer-implemented method for streaming content with targeted content on an electronic device of a content viewer, the computer-implemented method comprising:
determining, by a system, the targeted content for the content viewer, the targeted content including at least targeted content segments;
determining, by the system, one or more positions for inserting the targeted content segments in between encoded content segments corresponding to the content while transmitting the content to the electronic device based, at least in part, on a targeted content marker data;
determining, by the system via a counter, a first count value, and a second count value, the first count value indicating that a segment from the encoded content segments is to be transmitted next and the second count value indicating a number of the targeted content segments that replace the encoded content segments;
adapting, by the system, the first count value and the second count value to indicate the segment to be fetched next for transmission to the electronic device; and
updating, by the system, a manifest for a Content Delivery Network (CDN) based, at least in part, on the adapted first count value and the adapted second count value.
2. The computer-implemented method as claimed in claim 1, wherein determining the targeted content, further comprises:
accessing, by the system, a profile associated with the content viewer from a database;
predicting, by the system, a preference of the content viewer for the targeted content based, at least in part, on the profile; and
requesting, by the system, a targeted content playback URL from a content provider platform based, at least in part, on the preference of the content viewer.
3. The computer-implemented method as claimed in claim 2, wherein the profile comprises at least an information related to age, gender, location, network provider, access patterns, content genre preferences, language preferences, viewing history of the content viewer.
4. The computer-implemented method as claimed in claim 1, further comprising:
transmitting, by the system, the updated manifest related to the electronic device, the manifest comprising a plurality of encoded content playback Uniform Resource Locators (URLs) each corresponding to an encoding ladder of the content, encoded stream availability data, sequence data of encoded content segments, the targeted content playback URL, and the targeted content marker data.
5. The computer-implemented method as claimed in claim 4, wherein the manifest further comprises information related to the encoded content segments indicating a number of segments related to the content, size of each segment, size of the content, an order of streaming of content, available resolutions for each content segment and available bitrates for each content segment.
6. The computer-implemented method as claimed in claim 1, further comprising:
determining, by the system, whether a time duration of the targeted content segments is less than a fixed time duration;
upon determining that the time duration of the targeted content segments is less than the fixed time duration accessing, by the system, a filler content segment from a database; and
appending, by the system, the filler content segment to the targeted content segments.
7. The computer-implemented method as claimed in claim 1, wherein adapting the first count value and the second count value, further comprises:
determining, by the system, a set of timestamps associated with each segment of the encoded content segment and the targeted content segment; and
updating, by the system, the first count value and the second count value to indicate the segment to be fetched next for transmission to the electronic device based, at least in part, on the set of timestamps.
8. The computer-implemented method as claimed in claim 7, wherein updating the first count value and the second count value, further comprises:
initializing, by the system, the first count value and the second count value as null values;
incrementing, by the system, the first count value if it is determined that the encoded content segment is to be transmitted next to the electronic device; and
incrementing, by the system, the second count value if it is determined that the targeted content segment is to be transmitted next to the electronic device based, at least in part, on targeted content marker data.
9. The computer-implemented method as claimed in claim 1, further comprising:
correlating, by the system, the encoded content segments and targeted content segments to be fetched across different resolutions based, at least in part, on the adapted first count value and the adapted second count value.
10. The computer-implemented method as claimed in claim 1, further comprising:
determining, by the system, whether the target content can be inserted in between the encoded content segments based, at least in part, on a content policy of the content provider platform.
11. A system for streaming content with targeted content on an electronic device of a content viewer, the system comprising:
a memory for storing instructions; and
a processor configured to execute the instructions and thereby cause the system, at least in part, to:
determine the targeted content for the content viewer, the targeted content including at least targeted content segments;
determine one or more positions for inserting the targeted content segments in between encoded content segments corresponding to the content while transmitting the content to the electronic device based, at least in part, on a targeted content marker data;
determine via a counter, a first count value, and a second count value, the first count value indicating that a segment from the encoded content segments is to be transmitted next and the second count value indicating a number of the targeted content segments that replace the encoded content segments;
adapt the first count value and the second count value to indicate the segment to be fetched next for transmission to the electronic device; and
update a manifest for a Content Delivery Network (CDN) based, at least in part, on the adapted first count value and the adapted second count value.
12. The system as claimed in claim 13 wherein, to determine targeted content, the system is further caused, at least in part, to:
access a profile associated with the content viewer from a database;
predict a preference of the content viewer for the targeted content based, at least in part, on the profile; and
request a targeted content playback URL from a content provider platform based, at least in part, on the preference of the content viewer.
13. The system as claimed in claim 14, wherein the profile comprises at least an information related to age, gender, location, network provider, access patterns, content genre preferences, language preferences, viewing history of the content viewer.
14. The system as claimed in claim 13, wherein the system is further caused, at least in part, to:
transmit the updated manifest related to the electronic device, the manifest comprising a plurality of encoded content playback Uniform Resource Locators (URLs) each corresponding to an encoding ladder of the content, encoded stream availability data, sequence data of encoded content segments, the targeted content playback URL, and the targeted content marker data.
15. The system as claimed in claim 15, wherein the manifest further comprises information related to the encoded content segments indicating a number of segments related to the content, size of each segment, size of the content, an order of streaming of content, available resolutions for each content segment and available bitrates for each content segment.
16. The system as claimed in claim 13, wherein, the system is further caused, at least in part, to:
determine whether a time duration of the targeted content segments is less than a fixed time duration;
upon determining that the time duration of the targeted content segments is less than the fixed time duration access a filler content segment from a database; and
append the filler content segment to the targeted content segments.
17. The system as claimed in claim 13, wherein, to adapt the first count value and the second count value, the system is further caused, at least in part, to:
determine a set of timestamps associated with each segment of the encoded content segment and the targeted content segment; and
update the first count value and the second count value to indicate the segment to be fetched next for transmission to the electronic device based, at least in part, on the set of timestamps.
18. The system as claimed in claim 19, wherein, to update the first count value and the second count value, the system is further caused, at least in part, to:
initialize the first count value and the second count value as null values;
increment the first count value if it is determined that the encoded content segment is to be transmitted next to the electronic device; and
increment the second count value if it is determined that the targeted content segment is to be transmitted next to the electronic device based, at least in part, on targeted content marker data.
19. The system as claimed in claim 13, wherein the system is further caused, at least in part, to:
correlate the encoded content segments and targeted content segments to be fetched across different resolutions based, at least in part, on the adapted first count value and the adapted second count value.
20. The system as claimed in claim 13, wherein the system is further caused, at least in part, to:
determine whether the target content can be inserted in between the encoded content segments based, at least in part, on a content policy of the content provider platform.
21. A non-transitory computer-readable storage medium comprising computer-executable instructions that, when executed by at least a processor of a system, cause the system to perform a method comprising:
determining a targeted content for a content viewer, the targeted content including at least targeted content segments;
determining one or more positions for inserting the targeted content segments in between encoded content segments corresponding to a content while transmitting the content to an electronic device of the content viewer based, at least in part, on a targeted content marker data;
determining via a counter, a first count value, and a second count value, the first count value indicating that a segment from the encoded content segments is to be transmitted next and the second count value indicating a number of the targeted content segments that replace the encoded content segments;
adapting the first count value and the second count value to indicate the segment to be fetched next for transmission to the electronic device; and
updating a manifest for a Content Delivery Network (CDN) based, at least in part, on the adapted first count value and the adapted second count value.
| # | Name | Date |
|---|---|---|
| 1 | 202121055541-STATEMENT OF UNDERTAKING (FORM 3) [30-11-2021(online)].pdf | 2021-11-30 |
| 2 | 202121055541-PROVISIONAL SPECIFICATION [30-11-2021(online)].pdf | 2021-11-30 |
| 3 | 202121055541-POWER OF AUTHORITY [30-11-2021(online)].pdf | 2021-11-30 |
| 4 | 202121055541-FORM 1 [30-11-2021(online)].pdf | 2021-11-30 |
| 5 | 202121055541-DRAWINGS [30-11-2021(online)].pdf | 2021-11-30 |
| 6 | 202121055541-DECLARATION OF INVENTORSHIP (FORM 5) [30-11-2021(online)].pdf | 2021-11-30 |
| 7 | 202121055541-Proof of Right [12-05-2022(online)].pdf | 2022-05-12 |
| 8 | 202121055541-Request Letter-Correspondence [17-10-2022(online)].pdf | 2022-10-17 |
| 9 | 202121055541-Power of Attorney [17-10-2022(online)].pdf | 2022-10-17 |
| 10 | 202121055541-Form 1 (Submitted on date of filing) [17-10-2022(online)].pdf | 2022-10-17 |
| 11 | 202121055541-Covering Letter [17-10-2022(online)].pdf | 2022-10-17 |
| 12 | 202121055541-FORM 18 [30-11-2022(online)].pdf | 2022-11-30 |
| 13 | 202121055541-DRAWING [30-11-2022(online)].pdf | 2022-11-30 |
| 14 | 202121055541-CORRESPONDENCE-OTHERS [30-11-2022(online)].pdf | 2022-11-30 |
| 15 | 202121055541-COMPLETE SPECIFICATION [30-11-2022(online)].pdf | 2022-11-30 |
| 16 | Abstract1.jpg | 2022-12-23 |
| 17 | 202121055541-FER.pdf | 2023-08-24 |
| 18 | 202121055541-OTHERS [07-02-2024(online)].pdf | 2024-02-07 |
| 19 | 202121055541-FER_SER_REPLY [07-02-2024(online)].pdf | 2024-02-07 |
| 20 | 202121055541-COMPLETE SPECIFICATION [07-02-2024(online)].pdf | 2024-02-07 |
| 21 | 202121055541-CLAIMS [07-02-2024(online)].pdf | 2024-02-07 |
| 22 | 202121055541-ABSTRACT [07-02-2024(online)].pdf | 2024-02-07 |
| 23 | 202121055541-PA [03-10-2024(online)].pdf | 2024-10-03 |
| 24 | 202121055541-ASSIGNMENT DOCUMENTS [03-10-2024(online)].pdf | 2024-10-03 |
| 25 | 202121055541-8(i)-Substitution-Change Of Applicant - Form 6 [03-10-2024(online)].pdf | 2024-10-03 |
| 26 | 202121055541-RELEVANT DOCUMENTS [07-10-2025(online)].pdf | 2025-10-07 |
| 27 | 202121055541-POA [07-10-2025(online)].pdf | 2025-10-07 |
| 28 | 202121055541-MARKED COPIES OF AMENDEMENTS [07-10-2025(online)].pdf | 2025-10-07 |
| 29 | 202121055541-FORM 13 [07-10-2025(online)].pdf | 2025-10-07 |
| 30 | 202121055541-AMENDED DOCUMENTS [07-10-2025(online)].pdf | 2025-10-07 |
| 1 | SearchHistoryE_04-08-2023.pdf |
| 2 | 202121055541_SearchStrategyAmended_E_202121055541_Search_StrategyAE_06-11-2025.pdf |