Method, apparatus and program for constructing a linear media source extension (MSE) buffer from two or more non-linear media sources using MPD chaining

The method constructs a linear MSE buffer from non-linear sources using MPD chaining, addressing nonlinear playback and encrypted live content integration, ensuring efficient media playback with advertisements.

JP7789075B2Active Publication Date: 2025-12-19TENCENT AMERICA LLC
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2023546508
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-09-19
Filing Date
2022-09-20
Publication Date
2025-12-19
Estimated Expiration
2042-09-20

AI Technical Summary

Technical Problem

Existing MPEG DASH technologies struggle with nonlinear playback scenarios and encrypted live content, particularly when integrating advertisements into a single Media Source Extension (MSE) buffer, as they fail to effectively handle non-linear media segments and protected live content.

Method used

A method is provided to construct a linear MSE buffer timeline from two or more non-linear sources using MPD chaining, enabling non-linear playback and supporting the W3C Encrypted Media Extensions for playback of protected live content by appending media segments based on specific timing models and configuring the EME interface.

Benefits of technology

Enables seamless integration of advertisements and encrypted live content into a single MSE buffer, facilitating efficient and flexible media playback across multiple timelines.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007789075000001
    Figure 0007789075000001
  • Figure 0007789075000002
    Figure 0007789075000002
  • Figure 0007789075000003
    Figure 0007789075000003
Patent Text Reader

Abstract

A method and apparatus may be provided for constructing a linear media source extension (MSE) buffer from two or more nonlinear media sources using MPD chaining. The method may include parsing at least one retrieved media presentation segment (MPD) and retrieving a live MPD based on at least one URL, where the live MPD includes one or more live media segments. The method may include appending one or more advertising media segments to a first MSE source buffer based on a first timing model, and chaining the one or more live media segments to the one or more advertising media segments by appending the one or more live media segments to the first buffer based on a second timing model. The one or more advertising media segments and the one or more live media segments may be dispatched based on the first timing model and the second timing model.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Provisional Application No. 63 / 246,233, filed September 20, 2021, and U.S. Application No. 17 / 947,801, filed September 19, 2022, the entire contents of which are expressly incorporated herein by reference.

[0002] Embodiments of the present disclosure relate to streaming media content, and more particularly to streaming media advertising and live content via the Moving Picture Experts Group (MPEG) dynamic adaptive streaming over hypertext transfer protocol (DASH). [Background technology]

[0003] MPEG DASH provides a standard for streaming media content over IP networks. MPEG DASH uses media presentation descriptions (MPDs) and events to deliver media timeline-related events to clients. The ISO / IEC 23009-1 DASH standard enables streaming of multi-rate content. The DASH standard provides a single linear timeline where periods are successive of each other in a single timeline. ISO / IEC 23009-1 also provides tools for MPD chaining, i.e., signaling the URL of the next MPD to play in an MPD, which can be used for pre-roll ad insertion.

[0004] MPEG DASH provides a standard for streaming multimedia content over IP networks. While the standard addresses linear playback of media content, it cannot address nonlinear situations, such as when media segments associated with different timelines exist that are independent of each other. MPD chaining and pre-roll ad insertion can be used to overcome the aforementioned drawbacks. However, when a DASH player uses the W3C Media Source Extensions, it is extremely difficult to address such nonlinear playback using a single MSE source buffer, so even MPD chaining and pre-roll ad insertion fail. Furthermore, MPD chaining and pre-roll ad insertion cannot be used with the W3C Encrypted Media Extensions for playback of protected live content when ads are expected to play before using MPD chaining or pre-roll elements.

[0005] Therefore, a method is needed for constructing a linear Media Source Extension (MSE) buffer timeline from two or more non-linear sources using MPD chaining. Additionally, a method is needed for processing W3C Encrypted Media Extensions for playback of protected live content using MPD chaining. Summary of the Invention [Means for solving the problem]

[0006] The present disclosure addresses one or more technical problems. The present disclosure provides methods, processes, apparatus, and non-transitory computer-readable media for constructing a linear Media Source Extension (MSE) source buffer timeline from two or more non-linear sources using MPD chaining. In addition, the present disclosure provides methods, processes, apparatus, and non-transitory systems for performing non-linear playback using a single MSE source buffer. Furthermore, the present disclosure also enables the use of a single Encrypted Media Extension (EME) interface for playback of advertisements and encrypted live content.

[0007]

