SYSTEMS AND METHODS FOR ENABLING COMMUNICATIONS ASSOCIATED WITH DIGITAL MEDIA DISTRIBUTION
20180109577 ยท 2018-04-19
Assignee
Inventors
Cpc classification
H04N21/647
ELECTRICITY
H04N21/8456
ELECTRICITY
H04N21/8543
ELECTRICITY
H04L67/02
ELECTRICITY
International classification
H04N21/647
ELECTRICITY
Abstract
A device may be configured to signal a frame header indicating a Dynamic adaptive streaming over Hypertext Transfer Protocol message type and signal one or more supplied arguments corresponding to the message type, as JavaScript Object Notation encoded parameters.
Claims
1. A device for signaling information associated with a media presentation, the device comprising one or more processors configured to: signal a frame header indicating a dynamic adaptive streaming over hypertext transfer protocol message type, wherein the frame header may indicate a media presentation description request response message type or a segment request response message type; and signal one or more supplied arguments corresponding to a message type, as java script object notation encoded parameters, wherein when the frame header indicates a media presentation description request response message type, one or more supplied arguments include a push acknowledgement parameter having an encoded string data type having a maximum of one instance.
2. The device of claim 1, wherein when the frame header indicates a media presentation description request response message type, one or more supplied arguments include a status parameter having an encoded integer data type.
3. The device of claim 1, wherein signaling one or more supplied arguments corresponding to the message type, as java script object notation encoded parameters, further includes when the frame header indicates a segment request response message type, one or more supplied arguments include a push acknowledgement parameter having an encoded string data type having a maximum of one instance.
4. The device of claim 1, wherein the device includes a media distribution engine.
5. The device of claim 3, wherein the device includes a media distribution engine.
6. The device of claim 1, wherein the device includes a computing device.
7. The device of claim 3, wherein the device includes a computing device.
8. A method for signaling information associated with a media presentation, the method comprising: signaling a frame header indicating a dynamic adaptive streaming over hypertext transfer protocol message type, wherein the frame header may indicate a media presentation description request response message type or a segment request response message type; and signaling one or more supplied arguments corresponding to a message type, as java script object notation encoded parameters, wherein when the frame header indicates a media presentation description request response message type, one or more supplied arguments include a push acknowledgement parameter having an encoded string data type having a maximum of one instance.
9. The method of claim 8, wherein when the frame header indicates a media presentation description request response message type, one or more supplied arguments include a status parameter having an encoded integer data type.
10. The method of claim 8, wherein signaling one or more supplied arguments corresponding to the message type, as java script object notation encoded parameters, further includes wherein when the frame header indicates a segment request response message type, one or more supplied arguments include a push acknowledgement parameter having an encoded string data type having a maximum of one instance.
11. A device for parsing information associated with a media presentation, the device comprising one or more processors configured to: receive a message including a frame header indicating a dynamic adaptive streaming over hypertext transfer protocol message type, wherein the frame header may indicate a media presentation description request response message type or a segment request response message type; and parse one or more supplied arguments corresponding to a message type, as java script object notation encoded parameters, wherein when the frame header indicates a media presentation description request response message type, one or more supplied arguments include a push acknowledgement parameter having an encoded string data type having a maximum of one instance.
12. The device of claim 11, wherein when the frame header indicates a media presentation description request response message type, one or more supplied arguments include a status parameter having an encoded integer data type.
13. The device of claim 11, wherein parsing one or more supplied arguments corresponding to a message type, as java script object notation encoded parameters, further includes when the frame header indicates a segment request response message type, one or more supplied arguments include a push acknowledgement parameter having an encoded string data type having a maximum of one instance.
14. The device of claim 11, wherein the device includes a computing device.
15. The device of claim 14, wherein the device is selected from the group consisting of: a desktop or laptop computer, a mobile device, a smartphone, a cellular telephone, a personal data assistant (PDA), a television, a tablet device, or a personal gaming device.
16. A method for parsing information associated with a media presentation, the method comprising: receiving a message including a frame header indicating a dynamic adaptive streaming over hypertext transfer protocol message type, wherein the frame header may indicate a media presentation description request response message type or a segment request response message type; and parsing one or more supplied arguments corresponding to a message type, as java script object notation encoded parameters, wherein when the frame header indicates a media presentation description request response message type, one or more supplied arguments include a push acknowledgement parameter having an encoded string data type having a maximum of one instance.
17. The method of claim 16, wherein when the frame header indicates a media presentation description request response message type, one or more supplied arguments include a status parameter having an encoded integer data type.
18. The method of claim 16, wherein parsing one or more supplied arguments corresponding to a message type, as java script object notation encoded parameters, further includes when the frame header indicates a segment request response message type, one or more supplied arguments include a push acknowledgement parameter having an encoded string data type having a maximum of one instance.
19. The method of claim 16, further comprising signaling a media presentation description request message.
20. The method of claim 18, further comprising signaling a segment request message.
Description
BRIEF DESCRIPTION OF DRAWINGS
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
DETAILED DESCRIPTION
[0022] Computing devices and/or transmission systems may be based on models including one or more abstraction layers, where data at each abstraction layer is represented according to particular structures, e.g., packet structures, modulation schemes, etc. An example of a model including defined abstraction layers is the so-called Open Systems Interconnection (OSI) model. The OSI model defines a 7-layer stack model, including an application layer, a presentation layer, a session layer, a transport layer, a network layer, a data link layer, and a physical layer. It should be noted that the use of the terms upper and lower with respect to describing the layers in a stack model may be based on the application layer being the uppermost layer and the physical layer being the lowermost layer. Further, in some cases, the term Layer 1 or L1 may be used to refer to a physical layer, the term Layer 2 or L2 may be used to refer to a link layer, and the term Layer 3 or L3 or IP layer may be used to refer to the network layer.
[0023] A physical layer may generally refer to a layer at which electrical signals form digital data. For example, a physical layer may refer to a layer that defines how modulated radio frequency (RF) symbols form a frame of digital data. A data link layer, which may also be referred to as link layer, may refer to an abstraction used prior to physical layer processing at a sending side and after physical layer reception at a receiving side. As used herein, a link layer may refer to an abstraction used to transport data from a network layer to a physical layer at a sending side and used to transport data from a physical layer to a network layer at a receiving side. It should be noted that a sending side and a receiving side are logical roles and a single device may operate as both a sending side in one instance and as a receiving side in another instance. A link layer may abstract various types of data (e.g., video, audio, or application files) encapsulated in particular packet types (e.g., Internet Protocol Version 4 (IPv4) packets, etc.) into a single generic format for processing by a physical layer. A network layer may generally refer to a layer at which logical addressing occurs. That is, a network layer may generally provide addressing information (e.g., IP addresses) such that data packets can be delivered to a particular node (e.g., a computing device) within a network. As used herein, the term network layer may refer to a layer above a link layer and/or a layer having data in a structure such that it may be received for link layer processing. A transport layer may refer to a layer enabling so-called process-to-process communication services. Each of a session layer, a presentation layer, and an application layer may define how data is delivered for use by a user application. Transmission standards, including transmission standards currently under development, may include a content delivery protocol model specifying supported protocols for each layer and may further define one or more specific layer implementations.
[0024]
[0025] As illustrated in
[0026] As described above, content delivery protocol model 100 may enable distribution of digital media content. In the example of
[0027] In ISO/IEC 23009-1:2014, a media presentation as described in a MPD may include a sequence of one or more Periods, where each Period may include one or more Adaptation Sets. It should be noted that in the case where an Adaptation Set includes multiple media content components, then each media content component may be described individually. Each Adaptation Set may include one or more Representations. In ISO/IEC 23009-1:2014 each Representation is provided: (1) as a single Segment, where Subsegments are aligned across Representations with an Adaptation Set; and (2) as a sequence of Segments where each Segment is addressable by a template-generated Universal Resource Locator (URL). The properties of each media content component may be described by an AdaptationSet element and/or elements within an Adaption Set, including for example, a ContentComponent element.
[0028] As illustrated in
[0029] WebSocket Protocol enables two-way communication between a logical client and a logical server (which may be referred to as a remote host) through the establishment of a bidirectional socket. It should be noted that in some cases, a side or endpoint of a bidirectional socket may be referred to as a terminal. A bidirectional socket based on the WebSocket protocol includes a bidirectional socket that enables character data encoded in Universal Transformation Format-8 (UTF-8) to be exchanged between a logical client and a logical server over TCP. Draft International Standard for 23009-6: DASH with Server Push and WebSockets, ISO/IEC JTC1/SC29/WG11/W16232, June 2016, (hereinafter W16232), which is incorporated by reference herein, defines the signaling and message formats for driving the delivery of MPEG-DASH media presentations using a bidirectional socket based on the WebSocket protocol. Study of ISO/IEC Draft International Standard for 23009-6: DASH with Server Push and WebSockets, ISO/IEC JTC1/SC29/WG11/W16666, January 2017, (hereinafter W16666), which is incorporated by reference herein, defines the signaling and message formats for driving the delivery of MPEG-DASH media presentations using a bidirectional socket based on the WebSocket protocol.
[0030] In W16232, the transmission of a segment from server to client (referred to as a push in W16232) is based on a push strategy, that defines the ways in which segments may be transmitted from a server to a client. In W16232, a push directive is a request modifier, sent from a client to a server, which enables a client to express its expectations regarding the server's push strategy for processing a request. Further, in W16232, a push acknowledgement (also referred to as a Push Ack) is a response modifier, sent from a server to a client, which enables a server to state the push strategy used when processing a request. In W16232, push directives and push acknowledgements may be communicated by sending messages including a DASH sub-protocol frame header and one or more supplied arguments. The semantics of the DASH sub-protocol frame header as provided in W16232 are provided in Table 1.
TABLE-US-00001 TABLE 1 Syntax No. of Bits Frame header( ) { STREAM_ID 8 MSG_CODE 8 E 1 F 2 EXT_LENGTH 13 Extension 4*EXT_LENGTH }
[0031] W16232 provides the following definitions for each STREAM_ID, MSG_CODE, E, F, EXT_LENGTH, and Extension:
[0032] STREAM_ID: Is an identifier of the current stream, which allows multiplexing of multiple requests/responses over the same WebSocket connection. The responses to a particular request shall use the same STREAM_ID as that request. The appearance of a new STREAM_ID indicates that a new stream has been initiated. The reception of a cancel request, an end of stream, or an error shall result in closing the stream identified by the carried STREAM_ID.
[0033] MSG_CODE: Indicates the MPEG-DASH message represented by this frame. Available message codes are defined in Table 2.
TABLE-US-00002 TABLE 2 Message Supplied Code Message Description Arguments 1 get_mpd The MPD request message initiates Table 3 the request for a DASH MPD file. One or more Push Directives may be provided with the MPD request. 2 get_segment The segment request message initiates the Table 4 request for a DASH segment. The segment request may include one or more Push Directives to inform the server to actively push one or more future segments. 3 new_mpd This message represents the server's Table 5 response from a previous get_mpd message sent by the client. 4 new_segment This message represents the server's Table 6 response from a previous get_segment message sent by the client. A server may issue multiple responses for a single request, as appropriate for the push strategy in the corresponding get_segment message. 5 end_of_stream This message is sent by the server to indicate Table 7 that a previous operation cannot be continued as a result of a change to resource availability or other condition. 255 cancel This message represents a client request for Table 8 the server to cancel the outstanding push transaction over a given WebSocket stream.
[0034] E: This field is the error flag. When this field is set the receiver may interpret the message as an error. Additional information about the error may be available in the extension header.
[0035] F: Reserved.
[0036] EXT_LENGTH: Provides the length in 4 bytes of the extension data that precedes the application data, including padding.
[0037] Extension: The extension header must be a JavaScript Object Notation (JSON) encoding of additional information fields that apply to the request/response, conforming to IETF RFC 7158, [The JavaScript Object Notation (JSON) Data Interchange Format, March 2013, which is incorporated by reference herein]. To align with 4 byte boundaries, padding 0 bytes may be added after the extension header. The content shall be encoded in UTF-8 format. The JSON encoding of the extension header shall consist of a single root level JSON object, containing zero or more name/value pairs.
[0038] As illustrated in Table 2, each message type includes supplied arguments which are illustrated in Tables 3-8. In each of Tables 3-8, Type indicates a data type, where URI is a string including a Uniform Resource Identifier (URI), as defined in RFC 3986, String is a UTF-8 character string, integer, and Boolean is a true or false value. In each of Tables 3-8, Cardinality indicates the required number of instances of a parameter in an instance of a message, where 0 indicates signaling of a parameter value is optional.
TABLE-US-00003 TABLE 3 Parameter Name Type Cardinality Description mpd_uri URI 1 the full URI for the MPD being requested push_directive PushDirective 0 . . . N A push strategy to be applied to this MPD request, as described in section 6.1.3 [of W16232] headers String 0 . . . 1 Contains a Carriage Return Line Feed (CRLF) separated set of HTTP 1.1 conformant header fields that apply to this message.
TABLE-US-00004 TABLE 4 Parameter Name Type Cardinality Description segment_uri URI 1 the full URI for the video segment being requested push_directive PushDirective 0 . . . N the desired push strategy for getting following segments, as described in section 6.1.3 [of W16232]. headers String 0 . . . 1 Contains a CRLF separated set of HTTP 1.1 conformant header fields that apply to this message.
TABLE-US-00005 TABLE 5 Parameter Name Type Cardinality Description mpd MDP 1 The MPD returned by the server push_ack PushAck 0 . . . N The push strategy that the server will follow, as described in section 6.1.4 [of W16232]. headers String 0 . . . 1 Contains a CRLF separated set of HTTP 1.1 conformant header fields that apply to this message. status Number 1 An HTTP status code, conforming to RFC 7231 [IETF RFC 7231, Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content, June 2014] section 6, which applies to this message.
TABLE-US-00006 TABLE 6 Parameter Name Type Cardinality Description Segment Segment 1 The segment returned by the server. push_ack PushAck 0 . . . N The push strategy that the server will follow, as described section in 6.1.4 [of W16232]. headers String 0 . . . 1 Contains a CRLF separated set of HTTP 1.1 conformant header fields that apply to this message. status Number 1 An HTTP status code, conforming to RFC 7231 section 6, which applies to this message.
TABLE-US-00007 TABLE 7 Parameter Name Type Cardinality Description headers String 0 . . . 1 Contains a CRLF separated set of HTTP 1.1 conformant header fields that apply to the request corresponding to this stream.
TABLE-US-00008 TABLE 8 Parameter Name Type Cardinality Description immediate Boolean 1 If true, the client indicates that it would like the server to stop transmission immediately. If false, the client indicates it would like the server to complete transmission of the currently pushed segment (if any) before cancelling the transaction. headers String 0 . . . 1 Contains a CRLF separated set of HTTP 1.1 conformant header fields that apply to the request corresponding to this stream.
[0039] Referring to Tables 3 and 4, W16232 provides the following format for a PushDirective Parameter. [0040] The format of a PushDirective in the ABNF [IETF RFC 5234, Augmented BNF [Backus-Naur Form] for Syntax Specifications: ABNF, January 2008] form is as follows: [0041] PUSH_DIRECTIVE=PUSH_TYPE [OWS ; OWS QVALUE] [0042] PUSH_TYPE=<A PushType defined [BELOW]> [0043] QVALUE=<a qvalue, as defined in RFC 7231> [0044] OWS is defined in RFC7230 [IETF RFC 7230, Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing, June 2014], section 3.2.3 and represents optional whitespace. [0045] When multiple push directives are applied to a request, a client may apply a quality value (qvalue) as is described for use in content negotiation in RFC 7231. A client may apply higher quality values to directives it wishes to take precedence over alternative directives with a lower quality value. [0046] Note that these values are hints to the server, and do not imply that the server will necessarily choose the strategy with the highest quality value.
[0047] Referring to Tables 5 and 6, W16232 provides the following format for a PushAck. [0048] The format of the PushAck in the ABNF form is as follows: [0049] PUSH_ACK=PUSH_TYPE [0050] Where PUSH_TYPE is defined [BELOW]
[0051] W16232 provides the following format for a PushType: [0052] The format of a PushType in the ABNF form is as follows: [0053] PUSH_TYPE=PUSH_TYPE_NAME [OWS ; OWS PUSH_PARAMS] [0054] PUSH_TYPE_NAME=DQUOTE<URN>DQUOTE [0055] PUSH_PARAMS=PUSH_PARAM*(OWS ; OWS PUSH_PARAM) [0056] PUSH_PARAM=1*VCHAR [0057] Where [0058] <URN> syntax is defined in RFC2141 [IETF RFC 2141, Uniform Resource Names (URN) Syntax, May 1997].
[0059] The messages defined for signaling push directives and push acknowledgements in W16232 may be less than ideal.
[0060]
[0061] System 200 represents an example of a system that may be configured to allow digital media content, such as, for example, a movie, a live sporting event, etc., and data and applications and media presentations associated therewith, to be distributed to and accessed by a plurality of computing devices. In the example illustrated in
[0062]
[0063] CPU(s) 302 may be configured to implement functionality and/or process instructions for execution in computing device 300. CPU(s) 302 may include single and/or multi-core central processing units. CPU(s) 302 may be capable of retrieving and processing instructions, code, and/or data structures for implementing one or more of the techniques described herein. Instructions may be stored on a computer readable medium, such as system memory 304. System memory 304 may be described as a non-transitory or tangible computer-readable storage medium. In some examples, system memory 304 may provide temporary and/or long-term storage. In some examples, system memory 304 or portions thereof may be described as non-volatile memory and in other examples portions of system memory 304 may be described as volatile memory. System memory 304 may be configured to store information that may be used by computing device 300 during operation. System memory 304 may be used to store program instructions for execution by CPU(s) 302 and may be used by programs running on computing device 300 to temporarily store information during program execution. Further, system memory 304 may be configured to store numerous digital media content files.
[0064] As illustrated in
[0065] System interface 312 may be configured to enable communications between components of computing device 300. In one example, system interface 312 comprises structures that enable data to be transferred from one peer device to another peer device or to a storage medium. For example, system interface 312 may include a chipset supporting Accelerated Graphics Port (AGP) based protocols, Peripheral Component Interconnect (PCI) bus based protocols, such as, for example, the PCI Express (PCIe) bus specification, which is maintained by the Peripheral Component Interconnect Special Interest Group, or any other form of structure that may be used to interconnect peer devices (e.g., proprietary bus protocols).
[0066] As described above, computing device 300 is a computing device configured to receive data from a communications network and extract digital media content therefrom. Extracted digital media content may be encapsulated in various packet types. Network interface 324 may be configured to enable computing device 300 to send and receive data via a local area network and/or a wide area network. Network interface 324 may include a network interface card, such as an Ethernet card, an optical transceiver, a radio frequency transceiver, or any other type of device configured to send and receive information. Network interface 324 may be configured to perform physical signaling, addressing, and channel access control according to the physical and Media Access Control (MAC) layers utilized in a network. Computing device 300 may be configured to parse a signal generated according to any of the techniques described herein.
[0067] Audio decoder 314 may be configured to receive and process audio packets. For example, audio decoder 314 may include a combination of hardware and software configured to implement aspects of an audio codec. That is, audio decoder 314 may be configured to receive audio packets and provide audio data to audio output system 316 for rendering. Audio data may be coded using multi-channel formats such as those developed by Dolby and Digital Theater Systems. Audio data may be coded using an audio compression format. Examples of audio compression formats include Motion Picture Experts Group (MPEG) formats, Advanced Audio Coding (AAC) formats, DTS-HD formats, and Dolby Digital (AC-3) formats. Audio output system 316 may be configured to render audio data. For example, audio output system 316 may include an audio processor, a digital-to-analog converter, an amplifier, and a speaker system. A speaker system may include any of a variety of speaker systems, such as headphones, an integrated stereo speaker system, a multi-speaker system, or a surround sound system.
[0068] Video decoder 318 may be configured to receive and process video packets. For example, video decoder 318 may include a combination of hardware and software used to implement aspects of a video codec. In one example, video decoder 318 may be configured to decode video data encoded according to any number of video compression standards, such as ITU-T H.262 or ISO/IEC MPEG-2 Visual, ISO/IEC MPEG-4 Visual, ITU-T H.264 (also known as ISO/IEC MPEG-4 Advanced video Coding (AVC)), and High-Efficiency Video Coding (HEVC). Display system 320 may be configured to retrieve and process video data for display. For example, display system 320 may receive pixel data from video decoder 318 and output data for visual presentation. Further, display system 320 may be configured to output graphics in conjunction with video data, e.g., graphical user interfaces. Display system 320 may comprise one of a variety of display devices such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device capable of presenting video data to a user. A display device may be configured to display standard definition content, high definition content, or ultra-high definition content.
[0069] I/O device(s) 322 may be configured to receive input and provide output during operation of computing device 300. That is, I/O device(s) 322 may enable a user to select multimedia content to be rendered. Input may be generated from an input device, such as, for example, a push-button remote control, a device including a touch-sensitive screen, a motion-based input device, an audio-based input device, or any other type of device configured to receive user input. I/O device(s) 322 may be operatively coupled to computing device 300 using a standardized communication protocol, such as for example, Universal Serial Bus protocol (USB), Bluetooth, ZigBee or a proprietary communications protocol, such as, for example, a proprietary infrared communications protocol.
[0070] Referring again to
[0071] Further, wide area network 210 may include radio and television service networks may include public over-the-air transmission networks, public or subscription-based satellite transmission networks, and public or subscription-based cable networks and/or over the top or Internet service providers. Wide area network 210 may operate according to a combination of one or more telecommunication protocols associated with radio and television service networks. Telecommunications protocols may include proprietary aspects and/or may include standardized telecommunication protocols. Examples of standardized telecommunications protocols include DVB standards, ATSC standards, ISDB standards, DTMB standards, DMB standards, Data Over Cable Service Interface Specification (DOCSIS) standards, HbbTV standards, W3C standards, and UPnP standards.
[0072] Referring again to
[0073] Media distribution engines 208A-208N may be configured to distribute digital media content via wide area network 210. For example, media distribution engines 208A-208N may be included at one or more broadcast stations, a cable television provider site, a satellite television provider site, an Internet-based television provider site, and/or so-called a streaming media service site. Media distribution engines 208A-208N may be configured to receive data, including, for example, multimedia content, interactive applications, and messages, and distribute data to computing devices 202A-202N through wide area network 210.
[0074]
[0075] Each of central processing unit(s) 402, system memory 404, system interface 412 and network interface 420 may be similar to central processing unit(s) 302, system memory 304, system interface 312, and network interface 324 described above. CPU(s) 402 may be configured to implement functionality and/or process instructions for execution in media distribution engine 400. System interface 412 may be configured to enable communications between components of media distribution engine 400. Network interface 420 may be configured to enable media distribution engine 400 to send and receive data via a local area network and/or a wide area network. System memory 404 may be configured to store information that may be used by media distribution engine 400 during operation. It should be noted that system memory 404 may include individual memory elements within each of media presentation description generator 414, segment generator 416, and transport/network packet generator 418. For example, system memory 404 may include one or more buffers (e.g., First-in First-out (FIFO) buffers) configured to store data for processing by a component of media distribution engine 400.
[0076] As illustrated in
[0077] Referring again to
[0078] In the example illustrated in
[0079] Referring again to
[0080] The media presentation description (MPD) data returned by the server shall be included in a JSON string after all occurrences of Line Feed (0x0A) are removed and all occurrences of double quote (0x22) are replaced with single quote (0x27).
[0081] OR
[0082] The media presentation description (MPD) data returned by the server shall be included in a JSON string after all occurrences of Line Feed (0x0A) are removed or escape coded.
[0083] OR
[0084] The media presentation description (MPD) data returned by the server shall be included in JSON string after applying escape coding.
[0085] Thus, in one example, server application 410 may send a MPD Request Response to browser application 310, where the format of the MPD Request Response is defined as provided in Table 9A. Further, in one example, server application 410 may send a MPD Request Response to browser application 310, where the format of the MPD Request Response is defined as provided in Table 9B.
TABLE-US-00009 TABLE 9A Parameter Name Type Cardinality Description mpd String 1 The MPD returned by the server. The UTF-8 encoded XML MPD data shall be JSON encoded as specified by IETF RFC 7158 as JSON data type string. push_ack PushAck 0 . . . N The push strategy that the server will follow, as described in section 6.1.4 [of W16232]. headers String 0 . . . 1 Contains a CRLF separated set of HTTP 1.1 conformant header fields that apply to this message. status integer 1 An HTTP status code, conforming to RFC 7231 [IETF RFC 7231, Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content, June 2014] section 6, which applies to this message.
TABLE-US-00010 TABLE 9B Parameter Name Type Cardinality Description mpd String 1 The MPD returned by the server. push_ack PushAck 0 . . . 1 The push strategy that the server will follow, e.g., as described in section 6.1.4 [of W16232 or W16666]. headers String 0 . . . 1 Contains a CRLF separated set of HTTP 1.1 conformant header fields that apply to this message. status integer 1 An HTTP status code, conforming to RFC 7231 [IETF RFC 7231, Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content, June 2014] section 6, which applies to this message.
[0086] Further,
[0087] Referring again to
[0088] Referring again to
[0089] In another example, server application 410 may be configured to send the segment parameter as JSON data. The segment parameter may be based on the description provided in Table 10A, which may replace the corresponding entry in Table 6.
TABLE-US-00011 TABLE 10A Parameter Name Type Cardinality Description Segment String 1 The segment returned by the server. The segment data shall be base64 encoded as described in IETF RFC 4648. The base64 encoded data shall then be JSON encoded as specified by IETF RFC 7158 as JSON data type string.
[0090]
[0091] In another example, server application 410 may be configured to send a Segment Request Response to browser application 310, where the format of the Segment Request Response is defined as provided in Table 10B.
TABLE-US-00012 TABLE 10B Parameter Name Type Cardinality Description segment_URL String 1 The segment URL push_ack PushAck 0 . . . 1 The push strategy that the server will follow, e.g., as described section in 6.1.4 [of W16232]. headers String 0 . . . 1 Contains a CRLF separated set of HTTP 1.1 conformant header fields that apply to this message. status Number 1 An HTTP status code, conforming to RFC 7231 section 6, which applies to this message.
[0092] It should be noted that Segment in Table 10A may include a string describing a segment URL and as such, segment_URL in Table 10B may be similar to Segment in Table 10A in some examples. It should be noted that segment_URL may instead be called Segment_URL in the Tables and Figures.
[0093] Referring again to
[0094] Referring to Table 7, W16232 fails to define a normative JSON schema for the supplied arguments in Table 7.
[0095] As described above, in W16232, the format of a PushType in the ABNF form is as follows: [0096] PUSH_TYPE=PUSH_TYPE_NAME [OWS ; OWS PUSH_PARAMS] [0097] PUSH_TYPE_NAME=DQUOTE<URN>DQUOTE [0098] PUSH_PARAMS=PUSH_PARAM*(OWS ; OWS PUSH_PARAM) [0099] PUSH_PARAM=1*VCHAR
[0100] In some cases, the PUSH_PARAM may conflict with JSON reserved characters. For example, VCHAR includes characters DQUOTE (). JSON uses DQUOTE as a reserved character. In some cases, where PushDirective is signaled as a JSON property, complex parsing may be required. In one example, the grammar of PUSH_PARAM can be defined with some simple changes so as not to interfere with JSON encoding. In one example, browser application 410 and server application 510 may be configured such that, if PUSH_PARAM includes DQUOTE (), then the DQUOTE shall be escape coded with a preceding \ (i.e. %5C).
[0101] In another example to handle the double quotes mentioned above following changes may be made to W16232: [0102] Add following in section 3.2 Convention: PPCHAR=%21/%23-7E [0103] Replace occurrences of VCHAR with PPCHAR (in sections 6.1.2 PushType, 6.1.5 URLList, 6.1.6 URLTemplate, and 6.1.7 FastStartParams) [0104] In 6.1.5 (URL Template) change two occurrences of DQUOTE with (single quote, i.e. %27). And in Table 2 (Valid attributes for FastStartParams) Change occurrences of DQUOTE with (single quote, i.e. %27) and occurnces of with (single quote, i.e. %27)
The changes above use single quote instead of double quote character. For this a PPCHAR is defined to exclude the DQUOTE character (%22).
[0105] It should be noted that in W16232, the following Subprotocol-Identifier is used for the WebSocket Subprotocol.
[0106] Subprotocol-Identifier: mpeg-dash
[0107] In some examples, browser application 410 and server application 510 may be configured to provide future extensibility by including a version and/or year in the Subprotocol-Identifier. In one example, a tag based sub-protocol identifier may be defined as follows:
[0108] Subprotocol-Identifier: tag:mpeg.chiariglione.org-dash,2016:23009-6
[0109] In one example, a URN based sub-protocol identifier may be defined as follows:
[0110] Subprotocol-Identifier: urn:mpeg:dash:fdh:2016
[0111] OR
[0112] Subprotocol-Identifier: urn:mpeg:dash:fdh:2016:23009-6
[0113] In one example, subprotocol identifier and subprotocol common name may be defined as follows:
[0114] Subprotocol-Identifier: 2016.fdh.dash.mpeg.chiariglione.org
[0115] Subprotocol Common Name: MPEG-DASH-FDH-23009-6
[0116] In another example to improve robustness of system 200, following changes may be made to W16666: [0117] Add following in section 3.2 Convention: [0118] UCHAR=%21 %23-7E/%7C/%7E; [0119] and [0120] Define the URLTemplate string format ABNF in 6.1.6 as follows: [0121] URL_TEMPLATE=TEMPLATE_ITEM*(OWS ; OWS TEMPLATE_ITEM) [0122] TEMPLATE_ITEM=SQUOTE TEMPLATE_ELEMENT SQUOTE[OWS : OWS { OWS TEMPLATE_PARAMS OWS }] [0123] TEMPLATE_ELEMENT=CLAUSE_LITERAL[CLAUSE_VAR[CLAUSE_LITERAL]] [0124] CLAUSE_LITERAL=1*UCHAR
[0125] In one example, the following example constraints may be added to the URLTemplate string format ABNF, when CLAUSE_LITERAL=1*PPCHAR: [0126] If %7B ({) or %7D (}) characters exist in CLAUSE_LITERAL then they shall be escaped by \. [0127] OR [0128] If %7B ({) or %7D (}) characters exist in CLAUSE_LITERAL then they shall be percent encoded as defined in RFC 3986 section 2.1.
[0129] It should be noted that the example constraints in URLTemplate string format ABNF may be imposed regardless of the specific conventions used with respect to the URLTemplate string format ABNF.
[0130] It should be noted that with respect to the definition above of UCHAR: [0131] UCHAR=%21/%23-7E/%7C/%7E; [0132] This definition may be added at a different place than in section 3.2. For example this definition may be added in URLTemplatesection 6.1.6 instead. [0133] Also in another example, instead of defining and using UCHAR the CLAUSE_LITERAL could be directly defined as: [0134] CLAUSE_LITERAL=1*(%21/%23-7E/%7C/%7E)
[0135] In this manner, computing device 300 and media distribution engine 400 may be configured to exchange messages according to the techniques described herein.
[0136] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer-readable media generally may correspond to (1) tangible computer-readable storage media which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0137] By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but are instead directed to non-transitory, tangible storage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0138] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term processor, as used herein may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements.
[0139] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a codec hardware unit or provided by a collection of interoperative hardware units, including one or more processors as described above, in conjunction with suitable software and/or firmware.
[0140] Moreover, each functional block or various features of the base station device and the terminal device (the video decoder and the video encoder) used in each of the aforementioned embodiments may be implemented or executed by a circuitry, which is typically an integrated circuit or a plurality of integrated circuits. The circuitry designed to execute the functions described in the present specification may comprise a general-purpose processor, a digital signal processor (DSP), an application specific or general application integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic devices, discrete gates or transistor logic, or a discrete hardware component, or a combination thereof. The general-purpose processor may be a microprocessor, or alternatively, the processor may be a conventional processor, a controller, a microcontroller or a state machine. The general-purpose processor or each circuit described above may be configured by a digital circuit or may be configured by an analogue circuit. Further, when a technology of making into an integrated circuit superseding integrated circuits at the present time appears due to advancement of a semiconductor technology, the integrated circuit by this technology is also able to be used.
[0141] Various examples have been described. These and other examples are within the scope of the following claims.