Entropy continuous and frame-dependent entropy coding in point cloud compression
By using slice-level flags and high-level flags in point cloud encoding and decoding, the problems of low decoding efficiency and design flaws caused by inter-frame entropy decoding state reset are solved, achieving more efficient and stable point cloud encoding and decoding.
Patent Information
- Application Number
- CN202480025803.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-04-22
- Filing Date
- 2024-04-23
- Publication Date
- 2025-11-14
AI Technical Summary
In the process of point cloud encoding and decoding, the existing technology suffers from low decoding efficiency due to the inter-frame entropy decoding state reset, and there are obvious design flaws when slices or frames are lost.
Slice-level flags and high-level flags are used to indicate whether the entropy decoding state of the current frame is based on the entropy decoding state of the last slice of the previous frame or the previous slice of the same frame, so as to achieve the continuity of frame-dependent entropy decoding and slice entropy and avoid resetting the entropy decoding state.
It improves the efficiency of point cloud encoding and decoding, reduces design flaws, and ensures the stability and continuity of decoding in the event of frame loss.
Smart Images

Figure CN120958830A_ABST
Abstract
Description
[0001] This application claims priority to U.S. Patent Application No. 18 / 641,873, filed April 22, 2024, and U.S. Provisional Application No. 63 / 497,965, filed April 24, 2023, the entire contents of which are incorporated herein by reference. U.S. Patent Application No. 18 / 641,873, filed April 22, 2024, claims priority to U.S. Provisional Application No. 63 / 497,965, filed April 24, 2023. Technical Field
[0002] This disclosure pertains to point cloud encoding and decoding. Background Technology
[0003] A point cloud is a collection of points in three-dimensional space. These points can correspond to points on objects within that space. Therefore, point clouds can be used to represent the physical content of three-dimensional space. Point clouds have practical applications in a variety of situations. For example, point clouds can be used in the context of autonomous vehicles to represent the location of objects on a road. In another example, point clouds can be used in the context of representing the physical content of an environment for the purpose of locating virtual objects in augmented reality (AR) or mixed reality (MR) applications. Point cloud compression is the process of encoding and decoding point clouds. Encoding point clouds reduces the amount of data required for their storage and transmission. Summary of the Invention
[0004] In general, this disclosure describes techniques for entropy continuation and dependent frame entropy decoding for point cloud compression. A point cloud encoder can be configured to entropy encode, and a point cloud decoder can be configured to entropy decode information signaled by the point cloud encoder and parsed by the point cloud decoder. In one or more examples, the point cloud encoder can signal a slice-level flag, and the point cloud decoder can parse the slice-level flag, which indicates whether the entropy decoding state (e.g., context) of the first slice in the current frame, in decoding order, is determined based on the entropy decoding state of the last slice in the previous frame, in decoding order. Based on the flag, the point cloud decoder can determine the entropy decoding state of the first slice in the current frame based on the entropy decoding state of the last slice in the previous frame, and entropy decode the information of the first slice based on the entropy decoding state of the first slice.
[0005] Using this exemplary slice-level flag allows the determination of the entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of a previous frame, in a manner that achieves standards compatibility and minimizes design flaws in the event of slice or frame loss during transmission or reception. Therefore, this exemplary technique allows point cloud encoders and decoders to determine the entropy decoding state of the first slice of the current frame, achieving more efficient entropy encoding and decoding compared to resetting the entropy decoding state at the beginning of each frame. For example, the entropy decoding state at the end of encoding or decoding the last slice of a previous frame can be a better initial entropy decoding state for the first slice of the current frame in terms of decoding efficiency compared to resetting the entropy decoding state.
[0006] In one example, this disclosure describes a method for encoding or decoding point cloud data, the method comprising: signaling or parsing a slice-level flag of a first slice of a current frame of the point cloud data in decoding order, the slice-level flag indicating an entropy decoding state of the first slice of the current frame determined based on the entropy decoding state of the last slice of a previous frame of the point cloud data in decoding order; determining the entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of the previous frame if the flag indicates that the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame; and encoding or decoding the first slice of the current frame based on the entropy decoding state of the first slice.
[0007] In one example, this disclosure describes an apparatus for encoding or decoding point cloud data, the apparatus comprising: one or more memories configured to store the point cloud data; and processing circuitry coupled to the one or more memories, wherein the processing circuitry is configured to: signal or parse a slice-level flag of a first slice of a current frame of the point cloud data in decoding order, the slice-level flag indicating an entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of a previous frame of the point cloud data in decoding order; determine the entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of the previous frame if the flag indicates that the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame; and encode or decode the first slice of the current frame based on the entropy decoding state of the first slice.
[0008] In one example, this disclosure describes a computer-readable storage device having instructions thereon that, when executed, cause one or more processors to: signal or parse a slice-level flag of a first slice of a current frame of point cloud data in decoding order, the slice-level flag indicating that the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of a previous frame of the point cloud data in decoding order; if the flag indicates that the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame, determine the entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of the previous frame; and encode or decode the first slice of the current frame based on the entropy decoding state of the first slice.
[0009] Details of one or more examples are set forth in the accompanying drawings and the following description. Other features, objects, and advantages will be apparent from the description, drawings, and claims. Attached Figure Description
[0010] Figure 1 This is a block diagram illustrating an example encoding and decoding system that can perform the techniques described in this disclosure.
[0011] Figure 2 This is a block diagram illustrating an example geometric point cloud compression (G-PCC) encoder.
[0012] Figure 3 This is a block diagram showing an example G-PCC decoder.
[0013] Figure 4 To show in further detail Figure 2 A block diagram of an example geometric coding unit.
[0014] Figure 5 To show in further detail Figure 2 A block diagram of an example attribute encoding unit.
[0015] Figure 6 To show in further detail Figure 3 A block diagram of an example geometry decoding unit.
[0016] Figure 7 To show in further detail Figure 3 A block diagram of an example attribute decoding unit.
[0017] Figure 8 This is a conceptual diagram illustrating an example octree partition for geometric decoding.
[0018] Figure 9 This is a flowchart illustrating an example of frame entropy-dependent decoding.
[0019] Figure 10 This is a conceptual diagram illustrating an example ranging system that can be used with one or more technologies disclosed herein.
[0020] Figure 11 This is a conceptual diagram illustrating an exemplary vehicle-based scenario in which one or more technologies of this disclosure may be used.
[0021] Figure 12 This is a conceptual diagram illustrating an example extended reality system in which one or more technologies of this disclosure may be used.
[0022] Figure 13 This is a conceptual diagram illustrating an example mobile device system in which one or more technologies of this disclosure may be used.
[0023] Figure 14 This is a conceptual diagram illustrating an example of inter-frame prediction of the current point (curPoint) based on a point (interPredPt) in a reference frame.
[0024] Figure 15 This is a conceptual diagram illustrating an example of a frame with frame entropy-dependent decoding enabled.
[0025] Figure 16 This is a flowchart illustrating an example technology based on one or more examples described in this disclosure. Detailed Implementation
[0026] Point cloud data includes data used to process point clouds. A point cloud is represented by multiple points. A point cloud encoder can arrange these points in a frame and encode the point cloud data of these points. Examples of point cloud data include geometric data (e.g., the geometric location of the points) and attribute data (e.g., color, opacity, reflectivity, etc.). A point cloud decoder receives the point cloud data and decodes it to reconstruct the frame and the point cloud.
[0027] One example of encoding and decoding point cloud data is using entropy decoding. In entropy decoding, the point cloud encoder and decoder determine the entropy decoding state of the data (e.g., context or context value) and entropy encode or decode the data based on this state. Typically, the entropy decoding state is based on previously encoded or decoded data (e.g., information used to encode or decode previous points), because there may be a correlation between how the point cloud encoder or decoder encodes or decodes previous data and how it encodes or decodes current data.
[0028] In some examples, a frame is divided into one or more slices. To encode or decode these slices, a point cloud encoder and a point cloud decoder can determine the entropy decoding state of the slice (e.g., determine the initial entropy decoding state). As the point cloud encoder or decoder encodes or decodes the slices, it can keep the entropy decoding state updated (e.g., based on the most recently encoded or decoded points).
[0029] In some techniques, after encoding or decoding a slice, the point cloud encoder and decoder reset the entropy decoding state to the default entropy decoding state and begin encoding or decoding the next slice using the default entropy decoding state as the initial entropy decoding state. However, decoding inefficiencies can occur when resetting the entropy decoding state. For example, the entropy decoding state of a previous slice in the decoding order might be a better initial entropy decoding state than the default entropy decoding state.
[0030] For example, for the current slice in the current frame, the entropy decoding state can be based on the entropy decoding state of the previous slice in the same current frame. As another example, for the current slice in the current frame, such as when the current slice is the first slice in the current frame in decoding order, the entropy decoding state can be based on the entropy decoding state of the last slice in the previous frame in decoding order.
[0031] This disclosure describes an example technique for instructing a point cloud decoder whether to determine the entropy decoding state of the first slice in the current frame, in decoding order, based on the entropy decoding state of the last slice in the previous frame, in decoding order. For example, a high-level flag (e.g., signaled in a parameter set) may exist for one or more frames, indicating whether determining the entropy decoding state of a slice in the current frame based on slices in previous frames is enabled. That is, the high-level flag may indicate whether frame-dependent entropy decoding is enabled or disabled for one or more frames.
[0032] According to one or more examples described in this disclosure, a point cloud encoder can signal and a point cloud decoder can parse a slice-level flag (e.g., a flag in the slice header) indicating whether the entropy decoding state of a particular slice (e.g., for which a slice-level flag is signaled) will be determined based on the entropy decoding state of the last slice in a previous frame. For example, the point cloud encoder can signal and the point cloud decoder can parse the slice_dep_entr_cont flag for a slice. The point cloud decoder can determine the entropy decoding state (e.g., the initial entropy decoding state) of the first slice in the current frame based on the entropy decoding state of the last slice in a previous frame.
[0033] For all other slices in the current frame, the slice_dep_entr_cont flag can be set to "false" (e.g., no other slices in the current frame should determine the initial entropy decoding state based on the entropy decoding state of the last slice in the previous frame). Furthermore, if a high-level flag indicates that frame-dependent entropy decoding is disabled for one or more frames, the point cloud encoder may not signal and the point cloud decoder may not resolve the slice_dep_entr_cont flag for any slice in the current frame.
[0034] In the example above, the `slice_dep_entr_cont` flag indicates whether the entropy decoding state of the slice in the current frame is based on the entropy decoding state of the slice in the previous frame. This can be illustrated as follows: where the entropy decoding state of the slice in the current frame is based on the entropy decoding state of the slice in the same frame.
[0035] Similar to the above, a high-level flag can exist in the parameter set, signaled by a signal, indicating whether slice entropy continuity is enabled or disabled for one or more frames. Enabling slice entropy continuity for one or more frames means that the entropy decoding state of a slice in the current frame may be based on the entropy decoding state of a previous slice in the same current frame. Disabling slice entropy continuity for one or more frames means that the entropy decoding state of a slice in the current frame cannot be based on the entropy decoding state of a previous slice in the same current frame.
[0036] In one or more examples, the point cloud encoder can signal and the point cloud decoder can parse a slice-level flag (e.g., a flag in the slice header) indicating whether the entropy decoding state of a particular slice (e.g., a slice-level flag signaled for that particular slice) will be determined based on the entropy decoding state of previous slices in the same frame. For example, the point cloud encoder can signal and the point cloud decoder can parse the slice_entropy_continuation flag for a slice. The point cloud decoder can determine the entropy decoding state of a slice in the current frame (e.g., the initial entropy decoding state) based on the entropy decoding state of previous slices in the current frame.
[0037] By using different slice-level flags—one for the point cloud decoder to determine whether a slice should use the entropy decoding state of the last slice of a previous frame, and another for the point cloud decoder to determine whether a slice should use the entropy decoding state of a previous slice in the same frame—the example technique can improve overall point cloud data encoding and decoding capabilities. For example, if only high-level flags are used without slice-level flags, scenarios may arise where entropy continuum is disabled (e.g., using the entropy decoding state of a previous slice in the same frame), but frame-dependent entropy decoding is enabled (e.g., using the entropy decoding state of a slice in a previous frame). This can lead to implementation problems because the different high-level flags are inconsistent, as described in more detail. Employing the example slice-level flags described in this disclosure reduces the likelihood of implementation problems, resulting in better encoding and decoding performance.
[0038] Figure 1 This is a block diagram illustrating an example encoding and decoding system 100 capable of performing the techniques of this disclosure. The techniques of this disclosure are generally intended to decode (encode and / or decode) point cloud data, i.e., to support point cloud compression. Typically, point cloud data includes any data used for processing point clouds. Decoding can be effective on compressed and / or decompressed point cloud data.
[0039] like Figure 1 As shown, system 100 includes a source device 102 and a destination device 116. The source device 102 provides encoded point cloud data to be decoded by the destination device 116. Specifically... Figure 1 In this example, source device 102 provides point cloud data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 can include any of a wide range of devices, including desktop computers, laptops, tablets, set-top boxes, handsets such as smartphones, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, land or sea vehicles, spacecraft, aircraft, robots, LiDAR devices, satellites, etc. In some cases, source device 102 and destination device 116 may be equipped for wireless communication.
[0040] exist Figure 1In the example, source device 102 includes a data source 104, a memory 106, a point cloud encoder 200 (e.g., a G-PCC encoder or other type of encoder), and an output interface 108. Destination device 116 includes an input interface 122, a point cloud decoder (e.g., a G-PCC decoder or other type of decoder), a memory 120, and a data consumer 118. According to this disclosure, the point cloud encoder 200 of source device 102 and the point cloud decoder 300 of destination device 116 can be configured to apply techniques related to predictive geometry decoding for point cloud compression, such as specifying whether the resolution of azimuth residuals is independent (e.g., not dependent on) the values of reconstructed syntax elements and / or whether the resolution of syntax structures (e.g., slices or bricks) is independent of the decoding / reconstruction of one or more components of one or more points in the point cloud. Therefore, source device 102 represents an example of an encoding device, and destination device 116 represents an example of a decoding device. In other examples, source device 102 and destination device 116 may include other components or arrangements. For example, source device 102 can receive data (e.g., point cloud data) from an internal or external source. Similarly, destination device 116 can interface with an external data user, rather than including the data user in the same device.
[0041] like Figure 1 The system 100 shown is merely an example. Typically, other digital encoding and / or decoding devices can perform the techniques of this disclosure related to predictive geometric decoding for point cloud compression, such as specifying whether the resolution of the azimuth residual is independent (e.g., not dependent on) the values of the reconstructed syntax elements and / or whether the resolution of the syntax structure (e.g., slices or bricks) is independent of the decoding / reconstruction of one or more components of one or more points in the point cloud. Source device 102 and destination device 116 are merely examples of such devices, where source device 102 generates decoded data for transmission to destination device 116. This disclosure refers to a “coding” device as a device that performs the decoding (encoding and / or decoding) of data. Therefore, point cloud encoder 200 and point cloud decoder 300 represent examples of decoding devices (specifically encoders and decoders), respectively. In some examples, source device 102 and destination device 116 may operate in a substantially symmetrical manner, such that each of source device 102 and destination device 116 includes both an encoding component and a decoding component. Therefore, system 100 can support one-way or two-way transmission between source device 102 and destination device 116, for example for streaming, playback, broadcasting, telephone, navigation and other applications.
[0042] Typically, data source 104 represents a data source (i.e., raw, unencoded point cloud data) and can provide a series of ordered "frames" of data to point cloud encoder 200, which encodes the data for these frames. Data source 104 of source device 102 may include any of the following: point cloud capture devices (such as various cameras or sensors (e.g., 3D scanners or light detection and ranging (LIDAR) devices)), one or more video cameras, an archive containing previously captured data, and / or a data feed interface for receiving data from a data content provider. Alternatively or additionally, point cloud data may be computer-generated from scanner, camera, sensor, or other data. For example, data source 104 may generate computer graphics-based data as source data, or produce a combination of real-time data, archived data, and computer-generated data. In each case, point cloud encoder 200 encodes the captured, pre-captured, or computer-generated data. Point cloud encoder 200 may rearrange frames from the received order (sometimes referred to as the "display order") to a decoding order for decoding. The point cloud encoder 200 can generate one or more bitstreams including encoded data. The source device 102 can then output the encoded video data to a computer-readable medium 110 via the output interface 108 for reception and / or acquisition by, for example, the input interface 122 of the destination device 116.
[0043] The memory 106 of the source device 102 and the memory 120 of the destination device 116 can represent general-purpose memory. In some examples, memory 106 and memory 120 can store raw data, such as raw data from data source 104 and raw decoded data from point cloud decoder 300. Alternatively, memory 106 and memory 120 can store software instructions executable by, for example, point cloud encoder 200 and point cloud decoder 300, respectively. Although memory 106 and memory 120 are shown separately from point cloud encoder 200 and point cloud decoder 300 in this example, it should be understood that point cloud encoder 200 and point cloud decoder 300 may also include internal memory for functionally similar or equivalent purposes. Furthermore, memory 106 and memory 120 can store encoded data, such as data output from point cloud encoder 200 and input to point cloud decoder 300. In some examples, portions of memory 106 and memory 120 may be allocated as one or more buffers, for example, to store raw, decoded, and / or encoded data. For instance, memory 106 and memory 120 may store data representing point clouds.
[0044] Computer-readable medium 110 can represent any type of medium or device capable of transmitting encoded data from source device 102 to destination device 116. In one example, computer-readable medium 110 represents a communication medium enabling source device 102 to directly transmit encoded data to destination device 116 in real time, for example, via a radio frequency network or a computer-based network. According to a communication standard such as a wireless communication protocol, output interface 108 can modulate the transmitted signal including the encoded data, and input interface 122 can demodulate the received transmitted signal. The communication medium can include any wireless or wired communication medium, such as radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can form part of a packet-based network such as a local area network, a wide area network, or a global network such as the Internet. The communication medium can include a router, switch, base station, or any other device that can be useful for facilitating communication from source device 102 to destination device 116.
[0045] In some examples, source device 102 can output encoded data from output interface 108 to storage device 112. Similarly, destination device 116 can access encoded data from storage device 112 via input interface 122. Storage device 112 may include any data storage medium of various distributed or locally accessed data storage media, such as hard disk drives, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded data.
[0046] In some examples, source device 102 may output encoded data to file server 114 or another intermediate storage device that may store the encoded data generated by source device 102. Destination device 116 may access the stored data from file server 114 via streaming or downloading. File server 114 may be any type of server device capable of storing encoded data and sending such encoded data to destination device 116. File server 114 may represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network attached storage (NAS) device. Destination device 116 may access the encoded data from file server 114 via any standard data connection, including an internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both, suitable for accessing the encoded data stored on file server 114. File server 114 and input interface 122 may be configured to operate according to a streaming protocol, a download transfer protocol, or a combination thereof.
[0047] Output interface 108 and input interface 122 may represent a wireless transmitter / receiver, a modem, a wired networking component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 include wireless components, output interface 108 and input interface 122 may be configured to transmit data (such as encoded data) according to cellular communication standards (such as 4G, 4G-LTE (Long Term Evolution), LTE Advanced, 5G, etc.). In some examples where output interface 108 includes a wireless transmitter, output interface 108 and input interface 122 may be configured to transmit data (such as encoded data) according to other wireless standards (such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee™), the Bluetooth™ standard, etc.). In some examples, source device 102 and / or destination device 116 may include corresponding system-on-chip (SoC) devices. For example, source device 102 may include a SoC device for performing functions belonging to point cloud encoder 200 and / or output interface 108, and destination device 116 may include a SoC device for performing functions belonging to point cloud decoder 300 and / or input interface 122.
[0048] The techniques disclosed herein can be applied to encoding and decoding to support any application in a variety of applications, such as communication between autonomous vehicles, communication between scanners, cameras, sensors and processing devices (such as local or remote servers), geographic mapping or other applications.
[0049] The input interface 122 of the destination device 116 receives an encoded bitstream from a computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, etc.). The encoded bitstream may include signaling information defined by the point cloud encoder 200, such as syntax elements (also used by the point cloud decoder 300), which have values describing the characteristics and / or processing of the decoded units (e.g., slices, pictures, picture groups, sequences, etc.). The data user 118 uses the decoded data. For example, the data user 118 may use the decoded data to determine the location of a physical object. In some examples, the data user 118 may include a display for presenting a point cloud-based image.
[0050] The point cloud encoder 200 and point cloud decoder 300 can each be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the technology is partially implemented in software, the device may store instructions for the software in suitable non-transitory computer-readable media (multiple media) and use one or more processors to execute the instructions in hardware to perform the technology of this disclosure. The one or more computer-readable media may be a single memory component or may be distributed. Each of the point cloud encoder 200 and point cloud decoder 300 may be included in one or more encoders or decoders, one of which may be integrated as part of a combined encoder / decoder (CODEC) in the respective device. Devices including point cloud encoder 200 and / or point cloud decoder 300 may include one or more integrated circuits, microprocessors, and / or other types of devices.
[0051] The point cloud encoder 200 and point cloud decoder 300 can operate according to decoding standards such as Video Point Cloud Compression (V-PCC) or Geometric Point Cloud Compression (G-PCC) standards. This disclosure generally relates to decoding images (e.g., encoding and decoding) to include processes of encoding or decoding data. Encoded bitstreams typically include a series of values for syntax elements representing decoding decisions (e.g., decoding modes).
[0052] This disclosure can generally refer to "signaling" specific information (such as syntax elements). The term "signaling" can generally refer to the transmission of a value for a syntax element and / or other data used to decode encoded data. That is, the point cloud encoder 200 can signal a value for a syntax element in the bitstream. Generally, signaling refers to generating a value in the bitstream. As noted above, the source device 102 can transmit the bitstream to the destination device 116 substantially in real time or not in real time (such as when the syntax element is stored in the storage device 112 for later retrieval by the destination device 116).
[0053] ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) is investigating the potential need for standardization of point cloud decoding technology, which offers significantly greater compression capabilities than current methods, with the goal of developing a standard. This exploration is being conducted collaboratively through a group called the 3D Graphics Group (3DG) to evaluate compression technology designs proposed by experts in the field.
[0054] Point cloud compression activities are categorized into two distinct approaches. The first approach is "Video Point Cloud Compression" (V-PCC), which segments a 3D object and projects these segments onto multiple 2D planes (represented as "patches" in 2D frames), which are further decoded by conventional 2D video codecs, such as the High Efficiency Video Decoding (HEVC) (ITU-TH.265) codec. The second approach is "Geometry-Based Point Cloud Compression" (G-PCC), which directly compresses 3D geometry, i.e., the position of a set of points in 3D space and the associated attribute values (for each point associated with the 3D geometry). G-PCC addresses the compression of point clouds in both Category 1 (static point clouds) and Category 3 (dynamically acquired point clouds). The latest draft of the G-PCC standard is available in the text of "ISO / IEC FDIS 23090-9 Geometry-based Point Cloud Compression, ISO / IEC JTC 1 / SC29 / WG 7m55637", a teleconference from October 2020, and the codec description is available in "G-PCC Codec Description, ISO / IEC JTC 1 / SC29 / WG 7MDS20983", a teleconference from October 2021.
[0055] A point cloud is a collection of points in 3D space and can have attributes associated with those points. Attributes can be color information (such as R, G, B or Y, Cb, Cr), reflectivity information, or other attributes. Point clouds can be captured by various cameras or sensors, such as LiDAR sensors and 3D scanners, and can also be computer-generated. Point cloud data can be used in a variety of applications, including but not limited to architecture (modeling), cartography (3D models for visualization and animation), and the automotive industry (LiDAR sensors for navigation aids).
[0056] The 3D space occupied by point cloud data can be enclosed by virtual bounding boxes. The positions of points within the bounding box can be represented with a specific precision; therefore, the positions of one or more points can be quantized based on this precision. At the smallest level, the bounding box is segmented into voxels, which are the smallest spatial units represented by a unit cube. A voxel within the bounding box can be associated with zero, one, or more points. The bounding box can be segmented into multiple cubic / cuboid regions, which can be called tiles. Each tile can be decoded into one or more slices. Dividing the bounding box into slices and tiles can be based on the number of points in each partition, or on other considerations (e.g., a specific region can be decoded into a tile). Slice regions can be further subdivided using segmentation decisions similar to those in video codecs.
[0057] Figure 2 An overview of the Point Cloud Encoder 200 is provided. Figure 3 An overview of the point cloud decoder 300 is provided. The modules shown are logical modules and do not necessarily correspond one-to-one with the code implemented in the reference implementation of the G-PCC codec (i.e., the TMC13 test model software studied by ISO / IEC MPEG (JTC 1 / SC 29 / WG 11)). Figure 2 In the example, the point cloud encoder 200 may include a geometry encoding unit 250 and an attribute encoding unit 260. Typically, the geometry encoding unit 250 is configured to encode the positions of points in the point cloud frame to produce a geometry bitstream 203. The attribute encoding unit 260 is configured to encode the attributes of the points in the point cloud frame to produce an attribute bitstream 205. As will be explained below, the attribute encoding unit 260 may also use the positions and the encoded geometry from the geometry encoding unit 250 to encode the attributes.
[0058] exist Figure 3 In the example, the point cloud decoder 300 may include a geometry decoding unit 350 and an attribute decoding unit 360. Typically, the geometry decoding unit 350 is configured to decode the geometry bitstream 203 to recover the positions of points in the point cloud frame. The attribute decoding unit 360 is configured to decode the attribute bitstream 205 to recover the attributes of the points in the point cloud frame. As will be explained below, the attribute decoding unit 360 may also use the positions and the decoded geometry from the geometry decoding unit 350 to decode the attributes.
[0059] In both the point cloud encoder 200 and the point cloud decoder 300, the point cloud positions are decoded first. Attribute decoding depends on the decoded geometry. (This disclosure...) Figure 4-7In this code, the decoding unit with a vertical shading is the option typically used for Category 1 data. The decoding unit with a diagonal shading is the option typically used for Category 3 data. All other modules are common to both Category 1 and Category 3.
[0060] For Category 3 data, the compressed geometry is typically represented as an octree at the leaf level, descending from the root down to individual voxels. For Category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree at the leaf level, descending from the root down to blocks larger than voxels) plus a model for approximating the surface within each leaf of the pruned octree. Thus, both Category 1 and Category 3 data can share the octree decoding mechanism, while Category 1 data can also approximate the voxels within each leaf using a surface model. The surface model used is triangulation, which consists of 1-10 triangular bodies per block, forming a triangle soup. Therefore, the Category 1 geometry codec is called a Trisoup geometry codec, while the Category 3 geometry codec is called an octree geometry codec.
[0061] At each node in the octree, occupancy is signaled for one or more (up to eight) child nodes (when occupancy is not inferred). Multiple neighborhoods are specified, including: (a) nodes sharing a face with the current octree node, (b) nodes sharing a face, edge, or vertex with the current octree node, etc. Within each neighborhood, the occupancy of a node and / or its child nodes can be used to predict the occupancy of the current node or its child nodes. For points sparsely distributed among characteristic nodes in the octree, the codec also supports a direct decoding mode, where the 3D position of the point is directly encoded. A signaling flag can be used to indicate that direct mode is signaled. At the lowest level, the number of points associated with an octree node / leaf node can also be decoded.
[0062] Figure 8 This is a conceptual diagram illustrating an example octree partition for geometric decoding. For example, Figure 8 The diagram shows an octree partition 800. As shown, octree partition 800 contains points 802-808 at different levels.
[0063] Once the geometry is decoded, the attributes corresponding to the geometric points are also decoded. When there are multiple attribute points corresponding to a reconstructed / decoded geometric point, the attribute values representing the reconstructed point can be derived.
[0064] There are three attribute decoding methods in G-PCC: Region Adaptive Hierarchical Transform (RAHT) decoding, interpolation-based hierarchical nearest neighbor prediction (prediction transform), and interpolation-based hierarchical nearest neighbor prediction (lifting transform) with update step size / lifting step size. RAHT and lifting are typically used for Class 1 data, while prediction is typically used for Class 3 data. However, any method can be used for any data, and like the geometry codec in G-PCC, the attribute decoding method used to decode point clouds is specified in the bitstream.
[0065] Attribute decoding can be performed at each level of detail (LOD), where a finer representation of the point cloud attributes can be obtained using each level of detail. Each level of detail can be specified based on a distance metric to neighboring nodes or based on the sampling distance.
[0066] At point cloud encoder 200, the residuals obtained from the output of the attribute as a decoding method are quantized. The residuals can be obtained by subtracting the attribute value from the predicted value derived from the attribute values of the current point's neighboring points and the previously encoded points. The quantized residuals can be decoded using context-adaptive arithmetic decoding.
[0067] The point cloud encoder 200 and point cloud decoder 300 can be configured to use predictive geometry decoding as an alternative to octree geometry decoding to decode point cloud data. In predictive tree decoding, the nodes of the point cloud are arranged in a tree structure (which defines the prediction structure), and various prediction strategies are used to predict the coordinates of each node in the tree relative to its predictors.
[0068] Figure 14 One method is shown in the figure. Figure 14 This is a conceptual diagram illustrating an example of inter-frame prediction of the current point (curPoint) 1400 in the current frame based on the point (interPredPt) 1402 in the reference frame. Extending inter-frame prediction to azimuth, radius, and laser ID may include the following steps: For a given point, select the previously decoded point (prevDecP0) 1404; Select a location point (refFrameP0) 1406 in the reference frame that has the same scaled azimuth and laser ID as prevDecP0 1404; In the reference frame, find the first point (interPredPt) 1402 with an azimuth angle greater than refFrameP0 1406. Point interPredPt 1402 can also be called the "Next" inter-frame predictor.
[0069] Figure 4 To show in further detail Figure 2A block diagram of an example of a geometric coding unit 250. The geometric coding unit 250 may include a coordinate transformation unit 202, a voxelization unit 206, a prediction tree construction unit 207, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic coding unit 214, and a geometric reconstruction unit 216.
[0070] like Figure 4 As shown in the example, the geometry encoder 250 can obtain a set of locations of points in a point cloud. In one example, the geometry encoder 250 can obtain a set of locations and a set of attributes of points in a point cloud from a data source 104 (Figure 1). The locations may include the coordinates of the points in the point cloud. The geometry encoder 250 can generate a geometry bitstream 203, which includes an encoded representation of the locations of the points in the point cloud.
[0071] The coordinate transformation unit 202 can apply a transformation to the coordinates of a point to transform the coordinates from the initial domain to the transformation domain. The transformed coordinates can be referred to as transformed coordinates in this disclosure. The voxelization unit 206 can voxelize the transformed coordinates. Voxelization of the transformed coordinates can include quantization and removal of some points from the point cloud. In other words, multiple points in the point cloud can be grouped into a single "voxel," which can subsequently be considered a point in some respects.
[0072] Prediction tree building unit 207 can be configured to generate prediction trees based on voxelized transform coordinates. Prediction tree building unit 207 can be configured to perform any of the prediction tree decoding techniques described above in intra-frame prediction mode or inter-frame prediction mode. To perform prediction tree decoding using inter-frame prediction, prediction tree building unit 207 can access points from previously encoded frames from geometric reconstruction unit 216. Arithmetic coding unit 214 can entropy-encode the syntax elements representing the encoded prediction tree.
[0073] Instead of performing prediction tree-based decoding, the geometric encoding unit 250 can perform octree-based decoding. The octree analysis unit 210 can generate an octree based on voxelized transformed coordinates. The surface approximation analysis unit 212 can analyze the points to potentially determine a surface representation of the set of points. The arithmetic encoding unit 214 can entropy-encode the syntax elements representing the octree information and / or the surface information determined by the surface approximation analysis unit 212. The geometric encoding unit 250 can output these syntax elements in a geometric bitstream 203. The geometric bitstream 203 may also include other syntax elements, including those not arithmetically encoded.
[0074] Octree-based decoding can be performed as an intra-frame prediction technique or an inter-frame prediction technique. In order to perform octree decoding using inter-frame prediction, the octree analysis unit 210 and the surface approximation analysis unit 212 can access points from previously encoded frames from the geometric reconstruction unit 216.
[0075] The geometric reconstruction unit 216 can reconstruct the transformed coordinates of points in the point cloud based on an octree, a prediction tree, data indicating the surface determined by the surface approximation analysis unit 212, and / or other information. Due to voxelization and surface approximation, the number of transformed coordinates reconstructed by the geometric reconstruction unit 216 may differ from the original number of points in the point cloud. The points obtained as a result may be referred to as reconstructed points.
[0076] Figure 5 To show in further detail Figure 2 A block diagram of an example of attribute encoding unit 260 is provided. Attribute encoding unit 250 may include a color transformation unit 204, an attribute transfer unit 208, a RAHT unit 218, a LoD generation unit 220, a boosting unit 222, a coefficient quantization unit 224, an arithmetic encoding unit 226, and an attribute reconstruction unit 228. Attribute encoding unit 260 may encode attributes of points in a point cloud to produce an encoded attribute bitstream 205 comprising a set of attributes. Attributes may include information about points in the point cloud, such as the color associated with a point in the point cloud.
[0077] Color transformation unit 204 can apply transformations to convert the color information of attributes to different domains. For example, color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space. Attribute transfer unit 208 can transfer the attributes of the original points of the point cloud to the reconstructed points of the point cloud. Attribute transfer unit 208 can use the original position of the points as well as the position generated from attribute encoding unit 250 (e.g., from geometric reconstruction unit 216) for the transfer.
[0078] RAHT unit 218 can apply RAHT decoding to the attributes of the reconstructed points. In some examples, under RAHT, the attributes of a 2x2x2 point location block are extracted and transformed along one direction to obtain four low-frequency nodes (L) and four high-frequency nodes (H). Subsequently, the four low-frequency nodes (L) are transformed in a second direction to obtain two low-frequency nodes (LL) and two high-frequency nodes (LH). The two low-frequency nodes (LL) are transformed along a third direction to obtain one low-frequency node (LLL) and one high-frequency node (LLH). The low-frequency node LLL corresponds to the DC coefficients, and the high-frequency nodes H, LH, and LLH correspond to the AC coefficients. The transformation in each direction can be a 1-D transformation with two coefficient weights. The low-frequency coefficients can be taken as coefficients for the 2x2x2 block for the next higher-level RAHT transformation, and the AC coefficients are encoded without change; this transformation continues up to the top root node. The tree traversal used for encoding is top-down and is used to calculate the weights to be used for the coefficients; the transformation order is bottom-up. Then the coefficients can be quantized and decoded.
[0079] Alternatively or additionally, LoD generation unit 220 and lifting unit 222 may apply LoD processing and lifting to the attributes of the reconstructed points, respectively. LoD generation is used to segment attributes into different refinement levels. Each refinement level provides a refinement of the attributes of the point cloud. The first refinement level provides a coarse approximation and contains fewer points; subsequent refinement levels typically contain more points; and so on. Refinement levels may be constructed using a distance-based metric, or one or more other classification criteria may be used (e.g., subsampling from a specific order). Thus, all reconstructed points can be included in the refinement levels. Each level of detail is generated by taking the joint of all points from up to a specific refinement level: for example, LoD1 is obtained based on refinement level RL1, LoD2 is obtained based on RL1 and RL2, ..., LoDN is obtained by the joint of RL1, RL2, ..., RLN. In some cases, a prediction scheme (e.g., prediction transformation) may follow LoD generation, where the attributes associated with each point in the LoD are predicted based on a weighted average of the preceding points, and the residuals are quantized and entropy-decoded. The improvement scheme is based on a predictive transformation mechanism, which uses an update operator to update the coefficients and performs adaptive quantization of the coefficients.
[0080] RAHT unit 218 and lifting unit 222 can generate coefficients based on attributes. Coefficient quantization unit 224 can quantize the coefficients generated by RAHT unit 218 or lifting unit 222. Arithmetic coding unit 226 can apply arithmetic decoding to the syntax elements representing the quantized coefficients. Point cloud encoder 200 can output these syntax elements in attribute bitstream 205. Attribute bitstream 205 may also include other syntax elements, including syntax elements that have undergone non-arithmetic coding.
[0081] Similar to the geometry coding unit 250, the attribute coding unit 260 can use intra-frame prediction or inter-frame prediction techniques to encode attributes. The above description of the attribute coding unit 260 generally describes intra-frame prediction techniques. In other examples, the RAHT unit 215, the LoD generation unit 220, and / or the boosting unit 222 can also use attributes from previously encoded frames to further encode attributes of the current frame. In this regard, the attribute reconstruction unit 228 can be configured to reconstruct the encoded attributes and store the encoded attributes for possible future use in inter-frame prediction coding.
[0082] Figure 6 To show in further detail Figure 3 A block diagram of an example geometry decoding unit 350 is provided. The geometry decoding unit 350 can be configured to perform operations related to... Figure 4 The geometric encoding unit 250 performs the reverse process. The geometric decoding unit 350 receives the geometric bit stream 203 and generates the positions of points in the point cloud frame. The geometric decoding unit 350 may include a geometric arithmetic decoding unit 302, an octree synthesis unit 306, a prediction tree synthesis unit 307, a surface approximation synthesis unit 310, a geometric reconstruction unit 312, and an inverse coordinate transformation unit 320.
[0083] The geometric decoding unit 350 can receive the geometric bitstream 203. The geometric arithmetic decoding unit 302 can apply arithmetic decoding (e.g., context-adaptive binary arithmetic decoding (CABAC), or other types of arithmetic decoding) to the syntax elements in the geometric bitstream 203.
[0084] The octree synthesis unit 306 can synthesize an octree based on the syntax elements parsed from the geometric bitstream 203. Starting from the root node of the octree, the occupancy of each of the eight child nodes at each octree level is signaled in the bitstream. When the signal indicates that a child node at a particular octree level is occupied, the occupancy of that child node's children is signaled. After signaling the nodes at each octree level, the process proceeds to the next octree level.
[0085] At the final level of the octree, each node corresponds to a voxel position; when a leaf node is occupied, one or more points can be specified to be occupied at the voxel position. In some cases, due to quantization, some branches of the octree may terminate before the final level. In this case, the leaf node is considered an occupied node without children. In the case of using surface approximation in the geometric bitstream 203, the surface approximation synthesis unit 310 can determine the surface model based on the syntax elements parsed from the geometric bitstream 203 and based on the octree.
[0086] Octree-based decoding can be performed as intra-frame prediction or inter-frame prediction. To perform octree decoding using inter-frame prediction, octree synthesis unit 306 and surface approximation synthesis unit 310 can access points from previously decoded frames from geometric reconstruction unit 312.
[0087] The prediction tree synthesis unit can synthesize a prediction tree based on the syntax elements parsed from the geometric bitstream 203. The prediction tree synthesis unit 307 can be configured to synthesize a prediction tree using any of the techniques described above, including intra-frame prediction techniques or both. To perform prediction tree decoding using inter-frame prediction, the prediction tree synthesis unit 307 can access points from previously decoded frames from the geometric reconstruction unit 312.
[0088] The geometric reconstruction unit 312 can perform reconstruction to determine the coordinates of points in the point cloud. For each location at a leaf node of the octree, the geometric reconstruction unit 312 can reconstruct the node location using the binary representation of the leaf node in the octree. At each corresponding leaf node, the number of points at that corresponding leaf node is signaled; this indicates the number of repeated points at the same voxel location. When geometric quantization is used, the point locations are scaled to determine the reconstructed point location values.
[0089] The inverse transform coordinate unit 320 can apply an inverse transform to the reconstructed coordinates to convert the reconstructed coordinates (positions) of points in the point cloud from the transform domain back to the initial domain. The positions of points in the point cloud can be in the floating-point domain, but the point positions in the G-PCC codec are decoded in the integer domain. The inverse transform can be used to convert the positions back to the original domain.
[0090] Figure 7 To show in further detail Figure 3 A block diagram of an example attribute decoding unit 360. The attribute decoding unit 360 can be configured to perform operations related to... Figure 5The attribute encoding unit 260 performs the reverse process. The attribute decoding unit 360 receives the attribute bit stream 205 and generates the attributes of the points in the point cloud frame. The attribute decoding unit 360 may include an attribute arithmetic decoding unit 304, an inverse quantization unit 308, a RAHT unit 314, a LoD generation unit 316, an inverse boosting unit 318, an inverse color transformation unit 322, and an attribute reconstruction unit 328.
[0091] The attribute arithmetic decoding unit 304 can apply arithmetic decoding to the syntax elements in the attribute bitstream 205. The inverse quantization unit 308 can inverse quantize the attribute values. The attribute values can be based on the syntax elements obtained from the attribute bitstream 205 (e.g., including syntax elements decoded by the attribute arithmetic decoding unit 304).
[0092] Depending on how the attribute values are encoded, RAHT unit 314 can perform RAHT decoding to determine the color value for a point in the point cloud based on the inverse-quantized attribute values. RAHT decoding is performed from top to bottom of the tree. At each level, composition values are derived using low-frequency and high-frequency coefficients derived from the inverse quantization process. At leaf nodes, the derived values correspond to the attribute values of the coefficients. The weight derivation process for points is similar to that used at point cloud encoder 200. Alternatively, LoD generation unit 316 and inverse lifting unit 318 can use level-of-detail techniques to determine the color value for a point in the point cloud. LoD generation unit 316 decodes each LoD, giving a progressively finer representation of the point's attributes. Using a prediction transform, LoD generation unit 316 can derive a prediction for a point based on a weighted sum of points in a previous LoD or points previously reconstructed in the same LoD. LoD generation unit 316 can add the prediction to the residual (obtained after inverse quantization) to obtain the reconstructed attribute value. When using an enhancement scheme, the LoD generation unit 316 may also include an update operator to update the coefficients used to derive the attribute values. In this case, the LoD generation unit 316 may also apply inverse adaptive quantization.
[0093] In addition, Figure 7 In the example, the inverse color transformation unit 322 can apply an inverse color transformation to the color value. The inverse color transformation can be the inverse of the color transformation applied by the color transformation unit 204 of the encoder 200. For example, the color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space. Correspondingly, the inverse color transformation unit 322 can transform color information from the YCbCr color space to the RGB color space.
[0094] The attribute reconstruction unit 328 can be configured to store attributes from previously decoded frames. Attribute decoding can be performed using intra-frame prediction or inter-frame prediction techniques. To perform attribute decoding using inter-frame prediction, the RAHT unit 314 and / or the LoD generation unit 316 can access the attributes of previously decoded frames from the attribute reconstruction unit 328.
[0095] Figure 4-7 Various units are illustrated to aid in understanding the operations performed by the point cloud encoder 200 and the point cloud decoder 300. Units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit is a circuit that provides a specific function and is pre-programmed to perform certain operations. A programmable circuit refers to a circuit that can be programmed to perform various tasks and provides flexible functionality within the operable operations. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. A fixed-function circuit can execute software instructions (e.g., to receive or output parameters), but the type of operation performed by a fixed-function circuit is typically immutable. In some examples, one or more units within the unit may be different circuit blocks (fixed-function or programmable), and in some examples, one or more units within the unit may be integrated circuits.
[0096] The following describes slice entropy continuity. Typically, when a slice is decoded, the entropy decoding state (of the various binary symbols (bins) after entropy decoding) is reset (e.g., reset to a default value) before the decoding of subsequent slices. The entropy decoding state can also be referred to as context or context value. This reset allows for independent parsing and decoding of slices. However, this reset of the entropy decoding state can lead to a loss of decoding efficiency, which can be one of various costs associated with using slices. Entropy continuity is a technique that allows the entropy decoding state of a first slice to be copied from a second slice, where the second slice is a preceding slice in the order of decoding. In such cases, the decoding of the first slice can depend on the decoding of the second slice.
[0097] In applications where slices may be lost, this dependency can impact decoding efficiency. For example, if the second slice is lost, the first slice may be undecodeable even if it is received. However, in other applications where the probability of slice loss is low, entropy continuity can provide a balanced performance trade-off: (a) the impact on decoding efficiency may be less significant than other approaches because the entropy decoding state of a slice can be copied from another slice; (b) under entropy continuity, only the entropy encoding and / or entropy decoding of the slice is dependent; subsequent decoding of the slice can still be performed independently, providing some flexibility for parallel implementation.
[0098] In G-PCC, a signal notification flag (e.g., a high-level entropy continuity flag) is used in the geometry parameter set (GPS) to indicate whether entropy continuity is enabled. This high-level entropy continuity flag, which is signaled in GPS, can apply to one or more frames and is therefore considered a high-level flag.
[0099] When enabled, the entropy decoding of one or more slices of a frame can depend on the entropy decoding state of another slice in the same frame. This can be indicated by a second flag in each slice. This second flag can be referred to as the slice_entropy_continuation flag. That is, the slice_entropy_continuation flag can be a slice-level flag applicable to the slice (e.g., signaled in the slice header or elsewhere). Thus, a high-level entropy continuity flag for entropy continuity can indicate whether entropy continuity is allowed for slices in a frame (e.g., the entropy decoding state of a slice in the current frame can be based on the entropy decoding state of another slice in the same frame), and the slice_entropy_continuation flag can indicate whether entropy continuity is enabled for the specific slice associated with that slice_entropy_continuation flag.
[0100] In G-PCC, for entropy continuity, when indicating that the first slice determines (e.g., based on replication) the entropy state from the second slice, the point cloud encoder 200 signals the prev_slice_id of the slice ID indicating the second slice. This allows the point cloud decoder 300 to determine whether the first slice can be entropy-decoded. If the point cloud decoder 300 does not receive a slice with the ID prev_slice_id (i.e., the second slice), it can determine that it cannot decode the first slice. This determination allows the point cloud decoder 300 to avoid wasting resources (while attempting to decode the slice). The point cloud decoder 300 can also take other measures for lost / undecodeable slices—error recovery or requesting the encoder side / sender to retransmit the second slice.
[0101] G-PCC can also have other constraints. Under entropy continuity, the first slice of a frame in decoding order cannot copy the entropy decoding state from other slices. In other words, entropy continuity of slices can only exist between slices of the same frame. However, as described in more detail, the inclusion of frame-dependent entropy decoding allows the point cloud encoder 200 or point cloud decoder 300 to determine the entropy decoding state (e.g., by copying the entropy decoding state) for the first slice of the current frame in decoding order from the last slice of the previous frame in decoding order.
[0102] The following describes frame-dependent entropy decoding. Frame-dependent entropy decoding can be used to copy entropy decoding state from a slice of another frame. This may differ from copying the entropy continuity of context from other slices within the same frame (e.g., frame A is decoded, and frame B is decoded as an inter-frame prediction frame with frame A as a reference frame for frame B). When frame-dependent entropy decoding is enabled, the entropy decoding state of a slice in frame B is copied from a slice of frame A.
[0103] In G-PCC, GPS uses a signal notification flag (gof_geom_entropy_continution) that indicates the enabling of frame-dependent entropy decoding. The gof_geom_entropy_continuation flag can be considered a high-level flag applicable to one or more frames. For example, if the gof_geom_entropy_continution flag is enabled, it allows the entropy decoding state of the current frame's slices to be determined based on the entropy decoding state of slices from previous frames.
[0104] When dependent frame entropy decoding is enabled and attribute inter-frame prediction is enabled, the attribute entropy decoding state is also copied. This process occurs during... Figure 9 As shown in [the image]. For example, in [the image]. Figure 9 In this process, the process begins with frame initialization (900). Point cloud decoder 300 can determine whether entropy continuity for a specific slice is enabled (902). If enabled (902 is "Yes"), point cloud decoder 300 can decode the frame (910). If not enabled (902 is "No"), point cloud decoder 300 can determine whether a random access period has been reached (904). If a random access period has been reached (904 is "Yes"), point cloud decoder 300 can perform frame initialization 912 and frame initialization 914, and then decode the frame (910).
[0105] If the random access period is not reached (No in 904), the point cloud decoder 300 can determine whether dependent frame entropy decoding is enabled (906). If dependent frame entropy decoding is not enabled (No in 906), the point cloud decoder 300 can proceed along frame initialization 912, 914, and decode frame 910. If dependent frame entropy decoding is enabled (Yes in 906), the point cloud decoder 300 can determine whether attribute prediction parameters are enabled (908). If enabled, the decoded frame is executed (910), and if not enabled, the process continues to frame initialization 914 and decoded frame 910.
[0106] After decoding frame 916, the point cloud decoder 300 can save the entropy context probability (916). The entropy context probability is an example of the entropy decoding state. The point cloud decoder 300 can repeat these example techniques for each frame in the group (918).
[0107] The entropy-continuous (e.g., determining the entropy decoding state of a slice based on another slice in the same frame) and frame-dependent entropy decoding (e.g., determining the entropy decoding state of a slice in the current frame based on a slice in another frame) methods described above can have several drawbacks as described below. In one or more examples, the techniques described in this disclosure can address some of the aforementioned drawbacks, but these example techniques should not be considered as limiting.
[0108] In the first aspect, currently, frame entropy-dependent decoding is implemented at the slice level, not the frame level. Therefore, frame entropy-dependent decoding exhibits the following behavior: a) When entropy is continuously enabled: i. When the slice_entropy_continution is signaled to be 1 for a slice (no frame entropy-dependent decoding is applied). 1. Case 1: Copy the entropy decoding state from the previous slice; ii. When the slice_entropy_continution is signaled to be 0 for a slice: 1. Case 2a: If frame-dependent entropy decoding is enabled, the entropy decoding state is copied from the previous slice (for the first slice in a frame, the entropy state is copied from the last slice of the previous frame). 2. Case 2b: If entropy decoding based on the frame is not enabled, reset the entropy decoding state; b) When entropy is continuously disabled: i. Case 3a: If frame-dependent entropy decoding is enabled, the entropy decoding state is copied from the previous slice (for the first slice in a frame, the entropy state is copied from the previous frame). ii. Case 3b: If the entropy decoding dependent on the frame is not enabled, then reset the entropy decoding state.
[0109] In cases 1, 2b, and 3b, the behavior of the decoder (e.g., point cloud encoder 200 or point cloud decoder 300) is clear and well-defined. However, in case 3a, even if the current slice and the previous slice are part of the current frame, the entropy decoding state is determined (e.g., copied) from the previous slice. This case may not be the intended use case for frame-dependent entropy decoding. In case 2a, even if slice_entropy_continution is 0 (meaning that the entropy state will not be copied), the (implemented) frame-dependent entropy will still copy the entropy decoding state from the previous slice. In this case, the behavior may be contradictory. In fact, frame-dependent entropy decoding not only copies slices from another frame, but also applies to copying the entropy decoding state of slices within the same frame when slice entropy continuation is not applied.
[0110] Frame-dependent entropy decoding should be applied to the first slice of a frame (where it copies the entropy state from the previous / reference frame). Slice entropy continuity is not applied to the first slice of a frame, but rather to all subsequent slices within the frame. Therefore, there is a clear distinction between the application of entropy continuity and the application of frame-dependent decoding. Based on one or more examples, the application of frame-dependent entropy decoding can be decoupled from slice entropy continuity, and frame-dependent entropy decoding can be applied only to the first slice of a frame.
[0111] The following addresses the problem in the first aspect. A first flag can be signaled within the slice to indicate whether the entropy decoding state of the slice is copied from the entropy decoding state of the slice in the previous frame. This first flag can be signaled only if there is an indication that entropy decoding of the dependent frame is enabled (e.g., another flag in the parameter set). A constraint can be added: that is, for slices that are not the first slice in the frame, the first flag is set to 0. For example, the entropy decoding state is copied from the previous frame only for the first slice.
[0112] Conditions can be added to ensure entropy continuity is enabled only when the dependent frame is enabled. One (or more) of the following constraints can be added: a) The requirement for bitstream consistency is that when entropy-dependent decoding is enabled, entropy_continution should be equal to 1; b) The requirement for bitstream consistency is that when frame entropy-dependent decoding is enabled, slice_entropy_continution should be equal to 1 for a slice that is not the first slice of a frame.
[0113] Figure 15 This is a conceptual diagram illustrating an example of a frame with frame entropy-dependent decoding enabled. Figure 15 The above-described example techniques, as non-limiting examples, are shown that can solve one or more of the problems described above. The following illustrates various conditions for enabling or disabling entropy continuity (e.g., determining the entropy decoding state of a slice based on another slice in the same frame) and frame-dependent entropy decoding (e.g., determining the entropy decoding state of a slice in the current frame based on a slice in another frame), and slice-level signaling for entropy continuity and frame-dependent entropy decoding.
[0114] like Figure 15 As shown, the previous frame 1500 includes a last slice 1502. The last slice 1502 can be the last slice in the decoding order of the slices in the previous frame 1500, and the previous frame 1500 may include more than just the last slice 1502. The current frame 1504 includes a first slice 1506 and a second slice 1508. The first slice 1506 is the first slice of the current frame 1504 in the decoding order. The second slice 1508 can be the second slice of the current frame 1504 in the decoding order.
[0115] The following shows an example of the flags associated with the first slice 1506 and the second slice 1508. Table 1.
[0116] In Table 1, high-level dependent frame entropy decoding flags (e.g., the `gof_geom_entropy_continuation` flag) indicate that dependent frame entropy decoding is enabled. That is, the point cloud encoder 200 and point cloud decoder 300 may determine the entropy decoding state of the first slice 1506 based on the entropy decoding state of the last slice 1502. The high-level entropy continuity flag indicates that entropy continuity is enabled. That is, the point cloud encoder 200 and point cloud decoder 300 may determine the entropy decoding state of the second slice 1508 based on the entropy decoding state of the first slice 1506.
[0117] In Table 1, for the first slice 1506, the slice_dep_entr_cont (slice-dependent entropy continuity) flag can be either "true" or "false". That is, the slice_dep_entr_cont flag for the first slice 1506 can indicate whether the point cloud encoder 200 and the point cloud decoder 300 will determine the entropy decoding state based on the entropy decoding state of the last slice 1502. When the slice_dep_entr_cont flag is "true", the point cloud encoder 200 and the point cloud decoder 300 can determine the entropy decoding state of the first slice 1506 based on the entropy decoding state of the last slice 1502, as shown. When the slice_dep_entr_cont flag is "false", the point cloud encoder 200 and the point cloud decoder 300 can set the entropy decoding state of the first slice 1506 to a default value (e.g., reset the entropy decoding state).
[0118] In Table 1, for the first slice 1506, the slice_entropy_continution flag is set to "false" (e.g., by signaling or by inference). This could be because the first slice 1506 is the first slice in the current frame 1504, and there is no earlier slice in the current frame 1504 whose entropy decoding state can be used to determine the entropy decoding state of the first slice 1506.
[0119] In Table 1, for the second slice 1508, the slice_dep_entr_cont flag is set to "false" (e.g., by signaling or by inference). This could be because the second slice 1508 is not the first slice of the current frame 1504 in the decoding order.
[0120] In Table 1, for the second slice 1508, the slice_entropy_continuation flag can be either "true" or "false". That is, the slice_entropy_continuation flag for the second slice 1508 can indicate whether the point cloud encoder 200 and the point cloud decoder 300 will determine the entropy decoding state of the second slice 1508 based on the entropy decoding state of the first slice 1504. When the slice_entropy_continuation flag is "true", the point cloud encoder 200 and the point cloud decoder 300 can determine the entropy decoding state of the second slice 1508 based on the entropy decoding state of the first slice 1506, as shown. When the slice_entropy_continuation flag is "false", the point cloud encoder 200 and the point cloud decoder 300 can set the entropy decoding state of the second slice 1508 to a default value (e.g., reset the entropy decoding state). Table 2.
[0121] In Table 2, high-level dependent frame entropy decoding flags (e.g., the `gof_geom_entropy_continuation` flag) indicate that dependent frame entropy decoding is enabled. That is, the point cloud encoder 200 and point cloud decoder 300 may determine the entropy decoding state of the first slice 1506 based on the entropy decoding state of the last slice 1502. The high-level entropy continuity flag indicates that entropy continuity is not enabled (e.g., disabled). That is, the point cloud encoder 200 and point cloud decoder 300 cannot determine the entropy decoding state of the second slice 1508 based on the entropy decoding state of the first slice 1506.
[0122] In Table 2, for the first slice 1506, the slice_dep_entr_cont (slice-dependent entropy continuity) flag can be either "true" or "false". That is, the slice_dep_entr_cont flag for the first slice 1506 can indicate whether the point cloud encoder 200 and the point cloud decoder 300 will determine the entropy decoding state based on the entropy decoding state of the last slice 1502. When the slice_dep_entr_cont flag is "true", the point cloud encoder 200 and the point cloud decoder 300 can determine the entropy decoding state of the first slice 1506 based on the entropy decoding state of the last slice 1502, as shown. When the slice_dep_entr_cont flag is "false", the point cloud encoder 200 and the point cloud decoder 300 can set the entropy decoding state of the first slice 1506 to a default value (e.g., reset the entropy decoding state).
[0123] In Table 2, for the first slice 1506, the slice_entropy_continution flag can be ignored, or it can be inferred to be disabled. This is because the higher-level entropy continuation flag indicates that entropy continuation is disabled for one or more frames. Therefore, it is not necessary to indicate at the slice level whether entropy continuation is enabled or disabled for the first slice 1506. Moreover, since there is no slice earlier than the first slice 1506 in the current frame 1504, the slice_entropy_continution flag is unnecessary, or it can be inferred to be false.
[0124] In Table 2, for the second slice 1508, the slice_dep_entr_cont flag is set to "false" (e.g., by signaling or by inference). This could be because the second slice 1508 is not the first slice of the current frame 1504 in decoding order. Similar to the first slice 1506, for the second slice 1508, the slice_entropy_continution flag may not be signaled, or it may be inferred to be disabled. This could be because the higher-level entropy continuity flag indicates that entropy continuity is disabled for one or more frames. Therefore, it is not necessary to indicate at the slice level whether entropy continuity is enabled or disabled for the second slice 1508. In this example, the point cloud encoder 200 and the point cloud decoder 300 may determine the entropy decoding state of the second slice 1508 based on default values (e.g., resetting the entropy decoding state of the second slice 1508). Table 3.
[0125] In Table 3, high-level dependent frame entropy decoding flags (e.g., the `gof_geom_entropy_continuation` flag) indicate that dependent frame entropy decoding is not enabled (e.g., disabled). That is, the point cloud encoder 200 and point cloud decoder 300 cannot determine the entropy decoding state of the first slice 1506 based on the entropy decoding state of the last slice 1502. The high-level entropy continuity flag indicates that entropy continuity is enabled. That is, the point cloud encoder 200 and point cloud decoder 300 can determine the entropy decoding state of the second slice 1508 based on the entropy decoding state of the first slice 1506.
[0126] In Table 3, for the first slice 1506, the slice_dep_entr_cont flag can be ignored, or it can be inferred to be "false". This could be because higher-level dependent frame entropy decoding flags indicate that dependent frame entropy decoding is disabled for one or more frames. Therefore, it is not necessary to indicate at the slice level whether dependent frame entropy decoding is enabled or disabled for the first slice 1506. In this example, the point cloud encoder 200 and point cloud decoder 300 can determine the entropy decoding state of the first slice 1506 based on default values (e.g., resetting the entropy decoding state of the first slice 1506).
[0127] In Table 3, for the first slice 1506, the slice_entropy_continution flag is set to "false" (e.g., by signaling or by inference). This could be because the first slice 1506 is the first slice in the current frame 1504, and there is no earlier slice in the current frame 1504 whose entropy decoding state can be used to determine the entropy decoding state of the first slice 1506.
[0128] In Table 3, for the second slice 1508, the slice_dep_entr_cont flag can be ignored, or it can be assumed to be false. This is because the higher-level dependent frame entropy decoding flag indicates that dependent frame entropy decoding is disabled for one or more frames. Therefore, it is not necessary to indicate at the slice level whether dependent frame entropy decoding is enabled or disabled for the second slice 1508. Furthermore, since the second slice 1508 is not the first slice in the decoding order of the current frame 1504, dependent frame entropy decoding can be automatically disabled.
[0129] In Table 3, for the second slice 1508, the slice_entropy_continuation flag can be either "true" or "false". That is, the slice_entropy_continuation flag for the second slice 1508 can indicate whether the point cloud encoder 200 and the point cloud decoder 300 will determine the entropy decoding state of the second slice 1508 based on the entropy decoding state of the first slice 1506. When the slice_entropy_continuation flag is "true", the point cloud encoder 200 and the point cloud decoder 300 can determine the entropy decoding state of the second slice 1508 based on the entropy decoding state of the first slice 1506, as shown. When the slice_entropy_continuation flag is "false", the point cloud encoder 200 and the point cloud decoder 300 can set the entropy decoding state of the second slice 1508 to a default value (e.g., reset the entropy decoding state). Table 4.
[0130] In Table 4, high-level dependent frame entropy decoding flags (e.g., the `gof_geom_entropy_continuation` flag) indicate that dependent frame entropy decoding is not enabled (e.g., disabled). That is, the point cloud encoder 200 and point cloud decoder 300 cannot determine the entropy decoding state of the first slice 1506 based on the entropy decoding state of the last slice 1502. The high-level entropy continuity flag indicates that entropy continuity is not enabled (e.g., disabled). That is, the point cloud encoder 200 and point cloud decoder 300 cannot determine the entropy decoding state of the second slice 1508 based on the entropy decoding state of the first slice 1506.
[0131] In Table 4, for the first slice 1506, the slice_dep_entr_cont flag can be ignored, or it can be inferred to be "false". This could be because higher-level dependent frame entropy decoding flags indicate that dependent frame entropy decoding is disabled for one or more frames. Therefore, it is not necessary to indicate at the slice level whether dependent frame entropy decoding is enabled or disabled for the first slice 1506. In this example, the point cloud encoder 200 and the point cloud decoder 300 can determine the entropy decoding state of the first slice 1506 based on default values (e.g., resetting the entropy decoding state of the first slice 1506).
[0132] In Table 4, for the first slice 1506, the slice_entropy_continuation flag can be ignored, or it can be inferred to be false. This is because the higher-level entropy continuity flag indicates that entropy continuity is disabled for one or more frames. Therefore, it is not necessary to indicate at the slice level whether entropy continuity is enabled or disabled for the first slice 1506. Moreover, since there is no slice earlier than the first slice 1506 in the current frame 1504, the slice_entropy_continuation flag is unnecessary, or it can be inferred to be false.
[0133] In Table 4, for the second slice 1508, the slice_dep_entr_cont flag can be left unsigned, or it can be inferred that the slice_dep_entr_cont flag is "false". This could be because the high-level dependent frame entropy decoding flag indicates that dependent frame entropy decoding is disabled for one or more frames. Furthermore, the second slice 1508 is not the first slice of the current frame 1504 in decoding order.
[0134] In Table 4, for the second slice 1508, the slice_entropy_continuation flag may not need to be signaled, or it may be inferred that the slice_entropy_continuation flag is "false". This could be because the higher-level entropy continuity flag indicates that entropy continuity is disabled for one or more frames. Therefore, it is not necessary to indicate at the slice level whether entropy continuity is enabled or disabled for the second slice 1508. In this example, the point cloud encoder 200 and the point cloud decoder 300 may determine the entropy decoding state of the second slice 1508 based on default values (e.g., resetting the entropy decoding state of the second slice 1508).
[0135] In the second aspect, the inter-frame prediction flags for attributes used in frame-dependent entropy decoding are examined to address the situation where inter-frame prediction applies to geometry but not to attributes. While this situation may be rare, even in this case, entropy decoding for geometry introduces frame dependencies that cannot be decoupled / escaped by attributes. Therefore, it is highly unlikely that the system could exploit this use case. More likely, this would also apply to attributes when the entropy decoding state of a frame is replicated for geometry. It can be observed that slice entropy continuity is not defined separately for geometry and attributes (in the first version). Slice entropy continuity can be defined together with geometry and attributes (e.g., they are applied together to both).
[0136] The second aspect of the problem can be addressed as follows. When frame-dependent entropy decoding is applied to a slice, the entropy decoding state of both the geometry and attributes of the slice is copied from the corresponding geometry and attributes of another slice in the previous frame. For example, the point cloud encoder 200 and the point cloud decoder 300 can determine the entropy decoding state of the geometry data of the first slice 1506 of the current frame 1504 based on the entropy decoding state of the geometry data of the last slice 1502 of the previous frame 1500, and determine the entropy decoding state of the attribute data of the first slice 1506 of the current frame 1504 based on the entropy decoding state of the attribute data of the last slice 1502 of the previous frame 1500. As another example, the point cloud encoder 200 and the point cloud decoder 300 can determine the entropy decoding state of the geometry data of the second slice 1508 of the current frame 1504 based on the entropy decoding state of the geometry data of the first slice 1506 of the current frame 1504, and determine the entropy decoding state of the attribute data of the second slice 1508 of the current frame 1504 based on the entropy decoding state of the attribute data of the first slice 1506 of the current frame 1504.
[0137] In the third aspect, the slice entropy is continuously signaled to `prev_slice_id` to detect slice loss. Without this information, the point cloud decoder 300 may be unable to determine whether slice parsing will succeed. If the previous frame on which the current frame entropy decoding depends is lost, the current decoder will most likely attempt to parse this information until a crash / failure occurs. However, similar information is not applied and signaled for entropy decoding of dependent frames.
[0138] The following addresses the third aspect of the problem. When dependent frame entropy decoding is enabled, an indicator / reference is signaled for each dependent frame, pointing to the frame on which the entropy state depends. For example, assuming frame A is decoded and the entropy decoding state of a slice in frame B depends on a slice in frame A, an indicator for the frame ID of frame A is signaled. In some examples, the ID of a slice in frame A, whose entropy state is copied to frame B, is also signaled. For instance, when point cloud encoder 200 and point cloud decoder 300 determine the entropy decoding state of the first slice 1506 of the current frame 1504 based on the entropy decoding state of the last slice 1502 of the previous frame 1500, point cloud encoder 200 can signal and point cloud decoder 300 can parse the frame identification information for the previous frame 1500, and in some cases, the identification information for the previous slice 1502 of the previous frame 1500.
[0139] As an example of the techniques described in this disclosure, when frame entropy-dependent decoding is enabled, the prev_frame_id is signaled to indicate the previous frame 1500 from which the entropy state will be copied. In some examples, the prev_slice_id is also signaled to indicate the last slice 1502 in the previous frame 1500 from which the entropy state will be copied.
[0140] In some examples, only a few bits of the previous frame ID (e.g., one or more LSB bits) are signaled. The decoder thus derives the previous frame ID from these few bits (e.g., the derivation may be similar to how a frame counter is derived). In some examples, the increment value indicates the difference between the frame IDs of the current frame and the previous frame.
[0141] In some examples, the following applies: a) When slice_entropy_continution is 0 and frame-dependent entropy decoding will be applied to slices in a frame, prev_slice_id and prev_frame_id are signaled to indicate the slice ID and frame ID of the slice from which the entropy state will be copied.
[0142] Figure 16This is a flowchart illustrating an example technology according to one or more examples described in this disclosure. For example, Figure 16 Example techniques for encoding or decoding point cloud data are shown. For ease of illustration, Figure 15 Used to describe Figure 16 The technology includes, for example, one or more memories that can be configured to store point cloud data. Examples of one or more memories include memory 106, memory 120, a memory dedicated to the point cloud encoder 200, a memory dedicated to the point cloud decoder 300, or some other memory. Processing circuitry can be coupled to one or more memories and can be configured to perform the example techniques described in this disclosure. Examples of processing circuitry include fixed-function circuitry and / or programmable circuitry of the point cloud encoder 200 or the point cloud decoder 300.
[0143] The processing circuitry of the point cloud encoder 200 can signal and the processing circuitry of the point cloud decoder 300 can parse the slice-level flag of the first slice 1506 of the current frame 1504 of point cloud data in decoding order. This slice-level flag indicates the entropy decoding state (1600) of the first slice 1506 of the current frame 1504 based on the entropy decoding state of the last slice 1502 of the previous frame 1500 of point cloud data in decoding order. For example, the processing circuitry of the point cloud encoder 200 can signal and the processing circuitry of the point cloud decoder 300 can parse the slice_dep_entr_cont flag of the first slice 1506, which indicates the entropy decoding state of the first slice 1506 of the current frame 1504 based on the entropy decoding state of the last slice 1502 of the previous frame 1500 of point cloud data in decoding order.
[0144] Furthermore, in some examples, the processing circuitry of the point cloud encoder 200 can be signaled, and the processing circuitry of the point cloud decoder 300 can parse the frame identification information for the previous frame 1500. For example, the point cloud encoder 200 can be signaled, and the point cloud decoder 300 can parse the prev_frame_id or information used to determine the prev_frame_id, where the prev_frame_id is an identifier for the previous frame 1500.
[0145] In some examples, the processing circuitry of the point cloud encoder 200 or the point cloud decoder 300 can determine that dependent frame entropy decoding is enabled for one or more frames. For example, the point cloud encoder 200 can signal and the point cloud decoder 300 can parse a high-level dependent frame entropy decoding flag (e.g., the gof_geom_entropy_continuation flag). This high-level dependent frame entropy decoding flag can be considered a second flag, which is signaled or parsed from the parameter set (e.g., GPS) of the one or more frames, indicating that dependent frame entropy decoding is enabled for the one or more frames.
[0146] In one or more examples, when frame entropy-dependent decoding is enabled for one or more frames, the point cloud encoder 200 or the point cloud decoder 300 can signal or resolve the flag (e.g., the slice_dep_entr_cont flag). In other words, when the high-level frame entropy-dependent decoding flag is "true", the point cloud encoder 200 can signal and the point cloud decoder 300 can resolve the slice_dep_entr_cont flag. When the high-level frame entropy-dependent decoding flag is "false", the point cloud encoder 200 may not signal and the point cloud decoder 300 may not resolve the slice_dep_entr_cont flag.
[0147] When the flag (e.g., the slice_dep_entr_cont flag) indicates that the entropy decoding state of the first slice 1506 of the current frame 1504 is determined based on the entropy decoding state of the last slice 1502 of the previous frame 1500, the processing circuitry of the point cloud encoder 200 or the point cloud decoder 300 can determine the entropy decoding state of the first slice 1506 of the current frame 1504 based on the entropy decoding state of the last slice 1502 of the previous frame 1500 (1602). For example, to determine the entropy decoding state, the processing circuitry of the point cloud encoder 200 or the point cloud decoder 300 can copy the entropy decoding state of the last slice 1502 of the previous frame 1500 as the entropy decoding state of the first slice 1506 of the current frame 1504. In some examples, as part of determining the entropy decoding state of the first slice 1506, there may be some further modifications to the entropy decoding state of the last slice 1502. However, such modifications may not be necessary, and the entropy decoding state of the first slice 1506 may be a copy of the entropy decoding state of the last slice 1502.
[0148] In some examples, the flag (e.g., the slice_dep_entr_cont flag) is a first flag. The processing circuitry of the point cloud encoder 200 can signal and the processing circuitry of the point cloud decoder 300 can parse the second slice-level flag (e.g., slice_entropy_continution) of the second slice 1508 of the current frame 1504 in the decoding order, the second slice-level flag indicating the entropy decoding state of the second slice 1508 of the current frame 1504 based on the entropy decoding state of the first slice 1506 of the current frame 1504.
[0149] In one or more examples, in order to determine the entropy decoding state of the first slice 1506 of the current frame 1504 based on the entropy decoding state of the last slice 1502 of the previous frame 1500, the processing circuit of the point cloud encoder 200 or the point cloud decoder 300 may determine the entropy decoding state of the geometric data of the first slice 1506 of the current frame 1504 based on the entropy decoding state of the geometric data of the last slice 1502 of the previous frame 1500, and determine the entropy decoding state of the attribute data of the first slice 1506 of the current frame 1504 based on the entropy decoding state of the attribute data of the last slice 1502 of the previous frame 1500. In one or more examples, in order to determine the entropy decoding state of the second slice 1508 of the current frame 1504 based on the entropy decoding state of the first slice 1506 of the current frame 1504, the processing circuit of the point cloud encoder 200 or the point cloud decoder 300 may determine the entropy decoding state of the geometric data of the second slice 1508 of the current frame 1504 based on the entropy decoding state of the geometric data of the first slice 1506 of the current frame 1504, and determine the entropy decoding state of the attribute data of the second slice 1508 of the current frame 1504 based on the entropy decoding state of the attribute data of the first slice 1506 of the current frame 1504.
[0150] The processing circuitry of the point cloud encoder 200 can encode the first slice 1506 of the current frame 1504 based on the entropy decoding state of the first slice 1506, and the processing circuitry of the point cloud decoder 300 can decode the first slice 1506 (1604) of the current frame 1504 based on the entropy decoding state of the first slice 1506. For example, the processing circuitry of the point cloud decoder 300 can parse the information of the first slice 1506 from the bitstream and perform entropy decoding on the information of the first slice 1506 based on the entropy decoding state of the first slice 1506 (e.g., as part of reconstructing the point cloud). The processing circuitry of the point cloud encoder 200 can entropy encode the information of the first slice 1506 based on the entropy decoding state of the first slice 1506 and signal the entropy-encoded information of the first slice 1506 in the bitstream (e.g., as part of encoding the point cloud).
[0151] Figure 10 This is a conceptual diagram of an example ranging system 1000 that can be used with one or more techniques disclosed herein. Figure 10 In one example, the ranging system 1000 includes an illuminator 1002 and a sensor 1004. The illuminator 1002 can emit light 1006. In some examples, the illuminator 1002 can emit light 1006 as one or more laser beams. Light 1006 can be one or more wavelengths, such as infrared wavelengths or visible light wavelengths. In other examples, light 1006 is not a coherent laser. When light 1006 encounters an object (such as object 1008), light 1006 produces a return light 1010. The return light 1010 can include backscattered light and / or reflected light. The return light 1010 can be guided by a lens 1011 to create an image 1012 of object 1008 on the sensor 1004. The sensor 1004 generates a signal 1014 based on the image 1012. The image 1012 can include a set of points (e.g., such as...). Figure 10 (Represented by the points in image 1012).
[0152] In some examples, illuminator 1002 and sensor 1004 may be mounted on a rotating structure, allowing illuminator 1002 and sensor 1004 to capture a 360-degree view of the environment (e.g., a rotating LIDAR sensor). In other examples, ranging system 1000 may include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) that enable illuminator 1002 and sensor 1004 to detect the range of objects within a specific area (e.g., a maximum of 360 degrees). Although Figure 10 The example shows only a single illuminator 1002 and sensor 1004, but the ranging system 1000 may include multiple sets of illuminators and sensors.
[0153] In some examples, illuminator 1002 generates a structured light pattern. In these examples, ranging system 1000 may include multiple sensors 1004 on which corresponding images of the structured light pattern are formed. Ranging system 1000 can use the differences between the images of the structured light pattern to determine the distance to object 1008 from which the structured light pattern is backscattered. When object 1008 is relatively close to sensor 1004 (e.g., 0.2 meters to 2 meters), the structured light-based ranging system can have high accuracy (e.g., sub-millimeter accuracy). This high accuracy can be useful in facial recognition applications (such as unlocking mobile devices (e.g., mobile phones, tablets, etc.)) and for security applications.
[0154] In some examples, the ranging system 1000 is a time-of-flight (ToF) based system. In some examples where the ranging system 1000 is a ToF based system, an illuminator 1002 generates a light pulse. In other words, the illuminator 1002 can modulate the amplitude of the emitted light 1006. In this example, the sensor 1004 detects the return light 1010 from the light pulse 1006 generated by the illuminator 1002. The ranging system 1000 can then determine the distance to the object 1008 from which the light 1006 is backscattered, based on the delay between the time the light 1006 is emitted and the time it is detected, and the known speed of light in air. In some examples, the illuminator 1002 can modulate the phase of the emitted light 1006 instead of (or in addition to) modulating the amplitude of the emitted light 1006. In such an example, sensor 1004 can detect the phase of the return light 1010 from object 1008 and use the speed of light and the time difference between when illuminator 1002 generates light 1006 at a specific phase and when sensor 1004 detects the return light 1010 at a specific phase to determine the distance to a point on object 1008.
[0155] In other examples, point clouds can be generated without using illuminator 1002. For example, in some examples, sensor 1004 of ranging system 1000 may include two or more optical cameras. In this case, ranging system 1000 can use the optical cameras to capture stereo images of the environment, including object 1008. Ranging system 1000 may include point cloud generator 1016, which can calculate the differences between locations in the stereo image. Ranging system 1000 can then use the differences to determine the distance to the location displayed in the stereo image. Based on these distances, point cloud generator 1016 can generate a point cloud.
[0156] Sensor 1004 can also detect other properties of object 1008, such as color and reflectivity information. Figure 10 In the example, point cloud generator 1016 can generate a point cloud based on signal 1014 generated by sensor 1004. Ranging system 1000 and / or point cloud generator 1016 can form part of data source 104 (FIG. 1). Therefore, point clouds generated by ranging system 1000 can be encoded and / or decoded according to any techniques of this disclosure.
[0157] Figure 11 This is a conceptual diagram illustrating an exemplary vehicle-based scenario in which one or more technologies of this disclosure can be used. Figure 11 In the example, vehicle 1100 includes a ranging system 1102. (See reference...) Figure 11 The distance measuring system 1102 is implemented in the manner described. Although in Figure 11The example is not shown, but vehicle 1100 may also include data sources (such as data source 104 (Figure 1)) and G-PCC encoders (such as point cloud encoder 200 (Figure 1)). Figure 11 In the example, ranging system 1102 emits a laser beam 1104, which reflects off a pedestrian 1106 or other object on the road. The data source for vehicle 1100 can generate a point cloud based on the signal generated by ranging system 1102. A G-PCC encoder for vehicle 1100 can encode the point cloud to generate a bitstream 1108 (such as a geometric bitstream 203 (Figure 2) and an attribute bitstream 205 (Figure 2)). As described in this disclosure, inter-frame prediction and residual prediction can reduce the size of the geometric bitstream. The number of bits included in bitstream 1108 can be significantly less than the number of bits in the uncoded point cloud obtained by the G-PCC encoder.
[0158] The output interface of vehicle 1100 (e.g., output interface 108 (Figure 1)) can send bitstream 1108 to one or more other devices. The number of bits included in bitstream 1108 can be significantly less than the number of uncoded point clouds obtained by the G-PCC encoder. Therefore, vehicle 1100 can send bitstream 1108 to other devices much faster than uncoded point cloud data. Furthermore, bitstream 1108 may require less data storage capacity on the device.
[0159] exist Figure 11 In the example, vehicle 1100 can send bitstream 1108 to another vehicle 1110. Vehicle 1110 may include a G-PCC decoder, such as point cloud decoder 300. Figure 1 The G-PCC decoder of vehicle 1110 can decode bitstream 1108 to reconstruct a point cloud. Vehicle 1110 can use the reconstructed point cloud for various purposes. For example, vehicle 1110 can determine, based on the reconstructed point cloud, that pedestrian 1106 is on the road ahead of vehicle 1100 and thus begin to decelerate, for example, even before the driver of vehicle 1110 becomes aware that pedestrian 1106 is on the road. Therefore, in some examples, vehicle 1110 can perform autonomous navigation operations based on the reconstructed point cloud.
[0160] Furthermore, vehicle 1100 can also send bitstream 1108 to server system 1112. Server system 1112 can use bitstream 1108 for various purposes. For example, server system 1112 can store bitstream 1108 for subsequent reconstruction of the point cloud. In this example, server system 1112 can use the point cloud along with other data (e.g., vehicle telemetry data generated by vehicle 1100) to train an autonomous driving system. In other examples, server system 1112 can store bitstream 1108 for subsequent reconstruction for forensic collision investigations.
[0161] Figure 12 This is a conceptual diagram illustrating an example extended reality system in which one or more technologies of this disclosure can be used. Extended reality (XR) is a term used to encompass a range of technologies including augmented reality (AR), mixed reality (MR), and virtual reality (VR). Figure 12 In the example, user 1200 is located at first orientation 1202. User 1200 wears an XR headset 1204. Alternatively, user 1200 may use a mobile device (e.g., a mobile phone, tablet, etc.). The XR headset 1204 includes a depth sensor (such as a ranging system) that can detect the position of a point on object 1206 at orientation 1202. The data source for the XR headset 1204 can use signals generated by the depth sensor to generate a point cloud representation of object 1206 at orientation 1202. The XR headset 1204 may include a G-PCC encoder (e.g., Figure 1 The point cloud encoder 200 is configured to encode the point cloud to generate a bitstream 1208. As described in this disclosure, inter-frame prediction and residual prediction can reduce the size of the bitstream 1208.
[0162] XR headset 1204 can send a bitstream 1208 (e.g., via a network such as the Internet) to XR headset 1210 worn by user 1212 at a second location 1214. XR headset 1210 can decode bitstream 1208 to reconstruct a point cloud. XR headset 1210 can use the point cloud to generate an XR visualization (e.g., AR, MR, VR visualization) representing object 1206 at location 1202. Thus, in some examples, such as when XR headset 1210 generates a VR visualization, user 1212 can have a 3D immersive experience at location 1202. In some examples, XR headset 1210 can determine the location of a virtual object based on the reconstructed point cloud. For example, XR headset 1210 can determine, based on the reconstructed point cloud, that the environment (e.g., location 1202) includes a flat surface, and then determine that a virtual object (e.g., a cartoon character) will be positioned on that flat surface. The XR headset 1210 can generate XR visualizations in which virtual objects are located in defined positions. For example, the XR headset 1210 can display a cartoon character sitting on a flat surface.
[0163] Figure 13 This is a conceptual diagram illustrating an example mobile device system in which one or more technologies of this disclosure may be used. Figure 13 In the example, mobile device 1300 (e.g., a wireless communication device) (such as a mobile phone or tablet computer) includes a ranging system (such as a LiDAR system) for detecting the location of points on object 1302 in the environment of mobile device 1300. The data source of mobile device 1300 can use signals generated by a depth detection sensor to generate a point cloud representation of object 1302. Mobile device 1300 may include a G-PCC encoder (e.g., Figure 1 A point cloud encoder 200 is configured to encode point clouds to generate a bitstream 1304. Figure 13In the example, mobile device 1300 can send a bitstream to remote device 1306, such as a server system or other mobile device. As described in this disclosure, inter-frame prediction and residual prediction can reduce the size of bitstream 1304. Remote device 1306 can decode bitstream 1304 to reconstruct a point cloud. Remote device 1306 can use the point cloud for various purposes. For example, remote device 1306 can use the point cloud to generate a map of the environment of mobile device 1300. For example, remote device 1306 can generate a map of the interior of a building based on the reconstructed point cloud. In another example, remote device 1306 can generate an image (e.g., computer graphics) based on the point cloud. For example, remote device 1306 can use the points of the point cloud as vertices of polygons and use the color attributes of the points as the basis for coloring the polygons. In some examples, remote device 1306 can use the reconstructed point cloud for facial recognition or other security applications.
[0164] Examples in various aspects of this disclosure may be used individually or in any combination.
[0165] Clause 1. A method for encoding or decoding point cloud data, the method comprising: signaling or parsing a slice-level flag of a first slice of a current frame of the point cloud data in decoding order, the slice-level flag indicating an entropy decoding state of the first slice of the current frame based on an entropy decoding state of a last slice of a previous frame of the point cloud data in decoding order; determining the entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of the previous frame if the flag indicates that the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame; and encoding or decoding the first slice of the current frame based on the entropy decoding state of the first slice.
[0166] Clause 2. The method according to Clause 1, wherein determining the entropy decoding state comprises: copying the entropy decoding state of the last slice of the previous frame as the entropy decoding state of the first slice of the current frame.
[0167] Clause 3. The method according to any one of Clauses 1 and 2 further includes: determining that dependent frame entropy decoding is enabled for one or more frames, wherein signaling or parsing the flag includes: signaling or parsing the flag when dependent frame entropy decoding is enabled for one or more frames.
[0168] Clause 4. The method according to Clause 3, wherein the flag includes a first flag, wherein determining that dependent frame entropy decoding is enabled includes: resolving a second flag from a parameter set of the one or more frames, the second flag indicating that dependent frame entropy decoding is enabled for the one or more frames.
[0169] Clause 5. The method according to any one of Clauses 1-4, wherein the flag is a first flag, the method further comprising: signaling or parsing a second slice-level flag of a second slice of the current frame in decoding order, the second slice-level flag indicating an entropy decoding state of the second slice of the current frame determined based on the entropy decoding state of the first slice of the current frame.
[0170] Clause 6. The method according to any one of Clauses 1-5, wherein determining the entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of the previous frame comprises: determining the entropy decoding state of the geometric data of the first slice of the current frame based on the entropy decoding state of the geometric data of the last slice of the previous frame; and determining the entropy decoding state of the attribute data of the first slice of the current frame based on the entropy decoding state of the attribute data of the last slice of the previous frame.
[0171] Clause 7. The method according to any one of Clauses 1-6 further includes: signaling or parsing frame identification information for the previous frame.
[0172] Clause 8. The method according to any one of Clauses 1-7 further comprises: parsing information of the first slice from the bitstream, wherein encoding or decoding the first slice comprises: entropy decoding the information of the first slice based on the entropy decoding state of the first slice.
[0173] Clause 9. The method according to any one of Clauses 1-7, wherein encoding or decoding the first slice comprises: entropy encoding information of the first slice based on the entropy decoding state of the first slice, the method further comprising: signaling the entropy-encoded information of the first slice in a bitstream.
[0174] Clause 10. An apparatus for encoding or decoding point cloud data, the apparatus comprising: one or more memories configured to store the point cloud data; and processing circuitry coupled to the one or more memories, wherein the processing circuitry is configured to: signal or parse a slice-level flag of a first slice of a current frame of the point cloud data in decoding order, the slice-level flag indicating an entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of a previous frame of the point cloud data in decoding order; determine the entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of the previous frame if the flag indicates that the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame; and encode or decode the first slice of the current frame based on the entropy decoding state of the first slice.
[0175] Clause 11. The apparatus according to Clause 10, wherein, in order to determine the entropy decoding state, the processing circuitry is configured to: copy the entropy decoding state of the last slice of the previous frame as the entropy decoding state of the first slice of the current frame.
[0176] Clause 12. The device according to any one of Clauses 10 and 11, wherein the processing circuitry is configured to: determine that dependent frame entropy decoding is enabled for one or more frames, wherein, in order to signal or parse the flag, the processing circuitry is configured to: signal or parse the flag when dependent frame entropy decoding is enabled for one or more frames.
[0177] Clause 13. The apparatus according to Clause 12, wherein the flag includes a first flag, wherein, in order to determine that dependent frame entropy decoding is enabled, the processing circuitry is configured to: parse a second flag from a parameter set of the one or more frames, the second flag indicating that dependent frame entropy decoding is enabled for the one or more frames.
[0178] Clause 14. The apparatus according to any one of Clauses 10-13, wherein the flag is a first flag, and wherein the processing circuitry is configured to: signal or parse a second slice-level flag of a second slice of the current frame in decoding order, the second slice-level flag indicating an entropy decoding state of the second slice of the current frame determined based on the entropy decoding state of the first slice of the current frame.
[0179] Clause 15. The apparatus according to any one of Clauses 10-14, wherein, in order to determine the entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of the previous frame, the processing circuitry is configured to: determine the entropy decoding state of the geometric data of the first slice of the current frame based on the entropy decoding state of the geometric data of the last slice of the previous frame; and determine the entropy decoding state of the attribute data of the first slice of the current frame based on the entropy decoding state of the attribute data of the last slice of the previous frame.
[0180] Clause 16. The device according to any one of Clauses 10-15, wherein the processing circuitry is configured to signal or parse frame identification information for the previous frame.
[0181] Clause 17. The apparatus according to any one of Clauses 10-16, wherein the processing circuitry is configured to: parse information of the first slice from a bitstream, wherein, in order to encode or decode the first slice, the processing circuitry is configured to: entropy decode the information of the first slice based on the entropy decoding state of the first slice.
[0182] Clause 18. The apparatus according to any one of Clauses 10-16, wherein, in order to encode or decode the first slice, the processing circuitry is configured to entropy encode information of the first slice based on the entropy decoding state of the first slice, and wherein the processing circuitry is configured to signal the entropy-encoded information of the first slice in a bitstream.
[0183] Clause 19. A computer-readable storage medium having instructions thereon, which, when executed, cause one or more processors to: signal or parse a slice-level flag of a first slice of a current frame of point cloud data in decoding order, the slice-level flag indicating that the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of a previous frame of the point cloud data in decoding order; if the flag indicates that the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame, determine the entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of the previous frame; and encode or decode the first slice of the current frame based on the entropy decoding state of the first slice.
[0184] Clause 20. The computer-readable storage medium according to Clause 19, wherein the instructions causing the one or more processors to determine the entropy decoding state include instructions causing the one or more processors to: copy the entropy decoding state of the last slice of the previous frame as the entropy decoding state of the first slice of the current frame.
[0185] It should be recognized that, depending on the example, certain actions or events of any technique described herein may be performed in a different order, and may be added, combined, or omitted entirely (e.g., not all described actions or events are necessary for the practice of the technique). Furthermore, in some examples, actions or events may be performed concurrently, for example through multithreading, interrupt handling, or multiple processors, rather than sequentially.
[0186] In one or more examples, the described functionality may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, these functions may be stored or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. A computer-readable medium may include: a computer-readable storage medium, which corresponds to a tangible medium such as a data storage medium; or a communication medium, including, for example, any medium that facilitates the transfer of a computer program from one place to another according to a communication protocol. In this way, a computer-readable medium may generally correspond to: (1) a non-transitory tangible computer-readable storage medium, or (2) a communication medium such as a signal or carrier wave. A data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures to implement the techniques described in this disclosure. A computer program product may include a computer-readable medium. The term “computer-readable medium” includes examples in which a storage medium is present or in which a distributed storage medium is present.
[0187] By way of example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disc storage, disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Furthermore, any connection is appropriately referred to as a computer-readable medium. For example, coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium if instructions are 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, radio, and microwave. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but rather refer to non-transient tangible storage media. Disks and optical discs as used herein include compact optical discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, wherein disks typically reproduce data magnetically, while optical discs typically reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0188] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the terms "processor" and "processing circuitry" as used herein can refer to any of the foregoing structures or any other structures suitable for implementing the techniques described herein. Furthermore, in some aspects, the functionality described herein can be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into combined codecs. Similarly, the techniques can be fully implemented in one or more circuit or logic elements.
[0189] The techniques disclosed herein can be implemented in a variety of devices or apparatuses, including wireless handheld devices, integrated circuits (ICs), or a set of ICs (e.g., chipsets). Various components, modules, or units are described in this disclosure to emphasize functional aspects of a device configured to perform the disclosed techniques, but they do not necessarily need to be implemented by different hardware units. Rather, as described above, the various units can be combined in a codec hardware unit or provided by a collection of interoperable hardware units including one or more processors as described above, along with suitable software and / or firmware.
[0190] Various examples have been described. These and other examples are within the scope of the appended claims.
Claims
1. A method for encoding or decoding point cloud data, the method comprising: The slice-level flag of the first slice of the current frame of the point cloud data in decoding order is signaled or parsed, and the slice-level flag indicates the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame of the point cloud data in decoding order. When the flag indicates that the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame, the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame. as well as The first slice of the current frame is encoded or decoded based on the entropy decoding state of the first slice.
2. The method according to claim 1, wherein, Determining the entropy decoding state includes: copying the entropy decoding state of the last slice of the previous frame as the entropy decoding state of the first slice of the current frame.
3. The method according to claim 1, further comprising: Determine if frame entropy-dependent decoding is enabled for one or more frames. Notifying or resolving the flag by signaling includes: notifying or resolving the flag by signaling when frame entropy decoding is enabled for one or more frames.
4. The method according to claim 3, wherein, The flag includes a first flag, wherein determining that dependent frame entropy decoding is enabled includes: parsing a second flag from a parameter set of the one or more frames, the second flag indicating that dependent frame entropy decoding is enabled for the one or more frames.
5. The method according to claim 1, wherein, The mark is a first mark, and the method further includes: The second slice-level flag of the second slice of the current frame is signaled or parsed according to the decoding order. The second slice-level flag indicates that the entropy decoding state of the second slice of the current frame is determined based on the entropy decoding state of the first slice of the current frame.
6. The method according to claim 1, wherein, Determining the entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of the previous frame includes: The entropy decoding state of the geometric data of the first slice in the current frame is determined based on the entropy decoding state of the geometric data of the last slice in the previous frame; and The entropy decoding state of the attribute data of the first slice in the current frame is determined based on the entropy decoding state of the attribute data of the last slice in the previous frame.
7. The method according to claim 1, further comprising: Use signals to notify or parse the frame identification information for the previous frame.
8. The method according to claim 1, further comprising: Parse the information from the first slice of the bitstream. Encoding or decoding the first slice includes entropy decoding of the information of the first slice based on the entropy decoding state of the first slice.
9. The method according to claim 1, wherein, Encoding or decoding the first slice includes: entropy encoding the information of the first slice based on the entropy decoding state of the first slice, the method further including: The entropy-encoded information of the first slice is communicated via a signal in the bitstream.
10. An apparatus for encoding or decoding point cloud data, the apparatus comprising: One or more memories configured to store the point cloud data; as well as A processing circuit coupled to the one or more memories, wherein the processing circuit is configured to: The slice-level flag of the first slice of the current frame of the point cloud data in decoding order is signaled or parsed, and the slice-level flag indicates the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame of the point cloud data in decoding order. When the flag indicates that the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame, the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame; and The first slice of the current frame is encoded or decoded based on the entropy decoding state of the first slice.
11. The device according to claim 10, wherein, In order to determine the entropy decoding state, the processing circuit is configured to: copy the entropy decoding state of the last slice of the previous frame as the entropy decoding state of the first slice of the current frame.
12. The device according to claim 10, wherein, The processing circuit is configured as follows: Determine if frame entropy-dependent decoding is enabled for one or more frames. In order to signal or parse the flag, the processing circuitry is configured to signal or parse the flag when frame entropy decoding is enabled for one or more frames.
13. The device according to claim 12, wherein, The flag includes a first flag, wherein, in order to determine that dependent frame entropy decoding is enabled, the processing circuitry is configured to: parse a second flag from the parameter set of the one or more frames, the second flag indicating that dependent frame entropy decoding is enabled for the one or more frames.
14. The device according to claim 10, wherein, The flag is a first flag, and the processing circuit is configured to: The second slice-level flag of the second slice of the current frame is signaled or parsed according to the decoding order. The second slice-level flag indicates that the entropy decoding state of the second slice of the current frame is determined based on the entropy decoding state of the first slice of the current frame.
15. The device according to claim 10, wherein, In order to determine the entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of the previous frame, the processing circuit is configured to: The entropy decoding state of the geometric data of the first slice in the current frame is determined based on the entropy decoding state of the geometric data of the last slice in the previous frame. as well as The entropy decoding state of the attribute data of the first slice in the current frame is determined based on the entropy decoding state of the attribute data of the last slice in the previous frame.
16. The device according to claim 10, wherein, The processing circuit is configured as follows: Use signals to notify or parse the frame identification information for the previous frame.
17. The device according to claim 10, wherein, The processing circuit is configured as follows: Parse the information from the first slice of the bitstream. In order to encode or decode the first slice, the processing circuit is configured to entropy decode the information of the first slice based on the entropy decoding state of the first slice.
18. The apparatus according to claim 10, wherein, In order to encode or decode the first slice, the processing circuit is configured to: entropy encode the information of the first slice based on the entropy decoding state of the first slice, and wherein the processing circuit is configured to: The entropy-encoded information of the first slice is communicated via a signal in the bitstream.
19. A computer-readable storage medium having instructions stored thereon, said instructions, when executed, causing one or more processors to perform the following operations: The slice-level flag of the first slice of the current frame of the point cloud data in decoding order is signaled or parsed. The slice-level flag indicates the entropy decoding state of the first slice of the current frame based on the entropy decoding state of the last slice of the previous frame of the point cloud data in decoding order. When the flag indicates that the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame, the entropy decoding state of the first slice of the current frame is determined based on the entropy decoding state of the last slice of the previous frame. as well as The first slice of the current frame is encoded or decoded based on the entropy decoding state of the first slice.
20. The computer-readable storage medium according to claim 19, wherein, The instructions that cause the one or more processors to determine the entropy decoding state include instructions that cause the one or more processors to perform the following operation: copy the entropy decoding state of the last slice of the previous frame as the entropy decoding state of the first slice of the current frame.