[0010] An embodiment of the present disclosure may provide an apparatus for constructing a linear media source extension (MSE) buffer from two or more non-linear media sources using MPD chaining. The method may be executed by at least one processor and may include the steps of: parsing at least one acquired media presentation segment (MPD) including one or more advertising media segments, the one or more advertising media segments including at least one universal resource locator (URL); acquiring a live MPD based on the at least one URL, the live MPD including the one or more live media segments; chaining the one or more live media segments to the one or more advertising media segments by appending the one or more advertising media segments to a first MSE source buffer based on a first timing model and appending the one or more live media segments to the first MSE source buffer based on a second timing model, the second timing model supporting time-shifting buffer depths of the at least one live media segment; and dispatching the one or more advertising media segments and the one or more live media segments based on the first timing model and the second timing model.

[0008]

[0009] An embodiment of the present disclosure may provide an apparatus for constructing a linear media source extension (MSE) buffer from two or more non-linear media sources using MPD chaining. The apparatus may include at least one memory configured to store computer program code and at least one processor configured to access and operate as instructed by the computer program code. The program code may include: parsing code configured to cause the at least one processor to parse at least one retrieved media presentation segment (MPD) including one or more advertising media segments, the one or more advertising media segments including at least one universal resource locator (URL); first acquisition code configured to cause the at least one processor to acquire a live MPD based on the at least one URL, the live MPD including the one or more live media segments; and the at least one processor configured to append the one or more advertising media segments to a first MSE source buffer based on a first timing model. The broadcasting system may include a first appending code configured to cause at least one processor to chain the one or more live media segments to the one or more advertising media segments by appending the one or more live media segments to a first MSE source buffer based on a second timing model, wherein the second timing model supports a time-shift buffer depth of the at least one live media segment; and a dispatching code configured to cause the at least one processor to dispatch the one or more advertising media segments and the one or more live media segments based on the first timing model and the second timing model.

[0009]

[0010] Embodiments of the present disclosure may provide a non-transitory computer-readable medium storing instructions that, when executed by one or more processors of a device for constructing a linear media source extension (MSE) buffer from two or more non-linear media sources using MPD chaining, may include one or more instructions to cause the one or more processors to parse at least one retrieved media presentation segment (MPD) including one or more advertising media segments, the one or more advertising media segments including at least one universal resource locator (URL), retrieve a live MPD based on the at least one URL, the live MPD including the one or more live media segments, append the one or more advertising media segments to a first MSE source buffer based on a first timing model, and append the one or more live media segments to the first MSE source buffer based on a second timing model, the second timing model supporting time-shifting buffer depth of the at least one live media segment, and dispatch the one or more advertising media segments and the one or more live media segments based on the first timing model and the second timing model. [1] Further features, nature and various advantages of the subject matter of the present disclosure will become more apparent from the following detailed description and the accompanying drawings. [Brief explanation of the drawings]

[0010] [Figure 1] 1 is a simplified diagram of a communication system, according to an embodiment. [Figure 2] FIG. 1 is an exemplary diagram of an arrangement of components in a streaming environment, according to an embodiment. [Figure 3] FIG. 1 is a simplified block diagram of a DASH processing model, according to an embodiment. [Figure 4]FIG. 1 is a simplified diagram of a Media Presentation Description (MPD) chain between an advertisement MPD and a live MPD, according to an embodiment. [Figure 5] 5A and 5B are simplified diagrams of a media source extension (MSE) buffer, according to an embodiment. [Figure 6] FIG. 10 illustrates an exemplary flowchart diagram for constructing a linear MSE source buffer from two or more non-linear sources using MPD chaining, according to an embodiment. [Figure 7] 1 is a simplified diagram of a computer system, according to an embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0011] The proposed features described below may be used separately or combined in any order. Furthermore, the embodiments may be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium.

[0012] 1 illustrates a simplified block diagram of a communication system 100 according to one embodiment of the present disclosure. The communication system 100 may include at least two terminals 102 and 103 interconnected via a network 105. For unidirectional transmission of data, a first terminal 103 may code video data at a local location for transmission to the other terminal 102 via the network 105. The second terminal 102 may receive the coded video data of the other terminal from the network 105, decode the coded data, and display the recovered video data. Unidirectional data transmission may be common in media serving applications, etc.

