Scalable Request Signaling for Adaptive Streaming Parameterization
The method provides extensible parameterization signaling in DASH streaming media by parsing manifests to construct parameter sets for HTTP requests, enhancing adaptability and efficiency in DASH streaming.
Patent Information
- Application Number
- JP2024531372
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2023-04-17
- Filing Date
- 2023-04-18
- Publication Date
- 2026-02-03
- Estimated Expiration
- 2043-04-18
AI Technical Summary
Current implementations of Dynamic Adaptive Streaming over Hypertext Transport (DASH) lack extensibility in signaling parameterization for media requests, limiting flexibility and adaptability in parameterization schemes defined by service providers.
A method for extensible parameterization signaling in DASH streaming media, involving parsing a manifest to extract a parameterization descriptor, identifying uniform resource identifiers and keys, and constructing parameter sets for HTTP requests, allowing dynamic and adaptive computation of parameters.
Enables flexible and adaptive parameterization of HTTP requests, enhancing the ability of media servers to respond dynamically to client capabilities and network conditions, improving streaming efficiency and adaptability.
Smart Images

Figure 0007810801000009 
Figure 0007810801000010 
Figure 0007810801000011
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of priority to U.S. Nonprovisional Application No. 18 / 301,826, filed April 17, 2023, which claims the benefit of priority to U.S. Provisional Application No. 63 / 332,600, filed April 19, 2022. Each of these prior patent applications is incorporated herein by reference in its entirety.
[0002] FIELD OF THE DISCLOSURE The present disclosure relates generally to media streaming technologies, and more particularly to a method and apparatus for scalable parameterization for media requests in adaptive streaming. [Background technology]
[0003] This background discussion provided herein is intended to generally present the context for the present disclosure. The inventors' work is not admitted expressly or implicitly as prior art to the present disclosure to the extent that that work is described in this background section, along with aspects of the description that may not otherwise be admitted as prior art at the time of the effective filing of this application.
[0004] Dynamic Adaptive Streaming over Hypertext Transport (DASH) enables flexible streaming of multimedia content over IP networks. In DASH, various types of requests may be made from a DASH client to a DASH server to realize various aspects of the functionality and control of dynamic adaptive streaming. Some of these types of requests may be associated with a set of parameters that the DASH server expects to receive when these requests are made from the DASH client. The set of expected parameters for each of these types of requests may be specified from the media server side. Information associated with such parameterization may be signaled from the DASH server to the DASH client for the DASH client to follow when making requests. In current implementations, such signaling of parameterization for requests is not extensible. Summary of the Invention [Problem to be solved by the invention]
[0005]
[0001] The present disclosure relates generally to media streaming technologies, and more particularly to a method and apparatus for extensible parameterization signaling for requests for media in dynamically adaptive streaming. Various example implementations disclosed herein enable a mechanism for a media server to signal to a streaming client which requests to the media server are parameterized and how they are parameterized. The specificity for the parameterization may be defined by the service provider, thus making it extensible. [Means for solving the problem]
[0006] In some example implementations, a method is disclosed for extensible parameterization of HTTP requests for Dynamic Adaptive Streaming over HTTP (DASH) streaming media from a content server by a media streaming device. The method may include sending an initial request for DASH streaming media to a DASH service provider, receiving a manifest for the DASH streaming media from the content server, parsing the manifest to extract a parameterization descriptor associated with the HTTP request, identifying from the parameterization descriptor one or more of a uniform resource identifier and a set of keys, where the uniform resource identifier is linked to a parameterization scheme for the extensible parameterization for the HTTP request, determining one or more types of HTTP requests that correspond to the extensible parameterization according to the one or more of the parameterization scheme and the set of keys, constructing a set of parameters according to the manifest for HTTP requests that are destined for the content server and belong to the one or more types of HTTP requests, and inserting the set of parameters into the HTTP request.
[0007] In the above exemplary implementation, the HTTP request comprises an HTTP GET request.
[0008] In any one of the above example implementations, the uniform resource identifier includes a uniform resource locator (URL) or a uniform resource name (URN).
[0009] In any one of the above example implementations, the one or more types of HTTP requests include a media segment HTTP request type, a manifest HTTP request type, an xlink HTTP request type, a callback HTTP request type that triggers a callback event, or a chaining HTTP request for manifest chaining.
[0010] In any one of the above example implementations, the parameterization scheme includes a definition of a set of keys.
[0011] In any one of the above example implementations, determining one or more types of HTTP requests that require parameterization includes using one or more of the sets of keys and definitions of the sets of keys included in the manifest to identify the one or more types of HTTP requests.
[0012] In any one of the above example implementations, The parameterized descriptor includes a first parameterized selection string, the first parameterized selection string including one or more of a uniform resource identifier followed by a set of keys.
[0013] In any one of the above example implementations, the parameterization descriptor further includes a second parameterization selection string, the second parameterization selection string including a hard-coded identification string representing a selection of an HTTP GET request of a predefined type of parameterization.
[0014] In any one of the above example implementations, at least one of the set of parameters is designated by the manifest as dynamic.
[0015] In any one of the above example implementations, At least one of the set of parameters designated as dynamic requires adaptive computation by the media streaming device.
[0016] Aspects of the present disclosure also provide a media streaming device or apparatus including circuitry configured to perform any one of the above method implementations.
[0017] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions configured, when executed by a media streaming device, to cause the media streaming device to perform any one of the above method implementations.
[0018] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Brief explanation of the drawings]
[0019] [Figure 1] 1 illustrates a system according to one embodiment of the present disclosure. [Figure 2] 1 illustrates a Dynamic Adaptive Streaming over HTTP (DASH) system according to one embodiment of the present disclosure. [Figure 3] 1 illustrates a DASH client architecture according to one embodiment of the present disclosure. [Figure 4] 1 illustrates exemplary logic and data flow in a streaming media device for request parameterization. [Figure 5] 1 shows a schematic diagram of a computer system according to an exemplary embodiment of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0020] Streaming over Hypertext Transfer Protocol (HTTP) FIG. 1 illustrates an exemplary content distribution system 100 in which a remote information processing device 120 is configured to request content from one or more centralized or distributed content servers 110 via a communications network 130. Specifically, the information processing device 120 may include dedicated hardware components, software components running on general-purpose hardware, or a combination thereof, that function as content consumption applications. The content consumption applications may generate one or more requests that specify the content being requested and characteristics of the requested content. Each request may be constructed based on a network protocol stack and communicated to the content server 110 via the communications network 130. In response, the content server may generate a bitstream according to the request, package the bitstream using the network protocol stack, and communicate the bitstream package to the content consumption application.
[0021] In some example implementations, content may be requested all at once. In other words, the entire media content may be requested, received, and stored locally by the content consumption application. The locally stored content may be processed and consumed (e.g., extracted, decoded, and played) as needed, for example, by a media player that is part of or separate from the content consumption application. Such a process may be referred to as downloading.
[0022] In some other implementations, content may be streamed as it is consumed rather than downloaded for later consumption. In such implementations, the entire requested content may not need to be stored in the content consumption application. Rather, a limited amount of content is continuously received from the content server 110 on a rolling basis and managed by an input / output local buffer for content processing and playback. Such implementations may be referred to as streaming. While some media playback functions, such as rewinding, fast-forwarding, and seeking, may involve complex media bitstream control and buffering, media streaming is typically more general-purpose and better suited to delivering content that includes timed sequences of media that are not consumed repeatedly.
[0023] In the following disclosure, the terms “content” and “media” may be used interchangeably. Requested content may include various information items required for its consumption, including, but not limited to, the content itself and various metadata. The content itself may further include various media components, such as different tracks, including, but not limited to, video components / tracks, audio components / tracks, subtitles, etc. Metadata for describing the media content or providing additional processing information may be treated as one or more separate tracks. Such content with its metadata may be generated by the content server 120 as a bitstream that can be parsed and decoded according to a protocol or set of rules known to the content consumption application. The singular term “content server” is used to refer to a single server or multiple servers located in a central location or distributed across various geographic locations. Such content servers may be implemented as dedicated computing machines or may be constructed as virtual machines and / or virtually housed in a cloud computing environment. Furthermore, in the following disclosure, the terms “information processing device” (see 120 in FIG. 1 ) and “content consumption application” may be used interchangeably. Alternatively, these terms may also be referred to as "client," "client device / apparatus," "playback device / apparatus / client," etc. Although only a single information processing device 120 is shown in Figure 1, multiple independent information processing devices may be present. In other words, a set of content servers 110 may be configured to simultaneously and independently provide streaming services to multiple content consumption applications.
[0024] In some example implementations, content generated for delivery by content server 110 may be segmented to facilitate its streaming. For example, a timed sequence of media content, such as a movie, may be subdivided into time segments, each containing several media frames. Each media segment may be self-contained, such that its processing, including parsing, decoding, and playback, does not require knowledge of other media segments. Media content may be pre-segmented. Thus, media content may be stored and managed by content server 120 on a segment-by-segment basis. Alternatively, media segments may be generated in real time from nearby stored media content as they are requested during the streaming process. In some further implementations, media segmentation may be hierarchical, including multiple levels of segmentation.
[0025] In some particular implementations for streaming, the decision as to which media segment or portion of a media segment to request from the content server 110 may be determined in real time by the content consumption application as controlled by a user's playback commands through a user application interface. In this manner, the content server may be configured to respond to requests, generate and obtain segments or portions of content with their metadata according to the requests, and deliver the segments or portions of segments to the requesting content consumption application over the network 130.
[0026] In some exemplary implementations, the same media track of media content may be prepared as different versions. For example, the same movie track may be prepared at different resolutions and / or frame rates. As another example, the same movie track may be prepared at different bit rates. As another example, the same audio movie may be prepared with different audio qualities and / or different audio channels (e.g., five-channel audio or seven-channel audio). Thus, a content consumption application may determine which version of a media track to stream and include such a selection in its request for the media content. Such a determination by a content consumption application may be based on one or more of several exemplary factors, including, but not limited to, the playback capabilities of the information processing device 120 (e.g., display resolution, decoding speed, processing power, buffer size, etc.), network bandwidth and throughput, etc. Thus, streaming sessions may be adapted between different media consumption applications according to their device capabilities. A streaming architecture configured in this manner may be referred to as adaptive streaming. The streaming process may further be adaptive within each media consumption application in that different versions of a media track may be selected and requested at different times during a streaming session, for example, according to real-time network conditions (e.g., bandwidth and throughput, and the bitrate supported by the network bandwidth). A streaming architecture configured in this manner may further be referred to as dynamic adaptive streaming. In particular, a streaming architecture configured to adapt to the bitrate of the media content may be referred to as dynamic adaptive bitrate streaming.
[0027] In some example implementations, requests for segments or portions of segments of particular versions of media content by content consumption applications in dynamic adaptive streaming may be built based on a media manifest as a streaming session progresses. The term "manifest" may be used to refer to any collection of information items that describe media content, including segmentation, version, network location, and any other information that may be needed for any content consumption application to determine what and how to request at different points during a streaming session. A manifest may generally be referred to as a "media presentation description" (MPD).
[0028] Such a manifest may be prepared at the content server when a particular media content is created or generated. Such a manifest may be requested by a content consumption application and received from the content server at the start of a streaming session. The content consumption application may further request any updates to the manifest during the streaming session. Such a manifest may be used by the content consumption device as a blueprint for building subsequent requests for segments or portions of segments of a particular version of the media content during the streaming session.
[0029] In some example implementations, a media server may be configured to function similarly to a web server from the perspective of an external application. Thus, requests for media manifests and / or media segments or portions of media segments by content consumption applications may be made based on, for example, the Hypertext Transfer Protocol (HTTP). Thus, requests may be constructed as URLs, and the requested content may be delivered as responses to the HTTP requests from the content server.
[0030] The details of how the manifest is specified, the content is segmented, organized, and versioned, and the HTTP request is constructed may depend on the particular adaptive streaming protocol, such as Dynamic Adaptive Streaming over HTTP (DASH), HTTP Live Streaming (HLS), Smooth Streaming Transport Protocol (SSTP), etc. Various additional example implementations below may be described in the context of DASH. However, the underlying principles are applicable to any type of adaptive streaming over HTTP. Furthermore, the underlying principles are applicable to media content request mechanisms based on network protocols other than HTTP.
[0031] Dynamic Adaptive Streaming over HTTP (DASH) One exemplary protocol for implementing adaptive media streaming includes Dynamic Adaptive Streaming over Hypertext Transfer Protocol (DASH). As mentioned above, DASH represents one adaptive bitrate streaming implementation that enables streaming of media content using a content delivery network (CDN) based on a Hypertext Transfer Protocol (HTTP) infrastructure, including content servers configured as web servers with various proxies and caches. Such content servers may be referred to as DASH servers. Accordingly, the content consumption applications described above may be referred to as DASH clients.
[0032] DASH supports live streaming from DASH servers to DASH clients and allows DASH clients to control streaming sessions so that DASH servers do not have to deal with the additional burden of stream adaptation management in large-scale deployments. As mentioned above, DASH also allows DASH clients to select streaming from various DASH servers, thereby achieving further network load balancing for the benefit of DASH clients. DASH further provides dynamic switching between different media versions of a media track, for example, by changing the bitrate to adapt to the network conditions and processing capabilities of the DASH client.
[0033] In DASH, the above-mentioned media manifest may be specifically referred to as an MPD (although the term MPD is used generally to refer to any type of manifest in adaptive streaming systems other than those based on DASH). For example, an MPD in DASH may be structured as a file that is fully or partially downloadable by a DASH client and provides information items used by the DASH client to stream media content by selectively and adaptively requesting streaming media segments from a DASH server.
[0034] The MPD may be constructed in various formats. For example, the MPD may be constructed in the form of an Extensible Markup Language (XML) document or file. The MPD file may be requested and delivered to a DASH client. The MPD file may be requested over HTTP, for example, via an HTTP GET request. The MPD file may be delivered in its entirety at the start of a streaming session. Alternatively, the MPD file may be fragmented and delivered in parts. Thus, parts of the MPD file may be requested and delivered before streaming begins, and other parts of the MPD file may be requested and delivered later to reduce session startup delays (which allows streaming to start with an earlier media segment without having to wait for information items about later segments of media). The MPD file may also be updated during a streaming session (e.g., with segment information that is needed but not yet obtained).
[0035] In some example implementations, an MPD file describes the segmentation of media content, the organization of the segments, and the available versions of the segments. MPD supports the representation of content accessibility features, ratings, camera views, metadata, etc. DASH may also support the delivery of multi-view scalable coded content.
[0036] In some example implementations, an MPD file may include a series of descriptions spanning one or more periods along a media consumption timeline (e.g., playback time of video content). Each of the one or more periods may be defined, for example, by a "period" information element tag in the MPD file. Media content may be represented by an MPD file organized into multiple consecutive periods. The MPD file may identify a start time for each of the periods in the playback timeline. The start time may be defined as an absolute start time from the beginning of the media content or as a relative offset from another reference point in the playback timeline.
[0037] In some example implementations, for each media period, the MPD file may further specify one or more adaptation sets. Different adaptation sets may be specified to capture one or more different combinations (or subsets) of media components. For example, video and audio may be different adaptation sets. Different versions of audio (stereo or multi-channel audio) may be different adaptation sets. Audio in different languages may be different adaptation sets. In one particular example, the MPD file may specify that each period includes one video adaptation set and multiple audio adaptation sets, one for each supported language. The adaptation sets may also include subtitles or any metadata.
[0038] In some example implementations, adaptation sets for a particular period may be assigned to a group indicated by any attribute in the MPD file. Adaptation sets within the same group are generally considered alternatives to each other. For example, each adaptation set for video data for a particular period may be assigned to the same group so that any adaptation set can be selected for video data of multimedia content for the corresponding period. Media content within a period can be from either one adaptation set or a combination of adaptation sets, with each group contributing at most one adaptation set.
[0039] In some example implementations, each adaptation set may be specified by an MPD file as including one or more representations of the same media component for a corresponding duration. A representation may be, for example, one of several alternative encoded versions of audio or video data. Representations may vary by encoding type, for example, by bitrate, resolution, and / or codec for video data and bitrate and / or codec for audio data. The term representation may be used to refer to a section of encoded media data that corresponds to a particular duration of multimedia content and that has been encoded in a particular way to achieve a particular range of average bitrates. In some example implementations, for each representation in an adaptation set, the MPD file may specify attributes of the representation, including, but not limited to, video / audio type, video / audio codec, video frame width in pixels, video frame height in pixels, video / audio frame rate, and bandwidth (representing the average encoded bitrate).
[0040] Each representation of an adaptation set may also contain one or more media components, depending on the combination of media components included in the adaptation set. Each media component in a representation may correspond to an encoded version of one individual media type, such as audio, video, or timed text (e.g., for closed captioning). Media components may be temporally contiguous across boundaries of consecutive media segments within a representation.
[0041] In some example implementations, a representation may include one or more segments. Each representation may include an initialization segment, or each segment of a representation may be self-initializing. When present, the initialization segment may include initialization information for accessing the representation. In some cases, the initialization segment does not include media data. Segments that include media data may represent time-segmented content. Segments between different representations may be time-aligned. For each media segment, the MPD file may include a unique identifier. Such an identifier, when combined with a base URL, base URN, or base uniform resource identifier (URI), may form a unique URL, URN, or URI that represents the network location of the media segment, which may be included in an HTTP request for this media segment and used by a content server to locate the requested segment for delivery.
[0042] For example, the URL for requesting a media segment must have a fixed scheme of "http" or "https". <absolute-uri>and possibly further complemented by a byte range if a range attribute is provided with the URL. A byte range can be expressed to identify a contiguous range of bytes within a segment.
[0043] In some further example implementations, a sub-representation may be specified or described in an MPD file as being embedded (or included) in a regular representation, for example, using a sub-representation element / indicator. A sub-representation element may be used to describe characteristics of one or several media content components embedded in a representation. For example, a sub-representation element may be used to describe characteristics of an embedded audio component (e.g., codec, sampling rate, etc.), embedded subtitles (e.g., codec), or a sub-representation element may be used to describe some embedded lower-quality video layer (e.g., some lower frame rate, etc.). Sub-representations and representation elements may share some common attributes and elements.
[0044] In some example implementations, a DASH client may be configured to access, download, or request all or part of an MPD file from a DASH server. That is, the DASH client may obtain an MPD file for use in initiating a live streaming session. Based on the MPD file and the representation selection, the DASH client can make several further decisions, including determining what the latest segment is available on the server, determining the segment availability start time for the next segment and possibly future segments, determining when to start playing a segment, and determining when to obtain / fetch / request a new MPD file.
[0045] In some example implementations, the MPD may further include information about DASH events to signal aperiodic information to a DASH client or DASH application. Events may be timed, starting at a particular media presentation time having a duration. Additionally or alternatively, the event information may include control messages for a media player associated with a particular time during playback of a media presentation, such as an ad insertion cue. Media that may be inserted during streaming may be provided from a separate server, such as an ad server. In addition to signaling events by the MPD separately from the media presentations, events may also be multiplexed in-band in only selected media presentations within one or several selected adaptation sets, or in all presentations.
[0046] An exemplary DASH system 200 is shown in Figure 2. The DASH system 200 may include one or more centralized or distributed content servers 210 and information processing devices 230 connected by a network 250. The DASH system (200) may also include one or more supplemental content servers, such as one or more advertisement servers 220.
[0047] The content server 210 may provide the primary content (e.g., a main program) and an MPD for the content to the information processing device 230. The manifest file may be generated by the MPD generator 214. The primary content and the manifest file may be provided from the same server or different servers.
[0048] The information processing device 230 may include a DASH client 232 that communicates directly with the content server 210. The DASH client 232, controlled by a DASH application 234 on the information processing device 230, may request and / or receive an MPD and may request and retrieve main content from the HTTP server 212 on the content server 210 based on the MPD. The MPD may be processed by the DASH client 232. Additionally, the DASH client 232 may retrieve advertising content from the advertising server 220 or other content (e.g., interactive content) from one or more supplemental content servers in response to DASH events. The main content and advertising content may be processed by the DASH client 232 and the DASH application 234 and output for display on a display device 236 on the information processing device 230. The display device 236 may be integrated into or external to the information processing device 230. Additionally, the DASH client 232 may extract other event information from one or more timed metadata tracks and send the extracted event information to the DASH application 234 for further processing. The DASH application 234 may be configured to display supplemental content based on event information, for example.
[0049] An example for a DASH client 232 is shown in FIG. 3. As shown in FIG. 3, the exemplary DASH client 232 may include a DASH access engine 304, selection logic 302, and media engines 306 and 308. The DASH access engine 302 may be configured to communicate with a content server, for example, to obtain a portion or the entire MPD of streaming media, request and obtain dynamically requested segment data of streaming media, and request supplemental media (advertisements) according to MPD DASH events. The selection logic 304 may be configured to determine the next one or more segments to request, including the selection of an adaptation set and a representation. Such a determination may be determined, for example, by user instructions and other real-time information, such as network bandwidth and throughput. The media engine 306 may be configured to process the segment data received by the DASH access engine 302 according to the format (e.g., MPEG) of the media segments and the timing of the media segments to generate the main media output. The media engine 308 may be configured to process media content associated with timed DASH events from the DASH access engine 302, for example to generate supplemental media output (such as advertisements) that may be inserted into the main media output.
[0050] Parameterizing the Request As described above, in dynamic adaptive streaming, interactions between a streaming client, such as a DASH client, and a content server may be communicated over a communication network via HTTP. Thus, the content server may essentially be viewed by the streaming client as a web server. For example, requests for various information items from the content server by the streaming client may be made using an HTTP GET method addressed to a URL destination.
[0051] Such requests by a streaming client may be made for a variety of different purposes and may be designed to request separate items of information. For example, an HTTP GET request may be used to retrieve one or more media segments or portions of one or more media segments. As other examples, HTTP GET requests may be used to retrieve MPD information (e.g., at fetch time or subsequently during streaming), to determine chained MPDs, to request backups of alternative MPDs, to request Xlink resolution, to trigger various DASH callback events, and / or to request session-based documents (SBDs).
[0052] In some implementations of HTTP GET requests for media segments, for example, the MPD may provide templates for constructing a URL from a base URL to request a specific media segment from an adaptation set. Such a template may specify how the base URL is appended to generate a more complete URL for requesting a specific media segment or a byte range of a specific media segment. For example, the template may specify that a segment index, byte range, and / or bitrate (correlated with a particular representation of the media in the adaptation set) be appended to the base URL in a particular order and format.
[0053] In some further example implementations, the HTTP GET request may be associated with a set of parameters that may be further inserted into the HTTP request so that the content server can adapt its reaction / response to the request. Whether or not a set of parameters should be inserted and which parameters should be inserted may also be specified in the MPD and signaled to the streaming client.
[0054] For example, in an HTTP request for a media segment, a parameterization descriptor may optionally be included in the MPD to signal to the streaming client that the media segment request may be associated with a set of parameters that the content server expects the streaming client to insert in the HTTP GET request for the media segment. The parameterization descriptor may include one or more elements that may be configured in the MPD to specify which parameters are expected to be inserted by the streaming client in the HTTP GET request for the media segment(s), how these parameters should be generated, and the format and order of parameter insertion.
[0055] While some of these parameters may be static, in some implementations, some other parameters specified in parameter descriptors in the MPD may be dynamic, requiring client-side computation for their generation. Thus, these types of dynamic parameters provide additional flexibility for streaming. For example, the MPD may specify a parameter for a media segment request that represents the geographic location of the streaming client. Such a parameter, when inserted into an HTTP GET request for a media segment, can be advantageously used by a content server to identify the nearest content repository of the requested main media segment and suitable adaptively insertable local media (e.g., local advertisements). In this way, a flexible and dynamic parameterization mechanism may be provided. Such request parameters may be instantiated and constructed by the streaming client as name-value pairs.
[0056] The parameterization descriptor for the above media segment request may be referred to as an MPD data structure of "UrlQueryInfoType." A data structure of this type instantiated in the MPD, called "UrlQueryInfo," may include various attributes or descriptors used to provide the static and dynamic parameterization mechanisms as described above in HTTP GET requests for media segments. In some further example implementations, such static and dynamic parameterization mechanisms may be extended to other types of HTTP requests in addition to requests for media segments. An example syntax for the extended data structure type may be specified and used to instantiate an MPD that includes corresponding data structures for signaling and describing the parameterization of various types of HTTP GET requests. Such an extended data structure type may be referred to as "ExtendedUrlInfoType." A data structure of this type, called "ExtendedUrlInfo," when instantiated and included in the MPD, may signal to a streaming client that extended parameterization applies. An example syntax for the data structure of "ExtendedUrlInfoType" may include various example attributes or descriptors as shown in Table 1.
[0057] [Table 1-1] [Table 1-2]
[0058] In the example syntax of Table 1, an MPD data structure of "ExtendedUrlInfoType" may be instantiated in the MPD. Such an instantiated data structure, called "ExtendedUrlInfo," may be used in the MPD as a parameterized descriptor for various types of HTTP Get requests and may include several data elements or descriptors according to Table 1. A first data element, called "@include InRequests," may be included to inform the streaming client which of a predefined list of HTTP GET request types is expected by the content server when submitted by the streaming client. The list of request types may include all HTTP GET request types that can be parameterized. For example, the list may include: (1) media segment request, (2) xlink request type (for referencing a remote location to fetch information), (3) MPD request type (for fetching an MPD), (4) callback request type (for triggering a callback event), (5) chaining request type (for requesting MPD chaining), and (6) backup request type (for requesting an alternative MPD).
[0059] In the exemplary format specified in Table 1, the value of the "@includeInRequests" element of the instantiated parameterized descriptor may be a padded linked list of any combination of key strings (or keys) representing various types of HTTP GET requests. In an exemplary implementation, the six parameterized HTTP GET request types listed above may be represented by the following key strings: "segment," "xlink," "mpd," "callback," "chaining," and "fallback." For example, a data element under "ExtendedUrlInfo" instantiated as "@include InRequests=segment mpd" signals to the streaming client that, among the various HTTP GET request types, segment and MPD requests should be inserted along with their associated parameters. A default value for "@includeInRequests" is provided when "ExtendedUrlInfo" is instantiated but the "@includeInRequests" data element is not present (e.g., "segment").
[0060] Other data elements of "ExtendedUrlInfo" may also be included, such as "@headerParamSource" and "@sameOriginOnly", which, together with the other data elements of the "UrlQueryInfo" parameterization descriptor above, specify the source of the parameters for streaming and how the final parameters for a particular request should be constructed. Some example details are provided in Table 1 above.
[0061] In the example implementation specified in Table 1, certain request parameters, when generated or output by the streaming client, may be used as query parameters in an HTTP GET request. In some other implementations, another parameterized descriptor type parallel to "ExtendedUrlInfoType", called "ExtHttpHeaderInfoType", may be specified. When such a type of parameterized descriptor is instantiated, various request parameters may be similarly constructed as described above, but may be output in HTTP headers at the streaming client.
[0062] As also shown in the example implementation of Table 1, the choices for the value of "@includeInRequests" are hard-coded with specific strings, such as "segment" for segment HTTP GET requests and "xlink" for xlink HTTP GET requests. Whenever additional types of requests are added to the list, the syntax specification in Table 1 will need to be updated. For example, when parameterization is extended to HTTP requests of SBD documents, the syntax definition in Table 1 may need to be updated as shown in Table 2.
[0063] [Table 2-1] [Table 2-2]
[0064] Therefore, the above implementations illustrated by Tables 1 and 2 may not be extensible. In some other example implementations, an extensible approach may be adopted, as shown in Table 3. When new types of requests are introduced, in the above context, the approach or scheme is considered extensible and the parameterization syntax does not need to be updated. As shown in Table 3, to achieve extensible parameterization, rather than using a hard-coded string value for "@includeInRequests", a URI string may be used instead.
[0065] [Table 3-1] [Table 3-2]
[0066] As shown in Table 3, a URN such as "urn:mpeg:dash:annexi:parameters:2022" may be defined and used with any substring defined by the owner(s) of the URN / URL scheme. For example, the following string may be defined by the URN / URL owner along with the URN / URL to signal a desired HTTP GET request for parameterization: 1) "segment" (all segment request), 2) "xlink" (all XLink solution request), 3) "mpd" (all MPD requests), 4) "callback" (all requests triggered by DASH callback events), 5) "chaining" (request for MPD chaining), 6) "fallback" (request for alternative MPD), 7) "sbd" (request for SBD documentation).
[0067] For example, the value of the attribute to add parameters to the HTTP GET request for segments and MPDs might be: @includeInRequests= "urn:mpeg:dash:annexi:parameters:2022 segment mpd"
[0068] The list of string definitions can be expanded or extended for different types of HTTP GET requests by the URN / URL owner without having to modify the specification in Table 3.
[0069] Another exemplary implementation for maintaining compatibility between Table 3 and Table 2 is shown in Table 4.
[0070] [Table 4-1] [Table 4-2]
[0071] In the example scheme of Table 4, a hard-coded string value of "@includeInRequests" may be specified to represent common HTTP GET request types for parameterization, such as those in Table 2. Additionally, URNs such as "urn:mpeg:dash:annexi:parameters:2022" may be defined and used with any substring defined by the owner(s) of the URN / URL scheme to represent new types of HTTP GET requests. For example, the attribute / descriptor values for adding parameters to HTTP GET requests for segments and MPDs and a new type of HTTP GET request ("newRequest") designated as requiring parameterization may be: @includeInRequests="segment""mpd" "urn:mpeg:dash:annexi:parameters:2022 newReques"
[0072] FIG. 4 shows an example data and logic flow 400 for extensible parameterization of HTTP requests for DASH-adapted streaming media from a content server. In step 402, a streaming media device may send an initial request for DASH streaming media to a DASH service provider and receive a manifest of the DASH streaming media from the content server. In step 404, the streaming media device may parse the manifest and extract a parameterization descriptor associated with the HTTP request. In step 406, the streaming media device may identify a uniform resource identifier and one or more of a set of keys from the parameterization descriptor, where the uniform resource identifier links to a parameterization scheme for extensible parameterization of the HTTP request. In step 408, the streaming media device may determine one or more types of HTTP requests corresponding to the extensible parameterization according to the parameterization scheme and one or more of the set of keys. In step 410, for HTTP requests destined for the content server and belonging to one or more types of HTTP requests, the streaming media device may construct a set of parameters according to the manifest. Finally, in step 412, the streaming media device may insert the set of parameters into the HTTP request.
[0073] The techniques described above can be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, Figure 5 illustrates a computer system (500) suitable for implementing certain embodiments of the disclosed subject matter.
[0074] Computer software may be coded using any suitable machine code or computer language that can be subjected to assembly, compilation, linking, or similar mechanisms to generate code containing instructions that can be executed by one or more computer central processing units (CPUs) and graphics processing units (GPUs), etc., directly, or through interpretation and microcode execution, etc.
[0075] The instructions may be executed on various types of computers or computer components, including, for example, personal computers, tablet computers, servers, smartphones, gaming consoles, Internet of Things devices, and the like.
[0076] 5 for computer system (500) are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure, nor should the arrangement of components be interpreted as having a dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system (500).
[0077] The computer system (500) 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 (not shown). Human interface devices may also be used to capture certain media not necessarily directly associated with conscious human input, such as audio (e.g., voice, music, ambient sounds), images (e.g., scanned images, photographic images obtained from still image cameras), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic video).
[0078] The input human interface devices may include one or more of a keyboard (501), a mouse (502), a trackpad (503), a touchscreen (510), a data glove (not shown), a joystick (505), a microphone (506), a scanner (507), and a camera (508) (only one of each is shown).
[0079] The computer system (500) 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 tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen (510), data gloves (not shown), or joystick (505), although some haptic feedback devices may not function as input devices), audio output devices (e.g., speakers (509), headphones (not shown)), visual output devices (e.g., CRT screens, LCD screens, plasma screens, OLED screens, each with or without touchscreen input capability and each with or without haptic feedback capability, some of which may output two-dimensional visual output or three-dimensional hypervisible output via means such as stereo output (510), virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0080] The computer system (500) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (520) with media such as CD / DVD (521), thumb drives (522), removable hard drives or solid state drives (523), legacy magnetic media such as tape or floppy disks (not shown), specialized ROM / ASIC / PLD-based devices such as security dongles (not shown), etc.
[0081] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not encompass transmission media, carrier waves, or other transitory signals.
[0082] The computer system (500) may further include an interface (554) to one or more communications networks (555). The networks may be, for example, wireless, wired, or optical. The networks may also be local, wide-area, metropolitan, vehicular, industrial, real-time, delay-tolerant, etc. Examples of networks include local area networks such as Ethernet; cellular networks including WLAN, GSM, 3G, 4G, 5G, LTE, etc.; cable or wireless wide-area digital networks including cable, satellite, and terrestrial broadcast television; and vehicular and industrial networks including CAN bus. Certain networks typically require an external network interface adapter attached to a particular general-purpose data port or peripheral bus (549) (e.g., a USB port on the computer system (500)), while others are typically integrated into the core of the computer system (500) by attachment 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, the computer system (500) can communicate with other entities. Such communications may be one-way, receive-only (e.g., television broadcasts), one-way transmit-only (e.g., CANbus device to a particular CANbus device), or bidirectional, for example, to other computer systems using local or wide-area digital networks. Specific protocols and protocol stacks may be used in each of these networks and network interfaces, as described above.
[0083] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be connected to the core (540) of the computer system (500).
[0084] The core (540) may include one or more central processing units (CPUs) (541), graphics processing units (GPUs) (542), dedicated programmable processing devices in the form of field programmable gate arrays (FPGAs) (543), task-specific hardware accelerators (544), graphics adapters (550), etc. These devices may be connected via a system bus (548), along with read-only memory (ROM) (545), random access memory (546), and internal mass storage (547), such as an internal non-user-accessible hard drive or SSD. In some computer systems, the system bus (548) may be accessible in the form of one or more physical plugs, allowing expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (548) or via a peripheral bus (549). In one example, a screen (510) may be connected to the graphics adapter (550). Architectures for peripheral buses include PCI, USB, etc.
[0085] The CPU (541), GPU (542), FPGA (543), and accelerator (544) may combine and execute a number of instructions that may create the aforementioned computer code. The computer code may be stored in ROM (545) or RAM (546). Transient data may be stored in RAM (546), while permanent data may be stored, for example, in internal mass storage (547). Cache memory may be used to allow quick storage and retrieval in any memory device, and may be closely associated with one or more of the CPU (541), GPU (542), mass storage (547), ROM (545), RAM (546), etc.
[0086] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium 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.
[0087] As a non-limiting example, a computer system (500) having an architecture, specifically a core (540), can provide 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 can be user-accessible mass storage, as described above, as well as media associated with specific storage of the core (540) that is non-transitory in nature, such as the core's internal mass storage (547) or ROM (545). Software implementing various embodiments of the present disclosure can be stored on such devices and executed by the core (540). The computer-readable media can include one or more memory devices or chips, depending on particular needs. The software can cause the core (540), and in particular the processor (including a CPU, GPU, FPGA, etc.) therein, to perform particular processes or particular portions of particular processes described herein, including defining data structures stored in RAM (546) and modifying such data structures according to software-defined operations. Additionally or alternatively, the computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator (544)), which may operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. References to software may encompass logic, where appropriate, and vice versa. References to computer-readable media may encompass circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both, where appropriate. The present disclosure encompasses any suitable combination of hardware and software.
[0088] While this disclosure describes several exemplary embodiments, there are alterations, permutations, 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 the spirit and scope of the present disclosure. [Explanation of symbols]
[0089] 100 Content Delivery System 110 Content Server 120 Information processing equipment 130 Communication Network 200 DASH System 210 Content Server 212 HTTP Server 214 MPD generator 220 Ad Server 230 Information processing equipment 232 DASH client 234 DASH Applications 236 Display Devices 250 Network 302 Selection Logic 304 DASH Access Engine 306 Media Engine 308 Media Engine 500 Computer Systems 501 keyboard 502 Mouse 503 Trackpad 505 Joystick 506 Mike 507 Scanner 508 Camera 509 Speaker 510 Touchscreen 520 CD / DVD ROM / RW 521 CDs / DVDs 522 thumb drive 523 Removable Hard Drive or Solid State Drive 540 cores 541 Central Processing Unit (CPU) 542 Graphics Processing Unit (GPU) 543 Field Programmable Gate Area (FPGA) 544 Hardware Accelerator 545 Read-Only Memory (ROM) 546 Random Access Memory 547 Internal Mass Storage 548 System Bus 549 Peripheral Bus 550 graphics adapter 554 Interface 555 Communication Network
Claims
1. 1. A method for extensible parameterization of HTTP requests for Dynamic Adaptive Streaming over HTTP (DASH) streaming media from a content server, executed by a media streaming device, comprising: sending an initial request for the DASH streaming media to a DASH service provider; receiving a manifest of the DASH streaming media from the content server; parsing the manifest and extracting a parameterized descriptor associated with the HTTP request, the parameterized descriptor including a first parameterized selection string, the first parameterized selection string including one or more of a uniform resource identifier followed by a set of keys, the first parameterized selection string being a URI string; identifying the one or more of the uniform resource identifier and the set of keys from the parameterization descriptor, the uniform resource identifier being linked to a parameterization scheme of the extensible parameterization for the HTTP request; determining one or more types of HTTP requests corresponding to the extensible parameterization according to the one or more of the parameterization scheme and the set of keys; constructing a set of parameters according to the manifest for an HTTP request addressed to the content server and belonging to the one or more types of HTTP requests; inserting the set of parameters into the HTTP request; A method comprising:
2. The method of claim 1 , wherein the HTTP request comprises an HTTP GET request.
3. The method of claim 2 , wherein the uniform resource identifier comprises a uniform resource locator (URL) or a uniform resource name (URN).
4. The one or more types of HTTP requests: Media segment HTTP request type, Manifest HTTP request type, xlink HTTP request type, The callback HTTP request type that triggers the callback event, or and chaining HTTP requests for manifest chaining.
5. The method of claim 2 , wherein the parameterization scheme includes a definition of the set of keys.
6. 6. The method of claim 5, wherein determining the one or more types of HTTP requests that require parameterization comprises using the one or more of the set of keys included in the manifest and the definition of the set of keys to identify the one or more types of HTTP requests.
7. 2. The method of claim 1, wherein the parameterization descriptor further includes a second parameterization selection string, the second parameterization selection string including a hard-coded identification string representing a selection of an HTTP GET request of a predefined type of parameterization.
8. The method of claim 2 , wherein at least one of the set of parameters is specified by the manifest as dynamic.
9. The method of claim 8 , wherein the at least one of the set of parameters designated as dynamic requires adaptive computation by the media streaming device.
10. A media streaming device configured to perform the method of any one of claims 1 to 9.
11. A computer program for causing a computer to carry out the method according to any one of claims 1 to 9.
Citation Information
Patent Citations
Requesting multiple chunks to a network node based on one request message
JP2017513413A
Improved client-driven resource push via server devices
JP2018509679A
Systems and Methods for Generalized HTTP Headers in Dynamic Adaptive Streaming over HTTP (DASH)
JP2018512102A