CN119452663A - Geometric point cloud coding code stream encoding and decoding - Google Patents
Geometric point cloud coding code stream encoding and decoding Download PDFInfo
- Publication number
- CN119452663A CN119452663A CN202380050615.2A CN202380050615A CN119452663A CN 119452663 A CN119452663 A CN 119452663A CN 202380050615 A CN202380050615 A CN 202380050615A CN 119452663 A CN119452663 A CN 119452663A
- Authority
- CN
- China
- Prior art keywords
- variable
- code
- zero
- syntax
- attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
公开了码流编码/解码方法和系统。码流编码/解码方法包括编码/解码与几何点云编码(GPCC)关联的码流以确定扩展数据,码流包括具有与扩展标志关联的语法元素的语法结构。
A code stream encoding/decoding method and system are disclosed. The code stream encoding/decoding method includes encoding/decoding a code stream associated with geometric point cloud coding (GPCC) to determine extended data, wherein the code stream includes a syntax structure having syntax elements associated with an extended flag.
Description
Cross Reference to Related Applications
The present application claims priority from U.S. provisional application No. 63/367,576 entitled "extended improvement of geometric point cloud encoding," filed on 7.1, 2022, the entire contents of which are incorporated herein by reference.
Technical Field
The present disclosure relates generally to computer-implemented methods and systems for code stream processing, and more particularly to extended improvements in geometric point cloud coding.
Background
Geometric point cloud coding (geometry point cloud coding, GPCC) is widely used for VR/AR for entertainment and industrial applications, such as High Definition (HD) maps for LiDAR scan compression and navigation of automobiles or robots. However, existing GPCC is not well suited for various point cloud coding (point cloud coding, PCC) inputs. Therefore, improvements in geometric point cloud coding are needed.
Disclosure of Invention
The present disclosure is directed to a code stream encoding/decoding method and system to improve the efficiency of geometric point cloud encoding.
In a first aspect of the present disclosure, a code stream decoding method includes decoding a code stream associated with geometric point cloud encoding (GPCC) to determine extension data, the code stream including a syntax structure having a syntax element associated with an extension flag.
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 configured to execute program instructions stored in the memory to perform the code stream decoding method described above.
In a third aspect of the present disclosure, a non-transitory computer readable medium has program code stored thereon, the program code being executable by a processor to perform the above-described code stream decoding method.
In a fourth aspect of the present disclosure, a code stream encoding method includes encoding a code stream associated with geometric point cloud encoding (GPCC) to determine extension data, the code stream including a syntax structure having a syntax element associated with an extension flag.
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 configured to execute program instructions stored in the memory to perform the code stream encoding method described above.
In a sixth aspect of the present disclosure, a non-transitory computer readable medium has program code stored thereon, the program code being executable by a processor to perform the above-described code stream encoding method.
Drawings
In order to more clearly illustrate the embodiments of the present disclosure or related techniques, the drawings in the embodiments will be briefly described below. It is evident that the drawings are only some embodiments of the present disclosure, from which a person of ordinary skill in the art can obtain other drawings without any cost.
Fig. 1 is a schematic diagram illustrating an encoding module and a decoding module of geometric point cloud encoding (GPCC) applicable to an embodiment of the present disclosure.
Fig. 2A and 2B are schematic diagrams illustrating octree structures and corresponding digital representations applicable to GPCC of embodiments of the present disclosure.
Fig. 3 is a schematic diagram showing the structure of a cube and the relationship with an adjacent cube, which can be applied to an embodiment of the present disclosure.
Fig. 4A to 4D are diagrams illustrating syntax structures associated with a function color_residual_coding()、coded_level_coding(isComponentNoneZero)、attribute_data_reflectance()、zero_run_length_code(useGolomb) applicable to embodiments of the present disclosure.
Fig. 5 is a flowchart illustrating a method of code stream decoding according to an embodiment of the present disclosure.
Fig. 6 is a flowchart illustrating a code stream encoding method according to an embodiment of the present disclosure.
Fig. 7A and 7B are diagrams illustrating syntax structures associated with sequence headers and attribute headers that may be applied to embodiments of the present disclosure.
Fig. 8A is a schematic diagram illustrating a syntax structure associated with a sequence header applicable to an embodiment of the present disclosure.
Fig. 8B1 and 8B2 are schematic diagrams illustrating two parts of a syntax structure associated with an attribute header applicable to an embodiment of the present disclosure.
Fig. 8C is a schematic diagram illustrating an alternative syntax structure associated with a sequence header as may be applied to embodiments of the present disclosure.
Fig. 8D1 and 8D2 are schematic diagrams illustrating two portions of an alternative syntax structure associated with an attribute header that may be applied to embodiments of the present disclosure.
Fig. 9A and 9B are diagrams illustrating syntax structures associated with a general attribute data code stream, which can be applied to embodiments of the present disclosure.
Fig. 10A and 10B are diagrams illustrating syntax structures associated with extensions in sequence headers that may be applied to embodiments of the present disclosure.
Fig. 11A and 11B are diagrams illustrating syntax structures associated with extensions in a geometry header that may be applied to embodiments of the present disclosure.
Fig. 12A and 12B are diagrams illustrating syntax structures associated with extensions in attribute headers that may be applied to embodiments of the present disclosure.
Fig. 13A and 13B are diagrams illustrating syntax structures associated with extensions in a geometric slice header that may be applied to embodiments of the present disclosure.
Fig. 14A and 14B are diagrams illustrating syntax structures associated with extensions in attribute slice headers that may be applied to embodiments of the present disclosure.
Fig. 15A and 15B are diagrams illustrating syntax structures associated with extensions in a generic attribute data stream, which may be applied to embodiments of the present disclosure.
Fig. 16 is a schematic block diagram illustrating an example of a computing device according to an embodiment of the present disclosure.
Detailed Description
The technical content, structural features, achieved objects, and effects of the embodiments of the present disclosure are described in detail below with reference to the accompanying drawings. In particular, the terminology in the embodiments of the disclosure is for the purpose of describing particular embodiments only and is not intended to be limiting of the disclosure.
Geometric Point Cloud Coding (GPCC) is widely used for VR/AR for entertainment and industrial applications, such as LiDAR scan compression and navigation High Definition (HD) maps for automobiles or robots. For example, the motion picture expert group (moving picture experts group, MPEG) promulgates the first edition GPCC standard, as shown in section "MPEG-I (encoded representation of immersive media) -9 th section, geometric-based Point cloud compression, MPEG w19617_d6", and the Audio video coding standard (audio video coding standard, AVS) also developed the GPCC standard (AVS GPCC), as shown in "GPCC WD7.0, N3331". In order to effectively compress the point cloud data, the geometric information of the point cloud is compressed first, and then the corresponding attribute information, including color or reflectivity, is compressed based on the geometric information.
For example, fig. 1 shows a diagram of GPCC encoder 101 and GPCC decoder 102 applicable to the present disclosure. As shown in fig. 1, in GPCC encoder 101 and GPCC decoder 102, the point cloud locations are first encoded, with the attribute encoding being dependent on the decoded geometry. In GPCC encoders 101 and GPCC decoder 102, some modules such as "analyze surface approximation", "region ADAPTIVE HIERARCHICAL transform, RAHT", and "synthesize surface approximation" modules are options that are typically used for static point cloud (class 1) data, some modules such as "generate LOD", "promote (update/promote transform)" and "reverse promote" modules are options that are typically used for dynamically acquired point cloud (class 3) data, and all other modules are typically used for data between class 1 and class 3.
For example, as shown in fig. 1, in GPCC encoder 101 and GPCC decoder 102, a cube axis alignment bounding box is defined by two poles (0, 0), (2 d,2d,2d), where d is the maximum size of a given point cloud in the x, y, or z directions. 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 subcubes, which creates an octree structure that allows a parent cube to have eight subcubes. A given cube has 7 sibling cubes that are cubes of the same size and share at least one identical face/edge/point with the given cube. The volume of the cube is 1/8 of the volume of its parent cube. The cube may contain a number of points, the number of points in the cube depending on the size and location of the cube. The size of the smallest cube for a given point cloud is predefined. As one example, a minimum cube may be defined. For a given point, the parent cube for a given point is defined as the smallest-sized cube that contains the given point. The sibling point of a given point is defined as the point that has the same parent cube as the given point.
For example, fig. 2A and 2B illustrate an octree structure 201 and corresponding digital representation 202 applicable to GPCC of the present disclosure. An octree structure is a recursive data structure that is typically used to describe a three-dimensional space in which there are exactly eight subcubes per internal cube. The space is recursively subdivided into eight octants until the resolution of the subcubes is equal to the size of the point (i.e., the smallest element that is not further subdivided). To represent a cube, an 8-bit binary code following a space-filling curve pattern (Hilbert, morton) is used, with each subcube being assigned a value, such as a "1" (i.e., represented by a first symbol "1") or a "0" (i.e., represented by a second symbol "0"), to indicate that the space in the subcube has any point associated with the subcube, or to indicate that the subcube is empty. Only occupied subcubes (i.e., assigned to "1") are further subdivided. The process of subdivision of the parent cube terminates when the size of the child 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.
Fig. 3 illustrates the structure and relationship to an adjacent cube applicable to the cubes of the present disclosure. Depending on the position of the current cube, one cube may have up to six cubes of the same size sharing one face as shown in FIG. 3. In addition, the current cube may also have some adjacent cubes that share a line or point 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 sharing a face with the parent cube, such as cubes 301 and 302 shown in fig. 3 (a) through (j). The parent cube of the current cube also has up to twelve adjacent cubes of the same common edge size as the parent cube. The parent cube of the current cube also has a maximum of eight adjacent cubes of the same size as the parent cube that share points with the parent cube, such as the center point of the parent cube shared by cubes CC 0、CC1、CC2、CC3、CC4、CC5、CC6 and CC 7.
The octree-based geometric information may 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 neighboring points in a point cloud may have strong correlation, prediction-based coding methods have been developed and used to synthesize and code the point cloud attributes. More specifically, predictions are formed from neighboring coding properties. The difference between the current property and the prediction is then encoded.
In the present disclosure, coding (encoding) is assumed to refer to coding (encoding) and decoding (decoding) methods and systems.
Attribute encoding in AVSGPCC
After encoding the geometric information, the point cloud cubes can be converted into a one-dimensional array using Morton or Hilbert codes/sequences. Each location in the cube has a corresponding Morton or Hilbert code, but some locations may not have any corresponding point cloud properties. In other words, some locations may be empty. The attribute encoding will follow a predefined Morton or Hilbert order. Predictors (predictors) can be generated from points previously encoded in Morton or Hilbert order. The property difference between the current point and its predictor is encoded into the code stream.
To reduce the use of memory, some predefined values have been specified to limit the number of neighbors that can be used to generate predictions. For example, only M data points out of the previous N consecutive encoding points may be used to encode the current attribute. In 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 may be used to form attribute predictors according to a predefined order. If there are fewer than 128 encoding points before the current point, then all of these encoding points will be used as candidates for building attribute predictors. More specifically, K points before the current point are selected according to a predefined Morton or Hilbert order, for example k=6. The new Morton or Hilbert codes for these N points will then 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 for the current location is X. The P point set before the current position and the Q point set after the current position according to the new Morton or Hilbert code order will be selected. Among these predefined K, P, and Q sets of points, M points are selected, which have M nearest "distances" from the current point. As an example, distance d is defined as follows, and other distance metrics may also be used.
d=|x1-x2|+|y1-y2|+|z1-z2| (1),
Wherein (x 1, y1, z 1) and (x 2, y2, z 2) are the coordinates of the current point and the preselected point, respectively.
For example, in AVS GPCC attribute coding, a full search method based on Hilbert codes is employed, for example, the search range is set to 128, and the number of previous points for forming predictors is set to M. If the current point has previously encoded more than 128 points, only M of the 128 previously encoded neighboring points can be used to form attribute predictors according to the Hilbert order. If there are fewer than 128 encoding points before the current point, then all of these encoding points will be used as candidates for forming attribute predictors. Of the maximum 128 previously encoded points, M points are selected, with M nearest "distances" from the current point. As an example, distance d is defined as follows, and other distance metrics may also be used.
d=|x1-x2|+|y1-y2|+|z1-z2| (2),
Wherein (x 1, y1, z 1) and (x 2, y2, z 2) are the coordinates of the current point and the preselected point, respectively, along the Hilbert order. Once the M nearest points are selected, a weighted average of the properties of the M points form a predictor to encode the properties of the current point.
Points that share the same plane/line/point as the current point are known to be close to the current point. Another technique is to treat these points as predictors.
A residual is defined as the difference in attribute values between the current point and its predictor. Depending on the application, the point cloud encoding (point cloud coding, PCC) may be lossless or lossy. Thus, the residual may or may not be quantized using a predefined quantization process. In this disclosure, unquantized or quantized residuals are referred to as levels. The level may be a signed integer and will be encoded into the code stream.
Color level coding
Each point has three color attributes from the three color components. If the level of all three color components is zero, this point is called zero level point. Otherwise, if the point has at least one non-zero level of one color component, the point is referred to as a non-zero level point. In current AVS-GPCC, the number of consecutive zero level points is called 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 the first point is encoded. Starting from the first point, along a predefined coding order, residuals between the three color predictors of the current point and their corresponding color attributes may 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 the process then proceeds to the next point. If the current point is a non-zero level point, the zero run length value is encoded first, followed by encoding the three color levels of the non-zero level point. After level encoding the non-zero level points, 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 decoded first, and three color levels corresponding to the number of zero run length points are set to zero. The level of non-zero level points is then decoded and then the next zero run length value is decoded. The process continues until all points are decoded. Furthermore, the AVS-GPCC syntax is provided below as an example for illustrative purposes only and not to limit the present disclosure.
Fig. 4A shows a table 400A, the table 400A showing a syntax structure associated with a function "color_residual_coding ()" such as in AVS-GPCC, where "ae (v)" refers to a descriptor associated with a context-adaptive arithmetic entropy coded syntax element. For example, as shown in fig. 4A, a 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, a syntax element "color_first_comp_zero" equal to a specified value (e.g., 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 a syntax element "color_second_comp_zero" equal to a specified value (e.g., a non-zero value "1" or "true") indicates that the absolute coding level of the second component is zero.
Fig. 4B shows a table 400B, the table 400B showing syntax structures associated with a function "coded_level_ coding (isComponentNoneZero)" used in a function "color_residual_coding ()" of AVS-GPCC, wherein "ae (v)" refers to a descriptor associated with a context-adaptive arithmetic entropy encoded syntax element. For example, as shown in fig. 4B, a syntax element "coded_level_equal_zero" equal to 0 indicates that the absolute coding level of the component is not zero, and a syntax element "coded_level_equal_zero" equal to a specified value (e.g., a non-zero value "1" or "true") indicates that the absolute coding level of the component is zero; another syntax element "coded_level_gt1" equal to 0 indicates that the coding level of the component is one, and a syntax element "coded_level_gt1" equal to a specified value (e.g., a non-zero value "1" or "true") indicates 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_space" represents the parity of the current component by two, wherein syntax element "coded_level_minus2_space" is equal to 0 representing the current coding level by two as an even number, syntax element "coded_level_minus2_space" is equal to a specified value (e.g., non-zero value "1" or "true") representing the current coding level by two as an odd number, it is inferred to be equal to 0 when syntax element "coded_level_minus2_space" does not exist, another syntax element "coded_level_minus2_minus2_0" is inferred to be equal to 0 when syntax element "coded_minus2_space" does not exist, syntax element "coded_level_minus2_minus2_0" is equal to 0 representing the coding level by two as zero, syntax element "coded_level_minus2_minus2_minus2_0" is equal to a specified value (e.g., non-zero value "1" or "true") represents the coding level by two or more than zero, syntax element "coded_2_minus2_minus2_0" is equal to a specified value (e.g., non-zero value "1" or "true") representing the coding level by two when syntax element "coded_2_minus2_minus2_space" is not present, syntax element "coded_2_has been inferred to be equal to 0 representing the coding level by two. It is inferred to be equal to 0.
Furthermore, the syntax elements "coded_level", "coded_level_sign" are return values of the function "coded_level_ coding (isComponentminusOne)", representing the coding level (i.e. 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.
For example, the value of "coded_level" may be calculated as follows.
coded_level=(2*coded_level_sign-1)*(coded_level_equal_zero0:1+(coded_level_gt1+coded_level_minus2_parity+(coded_level_minus2_div2_gt0+coded_level_minu2_div2_minus1)<<1)
As shown in fig. 4A, the residual level color_component [ idx ] where idx is three color components from 0 to 2 is calculated by the function "color_residual_coding ()".
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 may be encoded plus the remainder of the absolute level to represent the level of the three components. The absolute level or absolute level of the color residual minus one may be encoded in the function "encoded_level_coding ()" referred to as the encoding level in the remainder of this disclosure.
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, a second flag "color_second_comp_zero" is encoded to indicate whether the second component of the color is zero if the first component of the color is zero, and the absolute level of the third component is reduced by one and the sign is encoded according to the following encoding level method if the second component of the color is zero.
For example, in another case, a first flag is encoded to indicate whether 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 first component of the color is zero, and if the second component of the color is not zero, the absolute level of the second component minus one and the sign will be encoded according to the following encoding level method, and the absolute level of the third component and the sign will be encoded according to the following encoding level method.
For example, in another case, the first flag is encoded to indicate whether the first component of the color is zero, and if the first component of the color is not zero, the absolute level of the first component minus one and the sign will be encoded according to the following encoding level method, and the absolute level and the sign of the second component and the third component will be encoded according to the following encoding level method, respectively.
Furthermore, an encoding method for generating the encoding level is designed as follows. A first flag "coded_level_equal_zero" is encoded to indicate whether the coding level is zero, and if the coding level is the absolute level of a component minus one, i.e., when flag "isComponentNoneZero" is equal to true (e.g., not equal to zero or equal to one), the symbol "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 an absolute level of a component itself, i.e. when isComponentNoneZero is equal to false (e.g. equal to zero), then the sign of the level of that component is encoded. The second flag 'coded_level_gt1' is coded 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 coded, and the third flag 'coded_level_minus2_div2_gt0' is coded to indicate whether the coding level minus two is greater than zero, and if the coding level minus two is greater than zero, the coding level minus two minus one is coded.
Reflectivity level coding
For example, in AVS-GPCC, zero run lengths of reflectivity levels and non-zero reflectivity levels are encoded into the bitstream. More specifically, on the encoding side, the zero run-length counter is set to zero before the first point is encoded. Starting from the first point, along a predefined coding order, a residual is obtained between the predictor and the corresponding original point. The corresponding level is then obtained. If the current level is zero, the zero run length will be increased 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 decoded first, 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.
For non-zero levels, if the current point is not a repeat point, the syntax element residual sign encodes the symbols of the level first. A syntax element "abs_level_minus1_parity" indicating the absolute level minus one is then encoded. Another syntax element abs_level_minus1_div2_gt0 ' is encoded to indicate whether 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 absolute level minus one divided by two is greater than one, and if abs_level_minus1_div2_gt1 ' is greater than 1, another syntax element abs_level_ minu1_div2_minus2 ' is encoded to indicate the absolute level minus one divided by two.
Fig. 4C shows a table 400C, the table 400C showing a syntax structure associated with a function "attribute_data_reflection ()" for reflectivity level coding in AVS-GPCC, wherein "ae (v)" refers to a descriptor associated with a syntax element of context adaptive arithmetic entropy coding and "ae (1)" refers to a descriptor associated with a syntax element of one-bit adaptive arithmetic entropy coding. As shown in fig. 4C, the syntax element "abs_level_minus1_parity" represents parity of absolute reflectivity level minus one, wherein syntax element "abs_level_minus1_parity" equal to 0 represents absolute reflectivity level minus one to even, and syntax element "abs_level_minus1_parity" equal to a specified value (e.g., a non-zero value "1" or "true") represents absolute reflectivity level minus one to odd; another syntax element "abs_level_minus1_div2_gt0" equal to 0 indicates that the absolute reflectivity level minus one divided by two has a value of zero, and syntax element "abs_level_minus1_div2_gt0" equal to a specified value (e.g., a non-zero value of "1" or "true") indicates that the absolute reflectivity level minus one divided by two has a value greater than zero; the syntax element "abs_level_minus1_div2_gt0" is inferred to be equal to 0 when it is not present, another syntax element "abs_level_minus1_div2_gt1" is inferred to be equal to 0 when it is equal to one, a value of one-by-two division of the absolute reflectivity level is indicated by the other syntax element "abs_level_minus1_div2_minus2" being equal to 0 when it is not present (e.g., a non-zero value "1" or "true") indicates that the value of one-by-two division of the absolute reflectivity level is greater than one, another syntax element "abs_level_minus1_div2_digt1" is inferred to be equal to 0 when it is not present, another syntax element "abs_level_ minu _div2_minus2" is indicated to be equal to 0 when it is not present, another syntax element "abs_ minu _div1_div2_minus2" is inferred to be equal to 0 when it is inferred to be equal to zero when it is not present (e.g., a non-zero value "is indicated by the syntax element" is equal to "zero level 1" is not indicated by "zero" is zero) indicates that the contrast level "is not present, it is inferred to be equal to the specified value.
For example, the value of "reflectance" may be calculated as follows.
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)
Zero run length coding
For example, in AVS-GPCC, the value of zero run length is encoded into the code stream. For example, fig. 4D shows a table 400D, table 400D showing syntax structures associated with a function "zero_run_length_ code (useGolomb)", encoding a syntax element "zero_run_length_level_equivalent_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, and if the syntax element "zero_run_length_level_equal_two" is not two, syntax elements "zero_run_length_level_minus3_space" and "zero_run_length_level_minus3_div2" are encoded to indicate the zero run length minus three and the zero run length minus three, respectively.
For example, "zero_run_length_level_minus3_parity" represents parity of zero run length level minus three, "zero_run_length_level_minus3_parity" is equal to 0 for zero run length level minus three a value of even, and "zero_run_length_level_minus3_parity" is equal to a specified value for zero run length level minus three a value of odd; when "zero_run_length_level_minus3_property" does not exist, it is inferred to be equal to 0; "zero_run_length_level_equal_zero" equal to 0 means that the zero run length level is not zero, "zero_run_length_level_level_equal_zero" equal to a specified value means that the zero run length level is zero, "zero_run_length_level_level_equal_one" equal to 0 means that the zero run length level is not 1, "zero_run_length_level_level_equal_one" equal to a specified value means that the zero run length level is 1, "zero_run_length_level_equal_two" equal to 0 means that the zero run length level is not 2, "zero_run_n_length_equal_two" equal to a specified value means that the zero run length level is 2, "zero_run_length_3_div 2" indicates that the zero run length level is zero, and "zero_run_3_div 2" is inferred when the zero run length level is not zero and "zero_run_3" equal to zero_3 "is zero.
For example, the value of "zero_run_length_level" may be calculated as follows.
zero_run_length_level=zero_run_length_level_equal_zero0:(zero_run_length_level_equal_one1:(zero_run_length_level_equal_two2:(3+zero_run_length_level_minus3_parity+(zero_run_length_level_minus3_div2<<1))))
For example, the value of "zero-run_length" may be calculated as follows.
zero_run_length=useGolomb?(2*zero_run_lenght_level+zero_run_length_LSB):zero_run_length_level
Note that while GPCC is widely used in VR/AR for entertainment and industrial applications, GPCC is not well suited for use with a variety of PCC inputs. Therefore, improvements in geometric point cloud coding are needed.
The present disclosure provides improvements, including support for GPCC extensions, such as for AVS-GPCC. Examples are provided below, but are not intended to limit the present disclosure.
Specifically, a method for decoding a code stream of geometric point cloud coding is provided.
For example, fig. 5 shows a flow chart of a code stream decoding method according to an embodiment of the present disclosure, wherein an example of a code stream decoding method 500 is provided. The code stream decoding method 500 includes a block 510 of decoding a code stream associated with geometric point cloud encoding (GPCC) to determine extension data, the code stream including a syntax structure having a syntax element associated with an extension flag. In an example, as shown in block 510 of FIG. 5, the codestream associated with GPCC may also include at least one of a syntax structure associated with the attribute header having two syntax elements associated with the two quantization parameter numbers, a syntax structure associated with the sequence header having SPS multi-data set flag codes, and a syntax structure associated with the generic attribute data codestream having a plurality of syntax elements associated with the attribute data.
Correspondingly, a code stream coding method of geometric point cloud coding is provided.
For example, fig. 6 shows a flow chart of a code stream encoding method according to an embodiment of the present disclosure, wherein an example of a code stream encoding method 600 is provided. The code stream encoding method 600 includes a block 610 of encoding a code stream associated with geometric point cloud encoding (GPCC) to determine extension data, the code stream including a syntax structure having a syntax element associated with an extension flag. In an example, as indicated by block 610 in FIG. 6, the codestream associated with GPCC may also include at least one of a syntax structure associated with the attribute header having two syntax elements associated with the two quantization parameter numbers, a syntax structure associated with the sequence header having SPS multi-data set flag codes, and a syntax structure associated with the generic attribute data codestream having a plurality of syntax elements associated with the attribute data.
Quantization parameter
For example, the present disclosure provides examples for improving the configuration of colorQuantParam, reflQuantParam equalization parameters of AVS-GPCC to increase the efficiency of geometric point cloud encoding.
For example, an embodiment of a code stream decoding process that improves the configuration of quantization parameters is provided below.
In some embodiments, as shown in the bitstream decoding method 500 shown in fig. 5, at block 510, the two syntax elements associated with the two quantization parameter numbers include a syntax element associated with a color quantization parameter number and a syntax element associated with a reflectivity quantization parameter number.
In some embodiments, as illustrated by the code stream decoding method 500 of FIG. 5, decoding a code stream associated with GPCC that includes a syntax structure associated with an attribute header having two syntax elements associated with two quantization parameter numbers, at block 510, includes decoding one syntax element associated with a 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 of a first index is not equal to zero, and decoding one syntax element associated with a reflectivity 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 of a second index is not equal to zero. For example, for AVS-GPCC, the attribute presence flag code for the first index and the attribute presence flag code for the second index are attributePresentFlag [0] and attributePresentFlag [1], respectively. Examples are provided below for illustration.
Example 1
This example is provided to move syntax elements colorQuantParam and reflQuantParam from Sequence Parameter Set (SPS)/sequence header to attribute header.
Fig. 7A shows a table 700A, and table 700A shows a syntax structure associated with 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. In fig. 7A, as shown in block 710A, syntax elements colorQuantParam and reflQuantParam are removed on condition that the syntax element attribute_present_flag is equal to a specified value (e.g., not equal to zero, e.g., equal to "1" or "true").
Alternatively, fig. 7B shows a table 700B, and table 700B shows a syntax structure associated with the function attribute_header (), where "ue (v)" refers to a descriptor associated with an unsigned integer exponential golomb encoded syntax element, "se (v)" refers to a descriptor preferentially associated with a signed integer exponential golomb encoded syntax element bit, and "u (n)" is an n-bit unsigned integer, e.g., n is equal to 1. In fig. 7B, as shown in blocks 710B and 720B, syntax element colorQuantParam is introduced under the condition that syntax element attributePresentFlag [0] is equal to a specified value (e.g., not equal to zero, e.g., equal to "1" or "true"), and syntax element reflQuantParam is added under the condition that syntax element attributePresentFlag [1] is equal to a specified value (e.g., not equal to zero, e.g., equal to "1" or "true").
Accordingly, embodiments of a code stream encoding process that improve the configuration of quantization parameters are provided below.
In some embodiments, as shown in the code stream encoding method 600 shown in fig. 6, at block 610, the two syntax elements associated with the two quantization parameter numbers include a syntax element associated with a color quantization parameter number and a syntax element associated with a reflectivity quantization parameter number.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, at block 610, responsive to encoding a code stream associated with GPCC that includes a syntax structure associated with an attribute header having two syntax elements associated with two quantization parameter codes, including encoding one syntax element associated with a color quantization parameter code into the syntax structure associated with the attribute header responsive to determining that the syntax element associated with the attribute presence flag code of a first index is not equal to zero, and encoding one syntax element associated with a reflectivity quantization parameter code into the syntax structure associated with the attribute header responsive to determining that the syntax element associated with the attribute presence flag code of a second index is not equal to zero.
SPS multiple data set flag
Further, the present disclosure provides 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.
For example, an embodiment of a code stream decoding process for a plurality of attribute encoding parameter sets is provided below.
In some embodiments, as illustrated by the code stream decoding method 500 shown in fig. 5, at block 510, the sps multi-dataset flag code specifies whether the current point cloud is allowed to be encoded using a plurality of attribute encoding parameter sets.
In some embodiments, as illustrated by the code stream decoding method 500 of FIG. 5, at block 510, responsive to decoding a code stream associated with GPCC that includes a syntax structure associated with a sequence header having an SPS multi-dataset flag code, including decoding a syntax element associated with an attribute presence flag code from the syntax structure associated with the sequence header, responsive to determining that the syntax element associated with the attribute presence flag code is not equal to zero, performing operations including, responsive to determining that the syntax element associated with the SPS multi-dataset flag code is present in the syntax structure associated with the sequence header, decoding the syntax element associated with the SPS multi-dataset flag code from the syntax structure associated with the sequence header to determine a value of the SPS multi-dataset flag code, responsive to determining that the syntax element associated with the SPS multi-dataset flag code is not present in the syntax structure associated with the sequence header, determining that the value of the SPS multi-dataset flag code is equal to zero.
In some embodiments, as illustrated by the code stream decoding method 500 of FIG. 5, in response to decoding a code stream associated with GPCC that includes a syntax structure associated with a sequence header having SPS multi-data set flag codes, in block 510, includes performing operations that include decoding a syntax element associated with a maximum number of attributes minus one code from the syntax structure associated with the sequence header after decoding the syntax element associated with the SPS multi-data set flag codes, in response to determining that the syntax element associated with the attribute presence flag code is not equal to zero.
In some embodiments, as shown in the code stream decoding method 500 of FIG. 5, at block 510, further comprising performing, in a syntax structure associated with the attribute header, a respective operation group of a plurality of operation groups defined by a first iteration loop, the first iteration loop having a first variable that is incremented from zero to a maximum integer less than the sum of the maximum number of attribute minus one plus one of the code values, including decoding a syntax element associated with an attribute presence flag code indexed by the first variable; in response to determining that the syntax element associated with the attribute presence flag code of the first variable index is not equal to zero, performing operations including determining, 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 of the first variable index, in response to determining that the syntax element associated with the multi-dataset flag code of the first variable index is not equal to zero, determining the syntax element associated with the attribute number dataset of the first variable index minus one code, performing a respective operation group of the plurality of operation groups defined by a second iteration loop, the second iteration loop having a second variable that is incremented from zero to a maximum integer that is less than the sum of the attribute number dataset of the first variable index minus one code plus one code, including decoding the syntax element associated with the output bit depth of the first variable and the second variable index, 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 element of the first variable and the second variable index, in response to determining that the first variable is equal to zero, decoding the second variable is equal to second variable index, decoding a third set of syntax elements of the second variant index, and decoding a plurality of syntax elements in a syntax structure associated with the attribute header.
In some embodiments, as illustrated by the code stream decoding method 500 shown in FIG. 5, determining syntax elements associated with the first variable indexed multi-dataset flag code in response to determining that syntax elements of the SPS multi-dataset flag code are not equal to zero includes determining whether syntax elements associated with the first variable indexed multi-dataset flag code are present, decoding syntax elements associated with the first variable indexed multi-dataset flag code in response to syntax elements associated with the first variable indexed multi-dataset flag code being present, and determining that syntax elements associated with the first variable indexed multi-dataset flag code are equal to zero in response to syntax elements associated with the first variable indexed multi-dataset flag code being absent at block 510.
In some embodiments, as illustrated by the code stream decoding method 500 of FIG. 5, in response to determining that the syntax element associated with the multi-dataset flag code of the first index of variation is not equal to zero, determining that the syntax element associated with the attribute number dataset of the first index of variation minus one code includes decoding the syntax element associated with the attribute number dataset of the first index of variation minus one code in response to determining that the syntax element associated with the attribute number dataset of the first index of variation minus one code is present, and determining that the syntax element associated with the attribute number dataset of the first index of variation minus one code is equal to zero in response to determining that the syntax element associated with the attribute number dataset of the first index of variation minus one code is not present at block 510.
In some embodiments, as illustrated by the code stream decoding method 500 of FIG. 5, 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 of the first variable and the second variable index includes decoding syntax elements associated with a maximum number of neighbors log2 minus seven codes of the first variable and the second variable index, decoding syntax elements associated with a number of levels of detail codes of the first variable and the second variable index, decoding syntax elements associated with a maximum predicted neighbor number of the first variable and the second variable index, decoding syntax elements associated with an intra-lode flag (intra-lode-flag) code of the first variable and the second variable index, decoding syntax elements associated with a cross attribute type prediction code of the first variable and the second variable index, decoding operations including decoding syntax elements associated with a property encoding order of the first variable and the second variable index, decoding syntax elements associated with a cross attribute type prediction code of the first variable and the second variable index, and decoding syntax elements associated with a cross attribute type prediction code of the first variable and the second variable index, in response to determining that the cross attribute type prediction code of the first variable and the second variable index is not equal to zero, are performed at block 510.
In some embodiments, as illustrated by the code stream decoding method 500 of FIG. 5, in response to determining that the first variable is equal to zero, decoding a second set of syntax elements of the second variable index includes decoding syntax elements associated with cross-component prediction codes of the second variable index, decoding syntax elements associated with order switch codes of the second variable index, decoding syntax elements associated with half-zero run length enable codes of the second variable index, decoding syntax elements associated with chroma Qp offset Cb codes of the second variable index, decoding syntax elements associated with chroma Qp offset Cr codes of the second variable index, decoding syntax elements associated with color reordering mode codes of the second variable index, and decoding syntax elements associated with color Columbus number codes of the second variable index at block 510.
In some embodiments, as illustrated by the code stream decoding method 500 of FIG. 5, in response to determining that the first variable is not equal to zero, decoding a third set of syntax elements of the second variable index includes decoding syntax elements associated with a most recent prediction parameter one code of the second variable index, decoding syntax elements associated with a most recent prediction parameter two code of the second variable index, decoding syntax elements associated with an off-axis code of the second variable index, decoding syntax elements associated with a reflectivity reordering mode code of the second variable index, and decoding syntax elements associated with a reflectivity Columbus number code of the second variable index, at block 510.
In some embodiments, as illustrated by the bitstream decoding method 500 of FIG. 5, decoding a plurality of syntax elements in a syntax structure associated with an attribute header at block 510 includes decoding a fourth set of syntax elements for a first variable and a second variable index, decoding a fifth set of syntax elements for the second variable index in response to determining that an attribute presence flag for the first index is not equal to zero, and decoding a reflectivity set prediction code for the second index in response to determining that an attribute presence flag for the second index is not equal to zero.
In some embodiments, as illustrated by the code stream decoding method 500 of FIG. 5, decoding a fourth set of syntax elements of the first and second variable indices at block 510 includes decoding syntax elements associated with the transform codes of the first and second variable indices, decoding syntax elements associated with the transform resource layer codes of the first and second variable indices in response to determining that the syntax elements associated with the transform codes of the first and second variable indices are not equal to zero and that the syntax elements associated with the attribute presence flag codes of the first variable index are not equal to zero, performing operations including decoding syntax elements associated with the maximum coefficient number codes of the first and second variable indices, decoding syntax elements associated with the coefficient length control codes of the first and second variable indices, decoding syntax elements associated with the first and second variable index transform Qp delta codes, decoding syntax elements associated with the initial predictive transform ratio codes of the first and second variable indices, decoding syntax elements associated with the transform resource layer codes of the first and second variable indices, decoding syntax elements associated with the attribute number point codes of the first and second variable indices, decoding syntax elements associated with the first and second variable index Qp delta codes, decoding syntax elements associated with the first and second variable index offset and the first and second variable index.
In some embodiments, as illustrated by the code stream decoding method 500 of FIG. 5, in response to determining that the attribute presence flag code of the first index is not equal to zero, decoding the fifth set of syntax elements of the second variable index includes decoding the syntax elements associated with the chroma Qp offset DC code of the second variable index and the syntax elements associated with the chroma Qp offset AC code of the second variable index in response to determining that the syntax elements associated with the attribute presence flag code of the first index is not equal to zero at block 510.
In some embodiments, as illustrated by the code stream decoding method 500 of FIG. 5, decoding a plurality of syntax elements in a syntax structure associated with an attribute header at block 510 includes decoding a fourth set of syntax elements, decoding a fifth set of syntax elements in response to determining that an attribute presence flag code for a first index is not equal to zero, and decoding a reflectivity set prediction code in response to determining that an attribute presence flag code for a second index is not equal to zero.
In some embodiments, as illustrated by the code stream decoding method 500 shown in FIG. 5, decoding the fourth set of syntax elements includes decoding the syntax element associated with the transform code in response to determining that the syntax element associated with the attribute presence flag code is not equal to zero, decoding 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 that the attribute presence flag code of the first index or the attribute presence flag code of the second index is not equal to zero, performing operations including decoding the syntax element associated with the maximum coefficient number code, decoding the syntax element associated with the coefficient length control code, decoding the syntax element associated with the attribute transform Qp delta code, decoding the syntax element associated with the initial predictive transform rate code, decoding the syntax element associated with the transform resource layer code, decoding the syntax element associated with the attribute transform number point code, decoding the syntax element associated with the maximum transform number code, decoding the syntax element associated with the Qp offset DC code, and decoding the syntax element associated with the Qp offset AC code, at block 510.
In some embodiments, as illustrated by the code stream decoding method 500 shown in FIG. 5, in response to determining that the attribute presence flag code of the first index is not equal to zero, decoding the fifth set of syntax elements includes decoding the syntax elements associated with the chroma Qp offset DC code and the syntax elements associated with the chroma Qp offset AC code in response to determining that the syntax elements associated with the attribute presence flag code of the first index are not equal to zero, at block 510. Examples are provided below.
Example 2
For example, in AVS-GPCC, one type of attribute supporting only one parameter set is improved in the present disclosure to support a wide range of GPCC applications, e.g., one type of attribute may be required to support multiple attribute encoding parameter sets. For example, the present disclosure allows one type of attribute to have multiple sets of attribute encoding parameters, as shown in FIG. 8A.
Fig. 8A shows a table 800A, the table 800A shows a syntax structure associated with function sequence_header (), and as shown in block 810A, the syntax element sps_multi_data_set_flag is introduced on condition that the syntax element attribute_present_flag is equal to a specified value (e.g., not equal to zero, e.g., equal to "1" or "true"). For example, a syntax element sps_multi_data_set_flag equal to a specified value indicates that encoding of the current point cloud using the plurality of attribute encoding parameter sets is allowed, and sps_multi_data_set_flag equal to 0 indicates that encoding of the current point cloud using the plurality of attribute encoding parameter sets is not allowed. When the sps_multi_data_set_flag does not exist, it is inferred that the value of the sps_multi_data_set_flag is equal to 0.
Fig. 8B1 and 8B2 illustrate a first portion and a second portion of table 800B, table 800B illustrating a syntax structure associated with function attribute_header (), in a first iteration loop of first variable attrIdx having a maximum integer that increases from 0 to a value less than (maxNumAttributesMinus 1+1), performing an operation on each of the different integers (e.g., 0, 1,... Under the condition attributePresentFlag [ attrIdx ] is equal to a specified value (e.g., a non-zero value "1" or "true"), as shown in block 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.
Further, in FIG. 8B1, as shown in block 810B, a second iterative loop is introduced having a second variable i that is incremented from 0 to a maximum integer less than the value of (attribute_num_data_set_minus1 [ attrIdx ] +1). In a second iteration loop with a second variable i, performing an operation on each of the different integers (e.g., 0, 1,..degree.), attribute_num_data_set_minus1[ attrIdx ] -1, attribute_num_data_set_minus1[ attrIdx ]) defined by the second variable i, for example, syntax element outputBitDepthMinus1[ attrIdx ] [ i ] is modified from index to attrIdx to index to attrIdx and i. On 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, the plurality of syntax elements are modified from index to attrIdx to index to attrIdx and i, e.g., maxNumOfNeighboursLog2Minus7[attrIdx][i]、numOflevelOfDetail[attrIdx][i]、maxNumOfPredictNeighbours[attrIdx][i]、 and intraLodFlag [ attrIdx ] [ i ]. In addition, there is a syntax element crossAttrTypePred [ attrIdx ] [ i ] modified from no index to indexed by attrIdx and i.
For example, in FIG. 8B1, as shown in block 820B, under the condition that crossAttrTypePred [ attrIdx ] [ i ] is equal to a specified value (e.g., a non-zero value of "1" or "true"), multiple syntax elements are modified from non-indexed to indexed by attrIdx and i, e.g., attrEncodeOrder [ attrIdx ] [ i ], crossAttrTypePredParam1[ attrIdx ] [ i ], and crossAttrTypePredParam [ attrIdx ] [ i ].
Further, in fig. 8B1, under the condition attrIdx is equal to 0, as shown in block 830B, the plurality of syntax elements are modified from no index to indexed by i, e.g., 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, the plurality of syntax elements are modified from index-less to index-less by i, e.g., NEARESTPREDPARAM1[ i ], NEARESTPREDPARAM [ i ], axisBias [ i ], refReorderMode [ i ], and refGolombNum [ i ].
Further, in FIG. 8B2, as indicated by block 850B, the stop boundary for the condition that attributePresentFlag [ attrIdx ] equals the specified value and the stop boundary for the first iteration loop with the first variable attrIdx incremented from 0 to maxNumAttributesMinus1+1 are removed prior to the syntax element transform, which is modified from no index to index by attrIdx and i, shown as syntax element transform [ attrIdx ] [ i ].
Further, in FIG. 8B2, as indicated by block 850B, the syntax element transform for which the descriptor is modified to "ue (v)" is modified from no index to being indexed by attrIdx and i, then, with transform [ attrIdx ] [ i ] equal to the specified value and attributePresentFlag [ attrIdx ] equal to the specified value (e.g., a non-zero value of "1" or "true"), instead of attributePresentFlag [0] equal to the specified value and attributePresentFlag [1] equal to the specified value (e.g., a non-zero value of "1" or "true"), the plurality of syntax elements are modified from no index to being indexed by attrIdx and i, e.g., maxNumofCoeff[attrIdx][i]、coeffLengthControl[attrIdx][i]、attrTransformQpDelta[attrIdx][i]、initPredTransRatio[attrIdx][i]、transResLayer[attrIdx][i]、attrTransformNumPoints[attrIdx][i]、maxTransNum[attrIdx][i]、QpOffsetDC[attrIdx][i]、 and QpOffsetAC [ attrIdx ] [ i ], as indicated by block 860B.
Further, in FIG. 8B2, the plurality of syntax elements are modified from no index to being indexed by i, e.g., chromaQpOffsetDC [ i ] and chromaQpOffsetAC [ i ], as shown in block 870B, under the condition that attributePresentFlag [0] is equal to a specified value (e.g., non-zero value "1" or "true"), and the syntax elements are modified from no index to being indexed by i, e.g., refGroupPred [ i ], as shown in block 880B, under the condition that attributePresentFlag [1] is equal to a specified value (e.g., non-zero value "1" or "true"). Further, in FIG. 8B2, as shown in block 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 of "1" or "true"), and a stop boundary of the first iteration loop with a first variable attrIdx are added before the function byte_alignment ().
For example, as shown in fig. 8B1 and 8B2, a syntax element multi_data_set_flag [ attrIdx ] equal to a specified value (e.g., equal to "1") indicates that the attribute of the current type allows the use of a plurality of attribute encoding parameter sets, and the number of allowed attribute encoding parameter sets will be further specified by attribute_num_data_set_minus1, and a syntax element multi_data_set_flag [ attrIdx ] equal to 0 indicates that the attribute of the current type does not allow the use of a plurality of attribute encoding parameter sets, and the number of allowed attribute encoding parameter sets is equal to the specified value. When the multi_data_set_flag [ attrIdx ] does not exist, it is inferred that the value of the multi_data_set_flag [ attrIdx ] is equal to 0.
For example, as shown in fig. 8B1 and 8B2, the syntax element attribute_num_data_set_minus1[ attrIdx ] plus 1 specifies the number of parameter sets allowed for encoding the attribute of the current attrIdx type. The value of attribute_num_data_set_minus1 should be in the range of 0 to 15 (inclusive), and when attribute_num_data_set_minus1[ attrIdx ] is not present, it is inferred that the value of attribute_num_data_set_minus1[ attrIdx ] is equal to 0. Furthermore, the number of allowed attribute encoding parameter sets will be calculated as: num_allowed_attribute_coding = attribute_num_data set minus1+1.
In addition, all attributes may use the same transform-related syntax, and alternate representations may be specified as follows. For example, fig. 8C shows a table 800C, and table 800C shows a syntax structure associated with function sequence_header () having syntax elements sps_multi_data_set_flag, as shown in block 810C, which is the same as the syntax table in function sequence_header () shown in block 810A in fig. 8A.
Fig. 8D1 and 8D2 show a first portion and a second portion of a table 800D, the table 800D showing a syntax structure associated with a function attribute_header (), which is similar to the function attribute_header () shown in fig. 8B1 and 8B 2. As shown in fig. 8D1, in a first iterative loop having a first variable attrIdx that increases from 0 to a maximum integer that is less than the value of (maxNumAttributesMinus 1 +1), an operation is performed on each of the different integers (e.g., 0, 1,..once, maxNumAttributesMinus1-1, maxNumAttributesMinus 1) defined by the first variable attrIdx, e.g., a condition that maintains syntax elements attributePresentFlag [ attrIdx ] and attributePresentFlag [ attrIdx ] equal to specified values. Under the condition attributePresentFlag [ attrIdx ] is equal to a specified value (e.g., a non-zero value "1" or "true"), as shown in block 810D (same as block 810B in fig. 8B 1), 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 multi_data_set_flag [ attrIdx ] is equal to the specified value.
Further, in FIG. 8D1, as shown in block 810D, a second iterative loop is introduced having a second variable i that is incremented from 0 to a maximum integer less than the value of (attribute_num_data_set_minus1 [ attrIdx ] +1). In a second iteration loop with a second variable i, performing an operation on each of the different integers (e.g., 0, 1,..degree.), attribute_num_data_set_minus1[ attrIdx ] -1, attribute_num_data_set_minus1[ attrIdx ]) defined by the second variable i, for example, syntax element outputBitDepthMinus1[ attrIdx ] [ i ] is modified from index to attrIdx to index to attrIdx and i. On 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 820D (same as block 820B in fig. 8B 1), multiple syntax elements are modified from index to attrIdx to index to attrIdx and i, e.g., maxNumOfNeighboursLog2Minus7[attrIdx][i]、numOflevelOfDetail[attrIdx][i]、maxNumOfPredictNeighbours[attrIdx][i]、 and intraLodFlag [ attrIdx ] [ i ]. In addition, there is a syntax element crossAttrTypePred [ attrIdx ] [ i ] modified from no index to indexed by attrIdx and i.
For example, in FIG. 8D1, as shown in block 820D, the plurality of syntax elements are modified from non-indexed to indexed by attrIdx and i, e.g., attrEncodeOrder [ attrIdx ] [ i ], crossAttrTypePredParam1[ attrIdx ] [ i ], and crossAttrTypePredParam [ attrIdx ] [ i ], with crossAttrTypePred [ attrIdx ] [ i ] being equal to a specified value (e.g., a non-zero value of "1" or "true").
Further, in fig. 8D1 and 8D2, under the condition that attrIdx is equal to 0, as shown in block 830D (same as block 830B in fig. 8B 1), the plurality of syntax elements are modified from no index to indexed by i, e.g., cross_component_Pred[i]、orderSwitch[i]、half_zero_runlength_enable[i]、chromaQpOffsetCb[i]、chromaQpOffsetCr[i]、colorReorderMode[i]、 and colorGolombNum [ i ]. Similarly, under another condition where 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 840B in fig. 8B 1), the plurality of syntax elements are modified from index-free to index-by-i, e.g., NEARESTPREDPARAM [ i ], NEARESTPREDPARAM [ i ], axisBias [ i ], refReorderMode [ i ], and refGolombNum [ i ].
Further, in fig. 8D2, as indicated by block 850D, a stop boundary of a second iteration loop having a second variable i is added before a stop boundary of a condition that syntax element attributePresentFlag [ attrIdx ] is equal to a specified value and a stop boundary of a first iteration loop having a variable attrIdx that is incremented from 0 to maxNumAttributesMinus 1+1.
Further, in FIG. 8D2, as indicated by block 860D, a syntax element attribute_present_flag is introduced that is equal to a specified value (e.g., a non-zero value of "1" or "true"), a syntax element transform whose descriptor is modified to "ue (v)" is introduced, then, a plurality of syntax elements, e.g., maxNumofCoeff、coeffLengthControl、attrTransformQpDelta、initPredTransRatio、transResLayer、attrTransformNumPoints、maxTransNum、QpOffsetDC、 and QpOffsetAC, maintained prior to function byte_alignment () are to be executed under the condition that (transform and (attributePresentFlag [0] or attributePresentFlag [1 ])) are equal to the specified value (e.g., a non-zero value of "1" or "true"), chromaQpOffsetDC and chromaQpOffsetAC are to be executed under the condition that attributePresentFlag [0] is equal to the specified value (e.g., a non-zero value of "1" or "true"), and RefGroupPred are to be executed under the condition that attributePresentFlag [1] is equal to the specified value (e.g., a non-zero value of "1" or "true").
Accordingly, embodiments of a code stream encoding process for a plurality of attribute encoding parameter sets are provided below.
In some embodiments, as illustrated by the code stream encoding method 600 shown in fig. 6, the sps multi-dataset flag code specifies whether the current point cloud is allowed to be encoded using a plurality of attribute encoding parameter sets, at block 610.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, at block 610, responsive to encoding a code stream associated with GPCC that includes a syntax structure associated with a sequence header having SPS multi-dataset flag codes, including encoding syntax elements associated with attribute presence flag codes into the syntax structure associated with the sequence header based on determining whether attribute data is present, responsive to determining that the syntax elements associated with the attribute presence flag codes are not equal to zero, performing operations including encoding syntax elements associated with SPS multi-dataset flag codes into the syntax structure associated with the sequence header based on the values of the SPS multi-dataset flag codes, responsive to determining that the syntax elements associated with the SPS multi-dataset flag codes are not present in the syntax structure associated with the sequence header, determining that the values of the SPS multi-dataset flag codes are equal to zero.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, in response to encoding a code stream associated with GPCC that includes a syntax structure associated with a sequence header having SPS multi-data set flag codes, at block 610, includes performing operations that include encoding a syntax element associated with a maximum number of attributes minus one code into a syntax structure associated with a sequence header after encoding the syntax element associated with the SPS multi-data set flag codes, in response to determining that the syntax element associated with the attribute presence flag code is not equal to zero.
In some embodiments, as shown in the stream encoding method 600 of FIG. 6, performing an operation in block 610 that further includes executing a respective operation group of the plurality of operation groups defined by the first iteration loop in a syntax structure associated with the attribute header, the first iteration loop having a first variable that is incremented from zero to a maximum integer less than a sum of a maximum number of attribute minus a value of one code, including encoding the syntax element associated with the attribute presence flag code of the first variable index, responsive to determining that the syntax element associated with the attribute presence flag code of the first variable index is not equal to zero, determining a syntax element associated with the multi-data set flag code of the first variable index in response to determining that the syntax element of the SPS multi-data set flag code is not equal to zero, determining that the syntax element associated with the multi-data set flag code of the first variable index is not equal to zero in response to determining that the syntax element associated with the multi-data set flag code of the first variable index, executing a respective operation group of the plurality of operation groups defined by the second loop having a first iteration element that is incremented from zero to less than a maximum number of attribute minus one, the second iteration element of the first variable index, the second loop having a syntax element associated with the first variable index is not equal to zero, and the syntax element of the first variable index is not equal to zero in response to determining that the syntax element associated with the multi-data set flag code of the first variable index is not equal to zero, the first variable index is output from the first iteration loop having a first iteration element is greater than zero, the first iteration element is determined that is greater than a first variable value than zero, and the first iteration element is greater than a maximum value associated with the value of the first variable element is greater than a value by a value, and encoding a plurality of syntax elements in a syntax structure associated with the attribute header.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, determining a syntax element associated with the first variable indexed multi-dataset flag code in response to determining that the syntax element of the SPS multi-dataset flag code is not equal to zero includes determining whether the syntax element associated with the first variable indexed multi-dataset flag code is present, encoding the syntax element associated with the first variable indexed multi-dataset flag code in response to the syntax element associated with the first variable indexed multi-dataset flag code being present, and determining that the syntax element associated with the first variable indexed multi-dataset flag code is equal to zero in response to the syntax element associated with the first variable indexed multi-dataset flag code being absent at block 610.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, in response to determining that the syntax element associated with the multi-dataset flag code of the first index of variation is not equal to zero, determining that the syntax element associated with the attribute number dataset of the first index of variation minus one code includes encoding the syntax element associated with the attribute number dataset of the first index of variation minus one code in response to determining that the syntax element associated with the attribute number dataset of the first index of variation minus one code is present, and determining that the syntax element associated with the attribute number dataset of the first index of variation minus one code is equal to zero in response to determining that the syntax element associated with the attribute number dataset of the first index of variation minus one code is not present at block 610.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, 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 for the first variable and the second variable index includes encoding syntax elements associated with a maximum number of neighbors log2 of the first variable and the second variable index minus seven codes, encoding syntax elements associated with a level of detail number code for the first variable and the second variable index, encoding syntax elements associated with a maximum prediction neighbor number for the first variable and the second variable index, encoding syntax elements associated with an intra lode flag code for the first variable and the second variable index, encoding syntax elements associated with a cross attribute type prediction code for the first variable and the second variable index, and performing operations including encoding syntax elements associated with a property encoding order code for the first variable and the second variable index, encoding syntax elements associated with a cross attribute type prediction code for the first variable and the second variable index, in response to determining that syntax elements associated with a cross attribute type prediction code for the first variable and the second variable index are not equal to zero.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, in response to determining that the first variable is equal to zero, encoding a second set of syntax elements of the second variable index includes encoding syntax elements of the second variable index associated with cross-component prediction codes, encoding syntax elements associated with sequence-switched codes of the second variable index, encoding syntax elements associated with half-zero run-length enablement codes of the second variable index, encoding syntax elements associated with chroma Qp offset Cb codes of the second variable index, encoding syntax elements associated with chroma Qp offset Cr codes of the second variable index, encoding syntax elements associated with color-reordering mode codes of the second variable index, encoding syntax elements associated with color-Columbus number codes of the second variable index, at block 610.
In some embodiments, as illustrated by the code stream encoding method 600 of FIG. 6, in response to determining that the first variable is not equal to zero, encoding a third set of syntax elements of the second variable index includes encoding syntax elements associated with a most recent prediction parameter one code of the second variable index, encoding syntax elements associated with a most recent prediction parameter two code of the second variable index, encoding syntax elements associated with an off-axis code of the second variable index, encoding syntax elements associated with a reflectivity reordering mode code of the second variable index, encoding syntax elements associated with a reflectivity Columbus number code of the second variable index, at block 610.
In some embodiments, as illustrated by the code stream encoding method 600 of FIG. 6, encoding a plurality of syntax elements in a syntax structure associated with an attribute header at block 610 includes performing a respective operation group of the plurality of operation groups defined by a second iteration loop having a second variable that is incremented from zero to a maximum integer that is less than a sum of a value of a number of attribute data sets minus one code plus one of a first variable index, including encoding a fourth set of syntax elements of the first variable and the second variable index, encoding a fifth set of syntax elements of the second variable index in response to determining that an attribute presence flag code of the first index is not equal to zero, and encoding a reflectivity group prediction code of the second index in response to determining that an attribute presence flag code of the second index is not equal to zero.
In some embodiments, as illustrated by the code stream encoding method 600 of FIG. 6, encoding a fourth set of syntax elements for the first and second variable indices at block 610 includes encoding syntax elements associated with the transform codes for the first and second variable indices, encoding syntax elements associated with the transform resource layer codes for the first and second variable indices in response to determining that the syntax elements associated with the transform codes for the first and second variable indices are not equal to zero and that the syntax elements associated with the attribute presence flag codes for the first variable indices are not equal to zero, performing operations including encoding syntax elements associated with the maximum coefficient number codes for the first and second variable indices, encoding syntax elements associated with the coefficient length control codes for the first and second variable indices, encoding syntax elements associated with the attribute transform Qp delta codes for the first and second variable indices, encoding syntax elements associated with the initial predictive transform ratio codes for the first and second variable indices, encoding syntax elements associated with the transform resource layer codes for the first and second variable indices, encoding syntax elements associated with the attribute number point codes for the first and second variable indices, encoding syntax elements associated with the first and the maximum coefficient length control codes for the first and second variable indices, encoding syntax elements associated with the first and second variable offset Qp and the first variable index.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, in response to determining that the attribute presence flag code of the first index is not equal to zero, encoding a fifth set of syntax elements of the second variable index includes encoding a syntax element associated with a chroma Qp offset DC code of the second variable index and a syntax element associated with a chroma Qp offset AC code of the second variable index in response to determining that the syntax element associated with the attribute presence flag code of the first index is not equal to zero, at block 610.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, encoding a plurality of syntax elements in a syntax structure associated with an attribute header at block 610 includes encoding a fourth set of syntax elements, encoding a fifth set of syntax elements in response to determining that an attribute presence flag code for a first index is not equal to zero, and encoding a reflectivity set prediction code in response to determining that an attribute presence flag code for a second index is not equal to zero.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, encoding the fourth set of syntax elements includes encoding the syntax element associated with the transform code in response to determining that the syntax element associated with the attribute presence 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 that the attribute presence flag code of the first index or the attribute presence flag code of the second index is not equal to zero, performing operations including 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 predictive transform rate code, encoding the syntax element associated with the transform resource layer code, encoding the syntax element associated with the attribute transform number point code, encoding the syntax element associated with the maximum transform number code, encoding the syntax element associated with the Qp offset DC code, and encoding the syntax element associated with the Qp offset AC code, at block 610.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, in response to determining that the attribute presence flag code of the first index is not equal to zero, encoding a fifth set of syntax elements includes encoding a syntax element associated with a chroma Qp offset DC code and a syntax element associated with a chroma Qp offset AC code in response to determining that the syntax element associated with the attribute presence flag code of the first index is not equal to zero, at block 610.
Attribute data
Further, the present disclosure provides examples that support more attribute encoding data, such as color attribute data and reflectivity attribute data, to improve the efficiency of geometric point cloud encoding.
For example, embodiments of a bitstream decoding process that support more attribute-encoded data are provided below.
In some embodiments, as shown in the code stream decoding method 500 of fig. 5, at block 510, the attribute data includes color attribute data and reflectivity attribute data.
In some embodiments, as illustrated by the code stream decoding method 500 of FIG. 5, at block 510, in response to decoding a code stream associated with GPCC that includes a syntax structure of a generic attribute data code stream having a plurality of syntax elements associated with attribute data, including executing, in the syntax structure associated with the generic attribute data code stream, a respective group of operations defined by a third iteration loop having a third variable that is incremented from zero to a maximum integer that is less than a sum of a maximum number of attribute minus one code values plus one, including executing, in response to determining that the third variable is equal to zero and an attribute presence flag code of a first index is not equal to zero, an operation including executing an attribute data color function to decode syntax elements associated with the attribute data color code, executing a byte alignment function to align data in the code stream in bytes, in response to determining that the third variable is not equal to zero and an attribute presence flag code of a second index is not equal to zero, executing an operation including executing an attribute data reflectance function to decode syntax elements associated with the attribute data color code.
In some embodiments, as illustrated by the code stream decoding method 500 of FIG. 5, in response to decoding a code stream associated with GPCC, the code stream including a syntax structure of a generic attribute data code stream having a plurality of syntax elements associated with attribute data, includes executing, in the syntax structure associated with the generic attribute data code stream, a respective one of a plurality of operation groups defined by a third iteration loop, the third iteration loop having a third variable, the third variable increasing from zero to a maximum integer that is less than a sum of a maximum number of values of an attribute minus one code, including, in response to determining that the third variable is equal to zero and an attribute presence flag code of a first index is not equal to zero, executing an operation comprising executing, in response to determining that the third variable is equal to zero and the attribute presence flag code of a first index is not equal to zero, a fourth iteration loop having a fourth variable, the fourth iteration loop increasing from zero to a maximum integer that is less than a maximum number of values of an attribute minus one code, including executing a syntax element of the attribute data color code, executing a byte-alignment function to decode the respective one of the plurality of operation groups associated with the attribute data color code, executing, and performing, in response to determining that the fourth variable is not equal to zero and the first index is greater than zero, executing an operation group of the fourth iteration loop having a maximum number of the fourth variable, and executing an operation function having a maximum number of the fourth variable increasing from zero to a maximum integer that is greater than a maximum number of a value of the maximum number of the value of the first index. Examples are provided below.
The present disclosure provides for supporting more attribute-encoded data in a generic attribute data stream. The syntax provided is specifically shown in fig. 9A.
Fig. 9A shows a table 900A, the table 900A showing the syntax structure associated with the function general_attribute_data_bitstream () as shown in block 910A introducing a third iteration loop having a third variable attrIdx that increments from 0 to a maximum integer less than the value of (maxNumAttributesMinus 1+1). In a third iteration loop with a third variable attrIdx, functions of attribute_data_color () and byte_alignment () are to be performed with the modification from attributePresentFlag [0] to a specified value (e.g., a non-zero value of "1" or "true") to attrIdx to 0 and attributePresentFlag [0] to a specified value (e.g., a non-zero value of "1" or "true"), and functions of attribute_data_color () and byte_alignment () are to be performed with the modification from attributePresentFlag [1] to attrIdx to 1 and attributePresentFlag [1] to a specified value, as shown in block 920A. Further, as indicated at block 930A, a stop boundary of the iterative loop having the third variable attrIdx is introduced accordingly.
Or if one type of attribute supports multiple data parameter sets, the corresponding syntax change is as shown in fig. 9B.
Fig. 9B shows a table 900B, the table 900B showing the syntax structure associated with the function general_attribute_data_bitstream () as shown in block 910B, introducing a third iteration loop of variable attrIdx with a maximum integer that increases from 0 to a value less than (maxNumAttributesMinus 1+1). In a third iterative loop with variable attrIdx, as shown in block 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. With attrIdx equal to 0 and attributePresentFlag [0] equal to the specified value, a fourth iterative loop is introduced, as shown in block 810F, with a fourth variable i incremented from 0 to a maximum integer less than the value of (attribute_num_data_set_minus1 [ attrIdx ] +1), to perform multiple sets of data parameters, such as executing functions attribute_data_color () and byte_alignment (). In a third iteration loop with variable attrIdx, the condition is modified from attributePresentFlag [1] to equal the specified value to attrIdx equal to 1 and attributePresentFlag [1] to equal the specified value, as shown in block 920B. With attrIdx equal to 1 and attributePresentFlag [1] equal to the specified value, another fourth iterative loop is introduced to execute multiple sets of data parameters, such as executing functions attribute_data_reflectance () and byte_alignment (), as shown in block 920B, with a fourth variable i that increments from 0 to a maximum integer less than the value of (attribute_num_data_set_minus1 [ attrIdx ] +1). Further, as indicated by blocks 930B and 940B, stop boundaries for the third and fourth iteration loops are introduced accordingly.
For example, maxNumAttributesMinus1 may be set to no greater than an integer, such as N, to reflect the profile and level constraints. For example, in AVS-GPCC, N can be set to 1. Likewise, attribute_num_data_set_minus1[ attrIdx ] may also be set to no greater than an integer, e.g., M, to reflect configuration files and level constraints. For example, in AVS-GPCC, M can be set to 0.
Accordingly, embodiments of a code stream encoding process that support more attribute encoded data are provided below.
In some embodiments, as shown in the code stream encoding method 600 of fig. 6, at block 610, the attribute data includes color attribute data and reflectivity attribute data.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, at block 610, in response to encoding a code stream associated with GPCC that includes a syntax structure of a generic attribute data code stream having a plurality of syntax elements associated with attribute data, including executing, in the syntax structure associated with the generic attribute data code stream, a respective group of operations defined by a third iteration loop having a third variable that is incremented from zero to a maximum integer that is less than a sum of a maximum number of attribute minus one code values plus one, including executing, in response to determining that the third variable is equal to zero and an attribute presence flag code of a first index is not equal to zero, an operation including executing an attribute data color function to encode a syntax element associated with the attribute data color code, executing a byte alignment function to align data in the code stream in bytes, in response to determining that the third variable is not equal to zero and an attribute presence flag code of a second index is not equal to zero, executing an operation including executing an attribute data reflectance function to encode a syntax element associated with the attribute data color code.
In some embodiments, as illustrated by the code stream encoding method 600 of FIG. 6, in response to encoding a code stream associated with GPCC, the code stream including a syntax structure of a generic attribute data code stream having a plurality of syntax elements associated with attribute data, includes performing a respective one of a plurality of operation groups defined by a third iteration loop in the syntax structure associated with the generic attribute data code stream, the third iteration loop having a third variable that is incremented from zero to a maximum integer that is less than a sum of a maximum number of attribute minus one code values, including performing an operation of performing a byte-wise color function associated with the attribute data color code in response to determining that the third variable is equal to zero and an attribute-present flag code of a first index is not equal to zero, the fourth iteration loop having a fourth variable that is incremented from zero to a maximum integer that is less than a sum of a maximum number of attribute minus one code values, performing a byte-wise color function in response to determining that the third variable is equal to zero and an attribute-present flag code of the first index is not equal to zero, performing an operation of the fourth iteration loop having a maximum integer that is incremented from zero to a maximum number of attribute data color code, the fourth variable including performing a byte-wise color function in response to determining that the fourth variable is not equal to zero and a maximum number of the first index is not equal to zero, performing an operation of the fourth iteration loop having a maximum number of the fourth variable.
Expansion of
In addition, to add more coding tools, interfaces are provided that support compatible extensions. The present disclosure provides the following extended examples for improving the efficiency of geometric point cloud encoding, for example for the current version or another version of AVS-GPCC.
For example, an embodiment of a code stream decoding process for spreading is provided below.
In some embodiments, as illustrated by the code stream decoding method 500 shown in FIG. 5, decoding a code stream associated with GPCC at block 510 to determine extension data, the code stream including a syntax structure having syntax elements associated with extension flags includes decoding the syntax elements associated with extension flags, determining syntax elements associated with extension lengths based on extension data in response to determining that the syntax elements associated with extension flags are not equal to zero, and decoding one or more syntax elements associated with extension data based on the syntax elements associated with extension lengths.
In some embodiments, as illustrated by the code stream decoding method 500 shown in FIG. 5, determining the syntax element associated with the extended length based on the extended data in response to determining that the syntax element associated with the extended flag is not equal to zero includes determining that the value of the extended length is equal to zero in response to determining that the syntax element associated with the extended length is not present in the syntax structure, and decoding the syntax element associated with the extended length from the syntax structure to determine the value of the extended length in response to determining that the syntax element associated with the extended length is present in the syntax structure, at block 510. For example, the value of the extension length ranges from 0 to 256.
In some embodiments, as illustrated by the code stream decoding method 500 shown in FIG. 5, decoding one or more syntax elements associated with extension data based on syntax elements associated with extension lengths at block 510 includes performing a respective set of operations of a plurality of sets of operations defined by an iterative loop having a variable that is incremented from zero to a maximum integer less than a value of the extension length, including decoding one syntax element associated with extension data in bytes from a syntax structure.
In some embodiments, as illustrated by the code stream decoding method 500 shown in FIG. 5, decoding one or more syntax elements associated with extended data based on syntax elements associated with extended lengths at block 510 includes iteratively performing decoding one syntax element associated with extended data in bit form from a syntax structure in response to determining that more data in bit form is present in the syntax structure based on extended lengths.
In some embodiments, as illustrated by the code stream decoding method 500 shown in FIG. 5, iteratively performing, at block 510, decoding one syntax element associated with expanded data in bit form from a syntax structure in response to determining that there is more data in the syntax structure in bit form based on an expanded length includes iteratively performing, determining whether a difference between a current position in the syntax structure and a position immediately following the expanded length is less than an expanded length multiplied by eight calculated value is true or false, and decoding one syntax element associated with expanded data in one bit form from the syntax structure in response to determining that a difference between a current position in the syntax structure and a position immediately following the expanded length is less than an expanded length multiplied by eight calculated value is true.
In some embodiments, as illustrated in the stream decoding method 500 of fig. 5, at block 510, 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 generic attribute data stream of GPCC.
Examples 3 to 8 are provided below to illustrate different extensions.
Example 3
Fig. 10A shows an extension of the sequence header.
Fig. 10A shows a table 1000A, the table 1000A showing a syntax structure associated with a function sequence_header (), in which a plurality of syntax elements such as profile_id, level_id,..and attribute_present_flag are maintained, and on condition that the attribute_present_flag is equal to a specified value (for example, non-zero value "1" or "true"), attribute_adapt_ pred, colorQuantParam, reflQuantParam, and maxNumAttributesMinus1 are to be executed. Further, a syntax element is introduced before the function byte_alignment (). Further, in fig. 10A, as shown in block 1010A, a syntax element sequence_extension_flag is introduced. On the condition that the syntax element sequence_extension_flag is equal to a specified value (e.g., a non-zero value "1" or "true"), the syntax element sequence_extension_length is introduced, and an iterative loop with variable i incremented from 0 to sequence_extension_length-1 (e.g., i < sequence_extension_length) is introduced. In an iterative loop with variable i, syntax element sequence_extension_data_byte [ i ] is introduced.
For example, a syntax element sequence_extension_flag equal to 0 indicates that syntax elements such as sequence_extension_length and sequnce _extension_data_byte are not present in the syntax structure "sequence header". In addition, a syntax element sequence_extension_flag equal to 1 indicates that sequence_extension_length and syntax element sequnce _extension_data_byte may exist in the syntax structure "sequence header". Further, in a bitstream consistent with the present disclosure, the syntax element sequence_extension_flag should be equal to 0. However, some uses where the syntax element sequence_extension_flag is equal to 1 may be specified in other versions, and a decoder consistent with the present disclosure should allow Xu Yufa for the value of element sequence_extension_flag equal to 1 to appear in the syntax.
Further, the syntax element sequnce _extension_length specifies the length of the sequence extension data in bytes, excluding bits for transmitting the syntax element sequnce _extension_length itself. When sequnce _extension_length does not exist, it is inferred that the value of sequnce _extension_length is equal to 0. Although syntax element sequnce _extension_length is not present in the bitstream consistent with the present disclosure, some uses of syntax element sequnce _extension_length may be specified in other versions, and decoder compliance Xu Yufa element sequnce _extension_length is present and in the range of 0 to N (e.g., N is 256), inclusive.
In addition, the syntax element sequence_extension_data_byte [ i ] may have an arbitrary value. The presence and value of this syntax element does not affect the decoding process specified in the present disclosure. A decoder consistent with the present disclosure should ignore the value of each syntax element sequence_extension_data_byte [ i ]. The value of the syntax element does not affect the decoding process specified in the present disclosure.
Further, an example of the alternative syntax table is shown below.
Fig. 10B shows a table 1000B, the table 1000B showing a syntax structure associated with a function sequence_header (), in which a plurality of syntax elements such as profile_id, level_id,..and attribute_present_flag are maintained, and on condition that the attribute_present_flag is equal to a specified value (for example, non-zero value "1" or "true"), attribute_adapt_ pred, colorQuantParam, reflQuantParam, and maxNumAttributesMinus1 are to be executed. Further, a syntax element is introduced before the function byte_alignment (). Similar to fig. 10A, in fig. 10B, a syntax element sequence_extension_data_bit is introduced, instead of the syntax element sequence_extension_data_byte in fig. 10A. For example, in fig. 10B, 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 of "1" or "true"), the syntax element sequence_extension_length is introduced, and the function more_data_in_sequence_header_extension () returns a specified value (e.g., true). The syntax element sequence_extension_data_bit is introduced on condition that the function more_data_in_sequence_header_extension () returns a specified value.
For example, the syntax element sequence_extension_data_bit may have an arbitrary value. The presence and value of this syntax element does not affect the decoding process specified in the present disclosure. A decoder consistent with the present disclosure should ignore the value of each syntax element sequence_extension_data_bit. The value of the syntax element does not affect the decoding process specified in the present disclosure.
In addition, more_data_in_sequence_header_extension () is specifically as follows:
If (current position in sequence_header () syntax structure) - (position immediately after sequence_extension_length) is smaller 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.
Example 4
Fig. 11A shows an extension of the geometric header.
Fig. 11A shows a table 1100A, the table 1100A showing syntax structures associated with function geometry header (), wherein a plurality of syntax elements, such as gps_ lcu _node_size_log2_minus_one and gps_immediate_ geom _part_flag, are maintained, and gps_max_immediate_ qtbt _before the syntax elements gps_single_mode_flag and gps_save_state_flag, gps_max_size_flag and gps_min_size_ qtbt will be executed if the gps_immediate_ geom _part_flag is equal to a specified value (e.g., a non-zero value of "1" or "true"). Further, in fig. 11A, as shown in block 1110A, a 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 an iterative loop with variable i increasing from 0 to geometry_extension_length-1 (e.g., i < geometry_extension_length) is introduced. In an iterative loop with variable i, a syntax element geometry_extension_data_byte [ i ] is introduced.
For example, syntax elements 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 "geometry header". In addition, syntax elements geometry_extension_flag equal to 1 means that syntax elements such as geometry_extension_length and geometry_extension_data_byte may exist in the syntax structure "geometry header". Further, in a bitstream consistent with the present disclosure, the syntax element geometry_extension_flag should be equal to 0. However, some uses of the syntax element geometry_extension_flag equal to 1 may be specified in other versions, and a decoder consistent with the present disclosure should allow Xu Yufa elements geometry_extension_flag with a value equal to 1 to appear in the syntax.
Further, the syntax element geometry_extension_length specifies the length of the geometry extension data in bytes, excluding bits for transmitting the syntax element geometry_extension_length itself. When the geometry_extension_length does not exist, it is inferred that the value of the geometry_extension_length is equal to 0. Although the syntax element geometry_extension_length is not present in the code stream conforming to the present disclosure, some uses of the syntax element geometry_extension_length may be specified in other versions, and the decoder conforming to the present disclosure should allow Xu Yufa element geometry_extension_length to be present and in the range of 0 to N (e.g., N is 256), inclusive.
In addition, the syntax element geometry_extension_data_byte [ i ] may have any value. The presence and value of this syntax element does not affect the decoding process specified in the present disclosure. A decoder consistent with the present disclosure should ignore the value of each syntax element geometry_extension_data_byte [ i ]. The value of the syntax element does not affect the decoding process specified in the present disclosure.
Further, fig. 11B shows an example of an alternative syntax table.
Fig. 11B shows a table 1100B, the table 1100B showing syntax structures associated with function geometry header (), wherein a geometry_extension_data_bit is introduced before the function byte_alignment () instead of an extension of the geometry_extension_data_byte, for example, a plurality of syntax elements such as gps_ lcu _node_size_log2_minus_one and gps_image_ geom _part_flag are maintained, and before the syntax elements gps_single_mode_flag and gps_state_flag, gps_max_number_32_image_32_flag and gps_size_34_34 are to be executed under the condition that the gps_image_mode_flag is equal to a specified value (for example, a non-zero value "1" or "true"). Similar to fig. 11A, in fig. 11B, a syntax element geometry_extension_data_bit is introduced, instead of the syntax element geometry_extension_data_byte in fig. 11A. For example, in fig. 11B, as shown in block 1110B, a 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 function more_data_in_geometry_header_extension () returns a specified value (e.g., true). The syntax element geometry_extension_data_bit is introduced under the condition that the function more_data_in_geometry_header_extension () returns a specified value.
For example, the syntax element geometry_extension_data_bit may have an arbitrary value. The presence and value of this syntax element does not affect the decoding process specified in the present disclosure. A decoder consistent with the present disclosure should ignore the value of each syntax element geometry_header_extension_data_bit. The value of the syntax element does not affect the decoding process specified in the present disclosure.
In addition, the function more_data_in_geometry_header_extension () is specifically as follows:
if (current position in the geometry_header () syntax structure) - (position immediately after the geometry_extension_length) is smaller than (geometry_extension_length×8), 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.
Example 5
Fig. 12A shows an extension of the attribute header.
Fig. 12A shows a table 1200A, the table 1200A showing a syntax structure associated with a function attribute_header () in which an extension is introduced before a function byte_alignment (), as shown in block 1210A, for example, a syntax element attribute_extension_flag is introduced. On the condition that the attribute_extension_flag is equal to a specified value (e.g., a non-zero value of "1" or "true"), an iterative loop of syntax element attribute_extension_length is introduced, and a variable i with increments from 0 to attribute_extension_length-1 (e.g., i < attribute_extension_length) is introduced. In an iterative loop with variable i, a syntax element attribute_extension_data_byte [ i ] is introduced.
For example, syntax elements 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 "attribute header". In addition, syntax elements attribute_extension_flag equal to 1 means that syntax elements such as attribute_extension_length and attribute_extension_data_byte may exist in the syntax structure "attribute header". Further, in a bitstream consistent with the present disclosure, the syntax element attribute_extension_flag should be equal to 0. However, some uses where the syntax element attribute_extension_flag is equal to 1 may be specified in other versions, and a decoder consistent with the present disclosure should allow Xu Yufa that the value of the element attribute_extension_flag is equal to 1 to appear in the syntax.
Further, the syntax element attribute_extension_length specifies the length of the attribute extension data in bytes, excluding bits for transmitting the syntax element attribute_extension_length itself. When the attribute_extension_length does not exist, it is inferred that the value of the attribute_extension_length is equal to 0. Although the syntax element attribute_extension_length does not exist in the code stream conforming to the present disclosure, some uses of the syntax element attribute_extension_length may be specified in other versions, and the decoder conforming to the present disclosure should allow Xu Yufa element attribute_extension_length to exist and be in the range of 0 to N (e.g., N is 256), including the end value.
In addition, the syntax element attribute_extension_data_byte [ i ] may have any value. The presence and value of this syntax element does not affect the decoding process specified in the present disclosure. A decoder consistent with the present disclosure should ignore the value of each syntax element attribute_extension_data_byte [ i ]. The value of the syntax element does not affect the decoding process specified in the present disclosure.
Further, fig. 12B shows an example of an alternative syntax table.
Fig. 12B shows a table 1200B, the table 1200B showing a syntax structure associated with a function attribute_header () in which 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 the attribute_extension_flag is equal to a specified value (e.g., a non-zero value of "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. The syntax element attribute_extension_data_bit is introduced on condition that the function more_data_in_geometry_header_extension () returns a specified value.
For example, the syntax element attribute_extension_data_bit may have an arbitrary value. The presence and value of this syntax element does not affect the decoding process specified in the present disclosure. A decoder consistent with the present disclosure should ignore the value of each syntax element attribute_header_extension_data_bit. The value of the syntax element does not affect the decoding process specified in the present disclosure.
Further, the function more_data_in_attribute_header_extension () is specifically as follows:
If (the current position in the attribute_header () syntax structure) - (the position immediately after the attribute_extension_length) is smaller than (attribute_extension_length×8), 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.
Example 6
Fig. 13A shows an extension of the geometric slice header.
Fig. 13A shows a table 1300A, the table 1300A showing a syntax structure associated with a function geometry_slice_header (), wherein an extension is introduced before the function byte_alignment (), as shown in block 1310A, for example, a 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 (e.g., a non-zero value of "1" or "true"), an iterative loop of syntax element geometry_slice_extension_length is introduced, and a variable i with increments from 0 to geometry_slice_extension_length-1 (e.g., i < geometry_slice_extension_length) is introduced. In an iterative loop with variable i, a syntax element geometry_slice_extension_data_byte [ i ] is introduced.
For example, syntax elements including the syntax element geometry_slice_extension_flag equal to 0 means that syntax elements such as geometry_slice_extension_length and geometry_slice_extension_data_byte are not present 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". Further, in a bitstream consistent with the present disclosure, the syntax element geometry_slice_extension_flag should be equal to 0. However, some uses of the syntax element geometry_slice_extension_flag equal to 1 may be specified in other versions, and a decoder conforming to this version of the disclosure should allow the Xu Yufa element geometry_slice_extension_flag to have a value equal to 1 to appear in the syntax.
Further, the syntax element geometry_slice_extension_length specifies the length of the geometry_slice extension data in bytes, excluding bits for transmitting the syntax element sequnce _extension_length itself. When sequnce _extension_length does not exist, it is inferred that the value of geometry_slice_extension_length is equal to 0. Although the syntax element geometry_slice_extension_length is not present in the code stream conforming to the present disclosure, some uses of the syntax element sequnce _extension_length may be specified in other versions, and the decoder conforming to the present disclosure should allow the Xu Yufa element geometry_slice_extension_length to be present and in the range of 0 to N (e.g., N is 256), including the end value.
In addition, the syntax element geometry_slice_extension_data_byte [ i ] may have any value. The presence and value of this syntax element does not affect the decoding process specified in the present disclosure. A decoder consistent with the present disclosure should ignore the value of each syntax element geometry_slice_extension_data_byte [ i ]. The value of the syntax element does not affect the decoding process specified in the present disclosure.
Further, fig. 13B shows an example of an alternative syntax table.
Fig. 13B shows a table 1300B, the table 1300B showing a syntax structure associated with a function geometry_slice_header () in which a geometry_slice_extension_data_bit is introduced before a function byte_alignment () instead of an extension of the geometry_slice_extension_data_byte, as shown in block 1310B, for example, a syntax element geometry_slice_extension_flag is introduced. Under the condition that the geometry_slice_extension_flag is equal to a specified value (e.g., a non-zero value of "1" or "true"), a syntax element geometry_slice_extension_length is introduced, and a condition that the function more_data_in_geometry_slice_header_extension () returns a specified value (e.g., true) is introduced. The syntax element geometry_slice_extension_data_bit is introduced under the condition that the function more_data_in_geometry_slice_header_extension () returns a specified value.
For example, the syntax element geometry_slice_extension_data_bit may have any value. The presence and value of this syntax element does not affect the decoding process specified in the present disclosure. A decoder consistent with the present disclosure should ignore the value of each syntax element geometry_slice_header_extension_data_bit. The value of the syntax element does not affect the decoding process specified in the present disclosure.
In addition, the function more_data_in_geometry_slice_header_extension () is specifically as follows:
If (current position in the geometry_slice_header () syntax structure) - (position immediately after the geometry_slice_extension_length) is smaller than (geometry_slice_extension_length x 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.
Example 7
Fig. 14A shows an extension of the attribute slice header.
Fig. 14A shows a table 1400A, the table 1400A showing a syntax structure associated with a function attribute_slice_header (), wherein an extension is introduced before the function byte_alignment (), as shown in block 1410A, for example, a syntax element attribute_slice_extension_flag is introduced. On the condition that the attribute_slice_extension_flag is equal to a specified value (e.g., a non-zero value of "1" or "true"), a syntax element attribute_slice_extension_length is introduced, and an iterative loop with variable i that increments from 0 to attribute_slice_extension_length-1 (e.g., i < attribute_slice_extension_length) is introduced. In an iterative loop with variable i, a syntax element attribute_slice_extension_data_byte [ i ] is introduced.
For example, syntax elements attribute_slice_extension_flag 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, syntax elements attribute_slice_extension_flag equal to 1 means that syntax elements such as attribute_slice_extension_length and attribute_slice_extension_data_byte may exist in the syntax structure "attribute_ SLICE HEADER". Further, in a bitstream consistent with the present disclosure, the syntax element attribute_slice_extension_flag should be equal to 0. However, some uses of the syntax element attribute_slice_extension_flag equal to 1 may be specified in other versions, and a decoder consistent with the present disclosure should allow the Xu Yufa element attribute_slice_extension_flag to have a value equal to 1 to appear in the syntax.
Further, the syntax element attribute_slice_extension_length specifies the length of the attribute_slice extension data in bytes, excluding bits for transmitting the syntax element sequnce _extension_length itself. When the attribute_slice_extension_length does not exist, it is inferred that the value of the attribute_slice_extension_length is equal to 0. Although the syntax element attribute_slice_extension_length does not exist in the bitstream conforming to the present disclosure, some uses of the syntax element sequnce _extension_length may be specified in other versions, and the decoder conforming to the present disclosure should allow Xu Yufa element attribute_slice_extension_length to exist and be in the range of 0 to N (e.g., N is 256), including the end value.
In addition, the syntax element attribute_slice_extension_data_byte [ i ] may have any value. The presence and value of this syntax element does not affect the decoding process specified in the present disclosure. A decoder consistent with the present disclosure should ignore the value of each syntax element attribute_slice_extension_data_byte [ i ]. The value of the syntax element does not affect the decoding process specified in the present disclosure.
Further, fig. 14B shows an example of an alternative syntax table.
Fig. 14B shows a table 1400B, the table 1400B showing a syntax structure associated with a function attribute_slice_header () in which an extension of an attribute_slice_extension_data_bit other than an attribute_slice_extension_data_byte is introduced before a function byte_alignment (), as shown in block 1410B, for example, a syntax element attribute_slice_extension_flag is introduced. Under the condition that the attribute_slice_extension_flag is equal to a specified value (e.g., a non-zero value of "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. The syntax element attribute_slice_extension_data_bit is introduced under the condition that the function more_data_in_attribute_slice_header_extension () returns a specified value.
For example, the syntax element attribute_slice_extension_data_bit may have an arbitrary value. The presence and value of this syntax element does not affect the decoding process specified in the present disclosure. A decoder consistent with the present disclosure should ignore the value of each syntax element attribute_slice_header_extension_data_bit. The value of the syntax element does not affect the decoding process specified in the present disclosure.
Further, the function more_data_in_attribute_slice_header_extension () is specifically as follows:
If (the current position in the attribute_slice_header () syntax structure) - (the position immediately after the attribute_slice_extension_length) is smaller than (attribute_slice_extension_length x 8), the return value of the 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.
Example 8
Fig. 15A shows an extension of the general attribute data code stream.
Fig. 15A shows a table 1500A, the table 1500A showing a syntax structure associated with a function general_attribute_data_bitstream (), wherein an extension is introduced before a function byte_alignment (), as shown in block 1510A, for example, a syntax element attribute_data_extension_flag is introduced. On the condition that the attribute_data_extension_flag is equal to a specified value (e.g., a non-zero value of "1" or "true"), a syntax element attribute_data_extension_length is introduced, and an iterative loop with variable i incremented from 0 to attribute_data_extension_length-1 (e.g., i < attribute_data_extension_length) is introduced. In an iterative loop with variable i, the syntax element attribute_data_extension_data_byte [ i ] is introduced.
For example, syntax elements attribute_data_extension_flag equal to 0 indicates that syntax elements such as attribute_data_extension_length and attribute_extension_data_byte are not present in the syntax structure "general_attribute_data_bit stream". In addition, syntax elements attribute_data_extension_flag equal to 1 means that syntax elements such as attribute_data_extension_length and attribute_extension_data_byte may exist in the syntax structure "general_attribute_data_bitstream". Further, in a bitstream consistent with the present disclosure, the syntax element attribute_data_extension_flag should be equal to 0. However, some uses of the syntax element attribute_data_extension_flag equal to 1 may be specified in other versions, and a decoder consistent with the present disclosure should allow the Xu Yufa element attribute_data_extension_flag to have a value equal to 1 to appear in the syntax.
Further, the syntax element attribute_data_extension_length specifies the length of the attribute extension data in bytes, excluding bits for transmitting the syntax element sequnce _extension_length itself. When the attribute_data_extension_length does not exist, it is inferred that the value of the attribute_data_extension_length is equal to 0. Although the syntax element attribute_data_extension_length does not exist in the code stream conforming to the present disclosure, some uses of the syntax element attribute_data_extension_length may be specified in other versions, and the decoder conforming to the present disclosure should allow Xu Yufa element attribute_data_extension_length to exist and be in the range of 0 to N (e.g., N is 256), including the end value.
In addition, the syntax element attribute_extension_data_byte [ i ] may have any value. The presence and value of this syntax element does not affect the decoding process specified in the present disclosure. A decoder consistent with the present disclosure should ignore the value of each syntax element attribute_extension_data_byte [ i ]. The value of the syntax element does not affect the decoding process specified in the present disclosure.
Fig. 15B shows an example of an alternative syntax table.
Fig. 15B shows a table 1500B, the table 1500B showing a syntax structure associated with a function general_attribute_data_bitstream (), wherein an attribute_extension_data_bit is introduced before a function byte_alignment () instead of an extension of the attribute_extension_data_byte, as shown in block 1510B, for example, a syntax element attribute_data_extension_flag is introduced. Under the condition that the attribute_data_extension_flag is equal to a specified value (e.g., a non-zero value of "1" or "true"), a syntax element attribute_data_extension_length is introduced, and a condition that a function more_data_in_general_attribute_data_bitstream () returns a specified value (e.g., true ") is introduced. The syntax element attribute_extension_data_bit is introduced on condition that the function more_data_in_general_attribute_data_bit () returns a specified value.
For example, the syntax element attribute_extension_data_bit may have an arbitrary value. The presence and value of this syntax element does not affect the decoding process specified in the present disclosure. A decoder consistent with the present disclosure should ignore the value of each syntax element general_attribute_data_bitstream. The value of the syntax element does not affect the decoding process specified in the present disclosure.
Further, the function more_data_in_general_attribute_data_bitstream () is specifically as follows:
If (current position in the general_attribute_data_bitstream () syntax structure) - (position immediately after attribute_data_extension_length) is smaller 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.
Accordingly, embodiments of a code stream encoding process for spreading are provided below.
In some embodiments, as shown in the code stream encoding method 600 of FIG. 6, encoding a code stream associated with GPCC to determine extended data, the code stream including a syntax structure having syntax elements associated with extended flags, includes encoding the syntax elements associated with the extended flags based on the extended data, determining the syntax elements associated with extended lengths based on the extended data in response to determining that the syntax elements associated with the extended flags are not equal to zero, and encoding one or more syntax elements associated with the extended data into the syntax structure based on the syntax elements associated with the extended lengths, at block 610.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, determining the syntax element associated with the extended length based on the extended data in response to determining that the syntax element associated with the extended flag is not equal to zero includes determining that the syntax element associated with the extended length is not present in the syntax structure in response to determining that the value of the extended length is equal to zero, and encoding the syntax element associated with the extended length into the syntax structure based on the length of the extended data in bytes in response to determining that the syntax element associated with the extended length is present in the syntax structure in block 610. For example, the extension length has a value ranging from 0 to 256.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, encoding one or more syntax elements associated with extension data based on syntax elements associated with the extension length, at block 610, includes performing a respective set of operations of a plurality of sets of operations defined by an iterative loop having a variable that increases from zero to a maximum integer less than a value of the extension length, including encoding one syntax element associated with extension data in bytes into a syntax structure.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, encoding one or more syntax elements associated with extended data based on syntax elements associated with extended lengths at block 610 includes iteratively performing encoding one syntax element associated with extended data in bit form into a syntax structure in response to determining that more data in bit form is present in the syntax structure based on extended lengths.
In some embodiments, as illustrated by the code stream encoding method 600 shown in FIG. 6, iteratively performing, at block 610, encoding one syntax element associated with extended data in the form of bits into a syntax structure in response to determining that there are more data in the syntax structure in the form of bits based on an extended length includes iteratively performing, determining whether a difference between a current position in the syntax structure and a position immediately following the extended length is less than the extended length multiplied by eight calculated values is true or false, and encoding one syntax element associated with extended data in the form of one bit into the syntax structure in response to determining that a difference between the current position in the syntax structure and a position immediately following the extended length is less than the extended length multiplied by eight calculated values is true.
In some embodiments, as illustrated in the stream encoding method 600 shown in fig. 6, at block 610, 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 generic attribute data stream of GPCC.
Computing device
Further, the bitstream encoding operations (such as the bitstream encoder described herein) or the bitstream decoding operations (such as the bitstream decoder described herein) may be performed using any suitable computing system. For example, fig. 16 illustrates an example of a computing device 1600 that may implement the methods of the code stream encoding methods or code stream decoding methods and the like herein.
In some embodiments, the computing device 1600 may include a processor 1610, the processor 1610 coupled to the memory 1612 and configured to execute program instructions stored in the memory 1612 to perform operations for implementing a bitstream decoding method associated with a bitstream decoder and/or a bitstream encoding method associated with a bitstream encoder, for GPCC, such as AVS-GPCC.
For example, processor 1610 may include a microprocessor, application-specific integrated circuit (ASIC), state machine, or other processing device. Processor 1610 may include one or more processing units. Such processors may include, or may be in communication with, computer-readable media that store instructions that, when executed by processor 1610, cause the processor to perform the operations described herein. Memory 1612 may include any suitable non-transitory computer-readable media.
For example, a computer-readable medium may include any electronic, optical, magnetic, or other storage device capable of providing computer-readable instructions or other program code to a processor. Non-limiting examples of computer readable media include magnetic disks, memory chips, ROM, RAM, ASIC, configured processors, optical memory, magnetic tape or other magnetic memory, or any other medium from which a computer processor may read instructions. The instructions may include processor-specific instructions generated by a compiler and/or interpreter in accordance with code written in any suitable computer programming language including, for example, C, C ++, c#, visual Basic, java, python, perl, javaScript, and ActionScript.
In some embodiments, the present disclosure provides a code stream decoding system comprising a processor and a memory coupled to the processing unit, wherein the processor is configured to execute program instructions stored in the memory to perform any of the code stream decoding methods described above.
In some embodiments, the present disclosure provides a non-transitory computer readable medium having program code stored thereon, the program code executable by a processor to perform any of the above-described methods of code stream decoding.
In some embodiments, the present disclosure provides a code stream encoding system comprising a processor and a memory coupled to the processing unit, wherein the processor is configured to execute program instructions stored in the memory to perform any of the code stream encoding methods described above.
In some embodiments, the present disclosure provides a non-transitory computer readable medium having program code stored thereon, the program code executable by a processor to perform any of the above-described methods of encoding a code stream.
Those of ordinary skill in the art will appreciate that the various units, algorithms, and steps described and disclosed in the presently disclosed embodiments are implemented using electronic hardware or combinations of computer software and electronic hardware. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the solution. Those of ordinary skill in the art may implement the functions in different ways for each particular application without departing from the scope of the present disclosure. Those skilled in the art will appreciate that the above-described systems, apparatuses, and units have substantially the same workflow, and reference may be made to the workflow of the systems, apparatuses, and units in the above-described embodiments, and for convenience and brevity of description, these workflows will not be described in detail.
It should be understood that the systems, apparatuses, and methods disclosed in the embodiments of the present disclosure may be implemented in other manners. The above-described embodiments are merely exemplary. The partitioning of the cells is based solely on logic functions, with other partitions in implementation. Multiple units or components may be combined or integrated into another system. Some features may be omitted or skipped. In another aspect, the coupling, direct coupling, or communicative coupling of the illustrated or discussed elements with one another is achieved indirectly or in communication through some ports, means, or unit, whether electrically, mechanically, or otherwise.
The elements used as separate components for illustration are or are not physically separated, the elements used for illustration are or are not physical elements, i.e. located in one place or distributed over a plurality of network elements, some or all of which are used for the purposes of the embodiments. Furthermore, each functional unit in each embodiment may be integrated in one processing unit, may be physically separate units, or may be two or more units integrated in one processing unit.
If the software functional unit is implemented as a product and is used and sold, it may be stored in a readable storage medium in a computer. Based on this understanding, the technical solutions provided by the present disclosure may be implemented in whole or in part in the form of a software product. Or a part of the technical solutions beneficial to the prior art may 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 (e.g., a personal computer, server, or network device) to execute all or part of the steps disclosed by embodiments of the present disclosure. The storage medium includes a USB disk, a removable hard disk, a read-only memory (ROM), a random-access memory (RAM), a floppy disk, or other medium that can store program codes.
While the present disclosure has been described in connection with what is presently considered to be the most practical and preferred embodiment, it is to be understood that the present disclosure is not to be limited to the disclosed embodiment, but is intended to cover various arrangements made without departing from the scope of the appended claims in its broadest interpretation.
Claims (34)
1. A method of decoding a code stream, comprising:
a code stream associated with geometric point cloud encoding (GPCC) is decoded to determine extension data, the code stream including a syntax structure having a syntax element associated with an extension flag.
2. The method of claim 1, wherein decoding the bitstream associated with GPCC to determine the extension data, the bitstream including the syntax structure having the syntax element associated with the extension flag, comprises:
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 elements associated with the extension length.
3. The method of claim 2, wherein determining the syntax element associated with the extension length based on the extension data in response to determining that the syntax element associated with the extension flag is not equal to zero comprises:
In response to determining that the syntax element associated with the extension length is not present in the syntax structure, determining that a value of the extension length is 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 of 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:
executing a respective set of operations of a plurality of sets of operations defined by an iterative loop, the iterative loop having a variable that increases from zero to a maximum integer less than the value of the extended length, comprising:
One syntax element associated with the extension data in byte form is decoded from the syntax structure.
5. The method of 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:
iterative execution of decoding one syntax element associated with the extended data in bit form from the syntax structure in response to determining that there are more data in bit form in the syntax structure based on the extended length.
6. The method of claim 5, wherein iteratively performing decoding one syntax element associated with the extended data in bit form from the syntax structure in response to determining that there are more data in bit form in the syntax structure based on the extended length comprises:
And (3) performing iteration:
determining whether a difference between a current position in the syntax structure and a position immediately following the extended length is less than the extended length multiplied by eight calculated values is true or false;
In response to determining that the difference between the current position in the syntax structure and the position immediately following the extended length is less than the extended length multiplied by eight, the calculated value is true, one syntax element associated with the extended data in one bit form is decoded from the syntax structure.
7. The method of any 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 generic attribute data stream of GPCC.
8. The method of claim 1, further comprising:
In a syntax structure associated with an attribute header, executing a respective set of operations of a plurality of sets of operations defined by a first iterative loop, the first iterative loop having a first variable that increases from zero to a maximum integer less than a sum of a maximum number of attributes minus a value of one plus one, comprising:
decoding a syntax element associated with an attribute presence flag code of the first variable index, and
In response to determining that the syntax element associated with the attribute presence flag code of the first variable index is not equal to zero, performing operations comprising:
responsive 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 of the first variant index;
In response to determining that the syntax element associated with the multi-dataset flag code of the first variation index is not equal to zero, determining a syntax element associated with the attribute-number dataset minus one code of the first variation index, and
Executing a respective set of operations of a plurality of sets of operations defined by a second iterative loop, the second iterative loop having a second variable that is incremented from zero to a maximum integer that is less than a sum of the value of the attribute count dataset indexed by the first variable minus one and one, comprising:
Decoding syntax elements associated with the output bit depth minus one code of the first variable and the second variable index;
responsive 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 for the first variable and the second variable index;
Responsive to determining that the first variable is equal to zero, decoding a second set of syntax elements of the second variable index, and
Decoding a third set of syntax elements of the second variable index in response to determining that the first variable is not equal to zero, and
Decoding a plurality of syntax elements in the syntax structure associated with the attribute header.
9. The method of claim 8, wherein determining the syntax element associated with the multi-dataset flag code for the first variant index in response to determining that the syntax element for the SPS multi-dataset flag code is not equal to zero comprises:
Determining whether the syntax element associated with the multi-dataset flag code for the first variant index is present;
Decoding the syntax element associated with the multi-dataset flag code of the first variant index in response to the syntax element associated with the multi-dataset flag code of the first variant index being present, and
In response to the syntax element associated with the multi-dataset flag code of the first variant index not being present, determining that the syntax element associated with the multi-dataset flag code of the first variant index is equal to zero.
10. The method of claim 8, wherein determining the syntax element associated with the attribute count dataset minus one code for the first variable index in response to determining that the syntax element associated with the multi-dataset flag code for the first variable index is not equal to zero comprises:
Responsive to determining that the syntax element associated with the attribute count dataset minus one code of the first variant index is present, decoding the syntax element associated with the attribute count dataset minus one code of the first variant index, and
In response to determining that the syntax element associated with the attribute number dataset minus one code of the first variable index is not present, determining that the syntax element associated with the attribute number dataset minus one code of the first variable index is equal to zero.
11. The method of claim 8, wherein decoding the first set of syntax elements for the first variable and the second variable index in response to determining that the first variable is equal to zero or the first variable is not equal to zero comprises:
Decoding syntax elements associated with a maximum number of neighbors log2 minus seven codes indexed by the first variable and the second variable;
decoding syntax elements associated with level of detail number codes of the first variable and the second variable index;
Decoding syntax elements associated with maximum predicted neighbor number codes indexed by the first variable and the second variable;
decoding syntax elements associated with intra lode flag codes indexed by the first variable and the second variable;
decoding syntax elements associated with cross attribute type predictive codes 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 of the first variable and the second variable index is not equal to zero, performing operations comprising:
Decoding syntax elements associated with the attribute-encoded sequential codes of the first variable and the second variable index;
Decoding syntax elements associated with a code of cross attribute type prediction parameters indexed by the first variable and the second variable, and
A syntax element associated with cross-attribute type prediction parameter two codes indexed by the first variable and the second variable is decoded.
12. The method of claim 8, wherein decoding the second set of syntax elements of the second variable index in response to determining that the first variable is equal to zero comprises:
Decoding syntax elements associated with the cross-component prediction code of the second variable index;
decoding a syntax element associated with a sequential switch code of the second variable index;
decoding syntax elements associated with a half-zero run length enable code of the second variable index;
decoding a syntax element associated with a chroma Qp offset Cb code of the second variant index;
decoding a syntax element associated with a chroma Qp offset Cr code of the second variable index;
decoding syntax elements associated with the color reordering mode code of the second variant index, and
A syntax element associated with the color golomb quantity code of the second variable index is decoded.
13. The method of claim 8, wherein decoding the third set of syntax elements of the second variable index in response to determining that the first variable is not equal to zero comprises:
Decoding a syntax element associated with a most recent prediction parameter code of the second variable index;
Decoding a syntax element associated with a most recent prediction parameter two-code of the second variable index;
Decoding a syntax element associated with an off-axis code of the second variable index;
decoding syntax elements associated with the second variant indexed reflectivity reordering mode code, and
A syntax element associated with the second variable indexed reflective golomb quantity code is decoded.
14. The method of claim 8, wherein decoding the plurality of syntax elements in the syntax structure associated with the attribute header comprises:
decoding a fourth set of syntax elements indexed by the first variable and the second variable;
decoding a fifth set of syntax elements of the second variant index in response to determining that the attribute presence flag code of the first index is not equal to zero, and
In response to determining that the attribute presence flag code of the second index is not equal to zero, the reflectivity group prediction code of the second index is decoded.
15. The method of claim 14, wherein decoding the fourth set of syntax elements for the first variable and the second variable index comprises:
Decoding syntax elements associated with the transform codes of the first variable and the second variable index;
In response to determining that the syntax element associated with the transform code of the first variable and the second variable index is not equal to zero and the syntax element associated with the attribute presence flag code of the first variable index is not equal to zero, performing operations comprising:
Decoding syntax elements associated with maximum coefficient number codes of the first variable and the second variable index;
decoding syntax elements associated with coefficient length control codes of the first variable and the second variable index;
Decoding syntax elements associated with the attribute transform Qp delta code for the first variable and the second variable index;
Decoding syntax elements associated with an initial predictive transform rate code for the first variable and the second variable index;
Decoding syntax elements associated with transform resource layer codes indexed by the first variable and the second variable;
decoding syntax elements associated with the attribute transformation number point codes of the first variable and the second variable index;
decoding syntax elements associated with a maximum transform number code of the first variable and the second variable index;
Decoding syntax elements associated with the Qp offset DC codes indexed by the first and second variables, and
A syntax element associated with the Qp offset AC code indexed by the first variable and the second variable is decoded.
16. The method of claim 14, wherein decoding the fifth set of syntax elements of the second variant index in response to determining that the attribute presence flag code of the first index is not equal to zero comprises:
In response to determining that the syntax element associated with the attribute presence flag code of the first index is not equal to zero, the syntax element associated with the chroma Qp offset DC code of the second variant index and the syntax element associated with the chroma Qp offset AC code of the second variant index are decoded.
17. The method of claim 1, further comprising:
In a syntax structure associated with a generic attribute data stream, performing a respective set of operations of a plurality of sets of operations defined by a third iteration loop, the third iteration loop having a third variable that increases from zero to a maximum integer less than the sum of the maximum number of attributes minus one plus one of the values of the code, comprising:
In response to determining that the third variable is equal to zero and the attribute presence flag code of the first index is not equal to zero, performing operations comprising:
executing an attribute data color function to decode syntax elements associated with an attribute data color code, and
Performing a byte alignment function to align data in the code stream in bytes, and
In response to determining that the third variable is not equal to zero and the attribute presence flag code of the second index is not equal to zero, performing operations comprising:
executing an attribute data reflectivity function to decode syntax elements associated with an 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 generic attribute data stream, performing a respective set of operations of a plurality of sets of operations defined by a third iteration loop, the third iteration loop having a third variable that increases from zero to a maximum integer less than the sum of the maximum number of attributes minus one plus one of the values of the code, comprising:
In response to determining that the third variable is equal to zero and the attribute presence flag code of the first index is not equal to zero, performing operations comprising:
executing a respective set of operations of the plurality of sets of operations defined by a fourth iteration loop, the fourth iteration loop having a fourth variable,
The fourth variable increasing from zero to a maximum integer less than the sum of the maximum number of attributes minus the value of one code plus one, comprising:
executing an attribute data color function to decode syntax elements associated with an attribute data color code, and
Performing a byte alignment function to align data in the code stream in bytes, and
In response to determining that the first variable is not equal to zero and the attribute presence flag code of a second index is not equal to zero, performing operations comprising:
Executing the respective operation group of the plurality of operation groups defined by the fourth iteration loop, the fourth iteration loop having a fourth variable that increases from zero to less than the maximum integer of the sum of the maximum number attribute minus the value of one code plus one, comprising:
executing an attribute data reflectivity function to decode syntax elements associated with an attribute data reflectivity code, and
The byte alignment function is performed.
19. A code stream decoding system comprising:
Processor, and
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 of any one of claims 1 to 18.
20. A non-transitory computer readable medium having stored thereon program code executable by a processor to perform the method of any of claims 1 to 18.
21. A method of encoding a code stream, comprising:
a code stream associated with geometric point cloud encoding (GPCC) is encoded to determine extension data, the code stream including a syntax structure having a syntax element associated with an extension flag.
22. The method of claim 21, wherein encoding the bitstream associated with GPCC to determine the extension data, the bitstream including the syntax structure having the syntax element associated with the extension flag, comprises:
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 elements associated with the extension length.
23. The method of claim 22, wherein determining the syntax element associated with the extension length based on the extension data in response to determining that the syntax element associated with the extension flag is not equal to zero comprises:
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 extended length is present in the syntax structure, the syntax element associated with the extended length is encoded into the syntax structure based on a length of the extended data in bytes.
24. The method of 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 respective set of operations of a plurality of sets of operations defined by an iterative loop, the iterative loop having a variable that increases from zero to a maximum integer less than a value of the extended length, comprising:
Encoding a syntax element associated with said extension data in byte form into said syntax structure.
25. The method of 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:
iterative execution, responsive to determining that there are more data in the syntax structure in bit form based on the extension length, encoding a syntax element associated with the extension data in bit form into the syntax structure.
26. The method of claim 25, wherein iteratively performing encoding one syntax element associated with the extended data in bit form into the syntax structure in response to determining that there are more data in bit form in the syntax structure based on the extended length comprises:
And (3) performing iteration:
determining whether a difference between a current position in the syntax structure and a position immediately following the extended length is less than the extended length multiplied by eight calculated values is true or false;
In response to determining that the difference between the current position in the syntax structure and the position immediately following the extended length is less than the extended length multiplied by eight is true, encoding one syntax element associated with the extended data in one bit form into the syntax structure.
27. The method of any 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 generic attribute data stream of GPCC.
28. The method of claim 21, further comprising:
In a syntax structure associated with an attribute header, executing a respective set of operations of a plurality of sets of operations defined by a first iterative loop, the first iterative loop having a first variable that increases from zero to a maximum integer less than a sum of a maximum number of attributes minus a value of one plus one, comprising:
encoding a syntax element associated with an attribute presence flag code of the first variable index, and
In response to determining that the syntax element associated with the attribute presence flag code of the first variable index is not equal to zero, performing operations comprising:
responsive 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 of the first variant index;
In response to determining that the syntax element associated with the multi-dataset flag code of the first variation index is not equal to zero, determining a syntax element associated with the attribute-number dataset minus one code of the first variation index, and
Executing a respective set of operations of a plurality of sets of operations defined by a second iterative loop, the second iterative loop having a second variable that is incremented from zero to a maximum integer that is less than a sum of the value of the attribute count dataset indexed by the first variable minus one and one, comprising:
encoding syntax elements associated with the output bit depth minus one code of the first variable and the second variable index;
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 for the first variable and the second variable index;
In response to determining that the first variable is equal to zero, encoding a second set of syntax elements for the second variable index, and
In response to determining that the first variable is not equal to zero, encoding a third set of syntax elements for the second variable index, and
Encoding a plurality of syntax elements in the syntax structure associated with the attribute header.
29. The method of claim 28, wherein determining the syntax element associated with the multi-dataset flag code for the first variant index in response to determining that the syntax element for the SPS multi-dataset flag code is not equal to zero comprises:
Determining whether the syntax element associated with the multi-dataset flag code for the first variant index is present;
encoding the syntax element associated with the multi-dataset flag code of the first variant index in response to the syntax element associated with the multi-dataset flag code of the first variant index being present, and
In response to the syntax element associated with the multi-dataset flag code of the first variant index not being present, determining that the syntax element associated with the multi-dataset flag code of the first variant index is equal to zero.
30. The method of claim 28, wherein determining the syntax element associated with the attribute count dataset minus one code for the first variable index in response to determining that the syntax element associated with the multi-dataset flag code for the first variable index is not equal to zero comprises:
Responsive to determining that the syntax element associated with the attribute count dataset minus one code of the first variant index is present, encoding the syntax element associated with the attribute count dataset minus one code of the first variant index, and
In response to determining that the syntax element associated with the attribute number dataset minus one code of the first variable index is not present, determining that the syntax element associated with the attribute number dataset minus one code of the first variable index is equal to zero.
31. The method of claim 21, further comprising:
In a syntax structure associated with a generic attribute data stream, performing a respective set of operations of a plurality of sets of operations defined by a third iteration loop, the third iteration loop having a third variable that increases from zero to a maximum integer less than the sum of the maximum number of attributes minus one plus one of the values of the code, comprising:
In response to determining that the third variable is equal to zero and the attribute presence flag code of the first index is not equal to zero, performing operations comprising:
executing an attribute data color function to encode a syntax element associated with an attribute data color code, and
Performing a byte alignment function to align data in the code stream in bytes, and
In response to determining that the third variable is not equal to zero and the attribute presence flag code of the second index is not equal to zero, performing operations comprising:
executing an attribute data reflectivity function to encode a syntax element associated with an 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 generic attribute data stream, performing a respective set of operations of a plurality of sets of operations defined by a third iteration loop, the third iteration loop having a third variable that increases from zero to a maximum integer less than the sum of the maximum number of attributes minus one plus one of the values of the code, comprising:
In response to determining that the third variable is equal to zero and the attribute presence flag code of the first index is not equal to zero, performing operations comprising:
executing a respective set of operations of the plurality of sets of operations defined by a fourth iteration loop, the fourth iteration loop having a fourth variable,
The fourth variable increasing from zero to a maximum integer less than the sum of the maximum number of attributes minus the value of one code plus one, comprising:
executing an attribute data color function to encode a syntax element associated with an attribute data color code, and
Performing a byte alignment function to align data in the code stream in bytes, and
In response to determining that the first variable is not equal to zero and the attribute presence flag code of a second index is not equal to zero, performing operations comprising:
Executing the respective operation group of the plurality of operation groups defined by the fourth iteration loop, the fourth iteration loop having the fourth variable incremented from zero to less than the maximum number attribute minus the maximum integer of the sum of the value of one code plus one, comprising:
executing an attribute data reflectivity function to encode a syntax element associated with an attribute data reflectivity code, and
The byte alignment function is performed.
33. A code stream encoding system, comprising:
Processor, and
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 of any of claims 21 to 32.
34. A non-transitory computer readable medium having stored thereon program code executable by a processor to perform the method of any of claims 21 to 32.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202263367576P | 2022-07-01 | 2022-07-01 | |
| US63/367,576 | 2022-07-01 | ||
| PCT/US2023/026575 WO2024006436A1 (en) | 2022-07-01 | 2023-06-29 | Bitstream encoding and decoding for geometry point cloud coding |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN119452663A true CN119452663A (en) | 2025-02-14 |
Family
ID=89381486
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202380050615.2A Pending CN119452663A (en) | 2022-07-01 | 2023-06-29 | Geometric point cloud coding code stream encoding and decoding |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN119452663A (en) |
| WO (1) | WO2024006436A1 (en) |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10057578B2 (en) * | 2014-10-07 | 2018-08-21 | Qualcomm Incorporated | QP derivation and offset for adaptive color transform in video coding |
| KR20210155386A (en) * | 2019-05-14 | 2021-12-22 | 인텔 코포레이션 | Immersive video coding technology for 3DoF+/MIV and V-PCC |
| WO2021210763A1 (en) * | 2020-04-14 | 2021-10-21 | 엘지전자 주식회사 | Point cloud data transmission apparatus, point cloud data transmission method, point cloud data reception apparatus, and point cloud data reception method |
| US11645812B2 (en) * | 2020-10-06 | 2023-05-09 | Qualcomm Incorporated | Inter-component residual prediction for color attributes in geometry point cloud compression coding |
-
2023
- 2023-06-29 CN CN202380050615.2A patent/CN119452663A/en active Pending
- 2023-06-29 WO PCT/US2023/026575 patent/WO2024006436A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| WO2024006436A1 (en) | 2024-01-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11750839B2 (en) | Method and apparatus for point cloud compression | |
| CN114467302B (en) | Block-based predictive coding for point cloud compression | |
| CN107094252B (en) | Image encoding and decoding method, encoding and decoding device, and computer program | |
| CN116320352A (en) | Point cloud processing method and device, computer equipment and storage medium | |
| CN118338021A (en) | Attribute encoding in geometric point cloud encoding | |
| CN119452663A (en) | Geometric point cloud coding code stream encoding and decoding | |
| CN120303923A (en) | Geometric point cloud coding method, encoder and decoder | |
| CN119301955A (en) | System and method for geometric point cloud coding | |
| WO2024186552A1 (en) | Point cloud decoding method, point cloud encoding method, decoder and encoder | |
| WO2023244585A1 (en) | Geometry point cloud coding system and method | |
| CN118830001A (en) | Attribute level encoding for geometric point cloud encoding | |
| CN119866509A (en) | Point cloud decoding method, point cloud encoding method, decoder and encoder | |
| WO2024059232A1 (en) | Point cloud decoding method, point cloud encoding method, decoder and encoder | |
| CN120323019A (en) | Decoding method, decoder, encoding method, encoder and non-transitory computer-readable recording medium | |
| CN119732045A (en) | Decoding method, encoding method, decoder and encoder | |
| CN118369921A (en) | Adaptive attribute encoding for geometric point cloud encoding | |
| JP2024058011A (en) | Point group decoding device, point group decoding method and program | |
| JP2024093897A (en) | Point group decoding device, point group decoding method and program | |
| JP2024093896A (en) | Point group decoding device, point group decoding method and program | |
| HK40055940A (en) | Point cloud encoding and decoding method, apparatus and electronic device | |
| CN119967169A (en) | Coding and decoding method and processing method of connectivity information of polygonal network | |
| HK1243849A1 (en) | Method for encoding and decoding images, encoding and decoding apparatus, and computer readable storage medium |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination |