End-to-end time synchronization for cloud-based services
By transmitting time synchronization data between the client and the server, the time synchronization problem is solved, end-to-end synchronous rendering and display are achieved, resource allocation is optimized, and the user experience and network capacity utilization of cloud-based services are improved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- QUALCOMM INC
- Filing Date
- 2021-06-02
- Publication Date
- 2026-04-17
AI Technical Summary
Existing wireless communication technologies suffer from synchronization issues between clients and servers, leading to inconsistencies in rendering and display of cloud-based services such as split XR, which negatively impacts user experience.
By transmitting time synchronization data between the client and the server, the client synchronizes its clock with the clock source and sends relevant timestamp and cell identifier information, and the server generates synchronization data based on this information.
It achieves end-to-end time synchronization between the client and the server, supports synchronous rendering and display, optimizes resource allocation, and improves the user experience and network capacity utilization of cloud-based services.
Smart Images

Figure CN115735387B_ABST
Abstract
Description
[0001] Cross-reference to related applications
[0002] This application claims priority to International Patent Application No. PCT / US2021 / 035437, filed June 2, 2021, which claims the benefit and priority to Indian Provisional Application No. 202041028396, filed July 3, 2020, both of which have been assigned to the assignee of this application and whose entire contents are expressly incorporated herein by reference, as if fully set forth below and used for all applicable purposes. Technical Field
[0003] Various aspects of this disclosure relate to wireless communication, and more specifically, to techniques for transmitting time synchronization data between a client and a server. Background Technology
[0004] Wireless communication systems are widely deployed to provide a variety of telecommunications services, such as telephone, video, data, messaging, and broadcasting. These wireless communication systems can employ multiple access technologies (e.g., bandwidth, transmit power, etc.) that enable communication with multiple users by sharing available system resources. Examples of such multiple access systems include 3GPP Long Term Evolution (LTE) systems, LTE-A Advanced systems, Code Division Multiple Access (CDMA) systems, Time Division Multiple Access (TDMA) systems, Frequency Division Multiple Access (FDMA) systems, Orthogonal Frequency Division Multiple Access (OFDMA) systems, Single Carrier Frequency Division Multiple Access (SC FDMA) systems, and Time Division Synchronous Code Division Multiple Access (TD-SCDMA) systems, to name just a few.
[0005] These multiple access technologies have been adopted in various telecommunications standards to provide a common protocol enabling different wireless devices to communicate at the municipal, national, regional, and even global levels. New radios (such as 5G NR) are an example of emerging telecommunications standards. NR is a set of enhancements to the LTE mobile standard issued by 3GPP. NR aims to better support mobile broadband internet access by improving spectrum efficiency, reducing costs, improving service, utilizing new spectrum, and better integrating with other open standards that use OFDMA with a cyclic prefix (CP) on both the downlink (DL) and uplink (UL). To this end, NR supports beamforming, multiple-input multiple-output (MIMO) antenna technology, and carrier aggregation.
[0006] However, with the increasing demand for mobile broadband access, further improvements to NR and LTE technologies are needed. Preferably, these improvements should be applicable to other multiple access technologies and telecommunications standards that employ these technologies. Summary of the Invention
[0007] The systems, methods, and apparatuses of this disclosure each have several aspects, and no single aspect is solely responsible for its desired properties. Without limiting the scope of this disclosure as set forth in the appended claims, some features will now be briefly discussed. After considering this discussion, and particularly after reading the section entitled "Detailed Description," one will understand how the features of this disclosure provide advantages, including server-synchronized rendering and / or client-synchronized display, time-based allocation of resources at the server, or time-stamping of data or events from the server.
[0008] Certain aspects of the subject matter described in this disclosure can be implemented by a user equipment (UE) in a method for transmitting time synchronization data between a client and a server. The method generally includes the client synchronizing its clock with a clock source. The method also includes, at the application level, sending information from the client to the server indicating the clock source, the cell identifier of the client's serving cell, and the precision of the clock source as a time value. The method further includes, based on the clock, sending from the client to the server a message including data and a timestamp associated with an event, which is linked to the data. The method also includes, in response to the message, the client receiving generated data from the server.
[0009] Certain aspects of the subject matter described in this disclosure can be implemented by a server in a method for transmitting time synchronization data between a client and a server. The method includes receiving, at the application level, information from a client indicating a clock source used by the client to synchronize the client's clock, a cell identifier of the client's serving cell, and information about the precision of the clock source as a time value. The method also includes receiving, based on the clock, a message from the client comprising data and a timestamp associated with an event, which is linked to the data. The method further includes generating client data by the server based on the information, data, and timestamp in response to the message. The method also includes sending the client data from the server to the client.
[0010] Certain aspects of the subject matter described in this disclosure can be implemented in an apparatus for transmitting time synchronization data between the apparatus and a server. The apparatus typically includes a processor configured to synchronize the apparatus's clock with a clock source and memory coupled to the processor. The apparatus also includes a transmitter configured to send, at the application level, information to the server indicating the clock source, a cell identifier of the apparatus's serving cell, and the accuracy of the clock source as a time value. The transmitter is further configured to send, based on the clock, a message to the server including data and a timestamp associated with an event, which is linked to the data. The apparatus also includes a receiver configured to receive generated data in response to a message from the server.
[0011] Certain aspects of the subject matter described in this disclosure can be implemented in an apparatus for transmitting time synchronization data between a client and the apparatus. The apparatus typically includes a receiver configured at the application level to receive from the client information indicating a clock source used by the client to synchronize the client's clock, a cell identifier of the client's serving cell, and the accuracy of the clock source as a time value. The receiver is also configured to receive from the client, based on the clock, a message including data and a timestamp associated with an event, the event being associated with the data. The apparatus also includes a processor configured to generate client data based on the information, data, and timestamp in response to the message, and memory coupled to the processor. The apparatus further includes a transmitter configured to transmit the client data to the client.
[0012] Certain aspects of the subject matter described in this disclosure can be implemented in an apparatus for transmitting time synchronization data between an apparatus and a server. The apparatus typically includes components for synchronizing the apparatus's clock with a clock source. The apparatus also includes components for sending information from the apparatus to the server at the application level indicating: the clock source, the cell identifier of the apparatus's serving cell, and the accuracy of the clock source as a time value. The apparatus further includes components for sending a message from the apparatus to the server based on the clock, comprising data and a timestamp associated with an event, the event being associated with the data. The apparatus also includes means for receiving generated data from the server by the apparatus in response to the message.
[0013] Certain aspects of the subject matter described in this disclosure can be implemented in an apparatus for transmitting time synchronization data between a client and the apparatus. The apparatus typically includes components for receiving, at the application level, information from the client indicating: a clock source for synchronization of the client's clock, a cell identifier of the client's serving cell, and the precision of the clock source as a time value. The apparatus also includes components for receiving, based on the clock, a message from the client comprising data and a timestamp associated with an event, the event being associated with the data. The apparatus further includes components for generating client data by the apparatus based on the information, data, and timestamp in response to the message. The apparatus also includes components for sending the client data from the apparatus to the client.
[0014] Certain aspects of the subject matter described in this disclosure can be implemented in a computer-readable medium having instructions stored thereon for sending from a client at the application level to a server information indicating a clock source, a cell identifier of the client's serving cell, and the precision of the clock source as a time value. The message, which includes data and a timestamp associated with an event, is sent from the client to the server based on the clock; and the generated data is received by the client from the server in response to the message.
[0015] Certain aspects of the subject matter described in this disclosure can be implemented in a computer-readable medium having instructions stored thereon for receiving, at the application level, information from a client indicating a clock source for the client to synchronize its clock, a cell identifier of the client's serving cell, and the precision of the clock source as a time value; receiving, based on the clock, a message from the client including data and a timestamp associated with an event, the event being associated with the data; generating client data from the server based on the information, data, and timestamp in response to the message; and sending the client data from the server to the client.
[0016] To achieve the foregoing and related objectives, one or more aspects include the features fully described below and specifically pointed out in the claims. The following description and drawings illustrate certain illustrative features of one or more aspects in detail. However, these features indicate only a few of the various ways in which the principles of each aspect can be employed. Attached Figure Description
[0017] To gain a more detailed understanding of the foregoing features of this disclosure, reference can be made to various aspects briefly outlined above, some of which are illustrated in the accompanying drawings. However, it should be noted that the drawings illustrate only certain typical aspects of this disclosure and should therefore not be considered as limiting its scope, as the description may allow for other equally valid aspects.
[0018] Figure 1 This is a block diagram illustrating an example wireless communication network conceptually based on certain aspects of this disclosure.
[0019] Figure 2 This is a block diagram conceptually illustrating an example design of a base station (BS) and user equipment (UE) according to certain aspects of this disclosure.
[0020] Figure 3 These are example frame formats for certain wireless communication systems (e.g., New Radio (NR)) according to certain aspects of this disclosure.
[0021] Figure 4 This is a diagram illustrating an example environment in accordance with certain aspects of this disclosure, in which a UE can communicate with a server through a cloud-based service or session.
[0022] Figure 5 This is a flowchart illustrating an example operation for transmitting time synchronization data between a client and a server, according to certain aspects of this disclosure.
[0023] Figure 6 This is a flowchart illustrating an example operation for transmitting time synchronization data between a client and a server, according to certain aspects of this disclosure.
[0024] Figure 7 This is a signaling flowchart illustrating example operations for providing end-to-end synchronization between a client and a server, according to certain aspects of this disclosure.
[0025] Figure 8 This is a diagram of an example communication network in which the server and client are synchronized, according to certain aspects of this disclosure.
[0026] Figure 9A This is a diagram illustrating an example of a cloud-based service according to certain aspects of this disclosure, where the runtime at the client end is synchronized with the server.
[0027] Figure 9B This is a diagram illustrating an example of server resource allocation over time according to certain aspects of this disclosure.
[0028] Figure 10 The illustrations depict communication devices (e.g., UEs) according to various aspects of the present disclosure, which may include various components configured to perform operations in accordance with the techniques disclosed herein.
[0029] Figure 11 The illustrations depict communication devices (e.g., servers) according to various aspects of this disclosure, which may include various components configured to perform operations in accordance with the techniques disclosed herein.
[0030] For ease of understanding, the same reference numerals are used where possible to denote common elements in the figures. Elements disclosed in one aspect are intended to be usefully applied in other aspects without specific description. Detailed Implementation
[0031] This disclosure provides apparatus, methods, processing systems, and computer-readable media for transmitting time synchronization data between a client and a server. The client can send information related to its clock synchronization, such as a clock source that the client will use in its client application, to the server at the application level (e.g., via a client application interfaced with the server). In some cases, the clock source can be time information received by the client from the radio access network (RAN), such as time information in System Information Block 9 (SIB9) in a 5G NR system or SIB16 in an E-UTRA system. That is, the clock source can be a cellular clock specific to the radio network, such as a clock maintained at the RAN and provided to the client. When the client updates the server with various data (such as controller inputs or gesture information), the client can provide the server with a timestamp relative to the client's clock source. Using the timestamp, the server can synchronize various actions based on the timestamp received from the UE. In other words, the timestamp from the UE can provide end-to-end synchronization between the UE and the server.
[0032] The following description provides examples of data synchronization between a client and a server in a communication system and does not limit the scope, applicability, or examples set forth in the claims. Changes may be made to the function and arrangement of the elements discussed without departing from the scope of this disclosure. Various procedures or components may be omitted, substituted, or added as appropriate in various examples. For example, the described methods may be performed in a different order than described, and various steps may be added, omitted, or combined. Furthermore, features described with respect to some examples may be combined in some other examples. For example, any number of aspects set forth herein may be used to implement an apparatus or practice. Moreover, the scope of this disclosure is intended to cover apparatus or methods that are practiced using structures, functions, or structures and functions other than those set forth herein, or using structures, functions, or structures and functions different from those set forth herein. It should be understood that any aspect of this disclosure may be embodied by one or more elements of the claims. The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any aspect described herein as “exemplary” is not necessarily to be construed as having priority over or superior to other aspects.
[0033] Typically, any number of wireless networks can be deployed within a given geographical area. Each wireless network can support a specific Radio Access Technology (RAT) and can operate on one or more frequencies. A RAT can also be referred to as a radio technology, air interface, etc. A frequency can also be referred to as a carrier, subcarrier, channel, tone, subband, etc. Each frequency can support a single RAT within a given geographical area to avoid interference between wireless networks using different RATs.
[0034] The techniques described herein can be used in a variety of wireless networks and radio technologies. Although the aspects may be described herein using terms commonly associated with 3G, 4G and / or newer radio technologies (e.g., 5G NR), the aspects of this disclosure can also be applied to other generation-based communication systems.
[0035] NR access can support a variety of wireless communication services, such as enhanced mobile broadband (eMBB) for wide bandwidth (e.g., 80 MHz or higher), millimeter wave (mmW) for high carrier frequencies (e.g., 24 GHz to 53 GHz or higher), massive machine-type communication (mMTC) for non-backward compatible MTC technologies, and / or mission-critical ultra-reliable low latency communication (URLLC). These services may involve latency and reliability requirements. These services may also have different transmission time intervals (TTIs) to meet their respective quality of service (QoS) requirements. Furthermore, these services may coexist in the same subframe. NR supports beamforming, and beam direction can be dynamically configured. Precoded MIMO transmissions can also be supported. MIMO configurations in DL can support up to 8 transmit antennas with up to 8 streams and up to 2 streams per UE in multi-layer DL transmissions. Multi-layer transmissions with up to 2 streams per UE can be supported. Aggregation of multiple cells up to 8 serving cells can be supported.
[0036] Figure 1 An example wireless communication network 100 in which aspects of this disclosure may be implemented is illustrated. For example, the wireless communication network 100 may be an NR system (e.g., a 5G NR network) or an evolved Universal Terrestrial Radio Access (E-UTRA) system (e.g., an LTE network).
[0037] According to various aspects of this disclosure, UE 120a includes a client manager 122 that provides a server with timestamped data (such as gesture information and / or controller input), wherein the timestamps are synchronized with a clock source. Server 134 includes a data generator 136 that generates client data based at least in part on the data and timestamps from UE 120a.
[0038] like Figure 1 As shown, the wireless communication network 100 may include multiple BSs 110a to 110z (each individually referred to herein as BS 110 or collectively as BS 110) and other network entities. BS 110 may provide communication coverage for a specific geographic area, sometimes referred to as a "cell," and may be stationary or mobile depending on the location of the mobile BS 110. In some examples, BS 110 may be interconnected with each other and / or interconnected to one or more other BSs or network nodes (not shown) within the wireless communication network 100 using any suitable transport network via various types of backhaul interfaces (e.g., direct physical connection, wireless connection, virtual network, etc.). Figure 1In the example shown, BS 110a, 110b, and 110c can be macro BSs for macro cells 102a, 102b, and 102c, respectively. BS 110x can be a pico BS for pico cell 102x. BS 110y and 110z can be femto BSs for femto cells 102y and 102z, respectively. A BS can support one or more cells.
[0039] BS 110 communicates with UEs 120a to 120y (each also individually referred to herein as UE 120 or collectively as UE 120) in the wireless communication network 100. UEs 120 (e.g., 120x, 120y, etc.) may be distributed throughout the wireless communication network 100, and each UE 120 may be stationary or mobile. The wireless communication network 100 may also include relay stations (e.g., relay station 110r), also referred to as relay stations, which receive transmissions of data and / or other information from upstream stations (e.g., BS 110a or UE 120r) and transmit transmissions of data and / or other information to downstream stations (e.g., UE 120 or BS 110), or relay transmissions between UEs 120 to facilitate communication between devices.
[0040] Network controller 130 can communicate with a group of BSs 110 and provide coordination and control for these BSs 110 (e.g., via backhaul). In some aspects, network controller 130 can communicate with core network 132 (e.g., 5G core network (5GC)), which provides various network functions such as access and mobility management, session management, user plane functions, policy control functions, authentication server functions, unified data management, application functions, network exposure functions, network repository functions, network slice selection functions, etc.
[0041] Core network 132 can communicate with server 134, enabling core network 132 to act as a packet gateway for providing UE 120a with access to server 134. Core network 132 may include various servers and networking devices, such as switches, routers, and gateways. Server 134 may be a computer, computing device, or processing system that provides services (e.g., split extended reality (XR) rendering of video frames, audio streams, and / or haptic feedback) to clients such as UE 120a. Figure 3As further described, split XR can offload the rendering of various content or data (e.g., video and / or audio streams) from UE120 to a server (e.g., server 134) with a high-power processor (e.g., graphics processing unit (GPU)) for virtual reality (VR), augmented reality (AR), or mixed reality (MR) applications. While server 134 is depicted as a separate server entity communicating with core network 132 for ease of understanding, aspects of this disclosure can also be applied to server 134 integrated with or co-located with core network 132, network controller 130, and / or BS 110a.
[0042] Figure 2 The illustrations show BS 110a and UE 120a (e.g., ) that can be used to implement various aspects of this disclosure. Figure 1 Example components of a wireless communication network 100.
[0043] In BS 110a, the transmitting processor 220 can receive data from the data source 212 and control information from the controller / processor 240. The control information can be used for the Physical Broadcast Channel (PBCH), Physical Control Format Indicator Channel (PCFICH), Physical Hybrid ARQ Indicator Channel (PHICH), Physical Downlink Control Channel (PDCCH), Group Common PDCCH (GCPDCCH), etc. Data may be for the Physical Downlink Shared Channel (PDSCH), etc. The Medium Access Control (MAC) element (MAC-CE) is a MAC layer communication structure that can be used for exchanging control commands between wireless nodes. The MAC-CE can be carried in shared channels, such as the Physical Downlink Shared Channel (PDSCH), Physical Uplink Shared Channel (PUSCH), or Physical Sidelink Shared Channel (PSSCH).
[0044] Processor 220 can process (e.g., encode and symbol map) data and control information to obtain data symbols and control symbols, respectively. Transmit processor 220 can also generate reference symbols, such as those for the primary synchronization signal (PSS), secondary synchronization signal (SSS), PBCH demodulation reference signal (DMRS), and channel state information reference signal (CSI-RS). Transmit (TX) multiple-input multiple-output (MIMO) processor 230 can perform spatial processing (e.g., precoding) on data symbols, control symbols, and / or reference symbols (if applicable) and can provide output symbol streams to modulators (MODs) 232a to 232t. Each modulator 232 can process its corresponding output symbol stream (e.g., for OFDM, etc.) to obtain an output sample stream. Each modulator can further process the output sample stream (e.g., convert to analog, amplify, filter, and up-convert) to obtain a downlink signal. Downlink signals from modulators 232a to 232t can be transmitted via antennas 234a to 234t, respectively.
[0045] In UE 120a, antennas 252a to 252r can receive downlink signals from BS 110a and can provide the received signals to demodulators (DEMODs) in transceivers 254a to 254r respectively. Each demodulator 254 can adjust (e.g., filter, amplify, down-convert, and digitize) the corresponding received signal to obtain an input sample. Each demodulator can further process the input sample (e.g., for OFDM, etc.) to obtain the received symbols. MIMO detector 256 can obtain the received symbols from all demodulators in transceivers 254a to 254r, perform MIMO detection on the received symbols (if applicable), and provide the detected symbols. Receiver processor 258 can process the detected symbols (e.g., demodulate, deinterleave, and decode), provide the decoded data of UE 120a to data sink 260, and provide the decoded control information to controller / processor 280.
[0046] On the uplink, at UE 120a, the transmitting processor 264 can receive and process data from data source 262 (e.g., for the Physical Uplink Shared Channel (PUSCH)) and control information from controller / processor 280 (e.g., for the Physical Uplink Control Channel (PUCCH)). The transmitting processor 264 can also generate reference symbols for reference signals (e.g., for Sounding Reference Signals (SRS)). Symbols from the transmitting processor 264 can be pre-encoded by the TX MIMO precoding processor 266 (if applicable), further processed by modulators in transceivers 254a to 254r (e.g., for SC-FDM, etc.), and transmitted to BS 110a. At BS 110a, the uplink signal from UE 120a can be received by antenna 234, processed by modulator 232, detected by MIMO detector 236 (if applicable), and further processed by receiving processor 238 to obtain decoded data and control information transmitted by UE 120a. The receiver processor 238 can provide decoded data to the data sink 239 and decoded control information to the controller / processor 240.
[0047] Memory 242 and 282 can store data and program code for BS 110a and UE 120a, respectively. Scheduler 244 can schedule UE for data transmission on downlink and / or uplink.
[0048] Antenna 252, processors 266, 258, 264 and / or controller / processor 280 of UE 120a and / or antenna 234, processors 220, 230, 238 and / or controller / processor 240 of BS 110a can be used to perform the various techniques and methods described herein. Figure 2 As shown, according to the aspects described herein, the controller / processor 280 of UE 120a has a client manager 281 that provides the server with timestamped data (such as gesture information and / or controller inputs), wherein the timestamps are synchronized with a clock source. Although shown at the controller / processor, other components of UE 120a and BS 110a may also be used to perform the operations described herein.
[0049] NR can utilize Orthogonal Frequency Division Multiplexing (OFDM) with a cyclic prefix (CP) on both the uplink and downlink. NR can support half-duplex operation using Time Division Duplex (TDD). OFDM and Single-Carrier Frequency Division Multiplexing (SC-FDM) divide the system bandwidth into multiple orthogonal subcarriers, which are often referred to as tones, bins, etc. Each subcarrier can be modulated with data. Modulation symbols can be transmitted in the frequency domain using OFDM and in the time domain using SC-FDM. The spacing between adjacent subcarriers can be fixed, and the total number of subcarriers can depend on the system bandwidth. The minimum resource allocation (called a resource block (RB)) can be 12 consecutive subcarriers. The system bandwidth can also be divided into subbands. For example, a subband can cover multiple RBs. NR can support a basic subcarrier spacing (SCS) of 15 kHz and can define other SCSs (e.g., 30 kHz, 60 kHz, 120 kHz, 240 kHz, etc.) relative to the basic SCS.
[0050] Figure 3 This is a diagram illustrating an example of frame format 300 for NR. The transmission timeline for each of the downlink and uplink can be divided into radio frame units. Each radio frame can have a predetermined duration (e.g., 10 ms) and can be divided into 10 subframes, each 1 millisecond (ms) long, indexed from 0 to 9. Each subframe can include a variable number of time slots depending on the SCS (e.g., time slots 1, 2, 4, 8, 16…). Each time slot can include a variable number of symbol periods depending on the SCS (e.g., 7, 12, or 14 symbols). The symbol periods in each time slot can be assigned an index. A micro-time slot, which may be referred to as a sub-time slot structure, is a transmission time interval with a duration less than that of a time slot (e.g., 2, 3, or 4 symbols). Each symbol in a time slot can indicate the link direction for data transmission (e.g., DL, UL, or flexible), and the link direction for each subframe can be dynamically switched. The link direction can be based on the time slot format. Each time slot can include DL / UL data and DL / UL control information.
[0051] In NR, Synchronization Signal Blocks (SSBs) are transmitted. In some respects, SSBs can be transmitted in bursts, where each SSB in the burst corresponds to a different beam direction used for UE-side beam management (e.g., including beam selection and / or beam refinement). An SSB comprises a PSS, an SSS, and a two-symbol PBCH. SSBs can be transmitted at fixed time slot locations, such as... Figure 3The symbols 0-3 are shown. PSS and SSS can be used by the UE for cell search and acquisition. PSS provides half-frame timing, while SS provides CP length and frame timing. PSS and SSS can provide cell identification. PBCH carries basic system information such as downlink system bandwidth, timing information within radio frames, SS burst set periodicity, and system frame number. SSB can be organized into SS bursts to support beam scanning. Other system information, such as Residual Minimum System Information (RMSI), System Information Block (SIB), and Other System Information (OSI), can be transmitted on the Physical Downlink Shared Channel (PDSCH) in certain subframes. SSB can be transmitted up to 64 times; for example, up to 64 different beam directions can be transmitted for millimeter waves. Multiple transmissions of SSB are called SS burst sets. SSBs within an SS burst set can be transmitted in the same frequency domain, while SSBs from different SS burst sets can be transmitted in different frequency domains.
[0052] Some cloud-based services (such as SplitXR) can offload the rendering of various content or data (e.g., video and / or audio streams) to servers with high-performance processors (e.g., graphics processing units (GPUs)). In some cases, head-mounted displays (HMDs) can be equipped with wireless modems that provide access to wireless communication networks (e.g., wireless communication network 100) and enable splitXR sessions to be wirelessly streamed between the HMD and the server. For example, Figure 3 This diagram illustrates an example environment 400 where a UE can communicate with a server via a cloud-based service or session. As shown, UE 120 can receive various generated content 402 (e.g., multiple encoded video streams, multiple encoded audio streams, and / or instructions for haptic feedback) from server 134 via a radio access network (RAN) (such as BS 110 and / or network controller 130). For example, server 134 can periodically (e.g., every 11, 13, 16, or 22 ms) transmit the generated content 402 at a high throughput level (e.g., greater than 100 kilobytes). UE 120 can also transmit various information 404 to server 134 via BS 110. For example, UE 120 can periodically (e.g., every 2 ms) transmit information 404 at a relatively low throughput level (e.g., 100 bytes). The information can be gesture information (e.g., the orientation of the user's head relative to a coordinate system) and / or control information (e.g., information from an input device such as a game controller, controller, or pen). In some respects, server 134 can generate content 402 based on information 404. In the XR setup, UE 120 can display the generated content to the user as a sequence of video frames in the HMD.
[0053] Split XR sessions can have various service flow characteristics to provide users with an acceptable XR experience (i.e., an immersive, realistic, and comfortable experience). For example, a split XR session may have low latency (e.g., 5 to 20 ms) between the UE and the server, and a highly reliable bit error rate (e.g., less than or equal to 10). -3 This includes high packet error rate (PER), high downlink throughput (100 to 600 Mbit / s or 1 to 2.5 Gbit / s or higher), and periodic low downlink throughput (e.g., less than 1 Mbps). As used herein, split XR can include a variety of cloud services based on low latency, such as cloud gaming, split rendering, split computing, virtual reality (VR), augmented reality (AR), or mixed reality (MR).
[0054] Example of cloud-based service end-to-end time synchronization
[0055] In certain low-latency cloud-based services (such as split XR), the server (e.g., server 134) and the UE (e.g., UE 120a) may be out of sync with each other. That is, the server and UE may not share the same reference clock. In some cases, the server and UE may operate on independent or separate clocks. For example, the UE may be synchronized with a clock, such as a reference clock specific to a wireless network or global navigation satellite system (e.g., GPS, GLONASS, or Galileo), and the server may be synchronized with a separate clock, such as a Precision Time Protocol (PTP) server or a Network Time Protocol (NTP) server. In some cases, the server may be synchronized with a clock, while the UE may not be synchronized.
[0056] This disclosure provides various apparatuses and methods for providing end-to-end time synchronization for cloud-based services, such as splitting XR or other low-latency cloud-based services. For example, a UE can send information related to its clock synchronization, such as a clock source that the UE will use for the client application, to a server at the application level (e.g., via a client application interfaced with the server). In some cases, the clock source can be time information received by the UE from the RAN (e.g., time information in System Information Block 9 (SIB9) in a 5G NR system or in SIB16 in an E-UTRA system). That is, the clock source can be a cellular clock specific to the radio network, such as a clock maintained at the RAN and provided to the UE. When the UE updates the server with various data (such as controller inputs or gesture information), the UE can provide the server with a timestamp relative to the UE's clock source. Using the timestamp, the server can synchronize various actions based on the timestamp received from the UE. In other words, the timestamp from the UE can provide end-to-end synchronization between the UE and the server.
[0057] In some respects, end-to-end synchronization between the user experience (UE) and the server can realize various advantages of cloud-based services. For example, end-to-end synchronization can enable synchronous rendering at the server and / or synchronous display at the UE, as discussed in this article. Figure 9A Further described. In some respects, end-to-end synchronization can enable timestamped data or events from the server, such as displaying the synchronization time in a virtual environment or initiating feedback at a specific time. In other respects, end-to-end synchronization can allow the server to distribute various resources (such as computing or processing resources or network service capacity) to users (e.g., UE / HMD) over time, as described in this article regarding... Figure 9B To further illustrate, for example, distributing computing resources (e.g., GPU computation or rendering, memory, processing time, etc.) to different users over time can promote the efficient use of computing resources without overloading the server at certain times. As another example, distributing network traffic to users over time can achieve efficient use of network capacity (e.g., bandwidth), thus avoiding overloading the network capacity and serving rendered content to a certain number of users.
[0058] Figure 5 This is a flowchart illustrating an example operation 500 for transmitting time synchronization data between a client and a server according to certain aspects of this disclosure. Operation 500 can be performed, for example, by a user equipment (e.g., UE120a in wireless communication network 100). Operation 500 can be implemented in one or more processors (e.g., Figure 2 Software components that execute and run on the controller / processor 280. Furthermore, they can be transmitted, for example, via one or more antennas (e.g., Figure 2The UE transmits and receives signals in operation 500 via an antenna 252. In some aspects, the UE transmits and / or receives signals via a bus interface of one or more processors (e.g., controller / processor 280) to obtain and / or output signals.
[0059] Operation 500 can begin at 502, where the client (e.g., UE 120a) synchronizes its clock with a clock source. At 504, the client can send information at the application level to the server (e.g., server 134) indicating the clock source, the cell identifier of the client's serving cell, and the precision of the clock source as a time value. At 506, the client can send a message to the server based on the clock, including data and a timestamp associated with an event linked to the data. At 508, the client can receive generated data from the server in response to the message at 506.
[0060] In some respects, the client can be a wireless communication device such as a UE. In other cases, the client can be a client application (such as a process, thread, user-space application, or service application) running on the UE, and the client application can generate various data (e.g., attitude information, controller inputs, sensor measurements, etc.) for the UE to send to the RAN, which then forwards the data to the server. That is, the UE can send client-generated data to the server via a wireless network such as wireless communication network 100.
[0061] As used herein, an application level (or layer) can refer to a layer of the protocol stack, with the application layer at the top and the remaining layers including the Packet Data Convergence Protocol (PDCP) layer, Radio Link Control (RLC) layer, Media Access Control (MAC) layer, and Physical (PHY) layer, in descending order. For example, an application level can be the layer that generates the payload of the protocol stack in the user plane. The payload can be processed at various layers (e.g., the PDCP, RLC, MAC, and PHY layers) to enable the transmission of the payload on radio resources (e.g., frequency-time resources). In some aspects, an application level may include Session Initiation Protocol (SIP) signaling for establishing, maintaining, or terminating real-time sessions between clients and servers.
[0062] In some respects, clock synchronization at 502 may involve the client selecting a clock source (e.g., among various sources) for its own clock and setting the clock based on that source. In other cases, setting the clock based on a clock source may involve deriving a timestamp based on the client's internal clock relative to the clock source. For example, the client may obtain time information (such as a time reference) from the clock source and derive the timestamp by adding a certain time difference to the time reference, where the time difference is obtained by measuring the duration between the time reference of the clock source and the timestamp using the client's internal clock.
[0063] Regarding timestamps, events associated with data can include the time a message was sent at 506, when the data was generated by the client, or when an event or measurement included in the data occurred (e.g., the data might include controller inputs, and the timestamp might be related to when a user interacted with the controller (such as pressing a button or moving a joystick)). In some cases, the client's clock can be used to tag various client-generated data (e.g., gesture information, sensor measurements, or controller inputs) using timestamps derived from the clock (e.g., from a clock source). For example, gesture information can be tagged with timestamps from the clock to indicate when the gesture information was generated by the client. That is, timestamps can be based on the clock and related to when data was generated by the client or when a specific event occurred (e.g., when a user interacted with the controller (such as pressing a button or moving a joystick)).
[0064] A clock source can be any reference clock that provides time information. For example, a clock source can be one of a satellite-based positioning system (e.g., GPS, GLONASS, or Galileo), a cellular clock, a PTP, or an NTP. Satellite-based positioning systems can provide accuracy in the microsecond (μs) or nanosecond (ns) range (e.g., less than or equal to 40 ns). Cellular clocks can provide accuracy in the microsecond range (e.g., 1.5 μs), or in some cases up to 10 ms. PTPs can provide accuracy in the microsecond or nanosecond range (e.g., 100 ns). NTPs can provide accuracy in the millisecond or second range (e.g., 1 ms). In some cases, a clock source operating at 500 can include multiple clock sources. In some respects, due to the reliability of cellular clocks indoors (e.g., compared to satellite-based systems), support in certain wireless communication networks, its high accuracy, and / or its low or no network jitter, cellular clocks can be used for certain low-latency cloud-based services (such as split XR).
[0065] As an example, the clock source could be a cellular clock, and the clock synchronizing the client could include time information received by the client from a base station (e.g., base station 110) based on time synchronized with the server. For example, the time information from the base station could be a time field (e.g., the timeInfoUTC field providing Coordinated Universal Time (UTC)) in an SIB (such as SIB9 in NR or SIB16 in E-UTRA). The client could set its clock based on, for example, time information from the base station (e.g., UTC time). In some cases, multiple SIBs with time information could be provided at a certain granularity (e.g., 10 ms). That is, the client could receive time information from the base station periodically (e.g., every 10 ms). In some cases, the base station could be synchronized with a separate clock source, such as PTP or one or more satellite-based positioning systems.
[0066] In some respects, the information sent at 504 can be included in Session Description Protocol (SDP) signaling used for various Real-Time Transport Protocols (RTPs) (e.g., as provided in RFC 7273 RTP Clock Source Signaling). For example, the information at 504 can indicate the clock source using a timestamp reference clock field (ts-refclk). The value of the timestamp reference clock field can include various values to indicate the NTP, PTP, satellite-based positioning system, local clock, or private clock used as the reference clock, such as “ntp”, “ptp”, “gps”, “gal”, “glonass”, “local” (“local”), “private” (“private”), or “clksrc-ext”. In some cases, the “private” value of the timestamp reference clock field can be used to indicate that the cellular clock is the clock source. In other cases, the individual value of the timestamp reference clock field (ts-refclk) can be used to represent the cellular clock as the clock source. In some respects, the information sent at 504 can indicate the cell identifier of the client's serving cell and the precision of the clock source as a time value in the SDP signaling. For example, the subfield of "cellular-cellID" can represent the cell identifier of the serving cell, and the subfields of "cellular-accuracy" or "accuracy" can represent the accuracy of the clock source (e.g., 1 μs, 1 ms, or 10 ms). The cell identifier can be an Enhanced Cell Identifier (ECI) or a Global Cell Identity, such as a cell identifier used to explicitly identify a cell within a radio network (e.g., a Public Land Mobile Network (PLMN)). In some cases, the SDP signaling used for information at 504 can take the following form:
[0067] a = ts-refclk:private
[0068] a=ts-refclk:private=cellular-cellID:abc
[0069] a=ts-refclk:private=cellular-accuracy:1ms
[0070] Among them, the "private" value of ts-refclk indicates that the cellular clock is the clock source, the "abc" value of cellular-cellID represents the cell ID of the serving cell, and the "1ms" value of cellular-accuracy indicates that the cellular-accuracy clock source has an accuracy of 1 millisecond.
[0071] In some respects, information sent at 504 and / or messages sent at 506 can further indicate various other aspects of the wireless network. These aspects of the wireless network can allow the server to take various measures, such as adjusting synchronization with the client's clock source and / or adjusting the rate at which data is sent to the client, as discussed in this paper. Figure 6 Further description. As an example, information transmitted at 504 and / or messages transmitted at 506 may include a network identifier of the network serving the client, the serving cell and / or one or more neighboring cells detected by the client (e.g., cell identifiers of neighboring cells), the system frame number (SFN) in which the information is transmitted or corresponds to a timestamp, or a combination thereof. In some cases, indices of other time-domain elements (such as subframe numbers, slot numbers, or symbol numbers) may be included with the SFN to provide additional resolution and / or precision, such that the physical layer time domain provides a separate timestamp. For example, a message transmitted at 506 may indicate an index of a time-domain element (such as a frame number, subframe number, slot number, or symbol number) or a combination of time-domain element indices corresponding to a timestamp or an event associated with data. The network identifier may, for example, be a Mobile Country Code (MCC), a Mobile Network Code (MNC), a PLMN (including MCC and MNC), a base station identifier (e.g., an eNodeB identifier or a gNodeB identifier), or a combination thereof.
[0072] In some aspects, operation 500 may include a client performing a handover to a different cell and updating the server with the cell identifier of the new serving cell. For example, operation 500 may also include a client handing over from a serving cell to a target cell. The client may send updated information to the server, indicating the cell identifiers of the target cell and / or one or more neighboring cells of the target cell, based on the handover.
[0073] In some respects, the server can provide clients with a variety of cloud-based services, such as split XR, split rendering, split computing, cloud gaming, etc. As an example, the generated data received at 508 may include one or more rendered video frames (e.g., video frames for the right eye and left eye), audio streams, and / or haptic feedback instructions, and the client may display one or more rendered video frames, play audio streams, and / or provide haptic feedback. For example, video frames may be displayed on an HMD in a split XR setup or on a TV screen in a cloud gaming setup, audio streams may be played through headphone speakers, and haptic feedback may vibrate the controller. In other cases, the generated data received at 508 may be instructions or data for Internet of Things (IoT) devices, where the server provides low-latency split computing based on sensor data measured by the IoT device.
[0074] Figure 6 This is a flowchart illustrating an example operation 600 for transmitting time-synchronized data between a client and a server according to certain aspects of this disclosure. Operation 600 can be performed, for example, by a server (e.g., server 135 in wireless communication network 100). Operation 600 can be complementary to operation 500 performed by the UE. Operation 600 can be implemented in one or more processors (e.g., Figure 11 Software components that execute and run on the processor 1104. Furthermore, in operation 600, signals sent and received by the server can be transmitted via, for example, a wired or optical interface or a network interface (e.g., ...). Figure 11 The network interface 1108) is used for this purpose. In some respects, the server's sending and / or receiving of signals can be achieved via the bus interface (e.g., processor 1104) of one or more processors (e.g., processor 1104) that acquire and / or output signals. Figure 11 The bus 1106 is implemented.
[0075] Operation 600 can begin at 602, where the server receives, at the application level, information from the client (e.g., UE 120a) indicating a clock source for synchronizing the client's clock, the cell identifier of the client's serving cell, and the precision of the clock source as a time value. At 604, the server can receive from the client, based on the clock, a message including data and a timestamp associated with an event, which is linked to the data. At 606, the server can, in response to the message, generate client data based on the information, data, and timestamp. At 608, the server can send the client data to the client.
[0076] In some respects, a server can be a computer, computing device, or processing system that provides services to clients (e.g., split XR rendering of video frames, audio streams, and / or haptic feedback). In other respects, a server can be a program, process, or thread running on a computer, computing device, or processing system.
[0077] The clock source can be any reference clock that provides time information, such as those described in this document with respect to Operation 500. For example, the clock source can be a satellite-based positioning system (e.g., GPS, GLONASS, or Galileo), a cellular clock, PTP, or NTP.
[0078] In some respects, Operation 600 may also include the server synchronizing its server clock with a clock source. In certain cases, synchronizing the server clock with a clock source may involve the server deriving its timing based on the same reference clock as the client's clock source or based on a reference clock with the same or higher precision as the client's clock source. For example, the server and client may rely on the same underlying reference clock, such as a satellite-based positioning system or a time server (e.g., PTP / NTP), for use as described herein. Figure 8 Timing described further. In some cases, the client may receive time information from a clock source derived from a satellite-based positioning system or time server, and the server may use the satellite-based positioning system or time server as a reference clock with the same or higher accuracy as the client's clock source.
[0079] In some respects, as described herein with respect to operation 500, information received at 602 and / or messages received at 604 may be included in SDP signaling. In some cases, information received at 602 and / or messages received at 604 may also indicate the network identifier of the network serving the client, one or more neighboring cells of the serving cell or detected by the client, and the system frame number (SFN) corresponding to the timestamp in which the information was transmitted. For example, the network identifier or serving cell identifier may enable the server to use and / or determine common clock synchronization between clients from the same serving cell and / or network. As another example, the network identifier or serving cell identifier may enable the server to adjust processing profiles (e.g., latency, downlink throughput, frames per second (FPS), frame resolution, audio sampling rate, video codec, audio codec, etc.) among clients from the same serving cell and / or network. In some cases, the network identifier or serving cell identifier may enable the server to distribute downlink data from multiple clients over time to prevent or reduce network capacity overload of the serving cell or network.
[0080] In some respects, SFN can correspond to the index of a radio frame in a radio frame sequence, for example, as discussed in this paper. Figure 3 As described, the server can use the SFN in conjunction with a cellular time-based timestamp, for example, when the cellular time accuracy is greater than or equal to a certain threshold (e.g., greater than or equal to 10 ms). That is, the SFN can provide the server with an additional or separate reference point for synchronization with the client. In other words, the SFN, along with indices of other time-domain units in some cases, can serve as supplementary or separate timestamps at various resolution levels (e.g., 10 ms at the frame level, 1 ms at the subframe level, or less than 1 ms at the slot or symbol level). For example, indices of other time-domain units (such as subframe numbers, slot numbers, or symbol numbers) can be included in the SFN to provide additional resolution and / or accuracy, allowing the physical layer's time domain to provide separate timestamps. In some cases, a message received at 604 can indicate a combination of time-domain unit indices (such as frame numbers, subframe numbers, slot numbers, or symbol numbers) or time-domain unit indices corresponding to timestamps or events associated with the data.
[0081] In some cases, knowledge of neighboring cells can enable a server to prepare for various handover scenarios between a client and neighboring cells. For example, a server might be able to determine the processing profile of a neighboring cell (e.g., latency, downlink throughput, FPS, frame resolution, audio sampling rate, video codec, audio codec, etc.) from other clients communicating with the server via neighboring cells. In some cases, a server might be able to determine the available downlink throughput to neighboring cells over time.
[0082] In some aspects, operation 600 may include the server receiving updated information from the client indicating that the client has switched to the target cell and / or one or more neighboring cells of the target cell. For example, after the client switches to the target cell, the client can update the server with the new serving cell, and the server can allocate certain processing resources and / or downlink throughput to the client over time relative to other clients communicating with it via the target cell.
[0083] In some respects, the server can provide clients with various cloud-based services, such as split XR, split rendering, split computing, cloud gaming, etc. For example, the data received at 604 may include various inputs (such as gesture information, controller inputs, and / or sensor measurements) used by the server to update the generated data. In some cases, the data received at 604 may include the client's position data. That is, the data received at 604 may include gesture information, such as the orientation of the user's head in the XR setup. In some cases, generating client data at 606 may include rendering one or more video frames (e.g., video frames for the right eye and left eye), generating audio streams, and / or generating haptic feedback.
[0084] In some cases, at position 606, the server can use timestamps to generate client data. For example, rendering one or more video frames may include determining the location of objects within one or more video frames based on timestamps. Since objects in the virtual world may be in motion or initiated into motion due to certain events, such as controller input, the server can determine the position of objects in the virtual world based on timestamps from the client. For example, suppose the virtual world is simulating a golf game, where the client provides timestamps for controller input corresponding to the position of the golf club. When the virtual golf club hits the golf ball, the server can determine the position of the golf ball relative to the timestamp provided by the client for the controller input.
[0085] In some respects, servers can distribute various resources (e.g., computing resources or network traffic capacity) over time based on the timestamps of messages received from clients, as discussed in this article. Figure 9BFurther description. For example, generating client data at 606 may include the server initiating the generation of client data at a certain time based on a timestamp. That is, the server may shift the time of performing client data generation at 606 to a certain time based on a timestamp (e.g., generating client data earlier or later). As an example, the server may select the rendering time of a video frame based on the shifted target display time, for example, to reduce the motion-to-render-to-photon time between the client and server in a split XR setup. In this way, the frame rendered by the server may have an ideal motion-to-render-to-photon time (e.g., the shortest duration between the client and server). In some cases, shifting the time of performing client data generation may allow the server to provide services to other users as various resources (e.g., computing resources or network traffic capacity) become available to the client. In some cases, operation 600 may also include the server receiving corresponding information from one or more additional clients, and the generation of client data at 606 may include the server initiating the generation of client data at a certain time based on each corresponding timestamp of each of the one or more additional clients. In other words, when the server receives information from other clients, the server can determine when to generate client data at 606 based on the server load caused by other clients (e.g., processing load and / or network capacity).
[0086] Regarding network traffic capacity, the transmission of client data at 608 can be distributed over time based on the timestamps received by the client and / or other clients. For example, client data can be sent at 608 at a certain time based on a timestamp. That is, the server can generate client data and adjust when to send it at 608 after a certain time based on the timestamp. As network traffic capacity becomes available to clients across various wired / wireless networks routed to the client, adjusting when to send client data (e.g., sending client data earlier or later) can allow the server to provide services to other users. As an example, adjusting when to send client data can prevent the RAN from being overwhelmed by buffered data or reduce network traffic to the RAN. In some cases, operation 600 may also include the server receiving corresponding information from one or more additional clients and can perform the sending of client data at 608 at a certain time based on each corresponding timestamp of each of the one or more additional clients. That is, when the server receives information from other clients and / or sends data to other clients, the server can determine when to send client data at 608 based on the network traffic capacity caused by other clients.
[0087] Figure 7This is a signaling flowchart illustrating example operation 700 for providing end-to-end synchronization between a client and a server, according to certain aspects of this disclosure. In some cases, UE 120 may receive time information from BS 110, such as an SIB with a time field (e.g., SIB9 or SIB16). At 704, UE 120 may synchronize the client's clock with a clock source (e.g., the time information received at 602). In other cases, UE 120 may synchronize with other clock sources such as PTP, NTP, or satellite-based positioning systems. At 706, UE 120 may send a synchronization configuration to server 134, indicating the timestamp clock source (e.g., NTP, PTP, satellite-based positioning system, or cellular clock), the cell ID of the client's serving cell (e.g., BS 110), and the accuracy of the clock source. For example, UE 120 may send the synchronization configuration to BS 110 over the air (e.g., frequency-time resources), which BS 110 forwards the synchronization configuration to server 134. At 708, UE 120 may send a message to server 134 containing data and an event-related timestamp (such as a clock-based message or a message about when the data was generated by UE 120), the event being associated with the data. At 710, the server may generate client data based on the information, data, and timestamp. For example, the server may render video frames, audio streams, and / or haptic feedback instructions for UE 120. At 712, server 134 may send client data to UE 120. For example, server 134 may send client data to BS 110 via a network interface such as a wired or optical interface, and BS 110 may forward client data to UE 120 over the air. UE 120 may take one or more actions based on the client data. For example, at 714, UE 120 may display video frames with an HMD derived from the generated client data.
[0088] Figure 8This is a diagram of an example communication network 800 in which server 134 and client (e.g., UE 120) are synchronized according to certain aspects of this disclosure. In this example, UE 120 may obtain time information from a RAN (e.g., BS 110a and / or BS 110b), and the RAN may be synchronized with various clock sources such as PTP (not shown) and / or satellite-based positioning system 802. That is, the time information received by UE 120 from the RAN may be derived from various reference clocks such as satellite-based positioning system 802 and / or PTP. In some cases, core network 132 may be synchronized with various clock sources such as satellite-based positioning system 802. Server 134 may be synchronized with various clock sources such as time server 804 (e.g., PTP or NTP server), which may derive time information from satellite-based positioning system 802. As described herein, UE 120 may send timestamps with various messages to server 134, which may be synchronized with timestamps based on reference clocks (such as time server 804). In some cases, synchronization between UE 120 and server 134 may involve UE 120 and server 134 relying on the same reference clock (such as satellite-based positioning system 802) for time information used in cloud-based services (e.g., split XR).
[0089] As an example, suppose UE 120 is camped on BS 110a, which is the serving cell, and UE 120 switches to BS 110b, which is the target cell. In some cases, UE 120 may send updated information related to timestamps to server 134. For example, UE 120 may send updated information indicating the cell identifiers of the new serving cell (e.g., BS 110b) and / or one or more neighboring cells of the new serving cell.
[0090] In some respects, timestamps from the client can enable the server to indicate when a frame is displayed at the client's location. Figure 9AThis diagram illustrates an example cloud-based service 900A according to certain aspects of this disclosure, where the runtime at client 902 is synchronized with server 904. As shown, client 902 may include decoder 906, jitter buffer 908, and runtime module 910, and server 904 may include renderer 912. Client 902 sends pose information 914 (e.g., prediction coefficients and a timestamp related to when the pose information was generated on the client) to server 904. Renderer 912 may generate frames based on pose information 914 and send rendered frames 920 to client 902. Decoder 906 may decode the rendered frames 920 according to a codec such as h.265 or VP9 and send the decoded frames to jitter buffer 908. Jitter buffer 908 may temporarily store the decoded frames until a frame is to be displayed in runtime module 910.
[0091] In some respects, client 902 can send a frame submission schedule 916 to server 904, which instructs the jitter buffer 908 on the scheduling and the time when a frame is submitted to server 904 for rendering. That is, jitter buffer 908 instructs its scheduling and which frame is submitted to renderer 912 at what time. Frame submission schedule 916 allows renderer 912 to know when a frame rendered by renderer 912 is anticipated by jitter buffer 908.
[0092] The jitter buffer 908 may include logic to schedule frames to be submitted to the runtime module 910 based on the rendering FPS 918 and the display refresh rate. For example, when the rendering FPS 918 is 45 FPS and the display refresh rate is 90 Hz, the jitter buffer 908 can ensure that each frame is displayed twice. That is, the rendering frame 920 can provide a frame sequence at 45 FPS, and at a display refresh rate of 90 Hz, the jitter buffer 908 can display each of the rendering frames 920 twice per second to maintain 90 FPS at the display. In some respects, the frame submission of the jitter buffer 908 can be synchronized with the display refresh rate at the runtime module 910. For example, the frame submission can be synchronized with the display's vertical synchronization (VSync).
[0093] In some cases, renderer 912 can use incoming pose information 914 (e.g., current pose orientation and pose prediction coefficients) to target a point in time when the current frame will be displayed at runtime module 910. The server can take into account any delays in rendering when the pose information 914 arrives at server 904.
[0094] In some respects, the timestamp received by the server allows the server to schedule various resources for processing and / or network traffic. For example, Figure 9BThis is a diagram illustrating an example of resource allocation over time for a server according to certain aspects of this disclosure. In this example, the server may have a first set of resources 930 (e.g., computing resources and / or network traffic) allocated to multiple clients during a first time period and a second set of resources 932 allocated to multiple clients during a second time period. The server may have other time periods 934, 936 available for allocating resources to other clients.
[0095] While this document describes various examples of split XR applications for ease of understanding, aspects of this disclosure can also be applied to a variety of other cloud-based or edge-based services, such as cloud gaming, split rendering, and / or split computing.
[0096] Figure 10 The illustration shows a communication device 1000 (e.g., UE 120), which may include operations configured to perform the techniques disclosed herein (e.g. Figure 5 The various components (e.g., corresponding to device plus functional components) of the operation shown in the diagram. The communication device 1000 includes a processing system 1002 coupled to a transceiver 1008 (e.g., a transmitter and / or receiver). The transceiver 1008 is configured to transmit and receive signals for the communication device 1000 via an antenna 1010, such as the various signals described herein. The processing system 1002 may be configured to perform processing functions of the communication device 1000, including processing signals received and / or transmitted by the communication device 1000.
[0097] Processing system 1002 includes processor 1004 coupled to computer-readable medium / memory 1012 via bus 1006. In some aspects, computer-readable medium / memory 1012 is configured to store instructions (e.g., computer-executable code) that, when executed by processor 1004, cause processor 1004 to perform... Figure 5 The illustrated operations may be other operations used to perform the various techniques discussed herein for synchronization between a client and a server. In some aspects, the computer-readable medium / memory 1012 stores code 1014 for receiving, code 1016 for transmitting, and / or code for synchronization. In some aspects, the processor 1004 has circuitry configured to implement the code stored in the computer-readable medium / memory 1012. The processor 1004 includes circuitry 1024 for receiving, circuitry 1026 for transmitting, and / or circuitry for synchronization.
[0098] Figure 11 The illustration shows a communication device 1100 (e.g., server 134), which may include operations configured to perform techniques disclosed herein (e.g., Figure 6Various components (e.g., corresponding to device plus functional components) are illustrated in the diagram. The communication device 1100 includes a processing system 1102 coupled to a network interface 1108. The network interface 1108 is configured to transmit and receive signals for the communication device 1100 via a wired or optical interface, such as the various signals described herein. As an example, the network interface 1108 may communicate with one or more base stations (such as base station 110). The processing system 1102 may be configured to perform processing functions of the communication device 1100, including processing signals received by and / or to be transmitted by the communication device 1100. The network interface 1108 may be coupled to the processing system via a bus 1106.
[0099] Processing system 1102 includes processor 1104 coupled to computer-readable medium / memory 1112 via bus 1106. In some aspects, computer-readable medium / memory 1112 is configured to store instructions (e.g., computer-executable code) that, when executed by processor 1104, cause processor 1104 to perform... Figure 6 The illustrated operations may be other operations used to perform the various techniques discussed herein for synchronization between a client and a server. In some aspects, the computer-readable medium / memory 1112 stores code 1114 for receiving, code 1116 for transmitting, code 1118 for generating, code 1120 for determining, and / or code 1122 for initiating. In some aspects, the processor 1104 has circuitry configured to implement the code stored in the computer-readable medium / memory 1112. The processor 1104 includes circuitry 1124 for receiving, circuitry 1126 for transmitting, circuitry 1128 for generating, circuitry 1130 for determining, and / or circuitry 1132 for initiating.
[0100] The techniques described in this article can be used in various wireless communication technologies, such as NR (e.g., 5G NR), 3GPP Long Term Evolution (LTE), LTE-Advanced (LTE-A), Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Frequency Division Multiple Access (FDMA), Orthogonal Frequency Division Multiple Access (OFDMA), Single Carrier Frequency Division Multiple Access (SC FDMA), Time Division Synchronous Code Division Multiple Access (TD-SCDMA), and other networks. The terms "network" and "system" are often used interchangeably. CDMA networks can implement radio technologies such as Universal Terrestrial Radio Access (UTRA), cdma2000, etc. UTRA includes Wideband CDMA (WCDMA) and other variants of CDMA. cdma2000 covers the IS-2000, IS-95, and IS-856 standards. TDMA networks can implement radio technologies such as Global System for Mobile Communications (GSM). OFDMA networks can implement radio technologies such as NR (e.g., 5G RA), evolved UTRA (E-UTRA), Ultra Mobile Broadband (UMB), IEEE 802.11 (Wi-Fi), IEEE 802.16 (WiMAX), IEEE 802.20, Flash-OFDMA, etc. UTRA and E-UTRA are part of the Universal Mobile Telecommunications System (UMTS). LTE and LTE-A are UMTS versions using E-UTRA, described in documents from an organization called the 3rd Generation Partnership Project (3GPP). UTRA, E-UTRA, UMTS, LTE, LTE-A, and GSM are also mentioned. cdma2000 and UMB are described in documents from an organization called the 3rd Generation Partnership Project 2 (3GPP2). NR is an emerging wireless communication technology under development.
[0101] In 3GPP, the term "cell" can refer to the coverage area of a Node B (NB) and / or the NB subsystem serving that coverage area, depending on the context in which the term is used. In NR systems, the term "cell" is used interchangeably with BS, Next Generation Node B (gNB or gNodeB), Access Point (AP), Distributed Unit (DU), and Carrier or Transmit / Receive Point (TRP). A BS can provide communication coverage for macrocells, picocells, femtocells, and / or other types of cells. A macrocell can cover a relatively large geographic area (e.g., a radius of several kilometers) and can allow unrestricted access for UEs with service subscriptions. A picocell can cover a relatively small geographic area and can allow unrestricted access for UEs with service subscriptions. A femtocell can cover a relatively small geographic area (e.g., a home) and can allow restricted access for UEs associated with the femtocell (e.g., UEs in a Closed Subscriber Group (CSG), UEs of users in a home, etc.). A BS used for a macrocell can be called a macro BS. A BS used for a picocell can be called a pico BS. A BS used for a femtocell can be called a femto BS or a home BS.
[0102] A UE can also be referred to as a mobile station, terminal, access terminal, subscriber unit, station, customer premises equipment (CPE), cellular phone, smartphone, personal digital assistant (PDA), wireless modem, wireless communication device, handheld device, laptop computer, cordless phone, wireless local loop (WLL) station, tablet computer, camera, gaming device, netbook, smartbook, ultrabook, appliance, medical device or medical equipment, biometric sensor / device, wearable device (such as smartwatch, smart clothing, smart glasses, smart wristband, smart jewelry (e.g., smart ring, smart bracelet, etc.)), entertainment device (e.g., music device, video device, satellite broadcasting, etc.), vehicle component or sensor, smart meter / sensor, industrial manufacturing equipment, GPS device, or any other suitable device configured to communicate via wireless or wired media. Some UEs can be considered machine-type communication (MTC) devices or evolved MTC (eMTC) devices. MTC and eMTC UEs include, for example, robots, drones, remote devices, sensors, meters, monitors, location tags, etc., that can communicate with a BS, another device (e.g., a remote device), or some other entity. Wireless nodes can provide connectivity, for example, to or from a network (e.g., a wide area network such as the Internet or cellular networks), via wired or wireless communication links. Some UEs can be considered Internet of Things (IoT) devices, which can be narrowband IoT (NB-IoT) devices.
[0103] In some examples, access to the air interface can be scheduled. A scheduling entity (e.g., a BS) allocates resources for communication between some or all devices and equipment within its service area or cell. The scheduling entity may be responsible for scheduling, allocating, reconfiguring, and releasing resources for one or more subordinate entities. That is, for scheduled communication, the subordinate entity utilizes the resources allocated by the scheduling entity. A base station is not the only entity that can be used as a scheduling entity. In some examples, a UE can be used as a scheduling entity and can schedule resources for one or more subordinate entities (e.g., one or more other UEs), and other UEs can utilize the resources scheduled by the UE for wireless communication. In some examples, a UE can be used as a scheduling entity in peer-to-peer (P2P) networks and / or mesh networks. In mesh network examples, in addition to communicating with a scheduling entity, UEs can also communicate directly with each other.
[0104] The methods disclosed herein include one or more steps or actions for implementing the method. The method steps and / or actions may be interchanged with each other without departing from the scope of the claims. In other words, unless a specific order of steps or actions is specified, the order and / or use of a particular step and / or action may be modified without departing from the scope of the claims.
[0105] As used herein, the phrase “at least one” in a list of items refers to any combination of those items, including a single member. For example, “at least one of a, b, or c” is intended to cover a, b, c, ab, ac, bc, and abc, as well as combinations with multiple identical elements (e.g., aa, aaa, aab, aac, abb, acc, bb, bbb, bbb, cc, and ccc, or any other order of a, b, and c).
[0106] As used herein, the term "determine" encompasses a wide variety of actions. For example, "determine" can include calculation, operation, processing, derivation, investigation, lookup (e.g., searching in a table, database, or other data structure), ascertainment, etc. Furthermore, "determine" can include receiving (e.g., receiving information), accessing (e.g., accessing data in memory), etc. Moreover, "determine" can include parsing, selecting, picking, building, etc.
[0107] The foregoing description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be apparent to those skilled in the art, and the general principles defined herein may be applied to other aspects. Therefore, the claims are not intended to be limited to the aspects shown herein, but should be given the full scope consistent with the textual claims, unless expressly stated that reference to an element in the singular does not mean "one and only one," but rather "one or more." Unless expressly stated otherwise, the term "some" means one or more. All structural and functional equivalents of elements throughout the various aspects described in this disclosure that are known or will be known hereafter by a person skilled in the art are expressly incorporated herein by reference and are intended to be covered by the claims. Moreover, whether or not the disclosure herein is expressly recited in the claims, it is not intended to be made public. Elements of a claim shall not be interpreted in accordance with 35 U.SC §112(f) unless the element is expressly recited using the phrase "for a component of," or, in the case of a method claim, using the phrase "for a step of."
[0108] The various operations described above can be performed by any suitable device capable of performing the corresponding function. This device may include various hardware and / or software components and / or modules, including but not limited to circuits, application-specific integrated circuits (ASICs), or processors. Typically, where operations as shown in the figures are present, these operations may have corresponding parts with similar numbering, plus functional components.
[0109] The various illustrative logic blocks, modules, and circuits described in this disclosure can be implemented using a general-purpose processor, digital signal processor (DSP), application-specific integrated circuit (ASIC), field-programmable gate array (FPGA) or other programmable logic device (PLD), discrete gate or transistor logic, discrete hardware components, or any combination thereof, designed to perform the functions described herein. The general-purpose processor may be a microprocessor, but alternatively, the processor may be any commercially available processor, controller, microcontroller, or state machine. The processor may also be implemented as a combination of computing devices, such as a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors combined with a DSP core, or any other such configuration.
[0110] If implemented in hardware, the example hardware configuration could include a processing system in a wireless node. This processing system could be implemented using a bus architecture. The bus could include any number of interconnect buses and bridges, depending on the specific application and overall design constraints of the processing system. The bus could link together various circuits, including a processor, machine-readable media, and a bus interface. The bus interface could be used, in particular, to connect a network adapter to the processing system via the bus. The network adapter could be used to implement signal processing functions at the PHY layer. In user terminal 120 (see...) Figure 1 In this case, a user interface (e.g., keypad, display, mouse, joystick, etc.) can also be connected to the bus. The bus can also link various other circuits, such as timing sources, peripherals, voltage regulators, power management circuits, etc., which are well known in the art and will not be described further. The processor can be implemented using one or more general-purpose and / or special-purpose processors. Examples include microprocessors, microcontrollers, DSP processors, and other circuits capable of executing software. Depending on the specific application and the overall design constraints imposed on the system, those skilled in the art will recognize how best to implement the described functionality for the processing system.
[0111] If implemented in software, functionality can be stored or transmitted as one or more instructions or code on a computer-readable medium. Software should be interpreted broadly as instructions, data, or any combination thereof, whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. Computer-readable media includes both computer storage media and communication media, with communication media encompassing any medium that facilitates the transfer of a computer program from one location to another. The processor may be responsible for managing the bus and routine processing, including executing software modules stored on the machine-readable storage medium. The computer-readable storage medium may be coupled to the processor, allowing the processor to read information from and write information to it. Alternatively, the storage medium may be integrated with the processor. For example, machine-readable media may include transmission lines, data-modulated carrier waves, and / or computer-readable storage media on which instructions are stored, separated from the wireless node, all of which can be accessed by the processor via a bus interface. Alternatively or additionally, the machine-readable medium, or any portion thereof, may be integrated into the processor, as may be the case with caches and / or general-purpose register files. Examples of machine-readable storage media may include, for example, RAM (random access memory), flash memory, ROM (read-only memory), PROM (programmable read-only memory), EPROM (erasable programmable read-only memory), EEPROM (electrically erasable programmable read-only memory), registers, disks, optical disks, hard disks, or any other suitable storage media, or any combination thereof. Machine-readable media may be embodied in a computer program product.
[0112] Software modules can include single or multiple instructions and can be distributed across several different code segments, between different programs, and across multiple storage media. Computer-readable media can include multiple software modules. Software modules include instructions that, when executed by a device such as a processor, cause the processing system to perform various functions. Software modules can include sending modules and receiving modules. Each software module can reside in a single storage device or be distributed across multiple storage devices. For example, a software module can be loaded from a hard disk drive into RAM when a triggering event occurs. During the execution of a software module, the processor can load some of the instructions into a cache to improve access speed. One or more cache lines can then be loaded into a general-purpose register file for the processor to execute. When referring to the functionality of the software module below, it will be understood that this functionality is implemented by the processor when instructions from that software module are executed.
[0113] Additionally, any connection is appropriately referred to as computer-readable medium. For example, if software is transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared (IR), radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. The disks and optical discs used herein include compact optical discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and... Optical discs, where magnetic disks typically copy data magnetically, copy data optically using lasers. Therefore, in some aspects, computer-readable media can include non-transitory computer-readable media (e.g., tangible media). Additionally, in other aspects, computer-readable media can include transient computer-readable media (e.g., signals). Combinations of the above should also be included within the scope of computer-readable media.
[0114] Therefore, certain aspects may include a computer program product for performing the operations presented herein. For example, such a computer program product may include a computer-readable medium on which instructions are stored (and / or encoded) that can be executed by one or more processors to perform the operations described herein. For example, for performing the operations described herein... Figures 5 to 7 The instructions for the operation shown in the diagram.
[0115] Furthermore, it should be understood that, where applicable, user terminals and / or base stations may download and / or otherwise obtain modules and / or other suitable components for performing the methods and techniques described herein. For example, such a device may be coupled to a server to facilitate the transfer of components for performing the methods described herein. Alternatively, the various methods described herein may be provided via storage components (e.g., RAM, ROM, physical storage media such as compressed optical discs (CDs) or floppy disks, etc.), so that user terminals and / or base stations can obtain the various methods after the storage components are coupled or provided to the device. Moreover, any other suitable techniques for providing the methods and techniques described herein to the device may be utilized.
[0116] It should be understood that the claims are not limited to the precise configurations and components shown above. Various modifications, alterations, and variations may be made to the arrangement, operation, and details of the above-described methods and apparatus without departing from the scope of the claims.
Claims
1. A method for transmitting time synchronization data between a client and a server, the method comprising: The client synchronizes its own clock with the clock source. At the application level, information indicating the following items is sent from the client to the server: The clock source; The cell identifier of the serving cell of the client; and The accuracy of the clock source as a time value; The client sends a message to the server including data and a timestamp associated with an event, the event being associated with data based on the clock, and the timestamp being associated with the clock source; as well as In response to the message, the client receives generated data from the server, wherein the data is generated by the server based on the information, the data, and the timestamp.
2. The method according to claim 1, wherein, The clock source is one of the following: Satellite-based positioning systems Cellular clock, Precise time protocol, or Network Time Protocol.
3. The method according to claim 1, wherein, The clock source is a cellular clock, and synchronizing the clock includes: The client receives time information from the base station based on time synchronization between the base station and the server; and The clock is set based on the time information.
4. The method according to claim 1, wherein, The information further indicates one or more of the following: The network identifier of the network that provides services to the client; One or more neighboring cells of the serving cell; and The system frame number in which the information is sent.
5. The method according to claim 1, wherein, The message indicates the index of the time-domain unit corresponding to the timestamp.
6. The method according to claim 1, further comprising: The client switches from the serving cell to the target cell. as well as Based on the switch, updated information is sent from the client to the server, and the updated information indicates: The cell identifier of the target cell; and One or more neighboring cells of the target cell.
7. The method according to claim 1, wherein, The generated data includes one or more rendered video frames, and also includes the one or more rendered video frames displayed by the client.
8. A method for transmitting time synchronization data between a client and a server, the method comprising: At the application level, the server receives information from the client indicating the following: The clock source used by the client to synchronize the client's clock; The cell identifier of the serving cell of the client; and The accuracy of the clock source as a time value; The server receives from the client a message including data and a timestamp associated with an event, the event being associated with data based on the clock, and the timestamp being associated with the clock source; In response to the message, the server generates client data based on the information, the data, and the timestamp; as well as The server sends the client data to the client.
9. The method according to claim 8, wherein, The clock source is one of the following: Satellite-based positioning systems Cellular clock, Precise time protocol, or Network Time Protocol.
10. The method of claim 8, further comprising synchronizing the server clock of the server with the clock source.
11. The method according to claim 8, wherein, The information further indicates one or more of the following: The network identifier of the network that provides services to the client; One or more neighboring cells of the serving cell; and The system frame number in which the information is sent.
12. The method according to claim 8, wherein, The message indicates the index of the time-domain unit corresponding to the timestamp.
13. The method of claim 8, further comprising receiving updated information from the client by the server, the updated information indicating: The cell identifier of the target cell to which the client switches; and One or more neighboring cells of the target cell.
14. The method according to claim 8, wherein, The data includes the client's location data.
15. The method according to claim 8, wherein, Generating the client data includes rendering one or more video frames.
16. The method according to claim 15, wherein, Rendering the one or more video frames includes: The location of the object in one or more video frames is determined based on the timestamp.
17. The method according to claim 8, wherein, Generating the client data includes: The generation of client data is initiated at a certain time based on the timestamp.
18. The method of claim 8, further comprising receiving corresponding information from one or more additional clients, wherein, Generating the client data includes: Based on each corresponding timestamp of each of the one or more additional clients, the generation of client data is initiated at a certain time.
19. The method according to claim 8, wherein, The sending of the client data is performed at a certain time based on the timestamp.
20. The method of claim 8, further comprising receiving corresponding information from one or more additional clients, wherein, The sending of the client data is performed at a certain time based on each corresponding timestamp of each of the one or more additional clients.
21. An apparatus for transmitting time synchronization data with a server, the apparatus comprising: The processor is configured to synchronize the device's clock with a clock source; Memory coupled to the processor; The transmitter is configured as follows: At the application level, send information to the server indicating the following: The clock source, The cell identifier of the serving cell of the device, and The accuracy of the clock source as a time value; as well as Send a message to the server including data and a timestamp associated with an event, the event being associated with data based on the clock, and the timestamp being associated with the clock source; as well as A receiver is configured to receive generated data in response to a message from the server, wherein the data is generated by the server based on the information, the data, and the timestamp.
22. An apparatus for transmitting time synchronization data with a client, the apparatus comprising: Receiver, configured as follows: At the application level, receive information from the client indicating the following: The client is used to synchronize the clock source of the client's clock. The cell identifier of the serving cell of the client, and The accuracy of the clock source as a time value; as well as Receive from the client a message including data and an event-related timestamp, the event being associated with data based on the clock, and the timestamp being associated with the clock source; The processor is configured to generate client data based on the information, the data, and the timestamp in response to the message; Memory coupled to the processor; as well as The transmitter is configured to send the client data to the client.
23. An apparatus for transmitting time synchronization data with a server, the apparatus comprising: Components for synchronizing the clock of the device with a clock source via the device; Components for sending information from the device to the server at the application level indicating the following: The clock source; The cell identifier of the serving cell of the device; and The accuracy of the clock source as a time value; Components for sending a message from the device to the server, including data and a timestamp associated with an event, the event being associated with clock-based data and the timestamp being associated with the clock source; as well as A component for receiving generated data from the server by the device in response to the message, wherein the data is generated by the server based on the information, the data, and the timestamp.
24. An apparatus for transmitting time synchronization data with a client, the apparatus comprising: A component for receiving information from a client at the application level by the device, the information indicating the following: The clock source used by the client to synchronize the client's clock; The cell identifier of the serving cell of the client; and The accuracy of the clock source as a time value; A component for receiving, by the device, a message from the client including data and a timestamp associated with an event, the event being associated with clock-based data and the timestamp being associated with the clock source; A component for generating client data by the device based on the information, the data, and the timestamp in response to the message; as well as Components for sending client data from the device to the client.
25. A computer-readable medium having instructions stored thereon, the instructions being executed by a processor at runtime: The client synchronizes its own clock with the clock source. At the application level, information indicating the following items is sent from the client to the server: The clock source; The cell identifier of the serving cell of the client; and The accuracy of the clock source as a time value; The client sends a message to the server including data and a timestamp associated with an event, the event being associated with data based on the clock, and the timestamp being associated with the clock source; as well as In response to the message, the client receives generated data from the server, wherein the data is generated by the server based on the information, the data, and the timestamp.
26. A computer-readable medium having instructions stored thereon, the instructions being executed by a processor at runtime: The server receives information from the client at the application level indicating the following: A clock source used by the client to synchronize the client's clock; The cell identifier of the serving cell of the client; and The accuracy of the clock source as a time value; The server receives from the client a message including data and a timestamp associated with an event, the event being associated with data based on the clock, and the timestamp being associated with the clock source; In response to the message, the server generates client data based on the information, the data, and the timestamp; as well as The server sends the client data to the client.
Citation Information
Patent Citations
Distributed video game system and method
US20030130040A1
Network synchronization system and method using synchronous mobile terminal as external reference clock
US20040125822A1