[0013] 1 illustrates a second pair of terminals 101 and 104 provided to support bidirectional transmission of coded video, such as might occur during a video conference. For the bidirectional transmission of data, each terminal 101 and 104 may code video data captured at a local location for transmission to the other terminal over network 105. Each terminal 101 and 104 may also receive coded video data transmitted by the other terminal, decode the coded data, and display the recovered video data on a local display device.

[0014] In FIG. 1 , terminals 101, 102, 103, and 104 may be illustrated as a server, a personal computer, and a smartphone, although the principles of the present disclosure are not so limited. Embodiments of the present disclosure contemplate application with laptop computers, tablet computers, media players, and / or dedicated videoconferencing equipment. Network 105 represents any number of networks that convey coded video data among terminals 101, 102, 103, and 104, including, for example, wired and / or wireless communication networks. Communication network 105 may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this discussion, the architecture and topology of network 105 may not be important to the operation of the present disclosure unless described herein below.

[0015] 2 illustrates, by way of example, the placement of video encoders and decoders in a streaming environment. Embodiments may be applicable to other video-enabled applications, including, for example, video conferencing, digital TV, and storage of compressed video on digital media, including CDs, DVDs, memory sticks, and the like.

[0016] The streaming system may include a capture subsystem 203, which may include a video source 201, such as a digital camera, that creates an uncompressed video sample stream 213. The sample stream 213 may be emphasized as a high data volume when compared to an encoded video bitstream and may be processed by an encoder 202 coupled to the video source 201. The encoder 202 may include hardware, software, or a combination thereof to enable or implement aspects of the embodiments, as described in more detail below. The encoded video bitstream 204 may be emphasized as a lower data volume compared to the sample stream and may be stored on a streaming server 205 for future use. One or more streaming clients 212 and 207 may access the streaming server 205 to obtain encoded video bitstreams 208 and 206, which may be copies of the encoded video bitstream 204. The client 212 may include a video decoder 211 that decodes the incoming copy 208 of the encoded video bitstream and creates an outgoing video sample stream 210 that can be rendered on a display 209 or other rendering device. In some streaming systems, the encoded video bitstreams 204, 206, and 208 may be encoded according to particular video coding / compression standards, examples of which are mentioned above and further described herein.

[0017] 3 illustrates a sample DASH processing model 300, such as a sample client architecture for processing DASH and CMAF events. In the DASH processing model 300, a client's requests for media segments (e.g., advertising media segments and live media segments) may be based on addresses described in a manifest 303. The manifest 303 also describes the metadata tracks from which the client may access segments of the metadata tracks, parse them, and send them to the application 301.

[0018] The manifest 303 includes MPD events or events, and the in-band event and "moof" parser 306 may parse the MPD event or event segments and add the event segments to the event and metadata buffer 330. The in-band event and "moof" parser 306 may also fetch media segments and add them to the media buffer 340. The event and metadata buffer 330 may send the event and metadata information to the event and metadata synchronizer and dispatcher 335. The event and metadata synchronizer and dispatcher 335 may dispatch specific events to the DASH player control, selection, and heuristics logic 302 and application-related event and metadata tracks to the application 301.

[0019] According to some embodiments, the MSE may include a pipeline including a file format parser 350, a media buffer 340, and a media decoder 345. The MSE 320 is a logical buffer of media segments, which may be tracked and ordered based on their presentation times. The media segments may include, but are not limited to, advertising media segments associated with an advertising MPD and live media segments associated with a live MPD. Each media segment is added or appended to the media buffer 340 based on the media segment's timestamp offset, which may be used to order the media segments in the media buffer 340.

[0020] Embodiments of the present application may be directed to constructing a linear media source extension (MSE) buffer from two or more non-linear media sources using MPD chaining, where the non-linear media sources may be an advertising MPD and a live MPD, and so the file format parser 350 may be used to process different media and / or codecs used by live media segments included in the live MPD. In some embodiments, the file format parser may issue a change type based on the codec, profile, and / or level of the live media segments.

[0021] As long as a media segment resides in the media buffer 340, the event and metadata buffer 330 maintains the corresponding event segment and metadata. The sample DASH processing model 300 may include a timed metadata tracking parser 325 for tracking metadata associated with in-band events and MPD events. According to Figure 3, the MSE 320 includes only a file format parser 350, a media buffer 340, and a media decoder 345. The event and metadata buffer 330 and the event and metadata synchronizer and dispatcher 335 are not native to the MSE 320 and prevent the MSE 320 from natively processing events and sending them to applications.

[0022] FIG. 4 is a simplified diagram 400 illustrating MPD chaining between an advertisement MPD and a live MPD.

