Code stream encoding and decoding of geometric point cloud coding
By introducing code stream decoding methods and systems in geometric point cloud encoding, decoding code streams associated with geometric point cloud encoding to determine extended data, the problem that existing GPCC cannot be applied to various inputs is solved, and encoding efficiency and flexibility are improved sex.
Patent Information
- Application Number
- CN202380050615.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-07-01
- Filing Date
- 2023-06-29
- Publication Date
- 2025-02-14
AI Technical Summary
The existing geometric point cloud encoding (GPCC) cannot be effectively applied to various point cloud encoding inputs, resulting in inefficient encoding.
A code stream decoding method and system are proposed to determine extended data by decoding a code stream associated with geometric point cloud encoding, the code stream including a syntax structure with syntax elements associated with an extended flag.
It improves the efficiency of geometric point cloud encoding, can be better applied to various point cloud encoding inputs, and enhances encoding flexibility and performance.
Smart Images

Figure CN119452663A_ABST
Abstract
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority to U.S. Provisional Application No. 63 / 367,576, filed on July 1, 2022, and entitled “Extended Improvements in Geometric Point Cloud Coding,” the entire contents of which are incorporated herein by reference. Technical Field
[0002] The present disclosure generally relates to computer-implemented methods and systems for code stream processing, and more particularly, to extended improvements in geometric point cloud coding. Background Art
[0003] Geometry point cloud coding (GPCC) is widely used in VR / AR for entertainment and industrial applications, such as high definition (HD) maps for LiDAR scan compression and navigation for cars or robots. However, the existing GPCC cannot be well adapted to various point cloud coding (PCC) inputs. Therefore, improvements in geometry point cloud coding are needed. Summary of the invention
[0004] The purpose of the present disclosure is to propose a code stream encoding / decoding method and system to improve the efficiency of geometric point cloud encoding.
[0005] In a first aspect of the present disclosure, a codestream decoding method includes: decoding a codestream associated with geometric point cloud coding (GPCC) to determine extended data, the codestream including a syntax structure having syntax elements associated with an extension flag.
[0006] In a second aspect of the present disclosure, a code stream decoding system includes: a processor; and a memory coupled to the processing unit, wherein the processor is used to execute program instructions stored in the memory to perform the above-mentioned code stream decoding method.
[0007] In a third aspect of the present disclosure, a non-transitory computer-readable medium stores program code thereon, and the program code can be executed by a processor to perform the above-mentioned code stream decoding method.
[0008] In a fourth aspect of the present disclosure, a codestream encoding method includes: encoding a codestream associated with geometric point cloud coding (GPCC) to determine extended data, the codestream including a syntax structure having syntax elements associated with an extension flag.
[0009] In a fifth aspect of the present disclosure, a code stream encoding system includes: a processor; and a memory coupled to the processing unit, wherein the processor is used to execute program instructions stored in the memory to perform the above-mentioned code stream encoding method.
[0010] In a sixth aspect of the present disclosure, a non-transitory computer-readable medium stores program code thereon, and the program code can be executed by a processor to perform the above-mentioned code stream encoding method. BRIEF DESCRIPTION OF THE DRAWINGS
[0011] In order to more clearly illustrate the embodiments of the present disclosure or related technologies, the following briefly introduces the drawings in the embodiments. Obviously, the drawings are only some embodiments of the present disclosure, and ordinary technicians in this field can obtain other drawings based on these drawings without paying any price.
[0012] Figure 1 It is a schematic diagram showing an encoding module and a decoding module of a geometric point cloud coding (GPCC) that can be applied to an embodiment of the present disclosure.
[0013] Figure 2A and Figure 2B is a schematic diagram showing an octree structure of a GPCC applicable to an embodiment of the present disclosure and a corresponding digital representation.
[0014] Figure 3 is a schematic diagram showing the structure of a cube applicable to an embodiment of the present disclosure and the relationship with adjacent cubes.
[0015] FIG. 4A to FIG. 4D is a schematic diagram showing a syntax structure associated with functions color_residual_coding(), coded_level_coding(isComponentNoneZero), attribute_data_reflectance(), and zero_run_length_code(useGolomb), which can be applied to an embodiment of the present disclosure.
[0016] Figure 5 is a flowchart illustrating a code stream decoding method according to an embodiment of the present disclosure.
[0017] Figure 6 is a flowchart illustrating a code stream encoding method according to an embodiment of the present disclosure.
[0018] Fig. 7A and Figure 7B is a schematic diagram showing a syntax structure associated with a sequence header and an attribute header that can be applied to an embodiment of the present disclosure.
[0019] Fig. 8A is a schematic diagram showing a syntax structure associated with a sequence header that can be applied to an embodiment of the present disclosure.
[0020] Figure 8B1 and Figure 8B2is a schematic diagram showing two parts of a syntax structure associated with an attribute header that can be applied to an embodiment of the present disclosure.
[0021] Figure 8C is a schematic diagram showing an alternative syntax structure associated with a sequence header that may be applied to embodiments of the present disclosure.
[0022] Figure 8D1 and Figure 8D2 is a schematic diagram showing two parts of an alternative syntax structure associated with an attribute header that can be applied to embodiments of the present disclosure.
[0023] Fig.9A and Fig. 9B is a schematic diagram showing a syntax structure associated with a general attribute data code stream that can be applied to an embodiment of the present disclosure.
[0024] Fig. 10A and Fig. 10B is a schematic diagram showing a syntax structure associated with an extension in a sequence header that can be applied to an embodiment of the present disclosure.
[0025] Fig.11A and Fig. 11B is a schematic diagram showing a syntax structure associated with an extension in a geometry header that can be applied to an embodiment of the present disclosure.
[0026] Fig. 12A and Fig. 12B is a schematic diagram showing a syntax structure associated with an extension in an attribute header that can be applied to an embodiment of the present disclosure.
[0027] Fig.13A and Fig. 13B is a schematic diagram showing a syntax structure associated with an extension in a geometry slice header that can be applied to an embodiment of the present disclosure.
[0028] Fig.14A and Fig. 14B is a schematic diagram showing a syntax structure associated with an extension in an attribute slice header that can be applied to an embodiment of the present disclosure.
[0029] Fig.15A and Fig. 15B is a schematic diagram showing a syntax structure associated with an extension in a general attribute data code stream that can be applied to an embodiment of the present disclosure.
[0030] Fig.16 is a schematic block diagram illustrating an example of a computing device according to an embodiment of the present disclosure. DETAILED DESCRIPTION
[0031] The technical content, structural features, objectives, and effects of the embodiments of the present disclosure are described in detail below in conjunction with the accompanying drawings. Specifically, the terms in the embodiments of the present disclosure are only for the purpose of describing specific embodiments, and are not intended to limit the present disclosure.
[0032] Geometric point cloud coding (GPCC) is widely used in VR / AR for entertainment and industrial applications, such as LiDAR scan compression and high-definition (HD) maps for navigation for cars or robots. For example, the Moving Picture Experts Group (MPEG) released the first version of the GPCC standard, as shown in "MPEG-I (Coded Representation of Immersive Media) - Part 9: Geometry-based Point Cloud Compression, MPEG w19617_d6", and the Audio Video Coding Standard (AVS) also developed a GPCC standard (AVS GPCC), as shown in "GPCC WD7.0, N3331". In order to effectively compress point cloud data, the geometric information of the point cloud is first compressed, and then the corresponding attribute information, including color or reflectivity, is compressed based on the geometric information.
[0033] For example, Figure 1 FIG. 1 shows a GPCC encoder 101 and a GPCC decoder 102 that can be applied to the present disclosure. Figure 1 As shown, in the GPCC encoder 101 and the GPCC decoder 102, the point cloud position is first encoded, and the attribute encoding depends on the decoded geometry. In the GPCC encoder 101 and the GPCC decoder 102, some modules such as "analysis surface approximation", "region adaptive hierarchical transform (RAHT)", and "synthetic surface approximation" modules are options commonly used for static point cloud (category 1) data; some modules such as "generate LOD", "promote (update / promote transformation)" and "inverse promote" modules are options commonly used for dynamically acquired point cloud (category 3) data; all other modules are commonly used for data between category 1 and category 3.
[0034] For example, Figure 1 As shown, in the GPCC encoder 101 and the GPCC decoder 102, there are two poles (0,0,0), (2 d ,2 d ,2 d) defines a cube axis-aligned bounding box, where d is the maximum size of a given point cloud along the x, y or z direction. The points of the point cloud will be denoted as points in the following. All points are included in the defined cube. A cube is divided into eight child cubes, which creates an octree structure that allows a parent cube to have eight child cubes. A given cube has 7 sibling cubes, which are cubes of the same size and share at least one of the same faces / edges / points with the given cube. The volume of a cube is 1 / 8 of the volume of its parent cube. A cube can contain multiple points, and the number of points in a cube depends on the size and position of the cube. The size of the minimum cube for a given point cloud is predefined. As an example, a minimum cube can be defined. For a given point, the parent cube of the given point is defined as the minimum size cube that contains the given point. The sibling points of a given point are defined as points that have the same parent cube as the given point.
[0035] For example, Figure 2A and Figure 2B An octree structure 201 and a corresponding digital representation 202 of a GPCC applicable to the present disclosure are shown. An octree structure is a recursive data structure that is typically used to describe a three-dimensional space, in which each internal cube has exactly eight sub-cubes. The space is recursively subdivided into eight octants until the resolution of the sub-cube is equal to the size of a point (i.e., the smallest element that is not further subdivided). To represent a cube, an 8-bit binary code that follows a space-filling curve pattern (Hilbert, Morton) is used, and each sub-cube is assigned a value, such as "1" (i.e., represented by a first symbol "1") or "0" (i.e., represented by a second symbol "0") to indicate that the space in the sub-cube has any points associated with the sub-cube, or to indicate that the sub-cube is empty. Only occupied sub-cubes (i.e., assigned to "1") are further subdivided. The process of subdividing the parent cube terminates when the size of the sub-cube is equal to the size of the indivisible element (i.e., the spatial resolution of the point cloud) or simply the size of the point.
[0036] Figure 3 The structure of the cube and the relationship with the adjacent cubes applicable to the present disclosure are shown. Depending on the position of the current cube, a cube can be as follows Figure 3 The current cube can also have some adjacent cubes that share lines or points with the current cube. Similarly, the parent cube of the current cube also has at most six adjacent cubes of the same size as the parent cube that share a face with the parent cube, for example Figure 3The parent cube of the current cube also has at most twelve adjacent cubes of the same size as the parent cube that share edges. The parent cube of the current cube also has at most eight adjacent cubes of the same size as the parent cube that share points with the parent cube, for example, cubes CC0, CC1, CC2, CC3, CC4, CC5, CC6 and CC7 share the center point of the parent cube.
[0037] The octree-based geometric information can be encoded using context-based arithmetic coding. The point cloud may also have some corresponding attribute information that needs to be compressed, including color, reflectivity, etc. Because adjacent points in a point cloud may have strong correlations, prediction-based coding methods have been developed and used to synthesize and encode point cloud attributes. More specifically, a prediction is formed from adjacent encoded attributes. Then, the difference between the current attribute and the prediction is encoded.
[0038] In this disclosure, coding is assumed to refer to encoding and decoding methods and systems.
[0039] Attribute encoding in AVSGPCC
[0040] After encoding the geometry information, the point cloud cube can be converted into a one-dimensional array using Morton or Hilbert codes / orders. Each position in the cube has a corresponding Morton or Hilbert code, but some positions may not have any corresponding point cloud attributes. In other words, some positions may be empty. The attribute encoding will follow a predefined Morton or Hilbert order. A predictor can be generated from a point previously encoded in Morton or Hilbert order. The attribute difference between the current point and its predictor is encoded into the codestream.
[0041] In order to reduce memory usage, some predefined values have been specified to limit the number of neighboring points that can be used to generate predictions. For example, only M data points out of the previous N consecutive coded points can be used to encode the current attribute. In the AVS GPCC software, M and N can be set to fixed values of 3 and 128, respectively. If more than 128 points have been encoded before the current point, only 3 of the 128 previously encoded neighboring points can be used to form an attribute predictor according to a predefined order. If there are fewer than 128 coded points before the current point, all of these coded points will be used as candidates for establishing an attribute predictor. More specifically, K points before the current point are selected according to a predefined Morton or Hilbert order, for example, K=6. Then, the new Morton or Hilbert codes of these N points will be recalculated by adding a fixed shift (e.g., 1) to the coordinates (x, y, z) of these N data points. Assume that the new Morton or Hilbert code of the current position is X. A set of P points before the current position and a set of Q points after the current position according to the new Morton or Hilbert code order will be selected. Among these predefined K, P, and Q point sets, M points are selected, which have the M closest "distances" to the current point. As an example, the distance d is defined as follows, and other distance metrics can also be used.
[0042] d=|x1-x2|+|y1-y2|+|z1-z2| (1), Among them, (x1, y1, z1) and (x2, y2, z2) are the coordinates of the current point and the pre-selected point respectively.
[0043] For example, in AVS GPCC attribute coding, a full search method based on Hilbert code is adopted. For example, the search range is set to 128, and the number of previous points used to form the predictor is set to M. If more than 128 points have been encoded before the current point, only M points of the 128 previously encoded adjacent points can be used to form the attribute predictor according to the Hilbert order. If there are fewer than 128 encoded points before the current point, all of these encoded points will be used as candidates for forming the attribute predictor. Among a maximum of 128 previously encoded points, M points are selected that have the M closest "distances" to the current point. As an example, the distance d is defined as follows, and other distance metrics can also be used.
[0044] d=|x1-x2|+|y1-y2|+|z1-z2| (2), Where (x1, y1, z1) and (x2, y2, z2) are the coordinates of the current point and the pre-selected point respectively along the Hilbert order. Once the M nearest points are selected, the weighted average of the attributes of these M points forms the predictor to encode the attributes of the current point.
[0045] Points that are known to share the same face / line / point with the current point are close to the current point. Another technique is to consider these points as predictors.
[0046] The residual is defined as the difference in attribute value between the current point and its predictor. Depending on the application, point cloud coding (PCC) can be lossless or lossy. Therefore, the residual can be quantized using a predefined quantization process or not. In this disclosure, the unquantized or quantized residual is referred to as a level. The level can be a signed integer and will be encoded into the bitstream.
[0047] Color level coding
[0048] Each point has three color attributes from three color components. If the levels of the three color components are all zero, the point is called a zero-level point. Otherwise, if the point has a non-zero level of at least one color component, the point is called a non-zero-level point. In the current AVS-GPCC, the number of consecutive zero-level points is called the zero run length. The zero run length value and the level of the non-zero level point are encoded into the code stream. More specifically, on the encoding side, the zero run length value is set to zero before encoding the first point. Starting from the first point, along the predefined encoding order, the residuals between the three color predictors of the current point and their corresponding color attributes can be obtained. Then, the corresponding levels of the three components of the current point can also be obtained. If the current point is a zero-level point, the zero run length value will be increased by one, and then the process proceeds to the next point. If the current point is a non-zero level point, the zero run length value is encoded first, and then the three color levels of the non-zero level point are encoded. After the non-zero level point is level-encoded, the zero run length value is reset to zero, and the process proceeds to the next point until all points are completed. On the decoding side, the zero run length value is first decoded, and the three color levels corresponding to the number of zero run length points are set to zero. The level of the non-zero level point is then decoded, and then the next zero run length value is decoded. The process continues until all points are decoded. In addition, the AVS-GPCC syntax is provided below as an example, for illustrative purposes only, not for limiting the present disclosure.
[0049] Figure 4A Table 400A is shown, which shows the syntax structure associated with the function "color_residual_coding()", for example, in AVS-GPCC, where "ae(v)" refers to the descriptor associated with the syntax element of context adaptive arithmetic entropy coding. Figure 4AAs shown, the syntax element "color_first_comp_zero" equal to 0 indicates that the absolute coding level of the first component of the color is not zero, and the syntax element "color_first_comp_zero" equal to the specified value (for example, a non-zero value "1" or "true") indicates that the absolute coding level of the first component is zero; another syntax element "color_second_comp_zero" equal to 0 indicates that the absolute coding level of the second component of the color is not zero, and the syntax element "color_second_comp_zero" equal to the specified value (for example, a non-zero value "1" or "true") indicates that the absolute coding level of the second component is zero.
[0050] Figure 4B Table 400B is shown, which shows the syntax structure associated with the function "coded_level_coding(isComponentNoneZero)" used in the function "color_residual_coding()" of AVS-GPCC, where "ae(v)" refers to the descriptor associated with the syntax element of context adaptive arithmetic entropy coding. For example, Figure 4BAs shown, the syntax element "coded_level_equal_zero" is equal to 0, indicating that the absolute coding level of the component is not zero, and the syntax element "coded_level_equal_zero" is equal to a specified value (such as a non-zero value "1" or "true"), indicating that the absolute coding level of the component is zero; another syntax element "coded_level_gt1" is equal to 0, indicating that the coding level of the component is one, and the syntax element "coded_level_gt1" is equal to a specified value (such as a non-zero value "1" or "true"), indicating that the coding level of the component is greater than one; when the syntax element "coded_level_gt1" does not exist, it is inferred to be equal to 0; another syntax element "coded_level_minus2_parity" indicates the parity of the coding level minus two of the current component, wherein the syntax element "coded_level_minus2_parity" is equal to 0, indicating that the current coding level minus two is an even number, and the syntax element "coded_level_ "coded_level_minus2_parity" is equal to a specified value (such as a non-zero value "1" or "true"), indicating that the current coding level minus two is an odd number; when the syntax element "coded_level_minus2_parity" does not exist, it is inferred to be equal to 0; another syntax element "coded_level_minus2_div2_gt0" is equal to 0, indicating that the coding level minus two divided by two is zero, and the syntax element "coded_level_minus2_div2_gt0" is equal to a specified value (such as a non-zero value "1" or "true"), indicating that the coding level minus two divided by two is greater than zero; when the syntax element "coded_level_minus2_div2_gt0" does not exist, it is inferred to be equal to 0; another syntax element "coded_level_minu2_div2_minus1" specifies the value of the coding level minus two divided by two minus one; when the syntax element "coded_level_minu2_div2_minus1" does not exist, it is inferred to be equal to 0.
[0051] In addition, the syntax elements "coded_level" and "coded_level_sign" are the return values of the function "coded_level_coding(isComponentminusOne)", which represent the coded level (ie, absolute level) of the color residual or the absolute level of the color residual minus one and the sign of the non-zero color residual.
[0052] For example, the value of "coded_level" may be calculated as follows.
[0053] coded_level=(2*coded_level_sign-1)*(coded_level_equal_zero?0:1+(coded_level_gt1+coded_level_minus2_parity+(coded_level_minus2_div2_gt0+coded_level_minu2_div2_minus1)<<1)
[0054] like Figure 4A As shown, the residual levels color_component[idx] of the three color components with idx ranging from 0 to 2 are calculated by the function "color_residual_coding()".
[0055] For non-zero level points, at least one of the three components has a non-zero level. The values of the three components are encoded in the function "color_residual_coding()". Several 1-bit flags plus the remainder of the absolute level can be encoded to represent the levels of the three components. The absolute level or the absolute level minus one of the color residual can be encoded in the function "coded_level_coding()", referred to as the coded level in the rest of this disclosure.
[0056] For example, in one case, a first flag "color_first_comp_zero" is encoded to indicate whether the first component of the color is zero; if the first component of the color is zero, a second flag "color_second_comp_zero" is encoded to indicate whether the second component of the color is zero; if the second component of the color is zero, the absolute level minus one and the sign of the third component will be encoded according to the following encoding level method.
[0057] For example, in another case, a first flag is encoded to indicate whether the first component of the color is zero; if the first component of the color is zero, a second flag is encoded to indicate whether the second component of the color is zero; if the second component of the color is not zero, the absolute level minus one and the sign of the second component are encoded according to the following encoding level method, and the absolute level and sign of the third component are encoded according to the following encoding level method.
[0058] For example, in another case, a first flag is encoded to indicate whether the first component of the color is zero; if the first component of the color is not zero, the absolute level minus one and the sign of the first component will be encoded according to the following encoding level method, and the absolute level and sign of the second component and the third component will be encoded according to the following encoding level method, respectively.
[0059] In addition, a coding method for generating a coding level is designed as follows. A first flag "coded_level_equal_zero" is encoded to indicate whether the coding level is zero; if the coding level is the absolute level of a component minus one, that is, when the flag "isComponentNoneZero" is equal to true (such as not equal to zero or equal to one), the sign "coded_level_sign" of the level of the component is encoded. If the first flag indicates that the coding level is not zero, and if the coding level is the absolute level of a component itself, that is, when isComponentNoneZero is equal to false (such as equal to zero), the sign of the level of the component is encoded. A second flag "coded_level_gt1" is encoded to indicate whether the coding level is greater than one; if the coding level is greater than one, the parity of the coding level minus two is encoded, and a third flag "coded_level_minus2_div2_gt0" is encoded to indicate whether the coding level minus two divided by two is greater than zero; if the coding level minus two divided by two is greater than zero, the coding level minus two divided by two minus one is encoded.
[0060] Reflectivity level coding
[0061] For example, in AVS-GPCC, the zero run length of the reflectivity level and the non-zero reflectivity level are encoded into the bitstream. More specifically, on the encoding side, before encoding the first point, the zero run length counter is set to zero. Starting from the first point, along the predefined coding order, the residual between the predictor and the corresponding original point is obtained. Then the corresponding level is obtained. If the current level is zero, the zero run length will increase by one, and the process proceeds to the next point. If the level is not zero, the zero run length is encoded first, and the non-zero level is encoded after the zero run length encoding. After encoding the non-zero level, the zero run length counter is reset to zero, and the process proceeds to the next point. On the decoding side, the value of the zero run length is first decoded, and the level corresponding to the number of zero run length points is set to zero. Then the non-zero level is decoded and the value of the next zero run length is decoded. The process continues until all points are decoded.
[0062] For a non-zero level, if the current point is not a repeated point, the sign of the level is first encoded using the syntax element residual_sign. Then the syntax element "abs_level_minus1_parity" indicating the parity of the absolute level minus one is encoded. Another syntax element "abs_level_minus1_div2_gt0" is encoded to indicate whether the value of the absolute level minus one divided by two is greater than zero; if "abs_level_minus1_div2_gt0" is greater than zero, another syntax element "abs_level_minus1_div2_gt1" is encoded to indicate whether the value of the absolute level minus one divided by two is greater than one; if "abs_level_minus1_div2_gt1" is greater than 1, another syntax element "abs_level_minu1_div2_minus2" is encoded to indicate the value of the absolute level minus one divided by two minus two.
[0063] Figure 4C Table 400C is shown, which shows the syntax structure associated with the function "attribute_data_reflectance()" for reflectivity level coding in AVS-GPCC, where "ae(v)" refers to the descriptor associated with the context adaptive arithmetic entropy coded syntax element, and "ae(1)" refers to the descriptor associated with the one-bit adaptive arithmetic entropy coded syntax element. Figure 4CAs shown, the syntax element "abs_level_minus1_parity" indicates the parity of the absolute reflectivity level minus one, wherein the syntax element "abs_level_minus1_parity" equal to 0 indicates that the absolute reflectivity level minus one is an even number, and the syntax element "abs_level_minus1_parity" equal to a specified value (e.g., a non-zero value "1" or "true") indicates that the absolute reflectivity level minus one is an odd number; another syntax element "abs_level_minus1_div2_gt0" equal to 0 indicates that the value of the absolute reflectivity level minus one divided by two is zero, and the syntax element "abs_level_minus1_div2_gt0" equal to a specified value (e.g., a non-zero value "1" or "true") indicates that the value of the absolute reflectivity level minus one divided by two is greater than zero; when the syntax element "abs_level_minus1_div2_gt0" does not exist, it is inferred to be equal to 0; another syntax element "abs_level_minus1_div2_gt1" Being equal to 0 indicates that the value of the absolute reflectivity level minus one divided by two is equal to one, and the syntax element "abs_level_minus1_div2_gt1" being equal to a specified value (such as a non-zero value "1" or "true") indicates that the value of the absolute reflectivity level minus one divided by two is greater than one; when the syntax element "abs_level_minus1_div2_gt1" does not exist, it is inferred to be equal to 0; another syntax element "abs_level_minu1_div2_minus2" indicates the value of the absolute reflectivity level minus one divided by two minus two; when the syntax element "abs_level_minu1_div2_minus2" does not exist, it is inferred to be equal to 0; another syntax element "residual_sign" being equal to 0 indicates that the sign of the reflectivity level is negative, and the syntax element "residual_sign" being equal to a specified value (such as a non-zero value "1" or "true") indicates that the sign of the reflectivity level is positive; when the syntax element "residual_sign" does not exist, it is inferred to be equal to the specified value.
[0064] For example, the value of "reflectance" can be calculated as follows.
[0065] reflectance=(2*residual_sign-1)*(1+abs_level_minus1_parity+(abs_level_minus1_div2_gt0+abs_level_minus1_div2_gt1+abs_level_minu1_div2_minus2)<<1)
[0066] Zero run length encoding
[0067] For example, in AVS-GPCC, the value of the zero run length is encoded into the bitstream. Figure 4D Table 400D is shown, which shows the syntax structure associated with the function "zero_run_length_code(useGolomb)", encoding the syntax element "zero_run_length_level_equal_zero" to indicate whether the zero run length is equal to zero; if the syntax element "zero_run_length_level_equal_zero" is not zero, another syntax element "zero_run_length_level_equal_one" is encoded to indicate whether the zero run length is equal to one; if the syntax element "zero_run_length_level_equal_one" is not one, another syntax element "zero_run_length_level_equal_two" is encoded to indicate whether the zero run length is equal to two; if the syntax element "zero_run_length_level_equal_two" is not two, the syntax elements "zero_run_length_level_minus3_parity" and "zero_run_length_level_minus3_div2" are encoded to indicate the parity of the zero run length minus three and the value of the zero run length minus three divided by two, respectively.
[0068] For example, "zero_run_length_level_minus3_parity" indicates the parity of the zero run length level minus three, "zero_run_length_level_minus3_parity" equal to 0 indicates that the value of the zero run length level minus three is an even number, "zero_run_length_level_minus3_parity" equal to the specified value indicates that the value of the zero run length level minus three is an odd number; when "zero_run_length_level_minus3_parity" does not exist, it is inferred to be equal to 0; "zero_run_length_level_equal_zero" equal to 0 indicates that the zero run length level is not zero, and "zero_run_length_level_equal_zero" equal to the specified value. The value indicates that the zero run length level is zero; "zero_run_length_level_equal_one" equal to 0 indicates that the zero run length level is not 1, "zero_run_length_level_equal_one" equal to the specified value indicates that the zero run length level is 1; "zero_run_length_level_equal_two" equal to 0 indicates that the zero run length level is not 2, "zero_run_length_level_equal_two" equal to the specified value indicates that the zero run length level is 2; "zero_run_length_level_minus3_div2" represents the value of the zero run length level minus three divided by two; when "zero_run_length_level_minus3_div2" does not exist, it is inferred to be equal to 0.
[0069] For example, the value of "zero_run_length_level" may be calculated as follows.
[0070] zero_run_length_level=zero_run_length_level_equal_zero? 0:(zero_run_length_level_equal_one? 1:(zero_run_length_level_equal_two? 2:(3+zero_run_length_level_minus3_parity+(zero_run_length_level_minus3_div2<<1))))
[0071] For example, the value of "zero-run_length" may be calculated as follows.
[0072] zero_run_length=useGolomb? (2*zero_run_lenght_level+zero_run_length_LSB):zero_run_length_level
[0073] It should be noted that although GPCC is widely used in VR / AR for entertainment and industrial applications, GPCC does not work well with various PCC inputs. Therefore, improvements in geometric point cloud encoding are needed.
[0074] The present disclosure provides a number of improvements, including support for GPCC extensions, such as for AVS-GPCC. The following provides examples, but is not intended to limit the present disclosure.
[0075] Specifically, a method for decoding a code stream of geometric point cloud coding is provided.
[0076] For example, Figure 5 A flow chart of a code stream decoding method according to an embodiment of the present disclosure is shown, wherein an example of a code stream decoding method 500 is provided. The code stream decoding method 500 includes: block 510, decoding a code stream associated with a geometric point cloud coding (GPCC) to determine extended data, the code stream including a syntax structure having a syntax element associated with an extended flag. In the example, Figure 5 As shown in box 510 in , the code stream associated with the GPCC may also include at least one of the following: a syntax structure associated with an attribute header having two syntax elements associated with two quantization parameter codes, a syntax structure associated with a sequence header having an SPS multiple data set flag code, and a syntax structure associated with a general attribute data code stream having multiple syntax elements associated with attribute data.
[0077] Accordingly, a code stream encoding method for geometric point cloud encoding is provided.
[0078] For example, Figure 6 A flow chart of a code stream encoding method according to an embodiment of the present disclosure is shown, wherein an example of a code stream encoding method 600 is provided. The code stream encoding method 600 includes: block 610, encoding a code stream associated with a geometric point cloud coding (GPCC) to determine extended data, the code stream including a syntax structure having a syntax element associated with an extended flag. In the example, Figure 6 As shown in box 610 in , the code stream associated with the GPCC may also include at least one of the following: a syntax structure associated with an attribute header having two syntax elements associated with two quantization parameter codes, a syntax structure associated with a sequence header having an SPS multiple data set flag code, and a syntax structure associated with a general attribute data code stream having multiple syntax elements associated with attribute data.
[0079] Quantization parameters
[0080] For example, the present disclosure provides the following example for improving the configuration of quantization parameters such as colorQuantParam and reflQuantParam of AVS-GPCC to improve the efficiency of geometric point cloud encoding.
[0081] For example, an embodiment of a code stream decoding process for improving the configuration of quantization parameters is provided below.
[0082] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in block 510, two syntax elements associated with two quantization parameter codes include a syntax element associated with a color quantization parameter code and a syntax element associated with a reflectivity quantization parameter code.
[0083] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in box 510, a code stream associated with GPCC is decoded, the code stream includes a syntax structure associated with an attribute header and having two syntax elements associated with two quantization parameter codes, including: in response to determining that the syntax element associated with the attribute presence flag code indexed by the first index is not equal to zero, decoding a syntax element associated with the color quantization parameter code from the syntax structure associated with the attribute header; in response to determining that the syntax element associated with the attribute presence flag code indexed by the second index is not equal to zero, decoding a syntax element associated with the reflectivity quantization parameter code from the syntax structure associated with the attribute header. For example, for AVS-GPCC, the attribute presence flag code indexed by the first index and the attribute presence flag code indexed by the second index are attributePresentFlag[0] and attributePresentFlag[1], respectively. An example is provided below for illustration.
[0084] Example 1
[0085] This example is provided to move the syntax elements colorQuantParam and reflQuantParam from a sequence parameter set (SPS) / sequence header to an attribute header.
[0086] Fig. 7A Table 700A is shown, which shows a syntax structure associated with the function sequence header(), where "ue(v)" refers to a descriptor associated with an unsigned integer exponential Golomb-encoded syntax element, and "u(n)" is an n-bit unsigned integer, where n is equal to a positive integer, such as 1, 2, 4, ..., 8, ..., 15, ..., 21, .... Fig. 7AIn the example, as shown in block 710A, the syntax elements colorQuantParam and reflQuantParam are removed under the condition that the syntax element attribute_present_flag is equal to a specified value (eg, not equal to zero, eg, equal to "1" or "true").
[0087] Alternatively, Figure 7B Table 700B is shown, which shows the syntax structure associated with the attribute_header() function, where "ue(v)" refers to the descriptor associated with the unsigned integer exponential Golomb coded syntax element, "se(v)" refers to the descriptor associated with the signed integer exponential Golomb coded syntax element bit priority, and "u(n)" is an n-bit unsigned integer, for example, n is equal to 1. Figure 7B In the example, as shown in box 710B and box 720B, under the condition that the syntax element attributePresentFlag[0] is equal to a specified value (e.g., not equal to zero, e.g., equal to "1" or "true"), the syntax element colorQuantParam is introduced, and under the condition that the syntax element attributePresentFlag[1] is equal to a specified value (e.g., not equal to zero, e.g., equal to "1" or "true"), the syntax element reflQuantParam is added.
[0088] Accordingly, an embodiment of a code stream encoding process for improving the configuration of quantization parameters is provided below.
[0089] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in block 610, two syntax elements associated with two quantization parameter codes include a syntax element associated with a color quantization parameter code and a syntax element associated with a reflectivity quantization parameter code.
[0090] In some embodiments, Figure 6 As shown in the codestream encoding method 600 shown, in box 610, in response to encoding a codestream associated with GPCC, the codestream includes a syntax structure associated with an attribute header and having two syntax elements associated with two quantization parameter codes, including: in response to determining that the syntax element associated with the attribute existence flag code indexed by the first index is not equal to zero, encoding a syntax element associated with the color quantization parameter code into the syntax structure associated with the attribute header; in response to determining that the syntax element associated with the attribute existence flag code indexed by the second index is not equal to zero, encoding a syntax element associated with the reflectivity quantization parameter code into the syntax structure associated with the attribute header.
[0091] SPS multi-dataset flag
[0092] In addition, the present disclosure provides the following examples for supporting multiple attribute encoding parameter sets of one type of attribute, such as a sequence parameter set (SPS) and an attribute header to support multiple attribute encoding parameter sets to improve the efficiency of geometric point cloud encoding.
[0093] For example, an embodiment of a code stream decoding process for multiple attribute coding parameter sets is provided below.
[0094] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in block 510, the SPS multiple data set flag code specifies whether it is allowed to use multiple attribute encoding parameter sets to encode the current point cloud.
[0095] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in box 510, in response to decoding a code stream associated with GPCC, the code stream includes a syntax structure associated with a sequence header and having an SPS multiple data set flag code, including: decoding a syntax element associated with the attribute existence flag code from the syntax structure associated with the sequence header; in response to determining that the syntax element associated with the attribute existence flag code is not equal to zero, performing the following operations: in response to determining that the syntax element associated with the SPS multiple data set flag code exists in the syntax structure associated with the sequence header, decoding the syntax element associated with the SPS multiple data set flag code from the syntax structure associated with the sequence header to determine the value of the SPS multiple data set flag code; in response to determining that the syntax element associated with the SPS multiple data set flag code does not exist in the syntax structure associated with the sequence header, determining that the value of the SPS multiple data set flag code is equal to zero.
[0096] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in box 510, in response to decoding a code stream associated with GPCC, the code stream includes a syntax structure with an SPS multiple data set flag code associated with a sequence header, including: in response to determining that the syntax element associated with the attribute existence flag code is not equal to zero, performing the following operations: after decoding the syntax element associated with the SPS multiple data set flag code, decoding the syntax element associated with the maximum number attribute minus one code from the syntax structure associated with the sequence header.
[0097] In some embodiments, Figure 5As shown in the code stream decoding method 500, in box 510, it also includes: in the syntax structure associated with the attribute header, executing a corresponding operation group in a plurality of operation groups defined by a first iteration loop, the first iteration loop having a first variable, the first variable incrementing from zero to a maximum integer less than the sum of the value of the maximum number of attributes minus one code plus one, including: decoding a syntax element associated with the attribute existence flag code indexed by the first variable; in response to determining that the syntax element associated with the attribute existence flag code indexed by the first variable is not equal to zero, executing the following operations: in response to determining that the syntax element of the SPS multi-dataset flag code is not equal to zero, determining the syntax element associated with the multi-dataset flag code indexed by the first variable; in response to determining that the syntax element associated with the multi-dataset flag code indexed by the first variable is not equal to zero, determining The invention relates to a method for decoding a syntax element associated with a minus-one code of a data set of attribute quantity indexed by a first variable; performing a corresponding operation group among a plurality of operation groups defined by a second iteration loop, wherein the second iteration loop has a second variable, and the second variable is incremented from zero to a maximum integer less than the sum of the value of the minus-one code of the data set of attribute quantity indexed by the first variable plus one, including: decoding a syntax element associated with an output bit depth minus-one code indexed by a first variable and a second variable; in response to determining that the first variable is equal to zero or the first variable is not equal to zero, decoding a first group of syntax elements indexed by the first variable and the second variable; in response to determining that the first variable is equal to zero, decoding a second group of syntax elements indexed by the second variable; in response to determining that the first variable is not equal to zero, decoding a third group of syntax elements indexed by the second variable; decoding a plurality of syntax elements in a syntax structure associated with an attribute header.
[0098] In some embodiments, Figure 5 As shown in the code stream decoding method 500 shown, in box 510, in response to determining that the syntax element of the SPS multi-dataset flag code is not equal to zero, the syntax element associated with the multi-dataset flag code indexed by the first variable is determined, including: determining whether the syntax element associated with the multi-dataset flag code indexed by the first variable exists; in response to the syntax element associated with the multi-dataset flag code indexed by the first variable exists, decoding the syntax element associated with the multi-dataset flag code indexed by the first variable; in response to the syntax element associated with the multi-dataset flag code indexed by the first variable does not exist, determining that the syntax element associated with the multi-dataset flag code indexed by the first variable is equal to zero.
[0099] In some embodiments, Figure 5As shown in the code stream decoding method 500, in box 510, in response to determining that the syntax element associated with the multi-data set flag code indexed by the first variable is not equal to zero, the syntax element associated with the attribute quantity data set minus one code indexed by the first variable is determined, including: in response to determining that the syntax element associated with the attribute quantity data set minus one code indexed by the first variable exists, decoding the syntax element associated with the attribute quantity data set minus one code indexed by the first variable; in response to determining that the syntax element associated with the attribute quantity data set minus one code indexed by the first variable does not exist, determining that the syntax element associated with the attribute quantity data set minus one code indexed by the first variable is equal to zero.
[0100] In some embodiments, Figure 5 As shown in the code stream decoding method 500 shown, in box 510, in response to determining that the first variable is equal to zero or the first variable is not equal to zero, a first group of syntax elements indexed by the first variable and the second variable are decoded, including: decoding syntax elements associated with the maximum number of neighbors log2 minus seven code indexed by the first variable and the second variable; decoding syntax elements associated with the number of detail levels code indexed by the first variable and the second variable; decoding syntax elements associated with the maximum predicted neighbor number code indexed by the first variable and the second variable; decoding syntax elements associated with the intra-lode-flag code indexed by the first variable and the second variable; decoding syntax elements associated with the cross-attribute type prediction code indexed by the first variable and the second variable; in response to determining that the syntax elements associated with the cross-attribute type prediction code indexed by the first variable and the second variable are not equal to zero, performing the following operations: decoding syntax elements associated with the attribute coding order code indexed by the first variable and the second variable; decoding syntax elements associated with the cross-attribute type prediction parameter one code indexed by the first variable and the second variable; decoding syntax elements associated with the cross-attribute type prediction parameter two code indexed by the first variable and the second variable.
[0101] In some embodiments, Figure 5 As shown in the code stream decoding method 500 shown, in box 510, in response to determining that the first variable is equal to zero, a second group of syntax elements indexed by the second variable is decoded, including: decoding syntax elements associated with the cross-component prediction code indexed by the second variable; decoding syntax elements associated with the order switching code indexed by the second variable; decoding syntax elements associated with the half-zero run length enable code indexed by the second variable; decoding syntax elements associated with the chroma Qp offset Cb code indexed by the second variable; decoding syntax elements associated with the chroma Qp offset Cr code indexed by the second variable; decoding syntax elements associated with the color reordering mode code indexed by the second variable; decoding syntax elements associated with the color Columbus quantity code indexed by the second variable.
[0102] In some embodiments, Figure 5As shown in the code stream decoding method 500, in box 510, in response to determining that the first variable is not equal to zero, the third group of syntax elements indexed by the second variable is decoded, including: decoding the syntax elements associated with the most recent prediction parameter one code indexed by the second variable; decoding the syntax elements associated with the most recent prediction parameter two code indexed by the second variable; decoding the syntax elements associated with the axis bias code indexed by the second variable; decoding the syntax elements associated with the reflectivity reordering mode code indexed by the second variable; decoding the syntax elements associated with the reflectivity Columbus quantity code indexed by the second variable.
[0103] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in box 510, multiple syntax elements in the syntax structure associated with the attribute header are decoded, including: decoding the fourth group of syntax elements indexed by the first variable and the second variable; in response to determining that the attribute existence flag code indexed by the first index is not equal to zero, decoding the fifth group of syntax elements indexed by the second variable; in response to determining that the attribute existence flag code indexed by the second index is not equal to zero, decoding the reflectivity group prediction code indexed by the second index.
[0104] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in box 510, decoding the fourth group of syntax elements indexed by the first variable and the second variable includes: decoding syntax elements associated with the transform code indexed by the first variable and the second variable; in response to determining that the syntax elements associated with the transform code indexed by the first variable and the second variable are not equal to zero and the syntax elements associated with the attribute existence flag code indexed by the first variable are not equal to zero, performing the following operations: decoding syntax elements associated with the maximum number of coefficients code indexed by the first variable and the second variable; decoding syntax elements associated with the coefficient length control code indexed by the first variable and the second variable; decoding syntax elements associated with the attribute transform Qp delta code indexed by the first variable and the second variable; decoding syntax elements associated with the initial prediction transform rate code indexed by the first variable and the second variable; decoding syntax elements associated with the transform resource layer code indexed by the first variable and the second variable; decoding syntax elements associated with the attribute transform quantity point code indexed by the first variable and the second variable; decoding syntax elements associated with the maximum number of transform codes indexed by the first variable and the second variable; decoding syntax elements associated with the Qp offset DC code indexed by the first variable and the second variable; decoding syntax elements associated with the Qp offset AC code indexed by the first variable and the second variable.
[0105] In some embodiments, Figure 5As shown in the code stream decoding method 500, in box 510, in response to determining that the attribute existence flag code indexed by the first index is not equal to zero, the fifth group of syntax elements indexed by the second variable is decoded, including: in response to determining that the syntax element associated with the attribute existence flag code indexed by the first index is not equal to zero, decoding the syntax element associated with the chroma Qp offset DC code indexed by the second variable and the syntax element associated with the chroma Qp offset AC code indexed by the second variable.
[0106] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in box 510, multiple syntax elements in the syntax structure associated with the attribute header are decoded, including: decoding the fourth group of syntax elements; in response to determining that the attribute existence flag code indexed by the first index is not equal to zero, decoding the fifth group of syntax elements; in response to determining that the attribute existence flag code indexed by the second index is not equal to zero, decoding the reflectivity group prediction code.
[0107] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in box 510, decoding the fourth group of syntax elements includes: in response to determining that the syntax elements associated with the attribute existence flag code are not equal to zero, decoding the syntax elements associated with the transform code; in response to determining that the syntax elements associated with the transform code are not equal to zero and the attribute existence flag code indexed by the first index or the attribute existence flag code indexed by the second index is not equal to zero, performing the following operations: decoding the syntax elements associated with the maximum coefficient number code; decoding the syntax elements associated with the coefficient length control code; decoding the syntax elements associated with the attribute transform Qp delta code; decoding the syntax elements associated with the initial prediction transform rate code; decoding the syntax elements associated with the transform resource layer code; decoding the syntax elements associated with the attribute transform quantity point code; decoding the syntax elements associated with the maximum transform quantity code; decoding the syntax elements associated with the Qp offset DC code; decoding the syntax elements associated with the Qp offset AC code.
[0108] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in block 510, in response to determining that the attribute presence flag code indexed by the first index is not equal to zero, decoding the fifth group of syntax elements includes: in response to determining that the syntax element associated with the attribute presence flag code indexed by the first index is not equal to zero, decoding the syntax element associated with the chroma Qp offset DC code and the syntax element associated with the chroma Qp offset AC code. An example is provided below.
[0109] Example 2
[0110] For example, in AVS-GPCC, the present disclosure improves the attributes of one type that only support one parameter set to support a wide range of GPCC applications, such as one type of attribute that may need to support multiple attribute encoding parameter sets. For example, the present disclosure allows one type of attribute to have multiple attribute encoding parameter sets, such as Fig. 8A shown.
[0111] Fig. 8A Table 800A is shown, which shows a syntax structure associated with the function sequence_header(). As shown in block 810A, under the condition that the syntax element attribute_present_flag is equal to a specified value (e.g., not equal to zero, such as equal to "1" or "true"), the syntax element sps_multi_data_set_flag is introduced. For example, the syntax element sps_multi_data_set_flag is equal to the specified value to indicate that multiple attribute coding parameter sets are allowed to be used to encode the current point cloud, and sps_multi_data_set_flag is equal to 0 to indicate that multiple attribute coding parameter sets are not allowed to be used to encode the current point cloud. When sps_multi_data_set_flag does not exist, it is inferred that the value of sps_multi_data_set_flag is equal to 0.
[0112] Figure 8B1 and Figure 8B2The first and second parts of Table 800B are shown, and Table 800B shows the syntax structure associated with the function attribute_header(). In the first iteration loop of the first variable attrIdx having a maximum integer incrementing from 0 to a value less than (maxNumAttributesMinus1+1), operations are performed on each of the different integers defined by the first variable attrIdx (e.g., 0, 1, ..., maxNumAttributesMinus1-1, maxNumAttributesMinus1), for example, maintaining the condition that the syntax elements attributePresentFlag[attrIdx] and attributePresentFlag[attrIdx] are equal to the specified value. Under the condition that attributePresentFlag[attrIdx] is equal to a specified value (e.g., a non-zero value "1" or "true"), as shown in box 610B, the syntax element multi_data_set_flag[attrIdx] is introduced under the condition that the syntax element sps_multi_data_set_flag is equal to the specified value, and the syntax element attribute_num_data_set_minus1[attrIdx] is introduced under the condition that the syntax element multi_data_set_flag[attrIdx] is equal to the specified value.
[0113] In addition, Figure 8B1In the example, as shown in block 810B, a second iteration loop with a second variable i incrementing from 0 to a maximum integer less than a value of (attribute_num_data_set_minus1[attrIdx]+1) is introduced. In the second iteration loop with the second variable i, an operation is performed on each of the different integers defined by the second variable i (e.g., 0, 1, ..., attribute_num_data_set_minus1[attrIdx]-1, attribute_num_data_set_minus1[attrIdx]), for example, the syntax element outputBitDepthMinus1[attrIdx][i] is modified from being indexed to attrIdx to being indexed to attrIdx and i. Under the condition that attrIdx is equal to 0 or attrIdx is equal to a specified value (e.g., a non-zero value of "1" or "true"), as shown in block 820B, multiple syntax elements are modified from being indexed to attrIdx to being indexed to attrIdx and i, such as maxNumOfNeighboursLog2Minus7[attrIdx][i], numOflevelOfDetail[attrIdx][i], maxNumOfPredictNeighbours[attrIdx][i], and intraLodFlag[attrIdx][i]. In addition, there is a syntax element crossAttrTypePred[attrIdx][i] that is modified from being unindexed to being indexed by attrIdx and i.
[0114] For example, in Figure 8B1 In the embodiment of the present invention, as shown in box 820B, under the condition that crossAttrTypePred[attrIdx][i] is equal to a specified value (e.g., a non-zero value "1" or "true"), multiple syntax elements are modified from being unindexed to being indexed by attrIdx and i, such as attrEncodeOrder[attrIdx][i], crossAttrTypePredParam1[attrIdx][i], and crossAttrTypePredParam2[attrIdx][i].
[0115] In addition, Figure 8B1In the embodiment, under the condition that attrIdx is equal to 0, as shown in block 830B, multiple syntax elements are modified from being unindexed to being indexed by i, such as cross_component_Pred[i], orderSwitch[i], half_zero_runlength_enable[i], chromaQpOffsetCb[i], chromaQpOffsetCr[i], colorReorderMode[i], and colorGolombNum[i]. Similarly, under another condition that attrIdx is equal to a specified value (e.g., a non-zero value of "1" or "true"), as shown in block 840B, multiple syntax elements are modified from being unindexed to being indexed by i, such as nearestPredParam1[i], nearestPredParam2[i], axisBias[i], refReorderMode[i], and refGolombNum[i].
[0116] In addition, Figure 8B2 In the example, as shown in box 850B, the stop boundary of the condition that attributePresentFlag[attrIdx] is equal to the specified value and the stop boundary of the first iteration loop with the first variable attrIdx increasing from 0 to maxNumAttributesMinus1+1 are removed before the syntax element transform, where the syntax element transform is modified from being unindexed to being indexed by attrIdx and i, shown as the syntax element transform[attrIdx][i].
[0117] In addition, Figure 8B2In the embodiment, as shown in block 850B, the syntax element transform whose descriptor is modified to "ue(v)" is modified from being unindexed to being indexed by attrIdx and i, and then under the condition that transform[attrIdx][i] is equal to a specified value and attributePresentFlag[attrIdx] is equal to a specified value (e.g., a non-zero value "1" or "true"), but not under the condition that attributePresentFlag[0] is equal to a specified value and attributePresentFlag[1] is equal to a specified value (e.g., a non-zero value "1" or "true"), as shown in block 860B, multiple syntax elements are modified from being unindexed to being indexed by attrIdx and i. References, such as maxNumofCoeff[attrIdx][i], coeffLengthControl[attrIdx][i], attrTransformQpDelta[attrIdx][i], initPredTransRatio[attrIdx][i], tra nsResLayer[attrIdx][i], attrTransformNumPoints[attrIdx][i], maxTransNum[attrIdx][i], QpOffsetDC[attrIdx][i], and QpOffsetAC[attrIdx][i].
[0118] In addition, Figure 8B2 In the example, under the condition that attributePresentFlag[0] is equal to a specified value (e.g., a non-zero value of "1" or "true"), as shown in block 870B, multiple syntax elements are modified from being unindexed to being indexed by i, such as chromaQpOffsetDC[i] and chromaQpOffsetAC[i]; under the condition that attributePresentFlag[1] is equal to a specified value (e.g., a non-zero value of "1" or "true"), as shown in block 880B, the syntax elements are modified from being unindexed to being indexed by i, such as RefGroupPred[i]. In addition, in Figure 8B2 In the example, as shown in box 890B, a second iteration loop with a second variable i, a condition that attributePresentFlag[attrIdx] is equal to a specified value (e.g., a non-zero value "1" or "true"), and a stop boundary of the first iteration loop with the first variable attrIdx are added before the function byte_alignment().
[0119] For example, Figure 8B1 and Figure 8B2As shown, the syntax element multi_data_set_flag[attrIdx] is equal to the specified value (e.g., equal to "1"), indicating that the attribute of the current type allows the use of multiple attribute coding parameter sets, and the number of allowed attribute coding parameter sets will be further specified by attribute_num_data_set_minus1; the syntax element multi_data_set_flag[attrIdx] is equal to 0, indicating that the attribute of the current type does not allow the use of multiple attribute coding parameter sets, and the number of allowed attribute coding parameter sets is equal to the specified value. When multi_data_set_flag[attrIdx] does not exist, it is inferred that the value of multi_data_set_flag[attrIdx] is equal to 0.
[0120] For example, Figure 8B1 and Figure 8B2 As shown, the syntax element attribute_num_data_set_minus1[attrIdx] plus 1 specifies the number of parameter sets allowed for encoding attributes of the current attrIdx type. The value of attribute_num_data_set_minus1 shall be in the range of 0 to 15 (inclusive), and when attribute_num_data_set_minus1[attrIdx] is not present, the value of attribute_num_data_set_minus1[attrIdx] is inferred to be equal to 0. In addition, the number of attribute coding parameter sets allowed shall be calculated as: num_allowed_attribute_coding=attribute_num_data_set_minus1+1.
[0121] Additionally, all attributes can use the same transform-related syntax, and alternative tables can be specified, as shown below. For example, Figure 8C Table 800C is shown, which shows the syntax structure with the syntax element sps_multi_data_set_flag associated with the function sequence_header(), as shown in block 810C, which is the same as Fig. 8A The syntax table is the same as in the function sequence_header() shown in box 810A in .
[0122] Figure 8D1 and Figure 8D2 The first and second parts of Table 800D are shown. Table 800D shows the syntax structure associated with the attribute_header() function. The attribute_header() function is similar to Figure 8B1 and Figure 8B2 The function attribute_header() shown in . Figure 8D1 As shown, in a first iteration loop of a first variable attrIdx having a maximum integer incremented from 0 to a value less than (maxNumAttributesMinus1+1), an operation is performed on each of the different integers (e.g., 0, 1, ..., maxNumAttributesMinus1-1, maxNumAttributesMinus1) defined by the first variable attrIdx, for example, maintaining the condition that the syntax element attributePresentFlag[attrIdx] and attributePresentFlag[attrIdx] are equal to a specified value. Under the condition that attributePresentFlag[attrIdx] is equal to a specified value (e.g., a non-zero value "1" or "true"), as shown in block 810D (with Figure 8B1 810B in FIG. 810B ), introduces the syntax element "multi_data_set_flag[attrIdx]" conditional on the syntax element sps_multi_data_set_flag being equal to a specified value, and introduces the syntax element attribute_num_data_set_minus1[attrIdx] conditional on multi_data_set_flag[attrIdx] being equal to a specified value.
[0123] In addition, Figure 8D1 In, as shown in block 810D, a second iteration loop with a second variable i incrementing from 0 to the maximum integer with a value less than (attribute_num_data_set_minus1[attrIdx]+1) is introduced. In the second iteration loop with the second variable i, an operation is performed on each of the different integers defined by the second variable i (e.g., 0, 1, ..., attribute_num_data_set_minus1[attrIdx]-1, attribute_num_data_set_minus1[attrIdx]), for example, the syntax element outputBitDepthMinus1[attrIdx][i] is modified from indexing attrIdx to indexing attrIdx and i. Under the condition that attrIdx is equal to 0 or attrIdx is equal to a specified value (e.g., a non-zero value "1" or "true"), as shown in block 820D (with Figure 8B1820B in FIG. 820B ), multiple syntax elements are modified from being indexed by attrIdx to being indexed by attrIdx and i, such as maxNumOfNeighboursLog2Minus7[attrIdx][i], numOflevelOfDetail[attrIdx][i], maxNumOfPredictNeighbours[attrIdx][i], and intraLodFlag[attrIdx][i]. In addition, there is a syntax element crossAttrTypePred[attrIdx][i] that is modified from being unindexed to being indexed by attrIdx and i.
[0124] For example, in Figure 8D1 In the embodiment of the present invention, as shown in box 820D, under the condition that crossAttrTypePred[attrIdx][i] is equal to a specified value (e.g., a non-zero value "1" or "true"), multiple syntax elements are modified from being unindexed to being indexed by attrIdx and i, such as attrEncodeOrder[attrIdx][i], crossAttrTypePredParam1[attrIdx][i], and crossAttrTypePredParam2[attrIdx][i].
[0125] In addition, Figure 8D1 and Figure 8D2 In the case where attrIdx is equal to 0, as shown in block 830D (with Figure 8B1 830B in FIG. 840A ), multiple syntax elements are modified from being unindexed to being indexed by i, such as cross_component_Pred[i], orderSwitch[i], half_zero_runlength_enable[i], chromaQpOffsetCb[i], chromaQpOffsetCr[i], colorReorderMode[i], and colorGolombNum[i]. Similarly, under another condition that attrIdx is equal to a specified value (e.g., a non-zero value of "1" or "true"), as shown in block 840D (same as block 840D in FIG. 840B ), multiple syntax elements are modified from being unindexed to being indexed by i, such as cross_component_Pred[i], orderSwitch[i], half_zero_runlength_enable[i], chromaQpOffsetCb[i], chromaQpOffsetCr[i], colorReorderMode[i], and colorGolombNum[i]. Similarly, under another condition that attrIdx is equal to a specified value (e.g., a non-zero value of "1" or "true"), Figure 8B1 As shown in block 840B in FIG. 8A , multiple syntax elements are modified from being unindexed to being indexed by i, such as nearestPredParam1[i], nearestPredParam2[i], axisBias[i], refReorderMode[i], and refGolombNum[i].
[0126] In addition, Figure 8D2In the example, as shown in block 850D, a stop boundary of a second iteration loop with a second variable i is added before a stop boundary of a condition where the syntax element attributePresentFlag[attrIdx] is equal to a specified value and a stop boundary of a first iteration loop with a variable attrIdx incremented from 0 to maxNumAttributesMinus1+1.
[0127] In addition, Figure 8D2 In the example, as shown in block 860D, a condition that the syntax element attribute_present_flag is equal to a specified value (e.g., a non-zero value "1" or "true") is introduced, a syntax element transform whose descriptor is modified to "ue(v)" is introduced, and then, multiple syntax elements before the function byte_alignment() are maintained, such as maxNumofCoeff, coeffLengthControl, attrTransformQpDelta, initPredTransRatio, transResLayer, attrTransformNumPoints, maxTransNum, QpO ffsetDC, and QpOffsetAC will be executed under the condition that (transform and (attributePresentFlag[0] or attributePresentFlag[1])) are equal to the specified value (for example, non-zero value "1" or "true"); chromaQpOffsetDC and chromaQpOffsetAC will be executed under the condition that attributePresentFlag[0] is equal to the specified value (for example, non-zero value "1" or "true"); RefGroupPred will be executed under the condition that attributePresentFlag[1] is equal to the specified value (for example, non-zero value "1" or "true").
[0128] Accordingly, an embodiment of a code stream encoding process of multiple attribute encoding parameter sets is provided below.
[0129] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in block 610, the SPS multiple data set flag code specifies whether it is allowed to use multiple attribute encoding parameter sets to encode the current point cloud.
[0130] In some embodiments, Figure 6As shown in the code stream encoding method 600, in box 610, in response to encoding a code stream associated with GPCC, the code stream includes a syntax structure with an SPS multiple data set flag code associated with a sequence header, including: based on determining whether attribute data exists, encoding the syntax element associated with the attribute existence flag code into the syntax structure associated with the sequence header; in response to determining that the syntax element associated with the attribute existence flag code is not equal to zero, performing the following operations: in response to determining that the syntax element associated with the SPS multiple data set flag code exists in the syntax structure associated with the sequence header, encoding the syntax element associated with the SPS multiple data set flag code into the syntax structure associated with the sequence header based on the value of the SPS multiple data set flag code; in response to determining that the syntax element associated with the SPS multiple data set flag code does not exist in the syntax structure associated with the sequence header, determining that the value of the SPS multiple data set flag code is equal to zero.
[0131] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in box 610, in response to encoding a code stream associated with GPCC, the code stream includes a syntax structure with an SPS multiple data set flag code associated with a sequence header, including: in response to determining that the syntax element associated with the attribute existence flag code is not equal to zero, performing the following operations: after encoding the syntax element associated with the SPS multiple data set flag code, encoding the syntax element associated with the maximum number attribute minus one code into the syntax structure associated with the sequence header.
[0132] In some embodiments, Figure 6As shown in the code stream encoding method 600, in box 610, it also includes: in the syntax structure associated with the attribute header, executing a corresponding operation group in a plurality of operation groups defined by a first iteration loop, the first iteration loop having a first variable, the first variable incrementing from zero to a maximum integer less than the sum of the value of the maximum number of attributes minus one code plus one, including: encoding a syntax element associated with the attribute existence flag code indexed by the first variable; in response to determining that the syntax element associated with the attribute existence flag code indexed by the first variable is not equal to zero, performing the following operations: in response to determining that the syntax element of the SPS multi-dataset flag code is not equal to zero, determining the syntax element associated with the multi-dataset flag code indexed by the first variable; in response to determining that the syntax element associated with the multi-dataset flag code indexed by the first variable is not equal to zero, determining The invention relates to a method for encoding a syntax element associated with a data set of attribute quantity minus one indexed by a first variable; performing a corresponding operation group among a plurality of operation groups defined by a second iterative loop, wherein the second iterative loop has a second variable, and the second variable is incremented from zero to a maximum integer less than the sum of the value of the data set of attribute quantity minus one indexed by the first variable plus one, including: encoding syntax elements associated with an output bit depth minus one indexed by the first variable and a second variable; in response to determining that the first variable is equal to zero or the first variable is not equal to zero, encoding a first group of syntax elements indexed by the first variable and the second variable; in response to determining that the first variable is equal to zero, encoding a second group of syntax elements indexed by the second variable; in response to determining that the first variable is not equal to zero, encoding a third group of syntax elements indexed by the second variable; encoding a plurality of syntax elements in a syntax structure associated with an attribute header.
[0133] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in box 610, in response to determining that the syntax element of the SPS multi-dataset flag code is not equal to zero, the syntax element associated with the multi-dataset flag code indexed by the first variable is determined, including: determining whether the syntax element associated with the multi-dataset flag code indexed by the first variable exists; in response to the syntax element associated with the multi-dataset flag code indexed by the first variable exists, encoding the syntax element associated with the multi-dataset flag code indexed by the first variable, and in response to the syntax element associated with the multi-dataset flag code indexed by the first variable does not exist, determining that the syntax element associated with the multi-dataset flag code indexed by the first variable is equal to zero.
[0134] In some embodiments, Figure 6As shown in the code stream encoding method 600, in box 610, in response to determining that the syntax element associated with the multi-data set flag code indexed by the first variable is not equal to zero, the syntax element associated with the attribute quantity data set minus one code indexed by the first variable is determined, including: in response to determining that the syntax element associated with the attribute quantity data set minus one code indexed by the first variable exists, encoding the syntax element associated with the attribute quantity data set minus one code indexed by the first variable; in response to determining that the syntax element associated with the attribute quantity data set minus one code indexed by the first variable does not exist, determining that the syntax element associated with the attribute quantity data set minus one code indexed by the first variable is equal to zero.
[0135] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in box 610, in response to determining that the first variable is equal to zero or the first variable is not equal to zero, a first group of syntax elements indexed by the first variable and the second variable are encoded, including: encoding syntax elements associated with the maximum number of neighbors log2 minus seven code indexed by the first variable and the second variable; encoding syntax elements associated with the number of detail levels code indexed by the first variable and the second variable; encoding syntax elements associated with the maximum predicted neighbor number code indexed by the first variable and the second variable; encoding syntax elements associated with the intra-frame lode flag code indexed by the first variable and the second variable; encoding syntax elements associated with the cross-attribute type prediction code indexed by the first variable and the second variable; in response to determining that the syntax elements associated with the cross-attribute type prediction code indexed by the first variable and the second variable are not equal to zero, performing the following operations: encoding syntax elements associated with the attribute coding order code indexed by the first variable and the second variable; encoding syntax elements associated with the cross-attribute type prediction parameter one code indexed by the first variable and the second variable; encoding syntax elements associated with the cross-attribute type prediction parameter two code indexed by the first variable and the second variable.
[0136] In some embodiments, Figure 6 As shown in the code stream encoding method 600 shown, in box 610, in response to determining that the first variable is equal to zero, a second group of syntax elements indexed by the second variable is encoded, including: encoding syntax elements associated with the cross-component prediction code indexed by the second variable; encoding syntax elements associated with the order switching code indexed by the second variable; encoding syntax elements associated with the half-zero run length enable code indexed by the second variable; encoding syntax elements associated with the chroma Qp offset Cb code indexed by the second variable; encoding syntax elements associated with the chroma Qp offset Cr code indexed by the second variable; encoding syntax elements associated with the color reordering mode code indexed by the second variable; encoding syntax elements associated with the color Columbus quantity code indexed by the second variable.
[0137] In some embodiments, Figure 6As shown in the code stream encoding method 600, in box 610, in response to determining that the first variable is not equal to zero, a third group of syntax elements indexed by the second variable is encoded, including: encoding syntax elements associated with the most recent prediction parameter one code indexed by the second variable; encoding syntax elements associated with the most recent prediction parameter two code indexed by the second variable; encoding syntax elements associated with the axis bias code indexed by the second variable; encoding syntax elements associated with the reflectivity reordering mode code indexed by the second variable; encoding syntax elements associated with the reflectivity Columbus quantity code indexed by the second variable.
[0138] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in box 610, multiple syntax elements in the syntax structure associated with the attribute header are encoded, including: executing a corresponding operation group in a plurality of operation groups defined by a second iterative loop, the second iterative loop having a second variable, the second variable incrementing from zero to a maximum integer less than the sum of the value of the attribute quantity data set minus one code indexed by the first variable plus one, including: encoding a fourth group of syntax elements indexed by the first variable and the second variable; in response to determining that the attribute existence flag code indexed by the first index is not equal to zero, encoding a fifth group of syntax elements indexed by the second variable; in response to determining that the attribute existence flag code indexed by the second index is not equal to zero, encoding a reflectivity group prediction code indexed by the second index.
[0139] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in box 610, a fourth group of syntax elements indexed by the first variable and the second variable is encoded, including: encoding syntax elements associated with the transform code indexed by the first variable and the second variable; in response to determining that the syntax elements associated with the transform code indexed by the first variable and the second variable are not equal to zero and the syntax elements associated with the attribute existence flag code indexed by the first variable are not equal to zero, performing the following operations: encoding syntax elements associated with the maximum number of coefficients code indexed by the first variable and the second variable; encoding syntax elements associated with the coefficient length control code indexed by the first variable and the second variable; encoding syntax elements associated with the attribute transform Qp delta code indexed by the first variable and the second variable; encoding syntax elements associated with the initial prediction transform rate code indexed by the first variable and the second variable; encoding syntax elements associated with the transform resource layer code indexed by the first variable and the second variable; encoding syntax elements associated with the attribute transform quantity point code indexed by the first variable and the second variable; encoding syntax elements associated with the maximum number of transform codes indexed by the first variable and the second variable; encoding syntax elements associated with the Qp offset DC code indexed by the first variable and the second variable; encoding syntax elements associated with the Qp offset AC code indexed by the first variable and the second variable.
[0140] In some embodiments, Figure 6As shown in the code stream encoding method 600, in box 610, in response to determining that the attribute existence flag code indexed by the first index is not equal to zero, the fifth group of syntax elements indexed by the second variable is encoded, including: in response to determining that the syntax element associated with the attribute existence flag code indexed by the first index is not equal to zero, encoding the syntax element associated with the chroma Qp offset DC code indexed by the second variable and the syntax element associated with the chroma Qp offset AC code indexed by the second variable.
[0141] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in box 610, multiple syntax elements in the syntax structure associated with the attribute header are encoded, including: encoding a fourth group of syntax elements; in response to determining that the attribute existence flag code indexed by the first index is not equal to zero, encoding a fifth group of syntax elements; in response to determining that the attribute existence flag code indexed by the second index is not equal to zero, encoding a reflectivity group prediction code.
[0142] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in box 610, encoding the fourth group of syntax elements includes: in response to determining that the syntax element associated with the attribute existence flag code is not equal to zero, encoding the syntax element associated with the transform code; in response to determining that the syntax element associated with the transform code is not equal to zero and the attribute existence flag code indexed by the first index or the attribute existence flag code indexed by the second index is not equal to zero, performing the following operations: encoding the syntax element associated with the maximum coefficient number code; encoding the syntax element associated with the coefficient length control code; encoding the syntax element associated with the attribute transform Qp delta code; encoding the syntax element associated with the initial prediction transform rate code; encoding the syntax element associated with the transform resource layer code; encoding the syntax element associated with the attribute transform quantity point code; encoding the syntax element associated with the maximum transform quantity code; encoding the syntax element associated with the Qp offset DC code; encoding the syntax element associated with the Qp offset AC code.
[0143] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in box 610, in response to determining that the attribute existence flag code indexed by the first index is not equal to zero, encoding the fifth group of syntax elements, including: in response to determining that the syntax element associated with the attribute existence flag code indexed by the first index is not equal to zero, encoding the syntax element associated with the chroma Qp offset DC code and the syntax element associated with the chroma Qp offset AC code.
[0144] Attribute data
[0145] In addition, the present disclosure provides the following examples, which support more attribute encoding data, such as color attribute data and reflectivity attribute data, to improve the efficiency of geometric point cloud encoding.
[0146] For example, an embodiment of a code stream decoding process supporting more attribute coded data is provided below.
[0147] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in block 510, the attribute data includes color attribute data and reflectivity attribute data.
[0148] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in box 510, in response to decoding a code stream associated with GPCC, the code stream includes a syntax structure of a general attribute data code stream having multiple syntax elements associated with attribute data, including: in the syntax structure associated with the general attribute data code stream, executing a corresponding operation group from a plurality of operation groups defined by a third iteration loop, the third iteration loop having a third variable, the third variable incrementing from zero to a maximum integer less than the sum of the value of the maximum number of attribute minus one code plus one, including: in response to determining that the third variable is equal to zero and the attribute existence flag code indexed by the first index is not equal to zero, executing operations including the following: executing an attribute data color function to decode the syntax elements associated with the attribute data color code; executing a byte alignment function to align the data in the code stream in units of bytes; in response to determining that the third variable is not equal to zero and the attribute existence flag code indexed by the second index is not equal to zero, executing operations including the following: executing an attribute data reflectivity function to decode the syntax elements associated with the attribute data reflectivity code; executing a byte alignment function.
[0149] In some embodiments, Figure 5As shown in the code stream decoding method 500 shown in the figure, in block 510, in response to decoding a code stream associated with the GPCC, the code stream includes a syntax structure of a general attribute data code stream having a plurality of syntax elements associated with the attribute data, including: in the syntax structure associated with the general attribute data code stream, performing a corresponding operation group in a plurality of operation groups defined by a third iteration loop, the third iteration loop having a third variable, the third variable incrementing from zero to a maximum integer less than the sum of the value of the maximum number of attributes minus one code plus one, including: in response to determining that the third variable is equal to zero and the attribute existence flag code indexed by the first index is not equal to zero, performing the following operations: performing a corresponding operation group in a plurality of operation groups defined by a fourth iteration loop, the fourth iteration loop having a fourth variable The method includes: performing an attribute data color function to decode a syntax element associated with the attribute data color code; performing a byte alignment function to align data in the code stream in units of bytes; in response to determining that the first variable is not equal to zero and the attribute existence flag code indexed by the second index is not equal to zero, performing operations including the following: performing a corresponding operation group of a plurality of operation groups defined by a fourth iteration loop, the fourth iteration loop having a fourth variable, the fourth variable incrementing from zero to a maximum integer less than the sum of the values of the maximum number of attribute minus one codes plus one, including: performing an attribute data reflectivity function to decode a syntax element associated with the attribute data reflectivity code; performing a byte alignment function. Examples are provided below.
[0150] The present disclosure provides support for more attribute coded data in a general attribute data code stream. The syntax provided is as follows Fig.9A shown.
[0151] Fig.9ATable 900A is shown, which shows the syntax structure associated with the function general_attribute_data_bitstream(), and as shown in block 910A, a third iteration loop is introduced with a third variable attrIdx incrementing from 0 to a maximum integer less than a value of (maxNumAttributesMinus1+1). In the third iteration loop with the third variable attrIdx, the function attribute_data_color() and byte_alignment() will be executed under the condition that attributePresentFlag[0] is equal to the specified value (e.g., non-zero value "1" or "true") and attrIdx is equal to 0 and attributePresentFlag[0] is equal to the specified value (e.g., non-zero value "1" or "true"); as shown in block 920A, the function attribute_data_reflectance() and byte_alignment() will be executed under the condition that attributePresentFlag[1] is equal to the specified value and attrIdx is equal to 1 and attributePresentFlag[1] is equal to the specified value. In addition, as shown in block 930A, the stop boundary of the iteration loop with the third variable attrIdx is introduced accordingly.
[0152] Alternatively, if a type's attributes support multiple data parameter sets, the corresponding syntax changes to Fig. 9B shown.
[0153] Fig. 9BTable 900B is shown, which shows the syntax structure associated with the function general_attribute_data_bitstream(), as shown in box 910B, a third iteration loop of a variable attrIdx is introduced with a value that is incremented from 0 to a maximum integer less than (maxNumAttributesMinus1+1). In the third iteration loop with the variable attrIdx, as shown in box 910B, the condition is modified from attributePresentFlag[0] equal to the specified value to attrIdx equal to 0 and attributePresentFlag[0] equal to the specified value. Under the condition that attrIdx is equal to 0 and attributePresentFlag[0] is equal to the specified value, as shown in box 810F, a fourth iteration loop of a fourth variable i is introduced with a value that is incremented from 0 to a maximum integer less than (attribute_num_data_set_minus1[attrIdx]+1) to perform multiple data parameter sets, such as performing functions attribute_data_color() and byte_alignment(). In the third iteration loop with the variable attrIdx, as shown in box 920B, the condition is modified from attributePresentFlag[1] equal to the specified value to attrIdx equal to 1 and attributePresentFlag[1] equal to the specified value. Under the condition that attrIdx is equal to 1 and attributePresentFlag[1] is equal to the specified value, as shown in box 920B, another fourth iteration loop with a fourth variable i incremented from 0 to the maximum integer less than the value of (attribute_num_data_set_minus1[attrIdx]+1) is introduced to execute multiple data parameter sets, such as executing functions attribute_data_reflectance() and byte_alignment(). In addition, as shown in boxes 930B and 940B, stop boundaries of the third iteration loop and the fourth iteration loop are introduced accordingly.
[0154] For example, maxNumAttributesMinus1 may be set to no greater than an integer, such as N, to reflect profile and level constraints. For example, in AVS-GPCC, N may be set to 1. Similarly, attribute_num_data_set_minus1[attrIdx] may also be set to no greater than an integer, such as M, to reflect profile and level constraints. For example, in AVS-GPCC, M may be set to 0.
[0155] Accordingly, an embodiment of a code stream encoding process supporting more attribute encoding data is provided below.
[0156] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in block 610, the attribute data includes color attribute data and reflectivity attribute data.
[0157] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in box 610, in response to encoding a code stream associated with GPCC, the code stream includes a syntax structure of a general attribute data code stream having multiple syntax elements associated with attribute data, including: in the syntax structure associated with the general attribute data code stream, executing a corresponding operation group from a plurality of operation groups defined by a third iteration loop, the third iteration loop having a third variable, the third variable incrementing from zero to a maximum integer less than the sum of the value of the maximum number of attribute minus one code plus one, including: in response to determining that the third variable is equal to zero and the attribute existence flag code indexed by the first index is not equal to zero, executing operations including the following: executing an attribute data color function to encode the syntax elements associated with the attribute data color code; executing a byte alignment function to align the data in the code stream in units of bytes; in response to determining that the third variable is not equal to zero and the attribute existence flag code indexed by the second index is not equal to zero, executing operations including the following: executing an attribute data reflectivity function to encode the syntax elements associated with the attribute data reflectivity code; executing a byte alignment function.
[0158] In some embodiments, Figure 6As shown in the code stream encoding method 600 shown in the figure, in block 610, in response to encoding a code stream associated with a GPCC, the code stream includes a syntax structure of a general attribute data code stream having a plurality of syntax elements associated with the attribute data, including: in the syntax structure associated with the general attribute data code stream, performing a corresponding operation group in a plurality of operation groups defined by a third iteration loop, the third iteration loop having a third variable, the third variable incrementing from zero to a maximum integer less than the sum of the value of the maximum number of attributes minus one code plus one, including: in response to determining that the third variable is equal to zero and the attribute existence flag code indexed by the first index is not equal to zero, performing the following operations: performing a corresponding operation group in a plurality of operation groups defined by a fourth iteration loop, the fourth iteration loop having a fourth variable A quantity, a fourth variable is incremented from zero to a maximum integer less than the sum of the values of the maximum number of attribute minus one codes plus one, including: executing an attribute data color function to encode syntax elements associated with the attribute data color code; executing a byte alignment function to align data in the code stream in units of bytes; in response to determining that the first variable is not equal to zero and the attribute existence flag code indexed by the second index is not equal to zero, executing operations including the following: executing a corresponding operation group of multiple operation groups defined by a fourth iterative loop, the fourth iterative loop having a fourth variable, the fourth variable is incremented from zero to a maximum integer less than the sum of the values of the maximum number of attribute minus one codes plus one, including: executing an attribute data reflectivity function to encode syntax elements associated with the attribute data reflectivity code; executing a byte alignment function.
[0159] Extensions
[0160] In addition, in order to add more coding tools, an interface supporting compatible extensions is provided. The present disclosure provides the following extension examples for improving the efficiency of geometric point cloud coding, for example, for the current version or another version of AVS-GPCC.
[0161] For example, an embodiment of a code stream decoding process for extension is provided below.
[0162] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in box 510, a code stream associated with a GPCC is decoded to determine extended data, and the code stream includes a syntax structure having syntax elements associated with an extension flag, including: decoding the syntax elements associated with the extension flag; in response to determining that the syntax elements associated with the extension flag are not equal to zero, determining the syntax elements associated with the extension length based on the extended data; decoding one or more syntax elements associated with the extended data based on the syntax elements associated with the extension length.
[0163] In some embodiments, Figure 5As shown in the code stream decoding method 500, in block 510, in response to determining that the syntax element associated with the extension flag is not equal to zero, determining the syntax element associated with the extension length based on the extension data includes: in response to determining that the syntax element associated with the extension length does not exist in the syntax structure, determining that the value of the extension length is equal to zero; in response to determining that the syntax element associated with the extension length exists in the syntax structure, decoding the syntax element associated with the extension length from the syntax structure to determine the value of the extension length. For example, the value of the extension length ranges from 0 to 256.
[0164] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in box 510, one or more syntax elements associated with the extended data are decoded based on the syntax elements associated with the extended length, including: executing a corresponding operation group among a plurality of operation groups defined by an iterative loop, the iterative loop having a variable, the variable incrementing from zero to a maximum integer less than the value of the extended length, including: decoding a syntax element associated with the extended data in byte form from a syntax structure.
[0165] In some embodiments, Figure 5 As shown in the code stream decoding method 500, in box 510, one or more syntax elements associated with the extended data are decoded based on the syntax element associated with the extended length, including: iterative execution: in response to determining that there is more data in bit form in the syntax structure based on the extended length, a syntax element associated with the extended data in bit form is decoded from the syntax structure.
[0166] In some embodiments, Figure 5 As shown in the code stream decoding method 500 shown, in box 510, iteratively execute: in response to determining that there are more data in bit form in the syntax structure based on the extension length, decode a syntax element associated with the extended data in bit form from the syntax structure, including: iteratively execute: determine whether it is true or false that the difference between the current position in the syntax structure and the position immediately after the extension length is less than the value calculated by multiplying the extension length by eight; in response to determining that the difference between the current position in the syntax structure and the position immediately after the extension length is less than the value calculated by multiplying the extension length by eight is true, decode a syntax element associated with the extended data in one bit form from the syntax structure.
[0167] In some embodiments, Figure 5 As shown in the codestream decoding method 500, at block 510, a syntax structure is associated with a sequence header, a geometry header, an attribute header, a geometry slice header, an attribute slice header, or a general attribute data codestream of a GPCC.
[0168] Examples 3 to 8 are provided below to illustrate different extensions.
[0169] Example 3
[0170] Fig. 10A Shows an extension of the sequence header.
[0171] Fig. 10A Shows Table 1000A, where Table 1000A shows the syntax structure associated with the function sequence_header(), in which multiple syntax elements are maintained, such as profile_id, level_id, …, and attribute_present_flag, and under the condition that attribute_present_flag is equal to a specified value (such as the non-zero value "1" or "true"), attribute_adapt_pred, colorQuantParam, reflQuantParam, and maxNumAttributesMinus1 will be executed. In addition, the syntax element is introduced before the function byte_alignment(). In addition, in Fig. 10A , as shown in box 1010A, the syntax element sequence_extension_flag is introduced. Under the condition that the syntax element sequence_extension_flag is equal to a specified value (such as the non-zero value "1" or "true"), the syntax element sequence_extension_length is introduced, and an iterative loop with a variable i that increments from 0 to sequence_extension_length - 1 (such as i < sequence_extension_length) is introduced. In the iterative loop with the variable i, the syntax element sequence_extension_data_byte[i] is introduced.
[0172] For example, the syntax element sequence_extension_flag equal to 0 indicates that syntax elements such as sequence_extension_length and sequence_extension_data_byte are not present in the syntax structure "sequenceheader". In addition, the syntax element sequence_extension_flag equal to 1 indicates that sequence_extension_length and the syntax element sequence_extension_data_byte may be present in the syntax structure "sequenceheader". In addition, in codestreams conforming to the present disclosure, the syntax element sequence_extension_flag shall be equal to 0. However, some uses of the syntax element sequence_extension_flag equal to 1 may be specified in other versions, and decoders conforming to the present disclosure shall allow the syntax element sequence_extension_flag value equal to 1 to appear in the syntax.
[0173] In addition, the syntax element sequence_extension_length specifies the length of the sequence extension data in bytes, excluding the bits used to transmit the syntax element sequence_extension_length itself. When sequence_extension_length is not present, the value of sequence_extension_length is inferred to be equal to 0. Although the syntax element sequence_extension_length is not present in codestreams conforming to the present disclosure, some uses of the syntax element sequence_extension_length may be specified in other versions, and decoders conforming to the present disclosure should allow the syntax element sequence_extension_length to be present and in the range of 0 to N (e.g., N is 256), including the end value.
[0174] In addition, the syntax element sequence_extension_data_byte[i] can have any value. The presence and value of this syntax element does not affect the decoding process specified in this disclosure. A decoder that conforms to this disclosure should ignore the value of each syntax element sequence_extension_data_byte[i]. The value of this syntax element does not affect the decoding process specified in this disclosure.
[0175] Additionally, an example of an alternative syntax table is shown below.
[0176] Fig. 10BTable 1000B is shown, which shows a syntax structure associated with the function sequence_header(), in which multiple syntax elements such as profile_id, level_id, ..., and attribute_present_flag are maintained, and under the condition that attribute_present_flag is equal to a specified value (such as a non-zero value "1" or "true"), attribute_adapt_pred, colorQuantParam, reflQuantParam, and maxNumAttributesMinus1 will be executed. In addition, the syntax element is introduced before the function byte_alignment(). Fig. 10A Similar, in Fig. 10B In the introduction of the syntax element sequence_extension_data_bit, instead of Fig. 10A The syntax element sequence_extension_data_byte in . For example, in Fig. 10B In the embodiment, as shown in block 1010B, a syntax element sequence_extension_flag is introduced. Under the condition that the syntax element sequence_extension_flag is equal to a specified value (e.g., a non-zero value "1" or "true"), a syntax element sequence_extension_length is introduced, and a condition that the function more_data_in_sequence_header_extension() returns a specified value (e.g., "true") is introduced. Under the condition that the function more_data_in_sequence_header_extension() returns a specified value, a syntax element sequence_extension_data_bit is introduced.
[0177] For example, the syntax element sequence_extension_data_bit can have any value. The presence and value of this syntax element does not affect the decoding process specified in this disclosure. A decoder that conforms to this disclosure should ignore the value of each syntax element sequence_extension_data_bit. The value of this syntax element does not affect the decoding process specified in this disclosure.
[0178] In addition, more_data_in_sequence_header_extension() is as follows:
[0179] If (the current position in the sequence_header() syntax structure) - (the position immediately following the sequence_extension_length) is less than (sequence_extension_length * 8), then the return value of more_data_in_sequence_header_extension() is equal to true. Otherwise, the return value of more_data_in_sequence_header_extension() is equal to false.
[0180] Example 4
[0181] Fig.11A shows an extension of the geometry header.
[0182] Fig.11A shows Table 1100A, which shows the syntax structure associated with the function geometry_header(), where multiple syntax elements are maintained, such as gps_lcu_node_size_log2_minus_one and gps_implicit_geom_partition_flag, and before the syntax elements gps_single_mode_flag and gps_save_state_flag, under the condition that gps_implicit_geom_partition_flag is equal to a specified value (such as the non-zero value "1" or "true"), gps_max_num_implicit_qtbt_before_ot and gps_min_size_implicit_qtbt will be executed. Additionally, in Fig.11A as shown in box 1110A, the syntax element geometry_extension_flag is introduced. Under the condition that the syntax element geometry_extension_flag is equal to a specified value (such as the non-zero value "1" or "true"), the syntax element geometry_extension_length is introduced, and an iterative loop with a variable i that increments from 0 to geometry_extension_length - 1 (e.g., i < geometry_extension_length) is introduced. In the iterative loop with the variable i, the syntax element geometry_extension_data_byte[i] is introduced.
[0183] For example, the syntax element geometry_extension_flag equal to 0 indicates that syntax elements such as geometry_extension_length and geometry_extension_data_byte are not present in the syntax structure "geometryheader". In addition, the syntax element geometry_extension_flag equal to 1 indicates that syntax elements such as geometry_extension_length and geometry_extension_data_byte may be present in the syntax structure "geometryheader". In addition, in a codestream conforming to the present disclosure, the syntax element geometry_extension_flag shall be equal to 0. However, some uses of the syntax element geometry_extension_flag equal to 1 may be specified in other versions, and decoders conforming to the present disclosure shall allow the value of the syntax element geometry_extension_flag equal to 1 to appear in the syntax.
[0184] In addition, the syntax element geometry_extension_length specifies the length of the geometry extension data in bytes, excluding the bits used to transmit the syntax element geometry_extension_length itself. When geometry_extension_length is not present, the value of geometry_extension_length is inferred to be equal to 0. Although the syntax element geometry_extension_length is not present in codestreams conforming to the present disclosure, some uses of the syntax element geometry_extension_length may be specified in other versions, and decoders conforming to the present disclosure should allow the syntax element geometry_extension_length to be present and in the range of 0 to N (e.g., N is 256), inclusive.
[0185] In addition, the syntax element geometry_extension_data_byte[i] can have any value. The presence and value of this syntax element does not affect the decoding process specified in this disclosure. A decoder that conforms to this disclosure should ignore the value of each syntax element geometry_extension_data_byte[i]. The value of this syntax element does not affect the decoding process specified in this disclosure.
[0186] also, Fig. 11B An example of an alternative syntax table is shown.
[0187] Fig. 11BTable 1100B is shown, which shows a syntax structure associated with the function geometry_header(), in which an extension of geometry_extension_data_bit instead of geometry_extension_data_byte is introduced before the function byte_alignment(), for example, multiple syntax elements such as gps_lcu_node_size_log2_minus_one and gps_implicit_geom_partition_flag are maintained, and before the syntax elements gps_single_mode_flag and gps_save_state_flag, under the condition that gps_implicit_geom_partition_flag is equal to a specified value (e.g., a non-zero value "1" or "true"), gps_max_num_implicit_qtbt_before_ot and gps_min_size_implicit_qtbt will be executed. Fig.11A Similar, in Fig. 11B In the introduction of the syntax element geometry_extension_data_bit, instead of Fig.11A The syntax element geometry_extension_data_byte in . For example, in Fig. 11B In the embodiment, as shown in block 1110B, the syntax element geometry_extension_flag is introduced. Under the condition that the syntax element geometry_extension_flag is equal to a specified value (e.g., a non-zero value of "1" or "true"), the syntax element geometry_extension_length is introduced, and the condition that the function more_data_in_geometry_header_extension() returns a specified value (e.g., "true") is introduced. Under the condition that the function more_data_in_geometry_header_extension() returns a specified value, the syntax element geometry_extension_data_bit is introduced.
[0188] For example, the syntax element geometry_extension_data_bit can have any value. The presence and value of this syntax element does not affect the decoding process specified in this disclosure. A decoder that conforms to this disclosure should ignore the value of each syntax element geometry_header_extension_data_bit. The value of this syntax element does not affect the decoding process specified in this disclosure.
[0189] In addition, the function more_data_in_geometry_header_extension() is as follows:
[0190] If (the current position in the syntax structure of geometry_header()) - (the position immediately following geometry_extension_length) is less than (geometry_extension_length * 8), then the return value of more_data_in_geometry_header_extension() is equal to true. Otherwise, the return value of more_data_in_geometry_header_extension() is equal to false.
[0191] Example 5
[0192] Fig. 12A Shows the extension of the attribute header.
[0193] Fig. 12A Shows Table 1200A, where Table 1200A shows the syntax structure associated with the function attribute_header(), in which the extension is introduced before the function byte_alignment(), as shown in box 1210A. For example, the syntax element attribute_extension_flag is introduced. Under the condition that attribute_extension_flag is equal to a specified value (such as the non-zero value "1" or "true"), the syntax element attribute_extension_length is introduced, and an iterative loop with a variable i that increments from 0 to attribute_extension_length - 1 (e.g., i < attribute_extension_length) is introduced. In the iterative loop with the variable i, the syntax element attribute_extension_data_byte[i] is introduced.
[0194] For example, the syntax element attribute_extension_flag equal to 0 indicates that syntax elements such as attribute_extension_length and attribute_extension_data_byte are not present in the syntax structure "attributeheader". In addition, the syntax element attribute_extension_flag equal to 1 indicates that syntax elements such as attribute_extension_length and attribute_extension_data_byte may be present in the syntax structure "attributeheader". In addition, in a codestream conforming to the present disclosure, the syntax element attribute_extension_flag shall be equal to 0. However, some uses of the syntax element attribute_extension_flag equal to 1 may be specified in other versions, and a decoder conforming to the present disclosure shall allow the value of the syntax element attribute_extension_flag equal to 1 to appear in the syntax.
[0195] In addition, the syntax element attribute_extension_length specifies the length of the attribute extension data in bytes, excluding the bits used to transmit the syntax element attribute_extension_length itself. When attribute_extension_length is not present, the value of attribute_extension_length is inferred to be equal to 0. Although the syntax element attribute_extension_length is not present in codestreams conforming to the present disclosure, some uses of the syntax element attribute_extension_length may be specified in other versions, and decoders conforming to the present disclosure should allow the syntax element attribute_extension_length to be present and in the range of 0 to N (e.g., N is 256), including the end value.
[0196] In addition, the syntax element attribute_extension_data_byte[i] can have any value. The presence and value of this syntax element does not affect the decoding process specified in this disclosure. A decoder that conforms to this disclosure should ignore the value of each syntax element attribute_extension_data_byte[i]. The value of this syntax element does not affect the decoding process specified in this disclosure.
[0197] also, Fig. 12B An example of an alternative syntax table is shown.
[0198] Fig. 12B Table 1200B is shown, which shows a syntax structure associated with the function attribute_header(), wherein an extension of attribute_extension_data_bit instead of attribute_extension_data_byte is introduced before the function byte_alignment(), as shown in block 1210B, for example, a syntax element attribute_extension_flag is introduced. Under the condition that attribute_extension_flag is equal to a specified value (e.g., a non-zero value "1" or "true"), a syntax element attribute_extension_length is introduced, and a condition that the function more_data_in_attribute_header_extension() returns a specified value (e.g., "true") is introduced. Under the condition that the function more_data_in_geometry_header_extension() returns a specified value, a syntax element attribute_extension_data_bit is introduced.
[0199] For example, the syntax element attribute_extension_data_bit can have any value. The presence and value of this syntax element does not affect the decoding process specified in this disclosure. A decoder that conforms to this disclosure should ignore the value of each syntax element attribute_header_extension_data_bit. The value of this syntax element does not affect the decoding process specified in this disclosure.
[0200] In addition, the function more_data_in_attribute_header_extension() is as follows:
[0201] If (the current position in the attribute_header() syntax structure) - (the position immediately following the attribute_extension_length) is less than (attribute_extension_length*8), then the return value of more_data_in_attribute_header_extension() is equal to true. Otherwise, the return value of more_data_in_attribute_header_extension() is equal to false.
[0202] Example 6
[0203] Fig.13A The expansion of the geometry slice header is shown.
[0204] Fig.13A Table 1300A is shown, and Table 1300A shows the syntax structure associated with the function geometry_slice_header(), where an extension is introduced before the function byte_alignment(), as shown in block 1310A. For example, the syntax element geometry_slice_extension_flag is introduced. Under the condition that the syntax element geometry_slice_extension_flag is equal to a specified value (such as the non-zero value "1" or "true"), the syntax element geometry_slice_extension_length is introduced, and an iterative loop with a variable i that increments from 0 to geometry_slice_extension_length - 1 (e.g., i < geometry_slice_extension_length) is introduced. In the iterative loop with the variable i, the syntax element geometry_slice_extension_data_byte[i] is introduced.
[0205] For example, the syntax element geometry_slice_extension_flag being equal to 0 indicates that syntax elements such as geometry_slice_extension_length and geometry_slice_extension_data_byte do not exist in the syntax structure "geometry_slice header". In addition, the syntax element geometry_slice_extension_flag being equal to 1 indicates that the syntax element geometry_slice_extension_length and the syntax element geometry_slice_extension_data_byte may exist in the syntax structure "geometry_slice header". Furthermore, in a bitstream conforming to the present disclosure, the syntax element geometry_slice_extension_flag should be equal to 0. However, some uses where the syntax element geometry_slice_extension_flag is equal to 1 may be specified in other versions, and a decoder conforming to this version of the present disclosure should allow the value of the syntax element geometry_slice_extension_flag to be equal to 1 to appear in the syntax.
[0206] In addition, the syntax element geometry_slice_extension_length specifies the length of the geometry_slice extension data in bytes, excluding the bits used to transmit the syntax element sequence_extension_length itself. When sequence_extension_length is not present, the value of geometry_slice_extension_length is inferred to be equal to 0. Although the syntax element geometry_slice_extension_length is not present in codestreams conforming to the present disclosure, some uses of the syntax element sequence_extension_length may be specified in other versions, and decoders conforming to the present disclosure should allow the syntax element geometry_slice_extension_length to be present and in the range of 0 to N (e.g., N is 256), inclusive.
[0207] In addition, the syntax element geometry_slice_extension_data_byte[i] can have any value. The presence and value of this syntax element does not affect the decoding process specified in this disclosure. A decoder that conforms to this disclosure should ignore the value of each syntax element geometry_slice_extension_data_byte[i]. The value of this syntax element does not affect the decoding process specified in this disclosure.
[0208] also, Fig. 13B An example of an alternative syntax table is shown.
[0209] Fig. 13BTable 1300B is shown, which shows a syntax structure associated with the function geometry_slice_header(), where an extension of geometry_slice_extension_data_bit instead of geometry_slice_extension_data_byte is introduced before the function byte_alignment(), as shown in block 1310B, for example, the syntax element geometry_slice_extension_flag is introduced. Under the condition that geometry_slice_extension_flag is equal to a specified value (e.g., a non-zero value "1" or "true"), the syntax element geometry_slice_extension_length is introduced, and the condition that the function more_data_in_geometry_slice_header_extension() returns a specified value (e.g., "true") is introduced. Under the condition that the function more_data_in_geometry_slice_header_extension() returns a specified value, the syntax element geometry_slice_extension_data_bit is introduced.
[0210] For example, the syntax element geometry_slice_extension_data_bit can have any value. The presence and value of this syntax element does not affect the decoding process specified in this disclosure. A decoder that conforms to this disclosure should ignore the value of each syntax element geometry_slice_header_extension_data_bit. The value of this syntax element does not affect the decoding process specified in this disclosure.
[0211] In addition, the function more_data_in_geometry_slice_header_extension() is as follows:
[0212] If (the current position in the geometry_slice_header() syntax structure) - (the position immediately following the geometry_slice_extension_length) is less than (geometry_slice_extension_length*8), then the return value of more_data_in_geometry_slice_header_extension() is equal to true. Otherwise, the return value of more_data_in_geometry_slice_header_extension() is equal to false.
[0213] Example 7
[0214] Fig.14A Shows an extension of the attribute slice header.
[0215] Fig.14A Table 1400A is shown. Table 1400A shows the syntax structure associated with the function attribute_slice_header(), where the extension is introduced before the function byte_alignment(), as shown in box 1410A. For example, the syntax element attribute_slice_extension_flag is introduced. Under the condition that attribute_slice_extension_flag is equal to a specified value (for example, the non-zero value "1" or "true"), the syntax element attribute_slice_extension_length is introduced, and an iterative loop with a variable i that increments from 0 to attribute_slice_extension_length - 1 (for example, i < attribute_slice_extension_length) is introduced. In the iterative loop with the variable i, the syntax element attribute_slice_extension_data_byte[i] is introduced.
[0216] For example, the syntax element attribute_slice_extension_flag being equal to 0 indicates that syntax elements such as attribute_slice_extension_length and attribute_slice_extension_data_byte do not exist in the syntax structure "attribute_slice header". In addition, the syntax element attribute_slice_extension_flag being equal to 1 indicates that syntax elements such as attribute_slice_extension_length and attribute_slice_extension_data_byte may exist in the syntax structure "attribute_slice header". In addition, in a bitstream conforming to the present disclosure, the syntax element attribute_slice_extension_flag should be equal to 0. However, some uses where the syntax element attribute_slice_extension_flag is equal to 1 can be specified in other versions, and a decoder conforming to the present disclosure should allow the value of the syntax element attribute_slice_extension_flag to be equal to 1 to appear in the syntax.
[0217] In addition, the syntax element attribute_slice_extension_length specifies the length of the attribute_slice extension data in bytes, excluding the bits used to transmit the syntax element sequence_extension_length itself. When attribute_slice_extension_length is not present, the value of attribute_slice_extension_length is inferred to be equal to 0. Although the syntax element attribute_slice_extension_length is not present in codestreams conforming to the present disclosure, some uses of the syntax element sequence_extension_length may be specified in other versions, and decoders conforming to the present disclosure should allow the syntax element attribute_slice_extension_length to be present and in the range of 0 to N (e.g., N is 256), including the end value.
[0218] In addition, the syntax element attribute_slice_extension_data_byte[i] can have any value. The presence and value of this syntax element does not affect the decoding process specified in this disclosure. A decoder that conforms to this disclosure should ignore the value of each syntax element attribute_slice_extension_data_byte[i]. The value of this syntax element does not affect the decoding process specified in this disclosure.
[0219] also, Fig. 14B An example of an alternative syntax table is shown.
[0220] Fig. 14BTable 1400B is shown, which shows a syntax structure associated with the function attribute_slice_header(), wherein an extension of attribute_slice_extension_data_bit instead of attribute_slice_extension_data_byte is introduced before the function byte_alignment(), as shown in block 1410B, for example, a syntax element attribute_slice_extension_flag is introduced. Under the condition that attribute_slice_extension_flag is equal to a specified value (e.g., a non-zero value "1" or "true"), a syntax element attribute_slice_extension_length is introduced, and a condition that the function more_data_in_attribute_slice_header_extension() returns a specified value (e.g., "true") is introduced. Under the condition that the function more_data_in_attribute_slice_header_extension() returns a specified value, a syntax element attribute_slice_extension_data_bit is introduced.
[0221] For example, the syntax element attribute_slice_extension_data_bit can have any value. The presence and value of this syntax element does not affect the decoding process specified in this disclosure. A decoder that conforms to this disclosure should ignore the value of each syntax element attribute_slice_header_extension_data_bit. The value of this syntax element does not affect the decoding process specified in this disclosure.
[0222] In addition, the function more_data_in_attribute_slice_header_extension() is as follows:
[0223] If (the current position in the attribute_slice_header() syntax structure) - (the position immediately following the attribute_slice_extension_length) is less than (attribute_slice_extension_length*8), then the return value of more_data_in_attribute_slice_header_extension() is equal to true. Otherwise, the return value of more_data_in_attribute_slice_header_extension() is equal to false.
[0224] Example 8
[0225] Fig.15A Shows an extension of the general attribute data bitstream.
[0226] Fig.15A Shows Table 1500A, where Table 1500A shows the syntax structure associated with the function general_attribute_data_bitstream(), in which the extension is introduced before the function byte_alignment(), as shown in box 1510A. For example, the syntax element attribute_data_extension_flag is introduced. Under the condition that attribute_data_extension_flag is equal to a specified value (e.g., the non-zero value "1" or "true"), the syntax element attribute_data_extension_length is introduced, and an iterative loop with a variable i that increments from 0 to attribute_data_extension_length - 1 (e.g., i < attribute_data_extension_length) is introduced. In the iterative loop with the variable i, the syntax element attribute_data_extension_data_byte[i] is introduced.
[0227] For example, the syntax element attribute_data_extension_flag being equal to 0 indicates that syntax elements such as attribute_data_extension_length and attribute_extension_data_byte do not exist in the syntax structure "general_attribute_data_bitstream". In addition, the syntax element attribute_data_extension_flag being equal to 1 indicates that syntax elements such as attribute_data_extension_length and attribute_extension_data_byte may exist in the syntax structure "general_attribute_data_bitstream". In addition, in a bitstream compliant with the present disclosure, the syntax element attribute_data_extension_flag should be equal to 0. However, some uses where the syntax element attribute_data_extension_flag is equal to 1 can be specified in other versions, and a decoder compliant with the present disclosure should allow the value of the syntax element attribute_data_extension_flag to be equal to 1 to appear in the syntax.
[0228] In addition, the syntax element attribute_data_extension_length specifies the length of the attribute extension data in bytes, excluding the bits used to transmit the syntax element sequence_extension_length itself. When attribute_data_extension_length is not present, the value of attribute_data_extension_length is inferred to be equal to 0. Although the syntax element attribute_data_extension_length is not present in codestreams conforming to the present disclosure, some uses of the syntax element attribute_data_extension_length may be specified in other versions, and decoders conforming to the present disclosure should allow the syntax element attribute_data_extension_length to be present and in the range of 0 to N (e.g., N is 256), including the end value.
[0229] In addition, the syntax element attribute_extension_data_byte[i] can have any value. The presence and value of this syntax element does not affect the decoding process specified in this disclosure. A decoder that conforms to this disclosure should ignore the value of each syntax element attribute_extension_data_byte[i]. The value of this syntax element does not affect the decoding process specified in this disclosure.
[0230] Fig. 15B An example of an alternative syntax table is shown.
[0231] Fig. 15BTable 1500B is shown, which shows a syntax structure associated with the function general_attribute_data_bitstream(), wherein an extension of attribute_extension_data_bit instead of attribute_extension_data_byte is introduced before the function byte_alignment(), as shown in block 1510B, for example, the syntax element attribute_data_extension_flag is introduced. Under the condition that attribute_data_extension_flag is equal to a specified value (e.g., a non-zero value "1" or "true"), the syntax element attribute_data_extension_length is introduced, and the condition that the function more_data_in_general_attribute_data_bitstream() returns a specified value (e.g., "true") is introduced. Under the condition that the function more_data_in_general_attribute_data_bitstream() returns a specified value, the syntax element attribute_extension_data_bit is introduced.
[0232] For example, the syntax element attribute_extension_data_bit can have any value. The presence and value of this syntax element does not affect the decoding process specified in this disclosure. A decoder that conforms to this disclosure should ignore the value of each syntax element general_attribute_data_bitstream. The value of this syntax element does not affect the decoding process specified in this disclosure.
[0233] In addition, the function more_data_in_general_attribute_data_bitstream() is as follows:
[0234] If (the current position in the general_attribute_data_bitstream() syntax structure) - (the position immediately following the attribute_data_extension_length) is less than (attribute_data_extension_length*8), then the return value of more_data_in_general_attribute_data_bitstream() is equal to true. Otherwise, the return value of more_data_in_general_attribute_data_bitstream() is equal to false.
[0235] Accordingly, an embodiment of a code stream encoding process for extension is provided below.
[0236] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in box 610, a code stream associated with the GPCC is encoded to determine extended data, and the code stream includes a syntax structure having syntax elements associated with an extension flag, including: encoding the syntax elements associated with the extension flag based on the extended data; in response to determining that the syntax elements associated with the extension flag are not equal to zero, determining the syntax elements associated with the extension length based on the extended data; based on the syntax elements associated with the extension length, encoding one or more syntax elements associated with the extended data into the syntax structure.
[0237] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in block 610, in response to determining that the syntax element associated with the extension flag is not equal to zero, determining the syntax element associated with the extension length based on the extension data includes: in response to determining that the value of the extension length is equal to zero, determining that the syntax element associated with the extension length does not exist in the syntax structure; in response to determining that the syntax element associated with the extension length exists in the syntax structure, encoding the syntax element associated with the extension length into the syntax structure based on the length of the extension data in byte form. For example, the value range of the extension length is 0 to 256.
[0238] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in box 610, based on the syntax element associated with the extended length, one or more syntax elements associated with the extended data are encoded, including: performing a corresponding operation group among a plurality of operation groups defined by an iterative loop, the iterative loop having a variable, the variable incrementing from zero to a maximum integer less than the value of the extended length, including: encoding a syntax element associated with the extended data in byte form into a syntax structure.
[0239] In some embodiments, Figure 6 As shown in the code stream encoding method 600, in box 610, one or more syntax elements associated with the extended data are encoded based on the syntax elements associated with the extended length, including: iterative execution: in response to determining that there is more data in bit form in the syntax structure based on the extended length, a syntax element associated with the extended data in bit form is encoded into the syntax structure.
[0240] In some embodiments, Figure 6As shown in the code stream encoding method 600 shown, in box 610, iterative execution: in response to determining that there are more data in the form of bits in the syntax structure based on the extended length, a syntax element associated with the extended data in the form of bits is encoded into the syntax structure, including: iterative execution: determining whether it is true or false that the difference between the current position in the syntax structure and the position immediately after the extended length is less than the value calculated by multiplying the extended length by eight; in response to determining that the difference between the current position in the syntax structure and the position immediately after the extended length is less than the value calculated by multiplying the extended length by eight is true, encoding a syntax element associated with the extended data in the form of one bit into the syntax structure.
[0241] In some embodiments, Figure 6 As shown in the codestream encoding method 600, at block 610, a syntax structure is associated with a sequence header, a geometry header, an attribute header, a geometry slice header, an attribute slice header, or a general attribute data codestream of a GPCC.
[0242] Computing equipment
[0243] In addition, any suitable computing system may be used to perform a code stream encoding operation (such as the code stream encoder described herein) or a code stream decoding operation (such as the code stream decoder described herein). Fig.16 An example of a computing device 1600 that can implement methods such as the code stream encoding method or the code stream decoding method in this document is shown.
[0244] In some embodiments, the computing device 1600 may include a processor 1610, which is coupled to a memory 1612 and is used to execute program instructions stored in the memory 1612 to perform operations for implementing a code stream decoding method associated with a code stream decoder and / or a code stream encoding method associated with a code stream encoder, for GPCC, such as AVS-GPCC.
[0245] For example, processor 1610 may include a microprocessor, an application-specific integrated circuit (ASIC), a state machine, or other processing device. Processor 1610 may include one or more processing units. Such a processor may include or may communicate with a computer-readable medium that stores instructions that, when executed by processor 1610, cause the processor to perform the operations described herein. Memory 1612 may include any suitable non-temporary computer-readable medium.
[0246] For example, computer-readable media may include any electronic, optical, magnetic, or other storage device that can provide computer-readable instructions or other program codes to the processor. Non-limiting examples of computer-readable media include disks, memory chips, ROMs, RAMs, ASICs, configured processors, optical memories, tapes or other magnetic memories, or any other medium from which a computer processor can read instructions. Instructions may include processor-specific instructions generated by a compiler and / or interpreter according to code written in any suitable computer programming language including, for example, C, C++, C#, Visual Basic, Java, Python, Perl, JavaScript, and ActionScript.
[0247] In some embodiments, the present disclosure provides a code stream decoding system, including: a processor and a memory coupled to a processing unit, wherein the processor is configured to execute program instructions stored in the memory to perform any of the above-mentioned code stream decoding methods.
[0248] In some embodiments, the present disclosure provides a non-transitory computer-readable medium having a program code stored thereon, and the program code can be executed by a processor to perform any of the above-mentioned code stream decoding methods.
[0249] In some embodiments, the present disclosure provides a code stream encoding system, including: a processor and a memory coupled to a processing unit, wherein the processor is configured to execute program instructions stored in the memory to perform any of the above-mentioned code stream encoding methods.
[0250] In some embodiments, the present disclosure provides a non-transitory computer-readable medium having a program code stored thereon, and the program code can be executed by a processor to perform any of the above-mentioned bitstream encoding methods.
[0251] It will be appreciated by those skilled in the art that the various units, algorithms, and steps described and disclosed in the embodiments of the present disclosure are implemented using electronic hardware or a combination of computer software and electronic hardware. Whether these functions are run in hardware or software depends on the application situation and the design requirements of the technical solution. It will be appreciated by those skilled in the art that the workflows of the above-mentioned systems, devices, and units are substantially the same, and reference may be made to the workflows of the systems, devices, and units in the above-mentioned embodiments. For the convenience and brevity of description, these workflows will not be described in detail.
[0252] It should be understood that the systems, devices, and methods disclosed in the embodiments of the present disclosure may be implemented in other ways. The above embodiments are exemplary only. The division of units is based only on logical functions, and there are other divisions in implementation. Multiple units or components may be combined or integrated into another system. Some features may also be omitted or skipped. On the other hand, the mutual coupling, direct coupling, or communication coupling shown or discussed is implemented indirectly or communicatively through some ports, devices, or units in electrical, mechanical, or other forms.
[0253] The units used for illustration as separate components may or may not be physically separated; the units used for illustration may or may not be physical units, i.e., located in one place or distributed on multiple network units; some or all of the units are used according to the purpose of the embodiment. In addition, the various functional units in various embodiments may be integrated into one processing unit, or may be physically independent units, or two or more units may be integrated into one processing unit.
[0254] If the software functional unit is implemented as a product and used and sold, it can be stored in a readable storage medium in a computer. Based on this understanding, the technical solution provided by the present disclosure can be implemented in whole or in part in the form of a software product. Alternatively, a part of the technical solution that is beneficial to the prior art can be implemented in the form of a software product. The software product in the computer is stored in a storage medium, including a plurality of commands for a computing device (such as a personal computer, a server, or a network device) to run all or part of the steps disclosed in the embodiment of the present disclosure. The storage medium includes a USB disk, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a floppy disk, or other media that can store program code.
[0255] While the present disclosure has been described in connection with what is considered to be the most practical and preferred embodiment, it is to be understood that the disclosure is not limited to the disclosed embodiment, but is intended to cover various arrangements made without departing from the scope of the broadest interpretation of the appended claims.
Claims
1. A code stream decoding method, comprising: A codestream associated with geometric point cloud coding (GPCC) is decoded to determine extension data, the codestream including a syntax structure having syntax elements associated with an extension flag.
2. The method according to claim 1, wherein: Decoding the code stream associated with the GPCC to determine the extension data, the code stream comprising the syntax structure having the syntax element associated with the extension flag, comprising: decoding the syntax element associated with the extension flag; In response to determining that the syntax element associated with the extension flag is not equal to zero, determining a syntax element associated with an extension length based on the extension data; and One or more syntax elements associated with the extension data are decoded based on the syntax element associated with the extension length.
3. The method according to claim 2, wherein: In response to determining that the syntax element associated with the extension flag is not equal to zero, determining the syntax element associated with the extension length based on the extension data, comprising: In response to determining that the syntax element associated with the extension length is not present in the syntax structure, determining a value of the extension length equal to zero; and In response to determining that the syntax element associated with the extension length is present in the syntax structure, the syntax element associated with the extension length is decoded from the syntax structure to determine the value of the extension length.
4. The method according to claim 3, wherein: Decoding one or more syntax elements associated with the extension data based on the syntax element associated with the extension length comprises: performing a corresponding group of operations of a plurality of groups of operations defined by an iterative loop having a variable that increments from zero to a maximum integer less than the value of the extension length, comprising: A syntax element associated with the extension data in byte form is decoded from the syntax structure.
5. The method according to claim 3, wherein: Decoding one or more syntax elements associated with the extension data based on the syntax element associated with the extension length comprises: Iteratively performing: in response to determining that more data in bit form exists in the syntax structure based on the extension length, decoding a syntax element associated with the extended data in bit form from the syntax structure.
6. The method according to claim 5, wherein: Iteratively performing: in response to determining that more data in bit form exists in the syntax structure based on the extension length, decoding a syntax element associated with the extended data in bit form from the syntax structure, comprising: Iterative execution: determining whether it is true or false that a difference between a current position in the grammatical structure and a position immediately following the extension length is less than a value calculated by multiplying the extension length by eight; In response to determining that the difference between the current position in the syntax structure and the position immediately following the extension length is less than the value calculated as the extension length multiplied by eight is true, decoding a syntax element associated with the extension data in one bit form from the syntax structure.
7. The method according to any one of claims 1 to 6, wherein: The syntax structure is associated with a sequence header, a geometry header, an attribute header, a geometry slice header, an attribute slice header, or a general attribute data code stream of the GPCC.
8. The method according to claim 1, further comprising: In a syntax structure associated with an attribute header, performing a corresponding group of operations from a plurality of groups of operations defined by a first iteration loop having a first variable that increments from zero to a maximum integer less than a sum of a value of a maximum number of attributes minus one code plus one, comprising: Decoding a syntax element associated with the attribute presence flag code indexed by the first variable; and In response to determining that the syntax element associated with the attribute presence flag code indexed by the first variable is not equal to zero, performing operations including the following: In response to determining that the syntax element of the SPS multi-dataset flag code is not equal to zero, determining a syntax element associated with the multi-dataset flag code indexed by the first variable; In response to determining that the syntax element associated with the multiple data set flag code indexed by the first variable is not equal to zero, determining a syntax element associated with an attribute number data set minus one code indexed by the first variable; and Executing a corresponding group of operations from a plurality of groups of operations defined by a second iteration loop having a second variable that increments from zero to a maximum integer less than the sum of the value of the attribute quantity data set minus one code indexed by the first variable plus one, comprising: decoding a syntax element associated with an output bit depth minus one code indexed by the first variable and the second variable; In response to determining that the first variable is equal to zero or the first variable is not equal to zero, decoding a first set of syntax elements indexed by the first variable and the second variable; In response to determining that the first variable is equal to zero, decoding a second set of syntax elements indexed by the second variable; and In response to determining that the first variable is not equal to zero, decoding a third set of syntax elements indexed by the second variable; and A plurality of syntax elements in the syntax structure associated with the attribute header are decoded.
9. The method according to claim 8, wherein: In response to determining that the syntax element of the SPS multi-dataset flag code is not equal to zero, determining the syntax element associated with the multi-dataset flag code indexed by the first variable includes: determining whether the syntax element associated with the multiple data set flag code indexed by the first variable exists; In response to the syntax element associated with the multiple data set flag code indexed by the first variable being present, decoding the syntax element associated with the multiple data set flag code indexed by the first variable; and In response to the syntax element associated with the multiple data set flag code indexed by the first variable not being present, determining that the syntax element associated with the multiple data set flag code indexed by the first variable is equal to zero.
10. The method according to claim 8, wherein: In response to determining that the syntax element associated with the multiple data set flag code indexed by the first variable is not equal to zero, determining the syntax element associated with the attribute number data set minus one code indexed by the first variable includes: In response to determining that the syntax element associated with the attribute quantity data set indexed by the first variable minus one is present, decoding the syntax element associated with the attribute quantity data set indexed by the first variable minus one; and In response to determining that the syntax element associated with the attribute quantity data set minus one indexed by the first variable does not exist, determining that the syntax element associated with the attribute quantity data set minus one indexed by the first variable is equal to zero.
11. The method according to claim 8, wherein: In response to determining that the first variable is equal to zero or the first variable is not equal to zero, decoding the first set of syntax elements indexed by the first variable and the second variable includes: decoding a syntax element associated with a maximum number of neighbors indexed by the first variable and the second variable log2 minus seven; decoding a syntax element associated with a level of detail number code indexed by the first variable and the second variable; decoding a syntax element associated with a maximum number of predicted neighbors code indexed by the first variable and the second variable; Decoding a syntax element associated with an intra lode flag code indexed by the first variable and the second variable; decoding a syntax element associated with a cross-attribute type prediction code indexed by the first variable and the second variable; and In response to determining that the syntax element associated with the cross-attribute type prediction code indexed by the first variable and the second variable is not equal to zero, performing operations including: decoding a syntax element associated with an attribute coding order code indexed by the first variable and the second variable; decoding a syntax element associated with a cross-attribute type prediction parameter code indexed by the first variable and the second variable; and A syntax element associated with a cross-attribute type prediction parameter two code indexed by the first variable and the second variable is decoded.
12. The method according to claim 8, wherein: In response to determining that the first variable is equal to zero, decoding the second set of syntax elements indexed by the second variable comprises: decoding a syntax element associated with the cross-component prediction code indexed by the second variable; decoding a syntax element associated with a sequence switch code indexed by the second variable; decoding a syntax element associated with a half-zero run length enabler code indexed by the second variable; decoding a syntax element associated with a chroma Qp offset Cb code indexed by the second variable; Decoding a syntax element associated with a chroma Qp offset Cr code indexed by the second variable; decoding a syntax element associated with a color reordering mode code indexed by the second variable; and A syntax element associated with a Color-Golomb Quantity code indexed by the second variable is decoded.
13. The method according to claim 8, wherein: In response to determining that the first variable is not equal to zero, decoding the third set of syntax elements indexed by the second variable comprises: decoding a syntax element associated with a most recent prediction parameter indexed by the second variable; decoding a syntax element associated with a most recent prediction parameter second code indexed by the second variable; decoding a syntax element associated with the axis bias code indexed by the second variable; decoding a syntax element associated with a reflectivity reordering mode code indexed by the second variable; and A syntax element associated with the reflectivity-Golomb code indexed by the second variable is decoded.
14. The method according to claim 8, wherein: Decoding the plurality of syntax elements in the syntax structure associated with the attribute header includes: decoding a fourth set of syntax elements indexed by the first variable and the second variable; In response to determining that the attribute presence flag code indexed by the first index is not equal to zero, decoding a fifth group of syntax elements indexed by the second variable; and In response to determining that the attribute presence flag code indexed by the second index is not equal to zero, decoding the reflectivity group prediction code indexed by the second index.
15. The method according to claim 14, wherein: Decoding the fourth set of syntax elements indexed by the first variable and the second variable, comprising: decoding a syntax element associated with a transform code indexed by the first variable and the second variable; In response to determining that the syntax element associated with the transform code indexed by the first variable and the second variable is not equal to zero and the syntax element associated with the attribute presence flag code indexed by the first variable is not equal to zero, performing operations including: decoding a syntax element associated with a maximum number of coefficients code indexed by the first variable and the second variable; decoding a syntax element associated with a coefficient length control code indexed by the first variable and the second variable; Decoding syntax elements associated with attribute transform Qp delta codes indexed by the first variable and the second variable; decoding a syntax element associated with an initial predicted transform rate code indexed by the first variable and the second variable; decoding a syntax element associated with a transform resource layer code indexed by the first variable and the second variable; Decoding a syntax element associated with an attribute transform quantity point code indexed by the first variable and the second variable; decoding a syntax element associated with a maximum transform number code indexed by the first variable and the second variable; decoding syntax elements associated with the Qp offset DC code indexed by the first variable and the second variable; and Syntax elements associated with the Qp offset AC code indexed by the first variable and the second variable are decoded.
16. The method according to claim 14, wherein: In response to determining that the attribute presence flag code indexed by the first index is not equal to zero, decoding the fifth set of syntax elements indexed by the second variable includes: In response to determining that the syntax element associated with the attribute presence flag code indexed by the first index is not equal to zero, decoding the syntax elements associated with the chroma Qp offset DC code indexed by the second variable and the syntax elements associated with the chroma Qp offset AC code indexed by the second variable.
17. The method according to claim 1, further comprising: In a syntax structure associated with a general attribute data code stream, performing a corresponding group of operations in a plurality of groups of operations defined by a third iteration loop having a third variable that increments from zero to a maximum integer less than a sum of a value of a maximum number of attribute minus one codes plus one, comprising: In response to determining that the third variable is equal to zero and the attribute existence flag code indexed by the first index is not equal to zero, performing operations including the following: executing an attribute data color function to decode a syntax element associated with the attribute data color code; and Executing a byte alignment function to align data in the code stream in units of bytes; and In response to determining that the third variable is not equal to zero and the attribute existence flag code indexed by the second index is not equal to zero, performing operations including the following: executing an attribute data reflectivity function to decode a syntax element associated with the attribute data reflectivity code; and The byte alignment function is performed.
18. The method of claim 1, further comprising: In a syntax structure associated with a general attribute data code stream, performing a corresponding group of operations in a plurality of groups of operations defined by a third iteration loop having a third variable that increments from zero to a maximum integer less than a sum of a value of a maximum number of attribute minus one codes plus one, comprising: In response to determining that the third variable is equal to zero and the attribute existence flag code indexed by the first index is not equal to zero, performing operations including the following: performing a corresponding group of operations in a plurality of groups of operations defined by a fourth iteration loop, the fourth iteration loop having a fourth variable, The fourth variable increases from zero to the maximum integer less than the sum of the value of the maximum number attribute minus one code plus one, including: executing an attribute data color function to decode a syntax element associated with the attribute data color code; and Executing a byte alignment function to align data in the code stream in units of bytes; and In response to determining that the first variable is not equal to zero and the attribute existence flag code indexed by the second index is not equal to zero, performing operations including the following: performing the corresponding group of operations of the plurality of groups of operations defined by the fourth iterative loop, the fourth iterative loop having a fourth variable incremented from zero to the largest integer less than the sum of the value of the maximum number of attributes minus one code plus one, comprising: executing an attribute data reflectivity function to decode a syntax element associated with the attribute data reflectivity code; and The byte alignment function is performed.
19. A code stream decoding system, comprising: processor; as well as A memory coupled to the processing unit, wherein the processing unit is configured to execute program instructions stored in the memory to perform the method according to any one of claims 1 to 18.
20. A non-transitory computer readable medium having program code stored thereon, the program code being executable by a processor to perform the method according to any one of claims 1 to 18.
21. A code stream encoding method, comprising: A codestream associated with geometric point cloud coding (GPCC) is encoded to determine extension data, the codestream including a syntax structure having syntax elements associated with an extension flag.
22. The method according to claim 21, wherein: encoding the code stream associated with the GPCC to determine the extended data, the code stream comprising the syntax structure having the syntax element associated with the extended flag, comprising: encoding the syntax element associated with the extension flag based on the extension data; In response to determining that the syntax element associated with the extension flag is not equal to zero, determining a syntax element associated with an extension length based on the extension data; and One or more syntax elements associated with the extension data are encoded into the syntax structure based on the syntax element associated with the extension length.
23. The method according to claim 22, wherein: In response to determining that the syntax element associated with the extension flag is not equal to zero, determining the syntax element associated with the extension length based on the extension data, comprising: In response to determining that the value of the extension length is equal to zero, determining that the syntax element associated with the extension length is not present in the syntax structure; and In response to determining that the syntax element associated with the extension length is present in the syntax structure, the syntax element associated with the extension length is encoded into the syntax structure based on a length of the extension data in bytes.
24. The method according to claim 23, wherein: Encoding the one or more syntax elements associated with the extension data based on the syntax element associated with the extension length comprises: Executing a corresponding group of operations of a plurality of groups of operations defined by an iterative loop having a variable that increments from zero to a maximum integer that is less than the value of the extension length, comprising: A syntax element associated with the extension data in byte form is encoded into the syntax structure.
25. The method according to claim 23, wherein: Encoding the one or more syntax elements associated with the extension data based on the syntax element associated with the extension length comprises: Iteratively performing: in response to determining that more data in bit form exists in the syntax structure based on the extension length, encoding a syntax element associated with the extended data in bit form into the syntax structure.
26. The method according to claim 25, wherein: Iteratively executing: in response to determining that more data in bit form exists in the syntax structure based on the extension length, encoding a syntax element associated with the extended data in bit form into the syntax structure, comprising: Iterative execution: determining whether it is true or false that a difference between a current position in the grammatical structure and a position immediately following the extension length is less than a value calculated by multiplying the extension length by eight; In response to determining that the difference between the current position in the syntax structure and the position immediately following the extension length is less than the value calculated by multiplying the extension length by eight is true, encoding a syntax element associated with the extension data in one bit into the syntax structure.
27. The method according to any one of claims 21 to 26, wherein: The syntax structure is associated with a sequence header, a geometry header, an attribute header, a geometry slice header, an attribute slice header, or a general attribute data code stream of the GPCC.
28. The method of claim 21, further comprising: In a syntax structure associated with an attribute header, performing a corresponding group of operations from a plurality of groups of operations defined by a first iteration loop having a first variable that increments from zero to a maximum integer less than a sum of a value of a maximum number of attributes minus one code plus one, comprising: encoding a syntax element associated with the attribute presence flag code indexed by the first variable; and In response to determining that the syntax element associated with the attribute presence flag code indexed by the first variable is not equal to zero, performing operations including the following: In response to determining that the syntax element of the SPS multi-dataset flag code is not equal to zero, determining a syntax element associated with the multi-dataset flag code indexed by the first variable; In response to determining that the syntax element associated with the multiple data set flag code indexed by the first variable is not equal to zero, determining a syntax element associated with an attribute number data set minus one code indexed by the first variable; and Executing a corresponding group of operations from a plurality of groups of operations defined by a second iteration loop having a second variable that increments from zero to a maximum integer less than the sum of the value of the attribute quantity data set minus one code indexed by the first variable plus one, comprising: encoding a syntax element associated with an output bit depth minus one code indexed by the first variable and the second variable; In response to determining that the first variable is equal to zero or the first variable is not equal to zero, encoding a first set of syntax elements indexed by the first variable and the second variable; In response to determining that the first variable is equal to zero, encoding a second set of syntax elements indexed by the second variable; and In response to determining that the first variable is not equal to zero, encoding a third set of syntax elements indexed by the second variable; and A plurality of syntax elements in the syntax structure associated with the attribute header are encoded.
29. The method according to claim 28, wherein: In response to determining that the syntax element of the SPS multi-dataset flag code is not equal to zero, determining the syntax element associated with the multi-dataset flag code indexed by the first variable includes: determining whether the syntax element associated with the multiple data set flag code indexed by the first variable exists; In response to the syntax element associated with the multiple data set flag code indexed by the first variable being present, encoding the syntax element associated with the multiple data set flag code indexed by the first variable; and In response to the syntax element associated with the multiple data set flag code indexed by the first variable not being present, determining that the syntax element associated with the multiple data set flag code indexed by the first variable is equal to zero.
30. The method of claim 28, wherein: In response to determining that the syntax element associated with the multiple data set flag code indexed by the first variable is not equal to zero, determining the syntax element associated with the attribute number data set minus one code indexed by the first variable includes: In response to determining that the syntax element associated with the attribute quantity data set indexed by the first variable minus one is present, encoding the syntax element associated with the attribute quantity data set indexed by the first variable minus one; and In response to determining that the syntax element associated with the attribute quantity data set minus one indexed by the first variable does not exist, determining that the syntax element associated with the attribute quantity data set minus one indexed by the first variable is equal to zero.
31. The method of claim 21, further comprising: In a syntax structure associated with a general attribute data code stream, performing a corresponding group of operations in a plurality of groups of operations defined by a third iteration loop having a third variable that increments from zero to a maximum integer less than a sum of a value of a maximum number of attribute minus one codes plus one, comprising: In response to determining that the third variable is equal to zero and the attribute existence flag code indexed by the first index is not equal to zero, performing operations including the following: executing an attribute data color function to encode a syntax element associated with the attribute data color code; and Executing a byte alignment function to align data in the code stream in units of bytes; and In response to determining that the third variable is not equal to zero and the attribute existence flag code indexed by the second index is not equal to zero, performing operations including the following: executing an attribute data reflectivity function to encode a syntax element associated with the attribute data reflectivity code; and The byte alignment function is performed.
32. The method of claim 21, further comprising: In a syntax structure associated with a general attribute data code stream, performing a corresponding group of operations in a plurality of groups of operations defined by a third iteration loop having a third variable that increments from zero to a maximum integer less than a sum of a value of a maximum number of attribute minus one codes plus one, comprising: In response to determining that the third variable is equal to zero and the attribute existence flag code indexed by the first index is not equal to zero, performing operations including the following: performing a corresponding group of operations in a plurality of groups of operations defined by a fourth iteration loop, the fourth iteration loop having a fourth variable, The fourth variable increases from zero to the maximum integer less than the sum of the value of the maximum number attribute minus one code plus one, including: executing an attribute data color function to encode a syntax element associated with the attribute data color code; and Executing a byte alignment function to align data in the code stream in units of bytes; and In response to determining that the first variable is not equal to zero and the attribute existence flag code indexed by the second index is not equal to zero, performing operations including the following: performing the corresponding group of operations of the plurality of groups of operations defined by the fourth iterative loop, the fourth iterative loop having the fourth variable incremented from zero to the largest integer less than the sum of the value of the maximum number of attributes minus one code plus one, comprising: executing an attribute data reflectivity function to encode a syntax element associated with the attribute data reflectivity code; and The byte alignment function is performed.
33. A code stream encoding system, comprising: processor; as well as A memory coupled to the processing unit, wherein the processing unit is configured to execute program instructions stored in the memory to perform the method according to any one of claims 21 to 32.
34. A non-transitory computer readable medium having program code stored thereon, the program code being executable by a processor to perform the method according to any one of claims 21 to 32.