This disclosure relates to video-based coding of dynamic meshes.
Meshes may be used to represent physical content of a 3-dimensional space. Meshes have utility in a wide variety of situations. For example, meshes may be used in the context of representing the physical content of an environment for purposes of positioning virtual objects in an extended reality, e.g., augmented reality (AR), virtual reality (VR), or mixed reality (MR), application. Mesh compression is a process for encoding and decoding meshes. Encoding meshes may reduce the amount of data required for storage and transmission of the meshes.
To determine displacement vectors, a mesh decoder may perform inter prediction on wavelet coefficients after inverse quantization, as described in more detail below. The mesh decoder adds the inverse quantized coefficients (residuals) to inter predicted values that are stored in a frame buffer. A benefit of this technique is that the correlation between wavelet coefficients of adjacent frames is typically greater than the correlation between the corresponding quantized coefficients, which results in additional coding efficiency gains. However, the inverse quantization process is implemented as floating point operations, which are known to produce results that are operation order and platform implementation dependent. Because the reconstructed wavelet coefficients are stored in the frame buffer for inter prediction, the floating-point operations may result in different reconstructed wavelet coefficients at the encoder and decoder if the implementations differ.
To address this issue, the techniques of the present disclosure include converting a set of fixed-point transformed coefficient values to a set of floating-point transformed coefficient values and inverse transforming the set of floating-point transformed coefficient values to determine a set of reconstructed displacement vectors. To address this issue, the techniques of the present disclosure additionally include storing the set of fixed-point transformed coefficient values in a reference buffer. By configuring mesh encoders and decoders in this manner, the techniques of this disclosure may improve the overall quality of decoded mesh data. A base mesh encoder is configured to make encoding decisions based on the properties of the decoded mesh. Thus, to achieve a consistently desirable rate-distortion tradeoff, a base mesh encoder needs to be able to accurately determine all the properties of a decoded mesh. The techniques of this disclosure reduce or remove discrepancies between the encoding and decoding processes, and thus, improves the overall quality of encoding and decoding.
According to an example of this disclosure, a device for decoding encoded dynamic mesh data includes one or more memories; and one or more processors, implemented in circuitry and in communication with the one or more memories, configured to: determine a set of quantized integer coefficient values for displacement vectors of the encoded dynamic mesh data; inverse quantize the set of quantized integer coefficient values to determine a set of fixed-point dequantized coefficient values; determine a set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values; convert the set of fixed-point transformed coefficient values to a set of floating-point transformed coefficient values; inverse transform the set of floating-point transformed coefficient values to determine a set of reconstructed displacement vectors; and determine a reconstructed deformed mesh based on the set of reconstructed displacement vectors.
According to an example of this disclosure, a method for decoding encoded dynamic mesh data, the method comprising: determining a set of quantized integer coefficient values for displacement vectors of the encoded dynamic mesh data; inverse quantizing the set of quantized integer coefficient values to determine a set of fixed-point dequantized coefficient values; determining a set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values; converting the set of fixed-point transformed coefficient values to a set of floating-point transformed coefficient values; inverse transforming the set of floating-point transformed coefficient values to determine a set of reconstructed displacement vectors and determining a reconstructed deformed mesh based on the set of reconstructed displacement vectors.
According to an example of this disclosure, a computer-readable storage medium storing instructions that when executed by one or more processors cause the one or more processors to: determine a set of quantized integer coefficient values for displacement vectors of the encoded dynamic mesh data; inverse quantize the set of quantized integer coefficient values to determine a set of fixed-point dequantized coefficient values; determine a set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values; convert the set of fixed-point transformed coefficient values to a set of floating-point transformed coefficient values; inverse transform the set of floating-point transformed coefficient values to determine a set of reconstructed displacement vectors; and determine a reconstructed deformed mesh based on the set of reconstructed displacement vectors.
According to an example of this disclosure, a device for encoding dynamic mesh data includes one or more memories; and one or more processors, implemented in circuitry and in communication with the one or more memories, configured to: determine a set of quantized integer coefficient values; inverse quantize the set of quantized integer coefficient values to determine a set of fixed-point dequantized coefficient values; determine a set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values; convert the set of fixed-point transformed coefficient values to a set of floating-point transformed coefficient values; and inverse transform the set of floating-point transformed coefficient values to determine a set of reconstructed displacement vectors.
The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims.
A mesh generally refers to a collection of vertices in a three-dimensional (3D) space that collectively represent one or multiple objects in the 3D space. The vertices are connected by edges, and the edges form polygons, which form faces of the mesh. Each vertex may also have one or more associated attributes, such as a texture or a color. In most scenarios, having more vertices produces higher quality, e.g., more detailed and more realistic, meshes. Having more vertices, however, also requires more data to represent the mesh.
To reduce the amount of data needed to represent the mesh, the mesh may be encoded using lossy or lossless encoding. In lossless encoding, the decoded version of the encoded mesh exactly matches the original mesh. In lossy encoding, by contrast, the process of encoding and decoding the mesh causes loss, such as distortion, in the decoded version of the encoded mesh.
In one example of a lossy encoding technique for meshes, a mesh encoder decimates an original mesh to determine a base mesh. To decimate the original mesh, the mesh encoder subsamples or otherwise reduces the number of vertices in the original mesh, such that the base mesh is a rough approximation, with fewer vertices, of the original mesh. The mesh encoder then subdivides the decimated mesh. That is the mesh encoder estimates the locations of additional vertices in between the vertices of the base mesh. The mesh encoder then deforms the subdivided mesh by moving the vertices in a manner that makes the deformed mesh more closely match the original mesh.
After determining a desired base mesh and deformation of the subdivided mesh, the mesh encoder generates a bitstream that includes data for constructing the base mesh and data for performing the deformation. The data defining the deformation may be signaled as a series of displacement vectors that indicate the movement, or displacement, of the additional vertices determined by the subdividing process. To decode a mesh from the bitstream, a mesh decoder reconstructs the base mesh based on the signaled information, applies the same subdivision process as the mesh encoder, and then displaces the additional vertices based on the signaled displacement vectors.
This disclosure relates to encoding and decoding base mesh data. More specifically, this disclosure describes various improvements to displacement vector inter prediction processes in the V-DMC technology, which is being standardized in MPEG WG7 (3DGH). This disclosure describes techniques for implementing a fixed-point (integer) quantization process in an inter prediction schemes for displacement vector coding.
To determine displacement vectors, a mesh decoder may perform inter prediction on wavelet coefficients after inverse quantization, as described in more detail below. The mesh decoder adds the inverse quantized coefficients (residuals) to inter predicted values that are stored in a frame buffer. A benefit of this technique is that the correlation between wavelet coefficients of adjacent frames is typically greater than the correlation between the corresponding quantized coefficients, which results in additional coding efficiency gains. However, the inverse quantization process is implemented as floating point operations, which are known to produce results that are operation order and platform implementation dependent. Because the reconstructed wavelet coefficients are stored in the frame buffer for inter prediction, the floating-point operations may result in different reconstructed wavelet coefficients at the encoder and decoder if the implementations differ.
To address this issue, the techniques of the present disclosure include converting a set of fixed-point transformed coefficient values to a set of floating-point transformed coefficient values and inverse transforming the set of floating-point transformed coefficient values to determine a set of reconstructed displacement vectors. To address this issue, the techniques of the present disclosure additionally include storing the set of fixed-point transformed coefficient values in a reference buffer. By configuring mesh encoders and decoders in this manner, the techniques of this disclosure may improve the overall quality of decoded mesh data. A base mesh encoder is configured to make encoding decisions based on the properties of the decoded mesh. Thus, to achieve a consistently desirable rate-distortion tradeoff, a base mesh encoder needs to be able to accurately determine all the properties of a decoded mesh. The techniques of this disclosure reduce or remove discrepancies between the encoding and decoding processes, and thus, improves the overall quality of encoding and decoding.
As shown in
In the example of
System 100 as shown in
In general, data source 104 represents a source of data (i.e., raw, unencoded data) and may provide a sequential series of “frames”) of the data to V-DMC encoder 200, which encodes data for the frames. Data source 104 of source device 102 may include a mesh capture device, such as any of a variety of cameras or sensors, e.g., a 3D scanner or a light detection and ranging (LIDAR) device, one or more video cameras, an archive containing previously captured data, and/or a data feed interface to receive data from a data content provider. Alternatively or additionally, mesh data may be computer-generated from scanner, camera, sensor or other data. For example, data source 104 may generate computer graphics-based data as the source data, or produce a combination of live data, archived data, and computer-generated data. In each case, V-DMC encoder 200 encodes the captured, pre-captured, or computer-generated data. V-DMC encoder 200 may rearrange the frames from the received order (sometimes referred to as “display order”) into a coding order for coding. V-DMC encoder 200 may generate one or more bitstreams including encoded data. Source device 102 may then output the encoded data via output interface 108 onto computer-readable medium 110 for reception and/or retrieval by, e.g., input interface 122 of destination device 116.
Memory 106 of source device 102 and memory 120 of destination device 116 may represent general purpose memories. In some examples, memory 106 and memory 120 may store raw data, e.g., raw data from data source 104 and raw, decoded data from V-DMC decoder 300. Additionally or alternatively, memory 106 and memory 120 may store software instructions executable by, e.g., V-DMC encoder 200 and V-DMC decoder 300, respectively. Although memory 106 and memory 120 are shown separately from V-DMC encoder 200 and V-DMC decoder 300 in this example, it should be understood that V-DMC encoder 200 and V-DMC decoder 300 may also include internal memories for functionally similar or equivalent purposes. Furthermore, memory 106 and memory 120 may store encoded data, e.g., output from V-DMC encoder 200 and input to V-DMC decoder 300. In some examples, portions of memory 106 and memory 120 may be allocated as one or more buffers, e.g., to store raw, decoded, and/or encoded data. For instance, memory 106 and memory 120 may store data representing a mesh.
Computer-readable medium 110 may represent any type of medium or device capable of transporting the encoded data from source device 102 to destination device 116. In one example, computer-readable medium 110 represents a communication medium to enable source device 102 to transmit encoded data directly to destination device 116 in real-time, e.g., via a radio frequency network or computer-based network. Output interface 108 may modulate a transmission signal including the encoded data, and input interface 122 may demodulate the received transmission signal, according to a communication standard, such as a wireless communication protocol. The communication medium may comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide-area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful to facilitate communication from source device 102 to destination device 116.
In some examples, source device 102 may output encoded data from output interface 108 to storage device 112. Similarly, destination device 116 may access encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally accessed data storage media such as a hard drive, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital storage media for storing encoded data.
In some examples, source device 102 may output encoded data to file server 114 or another intermediate storage device that may store the encoded data generated by source device 102. Destination device 116 may access stored data from file server 114 via streaming or download. File server 114 may be any type of server device capable of storing encoded data and transmitting that encoded data to the destination device 116. File server 114 may represent a web server (e.g., for a website), a File Transfer Protocol (FTP) server, a content delivery network device, or a network attached storage (NAS) device. Destination device 116 may access encoded data from file server 114 through any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., digital subscriber line (DSL), cable modem, etc.), or a combination of both that is suitable for accessing encoded data stored on file server 114. File server 114 and input interface 122 may be configured to operate according to a streaming transmission protocol, a download transmission protocol, or a combination thereof.
Output interface 108 and input interface 122 may represent wireless transmitters/receivers, modems, wired networking components (e.g., Ethernet cards), wireless communication components that operate according to any of a variety of IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 comprise wireless components, output interface 108 and input interface 122 may be configured to transfer data, such as encoded data, according to a cellular communication standard, such as 4G, 4G-LTE (Long-Term Evolution), LTE Advanced, 5G, or the like. In some examples where output interface 108 comprises a wireless transmitter, output interface 108 and input interface 122 may be configured to transfer data, such as encoded data, according to other wireless standards, such as an IEEE 802.11 specification, an IEEE 802.15 specification (e.g., ZigBee™), a Bluetooth™ standard, or the like. In some examples, source device 102 and/or destination device 116 may include respective system-on-a-chip (SoC) devices. For example, source device 102 may include an SoC device to perform the functionality attributed to V-DMC encoder 200 and/or output interface 108, and destination device 116 may include an SoC device to perform the functionality attributed to V-DMC decoder 300 and/or input interface 122.
The techniques of this disclosure may be applied to encoding and decoding in support of any of a variety of applications, such as communication between autonomous vehicles, communication between scanners, cameras, sensors and processing devices such as local or remote servers, geographic mapping, or other applications.
Input interface 122 of destination device 116 receives an encoded bitstream from computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, or the like). The encoded bitstream may include signaling information defined by V-DMC encoder 200, which is also used by V-DMC decoder 300, such as syntax elements having values that describe characteristics and/or processing of coded units (e.g., slices, pictures, groups of pictures, sequences, or the like). Data consumer 118 uses the decoded data. For example, data consumer 118 may use the decoded data to determine the locations of physical objects. In some examples, data consumer 118 may comprise a display to present imagery based on meshes.
V-DMC encoder 200 and V-DMC decoder 300 each may be implemented as any of a variety of suitable encoder and/or decoder circuitry, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware or any combinations thereof. When the techniques are implemented partially in software, a device may store instructions for the software in a suitable, non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Each of V-DMC encoder 200 and V-DMC decoder 300 may be included in one or more encoders or decoders, either of which may be integrated as part of a combined encoder/decoder (CODEC) in a respective device. A device including V-DMC encoder 200 and/or V-DMC decoder 300 may comprise one or more integrated circuits, microprocessors, and/or other types of devices.
V-DMC encoder 200 and V-DMC decoder 300 may operate according to a coding standard. This disclosure may generally refer to coding (e.g., encoding and decoding) of pictures to include the process of encoding or decoding data. An encoded bitstream generally includes a series of values for syntax elements representative of coding decisions (e.g., coding modes).
This disclosure may generally refer to “signaling” certain information, such as syntax elements. The term “signaling” may generally refer to the communication of values for syntax elements and/or other data used to decode encoded data. That is, V-DMC encoder 200 may signal values for syntax elements in the bitstream. In general, signaling refers to generating a value in the bitstream. As noted above, source device 102 may transport the bitstream to destination device 116 substantially in real time, or not in real time, such as might occur when storing syntax elements to storage device 112 for later retrieval by destination device 116.
This disclosure describes techniques that may provide various improvements in the vertex attribute encoding for base meshes in the video-based coding of dynamic meshes (V-DMC), which is being standardized in MPEG WG7 (3DGH). In V-DMC, the base mesh connectivity is encoded using an edgebreaker implementation, and the base mesh attributes can be encoded using residual encoding with attribute prediction. This disclosure describes techniques to implement a transform and/or quantization on the attribute and/or the predictions and/or the residuals for the base mesh encoding, which may improve the coding performance of the base mesh encoding.
Working Group 7 (WG7), often referred to as the 3D Graphics and Haptics Coding Group (3DGH), is presently engaged in standardizing the video-based dynamic mesh coding (V-DMC) for XR applications. The current testing model includes preprocessing input meshes into simplified versions called “base meshes.” These base meshes, often contain fewer vertices than the original mesh, are encoded using a base mesh coder also called a static mesh coder. The preprocessing also generates displacement vectors as well as a texture attribute map that are both encoded using a video encoder. If the mesh is encoded in a lossless manner, then the base mesh is no longer a simplified version and is used to encode the original mesh.
The base mesh encoder encodes the connectivity of the mesh as well as the attributes associated with each vertex which typically involves the position and a coordinate for the texture but are not limited to these attributes. The position includes 3D coordinates (x,y,z) of the vertex while, the texture is stored as a 2D UV coordinate (u,v) that points to a texture map image pixel location. The base mesh in V-DMC is encoded using an edgebreaker algorithm, while the connectivity is encoded using a CLERS op code. The residual of the attribute is encoded using prediction from the previously encoded/decoded vertices. Other types of static mesh coders, such as Google Draco, may also be used. Other types of coding may also be used for the connectivity coding and residual coding.
The edgebreaker algorithm is described in Jean-Eudes Marvie, Olivier Mocquard, [V-DMC] [EE4.4] An efficient Edgebreaker implementation, ISO/IEC JTC1/SC29/WG7, m63344, April 2023 (hereinafter “m63344”), which is hereby incorporated by reference. The CLERS op code is described in J. Rossignac, “3D compression made simple: Edgebreaker with ZipandWrap on a corner-table,” in Proceedings International Conference on Shape Modeling and Applications, Genova, Italy, 2001 (hereinafter “Rossignac”) and H. Lopes, G. Tavares, J. Rossignac, A. Szymczak and A. Safonova, “Edgebreaker: a simple compression for surfaces with handles.” in ACM Symposium on Solid Modeling and Applications, Saarbrucken, 2002 (hereinafter “Lopes”), which are both hereby incorporated by reference.
Additionally, V-DMC encoder 200 may estimate the motion of the base mesh vertices and code the motion vectors into the bitstream. The reconstructed base meshes may be subdivided into finer meshes with additional vertices and, hence, additional triangles. V-DMC encoder 200 may refine the positions of the subdivided mesh vertices to approximate the original mesh. The refinements or vertex displacement vectors may be coded into the bitstream. In the current test model, the displacement vectors are wavelet transformed (lifting scheme), quantized, and the coefficients are either packed into a 2D frame or directly coded with an arithmetic coder after inter prediction. The sequence of video frames is coded with a typical video coder, for example, High Efficiency Video Coding (HEVC) Standard or the Versatile Video Coding (VVC) standard, into the bitstream. In addition, the sequence of texture frames is coded with a video coder. The simplified architecture of the V-DMC decoder is illustrated in
Aspects of V-DMC encoder 200 will now be described in more detail. Pre-processing unit 204 represents the 3D volumetric data as a set of base meshes and corresponding refinement components. This is achieved through a conversion of input dynamic mesh representations into a number of V3C components: a base mesh, a set of displacements, a 2D representation of the texture map, and an atlas. The base mesh component is a simplified low-resolution approximation of the original mesh in the lossy compression and is the original mesh in the lossless compression. The base mesh component can be encoded by base mesh encoder 212 using any mesh codec.
Base mesh encoder 212 may, for example, employ an implementation of the Edgebreaker algorithm, e.g., m63344, for encoding the base mesh where the connectivity is encoded using a CLERS op code, e.g., from Rossignac and Lopes, and the residual of the attribute is encoded using prediction from the previously encoded/decoded vertices' attributes.
Aspects of base mesh encoder 212 will now be described in more detail. One or more submeshes are input to base mesh encoder 212. Submeshes are generated by pre-processing unit 204. Submeshes are generated from original meshes by utilizing semantic segmentation. Each base mesh may include of one or more submeshes.
Base mesh encoder 212 may process connected components. Connected components include of a cluster of triangles that are connected by their neighbors. A submesh can have one or more connected components. Base mesh encoder 212 may encode one “connected component” at a time for connectivity and attributes encoding and then performs entropy encoding on all “connected components”.
Demultiplexer 304 separates the encoded bitstream into an atlas sub-bitstream, a base-mesh sub-bitstream, a displacement sub-bitstream, and a texture attribute sub-bitstream. Atlas decoder 308 decodes the atlas sub-bitstream to determine the atlas information to enable inverse reconstruction. Base mesh decoder 314 decodes the base mesh sub-bitstream, and base mesh processing unit 324 reconstructs the base mesh. Displacement decoder 316 decodes the displacement sub-bitstream, and displacement processing unit 328 reconstructs the displacement vectors. Mesh generation unit 332 modifies the base mesh based on the displacement vector to form a displaced mesh.
Video decoder 320 decodes the texture attribute sub-bitstream to determine the texture attribute map, and reconstruction unit 336 associates the texture attributes with the displaced mesh to form a reconstructed dynamic mesh.
A more detailed description of the proposal that was selected as the starting point for the V-DMC standardization will now be described. The following description details the displacement vector coding in the current V-DMC test model and working draft, WD 5.0 of V-DMC, ISO/IEC JTC1/SC29/WG7, N00744, October 2023, incorporated herein by reference.
V-DMC decoder 300 includes demultiplexer (DMUX) 402, which receives compressed bitstream b(i) and separates the compressed bitstream into a base mesh bitstream (BMB), a displacement bitstream (DB), and an attribute bitstream (AB). Mode select unit 404 determines if the base mesh data is encoded in an intra mode or an inter mode. If the base mesh is encoded in an intra mode, then static mesh decoder 406 decodes the mesh data without reliance on any previously decoded meshes. If the base mesh is encoded in an inter mode, then motion decoder 408 decodes motion, and base mesh reconstruction unit 410 applies the motion to an already decoded mesh stored in mesh buffer 412 to determine a reconstructed quantized base mesh (m′(i))). Inverse quantization unit 414 applies an inverse quantization to the reconstructed quantized base mesh to determine a reconstructed base mesh (m″(i)).
Video decoder 416 decodes the displacement bitstream to determine a set or frame of quantized transform coefficients. For purposes of encoding and decoding, quantized transform coefficients can be considered to be in a two-dimensional structure, e.g., a frame. Image unpacking unit 418 unpacks, e.g., serializes, the quantized transform coefficients from the frame. Inverse quantization unit 420 inverse quantizes, e.g., inverse scales, quantized transform coefficients to determine de-quantized transform coefficients. Inverse wavelet transform unit 422 applies an inverse transform to the de-quantized transform coefficients to determine a set of displacement vectors. Deformed mesh reconstruction unit 424 deforms the reconstructed base mesh using the decoded displacement vectors to determine a decoded mesh (M″(i)).
Video decoder 426 decodes the attribute bitstream to determine decoded attribute values (A′(i)), and color space conversion unit 428 converts the decoded attribute values into a desired color space to determine final attribute values (A″(i)). The final attribute values correspond to attributes, such as color or texture, for the vertices of the decoded mesh.
In
The proposed scheme is independent of the chosen subdivision scheme and may be combined with other subdivision schemes. The subdivided polyline is then deformed to get a better approximation of the original curve. A displacement vector is computed for each vertex of the subdivided mesh (arrows 502 in
An advantage of the subdivided curve is that the subdivided curve has a subdivision structure that allows efficient compression, while offering a faithful approximation of the original curve. The compression efficiency is obtained based on:
Mesh decimation unit 710 uses a simplification technique to decimate the input mesh M(i) and produce the decimated mesh dm(i). The decimated mesh dm(i) is then re-parameterized by atlas parameterization unit 720, which may for example use the UVAtlas tool. The generated mesh is denoted as pm(i). The UVAtlas tool considers only the geometry information of the decimated mesh dm(i) when computing the atlas parameterization, which is likely sub-optimal for compression purposes. Other parameterization schemes or tools may also be used with the proposed framework.
Applying re-parameterization to the input mesh makes it possible to generate a lower number of patches. This reduces parameterization discontinuities and may lead to better RD (rate-distortion) performance. Subdivision surface fitting unit 730 takes as input the re-parameterized mesh pm(i) and the input mesh M(i) and produces the base mesh m(i) together with a set of displacements d(i). First, pm(i) is subdivided by applying the subdivision scheme. The displacement field d(i) is computed by determining for each vertex of the subdivided mesh the nearest point on the surface of the original mesh M(i).
For the Random Access (RA) condition, a temporally consistent re-meshing may be computed by considering the base mesh m(j) of a reference frame with index j as the input for subdivision surface fitting unit 730. This makes it possible to produce the same subdivision structure for the current mesh M′(i) as the one computed for the reference mesh M′(j). Such a re-meshing process makes it possible to skip the encoding of the base mesh m(i) and re-use the base mesh m(j) associated with the reference frame M(j). This may also enable better temporal prediction for both the attribute and geometry information. For example, a motion field f(i) describing how to move the vertices of m(j) to match the positions of m(i) is computed and encoded. Such time-consistent re-meshing may not always possible. The techniques of this disclosure may also include comparing the distortion obtained with and without the temporal consistency constraint and chooses the mode that offers the best RD compromise.
Note that the pre-processing system is not normative and may be replaced by any other system that produces displaced subdivision surfaces. A possible efficient implementation would constrain the 3D reconstruction unit to directly generate displaced subdivision surface and avoids the need for such pre-processing.
V-DMC encoder 200 and V-DMC decoder 300 may be configured to perform displacements coding. Depending on the application and the targeted bitrate/visual quality, the V-DMC encoder 200 may optionally encode a set of displacement vectors associated with the subdivided mesh vertices, referred to herein as the displacement field d(i). The intra encoding process, which may be performed by V-DMC encoder 200, is illustrated in
V-DMC encoder 200 receives base mesh m(i) and displacements d(i), for example from pre-processing system 700 of
Quantization unit 802 quantizes the base mesh, and static mesh encoder 804 encodes the quantized based mesh to generate a compressed base mesh bitstream (BMB).
Displacement update unit 808 uses the reconstructed quantized base mesh m′(i) to update the displacement field d(i) to generate an updated displacement field d′(i). This process considers the differences between the reconstructed base mesh m′(i) and the original base mesh m(i). By exploiting the subdivision surface mesh structure, wavelet transform unit 810 applies a wavelet transform to d′(i) to generate a set of wavelet coefficients (e(i)). The scheme is agnostic of the transform applied and may leverage any other transform, including the identity transform. Quantization unit 812 quantizes wavelet coefficients, and image packing unit 814 packs the quantized wavelet coefficients into a 2D image/video that can be compressed using a traditional image/video encoder (e.g., such as using techniques similar to VVC) to generate a displacement bitstream.
Attribute transfer unit 830 converts the original attribute map A(i) to an updated attribute map that corresponds to the reconstructed deformed mesh DM(i). Padding unit 832 pads the updated attributed map by, for example, filling patches of the frame that have empty samples with interpolated samples that may improve coding efficiency and reduce artifacts. Color space conversion unit 834 converts the attribute map into a different color space, and video encoding unit 836 encodes the updated attribute map in the new color space, using for example a video codec, to generate an attribute bitstream.
Multiplexer 838 combines the compressed attribute bitstream, compressed displacement bitstream, and compressed base mesh bitstream into a single compressed bitstream (b(i)).
Image unpacking unit 818 and inverse quantization unit 820 apply image unpacking and inverse quantization to the reconstructed packed quantized wavelet coefficients generated by video encoding unit 816 to obtain the reconstructed version of the wavelet coefficients. Inverse wavelet transform unit 822 applies and inverse wavelet transform to the reconstructed wavelet coefficient to determine reconstructed displacements d″(i).
Inverse quantization unit 824 applies an inverse quantization to the reconstructed quantized base mesh m′(i) to obtain a reconstructed base mesh m″(i). Deformed mesh reconstruction unit 828 subdivides m″(i) and applies the reconstructed displacements d″(i) to its vertices to obtain the reconstructed deformed mesh DM(i).
Image unpacking unit 818, inverse quantization unit 820, inverse wavelet transform unit 822, and deformed mesh reconstruction unit 828 represent a displacement decoding loop. Inverse quantization unit 824 and deformed mesh reconstruction unit 828 represent a base mesh decoding loop. Mesh encoder 800 includes the displacement decoding loop and the base mesh decoding loop so that mesh encoder 800 can make encoding decisions, such as determining an acceptable rate-distortion tradeoff, based on the same decoded mesh that a mesh decoder will generate, which may include distortion due to the quantization and transforms. Mesh encoder 800 may also use decoded versions of the base mesh, reconstructed mesh, and displacements for encoding subsequent base meshes and displacements.
Control unit 850 generally represents the decision making functionality of V-DMC encoder 200. During an encoding process, control unit 850 may, for example, make determinations with respect to mode selection, rate allocation, quality control, and other such decisions.
De-multiplexer 902 feeds the mesh sub-stream to static mesh decoder 906 to generate the reconstructed quantized base mesh m′(i). Inverse quantization unit 914 inverse quantizes the base mesh to determine the decoded base mesh m″(i). Video/image decoding unit 916 decodes the displacement sub-stream, and image unpacking unit 918 unpacks the image/video to determine quantized transform coefficients, e.g., wavelet coefficients. Inverse quantization unit 920 inverse quantizes the quantized transform coefficients to determine dequantized transform coefficients. Inverse transform unit 922 generates the decoded displacement field d″(i) by applying the inverse transform to the unquantized coefficients. Deformed mesh reconstruction unit 924 generates the final decoded mesh (M″(i)) by applying the reconstruction process to the decoded base mesh m″(i) and by adding the decoded displacement field d″(i). The attribute sub-stream is directly decoded by video/image decoding unit 926 to generate an attribute map A″(i). Color format/space conversion unit 928 may convert the attribute map into a different format or color space.
As an addition or alternative to packing the quantized wavelet coefficients in frames and coding as images or video, a scheme that directly codes the quantized wavelet coefficients with a block-based arithmetic coder may also be used. This scheme is illustrated in
V-DMC encoder 200 and V-DMC decoder 300 may be configured to implement a subdivision scheme. Various subdivision schemes could be considered. A possible solution is the mid-point subdivision scheme, which at each subdivision iteration subdivides each triangle into four sub-triangles as described in
The same process is used to compute the texture coordinates of the newly created vertex. For normal vectors, an extra normalization step is applied as follows:
V-DMC encoder 200 and V-DMC decoder 300 may be configured to apply wavelet transforms. Various wavelet transforms may be applied. The results reported for CfP are based on a linear wavelet transform.
The prediction process is defined as follows:
The updated process is as follows:
The scheme may allow to skip the update process. The wavelet coefficients could be quantized e.g., by using a uniform quantizer with a dead zone.
V-DMC encoder 200 and V-DMC decoder 300 may be configured to use local or canonical coordinate systems for displacements. The displacement field d(i) is defined in the same cartesian coordinate system as the input mesh. A possible optimization is to transform d(i) from this canonical coordinate system to a local coordinate system, which is defined by the normal to the subdivided mesh at each vertex.
The advantage of considering a local coordinate system for the displacements is the possibility to quantize more heavily the tangential components of the displacements compared to the normal component. In fact, the normal component of the displacement has more significant impact on the reconstructed mesh quality than the two tangential components.
V-DMC encoder 200 and V-DMC decoder 300 may be configured to pack (and unpack) wavelet coefficients. The following scheme may be used to pack the wavelet coefficients into a 2D image:
The position within the N×M pixel block is computed by using a Morton order to maximize locality.
Other packing schemes may also be used (e.g., zigzag order, raster order). The encoder may explicitly signal in the bitstream the used packing scheme (e.g., atlas sequence parameters). This could be done at patch, patch group, tile, or sequence level.
V-DMC encoder 200 and V-DMC decoder 300 may be configured to displacement video encoding and decoding.
The proposed scheme is agnostic as to which video coding technology is used. When coding the displacement wavelet coefficients, a lossless approach may be used since the quantization is applied in a separate module. Another approach is to rely on the video encoder to compress the coefficients in a lossy manner and apply a quantization either in the original or transform domain.
Table 1 shows an example of Lifting Transform Parameter Set, which may be encoded and decoded by V-DMC encoder 200 and V-DMC decoder 300, respectively.
syntax_element[i][ltpIndex] with i equal to 0 may be applied to the displacement. syntax_element[i][ltpIndex] with i equal to non-zero may be applied to the (i−1)-th attribute, where ltpIndex is the index of the lifting transform parameter set list.
vmc_transform_lifting_skip_update_flag[i][ltpIndex] equal to 1 indicates the step of the lifting transform applied to the displacement is skipped in the vmc_lifting_transform_parameters (index, lptIndex) syntax structure, where ltpIndex is the index of the lifting transform parameter set list. vmc_transform_lifting_skip_update_flag[i][ltpIndex] with i equal to 0 may be applied to the displacement. vmc_transform_lifting_skip_update_flag[i][ltpIndex] with i equal to non-zero may be applied to the (i−1)-th attribute.
vmc_transform_lifting_quantization_parameters_x[i][ltpIndex] indicates the quantization parameter to be used for the inverse quantization of the x-component of the displacements wavelets coefficients. The value of vmc_transform_lifting_quantization_parameters_x[index][ltpIndex] shall be in the range of 0 to 51, inclusive.
vmc_transform_lifting_quantization_parameters_y[i][ltpIndex] indicates the quantization parameter to be used for the inverse quantization of the y-component of the displacements wavelets coefficients. The value of vmc_transform_lifting_quantization_parameters_x[index][ltpIndex] shall be in the range of 0 to 51, inclusive.
vmc_transform_lifting_quantization_parameters_z[i][ltpIndex] indicates the quantization parameter to be used for the inverse quantization of the z-component of the displacements wavelets coefficients. The value of vmc_transform_lifting_quantization_parameters_x[index][ltpIndex] shall be in the range of 0 to 51, inclusive.
vmc_transform_log 2_lifting_lod_inverse_scale_x[i][ltpIndex] indicates the scaling factor applied to the x-component of the displacements wavelets coefficients for each level of detail.
vmc_transform_log 2_lifting_lod_inverse_scale_y[i][ltpIndex] indicates the scaling factor applied to the y-component of the displacements wavelets coefficients for each level of detail.
vmc_transform_log 2_lifting_lod_inverse_scale_z[i][ltpIndex] indicates the scaling factor applied to the z-component of the displacements wavelets coefficients for each level of detail.
vmc_transform_log 2_lifting_update_weight[i][ltpIndex] indicates the weighting coefficients used for the update filter of the wavelet transform.
vmc_transform_log 2_lifting_prediction_weight[i][ltpIndex] the weighting coefficients used for the prediction filter of the wavelet transform.
V-DMC decoder 300 may be configured to perform inverse image packing of wavelet coefficients.
Inputs to this process are:
The output of this process is dispQuantCoeffArray, which is a 2D array of size positionCount×3 indicating the quantized displacement wavelet coefficients.
Let the function extracOddBits(x) be defined as follows:
Let the function computeMorton2D(i) be defined as follows:
The wavelet coefficients inverse packing process proceeds as follows:
V-DMC decoder 300 may be configured to perform inverse quantization of wavelet coefficients.
Inputs to this process are:
The output of this process is dispCoeffArray, which is a 2D array of size positionCount×3 indicating the dequantized displacement wavelet coefficients.
The wavelet coefficients inverse quantization process proceeds as follows:
V-DMC decoder 300 may be configured to perform inverse linear wavelet transform.
Inputs to this process are:
The output of this process is dispArray, which is a 2D array of size positionCount×3 indicating the displacements to be applied to the mesh positions.
The inverse wavelet transform process proceeds as follows:
V-DMC decoder 300 may be configured to perform positions displacement.
The inputs of this process are:
The output of this process is positionsDisplaced, which is a 2D array of size positionCount×3 indicating the positions of the displaced subdivided submesh.
The positions displacement process proceeds as follows:
As described above with respect to displacement video encoding, inter prediction may be performed on quantized wavelet coefficients (lifting scheme) after the arithmetic decoding of displacements. More recently, H. Nishimura, K. Kawamura, K. Kishimoto, J. Xu, “[V-DMC][EE4.7 Test 5.1] Quantization after Inter Prediction in Arithmetic Coding-based Displacement Coding,” ISO/IEC JTC1/SC29/WG7, m64391, July 2023 (hereinafter m64391), incorporated herein by reference, introduced inter prediction of the wavelet coefficients themselves after inverse quantization as is illustrated in
According to the techniques of this disclosure, V-DMC encoder 200 and V-DMC decoder 300 may be configured to perform displacement wavelet coefficient inter prediction with fixed-point inverse quantization. This disclosure describes techniques to integrate the fixed-point (or integer) inverse quantizer, as described in U.S. Provisional Patent Application 63/586,120, filed 28 Sep. 2023, incorporated herein by reference, to mitigate the potential drift problem due to floating point operations in the inverse quantizer process. In addition, the integer arithmetic may be deterministically specified in the standard specification.
In some examples, the conversion from fixed-point to floating point may not performed; all the operations are implemented in the fixed-point domain. In this case, a scaling operation (e.g., multiplication/division, shifting with or without offset) may be performed to match the precision of values. For example, the inverse quantized residuals may be in fixed-point domain with a particular precision P1; the IWT may expect the input to be in a fixed-point representation of a different precision P2. In this case, the precision of the residuals may be converted from P1 to P2 by multiplication/shift left (with or without offset) when P2>P1, or division/shift right (with or without offset) when P2<P1. Similarly changes to precision may be performed in other steps of the coding process.
Note that both intra and inter coding is supported in these architectures. In inter mode the predictors can be determined from a single reference frame that was decoded prior to the current frame or from multiple references, for example, bi-directional inter prediction. The lifting transform is applied in a hierarchy that results in one or multiple levels of detail (LoD). The inter predictors can be obtained from corresponding LoDs in reference frames on a per sample basis if the order of the vertices in the current and reference frames is identical. If the order is not identical then an index mapping is required. The selection between intra and inter prediction can be determined at the frame level, LoD level, block/segment/submesh level, or sample/coefficient level, etc.
In some examples, when the location (say L1) of a vertex in the current frame does not match the location of any vertex in the reference frame, a coefficient/displacement vector is derived for location L1 in the reference frame from the location of one or more vertices in the reference frame, where, this derivation may be performed by interpolating coefficients/displacement vectors of two or more neighbouring points, where the weights used for interpolation may be fixed or variable (e.g., based on distance of the neighbouring points from L1), and the derived coefficient/displacement vector may be used in inter prediction.
In some examples, for a vertex location L1 in the current frame a coefficient/displacement vector is derived for a location L1 in the reference frame from the location of one or more vertices in the reference frame, where, this derivation may be performed by filtering coefficients/displacement vectors of two or more neighbouring points, where the filter coefficients used for may be fixed or variable (e.g., based on distance of the neighbouring points from L1), and the derived coefficient/displacement vector may be used in inter prediction. (NOTE: in this example, the reference may or may not contain a vertex at location L1).
Also note that the transform can be any transform that meaningfully decorrelates the displacement values for efficient compression. In another example, the transform may be omitted.
In the V-DMC framework, the motion is determined at the basemesh level. The vertex positions of the current mesh may be determined by applying motion vectors to the vertex positions of the reference basemesh. After mesh subdivision of the current mesh the displacement vectors are computed and coded using the presented schemes.
As an addition or an alternative to the arithmetic coding of the displacements, the video frame packing and coding mode of V-DMC can be enabled as described in Toshiyasu Sugio, “[V-DMC][EE4.7-related][New] LoD based inter prediction for displacement vector coding,” ISO/IEC JTC1/SC29/WG7, m65426, October 2023, incorporated herein by reference, which changes the schemes as illustrated in
In the example of
In the example of
In the example of
V-DMC decoder 300 determines a set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values (1706). V-DMC decoder 300 converts the set of fixed-point transformed coefficient values to a set of floating-point transformed coefficient values (1708). V-DMC decoder 300 inverse transforms the set of floating-point transformed coefficient values to determine a set of reconstructed displacement vectors (1710). To inverse transform the set of floating-point transformed coefficient values to determine the set of reconstructed displacement vectors, V-DMC decoder 300 may be configured to apply an inverse wavelet transform to the set of floating-point transformed coefficient values.
V-DMC decoder 300 may store the set of fixed-point transformed coefficient values in a reference buffer. V-DMC decoder 300 may additionally determine a second set of quantized integer coefficient values; inverse quantize the second set of quantized integer coefficient values to determine a second set of fixed-point dequantized coefficient values; determine a second set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values and the set of fixed-point transformed coefficient values stored in the reference buffer; convert the second set of fixed-point transformed coefficient values to a second set of floating-point transformed coefficient values; and inverse transform the second set of floating-point transformed coefficient values to determine a second set of reconstructed displacement vectors.
V-DMC decoder 300 may modify a base mesh based of reconstructed displacement vectors to determine a reconstructed deformed mesh and apply decoded attributes to the reconstructed deformed mesh to determine a reconstructed dynamic mesh sequence. V-DMC decoder 300 may output the reconstructed dynamic mesh sequence for display, storage, transmission, or other purposes.
The techniques of this disclosure may apply to both arithmetic coding and video-based coding architectures, or other coding methods such as variable length coding, neural network-based coding, etc. It is understood that the multiple coding approaches can be unified with the fixed-point inverse quantizer and reference buffer implementations.
The following numbered clauses illustrate one or more aspects of the devices and techniques described in this disclosure.
Clause 1. A device for decoding encoded dynamic mesh data, the device comprising: one or more memories; and one or more processors, implemented in circuitry and in communication with the one or more memories, configured to: determine a set of quantized integer coefficient values for displacement vectors of the encoded dynamic mesh data; inverse quantize the set of quantized integer coefficient values to determine a set of fixed-point dequantized coefficient values; determine a set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values; convert the set of fixed-point transformed coefficient values to a set of floating-point transformed coefficient values; inverse transform the set of floating-point transformed coefficient values to determine a set of reconstructed displacement vectors; and determine a reconstructed deformed mesh based on the set of reconstructed displacement vectors.
Clause 2. The device of clause 1, wherein to determine the set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values, the one or more processors are configured to determine that the set of fixed-point transformed coefficient values are equal to the set of fixed-point dequantized coefficient values.
Clause 3. The device of clause 1, wherein to determine the set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values, the one or more processors are configured to add a set of reference values to the set of fixed-point dequantized coefficient values.
Clause 4. The device of any of clauses 1-3, wherein the one or more processors are further configured to: store the set of fixed-point transformed coefficient values in a reference buffer.
Clause 5. The device of clause 4, wherein the one or more processors are further configured to: determine a second set of quantized integer coefficient values; inverse quantize the second set of quantized integer coefficient values to determine a second set of fixed-point dequantized coefficient values; determine a second set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values and the set of fixed-point transformed coefficient values stored in the reference buffer; convert the second set of fixed-point transformed coefficient values to a second set of floating-point transformed coefficient values; and inverse transform the second set of floating-point transformed coefficient values to determine a second set of reconstructed displacement vectors.
Clause 6. The device of any of clauses 1-5, wherein to inverse transform the set of floating-point transformed coefficient values to determine the set of reconstructed displacement vectors, the one or more processors are further configured to apply an inverse wavelet transform to the set of floating-point transformed coefficient values.
Clause 7. The device of any of clauses 1-6, wherein the one or more processors are further configured to modify a base mesh based of reconstructed displacement vectors to determine the reconstructed deformed mesh.
Clause 8. The device of clause 7, wherein the one or more processors are further configured to apply decoded attributes to the reconstructed deformed mesh to determine a reconstructed dynamic mesh sequence.
Clause 9. A method for decoding encoded dynamic mesh data, the method comprising: determining a set of quantized integer coefficient values for displacement vectors of the encoded dynamic mesh data; inverse quantizing the set of quantized integer coefficient values to determine a set of fixed-point dequantized coefficient values; determining a set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values; converting the set of fixed-point transformed coefficient values to a set of floating-point transformed coefficient values; inverse transforming the set of floating-point transformed coefficient values to determine a set of reconstructed displacement vectors and determining a reconstructed deformed mesh based on the set of reconstructed displacement vectors.
Clause 10. The method of clause 9, wherein determining the set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values comprises determining that the set of fixed-point transformed coefficient values are equal to the set of fixed-point dequantized coefficient values.
Clause 11. The method of clause 9, wherein determining the set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values comprises adding a set of reference values to the set of fixed-point dequantized coefficient values.
Clause 12. The method of any of clauses 9-11, further comprising: storing the set of fixed-point transformed coefficient values in a reference buffer.
Clause 13. The method of clause 12, further comprising: determining a second set of quantized integer coefficient values; inverse quantizing the second set of quantized integer coefficient values to determine a second set of fixed-point dequantized coefficient values; determining a second set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values and the set of fixed-point transformed coefficient values stored in the reference buffer; converting the second set of fixed-point transformed coefficient values to a second set of floating-point transformed coefficient values; and inverse transforming the second set of floating-point transformed coefficient values to determine a second set of reconstructed displacement vectors.
Clause 14. A computer-readable storage medium storing instructions that when executed by one or more processors cause the one or more processors to: determine a set of quantized integer coefficient values for displacement vectors of the encoded dynamic mesh data; inverse quantize the set of quantized integer coefficient values to determine a set of fixed-point dequantized coefficient values; determine a set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values; convert the set of fixed-point transformed coefficient values to a set of floating-point transformed coefficient values; inverse transform the set of floating-point transformed coefficient values to determine a set of reconstructed displacement vectors; and determine a reconstructed deformed mesh based on the set of reconstructed displacement vectors.
Clause 15. A device for encoding dynamic mesh data, the device comprising: one or more memories; and one or more processors, implemented in circuitry and in communication with the one or more memories, configured to: determine a set of quantized integer coefficient values; inverse quantize the set of quantized integer coefficient values to determine a set of fixed-point dequantized coefficient values; determine a set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values; convert the set of fixed-point transformed coefficient values to a set of floating-point transformed coefficient values; and inverse transform the set of floating-point transformed coefficient values to determine a set of reconstructed displacement vectors.
Clause 16. The device of clause 15, wherein to determine the set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values, the one or more processors are configured to determine that the set of fixed-point transformed coefficient values are equal to the set of fixed-point dequantized coefficient values.
Clause 17. The device of clause 15, wherein to determine the set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values, the one or more processors are configured to add a set of reference values to the set of fixed-point dequantized coefficient values.
Clause 18. The device of any of clauses 15-17, wherein the one or more processors are further configured to: store the set of fixed-point transformed coefficient values in a reference buffer.
Clause 19. The device of clause 18, wherein the one or more processors are further configured to: determine a second set of quantized integer coefficient values; inverse quantize the second set of quantized integer coefficient values to determine a second set of fixed-point dequantized coefficient values; determine a second set of fixed-point transformed coefficient values based on the set of fixed-point dequantized coefficient values and the set of fixed-point transformed coefficient values stored in the reference buffer; convert the second set of fixed-point transformed coefficient values to a second set of floating-point transformed coefficient values; and inverse transform the second set of floating-point transformed coefficient values to determine a second set of reconstructed displacement vectors.
Clause 20. The device of any of clauses 15-19, wherein to inverse transform the set of floating-point transformed coefficient values to determine the set of reconstructed displacement vectors, the one or more processors are further configured to apply an inverse wavelet transform to the set of floating-point transformed coefficient values.
Clause 21. A device for decoding encoded dynamic mesh data, the device comprising: one or more memories; and one or more processors, implemented in circuitry and in communication with the one or more memories, configured to: perform displacement wavelet coefficient inter prediction with fixed-point inverse quantization to decoded a displacement vector.
Clause 22. The device of clause 21, wherein the one or more processors are further configured to modify a base mesh based on the displacement vector to determine a reconstructed deformed mesh.
Clause 23. The device of clause 22, wherein the one or more processors are further configured to apply decoded attributes to the reconstructed deformed mesh to determine a reconstructed dynamic mesh sequence.
It is to be recognized that depending on the example, certain acts or events of any of the techniques described herein can be performed in a different sequence, may be added, merged, or left out altogether (e.g., not all described acts or events are necessary for the practice of the techniques). Moreover, in certain examples, acts or events may be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors, rather than sequentially.
In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer-readable media generally may correspond to (1) tangible computer-readable storage media which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.
By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but are instead directed to non-transitory, tangible storage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the terms “processor” and “processing circuitry,” as used herein may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements.
The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a codec hardware unit or provided by a collection of interoperative hardware units, including one or more processors as described above, in conjunction with suitable software and/or firmware.
Various examples have been described. These and other examples are within the scope of the following claims.
This application claims the benefit of U.S. Provisional Patent Application No. 63/620,665, filed 12 Jan. 2024, the entire contents of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
63620665 | Jan 2024 | US |