[0023] 4, the advertising MPD 410 may include one or more universal resource locators (URLs) that include addresses to at least one live MPD 420. According to an aspect of an embodiment, the URL link between the advertising MPD 410 and the live MPD 420 may be an MPD chain. Each advertising MPD 410 may include one or more periods Pa1, Pa2, etc. Similarly, each line MPD 420 may include one or more periods P1, P2, etc. According to an aspect of the present disclosure, a media player may play the advertising MPD 410 before the live MPD 420.

[0024] According to one aspect of the present disclosure, one or more timing models may be provided for a DASH player to configure a single media source extension (MSE) buffer from two or more non-linear media sources for media playback using MPD chaining. The MSE buffer may be configured to support the required time-shift buffer depth. Reinitialization segments may be added to the MSE buffer to play both advertising media and live media at different codes, profiles, and / or levels. In some embodiments, advertising media segments may be maintained in the time-shift buffer to allow the DASH player to seek back to an advertisement or to replace advertising media segments with live media segments to allow the DASH player to seek to a true live time-shift buffer.

[0025] One or more MPDs may be obtained from the video data. The one or more MPDs may be parsed to generate and / or obtain one or more advertising media segments. In some embodiments, the one or more advertising media segments may include at least one universal resource locator (URL) associated with one or more live media segments. Advertising media segments (also referred to as "on-demand content") may be available prior to playback. Advertising media segments may not have a known duration, but may have at least a maximum duration-D MAX The presentation time offset associated with one or more advertising media segments may have a timescale T P PTO with P It may be known as.

[0026] The live content may include one or more live MPDs. The one or more live MPDs may include one or more live media segments. The start time of the live content and the current period start time of the live content may be known. The presentation time offset associated with one or more live media segments may be calculated based on the timescale T L PTO with L The estimated earliest presentation time (EEPT) of the segment can be known as L ) may not be known. The maximum segment duration associated with one or more live media segments may be known as MSD, and the desired time-shift buffer depth for the live content may be known as TSB L It may also be known as.

[0027] According to embodiments of the present disclosure, the advertisement MPD may not have any information about the live MPD, and therefore, in order to configure the MSE buffer, the DASH client may need to download the live MPD before configuring the MSE buffer.

[0028] According to the above-described embodiment, the DASH player (e.g., 300) may download another advertisement MPD and parse it. The file format parser may find and / or obtain the required codec in the advertisement MPD. The URL in the advertisement media segment from the advertisement MPD may be used to download the live MPD and find the live edge and corresponding period of the live media MPD. The file format parser may find / obtain the required codec in the live MPD. The MSE buffer may be configured based on the codec information of both the advertisement MPD and the live MPD (or the advertisement media segment and the live media segment). The advertisement media segment may be downloaded from the advertisement MPD and added to the MSE buffer using a timing model, such as the timing model of FIGS. 5A-5B. Following the addition of the advertisement media segment, the live media segment may be downloaded or added to the MSE buffer using a timing model, such as the timing model of FIGS. 5A-5B.

[0029] 5A-5B illustrate example media source buffers 500 and 550 for processing advertising and live media segments using MPD chaining.

[0030] As shown in Figure 5A, the MSE append window is set to the maximum advertisement period (e.g., D MAX ) or larger. The MSE append window timestamp offset is the timestamp offset of the TSO while appending the advertising segment. P =-(PTO P / T P )

[0031] As shown in Figure 5B, the MSE append window is calculated by the DASH client using the live MPD time shift buffer (TSB L ) in consideration of D Live In some embodiments, D Live =Max(TSB L ,DMAX ) or more. The MSE append window timestamp offset is L It may be reset as TSO L Before appending the first live segment, L ,D MAX )+EEPT l +MSD-(PTO L / T L ) may be equal to. Based on the append and timestamp offset, a seek may be made on the MSE buffer between the advertising media segment time and the live media segment time. Based on the last frame of the advertising media segment being played before the live media segment, a seek may be made to the start of the live media segment. If the advertising media segment is expected to be played once, the advertising media segment time range may be purged. In embodiments where the advertising media segment may be played after a player seeks to a time-shifted live media segment, a third time range may be created for the time-shifted live media segment.

[0032] The ad plays once and is removed MSE Settings: Check whether MSE can support the advertisement video codec and profile, create MSE buffer, and MSE buffer append window duration is D MAX It can be set up to

