Hybrid media data format and transport protocol
By using RTP and WebRTC technologies, data packets containing media communication sessions are constructed, which solves the problem of synchronous presentation of multiple media streams in real-time communication, and improves the user experience of virtual reality and augmented reality applications.
Patent Information
- Application Number
- CN202380064504.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-08-24
- Filing Date
- 2023-08-28
- Publication Date
- 2025-04-29
AI Technical Summary
The prior art is difficult to synchronize the media presentation of multiple media streams in real-time communication, especially in virtual reality and augmented reality scenarios, affecting the user experience.
Real-time transmission protocol (RTP) combined with WebRTC technology is used to achieve synchronization between media presentation by supporting various media types of transmission protocols and payload formats. The specific method includes constructing a data packet including a media communication session, including header data, and the header data indicates media type and attributes so that the device can synchronize processing of multiple media types.
The synchronous presentation of multiple media streams in real-time communication is realized, improving the user experience, especially in virtual reality and augmented reality applications.
Smart Images

Figure CN119908118A_ABST
Abstract
Description
[0001] This application claims priority to U.S. Patent Application No. 18 / 454,992, filed on August 24, 2023, which claims the benefit of U.S. Provisional Patent Application No. 63 / 484,571, filed on February 13, 2023; U.S. Patent Application No. 18 / 454,992, filed on August 24, 2023, claims the benefit of U.S. Provisional Patent Application No. 63 / 376,409, filed on September 20, 2022, the entire contents of each of these applications are incorporated herein by reference. Technical Field
[0002] The present disclosure relates to storage and transmission of encoded video data. Background Art
[0003] Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, digital cameras, digital recording devices, digital media players, video gaming devices, video game consoles, cellular or satellite radiotelephones, video teleconferencing equipment, etc. Digital video devices implement video compression techniques (such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263 or ITU-T H.264 / MPEG-4, Part 10, Advanced Video Coding (AVC), ITU-T H.265 (also known as High Efficiency Video Coding (HEVC)), and extensions of these standards) to more efficiently send and receive digital video information.
[0004] Video compression techniques perform spatial prediction and / or temporal prediction to reduce or remove inherent redundancy in video sequences. For block-based video coding, video frames or slices can be divided into macroblocks. Each macroblock can be further divided. Macroblocks in intra-coded (I) frames or slices can be encoded using spatial predictions relative to adjacent macroblocks. Macroblocks in inter-coded (P or B) frames or slices can use spatial predictions relative to adjacent macroblocks in the same frame or slice or temporal predictions relative to other reference frames.
[0005] After the video data has been encoded, it can be packetized for transmission or storage. The video data can be assembled into a video file that conforms to any of a variety of standards, such as the International Organization for Standardization (ISO) base media file format and its extensions, such as AVC. Summary of the invention
[0006] In general, the present disclosure describes technologies related to real-time communication protocols such as WebRTC (Web Real-Time Communication). WebRTC can be performed via a real-time transport protocol (RTP). A WebRTC session can be used to exchange multiple media data streams, such as audio, video, and / or extended reality (XR) (such as augmented reality (AR), mixed reality (MR), or virtual reality (VR)). For example, a user may wish to have a communication session including a mixed media type, wherein a virtual avatar is presented in a virtual environment, and each user can be presented by one of the virtual avatars. In this context, synchronizing the media presentation of two or more media streams during playback can improve the user experience. For example, it may be desirable to animate the face of an avatar in a manner that accurately represents the voice data from the corresponding user, and therefore, synchronizing the animation data with the sound data may be important. The present disclosure describes various technologies that can be used in conjunction with, for example, RTP to support various media types. In particular, the present disclosure describes transport protocols and payload formats that can support various media types, such as for real-time communication. In this way, synchronization between various media presentations using, for example, RTP transmission can be achieved.
[0007] In one example, a method for processing media data includes: determining one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; constructing a packet including data for a media communication session, the packet including header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and sending the packet to a device involved in the media communication session.
[0008] In another example, a device for processing media data includes: a memory configured to store media data; and a processing system, the processing system including one or more processors implemented in a circuit, the processing system configured to: determine one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; construct a packet including data for a media communication session, the packet including header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and send the packet to devices involved in the media communication session.
[0009] In another example, a device for processing media data includes: a unit for determining one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; a unit for constructing a packet including data for a media communication session, the packet including header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and a unit for sending the packet to a device involved in the media communication session.
[0010] In another example, a computer-readable storage medium has instructions stored thereon that, when executed, cause a processor to perform the following operations: determining one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; constructing a packet including data for a media communication session, the packet including header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and sending the packet to devices involved in the media communication session.
[0011] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0012] Figure 1 is a block diagram illustrating an example system that implements techniques for streaming media data over a network.
[0013] Figure 2 is a block diagram illustrating elements of an example video file.
[0014] Figure 3 is a conceptual diagram illustrating an example Web Real-Time Communications (WebRTC) protocol stack.
[0015] Figure 4 is a conceptual diagram showing a real-time transport protocol (RTP) header format.
[0016] Figure 5 is a conceptual diagram illustrating an example RTP header extension.
[0017] Figure 6 is a conceptual diagram showing an example of a two-byte header format.
[0018] Figure 7is a conceptual diagram showing an example of a two-byte RTP header extension.
[0019] Figure 8 is a conceptual diagram illustrating an example general packet format for feedback messages.
[0020] Fig. 9 is a conceptual diagram illustrating an example Stream Control Transmission Protocol (SCTP) chunk field format.
[0021] Fig.10 is a conceptual diagram illustrating an example SCTP data block format.
[0022] Fig.11 is a conceptual diagram illustrating an example media transport architecture in which techniques of this disclosure may be implemented.
[0023] Fig.12 is a conceptual diagram illustrating example RTP extensions and payloads for media types in accordance with techniques of this disclosure.
[0024] Fig.13 is a conceptual diagram illustrating an example RTP extension element format for interactive media type data.
[0025] Fig.14 is a conceptual diagram illustrating an example immersive media profile (IMP).
[0026] Fig.15 is a conceptual diagram illustrating an example SCTP block format for immersive media types.
[0027] Fig.16 is a conceptual diagram illustrating another example of an SCTP block format for immersive media type data.
[0028] Fig.17 is a conceptual diagram illustrating an example timed metadata payload format in accordance with techniques of this disclosure.
[0029] Fig.18 is a block diagram illustrating an example action set header format in accordance with techniques of this disclosure.
[0030] Fig.19 is a block diagram illustrating an example action metadata payload format in accordance with techniques of this disclosure.
[0031] Fig. 20 is a block diagram illustrating an example gaze interaction metadata action payload format in accordance with techniques of this disclosure.
[0032] Fig.21 is a block diagram illustrating an example spatial location metadata payload format in accordance with techniques of this disclosure.
[0033] Fig. 22 is a block diagram illustrating an example spatial velocity metadata payload format in accordance with techniques of this disclosure.
[0034] Fig.23 is a block diagram illustrating an example view metadata payload format in accordance with techniques of this disclosure.
[0035] Fig.24 is a flow chart illustrating an example method for sending user interaction data and associated metadata to another device involved in an XR multimedia communication session in accordance with the techniques of this disclosure. DETAILED DESCRIPTION
[0036] In general, the present disclosure describes techniques related to the transmission of immersive metadata. The 3rd Generation Partnership Project (3GPP) Media Capabilities for Augmented Reality (MeCAR) Permanent Document (3GPP TSG SA WG4 S4-221150, “MeCAR Permanent Document v3.0,” August 2022) and 5G_RTP Permanent Document (3GPP TSG SA WG 4 S4-221209, “5G_RTP Permanent Document v0.0.2,” August 2022) define many augmented reality (AR) and mixed reality (MR) media types (metadata). Some interactive media types (such as user posture, viewport, gestures, body movements, and facial expressions) are exchanged in real time between users with low latency requirements. Some media types can be synchronized with each other or with other real-time media (such as viewports and body movements for gaming applications). The mechanisms for transmitting these interactive media types are important for immersive real-time communications (RTC) being explored in 3GPP SA4.
[0037] More specifically, the present disclosure describes technologies related to real-time communication protocols such as WebRTC (Web Real-Time Communication). WebRTC can be performed via a real-time transport protocol (RTP). A WebRTC session can be used to exchange multiple media data streams, such as audio, video, and / or extended reality (XR) (such as augmented reality (AR), mixed reality (MR), or virtual reality (VR)). For example, a user may wish to have a communication session including a mixed media type, wherein a virtual avatar is presented in a virtual environment, and each user can be presented by one of the virtual avatars. In this context, synchronizing the presentation of media of two or more media streams during playback can improve the user experience. For example, it may be desirable to animate the face of an avatar in a manner that accurately represents the voice data from the corresponding user, and therefore, synchronizing the animation data with the sound data may be important. The present disclosure describes various technologies that can be used in conjunction with, for example, RTP to support various media types. In particular, the present disclosure describes transport protocols and payload formats that can support various media types, such as for real-time communication. In this way, synchronization between various media presentations using, for example, RTP transmission can be achieved.
[0038] The techniques of the present disclosure may be applied to video files that conform to video data encapsulated according to any of the following file formats: the ISO base media file format, the scalable video coding (SVC) file format, the advanced video coding (AVC) file format, the third generation partnership project (3GPP) file format, and / or the multi-view video coding (MVC) file format, or other similar video file formats.
[0039] Figure 1 is a block diagram illustrating an example system 10 that implements techniques for streaming media data over a network. In this example, system 10 includes content preparation device 20, server device 60, and client device 40. Client device 40 and server device 60 are communicatively coupled via network 74, which may include the Internet. In some examples, content preparation device 20 and server device 60 may also be coupled via network 74 or another network, or may be directly communicatively coupled. In some examples, content preparation device 20 and server device 60 may include the same device.
[0040] In some examples, techniques of this disclosure may be implemented by two user equipment (UE) devices communicating via, for example, network 74. In this case, both UE devices may include components similar to those of content preparation device 20, server device 60, and client device 40. When one UE device is sending media data, the UE device may perform functions belonging to content preparation device 20 and server device 60, and another UE device that is receiving media data may perform functions belonging to client device 40. Both the sending and receiving of media data may be performed in parallel by each UE device.
[0041] exist Figure 1 In the example of , content preparation device 20 includes an audio source 22 and a video source 24. Audio source 22 may include, for example, a microphone that generates an electrical signal representing captured audio data to be encoded by audio encoder 26. Alternatively, audio source 22 may include: a storage medium that stores previously recorded audio data; an audio data generator, such as a computerized synthesizer; or any other source of audio data. Video source 24 may include: a video camera that generates video data to be encoded by video encoder 28; a storage medium encoded with previously recorded video data; a video data generation unit, such as a computer graphics source; or any other source of video data. Content preparation device 20 is not necessarily communicatively coupled to server device 60 in all examples, but the multimedia content may be stored to a separate medium that is read by server device 60.
[0042] The original audio and video data may include analog data or digital data. The analog data may be digitized before being encoded by the audio encoder 26 and / or the video encoder 28. As the speaking participant is speaking, the audio source 22 may obtain audio data from the speaking participant, and the video source 24 may simultaneously obtain video data of the speaking participant. In other examples, the audio source 22 may include a computer-readable storage medium containing stored audio data, and the video source 24 may include a computer-readable storage medium containing stored video data. In this way, the techniques described in the present disclosure may be applied to live, streaming, real-time audio and video data, or to archived, pre-recorded audio and video data.
[0043] An audio frame corresponding to a video frame is typically an audio frame containing audio data that is captured (or generated) by audio source 22 simultaneously with video data captured (or generated) by video source 24 and contained within the video frame. For example, when a speaking participant typically generates audio data by speaking, audio source 22 captures the audio data, and video source 24 simultaneously (i.e., while audio source 22 is capturing audio data) captures video data of the speaking participant. Thus, an audio frame may correspond in time to one or more specific video frames. Thus, an audio frame corresponding to a video frame typically corresponds to a situation in which audio data and video data are captured simultaneously, and for which the audio frame and video frame include the audio data and video data captured simultaneously, respectively.
[0044] In some examples, audio encoder 26 may encode a timestamp into each encoded audio frame, the timestamp indicating the time at which the audio data for the encoded audio frame was recorded, and similarly, video encoder 28 may encode a timestamp into each encoded video frame, the timestamp indicating the time at which the video data for the encoded video frame was recorded. In these examples, the audio frames corresponding to the video frames may include: an audio frame including a timestamp, and a video frame including the same timestamp. Content preparation device 20 may include an internal clock, and audio encoder 26 and / or video encoder 28 may generate timestamps based on the internal clock, or audio source 22 and video source 24 may use the internal clock to associate audio data and video data with timestamps, respectively.
[0045] In some examples, audio source 22 may send data corresponding to the time at which the audio data was recorded to audio encoder 26, and video source 24 may send data corresponding to the time at which the video data was recorded to video encoder 28. In some examples, audio encoder 26 may encode a sequence identifier into the encoded audio data to indicate the relative temporal ordering of the encoded audio data without necessarily indicating the absolute time at which the audio data was recorded, and similarly, video encoder 28 may also use the sequence identifier to indicate the relative temporal ordering of the encoded video data. Similarly, in some examples, the sequence identifier may be mapped to or otherwise associated with the timestamp.
[0046] The audio encoder 26 typically produces an encoded audio data stream, while the video encoder 28 produces an encoded video data stream. Each individual data stream (whether audio or video) can be referred to as an elementary stream. An elementary stream is a single, digitally decoded (possibly compressed) component of a media representation. For example, a decoded video or audio portion of a media representation can be an elementary stream. An elementary stream can be converted into a packetized elementary stream (PES) before being encapsulated into a video file. Within the same media representation, a stream ID can be used to distinguish a PES packet belonging to an elementary stream from other PES packets. The basic data unit of an elementary stream is a packetized elementary stream (PES) packet. Therefore, decoded video data typically corresponds to an elementary video stream. Similarly, audio data corresponds to one or more corresponding elementary streams.
[0047] exist Figure 1 In the example of , encapsulation unit 30 of content preparation device 20 receives an elementary stream including decoded video data from video encoder 28, and receives an elementary stream including decoded audio data from audio encoder 26. In some examples, video encoder 28 and audio encoder 26 may each include a packetizer for forming PES packets from the encoded data. In other examples, video encoder 28 and audio encoder 26 may each be interfaced with a corresponding packetizer for forming PES packets from the encoded data. In still other examples, encapsulation unit 30 may include a packetizer for forming PES packets from the encoded audio data and video data.
[0048] The video encoder 28 may encode the video data of the multimedia content in various ways to produce different representations of the multimedia content at various bit rates and with various characteristics, such as pixel resolution, frame rate, compliance with various coding standards, compliance with various profiles and / or profile levels for various coding standards, representations with one or more views (e.g., for two-dimensional or three-dimensional playback), or other such characteristics. As used in the present disclosure, a representation may include one of the following: audio data, video data, text data (e.g., for closed captioning), or other such data. A representation may include elementary streams, such as an audio elementary stream or a video elementary stream. Each PES packet may include a stream_id that identifies the elementary stream to which the PES packet belongs. Encapsulation unit 30 is responsible for assembling elementary streams into streamable media data.
[0049] Encapsulation unit 30 receives PES packets of elementary streams for media representation from audio encoder 26 and video encoder 28, and forms corresponding network abstraction layer (NAL) units according to the PES packets. Decoded video segments can be organized into NAL units, which provide "network-friendly" video representations for applications such as video telephony, storage, broadcasting, or streaming. NAL units can be classified into video coding layer (VCL) NAL units and non-VCL NAL units. VCL units can contain core compression engines and can include block, macroblock, and / or slice level data. Other NAL units can be non-VCL NAL units. In some examples, a decoded picture in a time instance (usually presented as a primary decoded picture) can be included in an access unit, which can include one or more NAL units.
[0050] Non-VCL NAL units may include parameter set NAL units and SEI NAL units, among others. Parameter sets may contain sequence-level header information (in a sequence parameter set (SPS)) and rarely-changing picture-level header information (in a picture parameter set (PPS)). With parameter sets (e.g., PPS and SPS), rarely-changing information does not need to be repeated for each sequence or picture, thus improving coding efficiency. In addition, the use of parameter sets may enable out-of-band transmission of important header information, thereby avoiding the need for redundant transmission for error resilience. In an example of out-of-band transmission, parameter set NAL units may be sent on a different channel than other NAL units (such as SEI NAL units).
[0051] Supplemental enhancement information (SEI) may contain information that is not necessary for decoding coded picture samples from VCL NAL units but may assist processes related to decoding, display, error recovery, and other purposes. SEI messages may be included in non-VCL NAL units. SEI messages are a normative part of some standard specifications and are therefore not always mandatory for standard-compliant decoder implementations. SEI messages may be sequence-level SEI messages or picture-level SEI messages. Some sequence-level information may be included in SEI messages, such as scalable information SEI messages in the example of SVC, and view scalable information SEI messages in MVC. These example SEI messages may convey information about, for example, the extraction of operation points and the characteristics of the operation points.
[0052] The server device 60 includes a real-time transport protocol (RTP) sending unit 70 and a network interface 72. In some examples, the server device 60 may include multiple network interfaces. In addition, any or all features of the server device 60 may be implemented on other devices of the content delivery network (such as routers, bridges, proxy devices, switches, or other devices). In some examples, an intermediate device of the content delivery network may cache data of the multimedia content 64 and include components that generally conform to the components of the server device 60. Typically, the network interface 72 is configured to send and receive data via the network 74.
[0053] The RTP unit 70 is configured to deliver media data to the client device 40 via the network 74 according to RTP, which is standardized in the Request for Comments (RFC) 3550 of the Internet Engineering Task Force (IETF). The RTP unit 70 may also implement protocols related to RTP, such as the RTP Control Protocol (RTCP), the Real-Time Streaming Protocol (RTSP), the Session Initiation Protocol (SIP), and / or the Session Description Protocol (SDP). The RTP unit 70 may send media data via the network interface 72, which may implement the Unified Datagram Protocol (UDP) and / or the Internet Protocol (IP). Therefore, in some examples, the server device 60 may use the network 74 to send media data via RTP and RTSP via UDP.
[0054] The RTP unit 50 may receive an RTSP describe request from, for example, the client device 40. The RTSP describe request may include data indicating what types of data are supported by the client device 40. The RTP unit 50 may respond to the client device 40 with data indicating media streams (such as media content 64) that can be sent to the client device 40 and a corresponding network location identifier (such as a uniform resource locator (URL) or uniform resource name (URN)).
[0055] The RTP unit 50 may then receive an RTSP setup request from the client device 40. The RTSP setup request may generally indicate how the media stream is to be transmitted. The RTSP setup request may contain a network location identifier for the requested media data (e.g., media content 64) and a transport specifier, such as a local port for receiving RTP data and control data (e.g., RTCP data) on the client device 40. The RTP unit 50 may reply to the RTSP setup request with data indicating the port of the server device 60 through which the RTP data and control data will be sent. The RTP unit 50 may then receive an RTSP play request so that the media stream is "played", i.e., sent to the client device 40 via the network 74. The RTP unit 50 may also receive an RTSP teardown request for ending a streaming session, in response to which the RTP unit 50 may stop sending media data for the corresponding session to the client device 40.
[0056] The RTP receiving unit 52 may also initiate a media stream by initially sending an RTSP describe request to the server device 60. The RTSP describe request may indicate the types of data supported by the client device 40. The RTP receiving unit 52 may then receive a reply from the server device 60 specifying available media streams (such as media content 64) that can be sent to the client device 40, as well as a corresponding network location identifier (such as a uniform resource locator (URL) or uniform resource name (URN)).
[0057] The RTP receiving unit 52 may then generate an RTSP setup request and send the RTSP setup request to the server device 60. As described above, the RTSP setup request may include a network location identifier for the requested media data (e.g., media content 64) and a transport specifier, such as a local port for receiving the RTP data and control data (e.g., RTCP data) at the client device 40. In response, the RTP receiving unit 52 may receive an acknowledgment from the server device 60 that includes the port of the server device 60 that the server device 60 will use to send the media data and the control data.
[0058] After establishing a media streaming session between the server device 60 and the client device 40, the RTP unit 50 of the server device 60 may send media data (e.g., packets of media data) to the client device 40 according to the media streaming session. The server device 60 and the client device 40 may exchange control data (e.g., RTCP data) indicating, for example, reception statistics of the client device 40, so that the server device 60 can perform congestion control or otherwise diagnose and resolve transmission failures.
[0059] The network interface 54 may receive the media of the selected media presentation and provide it to the RTP receiving unit 52, which in turn may provide the media data to the decapsulation unit 50. The decapsulation unit 50 may decapsulate the elements of the video file into constituent PES streams, depacketize the PES streams to obtain the encoded data, and send the encoded data to the audio decoder 46 or the video decoder 48, depending on whether the encoded data is part of an audio stream or part of a video stream (e.g., as indicated by the PES packet header of the stream). The audio decoder 46 decodes the encoded audio data and sends the decoded audio data to the audio output 42, while the video decoder 48 decodes the encoded video data and sends the decoded video data (which may include multiple views of the stream) to the video output 44.
[0060] Each of the video encoder 28, the video decoder 48, the audio encoder 26, the audio decoder 46, the encapsulation unit 30, the RTP receiving unit 52, and the decapsulation unit 50 may be implemented as any of a variety of suitable processing circuits (such as, one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic circuits, software, hardware, firmware, or any combination thereof) as applicable. Each of the video encoder 28 and the video decoder 48 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined video encoder / decoder (CODEC). Similarly, each of the audio encoder 26 and the audio decoder 46 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined CODEC. An apparatus including the video encoder 28, the video decoder 48, the audio encoder 26, the audio decoder 46, the encapsulation unit 30, the RTP receiving unit 52, and / or the decapsulation unit 50 may include an integrated circuit, a microprocessor, and / or a wireless communication device (such as a cellular phone).
[0061] Client device 40, server device 60, and / or content preparation device 20 may be configured to operate according to the techniques of this disclosure. For purposes of example, this disclosure describes these techniques with respect to client device 40 and server device 60. However, it should be understood that content preparation device 20 may be configured to perform these techniques instead of (or in addition to) server device 60.
[0062] The encapsulation unit 30 may form a NAL unit including a header identifying the program to which the NAL unit belongs and a payload (e.g., audio data, video data, or data describing a transport stream or program stream to which the NAL unit corresponds). For example, in H.264 / AVC, a NAL unit includes a one-byte header and a payload of variable size. A NAL unit including video data in its payload may include video data at various levels of granularity. For example, a NAL unit may include a block of video data, a plurality of blocks, a slice of video data, or an entire picture of video data. The encapsulation unit 30 may receive encoded video data in the form of PES packets having elementary streams from the video encoder 28. The encapsulation unit 30 may associate each elementary stream with a corresponding program.
[0063] The encapsulation unit 30 may also assemble an access unit from a plurality of NAL units. Typically, an access unit may include one or more NAL units for representing a frame of video data, and audio data corresponding to the frame (when the audio data is available). An access unit typically includes all NAL units for an output time instance, for example, all audio data and video data for a time instance. For example, if each view has a frame rate of 20 frames per second (fps), each time instance may correspond to a time interval of 0.05 seconds. During this time interval, specific frames for all views of the same access unit (same time instance) may be rendered simultaneously. In one example, an access unit may include a decoded picture in a time instance, which may be represented as a primary decoded picture.
[0064] Thus, an access unit may include all audio frames and video frames of a common time instance, e.g., all views corresponding to time X. The present disclosure also refers to the decoded pictures of a particular view as "view components". That is, a view component may include a decoded picture (or frame) for a particular view at a particular time. Thus, an access unit may be defined as including all view components of a common time instance. The decoding order of access units is not necessarily the same as the output order or display order.
[0065] After the encapsulation unit 30 has assembled the NAL units and / or access units into a video file based on the received data, the encapsulation unit 30 passes the video file to the output interface 32 for output. In some examples, the encapsulation unit 30 may store the video file locally or send the video file to a remote server via the output interface 32, rather than directly sending the video file to the client device 40. The output interface 32 may include, for example, a transmitter, a transceiver, a device for writing data to a computer-readable medium such as an optical drive, a magnetic media drive (e.g., a floppy disk drive), a universal serial bus (USB) port, a network interface, or other output interface. The output interface 32 outputs the video file to a computer-readable medium such as, for example, a transmission signal, a magnetic medium, an optical medium, a memory, a flash drive, or other computer-readable medium.
[0066] The network interface 54 may receive NAL units or access units via the network 74 and provide the NAL units or access units to the decapsulation unit 50 via the RTP receiving unit 52. The decapsulation unit 50 may decapsulate the elements of the video file into constituent PES streams, unpack the PES streams to obtain the encoded data, and send the encoded data to the audio decoder 46 or the video decoder 48, depending on whether the encoded data is part of an audio stream or part of a video stream (e.g., as indicated by the PES packet header of the stream). The audio decoder 46 decodes the encoded audio data and sends the decoded audio data to the audio output 42, while the video decoder 48 decodes the encoded video data and sends the decoded video data (which may include multiple views of the stream) to the video output 44.
[0067] According to the technology of the present disclosure, client device 40 and server device 60 can participate in a media communication session, such as an XR session. Client device 40 can represent a UE, and server device 60 can represent another UE or an edge server or other server device. As part of the media communication session, the user of client device 40 can interact with the virtual scene, for example, by moving, changing the viewport / viewing direction, interacting with objects, speaking, etc. Various interactions can correspond to different types of media data, for example, audio, visual, changing virtual scene objects, or changing the user's perspective of the virtual scene.
[0068] Typically, in order to communicate such interactions, client device 40 may form packets, such as RTP packets, which include media data representing the interaction and header information indicating the media type used for the interaction. In this way, server device 60 may use the header information to determine the number of media data sets to be included in the packet, the type of media data, and then extract the media data from the packet. The header information may correspond to an RTP header extension, as discussed in more detail below. The header information may further include attributes for each media type.
[0069] Figure 2 1 is a block diagram illustrating elements of an example video file 150. As described above, video files according to the ISO base media file format and its extensions store data in a series of objects (referred to as "boxes"). Figure 2 In the example of FIG. 1 , the video file 150 includes a file type (FTYP) box 152, a movie (MOOV) box 154, a segment index (sidx) box 162, a movie fragment (MOOF) box 164, and a movie fragment random access (MFRA) box 166. Figure 2 An example of a video file is presented, but it should be understood that other media files may include other types of media data (e.g., audio data, timed text data, etc.) structured similarly to the data of video file 150 in accordance with the ISO base media file format and its extensions.
[0070] The file type (FTYP) box 152 generally describes the file type of the video file 150. The file type box 152 may include data identifying specifications describing the best use for the video file 150. The file type box 152 may alternatively be placed before the MOOV box 154, the movie fragment box 164, and / or the MFRA box 166.
[0071] exist Figure 2 In the example of , the MOOV box 154 includes a movie header (MVHD) box 156, a track (TRAK) box 158, and one or more movie extension (MVEX) boxes 160. In general, the MVHD box 156 may describe general characteristics of the video file 150. For example, the MVHD box 156 may include data describing the time when the video file 150 was originally created, the time when the video file 150 was last modified, the time scale for the video file 150, the duration for the playback of the video file 150, or other data generally describing the video file.
[0072] TRAK box 158 may include data for a track of video file 150. TRAK box 158 may include a track header (TKHD) box that describes characteristics of the track corresponding to TRAK box 158. In some examples, TRAK box 158 may include decoded video pictures, while in other examples, the decoded video pictures of the track may be included in movie fragments 164, which may be indexed by data of TRAK box 156 and / or sidx box 162.
[0073] In some examples, the video file 150 may include more than one track. Therefore, the MOOV box 154 may include a number of TRAK boxes equal to the number of tracks in the video file 150. The TRAK box 158 may describe the characteristics of the corresponding track of the video file 150. For example, the TRAK box 158 may describe the time and / or space information of the corresponding track. Figure 1 ) When a parameter set track is included in a video file, such as video file 150, a TRAK box similar to TRAK box 158 of MOOV box 154 may describe characteristics of the parameter set track. Encapsulation unit 30 may signal the presence of a sequence-level SEI message in the parameter set track within a TRAK box describing the parameter set track.
[0074] The MVEX box 160 may describe characteristics of the corresponding movie fragment 164, e.g., to signal that the video file 150 includes the movie fragment 164 in addition to the video data (if any) included in the MOOV box 154. In the context of streaming video data, the decoded video pictures may be included in the movie fragment 164 instead of the MOOV box 154. Thus, all decoded video samples may be included in the movie fragment 164 instead of the MOOV box 154.
[0075] The MOOV box 154 may include a number of MVEX boxes 160 equal to the number of movie fragments 164 in the video file 150. Each MVEX box 160 may describe characteristics of a corresponding one of the movie fragments 164. For example, each MVEX box may include a Movie Extension Header box (MEHD) box that describes a temporal duration for a corresponding one of the movie fragments 164.
[0076] As described above, encapsulation unit 30 may store sequence data sets that do not include actual decoded video data in a video sample. A video sample may generally correspond to an access unit, which is a representation of a decoded picture at a specific time instance. In the context of AVC, a decoded picture includes: one or more VCL NAL units, which contain information for all pixels used to construct an access unit; and other associated non-VCL NAL units, such as SEI messages. Therefore, encapsulation unit 30 may include a sequence data set in one of movie fragments 164, which may include a sequence-level SEI message. Encapsulation unit 30 may further signal the presence of the sequence data set and / or sequence-level SEI message as being present within one of movie fragments 164, within one of MVEX boxes 160, corresponding to one of movie fragments 164.
[0077] SIDX box 162 is an optional element of video file 150. That is, video files conforming to the 3GPP file format or other such file formats do not necessarily include SIDX box 162. According to the example of the 3GPP file format, the SIDX box can be used to identify sub-segments of a segment (e.g., a segment contained within video file 150). The 3GPP file format defines a sub-segment as "a self-contained collection of one or more consecutive movie fragment boxes with (one or more) corresponding media data boxes, and the media data box containing data indexed by the movie fragment box must follow the movie fragment box and before the next movie fragment box containing information about the same track." The 3GPP file format also indicates that the SIDX box "contains a sequence of indexes to sub-segments in the (sub)segment documented by the box. The indexed sub-segments are consecutive in presentation time. Similarly, the bytes indexed by the segment index box are always consecutive within the segment. The indexed size gives a count of the number of bytes in the indexed program."
[0078] The SIDX block 162 generally provides information representing one or more sub-segments of a segment included in the video file 150. For example, such information may include a playback time at which a sub-segment begins and / or ends, a byte offset for a sub-segment, whether the sub-segment includes a stream access point (SAP) (e.g., starts at the SAP), a type for the SAP (e.g., whether the SAP is an instantaneous decoder refresh (IDR) picture, a clear random access (CRA) picture, a broken link access (BLA) picture, etc.), a location of the SAP in the sub-segment (in terms of playback time and / or byte offset), and the like.
[0079] The movie fragment 164 may include one or more decoded video pictures. In some examples, the movie fragment 164 may include one or more groups of pictures (GOPs), each of which may include a number of decoded video pictures (e.g., frames or pictures). Furthermore, as described above, in some examples, the movie fragment 164 may include a sequence data set. Each movie fragment 164 may include a movie fragment header box (MFHD, Figure 2 MFHD box may describe characteristics of the corresponding movie fragment, such as a sequence number for the movie fragment. The movie fragments 164 may be included in the video file 150 in the order of the sequence number.
[0080] MFRA box 166 may describe random access points within movie fragments 164 of video file 150. This may facilitate performing trick modes, such as performing seeks to specific time positions (i.e., playback times) within segments encapsulated by video file 150. MFRA box 166 is generally optional and, in some examples, need not be included in the video file. Similarly, a client device (such as client device 40) may not necessarily need to query MFRA box 166 to properly decode and display video data of video file 150. MFRA box 166 may include a number of track fragment random access (TFRA) boxes (not shown) equal to the number of tracks of video file 150, or, in some examples, a number of track fragment random access (TFRA) boxes (not shown) equal to the number of media tracks (e.g., non-hint tracks) of video file 150.
[0081] In some examples, the movie fragment 164 may include one or more stream access points (SAPs), such as IDR pictures. Similarly, the MFRA box 166 may provide an indication of the location of the SAP within the video file 150. Therefore, a temporal subsequence of the video file 150 may be formed based on the SAPs in the video file 150. The temporal subsequence may also include other pictures, such as P frames and / or B frames that depend on the SAPs. The frames and / or slices of the temporal subsequence may be arranged within the segment so that the frames / slices of other frames / slices in the temporal subsequence that depend on the subsequence may be correctly decoded. For example, in a hierarchical arrangement of data, data for predicting other data may also be included in the temporal subsequence.
[0082] Figure 3 is a conceptual diagram illustrating an example Web Real-Time Communications (WebRTC) protocol stack 180. WebRTC is a protocol suite that supports direct, interactive RTC between web browsers or between a browser and other entities using audio, video, collaboration, gaming, and the like. Figure 3An example WebRTC protocol stack 180 is shown. In the WebRTC framework, communications between parties include media (e.g., audio and video) and non-media data. Media is sent using the Secure Real-time Transport Protocol (SRTP), and non-media data is handled using the Stream Control Transmission Protocol (SCTP). In the API, the priority associated with a media stream or data stream is classified as "very low", "low", "medium", or "high". WebRTC implementations can attempt to set QoS for packets sent according to the guidance in IETF RFC8837 "Differentiated Services Code Point (DSCP) Packet Markings for WebRTC QoS".
[0083] Figure 4 is a conceptual diagram showing an RTP header format 190 . Figure 4 The RTP header format 190 is defined in IETF RFC3550 "RTP: A Transport Protocol for Real Time Applications" in July 2003. Figure 4 As shown, the RTP header format 190 includes a payload type (PT) field 192. The PT field 192 has a value that identifies the format of the RTP payload and determines the application's interpretation thereof, in accordance with RFC 3350. For example, a static PT value of 31 indicates H.261 video coding.
[0084] Dynamic payload types may be defined by other protocols. For example, an RTP packet stream may be associated with an SDP "m=" line by comparing the RTP payload type number used by the RTP packet stream with the payload type signaled in the "a=rtpmap:" line in the media portion of the SDP. An example of a media representation in SDP is shown below, where a PT value of 98 indicates ITU-T H.264 / Advanced Video Coding (AVC): m=video 49170RTP / AVP 98 a=rtpmap:98H.264 / 90000 a=fmtp:98profile-level-id=42QA01E; packetization-mode=1; sprop-parameter-sets=<parameter sets data>
[0085] Figure 5 is a conceptual diagram showing an example RTP header extension 200. RTP provides an extension mechanism for carrying additional information in the RTP packet header. If the Extension (X) bit in the RTP header is 1, a variable length header extension must be appended to the RTP header, after the CSRC list (if present). Two types of RTP header extensions are defined in IETF RFC8285 "A General Mechanism for RTP Header Extensions" in October 2017. The one-byte header extension form has a fixed 16-bit bit pattern 0xBEDE at the beginning, and each extension element starts with a byte containing an ID and a length. The 4-bit length is the number of data bytes of this header extension element after the one-byte header minus 1.
[0086] Figure 5 An example of a one-byte header extension with three extension elements 202A, 202B, 202C and padding data 204A, 204B is depicted. In particular, extension element 202A includes ID 206A, length value 208A, and data 210A; extension element 202B includes ID 206B, length value 208B, and data 210B; and extension element 202C includes ID 206C, length value 208C, and data 210C.
[0087] Figure 6 2 is a conceptual diagram showing an example of a two-byte header form 220. In particular, Figure 6 An example of is a two-byte (16-bit) RTP header field. In this example, the four-bit "appbits" field 222 may have a value that depends on the application and may be defined to have any value or meaning.
[0088] Figure 7 is a conceptual diagram illustrating an example of a two-byte RTP header extension 230. Each RTP header extension element may begin with a data byte including an identifier (ID) 232A, 232B, 232C and another data byte containing a length value 234A, 234B, 234C.
[0089] According to RFC 3550, RTP header extensions are to be used for data that the receiver can safely ignore without affecting interoperability.
[0090] WebRTC supports extensions such as client-to-mixer audio levels, mixer-to-client audio levels, media stream identification, and video direction coordination. WebRTC sends all types of media in a single RTP session and uses RTP and RTCP multiplexing to further reduce the number of required UDP ports (IETF RFC8834 "MediaTransport and Use of RTP in WebRTC" in January 2021). RTP allows the RTP header to be modified, or additional fixed function fields to be defined immediately after the SSRC field of the existing fixed header in the profile specification.
[0091] The RTP control protocol (RTCP) is based on periodically sending control packets to all endpoints in a session. The portion of the session bandwidth added for RTCP can be fixed at 5%. According to IETF RFC4585 "ExtendedRTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP / AVPF)" in July 2006, low-delay RTCP feedback (FB) messages are divided into three categories as follows: transport layer FB messages, payload-specific FB messages, and application layer FB messages.
[0092] Figure 8 is a conceptual diagram illustrating an example general packet format 240 for feedback messages. Application layer FB messages provide a mechanism for transmitting feedback from a receiver (e.g., Figure 1 The client device 40 in FIG. 40) is transparently transmitted to the sender (eg, Figure 1 The data to be exchanged between two application instances executed by these devices is usually defined in an application protocol specification.
[0093] exist Figure 8 In the example of , there is a five-bit FMT field 242 that indicates the associated type of the FB message. Figure 8 The example also depicts an eight-bit PT field 244, which indicates the RTCP packet type, such as a transport layer FB message (RTPFB) or a payload specific FB message (PSFB). An application layer FB message is a special case of a payload specific message and can be identified by PT=PSFB and FMT=15. Exactly one application layer FB message can be included in the FCI field unless the application layer FB information structure itself allows stacking.
[0094] Fig. 9250 is a conceptual diagram showing an example stream control transmission protocol (SCTP) block field format. WebRTC supports multiple simultaneous reliable data channels and unreliable data channels. Reliable data channels can transmit critical real-time game control information or non-real-time text chat. According to IETF RFC8831 "WebRTC Data Channels" in January 2021, SCTP provides the following functions for transmitting non-media data between browsers: support for multiple unidirectional streams, ordered and unordered delivery of user messages, and reliable and partially reliable transmission of user messages.
[0095] According to SCTP, a sender cannot put more than one application message in an SCTP user message, and when message interleaving is not supported, the maximum message size is 16KB. SCTP ensures that messages are delivered to SCTP users in order within a stream. While one stream may be blocked waiting for the next in-order user message, delivery can continue from other streams. SCTP can also bypass the in-order delivery service to allow a specific user message to be delivered to a user immediately after it is received.
[0096] SCTP packets include a common header and one or more blocks. The common header includes the source port number, the destination port number, the authentication tag, and the checksum. Each block can contain either control information or user data. Fig. 9 An example block field format 250 is depicted. In this example, the block field format 250 includes a block type field 252, a block flag 254, a block length field 256, and a block value 258.
[0097] Fig.10 260 is a conceptual diagram illustrating an example SCTP data block format. Fig.10 The block format 260 shown may be used for data blocks. U bit 262 indicates an unordered data block; B bit 264 and E bit 266 indicate a segmented user message; Payload protocol identifier 268 represents an application specific protocol identifier and is passed by the upper layer to SCTP and sent to its peer.
[0098] SCTP Partial Reliability Extension (PR-SCTP) (according to IETF RFC3758 "Stream Control Transmission Protocol (SCTP) Partial Reliability Extension" in May 2004) provides an ordered unreliable data delivery service and allows SCTP endpoints to signal their peers to move the cumulative acknowledgment (ack) point forward when some lost data should not be sent or resent by the sender (e.g., server device 60).
[0099] 3GPP SA4 defines multiple media types for immersive RTC. These types can be categorized as follows: ●Device information data specifies device capabilities, such as FOV, sensor information, camera information, and projection information. ●Spatial and object description data describes spatial or object information, such as scene description, spatial description, and 3D visual model. ● Interaction data representing user interactions, such as user gestures with 4 quaternions for orientation and 3 vectors for position and 64-bit timestamp, viewport with 6 parameters carried via RTCP in IMS telephony (3GPP TS26.114 “IP Multimedia Subsystem (IMS) Multimedia Telephony Media handling and interaction (IP Multimedia Subsystem (IMS) Multimedia Telephony Media Handling and Interaction); gestures, body movements, facial expressions, and AR anchors.
[0100] Device information data may be static. Device information may be exchanged at the start of a session or WebRTC interactive connection establishment (IETF RFC8445 "Interactive Connectivity Establishment (ICE)" July 2018), and the data may be carried in the Session Description Protocol (SDP) (IETF RFC 4566 "SDP: Session Description Protocol" July 2008). Device information updates may also be carried in RTP or RTCP application layer FB messages.
[0101] Spatial and object description information may be exchanged occasionally through events when the scene or 3D model is updated or changed. The data size may be large and may not change frequently.
[0102] Interaction data is very important in immersive RTC applications. Some interaction data (such as posture, viewport, or gesture) may trigger events at the receiver, and the sender may expect a response as soon as possible. Therefore, very low latency transmission is desired. Some interaction data (such as facial expressions or body movements) can manipulate the 3D avatar model on the receiver side and synchronize with specific media data (for example, mouth movements may need to be synchronized with audio data). Therefore, a synchronization scheme may be required when transmitting interaction data. Depending on the application, some media types can be delivered together; some media types can be delivered reliably, while other media types can be delivered unreliably; some media types may require burst transmission, while other media types may be transmitted continuously or periodically. The following Table 1 lists the characteristics of the media types. It is desirable to design a transmission protocol and payload format to support these media types. Table 1 - Media Type Characteristics
[0103] Fig.11 is a conceptual diagram illustrating an example media transport architecture in which techniques of this disclosure may be implemented. Fig.11 The example of depicts a high-level architecture for metadata transmission. In this example, the architecture includes UE 300 and UE / server 290. That is, UE / server 290 can correspond to a UE or a server, such as an edge server. In this example, UE / server 290 includes: clock 292, OpenXR runtime 294, and metadata parser 296, while UE 300 includes clock 302, OpenXR runtime 304, and metadata aggregator 306.
[0104] The OpenXR runtime 304 of the UE 300 may collect and / or derive metadata from the sensor input using a dedicated application programming interface (API), such as the OpenXR API. The metadata aggregator 306 may extract basic metadata from the OpenXR runtime 304 and transmit the metadata with relevant timing information to the remote UE / server 290 via the connection 310, for example, in the form of data included in a data channel or RTP / RTCP header extension. The UE / server 290 may then receive and parse the metadata carried in the input stream using the metadata parser 296, and pass the metadata and corresponding timing information to the OpenXR runtime 294 for various operations, such as rendering.
[0105] Fig.12 3 is a conceptual diagram showing an example RTP extension 320 and payload for a media type according to the techniques of the present disclosure. According to the techniques of the present disclosure, the server device 60 and the client device 40 ( Figure 1) can use the SDP framework for immersive RTC to exchange device information. For example, extensions of RTP can be used to pass additional information, such as device information, to enhance immersive RTC. In this example, the RTP header extension 320 may include a series of header value sets 324A, 324B, 324C, including an ID value, length value, media type value, media attribute value, and media length value for each media data payload set in a series of media data payload sets 322A, 322B, 322C. SDP attributes (e.g., 3gp_irtcw and / or 3gp_ibacs) can be defined to indicate an immersive WebRTC stream or an IMS-based AR session stream, respectively. The values of these attributes may include camera information or display information, such as FOV, projection, resolution, refresh rate, default posture and direction, and so on.
[0106] The spatial and object information data may be transmitted via RTP, and the payload format may use the fields of the existing RTP header specified in RFC 3550. The marker bit (M) may indicate the last packet of the spatial and object information data in the transmission order. The payload type may indicate a specific media type, such as a scene description, a spatial description, or a 3D visual model. The assignment of the RTP payload type may be performed in a dynamic manner and indicated in the SDP media description line.
[0107] In some examples, when multiple media types are bundled in an RTP packet, an RTP header extension 320 can be used to indicate each media type and data size. The data field of each extension element after the ID field and the length field can include values specifying the media type and media data size carried in the RTP payload. Additional indications or flags can be included in the header extension element data field to specify media type attributes.
[0108] One example attribute is a synchronization group. Media types belonging to the same synchronization group can be synchronized on the receiver side (e.g., client device 40). Another example attribute can indicate whether the media type data should be synchronized with other media data such as audio or video. Media types that do not need to be synchronized can be assigned to a default group (e.g., group 0).
[0109] exist Fig.12 In the example, assume that there are three data types (type 0, type 1, and type 2). Fig.12 In the example of , there are three RTP header extension sets (324A, 324B, 324C), one for each media type. For example, an attribute can specify whether the corresponding media type is to be synchronized with another media type, and if so, which other media types are to be synchronized with.
[0110] Fig.13 330 is a conceptual diagram showing an example RTP extension element format 330 for interactive media type data. The RTP extension element format 330 includes an ID field 332, a length field 334, a media type field 336, a media type attribute field 338, a media type data length field 340, media type data 342, and padding data 344. In this example, the RTP extension can be used to carry media data types. Each extension element can carry a type of media type data. The media type attribute field 338 can include data specifying attributes such as priority, synchronization indication, timestamp, and / or reliability information. The extension element can also specify the length of the media type data in bytes in the media type data length field 340.
[0111] For some delay-tolerant media types (such as viewports), interactive media type data can be transmitted via RTCP. Application layer FB messages can be used to carry media type data. The content of the Feedback Control Information (FCI) entry of the RTCP packet can include a media type identifier, a media type data structure, a sequence number, a timestamp, and media type attributes. When multiple media types are bundled in a single RTCP packet, an indicator for indicating the number of media types and the length of each media type data can be included in the FCI entry.
[0112] OpenXR specifies an action set XrActionSet, which contains one or more actions (e.g., XrAction). The RTP / RTCP header extension can carry an XrActionSet, including an action set header followed by one or more action metadata payloads.
[0113] The action set header may include: a 16-bit field indicating the action set metadata type; a 16-bit field indicating the action set attributes; a 64-bit field indicating the action set name; a 32-bit field indicating the action set priority; a 32-bit field indicating the number of actions associated with the action set; and a 16-bit length field indicating the length of an action metadata payload.
[0114] The action metadata payload may include: a 16-bit field indicating the action type; a 16-bit field indicating the action attributes; and a 32-bit field indicating the action type as the XrActionType specified in OpenXR. The action metadata field may carry the corresponding OpenXR extension data structure.
[0115] In some examples, due to data length constraints of RTP, the RTP header extension may carry an XR action. The extension element data may carry the action metadata payload as described above. An additional priority field may be defined to indicate the priority of the action set associated with the action.
[0116] In some examples, the OpenXR action set metadata may be converted to JavaScript Object Notation (JSON) format. The JSON formatted metadata may be further compressed and may be carried in RTP / RTCP header extension element data or media type data.
[0117] Fig.14 is a conceptual diagram showing an example immersive media profile (IMP) 350. An IMP profile can be a profile of RTP. An IMP can define immersive media specific interpretations of profile related fields. In an IMP, the RTP header fields X, CC, and M can be combined into attribute fields. One attribute field can indicate whether a timestamp is present. Another attribute field can indicate whether more than one media type is included in a packet. If multiple media types are bundled in a common packet, the number of media types can be signaled.
[0118] exist Fig.14 In the example of , three media types are included in the RTP packet. In one example, these fields have the following meanings: ● T 352: One bit. If the T bit is set, the timestamp must be present in the header. ● N 354: Four bits. This field indicates the total number of media types present in the packet. A value of zero is invalid. - PT 356A, 356B, 356C: This field indicates the media type of the corresponding media data 360A, 360B, 360C contained in this packet. Length 358A, 358B, 358C: 16 bits This field indicates the media type data length in 16 bits.
[0119] In some examples, additional media type attribute fields such as synchronization, reliability, and priority may be specified for each media type in the packet. The synchronization field may indicate whether the associated media types share the same timestamp of the packet; the reliability field may indicate whether the associated media type data should be delivered and whether packet loss can be reported to the sender to request retransmission.
[0120] Fig.15370 is a conceptual diagram illustrating an example SCTP block format 370 for an immersive media type. According to the techniques of the present disclosure, a WebRTC data channel over SCTP may be used to carry immersive media type data. Each interactive media type may be sent in a corresponding SCTP stream. Alternatively, multiple media types (such as synchronized media types) may be bundled into a single SCTP stream. An application executed by, for example, a client device 40 or a server device 60 may set data channel attributes, such as reliable or unreliable transmission, ordered or unordered delivery, and priority for transmitting a particular media type.
[0121] Each media type data may be assigned to a data payload block in an SCTP packet. The payload protocol identifier may indicate the media type specified by a higher application layer. The media type data may be stored in the payload user data.
[0122] Since SCTP does not provide a timestamp in the payload data block header, an attribute field may be added to indicate whether a timestamp is present in the block. The timestamp 372 may be signaled in a fixed location of the block (e.g., a 32-bit field after the payload protocol identifier) for associated media type data.
[0123] In some examples, the payload protocol identifier field of the SCTP payload data block type (type=0) can indicate a dedicated application protocol, and the block user data can carry protocol data. The application protocol header can carry attributes such as data boundaries, media type, timestamp, sequence number, synchronization indication, and data length, and the application protocol payload data can carry a media type data structure.
[0124] In some examples, a new block type may be defined for each interactive media type, and the block flags field may contain media type attributes, such as a sync attribute to indicate whether there is a relevant timestamp in the block. An out-of-order attribute may indicate whether the data block is in-order or out-of-order.
[0125] exist Fig.15 In the example of , the S bit 374 is a synchronization bit. If set to "1", this bit indicates that this is a synchronization data block and a timestamp is assigned to the data block. Otherwise, the receiver can ignore the value of the timestamp field.
[0126] Fig.16 3 is a conceptual diagram illustrating another example of an SCTP block format 380 for immersive media type data. In this example, a specific type may be defined for all immersive media types. A payload type field 382 may be allocated in an immersive media type data block to indicate a specific media type.
[0127] Fig.17 396N。 Fig.17 Depicted is an example data block structure for action set timed metadata.
[0128] In one example, the data chunk payload header is the first 16 bytes of the data chunk, and the payload protocol identifier (PPID) is the value "53" as "WebRTC Binary". The user data may contain an action set XrActionSet defined in OpenXR. An action set may contain one or more actions XrAction.
[0129] Fig.18 4 is a block diagram illustrating an example action set header format 400 according to the techniques of the present disclosure. In this example, the action set header format 400 includes a metadata type value 402, an action set attribute 404, an action set name 406, an action set priority 408, a number of actions 410, and an action length 412A-412N for each of the number of actions. The metadata type value 402 may indicate that the payload is for an action set. The action set attribute 404 may be a 16-bit field indicating the action set attribute. The action set name 406 may be a 64-bit field indicating the name of the action set. The action set priority 408 may be a 32-bit field indicating the priority for the action set. The number of actions 410 may be a 32-bit field indicating the total number of actions included in the action set. Each of the action lengths 412A-412N may be a corresponding 16-bit field indicating the length of the corresponding action of the actions included in the action set.
[0130] Fig.19 4 is a block diagram illustrating an example action metadata payload format 420 in accordance with techniques of the present disclosure. In this example, the action metadata payload format 420 includes a metadata type 422, action attributes 424, an action type 426, and action metadata 428. The metadata type 422 may be a 16-bit field indicating a registered extension number of an action defined in OpenXR. The action attributes 424 may be a 16-bit field indicating the properties of the action. The action type 426 may be a 32-bit field indicating an XrActionType enumeration value specified in OpenXR. The action metadata 428 may include timed metadata associated with the action.
[0131] In the case where the data length of the action set is large, each data block can carry one action metadata, and the payload format can be the same as the action metadata payload format. An additional priority field can be defined to indicate the priority of the action set associated with the action. An additional action set ID field can be used to indicate the corresponding action set associated with the action.
[0132] Fig. 20 is a block diagram illustrating an example gaze interaction metadata action payload format 430 in accordance with techniques of this disclosure. The gaze interaction metadata action payload format 430 may be used for XR_EXT_eye_Gaze_interaction of OpenXR. Fig. 20 The gaze interaction metadata action payload format 430 includes a metadata type 432, a version 434, a flag 436, an action type 438, an XR eye gaze sample time ext::time 440, and an XR pose f 442. The metadata type field 432 may have a value of 31. The flag 436 may be a 4-bit field mapped to the XrSpaceLocationFlags defined in OpenXR. The action type 438 may have a value of "XR_Action_type_POSE_INPUT" according to OpenXR.
[0133] XR pose f 442 may represent seven floating point elements, including XrQuaternionf(x, y, z, w) and XrVector3f(x, y, z). That is, each component in XrQuaternion(x, y, z, and w) and XrVector3f(x, y, and z) may be represented as a corresponding floating point value. XrQuaternion may represent the three-dimensional rotation of the user in the virtual space, and XrVector3 value may represent the three-dimensional position of the user in the virtual space. Each element may be represented by a 32-bit single-precision floating point number or a 64-bit double-precision floating point number as specified in IETF RFC4506.
[0134] In some examples, in addition to OpenXR XrTime, additional timing information such as predicted time can be carried. For example, both hand tracking predictions in 100 milliseconds predicted time and 1 second predicted time can be passed to the server. The server can select the appropriate tracking prediction based on the varying end-to-end latency.
[0135] In some examples, the OpenXR action set and the basic elements or fields of the action can be converted to JSON format. The metadata payload in JSON format can be further compressed and carried in the data block user data payload.
[0136] Fig.21 is a block diagram illustrating an example spatial location metadata payload format 450 according to techniques of the present disclosure. An OpenXR application uses the xrLocateSpace function to find the pose of the XrSpace origin that is within the base XrSpace at a given historical or predicted time. The location space elements include the base space, space, time, and spatial position defined in OpenXR.
[0137] The spatial position XrSpaceLocation includes XrSpaceLocationFlagBits, XrSpaceVelocity, and XrPosef. The spatial velocity includes the velocity flag, the linear velocity in meters per second, and the angular velocity in radians per second. These values can be included in Fig.21 In the data block structure shown.
[0138] Fig.21 The spatial position metadata payload format 450 includes a metadata type 452, a version field 454, a flag 456, XR space::spatial 458, XR space::basespace 460, XR time::time 462; and XR pose f 464. Metadata type 452 may include a value defined for the XR spatial position. Flag 456 may be a 4-bit field indicating an XR spatial position flag defined in OpenXR. XR space::spatial 458 and XR space::basespace 460 may be corresponding 32-bit fields that together indicate a spatial handle defined in OpenXR. XR time::time 462 may be a sampling timestamp expressed in nanoseconds.
[0139] XR pose f 464 may represent seven floating point elements, including XrQuaternionf(x, y, z, w) and XrVector3f(x, y, z). That is, each component in XrQuaternion(x, y, z and w) and XrVector3f(x, y and z) may be represented as a corresponding floating point value. XrQuaternion may represent the three-dimensional rotation of the user in the virtual space at the sampling time, and XrVector3 value may represent the three-dimensional position of the user in the virtual space at the sampling time. Each element may be represented by a 32-bit single-precision floating point number or a 64-bit double-precision floating point number as specified in IETF RFC4506.
[0140] Fig. 22 is a block diagram illustrating an example spatial velocity metadata payload format 470 in accordance with techniques of this disclosure. Fig. 22The spatial velocity metadata payload format 470 in the example of 470 includes metadata type 472, version 474, flags 476, XR space::spatial 478, XR space::basespace 480, XR time::time 482, linear velocity 484, and angular velocity 486. Metadata type 472 may have a value defined for XR spatial velocity. Flags 476 may be a 4-bit field indicating an XR spatial velocity flag defined in OpenXR. XR space::spatial 478 and XR space::basespace 480 may be corresponding 32-bit fields that together indicate a spatial handle defined in OpenXR.
[0141] Linear velocity 484 may have three floating point elements, including XrVector3f(x, y, z). Each element may be represented by a 32-bit single-precision floating point number or a 64-bit double-precision floating point number as specified in IETF RFC4506. The elements of the XrVector3 value may represent component velocities in a particular direction (e.g., up / down, left / right, and forward / backward), such that the elements together represent the velocity in a particular three-dimensional vector direction at the sampling time.
[0142] Angular velocity 486 may have three floating point elements, including XrVector3f(x, y, z). Each element may be represented by a 32-bit single-precision floating point number or a 64-bit double-precision floating point number as specified in IETF RFC4506. The elements of the XrVector3 value may represent component angular velocities in a particular Euler angle direction, such that the elements together represent a rotation around a particular Euler angle at a sampling time.
[0143] In some examples, in addition to OpenXR XrTime, additional timing information such as predicted time can be carried. For example, both a spatial position prediction in 100 milliseconds predicted time and 1 second predicted time can be passed to the server. The server can select the appropriate predicted position based on the varying end-to-end latency.
[0144] In some examples, an association between space velocity XrSpaceVelocity and space location XrSpaceLocation may be indicated in the payload.
[0145] In some examples, the basic elements or fields of the OpenXR spatial position or spatial velocity may be converted to JSON format. The JSON formatted payload may be further compressed and may be carried in a data block user data payload.
[0146] Fig.23is a block diagram illustrating an example view metadata payload format 490 according to techniques of the present disclosure. An OpenXR application can use xrLocateViews to retrieve the viewer pose and projection parameters required to render each view for use in a composite projection layer. The xrLocateViews function returns view and projection information for a specific display time. An XrView includes, for example, a pose and field of view (fov) for a user at a specific time.
[0147] Fig.23 The view metadata payload format 490 includes a metadata type 492, a version 494, a flag 496, an XR space:: space 498, an XR space:: display time 500, an XR pose f:: pose 502, and an XR pose f:: field of view (fov) 504. The metadata type 492 may have a value defined for XrView. The flag 496 may be a 4-bit field indicating an XrViewStateFlags defined in OpenXR. The XR space:: space 498 may indicate a space handle defined in OpenXR. The XR space:: display time 500 may be a display time in nanoseconds.
[0148] XR pose f::pose 502 may include seven floating point elements, including XrQuaternionf(x, y, z, w) and XrVector3f(x, y, z). That is, each component in XrQuaternion(x, y, z, and w) and XrVector3f(x, y, and z) may be represented as a corresponding floating point value. XrQuaternion may represent the three-dimensional rotation of the user in the virtual space, and XrVector3 value may represent the three-dimensional position of the user in the virtual space when displayed. Each element may be represented by a 32-bit single-precision floating point number or a 64-bit double-precision floating point number as specified in IETF RFC4506.
[0149] XR pose f::fov 504 may include four floating point elements: XrFovf(angleLeft, angleRight, angleUp, angleDown). Each element may be represented by a 32-bit single precision floating point number or a 64-bit double precision floating point number as specified in IETF RFC4506. The elements of XR pose f::fov 504 may define the user's field of view when displayed.
[0150] Multiple views may be bundled into a data block, or each view may be carried in a separate data block. When multiple views are bundled, an XrLocateViews header may be added to indicate the number of views, the length of each view element, the common space, and the display time shared by the view elements. In some examples, the basic elements or fields of the OpenXR view element may be converted to JSON format, and the JSON formatted metadata payload may be further compressed and carried in the data block user data payload.
[0151] Fig.24 is a flow chart illustrating an example method of sending user interaction data and associated metadata to another device involved in an XR multimedia communication session in accordance with techniques of this disclosure. Fig.11 UE 300 to explain Fig.24 It should be understood that other devices (such as Figure 1 The client device 40) can perform this method or a similar method.
[0152] Initially, the UE 300 may present a representation of a virtual scene to a user of the UE 300, for example, via a heads-up display (HUD). The UE 300 may also be communicatively coupled with various input devices, such as one or more controllers, game pads, keyboards, mice, and the like. The user may interact with the virtual scene in various ways, for example, by physically moving, rotating, or otherwise changing the viewport (e.g., using controller input), touching virtual objects (e.g., determined by collision detection between a representation of the user's avatar and the object in the virtual scene, button presses, and the like), speaking, or other such interactions. The UE 300 may determine these user interactions with the virtual scene (510).
[0153] UE 300 may determine the media type for each user interaction (512). For example, the media type may include animation associated with a moving virtual object, audio data collected from the user, user posture, viewport, gestures, body movements, facial expressions, etc. UE 300 may construct a packet including a corresponding data set for each user interaction (514). Similarly, UE 300 may add header data to the packet indicating the media type and attributes for the user interaction (516), for example, as described above for Figure 12-23 The UE 300 may then send the packet to the UE / server 290 (518), which represents another device involved in the XR multimedia communication session.
[0154] In this way, Fig.24The method represents an example of a method comprising: determining one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; constructing a packet including data for a media communication session, the packet including header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and sending the packet to devices involved in the media communication session.
[0155] The following clauses represent various examples of the techniques of this disclosure:
[0156] Clause 1: A method for receiving media data, the method comprising: receiving a packet comprising media data of a media communication session, the packet comprising header data, the header data indicating one or more media types of the media data and one or more attributes for each of the one or more media types; extracting the media data of each of the one or more media types; processing the media data of each of the one or more media types according to the corresponding one or more attributes; and presenting the media data.
[0157] Clause 2: The method of clause 1, wherein the one or more attributes indicate one or more of: camera information, display information, field of view, projection, resolution, refresh rate, a default posture of a user, a default orientation of the user, a timestamp for the media data, priority data, a reliability indication, or whether two or more media types are to be presented synchronously.
[0158] Clause 3: The method of any of clauses 1 and 2, wherein the header data comprises an extension to a real-time transport protocol (RTP) header, the RTP header comprising a marker bit (M-bit), the marker bit having a value indicating whether the packet is the last packet of interactive media data in a transmission order.
[0159] Clause 4: The method of any of clauses 1-3, wherein the header data comprises an extension to a real-time transport protocol (RTP) header, the RTP header comprising a payload type value indicating whether the media data corresponds to a scene description, a spatial description, or a three-dimensional (3D) visual model.
[0160] Clause 5: The method of any of clauses 1-4, wherein the header data comprises an extension to a Real-time Transport Protocol (RTP) header, the RTP header comprising a payload type value indicating whether the media data represents a pose, a gesture, or a viewport.
[0161] Clause 6: The method of any of clauses 1-5, wherein the one or more media types include two or more media types, and the two or more media types are one of the following: audio data, video data, augmented reality (AR) data, extended reality (XR) data, mixed reality (MR) data, or virtual reality (VR) data.
[0162] Clause 7: The method of any of clauses 1-6, wherein the header data comprises one or more length values for the one or more types of media data in the packet.
[0163] Clause 8: The method of any one of clauses 1-7, wherein the header data conforms to a profile of a Real-time Transport Protocol (RTP), wherein the X field, CC field, and M field are combined into one or more attribute fields.
[0164] Clause 9: The method of any of clauses 1-8, wherein the header data includes a value indicating whether a timestamp value is to be included in the header data.
[0165] Clause 10: The method of any of clauses 1-9, wherein the header data includes a value indicating a total number of media types included in the packet.
[0166] Clause 11: A method according to any one of clauses 1-10, wherein the grouping includes a first grouping, the media data conforming to a first type of media data, and the header data indicating a timestamp for the media data and indicating that the first type of media data will be synchronized with a second type of media data, the method further comprising: receiving a second grouping including the second type of media data and second header data specifying the timestamp, wherein presenting the media data includes: in response to determining that each of the header data of the first grouping and the second header data of the second grouping specifies the timestamp, presenting the first type of media data of the first grouping while presenting the second type of media data of the second grouping.
[0167] Clause 12: The method of any of clauses 1-11, wherein receiving the packets comprises receiving the packets as part of a real-time transport protocol (RTP) session.
[0168] Clause 13: The method of any of clauses 1-12, wherein receiving the packet comprises receiving the packet as part of a Web Real-Time Communications (WebRTC) session.
[0169] Clause 14: The method of any of clauses 1-11, wherein receiving the packet comprises receiving the packet as part of a Stream Control Transmission Protocol (SCTP) stream.
[0170] Clause 15: The method of clause 14, wherein the SCTP stream includes media data for each of the one or more media types.
[0171] Clause 16: The method of clause 15, wherein each of the one or more media types of the SCTP stream is to be synchronized, the method further comprising: receiving at least one additional SCTP stream, the at least one additional SCTP stream comprising media data of the additional media type that is not synchronized.
[0172] Clause 17: The method of any of clauses 14-16, wherein each of the one or more media types is assigned to a corresponding data payload block of the packet.
[0173] Clause 18: The method of Clause 14, wherein the SCTP stream includes media data for one of the one or more media types, and the method further comprises: receiving one or more additional packets of one or more additional SCTP streams, each of the one or more additional SCTP streams including media data of a different media type of the one or more media types.
[0174] Clause 19: The method of any of clauses 14-18, wherein a portion of a payload block of the packet indicates whether a timestamp is provided for media data in the payload block.
[0175] Clause 20: The method of any of clauses 14-19, wherein a portion of a payload block of the packet indicates whether synchronization information is provided for media data in the payload block.
[0176] Clause 21: An apparatus for receiving media data, the apparatus comprising one or more means for performing the method of any of clauses 1-20.
[0177] Clause 22: The apparatus of clause 21, wherein the one or more units comprise one or more processors implemented in circuitry.
[0178] Clause 23: The apparatus of any of clauses 21 and 22, wherein the one or more units include a memory configured to store the media data.
[0179] Clause 24: A device for receiving media data, the device comprising: a unit for receiving a packet comprising media data of a media communication session, the packet comprising header data, the header data indicating one or more media types of the media data and one or more attributes for each of the one or more media types; a unit for extracting media data for each of the one or more media types; a unit for processing the media data for each of the one or more media types according to the corresponding one or more attributes; and a unit for presenting the media data.
[0180] Clause 25: A computer readable storage medium having stored thereon instructions which, when executed, cause a processor to perform the method of any of clauses 1-20.
[0181] Clause 26: A method for sending media data, the method comprising: generating a packet comprising media data of a media communication session, the packet comprising header data, the header data indicating one or more media types of the media data and one or more attributes for each of the one or more media types; and sending the packet to a client device.
[0182] Clause 27: A method for processing media data, the method comprising: determining one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; constructing a packet comprising data for a media communication session, the packet comprising header data, the header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and sending the packet to devices involved in the media communication session.
[0183] Clause 28: The method of clause 27, wherein the one or more attributes indicate one or more of: camera information, display information, field of view, projection, resolution, refresh rate, a default posture of a user, a default orientation of the user, a timestamp for the media data, priority data, a reliability indication, or whether two or more media types are to be presented synchronously.
[0184] Clause 29: The method of clause 27, wherein the header data comprises an extension to a real-time transport protocol (RTP) header, the RTP header comprising a marker bit (M-bit), the marker bit having a value indicating whether the packet is the last packet of interactive media data in a transmission order.
[0185] Clause 30: The method of clause 27, wherein the header data comprises an extension to a real-time transport protocol (RTP) header, the RTP header comprising a payload type value indicating whether the media data corresponds to a scene description, a spatial description, or a three-dimensional (3D) visual model.
[0186] Clause 31: The method of clause 27, wherein the header data comprises an extension to a real-time transport protocol (RTP) header, the RTP header comprising a payload type value indicating whether the media data represents a pose, a gesture, or a viewport.
[0187] Clause 32: The method of clause 27, wherein the one or more media types include an indication of: an augmented reality (AR) anchor, user pose data, viewport data, gesture data, body movement data, or facial expression data.
[0188] Clause 33: The method of clause 27, wherein the header data comprises one or more length values for the one or more types of media data in the packet.
[0189] Clause 34: The method of clause 27, wherein the header data conforms to a profile of a real-time transport protocol (RTP), wherein the X field, CC field, and M field are combined into one or more attribute fields.
[0190] Clause 35: The method of clause 27, wherein the header data includes a value indicating whether a timestamp value is to be included in the header data.
[0191] Clause 36: The method of clause 27, wherein the header data includes a value indicating a total number of media types included in the packet.
[0192] Clause 37: The method of clause 27, wherein the packet includes a first packet, the media data conforms to a first type of media data, and the header data indicates a timestamp for the media data and indicates that the first type of media data will be synchronized with a second type of media data, the method further comprising: constructing a second packet including the second type of media data and second header data specifying the timestamp; and sending the second packet to the device involved in the communication session.
[0193] Clause 38: The method of clause 27, wherein sending the packet comprises sending the packet as part of a real-time transport protocol (RTP) session.
[0194] Clause 39: The method of clause 27, wherein sending the packet comprises sending the packet as part of a Web Real-Time Communications (WebRTC) session.
[0195] Clause 40: The method of clause 27, wherein sending the packet comprises sending the packet as part of a stream control transmission protocol (SCTP) stream.
[0196] Clause 41: The method of clause 40, wherein the SCTP stream includes media data for each of the one or more media types.
[0197] Clause 42: The method of clause 41, wherein each of the one or more media types of the SCTP stream is to be synchronized, the method further comprising: sending at least one additional SCTP stream, the at least one additional SCTP stream comprising media data of the additional media type that is not synchronized.
[0198] Clause 43: The method of clause 40, wherein each of the one or more media types is assigned to a corresponding data payload block of the packet.
[0199] Clause 44: The method of clause 40, wherein the SCTP stream includes media data for a media type among the one or more media types, and the method further comprises: sending one or more additional packets of one or more additional SCTP streams, each of the one or more additional SCTP streams including media data of a different media type among the one or more media types.
[0200] Clause 45: The method of clause 40, wherein a portion of a payload block of the packet indicates whether a timestamp is provided for media data in the payload block.
[0201] Clause 46: The method of clause 40, wherein a portion of a payload block of the packet indicates whether synchronization information is provided for media data in the payload block.
[0202] Clause 47: A device for processing media data, the device comprising: a memory configured to store media data; and a processing system comprising one or more processors implemented in a circuit, the processing system configured to: determine one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; construct a packet comprising data for a media communication session, the packet comprising header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and send the packet to a device involved in the media communication session.
[0203] Clause 48: The device of clause 47, wherein the one or more attributes indicate one or more of: camera information, display information, field of view, projection, resolution, refresh rate, a default posture of a user, a default orientation of the user, a timestamp for the media data, priority data, a reliability indication, or whether two or more media types are to be presented synchronously.
[0204] Clause 49: The device of clause 47, wherein the header data comprises an extension to a real-time transport protocol (RTP) header, the RTP header comprising a marker bit (M-bit), the marker bit having a value indicating whether the packet is the last packet of interactive media data in a transmission order.
[0205] Clause 50: The device of clause 47, wherein the header data comprises an extension to a real-time transport protocol (RTP) header, the RTP header comprising a payload type value indicating whether the media data corresponds to a scene description, a spatial description, or a three-dimensional (3D) visual model.
[0206] Clause 51: The device of clause 47, wherein the header data comprises an extension to a real-time transport protocol (RTP) header, the RTP header comprising a payload type value indicating whether the media data represents a posture, a gesture, or a viewport.
[0207] Clause 52: The device of clause 47, wherein the one or more media types include an indication of: an augmented reality (AR) anchor, user pose data, viewport data, gesture data, body movement data, or facial expression data.
[0208] Clause 53: The apparatus of clause 47, wherein the header data comprises one or more length values for the one or more types of media data in the packet.
[0209] Clause 54: The apparatus of clause 47, wherein the header data conforms to a profile of a real-time transport protocol (RTP), wherein the X field, the CC field, and the M field are combined into one or more attribute fields.
[0210] Clause 55: A device for processing media data, the device comprising: a unit for determining one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; a unit for constructing a packet including data for a media communication session, the packet including header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and a unit for sending the packet to a device involved in the media communication session.
[0211] Item 56: A computer-readable storage medium having instructions stored thereon, which, when executed, cause a processor to perform the following operations: determining one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; constructing a packet including data for a media communication session, the packet including header data, the header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and sending the packet to devices involved in the media communication session.
[0212] Clause 57: A method for processing media data, the method comprising: determining one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; constructing a packet comprising data for a media communication session, the packet comprising header data, the header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and sending the packet to a device involved in the media communication session.
[0213] Clause 58: The method of clause 57, wherein the one or more attributes indicate one or more of: camera information, display information, field of view, projection, resolution, refresh rate, a default posture of a user, a default orientation of the user, a timestamp for the media data, priority data, a reliability indication, or whether two or more media types are to be presented synchronously.
[0214] Clause 59: The method of any of clauses 57 and 58, wherein the header data comprises an extension to a real-time transport protocol (RTP) header, the RTP header comprising a marker bit (M-bit), the marker bit having a value indicating whether the packet is the last packet of interactive media data in a transmission order.
[0215] Clause 60: The method of any of clauses 57-59, wherein the header data comprises an extension to a real-time transport protocol (RTP) header, the RTP header comprising a payload type value indicating whether the media data corresponds to a scene description, a spatial description, or a three-dimensional (3D) visual model.
[0216] Clause 61: The method of any of clauses 57-60, wherein the header data comprises an extension to a Real-time Transport Protocol (RTP) header, the RTP header comprising a payload type value indicating whether the media data represents a pose, a gesture, or a viewport.
[0217] Clause 62: The method of any of clauses 57-61, wherein the one or more media types include an indication of: an augmented reality (AR) anchor, user pose data, viewport data, gesture data, body movement data, or facial expression data.
[0218] Clause 63: The method of any of clauses 57-62, wherein the header data comprises one or more length values for the one or more types of media data in the packet.
[0219] Clause 64: The method of any of clauses 57-63, wherein the header data conforms to a profile of a real-time transport protocol (RTP), wherein the X field, CC field, and M field are combined into one or more attribute fields.
[0220] Clause 65: The method of any of clauses 57-64, wherein the header data includes a value indicating whether a timestamp value is to be included in the header data.
[0221] Clause 66: The method of any of clauses 57-65, wherein the header data includes a value indicating a total number of media types included in the packet.
[0222] Clause 67: A method as described in any of clauses 57-66, wherein the packet comprises a first packet, the media data conforms to a first type of media data, and the header data indicates a timestamp for the media data and indicates that the first type of media data will be synchronized with a second type of media data, the method further comprising: constructing a second packet comprising the second type of media data and second header data specifying the timestamp; and sending the second packet to the device involved in the communication session.
[0223] Clause 68: The method of any of clauses 57-67, wherein sending the packet comprises sending the packet as part of a real-time transport protocol (RTP) session.
[0224] Clause 69: The method of any of clauses 57-68, wherein sending the packet comprises sending the packet as part of a Web Real-Time Communications (WebRTC) session.
[0225] Clause 70: The method of any of clauses 57-69, wherein sending the packet comprises sending the packet as part of a Stream Control Transmission Protocol (SCTP) stream.
[0226] Clause 71: The method of clause 70, wherein the SCTP stream includes media data for each of the one or more media types.
[0227] Clause 72: The method of clause 71, wherein each of the one or more media types of the SCTP stream is to be synchronized, the method further comprising: sending at least one additional SCTP stream, the at least one additional SCTP stream comprising media data of the additional media type that is not synchronized.
[0228] Clause 73: The method of any of clauses 71 and 72, wherein each of the one or more media types is assigned to a corresponding data payload block of the packet.
[0229] Clause 74: The method of clauses 71-73, wherein the SCTP stream includes media data for a media type among the one or more media types, and the method further comprises: sending one or more additional packets of one or more additional SCTP streams, each of the one or more additional SCTP streams including media data of a different media type among the one or more media types.
[0230] Clause 75: The method of clauses 71-74, wherein a portion of a payload block of the packet indicates whether a timestamp is provided for media data in the payload block.
[0231] Clause 76: The method of clauses 71-75, wherein a portion of a payload block of the packet indicates whether synchronization information is provided for media data in the payload block.
[0232] Clause 77: A device for processing media data, the device comprising: a memory configured to store media data; and a processing system comprising one or more processors implemented in a circuit, the processing system configured to: determine one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; construct a packet comprising data for a media communication session, the packet comprising header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and send the packet to a device involved in the media communication session.
[0233] Clause 78: The device of clause 77, wherein the one or more attributes indicate one or more of: camera information, display information, field of view, projection, resolution, refresh rate, a default posture of a user, a default orientation of the user, a timestamp for the media data, priority data, a reliability indication, or whether two or more media types are to be presented synchronously.
[0234] Clause 79: The apparatus of any of clauses 77 and 78, wherein the header data comprises an extension to a real-time transport protocol (RTP) header, the RTP header comprising a marker bit (M-bit) having a value indicating whether the packet is the last packet of interactive media data in a transmission order.
[0235] Clause 80: The apparatus of any of clauses 77-79, wherein the header data comprises an extension to a real-time transport protocol (RTP) header, the RTP header comprising a payload type value indicating whether the media data corresponds to a scene description, a spatial description, or a three-dimensional (3D) visual model.
[0236] Clause 81: The apparatus of any of clauses 77-80, wherein the header data comprises an extension to a Real-time Transport Protocol (RTP) header, the RTP header comprising a payload type value indicating whether the media data represents a pose, a gesture, or a viewport.
[0237] Clause 82: The device of any of clauses 77-81, wherein the one or more media types include an indication of: an augmented reality (AR) anchor, user pose data, viewport data, gesture data, body movement data, or facial expression data.
[0238] Clause 83: The apparatus of any of clauses 77-82, wherein the header data comprises one or more length values for the one or more types of media data in the packet.
[0239] Clause 84: The apparatus of any of clauses 77-83, wherein the header data conforms to a profile of a Real-time Transport Protocol (RTP), wherein the X field, CC field, and M field are combined into one or more attribute fields.
[0240] Clause 85: A device for processing media data, the device comprising: a unit for determining one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; a unit for constructing a packet comprising data for a media communication session, the packet comprising header data, the header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and a unit for sending the packet to a device involved in the media communication session.
[0241] Item 86: A computer-readable storage medium having instructions stored thereon, which, when executed, cause a processor to perform the following operations: determine one or more user interactions with a virtual scene, each of the one or more user interactions corresponding to a specific media type among one or more media types; construct a packet including data for a media communication session, the packet including header data, the header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; and send the packet to devices involved in the media communication session.
[0242] 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 as one or more instructions or codes on a computer-readable medium or transmitted via a computer-readable medium and executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium (which corresponds to a tangible medium such as a data storage medium) or a communication medium, the communication medium including, for example, any medium that facilitates the transfer of a computer program from one place to another according to a communication protocol. In this way, a computer-readable medium may generally correspond to (1) a non-temporary tangible computer-readable storage medium, or (2) a communication medium such as a signal or carrier wave. A data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementing the technology described in the present disclosure. A computer program product may include a computer-readable medium.
[0243] By way of example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store the desired program code in the form of instructions or data structures and can be accessed by a computer. Moreover, any connection is appropriately referred to as a computer-readable medium. For example, if the instruction is transmitted from a website, server or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL) or wireless technology (e.g., infrared, radio and microwave), the coaxial cable, fiber optic cable, twisted pair, DSL or wireless technology (e.g., infrared, radio and microwave) is included in the definition of the medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals or other temporary media, but are instead directed to non-temporary tangible storage media. The disks and optical disks used herein include: compact disks (CDs), laser optical disks, optical optical disks, digital versatile disks (DVDs), floppy disks and blue-ray disks, wherein the disks usually reproduce data magnetically, and the optical disks reproduce data using lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0244] 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 circuits. Accordingly, the term "processor" as used herein may refer to any of the aforementioned structures or any other structure suitable for implementing the techniques described herein. In addition, in some aspects, the functions described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. In addition, the techniques may be implemented entirely in one or more circuits or logic elements.
[0245] The techniques of the present disclosure may be implemented in a variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in the present disclosure to emphasize the functional aspects of a device configured to perform the disclosed techniques, but do not necessarily require implementation by different hardware units. Instead, as described above, the various units may be combined in a codec hardware unit, or provided by a collection of interoperable hardware units (including one or more processors as described above) in combination with appropriate software and / or firmware.
[0246] Various examples have been described. These and other examples are within the scope of the following claims.
Claims
1. A method for processing media data, the method comprising: determining one or more user interactions with the virtual scene, each of the one or more user interactions corresponding to a specific media type of the one or more media types; constructing a packet including data for a media communication session, the packet including header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; as well as The packets are sent to devices involved in the media communication session.
2. The method according to claim 1, wherein: The one or more attributes indicate one or more of: camera information, display information, field of view, projection, resolution, refresh rate, a default posture of a user, a default orientation of the user, a timestamp for the media data, priority data, a reliability indication, or whether two or more media types are to be presented synchronously.
3. The method according to claim 1, wherein: The header data includes an extension to a Real-time Transport Protocol (RTP) header, the RTP header including a marker bit (M-bit) having a value indicating whether the packet is a last packet of interactive media data in a transmission order.
4. The method according to claim 1, wherein: The header data includes an extension to a Real-time Transport Protocol (RTP) header, the RTP header including a payload type value indicating whether the media data corresponds to a scene description, a spatial description, or a three-dimensional (3D) visual model.
5. The method according to claim 1, wherein: The header data includes an extension to a Real-time Transport Protocol (RTP) header, the RTP header including a payload type value indicating whether the media data represents a pose, a gesture, or a viewport.
6. The method according to claim 1, wherein: The one or more media types include an indication of an augmented reality (AR) anchor, user pose data, viewport data, hand gesture data, body movement data, or facial expression data.
7. The method according to claim 1, wherein: The header data includes one or more length values for the one or more types of media data in the packet.
8. The method according to claim 1, wherein: The header data complies with a profile of a real-time transport protocol (RTP), wherein an X field, a CC field, and an M field are combined into one or more attribute fields.
9. The method according to claim 1, wherein: The header data includes a value indicating whether a timestamp value is to be included in the header data.
10. The method according to claim 1, wherein: The header data includes a value indicating a total number of media types included in the packet.
11. The method according to claim 1, wherein: The packets include a first packet, the media data conforms to a first type of media data, and the header data indicates a timestamp for the media data and indicates that the first type of media data is to be synchronized with a second type of media data, the method further comprising: constructing a second packet including media data of the second type and second header data specifying the timestamp; and The second packet is sent to the device involved in the communication session.
12. The method according to claim 1, wherein: Sending the packet includes sending the packet as part of a Real-time Transport Protocol (RTP) session.
13. The method according to claim 1, wherein: Sending the packet includes sending the packet as part of a Web Real-Time Communications (WebRTC) session.
14. The method according to claim 1, wherein: Sending the packet includes sending the packet as part of a Stream Control Transmission Protocol (SCTP) stream.
15. The method according to claim 14, wherein: The SCTP stream includes media data for each of the one or more media types.
16. The method according to claim 15, wherein: Each of the one or more media types of the SCTP stream is to be synchronized, and the method further comprises sending at least one additional SCTP stream comprising media data of an additional media type that is not synchronized.
17. The method according to claim 14, wherein: Each of the one or more media types is assigned to a corresponding data payload block of the packet.
18. The method according to claim 14, wherein: The SCTP stream includes media data for a media type among the one or more media types, and the method also includes: sending one or more additional packets of one or more additional SCTP streams, each of the one or more additional SCTP streams including media data of a different media type among the one or more media types.
19. The method according to claim 14, wherein: A portion of a payload block of the packet indicates whether a timestamp is provided for media data in the payload block.
20. The method according to claim 14, wherein: A portion of a payload block of the packet indicates whether synchronization information is provided for media data in the payload block.
21. A device for processing media data, the device comprising: a memory configured to store media data; as well as A processing system, comprising one or more processors implemented in circuitry, the processing system being configured to: determining one or more user interactions with the virtual scene, each of the one or more user interactions corresponding to a specific media type of the one or more media types; constructing a packet including data for a media communication session, the packet including header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; as well as The packets are sent to devices involved in the media communication session.
22. The apparatus according to claim 21, wherein The one or more attributes indicate one or more of: camera information, display information, field of view, projection, resolution, refresh rate, a default posture of a user, a default orientation of the user, a timestamp for the media data, priority data, a reliability indication, or whether two or more media types are to be presented synchronously.
23. The apparatus of claim 21, wherein: The header data includes an extension to a Real-time Transport Protocol (RTP) header, the RTP header including a marker bit (M-bit) having a value indicating whether the packet is a last packet of interactive media data in a transmission order.
24. The apparatus of claim 21, wherein: The header data includes an extension to a Real-time Transport Protocol (RTP) header, the RTP header including a payload type value indicating whether the media data corresponds to a scene description, a spatial description, or a three-dimensional (3D) visual model.
25. The apparatus of claim 21, wherein: The header data includes an extension to a Real-time Transport Protocol (RTP) header, the RTP header including a payload type value indicating whether the media data represents a pose, a gesture, or a viewport.
26. The apparatus of claim 21, wherein: The one or more media types include an indication of an augmented reality (AR) anchor, user pose data, viewport data, hand gesture data, body movement data, or facial expression data.
27. The apparatus of claim 21, wherein: The header data includes one or more length values for the one or more types of media data in the packet.
28. The apparatus of claim 21, wherein: The header data complies with a profile of a real-time transport protocol (RTP), wherein an X field, a CC field, and an M field are combined into one or more attribute fields.
29. A device for processing media data, the device comprising: means for determining one or more user interactions with the virtual scene, each of the one or more user interactions corresponding to a particular media type of the one or more media types; means for constructing a packet comprising data for a media communication session, the packet comprising header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; as well as Means for sending the packets to devices involved in the media communication session.
30. A computer-readable storage medium having stored thereon instructions, which, when executed, cause a processor to: determining one or more user interactions with the virtual scene, each of the one or more user interactions corresponding to a specific media type of the one or more media types; constructing a packet including data for a media communication session, the packet including header data indicating the one or more media types for the one or more user interactions and one or more attributes for each of the one or more media types; as well as The packets are sent to devices involved in the media communication session.