Coding of spherical coordinates using an optimized spherical quantization dictionary

DE602023018312T2Active Publication Date: 2026-06-10ORANGE SA

Patent Information

Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
ORANGE SA
Filing Date
2023-02-13
Publication Date
2026-06-10

AI Technical Summary

Technical Problem

Existing methods for encoding 3D spherical data, particularly for direction of arrival (DoA) in immersive audio, suffer from high computational complexity and inefficiency due to the use of recursive calculations and unused indices in spherical quantization dictionaries.

Method used

A method that uses direct estimation of spherical zone areas to define cumulative cardinality values for quantization levels, reducing computational complexity and optimizing the use of all available points in the dictionary, particularly for encoding 16-bit DoA information in the MASA format for IVAS encoding.

Benefits of technology

The method achieves significantly lower computational requirements, with approximately 2 WMOPS for encoding and 1 WMOPS for decoding, while ensuring efficient use of all available indices, thus improving the encoding and decoding efficiency of 3D spherical data.

✦ Generated by Eureka AI based on patent content.
Patent Text Reader
Need to check novelty before this filing date? Find Prior Art

Description

[0001] The present invention relates to spherical vector quantization applied to the encoding / decoding of sound data, for the encoding of source directions of arrival (abbreviated as "DoA" for Direction of Arrival in English) which are generally represented by spherical coordinates (for example azimuth and elevation, at a predetermined distance).

[0002] The encoders / decoders (hereinafter referred to as "codecs") currently used in mobile telephony are mono (a single signal channel for playback on a single speaker). The 3GPP EVS codec (for "Enhanced Voice Services") offers "Super-HD" quality (also called "High Definition Plus" or HD+ voice) with super-wideband (SWB) audio for signals sampled at 32 or 48 kHz, or fullband (FB) for signals sampled at 48 kHz; the audio bandwidth is 14.4 to 16 kHz in SWB mode (9.6 to 128 kbit / s) and 20 kHz in FB mode (16.4 to 128 kbit / s).

[0003] The next evolution in quality for conversational services offered by operators should be immersive services, using devices such as smartphones equipped with multiple microphones, spatial audio conferencing equipment, video conferencing equipment like telepresence or 360° video, or even live audio sharing equipment, with 3D spatialized sound rendering that is far more immersive than simple 2D stereo playback. With the increasingly widespread use of mobile phones for listening with headphones and the emergence of advanced audio equipment (accessories such as 3D microphones, voice assistants with acoustic antennas, virtual or augmented reality headsets, etc.), the capture and rendering of spatialized soundscapes are now widespread enough to offer an immersive communication experience.

[0004] As such, the future 3GPP standard "IVAS" (for "Immersive Voice And Audio Services") proposes the extension of the EVS codec to immersive audio by accepting as input format for the codec at least the spatialized sound formats listed below (and their combinations): Multichannel (channel-based) format of stereo or 5.1 type where each channel feeds a speaker (for example L and R in stereo or L, R, Ls, Rs and C in 5.1); Object-based format where sound objects are described as an audio signal (generally mono) associated with metadata describing the attributes of this object (position in space, spatial width of the source, etc.); Ambisonic (scene-based) format which describes the sound field at a given point, generally captured by a spherical microphone or synthesized in the spherical harmonic domain.

[0005] There is also talk of potentially considering other input formats such as MASA (Metadata Assisted Spatial Audio), which is a parametric representation of sound recorded on a mobile phone equipped with multiple microphones. This format is examined in more detail below.

[0006] ATSCHKAL B ET AL: "Spherical Logarithmic Quantization", IEEE TRANSACTIONS ON AUDIO, SPEECH AND LANGUAGE PROCESSING, June 2, 2009, discloses a spherical logarithmic quantization combined with ADPCM. This document describes the method for dividing a sphere into equivalent quantization zones. WO 2021 / 019126 A1 and WO 2020 / 016479 A1 describe the scalar quantization of elevation and azimuth parameters as spatial metadata in the context of the IVAS codec. Elevation and azimuth are quantized according to a spherical grid on a unit sphere.

[0007] The signals to be processed by the encoder / decoder are presented as successions of blocks of sound samples called "frames" or "subframes" below.

[0008] Furthermore, the mathematical notations below follow the following convention: Scalar: s or N (lowercase for variables or uppercase for constants) Vector: q (lowercase, bold and italic) Matrix: M (uppercase, bold and italic)

[0009] Subsequently, we will denote the sphere S n of radius r in dimension n+1 defined as S n = x = x 1 , … , x n + 1 ∈ ℝ n + 1 x = x 1 2 + ⋯ + x n + 1 2 = r where ||. || denotes the Euclidean norm. When the radius r is not specified, we will assume that r = 1 (unit sphere). We focus here on the case of dimension 3 where n=2.

[0010] We recall here the definition of spherical coordinates in three dimensions. For a point (x, y, z) In 3 dimensions, we generally have at least two classical conventions for spherical coordinates, denoted ( r, ϕ, θ) : the geographical convention: x = r cos ϕ cos i , y = r cos ϕ si i , z = r sin ϕ with r ≥ 0, -π / 2 ≤ ϕ ≤ π / 2 and -π ≤ i ≤ π the physical convention: x = r si ϕ cos i , y = r si ϕ si θ, z = r cos ϕ with r ≥ 0, 0 ≤ ϕ ≤ π and - π ≤ i ≤ π

[0011] The angles ϕ, θ are defined here in radians, without loss of generality.