[0033] Playback: MSE timestamp official is TSO=-(PTO P / T P ), and a first advertising media segment may be obtained and appended to the MSE buffer, and each of the advertising media segments of the advertising MPD may be appended to the MSE buffer. Following each media segment being downloaded, the MSE append window may be set based on the duration D LIVE The timestamp offset may be extended to TSO L =Max(TSB L ,D MAX)+EPT+MSD-(PTO L / T L ) The first live media segment may be added to the MSE buffer, and each live media segment from the live MPD may also be added. Based on reaching the end of the advertising media segment, seek to the start time of the live media segment.

[0034] Time-shift buffer: May remove the range from the beginning to the end of an advertising media segment.

[0035] The ad plays once, but remains mid-roll MSE Settings: Check whether MSE can support the advertisement video codec and profile, create MSE buffer, and MSE buffer append window duration is TSB Max =D MAX +upper estimate of TSBD L The start of the append window is set to zero and the end of the append window is set to TSB Max +D Live In some embodiments, if the duration of the live program is not known, the append window edge may be a large value or infinity.

[0036] Playback: MSE timestamp offset is TSO=TSB Max -D MAX -(PTO P / T P ) The first advertising media segment may be obtained and added to the MSE buffer, and each of the advertising media segments of the advertising MPD may be added to the MSE buffer. A change type may be issued regarding the codec, profile, and / or level of the live media segment. The timestamp offset may be set to TSO L =Max(TSB L ,D MAX )+EPT+MSD-(PTO L / T L) The first live media segment may be added to the MSE buffer, and each live media segment from the live MPD may also be added. Based on reaching the end of the advertising media segment, seek to the start time of the live media segment. The first advertising media segment may then be retrieved again and added to the MSE.

[0037] Timeshift buffer management: The timestamp offset of the timeshift buffer is TSO=TSB Max -D Max -(PTO P / T P )-(PTO L / T L ) Based on the advertising media segment being played again, one or more advertising media segments may be obtained and added to the time-shift buffer. Each advertising media segment may be added to the time-shift buffer.

[0038] W3C Encrypted Media Extensions (EME) Interface The W3C EME interface can be used to decrypt encrypted data during media playback. Ad content may not typically be protected. However, live content may be protected. When live content is protected, the player may need to download the ad MPD and use the URL of the ad MPD to download the live MPD. Using the information in the live MPD, the player can configure the EME and MSE pipelines. The EME pipeline configuration can include obtaining a license key from a license server. The player can then use the ad MPD to start downloading ad segments and add them to the media pipeline.

[0039] In some embodiments, the MSE and EME may be configured sequentially because the advertisement MPD may not have information about the live MPD. The player may download the advertisement MPD. Using the URL of the advertisement MPD, the player may download and parse the live MPD. Given the parameters of the live MPD, the player may configure the MSE and EME buffers. The player may then download the subsequent advertisement MPD and begin downloading the corresponding segments and adding them to the media pipeline.

[0040] In some embodiments, the ad MPD may have information about the live MPD, and the MSE and EME may be configured in parallel. The player may download the ad MPD, and then, based on parsing the ad MPD, the player may store the period in its internal memory. Using the URL of the ad MPD, the player may download and parse the live MPD and store the period in its internal memory. Given the parameters of the ad and the live MPD, the player may configure the MSE buffer and the EME buffer. The ad segments from the ad period may then be downloaded and added to the media pipeline.

[0041] FIG. 6 shows an example flowchart illustrating a process 600 for building a linear media source extension (MSE) buffer from two or more non-linear media sources using MPD chaining.

[0042] At operation 610, at least one retrieved media presentation segment (MPD) including one or more advertising media segments may be parsed. The one or more advertising media segments may include at least one universal resource locator (URL). As an example, the manifest parser 303, the in-band event, and the moof parser 306 may parse the retrieved MPD. The operation may include obtaining one or more codes associated with the at least one retrieved MPD and the live MPD.

[0043] At operation 615, a live MPD may be obtained based on the at least one URL, the live MPD including one or more live media segments. As an example, the live MPD 420 may be obtained based on parsing the URL of the advertisement MPD 410.

[0044] In operation 620, one or more advertising media segments may be added to a first buffer based on a first timing model. In some embodiments, the first buffer may be extended to a first maximum duration based on at least one obtained MPD. As an example, the MSE buffer may be D MAX The timestamp offset of the first buffer may also be set based on a first presentation time offset associated with one or more advertising media segments. As an example, the first presentation time offset may be set as follows: TSO=TSB Max -D MAX -(PTO P / T P In some embodiments, the first presentation time offset may include TSO=-(PTO P / T P ).

[0045] In operation 625, one or more live media segments may be chained to one or more advertising media segments by appending one or more live media segments to the first buffer based on a second timing model. In some embodiments, live media segments may be appended only after each advertising media segment is added. Appending based on a second timing model may include extending the first buffer to a second maximum duration based on the one or more live media segments. A timestamp offset of the first buffer based on a second presentation time offset associated with the one or more live media segments may be reset. As an example, the MSE may use a TSO L=Max(TSB L ,D MAX )+EPT+MSD-(PTO L / T L ) may be extended to

[0046] The first live media segment may be appended to the first buffer among the one or more live media segments. According to an embodiment, the second presentation time offset is based on an estimated earliest presentation time associated with the one or more live media segments and a maximum segment duration associated with the one or more live media segments.

[0047] The player may seek to the beginning of one or more live media segments appended to the first buffer based on the last frame of the one or more advertising media segments being played.

[0048] At operation 630, one or more advertising media segments and one or more live media segments may be dispatched based on the first timing model and the second timing model. In some embodiments, a first advertising media segment from among the one or more advertising media segments may be purged from the first buffer based on the first advertising media segment being configured to play once. In other embodiments, a first advertising media segment from among the one or more advertising media segments may be added to a third buffer (e.g., a timestamp buffer) based on the first advertising media segment being configured to play multiple times, and a first live media segment from the one or more live media segments may be added before the first advertising media segment based on the first advertising media segment being a mid-roll advertisement in the first live media segment.

[0049] In some embodiments, one or more license keys may be obtained from a license server based on the one or more live media segments that have been encrypted, and the one or more license keys may be stored and / or appended to a second buffer.

[0050] 6 illustrates example blocks of process 600, in implementations, process 600 may include additional, fewer, different, or differently arranged blocks than those shown in FIG. 6. In embodiments, any of the blocks of process 600 may be combined in any amount or arranged in any order as desired. In embodiments, two or more of the blocks of process 600 may be performed in parallel.

[0051] The techniques described above may be implemented using computer-readable instructions, as computer software physically stored on one or more computer-readable media, or by one or more tangibly configured hardware processors. For example, Figure 7 illustrates a computer system 700 suitable for implementing various embodiments.

[0052] Computer software can be coded using any suitable machine code or computer language that can be subjected to mechanisms such as assembly, compilation, linking, etc. to create code containing instructions that can be executed by a computer central processing unit (CPU), graphics processing unit (GPU), etc., directly, or via interpretation, microcode execution, etc.

[0053] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, and the like.

[0054] 7 for computer system 700 are exemplary in nature and are not intended to suggest any limitation on the scope of use or functionality of the computer software implementing embodiments of the present disclosure. The arrangement of components should not be interpreted as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 700.

[0055] The computer system 700 may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users, for example, via tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), or olfactory input. The human interface devices may be used to capture certain media that do not necessarily involve direct conscious human input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a still image camera), and video (e.g., two-dimensional video, three-dimensional video, including stereoscopic video).

[0056] The input human interface devices may include one or more of a keyboard 701, a mouse 702, a trackpad 703, a touchscreen 710, a joystick 705, a microphone 706, a scanner 708, and a camera 707 (only one of each is shown in the figure).

[0057] The computer system 700 may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through haptic output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen 710 or joystick 705, although haptic feedback devices that do not function as input devices may also be present), audio output devices (e.g., speakers 709, headphones, etc.), visual output devices (e.g., screens 710, including CRT screens, LCD screens, plasma screens, and OLED screens, each with or without touchscreen input capabilities, and each with or without haptic feedback capabilities, some of which may be capable of outputting two-dimensional visual output or three-dimensional hypervisible output via means such as stereographic output, virtual reality glasses, holographic displays, and smoke tanks), and printers.

[0058] The computer system 700 may also include human-accessible storage devices and their associated media such as optical media including CD / DVD ROM / RW 720 with media such as CD / DVD 711, thumb drives 722, removable hard drives or solid state drives 723, legacy magnetic media such as tape and floppy disks, and dedicated ROM / ASIC / PLD-based devices such as security dongles.

[0059] Those skilled in the art will also understand that the term "computer-readable medium" as used in connection with the presently disclosed subject matter does not encompass transmission media, carrier waves, or other transitory signals.