[0012] The ray r and the azimuth (or longitude) i are identical in both definitions, but the angle ϕdiffers depending on whether it is defined relative to the horizontal plane 0xy (elevation or latitude over the interval [-π / 2, π / 2]) or from the axis 0z (co-latitude or polar angle over the interval [0, π]). The azimuth i can be defined on an interval [-π,π] equivalently; it can be defined on [0,2π] by a simple modulo 2π operation. Subsequently, the same angular coordinates will preferably be represented in degrees, but other units may be used. Note that the symbols may differ in the literature (for example f instead of ϕ ) and / or swapped (for example i for colatitude and f (for the longitude).

[0013] Subsequently, the convention adopted will preferably be to use the elevation and azimuth pair, but the invention applies to all variants of the definition of spherical coordinates.

[0014] The invention focuses on examples of spherical vector quantization applied to the encoding of 3D directions in audio sources. The invention can also be applied to other audio formats and other signals (e.g., 360° images or video) in which 3D spherical data needs to be encoded.

[0015] The principles of DiRAC (Directional Audio Coding) are outlined below. In variations, the invention can be applied to other coding schemes, particularly for transform-based audio coding.

[0016] DiRAC coding is described, for example, in the article by V. Pulkki, "Spatial sound reproduction with directional audio coding," *Journal of the Audio Engineering Society*, vol. 55, no. 6, pp. 503-516, 2007. In this document, a mapping is performed using directional analysis to find a direction of action (DoA) for each sub-band. This DoA is complemented by a "diffuseness" parameter, resulting in a parametric description of the sound scene.

[0017] The multichannel input signal is encoded as transport channels (typically a mono or stereo signal obtained by reducing multiple captured channels) and spatial metadata (DoA and "diffuseness" by sub-bands).

[0018] We describe at the figure 1An example of DirAC coding implementation. In this example, the coding uses channel downmixing (block 100), where only a single channel is encoded (block 110) with a mono codec – for example, 3GPP EVS at a given bit rate (24.4 kbit / s). The input signal is also decomposed (block 120) into frequency sub-bands, for example, by a filter bank or a short-time Fourier transform. A Bark banding is assumed here, for example, 24 sub-bands distributed across frequencies according to the state-of-the-art Bark scale. In each frame and each sub-band, DirAC coding typically estimates two parameters (block 130) – to simplify the notation, no frame index or sub-bands are used for the different parameters: the direction of the dominant source (DoA) in terms of elevation ( ϕ ) and azimuth ( i ), and the "diffuseness" ψas described in the aforementioned article by Pulkki. The estimation of DoA is generally carried out using an active intensity vector with a time average; in variations, other estimation methods may be implemented. ϕ, θ , ψ .

[0019] The DoA is coded (block 140) on a predetermined number of bits (e.g., 7 bits) per pair ( ϕ , i ) in each frame and each sub-band. The "diffuseness" ψ is a parameter between 0 and 1; here, it is encoded (block 150) using scalar quantization (for example, on 6 bits). In the given example, the encoding budget for spatial metadata is therefore 24 x (7+6)=312 bits per frame, or 15.6 kbit / s, for a total budget of 24.4+15.6 = 40 kbit / s. The bitstream of the "downmix" signal encoding and the encoded spatial parameters are multiplexed (block 160) to form the bitstream of each frame.

[0020] There figure 2This illustrates an example of a DirAC decoder implementation. After demultiplexing the binary stream (block 200), the downmix signal is decoded (block 210). The spatial parameters are decoded (blocks 250 and 270). The decoded signal ŝ is then decomposed into time / frequencies (block 220 identical to block 120) to spatialize it as a point source (plane wave) in the block (block 260) which generates a first-order ambisonic signal spatialized as: X ϕ ^ θ ^ = 1 cos ϕ ^ cos θ ^ cos ϕ ^ sin θ ^ sin ϕ ^ . s ^

[0021] From the decoded signal, a decorrelation process is performed (block 230) to obtain a "diffuse" version (corresponding to maximum source width). This decorrelation also increases the number of channels to produce a first-order ambisonic signal with four channels (W, Y, Z, X) at the output of block 230. The decorrelated signal is decomposed into time / frequency components (block 240). The signals from blocks 240 and 260 are combined (block 275) by sub-band, after applying a scaling factor (blocks 273 and 274) derived from the decoded "diffuseness" (blocks 271 and 272). This adaptive mixing allows for adjusting the source width and the diffuseness of the sound field in each sub-band. The mixed signal is converted to a time-domain signal (block 280) using a filter bank or an inverse short-term transform.

[0022] Source directions in the DirAC format are therefore represented as 3D spherical data, typically as spherical coordinates (azimuth, elevation) according to geographical convention. In this context, there is a need to represent this DoA information efficiently, which can be formulated as a vector quantization problem on the sphere. S 2 in 3 dimensions.

[0023] Another example of a parametric format for immersive audio is the MASA format described in the article "3GPP Tdoc S4-180087: On IVAS audio formats for mobile capture devices. Source: Nokia Corporation". The principle is summarized in the figure 3 .We assume a mobile phone equipped with several microphones (for example, 4 microphones) placed in predetermined locations (for example, two on the bottom of the phone, one on the top, and one on the back of the phone). These microphones are viewed as grouped in block 300, which provides as many signals (channels) as there are microphones—possibly with additional information such as the placement or characteristics of the microphones.

[0024] Block 310 performs a parametric analysis of the signals from block 300, using a DirAC-like approach, which provides transport channels and metadata. This MASA analysis is generally proprietary and selected by the phone manufacturer. The number of transport channels is typically limited to 1 (mono) or 2 (stereo); these can be defined simply by selecting the primary microphone in the mono case or two opposing microphones (for example, one at the bottom and one at the top of the phone) in the stereo case. An example of the MASA metadata format is described, for example, in the contribution "3GPP Tdoc S4-191167 (Oct. 2019), Description of the IVAS MASA C Reference Software, Source: Nokia Corporation".We are particularly interested here in the parameter called "Direction index" and coded on 16 bits, the description of which in this document is as follows: "Direction of arrival of the sound in a time-frequency interval; Spherical representation with an accuracy of about 1 degree; Range of values: "covers all directions with an accuracy of about 1°".

[0025] This is therefore a source direction (DoA) according to a 3D spherical grid with an angular resolution close to 1 degree. This DoA information is provided for each frame and frequency sub-band by a DoA estimation (block 311). Block 312 (within block 310) then performs a DoA encoding, with each DoA encoded using 16 bits.

[0026] Block 320 represents the IVAS codec, which is not yet available as a 3GPP standard and is still under development. However, it has been proposed to 3GPP that the parametric MASA format, defining transport channels and metadata (including DoA per frame and sub-band), be an input format for the IVAS codec. The (future) IVAS encoder would then need to implement a DoA decoding step (block 321) to fully utilize this DoA information and compress it at a lower bit rate.The details of implementation concerning the compression of an input MASA format into a bitrate IVAS binary stream and the associated decoding are beyond the scope of this invention, however it may be noted for example that the MASA format is based on an extended principle of DirAC coding, the transport channels can be coded separately (by a mono core codec) or jointly (by a stereo core codec) and the metadata can be coded at a lower bitrate than in the input MASA format.

[0027] In general, any discretization of the sphere S 2 can be used as a spherical vector quantization dictionary. However, without a specific structure, nearest neighbor search and indexing in this dictionary can be costly to implement, especially when the DoA information encoding rate is too high (e.g., 16 bits per 3D vector indicating a DoA).

[0028] An example of a 3D spherical grid is given in the Annex and in the source code attached to the contribution "3GPP Tdoc S4-191167 (Oct. 2019), Description of the IVAS MASA C Reference Software, Source: Nokia Corporation".

[0029] The spatial direction of an audio source within a given frame and sub-band of a proposed WMASA format is represented by two angles: azimuth and elevation. The notations used subsequently are ϕ for the elevation and i for azimuth, whereas the reverse convention is used in document 3GPP Tdoc S4-191167.

[0030] This document defines a spherical grid as follows: The grid is made up of N total = 216 < -208 = 65328 points discretizing the surface of a 3D sphere of radius 1; each point is represented by a unique 16-bit index. This grid is defined by three stored elements: a number N ϕ= 122 discrete values ​​to encode the positive elevation (i.e. | ϕ |) a scalar quantization dictionary for elevation (for the Northern hemisphere corresponding to | ϕ |) : { φ̂ ( i ) ,i = 0, ..., N ϕ - 1} a number of points (size of the dictionary) N θ ( i ) , i = 0, ..., 121, to encode the azimuth, at a given discrete elevation of index i

[0031] The precise definition of the grid is detailed below: Each point on the 3D grid is given by a coded elevation value - decomposed into a coded absolute value φ̂ (i) where i = 0,..., N ϕ - 1 and a sign (+1 or -1) - and a coded azimuth value θ̂ ( i, j), j = 0, ..,N θ ( i ) - 1 which depends on the elevation index i. The coded elevation value is φ̂ (0) = 0 for i = 0 and ± ϕ ( i) for i = 1, ... , N ϕ - 1. The number N ϕ = 122 thus corresponds to the number of (coded) elevations with a positive value (including zero); the scalar quantization dictionary of the elevation therefore includes 2 N ϕ - 1 = 243 coded values ​​taking into account the sign; these values ​​can be ordered from the North Pole to the South Pole as follows: +ϕ ( N ϕ - 1) corresponding to the North Pole + ϕ ^ N ϕ − 2 ... + φ̂ (1) corresponding to the first layer above the equator φ̂ (0) = 0 corresponding to the equator - φ̂ (1) corresponding to the first layer below the equator ... − ϕ ^ N ϕ − 2 -φ̂ ( N ϕ - 1) corresponding to the South Pole The elevation ϕis encoded by uniform scalar quantization over the interval [-88.65, 88.65] degrees with two additional codewords for the poles (± 90 degrees). The value 0 degrees (corresponding to the equator) is contained in the dictionary. The quantization step is fixed at δ ϕ = sin − 1 2 3 sin π n 1 6 1 − sin π n 1 2 + sin − 1 2 3 3 sin π n 1 which gives d ϕ ≈ 0.7388 degrees. Therefore, we have φ̂ ( i ) = iδϕ For i = 0, ..., N ϕ - 2 and φ̂ ( i ) = 90 for i = N ϕ - 1. The size N θ ( i ) of the uniform scalar quantization dictionary for azimuth i depends on the coded elevation i The azimuth step size is fixed so that the distance between successive codewords is identical. The size of the azimuth dictionaries is symmetrical with respect to the equator (negative elevation layers have the same number of points as positive ones).

[0032] The number N θ ( i The coded azimuth values ​​are given by: N θ 0 = 422 N θ i = π sin − 1 r 2 R i , i = 1 , … , N ϕ − 2 où r = 2 sin π N θ 0 ≈ 0.014888927181374 N θ N ϕ − 1 = 1 with R 1 ≈ 0.999916868023083 R i = cos i δ ϕ , i = 2 , … , N ϕ − 2

[0033] In practice, this means: N θ i = 0 , … , 121 = [ 422 421 421 421 421 421 420 420 419 419 418 417 416 416 415 414 413 411 410 409 408 406 405 403 401 400 398 396 394 392 390 388 386 384 382 379 377 374 372 369 367 364 361 358 355 352 349 346 343 340 337 333 330 327 323 320 316 313 309 305 301 298 294 290 286 282 278 274 269 265 261 257 252 248 244 239 235 230 225 221 216 211 207 202 197 192 188 183 178 173 168 163 158 153 148 143 137 132 127 122 117 111 106 101 96 90 85 80 74 69 64 58 53 47 42 37 31 26 20 15 9 1

[0034] We can verify that the total number of points in the grid is: N tot = N θ 0 + 2 ∑ i = 1 N ϕ − 1 N θ i = 65328 Each coded elevation φ̂ i defines a spherical zone (a spherical zone delimited by elevation values) φ̂ i ± d ϕ ) in which an azimuth dictionary is used. Azimuth dictionaries have an offset fixed at 0 for even i values ​​and π N θ i for odd values ​​of i. In other words, the coded azimuth value (in degrees) is for j = 0, ... , N θ ( i ) - 1: θ ^ i j = 360 j / N θ i − 180 i paire 360 j + 0.5 / N θ i − 180 i impaire

[0035] The document cited above provides a method for coding a given point ( ϕ , i Given a point ( ϕ , i) to be coded, the quantization (nearest neighbor search) on the grid is carried out according to the following steps: The sign sgn ϕ and the absolute value | ϕ | of the elevation ϕ are determined; in particular sgn ϕ = 1 if ϕ ≥ 0, -1 otherwise. The absolute value | ϕ |is encoded by uniform scalar quantization by retaining the two nearest neighbors. This encoding with "2 survivors" can, for example, be performed by a preliminary search for the nearest neighbor in the elevation dictionary (positive), by exhaustive search. i 1 = arg min i = 0 , … , N ϕ − 1 ϕ − ϕ ^ i = arg min i = 0 , … , N ϕ − 1 ϕ − ϕ ^ i 2 We note i 1. The nearest neighbor index. Then we determine the index i 2 of the second closest value according to the value of i 1: o i 2 = 1 if i 1 =0 o i 2 = Nϕ - 2 if i 1 =Nϕ - 1 ∘ i 2 = arg min i = i 1 − 1 , i 1 + 1 ϕ − ϕ ^ i si 0 < i 1 < N ϕ − 1 This gives us two candidates sgn ϕ . ϕ̂(i 1), sgn ϕ . ϕ̂ ( i 2 ) , Or φ̂ ( I ) is the coded absolute elevation, k = 1 or 2, to represent the elevation ϕ In terms of absolute value, these two candidates are simply ϕ ( i 1) and ϕ ( i 2). The azimuth i is coded by uniform scalar quantization (with an elevation-dependent offset) according to the corresponding dictionary { θ̂ ( I, j ), j = 0, ..., N θ ( I )} respectively to k = 1 or 2. We obtain the index jk in the following way: j k = mod N θ i k θ − Δ + 180 / N θ i k 360 / N θ i k Or . and rounding down to the nearest integer, Δ = 0 if I is even, 180 / N θ ( I ) if I is odd, and mod N θ( i k) is the modulo operation such that mod N θ( i k) ( i ) = i if i =0, ..., N θ ( I ) - 1 and mod Nθ( i k) ( N θ ( I )) = 0. The index jk Therefore, check: 0 ≤ jk ≤ N θ ( I ) - 1. The best candidate is selected by minimizing the spherical distance between ( ϕ , i ) and (sign ϕ . φ̂ ( I ) , θ̂ ( ik , jk depending on k =1 or 2, which can be written independently of the sign sgn ϕ (since the sign of sgn ϕ . ϕ̂ ( I ) is identical to that of ϕ ) as : d i k j k = − sin ϕ sin ϕ ^ i k + cos ϕ cos ϕ ^ i k cos θ − θ ^ i k j k

[0036] The pair ( sgn ϕ . φ̂ ( I ) , θ̂ ( I, jk The closest point, in terms of this distance, is selected as the quantified value to be indexed. This selected point is denoted ( sgn ϕ . φ̂ ( id ϕ ) , θ̂(id ϕ , id θ )) Or: k * = arg max k = 1 , 2 d i k j k And id ϕ = ik* And id θ = jk*

[0037] The quantization index (16 bits), noted here index,of the selected point ( sgn ϕ . ϕ̂ ( id ϕ ), i ( id ϕ , id θ )) is obtained by enumerating the points on the grid starting from the equator (all elevation points ( φ̂ (0) = 0), then considering the first layer above the equator (all elevation points + φ̂ (1) = d ϕ ) , then the first layer below the equator (all elevation points - φ̂ (1) = -δ ϕ ) , etc.

[0038] We obtain an index in the form index in the interval 0, ..., N total - 1 where: index = id θ si id ϕ = 0 cumN 2 id ϕ − 2 + id θ si id ϕ > 0 et sgn ϕ > 0 cumN 2 id ϕ − 1 + id θ si id ϕ > 0 et sgn ϕ < 0

[0039] Cumulative cardinality values cumN are calculated continuously each time the index index is determined: cumN 0 = N θ 0 cumN 1 = cumN 0 + N θ 1 = N θ 0 + N θ 1 cumN 2 = cumN 1 + N θ 1 = N θ 0 + 2 N θ 1 cumN 3 = cumN 2 + N θ 2 = N θ 0 + 2 N θ 1 + N θ 2 cumN 4 = cumN 3 + N θ 2 = N θ 0 + 2 N θ 1 + 2 N θ 2 ... cumN 2 i − 1 = cumN 2 i − 2 + N θ i cum 2 i = cumN 2 i − 1 + N θ i

[0040] The method for decoding the document cited above is specified in the organizational chart of the figure 4 .

[0041] Decoding consists of, starting from the index index (block 400), to find the elevation information id ϕ , sgn ϕ and azimuth id θ (block 413), which then allows the reconstruction of the point sgn ϕ . ϕ ^ id ϕ , θ ^ id ϕ id θ .

[0042] The principle of decoding is to successively compare the value index to the values ​​of successive cumulative cardinalities cumN (or sums of cardinalities) which are calculated recursively as the process unfolds for i = 0, ..., N ϕ - 1, taking into account that the cardinalities N θ ( i ) are identical for elevations of the same absolute value (in the Northern and Southern Hemispheres). The sign of the elevation sgn ϕ is decoded by exploiting the predefined order of writing the spherical layers: equator, first layer of positive elevation (+), first layer of negative elevation (-), ..., up to the North Pole (+), South Pole (-)...

[0043] The values ​​of id ϕ , sgn ϕ , cumN(0) are initialized (block 401).

[0044] If index ≥ cumN(0) (block 402), we perform the decoding of information for the "elevation layers" outside the equator with index i > 0. The search for the "elevation layer" is performed by a loop starting from i = 1 up to i = N ϕ - 1 (blocks 403, 404, 411). At the iteration i , the cumulative cardinality is calculated recursively (blocks 405, 408) and compared to the index (block 406, 409) in order to decode the indices (blocks 407, 410).

[0045] If index < cumN(0) (block 402), we perform the decoding of the indices of the information for the layer corresponding to the equator (block 412).

[0046] Note that in the implementation in the source code attached to the 3GPP Tdoc S4-191167 contribution, there is a test to check if i = N ϕ - 1 is implemented to explicitly decode id ϕ = N ϕ - 1, sgn ϕ =- 1, id θ = 0. This part is not repeated because the sign sgn ϕ =1 should also be possible in a grid containing the North and South Poles, and it is normally unnecessary because the definition cumN ( N ϕ - 1) must allow the decoding of points associated with poles. The specific management of poles can be neglected; the important thing is the principle of iterative decoding by comparing the index with a cumulative cardinality (or sum of cardinalities) calculated as it goes along.

[0047] Once the clues id ϕ , sgn ϕ And id θ decoded, the reconstruction of spherical coordinates ( sgn ϕ . ϕ̂ ( id ϕ ) , θ̂ ( id 4 , id θ )) resumes, in 413, the definition of the grid defined previously with: ϕ ^ i = iδ ϕ pour i = 0 , … , N ϕ − 2 et ϕ ^ i = 90 pour i = N ϕ − 1 . θ ^ i j = 360 j / N θ i − 180 360 j + 0.5 / N θ i − 180 i pair i impair

[0048] This method, as implemented in the previously cited 3GPP Tdoc S4-191167 contribution, requires pre-storage of N ϕ= 122 floating-point values ​​( φ̂ (i)) scalar quantification of the (positive) elevation, N ϕ integer values ​​giving N θ ( i ) values ​​for each (positive) elevation layer, and an integer value giving N ϕ The grid does not use all possible index values ​​over 16 bits, since 208 indices (from 65328 to 65535) are unused.

[0049] The main drawback of this method is its very high complexity, on the order of 123 WMOPS for encoding (millions of weighted operations per second) and 12 WMOPS for decoding, assuming 24 sub-bands (therefore 24 DoAs per frame) and a temporal resolution of 5 ms (one frame every 5 ms). This high cost is due in particular to the implementation of scalar quantization of the elevation by searching in a stored dictionary and especially to the continuous calculation of cumulative cardinalities. cumN(i).

[0050] There is therefore a need to improve state-of-the-art methods for quantifying spherical data in 3D dimension, in particular to efficiently encode DoA data, with if possible the lowest possible complexity and avoiding having unused indices for a given total number of points (or equivalently a given bit budget).

[0051] The invention improves upon the existing state of the art.

[0052] To this end, the invention relates to a method of encoding a spatial direction of a sound source as defined in claim 1.

[0053] Thus, the cumulative cardinality values ​​used to define the spherical quantization dictionary, in particular to determine the number of quantization levels for the azimuth coordinate, are based on a direct estimation of the area of ​​spherical zones, thus avoiding a real-time and recursive calculation of the sum of cardinalities used in the method proposed in the state of the art, which is very resource-intensive.

[0054] The method proposed here is significantly less resource-intensive; for example, it uses approximately 2 WMOPS for encoding and 1 WMOPS for decoding.

[0055] Defining such a quantization dictionary also allows for the exploitation of all possible points (or codewords) in the dictionary, thereby making quantization more efficient and avoiding unused indices (or codewords) in the grid. The invention is particularly applied to implement a more efficient method for encoding and decoding 16-bit DoA information to define the MASA format as input to an IVAS encoding.

[0056] In one embodiment, the elevation encoding includes levels corresponding to the equator and the poles of the 3D sphere, thus allowing all specific points (equator and poles) of the sphere to be included in the quantization dictionary. In one embodiment, a predetermined number of points for the azimuth encoding is used for the elevation level corresponding to the equator, and the total number of points is obtained by subtracting the predetermined number of points corresponding to the equator and each of the north and south poles of the sphere from a target number of points, according to the following expression: N tot ′ = N tot − N θ 0 − 2 N θ N ϕ − 1 , N total being the number of target points on the sphere for a given bit budget, N θ (0), the predetermined number of points for the elevation level corresponding to the equator; and 2N θ (N ϕ - 1) the predetermined number of points for the north and south poles of the sphere.

[0057] The method is thus adapted to knowing the number of points for certain particular spherical layers such as that corresponding to the equator and those corresponding to the poles which can be defined at a fixed value.

[0058] In a particular embodiment, the cumulative cardinality value for a coded elevation index is representative of a number of points proportional to the total number of points according to the area (A i ) of a spherical zone delimited by the upper horizontal plane of the positive elevation level of the coded elevation index and this same plane of the sphere symmetrical with respect to the equator, from which is subtracted the area (A 0 ) corresponding to the elevation level of the equator, according to the following ratio: A i − A 0 A N ϕ − 2 − A 0 N tot ′ , N ϕ - 2 being the number of elevation quantification levels without the equator and the north and south poles of the sphere and A Nϕ-2 , the area of ​​the spherical zone corresponding to an elevation index N ϕ - 2.

[0059] In one embodiment, the cumulative cardinality value for a coded elevation index is representative of a number of points proportional to the total number of points according to the area (A' i ) of a spherical zone delimited by the upper horizontal plane of the positive elevation level of the coded elevation index and that of the equator minus half the area corresponding to the elevation level of the equator, according to the following ratio: A ′ i − A 0 / 2 A ′ N ϕ − 2 − A 0 / 2 N tot ′ , N ϕ - 2 being the number of elevation quantification levels without the equator and the north and south poles of the sphere and A' Nϕ-2 , the area of ​​the spherical zone corresponding to an elevation index N ϕ - 2.

[0060] These ratios of spherical areas allow us to estimate in a simple and direct way, by a simple rule of three, the number of points in the corresponding spherical areas that are subsets of the complete surface of the 3D sphere.

[0061] These ratios allow cumulative cardinality values ​​to be expressed as follows: cumN i = 2 Arr i N tot ′ 2 sin i + 1 2 δ ϕ − sin δ ϕ 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2 with i = 1, ..., N ϕ - 2, N ϕ - 2 being the number of elevation quantification levels excluding the equator and the north and south poles of the sphere, Arr i () being a rounding to the nearest integer depending on i , 2 Arr i x 2 corresponding to rounding to an even integer and d ϕ a step in quantifying the given elevation.

[0062] In one embodiment, the elevation coding gives a coded elevation index (i) over a number of levels ( N ϕ) of elevation and sign information. Thus, only a hemisphere is considered to define the quantization dictionary, the number of elevation levels and the number of points per level being symmetrical on both sides of the equator.

[0063] In one embodiment, an overall quantification index to be transmitted ( index ) is determined as a function of an azimuth index coded by scalar quantization on the number of points per level ( N θ ( i )) determined and of a cumulative cardinality value obtained as a function of at least the coded elevation index.

[0064] The cardinality values ​​thus defined can be estimated directly (analytically) to define the overall index to be transmitted, which reduces the maximum computational complexity.

[0065] An example not covered by the wording of the claims, but considered useful for understanding the invention, also relates to a method for decoding a spatial direction of a sound source, this direction being defined by spherical coordinates comprising an elevation coordinate and an azimuth coordinate, wherein a spherical quantization dictionary is defined on a 3D sphere by an elevation and azimuth encoding, and wherein: elevation decoding uses scalar quantization, giving at least one decoded elevation index (i) over a number of levels ( N ϕ ) elevation, azimuth decoding uses scalar quantization, based on a number of points per level ( N θ ( i )) depending on the index of the decoded elevation (i), the number of points per level ( N θ ( i)) is determined as a function of two successive cumulative cardinality values ​​( cumN ( i ) , cumN ( i - 1)), the cumulative cardinality value ( cumN ( i )) for a decoded elevation index (i) being representative of a number of points proportional to a total number of points and according to the area of ​​a spherical zone comprising at least one zone delimited by the upper horizontal plane ( ϕ = i + 1 2 δ ϕ ) of the positive elevation level of the decoded elevation index (i) and a lower horizontal plane of the sphere.

[0066] The decoding process has the same advantages as the encoding process; it allows for optimization of computing resources through the use of an optimized spherical quantization dictionary.

[0067] In the same way as for coding and according to the same advantages, in one embodiment, the decoding of the elevation includes levels corresponding to the equator (0°) and the poles (+ / -90°) of the 3D sphere.

[0068] According to a particular embodiment, a number of points ( N θ (0)) for azimuth decoding is predetermined for the elevation level corresponding to the equator and the total number of points ( N tot ′ ) is obtained by subtracting from a target number of points ( N total = 2 16< ) the predetermined number of points corresponding to the equator and each of the north and south poles of the sphere according to the following expression: N tot ′ = N tot − N θ 0 − 2 N θ N ϕ − 1 , N total being the number of target points on the sphere for a given bit budget, N θ (0), the predetermined number of points for the elevation level corresponding to the equator; and 2N θ (N ϕ - 1) the predetermined number of points for the north and south poles of the sphere.

[0069] In one embodiment, the cumulative cardinality value (cumN(i)) for a decoded elevation index (i) is representative of a number of points proportional to the total number of points according to the area (A i ) of a spherical zone delimited by the upper horizontal plane ( ϕ = i + 1 2 δ ϕ ) of the positive elevation level of the decoded elevation index (i) and this same plane of the sphere symmetrical with respect to the equator ( ϕ = − i + 1 2 δ ϕ ) from which we subtract the area (A 0 ) corresponding to the elevation level of the equator, according to the following ratio: A i − A 0 A N ϕ − 2 − A 0 N tot ′ N ϕ - 2 being the number of elevation quantification levels without the equator and the north and south poles of the sphere and A Nϕ-2 , the area of ​​the spherical zone corresponding to an elevation index N ϕ - 2.

[0070] In one possible example, the expression for the cumulative cardinality value is as follows: cumN i = 2 Arr i N tot ′ 2 sin i + 1 2 δ ϕ − sin δ ϕ 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2 with i =1, ..., N ϕ - 2, N ϕ - 2 being the number of elevation quantification levels excluding the equator and the north and south poles of the sphere, Arr i () being a rounding to the nearest integer depending on i, 2Arr i x 2 corresponding to rounding to an even integer and d ϕ a step in quantifying the given elevation.

[0071] According to one embodiment, the elevation decoding gives a decoded elevation index (i) over a number of levels ( N ϕ ) elevation and sign information. In one embodiment, decoding includes receiving an overall quantification index ( index ) , and the determination, from this index, of a cumulative cardinality value obtained as a function of at least the decoded elevation index and an azimuth index decoded on a number of points per level ( N θ ( i)) determined. The invention relates to a coding device comprising a processing circuit for implementing the steps of the coding process as described above.

[0072] Finally, the invention relates to a storage medium, readable by a processor, storing a computer program containing instructions for the execution of the coding process described above.

[0073] Other features and advantages of the invention will become clearer upon reading the following description of particular embodiments, given by way of simple illustrative and non-limiting examples, and the accompanying drawings, among which: [ Figure 1 ] described previously, illustrates a DirAC-type coding device with 3-dimensional spherical data coding; [ Figure 2 ] described previously, illustrates a DirAC-type decoding device with 3-dimensional spherical data decoding; [ Figure 3 ] described previously, illustrates a smartphone-type device equipped with multiple microphones with MASA-type spatial pre-analysis to provide a MASA-type format as input to an encoding; Figure 4 The previously described process illustrates, in flowchart form, the steps implemented in decoding spherical data in 3 dimensions; Fig. 5a ] illustrates spherical zones induced by the discretization of the elevation to define the spherical quantization dictionary according to an embodiment of the invention; [ Fig. 5b ] illustrates the areas used to determine the number of azimuth points to define the spherical quantization dictionary according to one embodiment of the invention; [ Fig. 6a ] illustrates in the form of flowcharts the steps implemented in a coding process according to one embodiment of the invention; [ Fig. 6b] illustrates in flowchart form the indexing step implemented in the coding process according to one embodiment of the invention; [ Fig. 7a ] illustrates, in the form of flowcharts, the steps implemented in a decoding process; [ Fig. 7b ] illustrates in the form of a flowchart the steps of decoding the quantification indices implemented in the decoding process [ Fig. 8a ] illustrates in diagram form the indexing (in the Northern hemisphere of the 3D sphere) implemented in a decoding process [ Fig. 8b ] illustrates in diagram form the indexing (in the Southern hemisphere of the 3D sphere) implemented in a decoding process; and [ Figure 9 ] illustrates examples of structural realization of a coding device, according to an embodiment of the invention, and of a decoding device.

[0074] The invention described below relates to the quantification of spherical data in three dimensions. This applies, for example, to the encoding and decoding of the spatial directions of sound sources (DoA), and to the encoding and decoding of MASA-type data, as described later with reference to figures 5 to 7 In variants, the invention may be applied to DirAC type coding or any type of audio data coding / decoding or coding of any other type of data where 3D direction information is encoded.

[0075] Without loss of generality, we take here the definition of 3D spherical coordinates in degrees according to the geographical convention which is used in the description of the MASA format reference proposal.

[0076] The radius, which is fixed at 1 here, is omitted, retaining only the azimuth and elevation in the case where a direction of origin (DoA) is encoded, as in a DiRAC or MASA scheme. In variations and for certain applications (e.g., quantization of a sub-band using transform encoding), it will be possible to encode a radius separately (corresponding to an average amplitude level per sub-band, for example).

[0077] In variations, units other than degrees (e.g., radians) will be used, and conventions other than the geographical convention will be used; for example, elevation may be replaced by co-latitude. Thus, other equivalent spherical coordinate systems (obtained, for example, by permuting or inverting Cartesian coordinates) may be used according to the invention—it will suffice to apply the necessary conversions in the definition of the scalar quantization dictionaries, the reconstruction, etc. The encoding and decoding according to the invention applies to all definitions of spherical coordinates; one can thus replace ϕ, θ by other spherical coordinates, by adapting the conversion between Cartesian coordinates and spherical coordinates.

[0078] The figure 5aThis illustrates a partial 2D representation of a spherical quantization dictionary (grid) according to an embodiment of the invention. According to the invention, the spherical quantization dictionary is defined by an elevation and azimuth encoding. The elevation encoding uses scalar quantization, with an elevation discretization that, in one embodiment, includes levels corresponding to the equator (zero elevation) and the poles (elevation + / -90°) of the 3D sphere. The elevation encoding provides at least one coded elevation index (i) over a number of elevation levels.

[0079] This discretization uses a number of positive levels ( N ϕ ) for the Northern Hemisphere and an indication of the sign of elevation (indicating the Northern or Southern Hemisphere), which amounts to at 2N ϕ - 1 level to code the elevation in both the Northern and Southern hemispheres of the 3D sphere.

[0080] As illustrated in the figure 5aTherefore, the spherical quantization dictionary, also referred to hereafter as the grid according to the invention, can be seen as a set of 2N ϕ - 1. "Spherical layers" or "horizontal slices" represented as C0, C1, C-1, ... Ci, ..., C ( N ϕ-1), C - ( Nϕ- 1) induced by elevation quantification (the limits of each slice in dashed lines are given by the decision thresholds of elevation quantification, excluding the poles). The surface of the Northern Hemisphere is divided into layers, C0 (only the upper half of C0, above the equator, is in the Northern Hemisphere), C1, ...Ci,..., C( N ϕ-1), while the surface of the Southern Hemisphere is divided into layers C0 (only the lower half of C0, below the equator, is in the Southern Hemisphere), C-1, ...C-i,..., C-( N ϕ-1) .

[0081] It should be noted that at the figure 5aWe show a 2D projection of the 3D sphere, using an arbitrary vertical cutting plane. The z-axis in Cartesian coordinates is indicated, with a scale according to the sine of the elevation, since the z-coordinate corresponds to z = sin ϕ in the chosen convention.

[0082] Azimuth coding uses scalar quantization, depending on the number of azimuth levels ( N θ ( i )) (also called number of points per level) depending on the elevation index (positive or absolute) coded (i=0,..., N ϕ - 1), this number of levels N θ ( i ) being symmetrical on both sides of the equator for the Northern and Southern hemispheres.

[0083] The determination of this number of azimuth levels is described below.

[0084] To avoid cluttering this figure, we do not show the subdivision of these horizontal layers into equally distributed "regions" according to the discretization of the azimuth with a number N θ ( i ) of azimuth levels depending on the elevation level.

[0085] The spherical grid according to the invention separately discretizes the elevation and azimuth by scalar quantization, with a uniform discretization of the azimuth over a number of levels N θ ( i depending on the coded value i elevation (positive or absolute).

[0086] However, the optimal search for the nearest neighbor in the grid involves selecting two candidates in elevation and therefore also two associated candidates in azimuth to select the best candidate; this amounts to joint coding even if it is in practice separate. The true decision regions of the grid (in terms of Voronoi regions on the surface of the sphere) are therefore not spherical rectangles. For indexing purposes (encoding the global index and decoding), the discretization of the 3D sphere's surface can nevertheless be viewed as a separate partitioning in elevation and azimuth to obtain spherical rectangles (excluding the polar caps).

[0087] The coordinates are coded separately ϕ And i , with a dictionary { s.ϕ̂ ( id ϕ ) , id ϕ = 0, ..., Nφ -1,s = +1 or -1} of scalar quantization with N ϕ levels for | ϕ| and with sign information s (indicating the Northern hemisphere for s = +1 or the Southern hemisphere for s = -1) and a set of dictionaries { θ̂ ( i,j ) , j = 0, ..., N θ ( i ) - 1} of uniform scalar quantization with N θ ( i ) levels for i depending on the index i of the coded elevation (positive or absolute).

[0088] The total number of points on the discretized sphere, according to the different determined numbers of levels, also called the total number of points in the 3D grid, is given, in a particular embodiment, by: N tot = N θ 0 + 2 ∑ i = 1 N ϕ − 1 N θ i

[0089] This number includes the points N θ (0) on the elevation level (the spherical layer) corresponding to the equator (C0, id ϕ = 0) and the points N θ (i) of each level of positive elevation with index i = 1, ... , N ϕ- 1, also called elevation layer Ci, these being symmetrical between the Northern and Southern hemispheres therefore counted twice.

[0090] The spherical grid is therefore defined as the following spherical vector quantization dictionary (with a radius assumed to be equal to 1 by convention): s . ϕ ^ i , θ ^ i j s = − 1 , 1 si i > 1 , 1 si i = 0 ; i = 0 , … , N ϕ − 1 ; j = 0 , … , N θ i − 1

[0091] Note that the value of s for i = 0 is arbitrary, since φ̂ ( i = 0) = 0.

[0092] In the preferred embodiment, a 3D grid is defined for a given bit budget, for example 16 bits, thus giving a total number of points on the sphere, i.e. N total = 2 16< . In variants, other values ​​of N total (therefore, a bit budget) will be possible.

[0093] The elevation is coded by scalar quantization on N ϕ reconstruction levels. In the preferred embodiment, we fix N ϕ= 122 as the number of positive levels, as in the MASA format grid described previously. This allows, in particular, for an even number of levels in the Northern Hemisphere ( N ϕ including the North Pole and the equator). If we also take into account the Southern Hemisphere, the elevation is therefore coded on 2 N ϕ - 1 levels (counting only once the equator). The inclusion of the poles allows a complete representation of the sphere; the impact is minimal because only 2 points of the grid are associated with the poles (when the sign is applied).

[0094] For elevation coding by scalar quantization, a uniform quantization step is defined. d ϕ (excluding poles) and we take: ϕ ^ i = iδ ϕ pour i = 0 , … , N ϕ − 2 et ϕ ^ i = 90 pour i = N ϕ − 1 for example d ϕ = 0.7388 degrees as in the MASA format grid described previously. The quantization step is uniform over the interval [ -φ̂ ( N ϕ - 2) φ̂ ( N ϕ - 2)] or [ - ( N ϕ - 2) δϕ, ( N ϕ - 2) d ϕ ] , if the sign is taken into account.

[0095] The azimuth i is coded by scalar quantization on N θ ( i ) levels. Preferably, a uniform scalar quantization is used with a uniform scalar quantization dictionary, taking into account the cyclic nature of the interval [-180,180] degrees: θ ^ i j = 360 j / N θ i − 180 i paire 360 j + 0.5 / N θ i − 180 i impaire

[0096] Azimuth dictionaries have a shift, also called an offset, fixed at 0 for even i values ​​and π N θ i for odd i values, to "offset" the "horizontal slice" (spherical layer) of the sphere (delimited by the elevation decision thresholds) associated with each elevation of index i so that the coded azimuths are as little aligned as possible from one successive layer to the next.

[0097] In some variations, a uniform scalar quantization over the interval [0,90] degrees (including the values ​​0 and 90 as reconstruction levels) can be used for elevation coding: ϕ ^ i = i N ϕ − 1 90 , i = 0 , … , N ϕ − 1

[0098] This amounts to changing the quantification step. d ϕ to have d ϕ = 90 / ( N ϕ - 1), i.e. d ϕ ≈ 0.7438 when N ϕ = 122, in this case the poles are naturally included as codewords. The quantization step is uniform over the interval [ -φ̂ ( N ϕ - 1), ϕ̂ ( N ϕ - 1)], or [-90,90] degrees, if the sign is taken into account.

[0099] In other versions, the number of levels can be changed. N ϕ or take other definitions from the dictionary of scalar quantization { ϕ ( i ), i = 0,..., N ϕ - 1} for the elevation (positive or absolute). However, it is assumed that φ̂ ( i = 0) = 0° and φ̂ ( i = N ϕ - 1) = 90°.

[0100] In other variants, the offset applied to the azimuth as a function of the elevation layer may be different, the important aspect being that the number of levels in azimuth is defined according to the invention.

[0101] According to the invention, the number of points per level ( N θ ( i )) is determined as a function of two successive cumulative cardinality values ​​( cumN ( i ) , cumN ( i - 1)), the cumulative cardinality value ( cumN ( i )) for a coded elevation index (i) being representative of a number of points proportional to a total number of points and according to the area of ​​a spherical zone comprising at least one zone delimited by the upper horizontal plane ( ϕ = i + 1 2 δ ϕ ) of the given positive elevation level (i) and a lower horizontal plane (for example ϕ = d ϕ / 2). In the preferred embodiment, this spherical zone also includes the symmetrical part in the Southern Hemisphere comprising a zone delimited by the upper horizontal plane ( ϕ = − i + 1 2 δ ϕ ) of the given elevation level (i) and a lower horizontal plane ( ϕ = -δ ϕ / 2). The notation cumN ( i ) is repeated here but it should not be confused with the one used previously in the description of the state of the art.

[0102] There figure 5b illustrates these spherical areas for which the surface area of ​​the 3D sphere is taken into account in a first and a second embodiment.

[0103] In one particular embodiment, the number of levels N θ ( i ) in azimuth is determined by predefined values ​​for N θ (0) and N θ ( N ϕ - 1) which correspond to the equator and one of the poles, respectively.

[0104] These predetermined numbers of points ( N θ (0) and N θ ( N ϕ - 1) ) are taken into account in determining the cumulative cardinality values ​​and in defining the total number N tot ′ of points, used for this determination.

[0105] In this embodiment, the total number of points ( N tot ′ ) is obtained by subtracting from a target number of points ( N total = 2 16< ) the predetermined number of points corresponding to the equator and each of the north and south poles of the sphere according to the following expression: N tot ′ = N tot − N θ 0 − 2 N θ N ϕ − 1 , N total being the number of target points on the sphere for a given bit budget, N θ (0), the predetermined number of points for the elevation level corresponding to the equator and 2 N θ ( N ϕ - 1) the predetermined number of points for the north and south poles of the sphere.

[0106] In the main embodiment, N θ (0) is an even value, N θ ( N ϕ - 1) = 1 therefore when N total is even, N tot ′ is also even.

[0107] In an example illustrated at figure 5b , the area of ​​a spherical zone delimited by the upper horizontal plane ( ϕ = i + 1 2 δ ϕ ) of the given positive elevation level (i) and this same plane of the sphere symmetrical with respect to the equator ( ϕ = − i + 1 2 δ ϕ ) is illustrated by the hatched area A i . From this area, the area corresponding to the elevation level of the equator, represented in A 0 , is subtracted in order to determine the cumulative cardinality value ( cumN ( i )) of the given positive elevation level (i).

[0108] To do this, an estimate of a number of points based on the ratio ( A i - A 0 ) / ( A Nϕ-2 - A 0 ) is performed. This number of points is proportional to the total number of points N tot ′ expressed above, according to the following ratio: A i − A 0 A N ϕ − 2 − A 0 N tot ′

[0109] By design, this report gives exactly N total ' when i = N ϕ - 2, which ensures that the total number of points is fully used.

[0110] Since this ratio is generally a fractional number, it will have to be rounded to obtain the cumulative cardinality, and since the number of points is determined in the main embodiment for both the Northern and Southern hemispheres (therefore in duplicate), the rounding will in this case be to an even integer (the nearest, lower or higher).

[0111] Recall that the surface area of ​​an element around the point ( i , ϕ ) on the sphere S 2 is given by dA = r 2< cos ϕ dθdϕ Or ϕ Here is the elevation (if colatitude were used, we would have a term in sin ϕ ). The partial surface defined by a spherical zone delimited by two horizontal planes induced by an elevation interval [ ϕ min , ϕmax] , where -90° ≤ ϕ min < ϕmax ≤ 90°, with the azimuth on [-180°, 180°], is given by: A ϕ min ϕ max = r 2 ∫ − 180 ° 180 ° dθ ∫ ϕ min ϕ max cos ϕ dϕ = 2 πr 2 sinϕ max − sinϕ min

[0112] In particular, we find the known result that the surface of the sphere S 2 of radius r is A whole = A(-90°,90°) = 4πr 2< (for ϕ min = -90° and ϕmax = 90°).

[0113] For a number of points N total 'in the spherical grid (or spherical vector quantization dictionary) remaining to be distributed in a spherical area (subset of the surface of the 3D sphere) delimited by the horizontal planes ϕ = − N ϕ − 2 + 1 2 δ ϕ outside the central zone corresponding to the equator ( ϕ = ± δ ϕ 2 Each "decision region" associated with a grid point is approximated here by a "spherical rectangle" for indexing purposes (which corresponds to a separate coding decision from the spherical coordinates). Ideally, each of these regions should have an area of ​​4πr 2< / No way if the grid is uniform.

[0114] For a uniform discretization of the elevation over the interval [ - ( N ϕ - 2) δϕ, ( N ϕ - 2) d ϕ As in the main embodiment, one can therefore estimate the number of points on the grid contained within a spherical area (or "spherical slice") delimited by two horizontal planes associated with the decision thresholds. ϕ min = δ ϕ 2 And ϕ max = i + 1 2 δ ϕ of the positive part (Northern hemisphere) of the sphere.

[0115] According to the ratio expressed above, expressing a simple rule of three A i − A 0 A N ϕ − 2 − A 0 N tot ′ we can express A i − A 0 2 = A ϕ min ϕ max with ϕ min = δ ϕ 2 And ϕ max = i + 1 2 δ ϕ , and with A δ ϕ 2 , i + 1 2 δ ϕ = 2 πr 2 sin i + 1 2 δ ϕ − sin δ ϕ 2

[0116] In an example implementation, we fix N θ 0 = 430

[0117] In some variations, the value of N θ (0) may be different but even.

[0118] Furthermore, by convention we fix N θ ( N ϕ - 1) =1 because a single point is sufficient to represent a pole.

[0119] The number of points per elevation level i is expressed as: N θ i = cumN i − cumN i − 1 2 Or cumN 0 = 0 cumN i = 2 Arr i N tot ′ 2 sin i + 1 2 δ ϕ − sin δ ϕ 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2 pour i = 1 , … , N ϕ − 2 with N tot ′ = N tot − N θ 0 − 2 N θ N ϕ − 1 And Arr i () is a rounding to the nearest integer (nearest, lower, or higher) depending on i. In the preferred embodiment, we take Arr 1 () as rounding up to the nearest integer, and Arr i () as the rounding to the nearest integer for i = 2, ..., N ϕ - 2.

[0120] Note that the function 2Arr i ( x / 2) actually corresponds to rounding to an even integer (closer, lower or higher), which allows the result to be divided by two to assign the whole half to each of the hemispheres.

[0121] It should be noted that by definition cumN N ϕ − 2 = 2 Arr i N tot ′ 2 = N tot ′ .

[0122] Furthermore, it should be noted that the notation cumN ( i) is used here, although it differs from the one previously used in the description of a MASA format proposed in the state of the art. Indeed, here cumN ( i ) corresponds to the cumulative cardinality of the spherical grid up to and including elevation layer i (including layers in the Northern and Southern hemispheres) but excluding the equator. The definition of cumN ( i ) For i = 1, ... ,N ϕ - 2 in the description of the invention therefore corresponds to the equivalent of cumN ( 2i ) - N θ (0) in the definition of state of the art.

[0123] In variants where other levels of quantification are defined for elevation, the definition of cumN ( i ) as a function of sin ( i + 1 2 δ ϕ ) , i = 0, ..., N ϕ - 2, will be adapted by replacing i + 1 2 δ ϕ by other corresponding decision thresholds in the form ϕ ^ i + ϕ ^ i + 1 2 Thus, more generally, we can write: cumN i = 2 Arr i N tot ′ 2 sin ϕ ^ i + ϕ ^ i + 1 2 − sin ϕ ^ 0 + ϕ ^ 1 2 sin ϕ ^ N ϕ − 2 + ϕ ^ N ϕ − 1 2 − sin ϕ ^ 0 + ϕ ^ 1 2 For i = 1, ... , N ϕ - 2.

[0124] An example of the values ​​obtained for the preferred embodiment is given below: N θ i = 0 , … , 121 = 430 423 422 422 422 422 421 421 420 420 419 418 417 417 416 414 414 412 412 409 409 407 406 404 402 401 399 397 395 394 391 389 387 385 383 380 378 375 373 370 368 365 362 359 356 354 350 347 344 341 338 334 331 328 324 321 317 313 310 306 302 299 294 291 287 282 279 274 270 266 262 258 253 249 244 240 235 231 226 222 217 212 208 202 198 194 188 183 179 173 169 613 159 153 148 144 138 133 127 123 117 112 107 102 96 91 85 81 75 69 64 59 53 48 43 37 32 26 21 15 10 1

[0125] It can easily be verified that: N θ 0 + 2 ∑ i = 1 N ϕ − 1 N θ i = 65536 which corresponds well to Total.

[0126] Thus, cardinality N θ ( i ) according to the invention makes it possible to guarantee that there are no unused indices for a total number N total given. This property follows from the fact that the cumulative cardinality cumN ( i ) is defined such that cumN N ϕ − 2 = N tot ′ .

[0127] In another example of implementation, no predetermined numbers are fixed for the elevation levels corresponding to the equator.

[0128] In this case, the cumulative cardinality value is a rounded value of the following ratio: A i A N ϕ − 2 N tot − 2 for example N total = 2 16< .

[0129] We then obtain (outside the poles) cumN i = 2 Arr i N tot − 2 2 sin i + 1 2 δ ϕ sin N ϕ − 3 2 δ ϕ for i = 0, ..., N ϕ - 2. In this case, we have :N θ (0) = cumN (0) and N θ i = cumN i − cumN i − 1 2 for i = 1, ... , N ϕ - 2. We also fix N θ ( N ϕ - 1) = 1.

[0130] An example of values ​​obtained for this variant of the definition is given below. cumN ( i ) in the case where N ϕ = 122 and d ϕ is defined according to the preferred embodiment: N θ i = 0 , … , 121 = 422 423 422 423 422 421 422 420 421 419 419 419 417 417 416 414 414 412 412 410 408 407 406 404 403 400 400 397 395 393 392 389 387 385 383 380 378 375 373 370 368 365 362 359 356 354 350 348 344 341 337 335 331 328 324 321 317 313 310 306 302 299 294 291 287 282 279 274 271 266 261 258 253 249 244 240 236 230 227 221 217 213 207 203 198 193 188 184 178 174 168 164 158 154 148 144 138 133 127 123 117 112 107 102 96 91 85 81 75 69 64 59 53 48 43 37 32 26 21 15 10 1

[0131] It can easily be verified that here again: N θ 0 + 2 ∑ i = 1 N ϕ − 1 N θ i = 65536 which corresponds well to Total.

[0132] In variants where other levels of quantification are defined for elevation, the definition of cumN ( i ) as a function of sin ( i + 1 2 δ ϕ ) ,i = 0, ..., N ϕ - 2, will be adapted by replacing i + 1 2 δ ϕ by other corresponding decision thresholds in the form ϕ ^ i + ϕ ^ i + 1 2 .

[0133] In other variants, no predetermined numbers are set for the elevation levels corresponding to the equator ( N θ (0)) nor at the North and South Poles ( N θ ( N ϕ - 1)). This variant applies particularly to the case where the scalar quantization of ϕ is uniform over the interval [0,90] degrees (including the values ​​0 and 90 as reconstruction levels) with: ϕ ^ i = i N ϕ − 1 90 , i = 0 , … , N ϕ − 1 with d ϕ = 90 / N ϕ -1.

[0134] In this case, we can define: cumN i = 2 Arr i N tot 2 sin i + 1 2 δ ϕ for i = 0, ... , N ϕ - 2, and cumN N ϕ − 1 = N tot we have: N θ 0 = cumN 0 And N θ i = cumN i − cumN i − 1 2 for i = 1, ..., N ϕ - 1.

[0135] An example of values ​​obtained for this variant of the definition is given below. cumN ( i ) in the case where N ϕ = 122 and d ϕis defined according to the preferred embodiment: N θ i = 0 , … , 121 = 426 425 425 425 425 425 424 423 423 423 422 421 420 419 419 417 416 415 414 413 411 410 408 406 405 403 402 399 398 395 394 391 390 387 384 382 380 377 375 372 369 367 364 360 358 355 352 349 345 342 339 336 332 328 325 322 318 314 310 307 302 299 295 291 287 283 278 275 270 266 261 257 253 248 244 239 235 230 225 221 215 212 206 201 197 191 187 182 177 171 167 161 157 151 146 141 136 130 125 120 114 110 104 98 93 88 82 77 72 66 60 55 50 44 38 34 27 22 17 11 5 1

[0136] It can easily be verified that here again: N θ 0 + 2 ∑ i = 1 N ϕ − 1 N θ i = 65536 which corresponds well to Total.

[0137] In a second example illustrated at figure 5b , the area of ​​a spherical zone delimited by the upper horizontal plane ( ϕ = i + 1 2 δ ϕ ) of the given positive elevation level (i) and that of the equator is illustrated by the area denoted A'i. From this area, half of the area corresponding to the elevation level of the equator, represented in A0, is subtracted in order to determine the cumulative cardinality value ( cumN ( i )) of the given positive elevation level (i).

[0138] To do this, an estimate of a number of points based on the ratio ( A'i - A 0 / 2) / ( A' N ϕ-2 - A 0 / 2) is performed. This number of points is proportional to the total number of points N tot ′ expressed above, according to the following ratio: A ′ i − A 0 / 2 A ′ N ϕ − 2 − A 0 / 2 N tot ′ , with A' N ϕ-2 the area of ​​the spherical zone delimited by the upper horizontal plane ( ϕ = ( N ϕ − 1 2 δ ϕ ) of the positive elevation level N ϕ - 2 and that of the equator.

[0139] The result is equivalent to what was described previously because A ′ i − A 0 / 2 A ′ N ϕ − 2 − A 0 / 2 = 2 A ′ i − A 0 2 A ′ N ϕ − 2 − A 0 = A i − A 0 A N ϕ − 2 − A 0

[0140] In one embodiment, the cumulative cardinality value can be expressed by considering only the number of points in the positive part of the sphere. In this case, an estimate of the number of points as a function of the ratio ( A' i - A 0 / 2) / (A' Nϕ-2 - A 0 / 2) is performed. This number of points is proportional to the total number of points N tot ′ expressed above, according to the following ratio: A ′ i − A 0 / 2 A ′ N ϕ − 2 − A 0 / 2 N tot ′ 2

[0141] The expression for the cumulative cardinality value is given, for example, by: cumN ′ i = Arr i N tot ′ 2 sin i + 1 2 δ ϕ − sin δ ϕ 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2 For i = 1, ... , N ϕ - 2 with N tot ′ = N tot − N θ 0 − 2 N θ N ϕ − 1

[0142] And Arr i () is a rounding to the nearest integer depending on i. In the preferred embodiment, we take Arr 1 () as rounding up to the nearest integer, and Arr i () as the rounding to the nearest integer for i = 2, ..., N ϕ - 2.

[0143] And we express the number of points per elevation level i by: N θ i = cumN ′ i − cumN ′ i − 1

[0144] There figure 6a describes a method for encoding spherical coordinates ( ϕ , i ) of an entry point (E201) on a 3D sphere. This coding method can be implemented, in one embodiment, by block 312 of the figure 3 for the MASA data format or in block 140 of the figure 1 for a DirAC encoder.

[0145] The quantification of spherical coordinates and the search is carried out as follows: First, we code the elevation ϕin E202-1. For optimal search results, both values ​​should be retained. sgn ϕ . ϕ ( i 1), sgn ϕ . ϕ̂ ( i 2) where sgn ϕ is a sign of ϕ And φ̂ ( I ) is the coded absolute elevation, where k = 1 or 2. This coding can be performed by searching for the 2 nearest neighbors in the elevation dictionary of N ϕ determined levels (E203-1). Preferably, the exhaustive search in the scalar elevation dictionary will be replaced by a direct determination of the elevation index. i 1 by rounding: i 1 = min ϕ δ ϕ , N ϕ − 1 i 1 ← arg min i = N ϕ − 1 , N ϕ − 2 ϕ − ϕ ^ i , si i 1 ≥ N ϕ − 1 The last step is necessary here because in the preferred embodiment we take: φ̂ ( i ) = iδϕ for i = 0, ..., N ϕ - 2 and φ̂ ( i ) = 90 for i = N ϕ - 1 Thus the quantization step is uniform only on the interval [-( N ϕ - 2) δϕ, ( N ϕ - 2) d ϕ ] . For index code words i = N ϕ - 1, N ϕ - 2. An explicit nearest neighbor search is required.

[0146] In variants where the step size is uniform over [-90, 90] degrees, we can take: i 1 = ϕ δ ϕ

[0147] With d ϕ = 90 / ( N ϕ - 1), given that: ϕ ^ i = i N ϕ − 1 90 , i = 0 , … , N ϕ − 1

[0148] Determining the index i 2 can be performed as described previously in the state-of-the-art MASA method, namely: ∘ i 2 = 1 if i 1 = 0 ∘ i 2 = N ϕ - 2 if i 1 = Nϕ - 1 ∘ i 2 = arg min i = i 1 − 1 , i 1 + 1 ϕ − ϕ ^ i if 0 < i 1 < N ϕ -1

[0149] It is noted in all cases that the values i 1 and i The two can be interchanged without changing the coding result.

[0150] The azimuth is coded iby uniform scalar quantization in E204-2 with an adaptive number of levels N θ (i) Or i = i 1 or i 2, determined according to the embodiment examples described in the MASA method of the state of the art (E203-2), to obtain in E204-2, the two values θ̂ ( i 1, j 1), θ̂(i 2 ,j 2 ) respectively. More precisely, we can take: j k = mod N θ i k θ − Δ + 180 / N θ i k 360 / N θ i k

[0151] Therefore, at step E205, we obtain two candidates ( sgn ϕ . ϕ̂ ( I ) , θ̂ ( I, I )). At step E206, the closest candidate is selected ( ϕ, θ depending on k for example as in the state-of-the-art MASA method. d i k s k j k = − sin ϕ sin ϕ ^ i k + cos ϕ cos ϕ ^ i k cos θ − θ ^ i k j k The pair ( sgn ϕ . φ̂ ( I ) , θ̂ ( I, jk )) the closest is selected as the quantified value to be indexed. This selected point is noted ( sgn ϕ . ϕ ( id 4), θ̂ ( id ϕ , id θ )). In some variations, the distance criterion can be evaluated by converting the points into Cartesian coordinates to assess the Euclidean distance that is to be minimized or the dot product that is to be maximized.

[0152] The quantification indices selected in E206 correspond to the selected point: sgn ϕ . ϕ ^ id ϕ , θ ^ id ϕ id θ .

[0153] The E207 indexing step consists of, based on the information sgn ϕ , id ϕ And id θ , a determine a unique index 0 ≤ index < N total to be passed on.

[0154] At this stage, we determine an overall quantification index based on the separate indices from the separate quantification of the spherical coordinates for the selected nearest point.

[0155] This step is now described with reference to the figure 6b showing an example of implementation.

[0156] Based on the information sgn ϕ , id ϕ And id θ ,In E600, we test in E601 and E603, the value of id ϕ . if id ϕ = 0 in E601, then index = id θ (E602) or if id ϕ = N ϕ - 1 in E603, then index = N total - 2 + ( sgn ϕ < 0) (E604)

[0157] In other cases, index = offset + id θ (E605) With offset = N θ 0 + 2 Arr id ϕ N tot ′ 2 sin id ϕ + 1 2 δ ϕ − sin δ ϕ 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2 − 2 N θ id ϕ si sgn ϕ > 0 N θ id ϕ si sgn ϕ < 0

[0158] It is worth recalling here that the term N θ 0 + 2 Arr id ϕ N tot ′ 2 sin id ϕ + 1 2 δ ϕ − sin δ ϕ 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2 corresponds to the cumulative cardinality of the spherical grid up to and including elevation layer i (with layers in the Northern and Southern hemispheres, and with the equator).

[0159] The index of a point (code word) in elevation layer i is of the form: index = offset + id θ Therefore, the value of offsetcorresponds to the cumulative cardinality up to the first point (code mode) – excluded – of elevation layer i. Furthermore, the positive elevation layer i (Northern Hemisphere) conventionally precedes the negative elevation layer i, but both layers have the same number of points. N θ ( i ) .

[0160] Thus, the value offset is given by the cumulative cardinality including these positive and negative layers of index i, but subtracting either 2 N θ ( i ) when it comes to the positive layer, that is N θ ( i ) when it comes to the negative layer.

[0161] For encoding a point (or codeword) in this same layer, we can equivalently define: offset = N θ 0 + 2 Arr id ϕ N tot ′ 2 sin id ϕ − 1 2 δ ϕ − sin δ ϕ 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2 − 0 si sgn ϕ > 0 N θ id ϕ si sgn ϕ < 0

[0162] Here the term N θ 0 + 2 Arr id ϕ N tot ′ 2 sin id ϕ − 1 2 δ ϕ − sin δ ϕ 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2 gives the cumulative cardinality up to the elevation layer of index i-1. This value corresponds directly to the value offsetfor the positive elevation layer of index i, and it must be corrected by N θ ( id ϕ ) for the negative layer with index i.

[0163] According to the invention, this analytical method for determining the value offset gives the same result as the following sum, but with reduced complexity because the determination is more direct when N ϕ is high (for example N ϕ =122): offset = N θ 0 + 2 ∑ i = 1 id ϕ − 1 N θ i − 2 N θ id ϕ si sgn ϕ > 0 N θ id ϕ si sgn ϕ < 0 And offset = N θ 0 + 2 ∑ i = 1 id ϕ − 2 N θ i + 0 si sgn ϕ > 0 N θ id ϕ si sgn ϕ < 0

[0164] Thus the overall index index is obtained in E606, by separate coding of separate quantization indices sgn ϕ , id ϕ And id θ of the best candidate and by using the corresponding cumulative cardinality values.

[0165] It should be noted that the determination of the value offset is described here for the interval N θ (0) ≤ index < N total- 2. In variations, the interval in question can be divided into subintervals of indices, and the value of can be determined. offset either analytically or by direct summation, with N θ ( i ) defined according to the invention, as a function of the sub-interval considered.

[0166] In one embodiment, pre-storage (tabulation) of cumulative cardinality values ​​may be used. offset depending on id ϕ And sgn ϕ which gives (analytically or by direct summation) the result of the cumulative sum of cardinalities of successive spherical layers (or "sets of horizontal slices"). This sum can be interpreted as the cardinality of a spherical zone (the number of points in the partial grid going from the index elevation 0 to the index elevation i (alternating between the Northern and Southern hemispheres).

[0167] In some variations, it may be possible not to store the values offsetdepending on id ϕ And sgn ϕ but calculate them "online" (as they go) from the definition of offset like the cumulative sum of N θ ( i ) with the correction based on id ϕ And sgn ϕ However, this adds a calculation complexity that can be significant if the grid includes many elevation levels ( N ϕ pupil).

[0168] In some variations, it will be possible to replace offset using the definition of cumN' and taking into account that the cardinality in this case corresponds to a hemisphere.

[0169] The corresponding decoding process is now described with reference to the figure 7a . This decoding process can be implemented, in one embodiment, by block 321 of the figure 3 , for the MASA data format or in block 250 of the figure 2 for a DirAC decoder.

[0170] As with encoding, the spherical quantization dictionary is defined on a 3D sphere by decoding the elevation and azimuth. This spherical quantization dictionary is illustrated and described with reference to the figures 5a and 5b above.

[0171] Similar to encoding, elevation decoding uses scalar quantization, giving at least one decoded elevation index (i) over a number of levels ( N ϕ ) elevation, azimuth decoding uses scalar quantization, based on a number of points per level ( N θ ( i )) depending on the index of the decoded elevation (i), the number of points per level ( N θ ( i )) is determined as a function of two successive cumulative cardinality values ​​( cumN ( i ) , cumN ( i - 1)), the cumulative cardinality value ( cumN ( i)) for a decoded elevation index (i) being representative of a number of points proportional to a total number of points and according to the area of ​​a spherical zone comprising at least one zone delimited by the upper horizontal plane ( ϕ = i + 1 2 δ ϕ ) of the positive elevation level of the decoded elevation index (i) and a lower horizontal plane of the sphere.

[0172] We first assume an indexing described with reference to the figure 6b .

[0173] Given the overall index index at stage E210 of the figure 7a , we perform a separate decoding of the two spherical coordinates in steps E211-1 and E211-2.

[0174] In step E212-1, a number of scalar quantization levels are determined, as in coding step E203-1. N ϕ In the main embodiment, this step simply amounts to fixing N ϕ = 122.

[0175] Decoding elevation information sgn ϕ , id ϕis found in E213-1. This step is detailed further below with reference to the figure 7b Preferably, this decoding uses an analytical estimation of the index id ϕ . In some variations, the decoding of sgn ϕ , id ϕ can be done by searching the calculated or stored cardinality table or by other methods giving an identical result.

[0176] The elevation decoded in E214-1 is reconstructed as sgn ϕ . ϕ̂ ( id ϕ ) Or sgn ϕ . ϕ ^ i = sgn ϕ . iδ ϕ pour i = 0 , … , N ϕ − 2 et sgn ϕ . ϕ ^ i = sgn ϕ .90 pour i = N ϕ − 1

[0177] In variants, other dictionaries of uniform or non-uniform quantification { φ̂ ( i )} will be possible in the same way as coding.

[0178] Decoding the azimuth index id θ is found in E213-2. This step is detailed further below with reference to the figure 7b The index id θ The azimuth is obtained in the general case by subtraction according to the following formula: id θ = index - offset based on the overall index index and decoded elevation information sgn ϕ And id ϕ , However, there are special cases ( id ϕ = 0 and id ϕ = N ϕ - 1) are defined in the figure 7b .

[0179] The offset value is determined as defined in the coding, and the azimuth is reconstructed. θ̂ ( id ϕ , id θ ) in E214-2 as: θ ^ i j = 360 j / N θ i − 180 360 j + 0.5 / N θ i − 180 i paire i impaire

[0180] In particular, we have θ̂ ( id ϕ = N ϕ - 1, id θ = 0) = -180 with N θ ( id ϕ = N ϕ - 1) = 1.

[0181] This gives us the spherical coordinates ( φ̂ ( i ) , θ̂ ( i,j )) of the point decoded in E215.

[0182] Steps E213-1 and E213-2 are detailed jointly with the figure 7b .

[0183] Starting from the overall index 0 ≤ index < N total to decode (E700), the sign information is fixed by default sgn ϕ= 1 (E701). If the index checks index < N θ (0), which indicates that it is a point on the equator (E702), we decode directly: id θ = index and we fix id ϕ = 0 (E703).

[0184] Otherwise, if the index verifies index ≥ N total - 2, which indicates that it is a point on the North or South Pole (E704), we decode directly: id ϕ = N ϕ - 1, id θ = 0 (E705). The sign sgn ϕ is corrected from its default value to -1 (E707) if index = N total - 1 in E706 because the indices are ordered by elevation layers, alternating between the Northern and Southern Hemispheres, therefore index = N total - 2 corresponds to the North Pole ( sgn ϕ = 1) and index = N total - 1 corresponds to the South Pole ( sgn ϕ = -1).

[0185] Otherwise, in other cases ( N θ (0) ≤ index < N total - 2), in a preferred embodiment, the estimation of the index id θis, for example, carried out by reversing the analytical calculation done in step E605 of the figure 6b .

[0186] We can estimate id ϕ as : id ϕ = 1 δ ϕ arcsin x

[0187] Where x = x = index − N θ 0 − 2 − 1 2 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2 N tot ′ + sin δ ϕ 2 and [. ] is the rounding to the nearest integer

[0188] In some variations, an approximation of the arcsine function is used. Thus, we take (in E708): id ϕ = 1 δ ϕ π 2 − 1 − x . P x Or is a polynomial of degree 4.

[0189] In variants, other approximations of the arcsine function can be used; in particular, other polynomials P(x) of different degrees can be used. It should be noted that the estimation of id ϕ used above has the remarkable property of being accurate to within an overestimation of id ϕ of a unit - generally, it gives the correct value of id ϕ , If that's not the case, id ϕ is underestimated by one unit.

[0190] In alternative versions, other estimates of id ϕ (exact or within a certain value) may be used.

[0191] In the preferred embodiment, the decoding (E709) is then performed as follows, starting from the estimation of id ϕ by inverting the arcsine function or an approximation of it. We determine an initial value of: offset init = N θ 0 + 2 Arr id ϕ N tot ′ 2 sin id ϕ + 1 2 δ ϕ − sin δ ϕ 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2

[0192] In alternative methods, we can calculate equivalently (with the same result): offset init = N θ 0 + 2 ∑ i = 1 id ϕ N θ i

[0193] Starting from this initial value offset init we can then determine the values ​​of id ϕ , sgn ϕ And offset as follows: If index ≥ offset init , id ϕ ← id ϕ + 1 , offset ← offset init , Otherwise : offset ← offset init − N θ id ϕ If index ≥ offset: sgn ϕ ← -1 Otherwise: offset ← offset - N θ ( id ϕ )

[0194] Or a ← b indicates that the existing value of ais replaced by the result of expression b.

[0195] The correction stage id ϕ ← id ϕ + 1 when index ≥ of fset init is specific to the example of performing the estimation of id ϕ by inverting the arcsine function. If this step is performed, the value of offset init corresponds to the cumulative cardinality of the grid down to the lower layer id ϕ - 1.

[0196] Otherwise, if this correction step of id ϕ is not performed, the value of offset init corresponds to the cumulative cardinality of the grid up to the elevation layer id ϕ . the justification of the steps for correcting the value offset init in the form offset - N θ ( id ϕ ) is detailed in relation to figures 8a and 8b described later.

[0197] In some variations, we can define as the initial value offset init the cumulative cardinality for the lower elevation layer of index i-1 and correct the value of offset init equivalently. The initial value is given by: offset init = N θ 0 + 2 Arr id ϕ N tot ′ 2 sin id ϕ + 1 2 δ ϕ − sin δ ϕ 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2

[0198] Starting from this initial value offset init we can then determine the values ​​of id ϕ ,sgn ϕ And offset as follows: If index ≥ offset init + 2 N θ ( id ϕ ) , id ϕ ← id ϕ + 1 , offset ← offset init , Otherwise : If index ≥ offset init + N θ ( id ϕ ): sgn ϕ ← -1 and offset ← offset init + N θ ( id ϕ ) Otherwise : offset ← offset init ,

[0199] Or a ← b indicates that the existing value of a is replaced by the result of expression b. In this case, the steps for correcting the value offset init are in the form offset init + N θ ( id ϕ ) .

[0200] In variations, the principle of correcting the value of id ϕ and offset init depending on the estimation method id ϕ , to determine the values ​​of id ϕ ,sgn ϕ And offset.

[0201] In variants where cumulative cardinality is defined differently, with values N θ ( i ) corresponding, we will adapt the analytical definition of the initial estimation of offset.

[0202] In variations, other integer and exact estimates (giving the same results) of id ϕ and other direct or indirect methods of determining id ϕ , sgn ϕ and offset can be used as long as they do not change the decoding result. Indeed, the values ​​of id ϕ And offset being whole numbers, the sign sgn ϕ since it can be viewed as a signed integer, alternative methods can be implemented as long as they give identical values ​​for id ϕ , sgn ϕ And offset.

[0203] An example of a decoding variant of id ϕ , sgn ϕ And offset This method, which is of little interest but has the merit of illustrating an example of an alternative approach, would consist of simply exhaustively traversing all possible values. id ϕ , sgn ϕ And id ϕ and to calculate the corresponding index as in the encoder and to select the combination that leads exactly to index = offset + id θ .

[0204] The index decoding is deterministic in the sense that for a value index given, the values id ϕ , sgn ϕ And id ϕ are unique and whole.

[0205] In all cases, the decoding of id ϕ , sgn ϕ And offset is based on the values ​​of N θ ( i) according to the invention with the possibility of analytically determining a cumulative cardinality.

[0206] Finally, the decoding of id θ (E710) simply amounts to subtracting the decoded cumulative cardinality value ( offset ) to the overall index received ( index ): id θ = index − offset

[0207] In some variations, it will be possible to replace offset using the definition of cumN' and taking into account that the cardinality in this case corresponds to a hemisphere.

[0208] We illustrated on the figures 8a et 8b , the coding of the index, according to the embodiment of the invention, and the decoding of the index

[0209] There figure 8a corresponds to the case of encoding or decoding a point in the Northern Hemisphere (excluding the equator and pole) of the grid according to the invention, while the figure 8b This corresponds to the case of encoding or decoding a point in the Southern Hemisphere (excluding the equator and poles). In this example, we have N ϕ = 122, id ϕ = 120, and sgn ϕ = 1, id θ = 3, index = 65517 at the figure 8a And sgn ϕ = -1, id θ = 5, index = 65529 to the figure 8b In this example, N θ ( id ϕ ) = 10 and the initial value of offset init East : offset init = N θ 0 + 2 Arr id ϕ N tot ′ 2 sin id ϕ + 1 2 δ ϕ − sin δ ϕ 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2 which gives, in this example: offset init = 65534.

[0210] To the figure 8a , the decoding of index = 65517 results in the following correction: If index ≥ offset init , id ϕ ← id ϕ + 1, offset ← offset init Otherwise : offset ← offset init − N θ id ϕ If index ≥ offset : sgn ϕ ← -1 Otherwise: offset ← offset - N θ ( id ϕ )

[0211] This leads to correcting the value of offset by offset ← offset init - 2 N θ ( id ϕ and gives offset = 65514.

[0212] To the figure 8b , the decoding of index = 65529 results in the following correction: If index ≥ offset init , id ϕ ← id ϕ + 1, offset ← offset init , Otherwise : offset ← offset init − N θ id ϕ If index ≥ offset : sgn ϕ ← -1 Otherwise: offset ← offset - N θ ( id ϕ )

[0213] This leads to correcting the value of offset by offset ← offset init - N θ ( id ϕ and gives offset = 65524.

[0214] In some variations, the value of offset init may correspond to the cumulative cardinality down to the lower elevation layer, or it may be obtained by a direct sum from the values N θ ( i ) according to the invention.

[0215] In variants where cumulative cardinality is defined differently, with values N θ ( i ) corresponding, we will adapt the analytical definition of the initial estimation of offset init .

[0216] We illustrated on the figure 9 , a DCOD encoding device, as defined in the invention, and a DDEC decoding device, these devices being dual to each other (in the sense of "reversible") and connected to each other by a RES communication network or an internal BUS in a terminal (to communicate between a MASA analysis module and an IVAS type codec or other processing).

[0217] The DCOD coding device includes a processing circuit typically comprising: a MEM1 memory for storing instruction data from a computer program as defined in the invention (these instructions being distributed between the DCOD encoder and the DDEC decoder); an INT1 interface for receiving a multichannel signal of origin B,for example a signal distributed over different channels or a parametric version in compression with source direction parameters in the sense of the invention; a PROC1 processor to receive this signal and process it by executing the computer program instructions stored in the MEM1 memory, for the purpose of encoding it; and a COM 1 communication interface to transmit the encoded signals via the network or an internal bus of a terminal.

[0218] The DDEC decoding device includes its own processing circuit, typically including: a MEM2 memory to store instruction data for a computer program (these instructions can be distributed between the DCOD encoder and the DDEC decoder as previously described); a COM2 interface to receive coded signals from the RES network or an internal BUS for decoding by compression; a PROC2 processor to process these signals by executing the computer program instructions stored in the MEM2 memory, for decoding purposes; and an INT2 output interface to deliver source direction parameters. Of course, this figure 9 illustrates an example of a structural implementation of a codec (coder or decoder) as defined in the invention. figures 5 à 8 The comments above describe in detail rather functional implementations of these codecs.

Claims

1. Method for coding a spatial direction of a sound source, this direction being defined by spherical coordinates comprising an elevation coordinate and an azimuth coordinate, wherein a spherical quantization dictionary is defined on a 3D sphere by an elevation coding and an azimuth coding, and wherein: - the elevation coding uses a scalar quantization, giving at least one coded elevation index (i) on a number of elevation levels (Nϕ); - the azimuth coding uses a scalar quantization, according to a number of points per level (Nθ(i)) depending on the coded elevation index (i); - the number of points per level (Nθ(i)) is determined on the basis of two successive cumulative cardinality values (cumN(i),cumN(i - 1)); - the cumulative cardinality value (cumN(i)) for a coded elevation index (i)being representative of a number of points proportional to a total number of points and according to the area of a spherical zone comprising at least one zone delimited by the upper horizontal plane ( ϕ = i + 1 2 δ ϕ ) of the positive elevation level of the coded elevation index (i) and a lower horizontal plane of the sphere ; and characterised in that a number of points for the azimuth coding is provided for the elevation level corresponding to the equator and for the elevation level corresponding to each of the poles of the 3D sphere, the total number of points is obtained by subtracting from a target number of points corresponding to a given bit budget, this given number of points corresponding to the equator and each of the poles of the sphere.

2. Method according to Claim 1, wherein the total number of points ( N tot ′ ) is obtained by subtracting, from a target number of points (Ntot = 216), the predetermined number of points corresponding to the equator and each of the North and South poles of the sphere according to the following expression: N tot ′ = N tot − N θ 0 − 2 N θ N ϕ − 1 , Ntot being the target number of points of the sphere for a given bit budget; Nθ(0), being the predetermined number of points for the elevation level corresponding to the equator; and 2Nθ(Nϕ - 1), being the predetermined number of points for the North and South poles of the sphere.

3. Method according to Claim 2, wherein the cumulative cardinality value (cumN(i)) for a coded elevation index (i) is representative of a number of points proportional to the total number of points according to the area (Ai) of a spherical zone delimited by the upper horizontal plane ( ϕ = i + 1 2 δ ϕ ) of the positive elevation level of the coded elevation index (i) and this same plane of the sphere symmetrical with respect to the equator ( ϕ = − i + 1 2 δ ϕ ) minus the area (A0) corresponding to the elevation level of the equator, according to the following ratio: A i − A 0 A N ϕ − 2 − A 0 N tot ′ Nϕ - 2 being the number of elevation quantization levels without the equator and the North and South poles of the sphere and ANϕ-2, the area of the spherical zone corresponding to an elevation index Nϕ - 2.

4. Method according to Claim 3, wherein the expression for the cumulative cardinality value is as follows: cumN i = 2 Arr i N tot ′ 2 sin i + 1 2 δ ϕ − sin δ ϕ 2 sin N ϕ − 1 2 δ ϕ − sin δ ϕ 2 with i = 1, ... , Nϕ - 2, Nϕ - 2 being the number of elevation quantization levels without the equator and the North and South poles of the sphere, Arri() being a rounding to the nearest integer depending on i, 2 Arr i x 2 corresponding to a rounding to an even integer and δϕ being a given quantization step of the elevation.

5. Method according to any of the preceding claims, wherein the elevation coding gives a coded elevation index (i) on a number of elevation levels (Nϕ) and sign information.

6. Method according to any of the preceding claims, wherein a global quantization index to be transmitted (index) is determined based on an azimuth index coded by scalar quantization on a determined number of points per level (Nϕ(i)) and a cumulative cardinality value obtained based on at least the coded elevation index.

7. Coding device comprising a processing circuit for implementing the steps of the coding method according to any of Claims 1 to 6.

8. Processor-readable storage medium storing a computer program comprising instructions for executing the coding method according to any of Claims 1 to 6.