[0060] The computer system 700 may also include an interface 799 to one or more communications networks 798. The networks 798 may be, for example, wireless, wired, optical, and may be local, wide area, metropolitan, vehicular, and industrial, real-time, delay-tolerant, and the like. Examples of networks 798 include, for example, local area networks such as Ethernet, cellular networks including WLAN, GSM, 3G, 4G, 5G, LTE, and the like, television wired or wireless wide area digital networks including cable, satellite, and terrestrial television, in-vehicle and industrial networks including CANBus, and the like. Certain networks 798 typically require an external network interface adapter connected to a particular general-purpose data port or peripheral bus (750 and 751) (e.g., a USB port on computer system 700), while other networks are typically integrated into the core of computer system 700 by connecting to a system bus as described below (e.g., an Ethernet interface to a PC computer system, or a cellular network interface to a smartphone computer system). Using any of these networks 798, computer system 700 can communicate with other entities. Such communication may be unidirectional receive only (e.g., broadcast TV), unidirectional transmit only (e.g., a CANbus to certain CANbus devices), or bidirectional, e.g., to other computer systems using local-area or wide-area digital networks. Specific protocols and protocol stacks may be used with each of these networks and network interfaces, as described above.

[0061] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be connected to core 740 of computer system 700 .

[0062] The core 740 may include one or more central processing units (CPUs) 741, graphics processing units (GPUs) 742, graphics adapters 717, specialized programmable processing units in the form of field programmable gate arrays (FPGAs) 743, hardware accelerators 744 for specific tasks, etc. These devices may be connected via a system bus 748, along with read-only memory (ROM) 745, random access memory 746, and internal mass storage such as an internal non-user-accessible hard drive, SSD, etc. 747. In some computer systems, the system bus 748 may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus 748 or via a peripheral bus 751. Peripheral bus architectures include PCI, USB, etc.

[0063] The CPU 741, GPU 742, FPGA 743, and accelerator 744 may execute certain instructions that, in combination, may constitute the aforementioned computer code. That computer code may be stored in ROM 745 or RAM 746. Transient data may also be stored in RAM 746, while persistent data may be stored, for example, in internal mass storage 747. Cache memory, which may be closely associated with one or more of the CPU 741, GPU 742, mass storage 747, ROM 745, RAM 746, etc., may be used to enable fast storage and retrieval to any of the memory devices.

[0064] The computer-readable medium can have computer code thereon for performing various computer-implemented operations. The media and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.

[0065] By way of example and not limitation, computer system 700 having the illustrated architecture, and specifically core 740, may achieve functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be user-accessible mass storage, as described above, as well as media associated with specific storage of core 740 that is non-transitory in nature, such as core internal mass storage 747 or ROM 745. Software implementing various embodiments of the present disclosure may be stored on such devices and executed by core 740. Computer-readable media may include one or more memory devices or chips, depending on particular needs. Software may cause core 740, and specifically the processors therein (including a CPU, GPU, FPGA, etc.), to perform particular processes or portions of particular processes described herein, including defining data structures stored in RAM 746 and modifying such data structures according to software-defined processes. Additionally, or alternatively, a computer system may provide functionality as a result of hardwired or otherwise embodied logic in circuitry (e.g., accelerator 744) that can operate in place of or together with software to perform particular processes or portions of particular processes described herein. Where appropriate, references to software can encompass logic, and vice versa. Where appropriate, references to computer-readable media can encompass circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both. The present disclosure encompasses any suitable combination of hardware and software.

[0066] While this disclosure describes several exemplary embodiments, there are alterations, substitutions, and various substitute equivalents that fall within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within its spirit and scope. [Explanation of symbols]

[0067] 100 Communication Systems 101 terminals 102 terminals 103 terminals 104 terminals 105 Network 201 Video Sources 202 Encoder 203 Capture Subsystem 204 encoded video bitstream 205 Streaming Server 206 Encoded Video Bitstream 207 Streaming Client 208 Encoded Video Bitstream 209 Display 210 Outgoing Video Sample Stream 212 Streaming Client 213 Uncompressed Video Sample Stream 300 DASH processing model 301 Application 302 DASH Player Control, Selection, and Heuristic Logic 303 Manifest Parser 306 in-band events and the "moof" parser 325 Timed Metadata Tracking Parser 330 Event and Metadata Buffer 335 Event and Metadata Synchronizer and Dispatcher 340 Media Buffer 345 Media Decoder 350 File Format Parser 410 Advertising MPD 420 Live MPD 500 media source buffers 550 Media Source Buffers 700 Computer Systems 701 Keyboard 702 Mouse 703 Trackpad 705 Joystick 706 Microphone 707 Camera 708 Scanner 709 Speaker 710 Touchscreen 717 Graphics Adapter 720 Optical Media 722 thumb drive 723 Removable Hard Drive or Solid State Drive 740 cores 741 Central Processing Unit, CPU 742 Graphics Processing Unit, GPU 743 Field Programmable Gate Area, FPGA 744 Hardware Accelerator 745 Read-Only Memory, ROM 746 Random Access Memory, RAM 747 Internal mass storage 748 System Bus 750 Peripheral Bus 751 Peripheral Bus 798 Network 799 Interface

Claims

1. 1. A method for constructing a linear media source extension (MSE) buffer from two or more non-linear media sources using MPD chaining, the method being performed by at least one processor and comprising: parsing at least one retrieved media presentation segment (MPD) including one or more advertising media segments, the one or more advertising media segments including at least one universal resource locator (URL); obtaining a live MPD based on the at least one URL, the live MPD including one or more live media segments; appending the one or more advertising media segments to a first media source extension (MSE) source buffer based on a first timing model; chaining the one or more live media segments to the one or more advertising media segments by appending the one or more live media segments to the first MSE source buffer based on a second timing model, wherein the second timing model supports at least a time-shifting buffer depth of the one or more live media segments; dispatching the one or more advertising media segments and the one or more live media segments based on the first timing model and the second timing model; Including, The step of appending the one or more advertising media segments to the first MSE source buffer based on the first timing model comprises: expanding the first MSE source buffer to a first maximum duration based on the at least one obtained MPD; setting a timestamp offset of the first MSE source buffer based on a first presentation time offset associated with the one or more advertising media segments; A method comprising:

2. The step of appending the one or more live media segments to the first MSE source buffer based on the second timing model comprises: expanding the first MSE source buffer to a second maximum duration based on the one or more live media segments; resetting the timestamp offset of the first MSE source buffer based on a second presentation time offset associated with the one or more live media segments; appending a first live media segment of the one or more live media segments to the first MSE source buffer; The method of claim 1 , comprising:

3. 3. The method of claim 2, wherein the second presentation time offset is based on an estimated earliest presentation time associated with the one or more live media segments and a maximum segment duration associated with the one or more live media segments.

4. The method of claim 1 , further comprising obtaining one or more codes associated with the at least one obtained MPD and the live MPD.

5. 10. The method of claim 1, further comprising: seeking to a start of the one or more live media segments appended to the first MSE source buffer based on a last frame of the one or more advertising media segments being played.

6. The method comprises: obtaining one or more license keys from a license server based on the one or more encrypted live media segments; appending the one or more license keys to a second buffer; The method of claim 1 further comprising:

7. 10. The method of claim 1, further comprising: purging a first advertising media segment among the one or more advertising media segments from the first MSE source buffer based on the first advertising media segment being configured to play once.

8. appending a first advertising media segment of the one or more advertising media segments to a third buffer based on the first advertising media segment being configured to be played multiple times; prepend a first advertising media segment among the one or more advertising media segments to the first live media segment based on the first live media segment being a mid-roll advertisement within the first advertising media segment; The method of claim 1 further comprising:

9. 1. An apparatus for constructing a linear media source extension (MSE) buffer from two or more non-linear media sources using MPD chaining, the apparatus comprising: at least one memory configured to store computer program code; at least one processor configured to access said computer program code and to operate as instructed by said computer program code, said computer program code being configured, when executed by said at least one processor, to cause said at least one processor to perform the method of any one of claims 1 to 8; 1. An apparatus comprising:

10. 9. A program comprising one or more instructions that, when executed by one or more processors of a device for constructing a linear Media Source Extension (MSE) buffer from two or more non-linear media sources using MPD chaining, cause the one or more processors to perform the method of any one of claims 1 to 8. End

Citation Information

Patent Citations

  • Low latency streaming media

    CN111586479A

  • Supplemental content insertion using differential media presentation descriptions for video streaming

    CN112055972A

  • Receiver, broadcasting facility, broadcasting system and program

    JP2020010142A

  • Dynamic conditional advertisement insertion

    US20190238950A1

  • Wireless content distribution

    WO2018178704A1