Image decoding method, image decoding system, and computer readable medium for image decoding

JP2025041868AActive Publication Date: 2025-03-26DOLBY INTERNATIONAL AB
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024228623
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2011-06-24
Filing Date
2024-12-25
Publication Date
2025-03-26
Estimated Expiration
2032-06-20

Smart Images

  • Figure 2025041868000001_ABST
    Figure 2025041868000001_ABST
Patent Text Reader

Abstract

To divide an image into blocks, group the blocks into some subsets, and associate signs the blocks in the subsets with digital information to encode the blocks by using an entropy encoding module.SOLUTION: An encoding method includes initializing a state variable of an encoding module for a first block of an image, and generating a data sub-stream representing at least one of subsets of encoded blocks. When the current block is the first block in the subset, a symbol generation probability of the first block is determined on the basis of the symbol generation probability of encoded and decoded predetermined blocks in at least one another subset. When the current block is the last encoded block in the subset, while the block in the subset is encoded, entire digital information related to a symbol is written in the sub-stream representing the subset, and the initialized sub-step is implemented.SELECTED DRAWING: Figure 2B
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates generally to the field of image processing, and more precisely to the encoding and decoding of digital images and sequences of digital images.

[0002] Thus, the present invention is particularly applicable to video coding implemented in current video coding devices (MPEG, H.264, etc.) or upcoming video coding devices (ITU-T / VCEG (H.265) or ISO / MPEG (HVC)). [Background technology]

[0003] Current video coding devices (MPEG, H264, etc.) use a block-based representation of video sequences. Images are divided into macroblocks, each of which is itself divided into blocks, and each block or macroblock is coded by intra- or inter-picture prediction. Certain images are thus coded by spatial prediction (intra-prediction), while other images are coded by temporal prediction (inter-prediction) with respect to one or more coded-decoded reference images, using motion compensation known to those skilled in the art. Moreover, for each block, a residual block may be coded, which corresponds to the original block minus the prediction. The coefficients of this block are quantized, possibly after a transformation, and then coded by an entropy coding device.

[0004] Intra- and inter-prediction require that a particular previously coded and decoded block is available for use by the decoder or encoder to predict the current block. A schematic illustration of such predictive coding is shown in FIG. 1, where an image I N is divided into blocks, and the current block of this image, MB iis being predictively coded with respect to a predetermined number of three previously coded and decoded blocks MBr1, MBr2 and MBr3, such as those indicated by the hatched arrows. i The block immediately to the left of MBr1 and the current block MB i It consists of block MBr2 immediately above and block MBr3 immediately to the right and above.

[0005] Here, we are particularly interested in entropy coders, which code information in the order of arrival. Typically, a "raster scan" type scan is performed by the reference PRS, starting from the top left block of the image and traversing the blocks row by row, as shown in Figure 1. For each block, the various items of information necessary to represent the block (type of block, mode of prediction, residual coefficients, etc.) are sent sequentially to the entropy coder.

[0006] An efficient arithmetic coding device of moderate complexity called "CABAC" ("Context Adaptive Binary Arithmetic Coder") is known, which was introduced in the AVC compression standard (already known under the names ISO-MPEG4 part 10 and ITU-T H.264).

[0007] The entropy coder implements a number of different concepts: - Arithmetic coding. Coders such as the one originally described by J. Rissanen and GG Langdon Jr., "Universal modeling and coding", iEEE Trans. inform. Theory, vol. IT-27, pp. 12-23, January 1981, use the probability of occurrence of a symbol to code it. - Context Adaptation. Here, this involves adapting the probability of occurrence of the symbols to be coded. On the one hand, learning is performed on the fly. On the other hand, depending on the state of the previously coded information, a certain context is used for coding. To each context corresponds a specific probability of occurrence of the symbols. For example, a context corresponds to the type of coded symbols (representation of residual coefficients, signaling of coding modes, etc.) according to a given configuration or state of a neighborhood (e.g. the number of "intra" modes selected in the neighborhood, etc.). - Binarization: A shaping of the sequence of bits of the symbol to be coded is carried out. These different bits are then sent successively to a binary entropy coding device.

[0008] This entropy coding device thus implements, for each context used, a system for learning on the fly probabilities with respect to the symbols previously coded for the context under consideration, this learning being based on the coding order of these symbols. In general, the image is traversed in a "raster scan" type order as explained above.

[0009] Current Block MB i During the encoding of a given symbol b, which can be equal to 0 or 1, the probability of occurrence of this symbol p i The learning is updated as follows:

[0010]

number

[0011] Here, α is a predetermined value, for example 0.95, and p i-1 is the symbol occurrence probability calculated upon the last occurrence of this symbol.

[0012] A schematic illustration of such entropy coding is shown in FIG. 1, where an image I N Current block MB iis subjected to entropy coding. i When the entropy coding of starts, the symbol occurrence probabilities used are those obtained after the coding of the previously coded and decoded block, which is the current block MB i Such learning based on dependencies between blocks is represented in Fig. 1 by thin arrows for specific blocks only for the sake of clarity.

[0013] The difficulty with this type of entropy coding lies in the fact that the probabilities used when coding a symbol located at the beginning of a row correspond primarily to those observed for the symbol located at the end of the previous row, with respect to the traversal of the "raster scan" of the block. Now, due to possible spatial variations in the symbol probabilities (for example, for a symbol related to an item of motion information, the motion located in the right part of the image may differ from that observed in the left part, and therefore also for the subsequent local probabilities), a lack of local matching of the probabilities may be observed, which may possibly result in efficiency losses during coding.

[0014] To limit this phenomenon, it has been proposed to change the order of block traversal in order to ensure better local consistency, but encoding and decoding remain sequential.

[0015] In that respect, this type of entropy coder has another drawback: the encoding and decoding of symbols is in fact dependent on the states of probabilities learned for them, and the decoding of symbols can only be done in the same order as used during encoding, so that decoding can generally only be done sequentially, thus preventing the decoding of several symbols in parallel (for example taking advantage of multi-core architectures).

[0016] Thomas Wiegand, Gary J. Sullivan, Gisle Bjontegaard, and Ajay Luthra, "Overview of the H.264 / AVC Video Coding Standard," IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, pp. 560-576, July 2003, further point out that the CABAC entropy coder has the special feature of allocating a non-integer number of bits for each symbol of the current alphabet to be coded, which is advantageous for symbol occurrence probabilities greater than 0.5. Specifically, the CABAC coder waits until it has read some symbols, and then allocates to this set of symbols a certain number of bits that the coder writes in the compressed stream transmitted to the decoder. This procedure thus makes it possible to "reciprocate" the bits of some symbols, and to code symbols with a fractional number of bits, which more closely reflects the information actually carried by the symbols. The other bits associated with the symbol read are not transmitted in the compressed stream, but remain in a waiting state, waiting to be assigned to one or more new symbols read by the CABAC encoder, making it possible again to make these other bits mutual. At a given moment, the entropy encoder starts to "empty" these non-transmitted bits in a known manner. In other words, if the encoder extracts the bits not yet transmitted at said given moment and writes them in the compressed stream destined for the decoder. Such emptying is performed, for example, at the moment when the last symbol to be encoded is read, so as to ensure that the compressed stream actually contains all the bits, which allows the decoder to decode all the symbols of the alphabet. In a more general way, the moment at which the emptying is performed is determined as a function of the performance and capabilities specific to a given encoder / decoder.

[0017] The document, dated April 15, 2011 and available at the Internet address http: / / research.microsoft.com / en-us / um / people / jinl / paper 2002 / msri jpeg.htm, describes a method for encoding still images in accordance with the JPEG 2000 compression standard. According to this method, still image data is subjected to a discrete wavelet transform followed by quantization, whereby quantized wavelet coefficients can be obtained, each of which is associated with a quantization index. The obtained quantization indexes are coded with the aid of an entropy coding device. The quantized coefficients are previously grouped into rectangular blocks, called code blocks, generally of size 64x64 or 32x32. Each code block is then coded independently by entropy coding. The entropy coding device therefore does not use the symbol occurrence probabilities calculated during the coding of the previous code block when starting the coding of the current coding block. The entropy coding device is therefore in an initialized state at the start of each coding of a code block. Such a method presents the advantage of decoding data of a code block without the need to decode adjacent code blocks. Thus, for example, a portion of the client software may request a portion of the server software to provide compressed code blocks that are only required by the client to decode an identified sub-part of the image. Such a method also offers the advantage of allowing parallel encoding and / or decoding of code blocks. Thus, the smaller the size of the code blocks, the higher the level of parallelism. For example, if the level of parallelism is fixed at 2, then two code blocks will be encoded and / or decoded in parallel. In theory, the value of the level of parallelism is equal to the number of code blocks to be encoded of the image. However, the compression performance achieved with this method is not optimal with respect to the fact that such encoding does not exploit the probabilities arising from the direct environment of the current code block. Summary of the Invention [Problem to be solved by the invention]

[0018] One of the objects of the present invention is to remedy the above-mentioned drawbacks of the prior art. [Means for solving the problem]

[0019] For this purpose, the subject of the present invention is - dividing the image into a number of blocks each capable of containing a symbol belonging to a predetermined set of symbols; - grouping the blocks into subsets of a predetermined number of blocks; - encoding each of the subset of blocks by associating digital information with a symbol of each block of the subset under consideration, using an entropy coding module, said encoding step including, for the first block of the image, a substep of initializing state variables of the entropy coding module; - generating at least one data sub-stream representing at least one of the encoded subsets of the blocks.

[0020] The method according to the invention comprises the steps of: - if the current block is the first block to be coded of the subset under consideration, a determination of symbol occurrence probabilities for the current block is initiated, said probabilities being determined for given coded and decoded blocks of at least one other subset, - if the current block is the last coded block of the subset under consideration, It is noteworthy to undertake the steps of: writing the entirety of the digital information associated with the symbols during the encoding of the blocks of the subset under consideration into a substream representing the subset under consideration; and performing the substep of initializing.

[0021] The above writing step immediately performs the nulling of not yet transmitted digital information (bits) as described in the above description once the last block of the subset of blocks has been encoded.

[0022] The combination of the aforementioned steps of writing and reinitializing the entropy coding module makes it possible to generate a coded data stream containing various substreams of data, each corresponding to at least one coded subset of blocks, said streams adapted to be decoded in parallel according to different levels of parallelism, independently of the type of coding, whether sequential or parallel, applied to the subset of blocks. Thus, a great degree of freedom is obtained in the choice of the level of parallelism for the decoding as a function of the expected coding / decoding performance. Since the decoding device is always in an initialized state when starting the decoding of a subset of blocks, the level of parallelism for the decoding can be variable and even different from the level of parallelism for the coding.

[0023] According to a first example, the state variables of the entropy coding module are the two boundaries of an interval representing the probability of occurrence of a certain symbol from a given set of symbols.

[0024] According to a second example, the state variables of the entropy coding module are known to those skilled in the art and are described in http: / / en.wikipedia.org / wiki / Lempel%E2%80%93Ziv%E2%80%93Weich_2011_06_21. It is a sequence of symbols contained in the transformation table of the LZW (Lempel-Ziv-Weich) entropy coder described at the Internet address

[0025] The main advantage of using the symbol occurrence probabilities determined for the first block of the other subset during the entropy coding of the first current block of the considered subset of blocks is to save buffer memory in the coding device by storing only updates of said symbol occurrence probabilities in the coding device without taking into account the symbol occurrence probabilities learned by the other successive blocks of said other subset.

[0026] The main advantage of using, during the entropy coding of the first current block of the subset of blocks considered, the symbol occurrence probabilities determined for blocks of said other subset than the first block, e.g. the second block, is that a better image compression performance results by obtaining a more accurate and therefore better learning of the symbol occurrence probabilities.

[0027] In certain embodiments, subsets of blocks are coded sequentially or in parallel.

[0028] The fact that subsets of blocks are coded sequentially has the advantage that the coding method according to the invention is compliant with the H.264 / MPEG-4 AVC standard.

[0029] The fact that subsets of blocks are coded in parallel has the advantage that it accelerates the processing time of the coding device and benefits from a multi-platform architecture for the coding of images.

[0030] In another particular embodiment, when at least two subsets of blocks are coded in parallel with at least one other subset of blocks, the at least two coded subsets of blocks are included in the same data sub-stream.

[0031] Such a measure allows savings in particular in the signaling of the data substreams: indeed, it is necessary to indicate the point in the compressed file where the substream begins, so that the decoding unit can decode it as soon as possible: when several subsets of blocks are contained in the same data substream, a single indicator is needed, thereby reducing the size of the compressed file.

[0032] In yet another particular embodiment, when encoded subsets of blocks are intended to be decoded in parallel in a predefined order, the data sub-streams delivered respectively after the encoding of each of the subsets of blocks are first ordered according to the predefined order before being transmitted for the purpose of their decoding.

[0033] Such an arrangement allows the coded data stream to be adapted for a particular type of decoding, without the need to code and then re-decode the image.

[0034] Correlatively, the present invention provides - means for dividing the image into a number of blocks each capable of containing a symbol belonging to a predetermined set of symbols; - means for grouping these blocks into subsets of a predetermined number of blocks; - coding means for coding each of the subsets of blocks, said coding means comprising an entropy coding module capable of associating digital information with a symbol of each block of the subset under consideration, and sub-means for initializing state variables of the entropy coding module with respect to the first block of the image; - means for generating at least one data sub-stream representing at least one of the encoded subsets of the blocks.

[0035] Such an encoding device: - means for determining, for a current block, a symbol occurrence probability, which, if the current block is the first block to be coded of the subset under consideration, determines the symbol occurrence probability for the first current block as determined for a given coded and decoded block of at least one other subset; - writing means which are activated to write the entirety of the digital information associated with the symbols during the encoding of the blocks of the subset under consideration into the substream representing the subset under consideration if the current block is the last encoded block of the subset under consideration, the initialization sub-means being furthermore activated to reinitialize the state variables of the entropy encoding module.

[0036] In a corresponding manner, the present invention provides - identifying in the stream a predetermined number of data substreams each corresponding to at least a subset of a block to be decoded, the block being capable of containing symbols belonging to a predetermined set of symbols; - decoding an identified subset of blocks in at least one of the identified substreams by reading, with an entropy decoding module, digital information associated with the symbols of each block of the subset corresponding to said at least one identified substream, the method comprising the substep of initializing state variables of the entropy decoding module for a first block to be decoded of the image.

[0037] Such a decoding method is - if the current block is the first block to be decoded of the subset under consideration, a determination of a symbol occurrence probability for the first block of the subset under consideration is undertaken, this probability having been determined for a given decoded block of at least one other subset; It is worth noting that the implementation of the initialization sub-step is undertaken if the current block is the last decoded block of the subset under consideration.

[0038] In certain embodiments, subsets of blocks are decoded sequentially or in parallel.

[0039] In another particular embodiment, one of the identified data substreams represents at least two subsets of blocks when the at least two subsets of blocks are decoded in parallel with at least one other subset of blocks.

[0040] In yet another particular embodiment, when encoded subsets of blocks are intended to be decoded in parallel in a predefined order, the data sub-streams corresponding respectively to the encoded subsets of blocks are pre-ordered in said predefined order of said streams to be decoded.

[0041] Correlatively, the present invention provides - means for identifying in the stream a predetermined number of data substreams each corresponding to at least a subset of a block to be decoded, the block being capable of containing symbols belonging to a predetermined set of symbols; - means for decoding a subset of identified blocks, the means comprising an entropy decoding module capable of reading, in at least one of the identified substreams, digital information associated with the symbols of each block of the subset corresponding to said at least one identified substream, and sub-means for initializing state variables of the entropy decoding module with respect to a first block to be decoded of an image.

[0042] Such a decoding device is notable in that it comprises means for determining a symbol occurrence probability for a current block, which, if the current block is the first block to be decoded of the subset under consideration, determines a symbol occurrence probability for the current first block as determined for a given decoded block of at least one other subset, and, if the current block is the last decoded block of the subset under consideration, an initialization sub-means is activated to reinitialize the state variables of the entropy decoding module.

[0043] The invention is also directed to a computer program comprising instructions for carrying out the steps of the encoding or decoding method described above when the computer program is executed on the computer.

[0044] Such programs may use any programming language and may be in the form of source code, object code, or an intermediate form between source and object code, such as a partially compiled form, or any other desired form.

[0045] A further subject of the invention is also directed to a computer-readable recording medium containing instructions of a computer program such as the one mentioned above.

[0046] The recording medium may be any entity or device capable of storing a program. For example, such a medium may comprise a storage means such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or a magnetic recording means, for example a diskette (floppy disk) or a hard disk.

[0047] Moreover, such a recording medium may be a transmissible medium, such as an electrical or optical signal, which may be conveyed via electrical or optical cable, wirelessly or by other means. The program according to the invention may in particular be downloaded from a network of the Internet type.

[0048] Alternatively, such a recording medium may be an integrated circuit in which the program is embedded, the circuit being adapted for performing, or for use in the performance of, the method.

[0049] The encoding device, the decoding method, the decoding device and the computer program described above exhibit at least the same advantages as those offered by the encoding method according to the invention.

[0050] Other characteristics and advantages will become apparent from reading the description of two preferred embodiments with reference to the drawings. [Brief description of the drawings]

[0051] [Figure 1] FIG. 1 illustrates prior art image encoding. [Figure 2A] FIG. 2 represents the main steps of the encoding method according to the invention; [Figure 2B] FIG. 2B is a detailed representation of the encoding performed in the encoding method of FIG. 2A. [Figure 3A] 1 represents a first embodiment of an encoding device according to the invention; [Figure 3B] FIG. 3B is a diagram illustrating a coding unit of the coding device of FIG. 3A. [Figure 3C] FIG. 2 represents a second embodiment of an encoding device according to the invention. [Figure 4A] FIG. 2 is a diagram illustrating image encoding / decoding according to a first preferred embodiment; [Figure 4B] FIG. 4 represents an image encoding / decoding according to a second preferred embodiment. [Figure 5A] FIG. 2 represents the main steps of the decoding method according to the invention; [Figure 5B] FIG. 5B is a diagram showing in detail the decoding performed in the decoding method of FIG. 5A. [Figure 6A] FIG. 2 illustrates an embodiment of a decoding device according to the invention. [Figure 6B]FIG. 6B is a diagram illustrating a decoding unit of the decoding device of FIG. 6A. [Figure 7A] FIG. 2 is a diagram illustrating image encoding / decoding implementing sequential encoding and parallel decoding. [Figure 7B] FIG. 1 illustrates image encoding / decoding using different levels of parallelism to implement parallel encoding / decoding. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0052] Detailed description of the first embodiment of the encoding part An embodiment of the present invention will now be described, in which the encoding method according to the invention is used to encode a sequence of images closely resembling a binary stream obtained by encoding according to the H.264 / MPEG-4 AVC standard. In this embodiment, the encoding method according to the invention is implemented in a software or hardware manner, for example by modifying an encoding device that is initially compliant with the H.264 / MPEG-4 AVC standard. The encoding method according to the present invention is represented in Fig. 2A in the form of an algorithm comprising steps C1 to C5.

[0053] According to this embodiment of the invention, the encoding method according to the invention is executed in an encoding device CO, two embodiments of which are represented respectively in FIG. 3A and FIG. 3C.

[0054] With reference to Fig. 2A, the first coding step C1 is a step of dividing the sequence of images IE to be coded into a number of blocks or macroblocks MB, as represented in Fig. 4A or 4B. Said macroblocks may contain one or more symbols, said symbols forming part of a predefined set of symbols. In the represented example, said blocks MB have a square shape and are all of the same size. As a function of the image size, which is not necessarily a multiple of the block size, the last block on the left and the last block on the bottom may not be square. In alternative embodiments, the blocks may for example be of rectangular size and / or may not be aligned with each other.

[0055] Moreover, each block or macroblock itself may be divided into sub-blocks which may themselves be further subdivided.

[0056] Such a division is for example performed by a division module PCO represented in FIG. 3A using a division algorithm known per se.

[0057] With reference to Fig. 2A, the second coding step C2 is a step of grouping said blocks into a predetermined number P of consecutive subsets of blocks SE1, SE2, ..., SEk, ..., SEP, intended to be coded successively or in parallel. In the example represented in Fig. 4A and 4B, P=6, but for the sake of clarity of the illustration, only four subsets SE1, SE2, SE3, SE4 are represented. These four subsets of blocks are represented by dashed lines, respectively, and each consist of the first four rows of blocks of the image IE.

[0058] Such grouping is performed by a calculation module GRCO, represented in FIG. 3A, using an algorithm known per se.

[0059] With reference to Figure 2A, a third encoding step C3 consists in encoding each of said subsets of blocks SE1 to SE6, the blocks of the subset under consideration being encoded according to a predefined order of the traversal PS, for example of the sequential type. In the example represented in Figures 4A and 4B, the blocks of the current subset SEk (1 < k < P) are encoded in order from left to right as indicated by the arrow PS.

[0060] According to a first variant, such encoding is sequential and is performed by a single encoding unit UC such as the one represented in Fig. 3 A. The encoding device CO comprises, in a manner known per se, a buffer memory MT adapted to contain symbol occurrence probabilities such as are progressively re-updated in parallel with the encoding of the current block.

[0061] As shown in more detail in FIG. 3B, the coding unit UC includes: A module denoted MCP for predictively coding a current block with respect to at least one previously coded and decoded block, a module, denoted MCE, for entropy coding the current block using at least one symbol occurrence probability calculated for the previously coded and decoded block.

[0062] The predictive coding module MCP is a software module capable of performing predictive coding of the current block by conventional prediction techniques, for example intra mode and / or inter mode.

[0063] On its part, the entropy coding module MCE is of the CABAC type, but modified according to the invention, as will be explained further in the description.

[0064] As a variant, the entropy coding module MCE may be a Huffman coding device known per se.

[0065] In the example depicted in Figures 4A and 4B, the unit UC encodes the blocks of the row SE1 from left to right. When the unit UC reaches the last block of the first row SE1, it proceeds to the first block of the second row SE2. When the unit UC reaches the last block of the second row SE2, it proceeds to the first block of the third row SE3. When the unit UC reaches the last block of the third row SE3, it proceeds to the first block of the fourth row SE4, and so on and so forth, until the last block of the image IE is encoded.

[0066] Other types of traversals than those just described above are of course possible. It is therefore possible to divide the image IE into several sub-images and to apply this type of division independently to each sub-image. The coding unit can process not only consecutive rows as described above, but also consecutive columns. Also, the rows or columns can be traversed in either direction.

[0067] According to a second variant, such a coding is of parallel type and is distinguished from the first variant of sequential coding simply by the fact that it is realized by a predetermined number R (R=2 in the example represented in FIG. 3C) of coding units UCk, where 1≦k≦R. Such a parallel coding is known to cause a substantial acceleration of the coding method.

[0068] Each of the coding units UCk is identical to the coding unit UC represented in Fig. 3B. In a corresponding manner, the coding units UCk comprise a predictive coding module MCPk and an entropy coding module MCEk.

[0069] Referring again to Figures 4A and 4B, the first unit UC1 encodes, for example, blocks of odd-numbered rows, while the second unit UC2 encodes, for example, blocks of even-numbered rows. More precisely, the first unit UC1 encodes the blocks of the first row SE1 from left to right. When the first unit UC1 reaches the last block of the first row SE1, it proceeds to the first block of the (2n+1)th row, i.e. the third row SE3, etc. In parallel with the processing by the first unit UC1, the second unit UC2 encodes the blocks of the second row SE2 from left to right. When the second unit UC2 reaches the last block of the second row SE2, it proceeds to the first block of the (2n)th row, which is here the fourth row SE4, etc. The two aforementioned traversals are repeated until the last block of the image IE is encoded.

[0070] With reference to Fig. 2A, a fourth encoding step C4 is a step of generating the processed blocks compressed by said encoding unit UC or by each of said encoding units UCk, as well as L sub-streams of bits F1, F2, ..., Fm, ..., FL (1 < m < L < P) representing decoded versions of the processed blocks of each subset SEk. The decoded processed blocks of the subset under consideration, denoted SED1, SED2, ..., SEDk, ..., SEDP, may be reused by each of the encoding units UC represented in Fig. 3A or UCk represented in Fig. 3C, according to a synchronization mechanism that will be further detailed in the description.

[0071] With reference to FIG. 3B, the step of generating the L sub-streams is performed by a stream generation software module MGSF or MGSFk adapted to generate a data stream, for example bits.

[0072] With reference to Fig. 2A, the fifth encoding step C5 consists in constructing an overall stream F on the basis of the aforementioned L substreams F1, F2, ..., Fm, ..., FL. According to one embodiment, the substreams F1, F2, ..., Fm, ..., FL are simply juxtaposed with an additional item of information intended to indicate to the decoding device the position of each substream Fm in the overall stream F. The additional item of information is then transmitted by a communication network (not represented) to a remote terminal. The remote terminal comprises a decoding device DO represented in Fig. 5A. According to another embodiment, which is particularly advantageous since it is not necessary to decode and re-encode the images, the coding device CO, before transmitting the stream F to the decoding device DO, orders the L substreams F1, F2, ..., Fm, ..., FL in advance in a predefined order corresponding to the order in which the decoding device DO will be able to decode the substreams.

[0073] Thus, as will be explained in more detail in the description, the decoding device according to the invention is able to separate the sub-streams F1, F2, ..., Fm, ..., FL within an overall stream F and to assign them to one or more decoding units constituting the decoding device. It will be noted that such a decomposition of the sub-streams of an overall stream is independent of the choice of using a single coding unit or several coding units working in parallel, and that with this approach it is possible to have a coding or decoding device alone with units working in parallel.

[0074] Such construction of the overall stream F is performed in a stream construction module CF such as the one depicted in Figures 3A and 3C.

[0075] Various specific sub-steps of the invention, such as those implemented in a coding unit UC or UCk during the aforementioned coding step C3, will now be described with reference to FIG. 2B.

[0076] In the course of a step C31, the coding unit UC or UCk selects as a current block the first block to be coded of the current row SEk, such as for example the first row SE1 represented in FIG. 4A or FIG. 4B.

[0077] During step C32, unit UC or UCk tests whether the current block is the first block (located at the top left) of the image IE divided into blocks at the previous step C1.

[0078] If it is the first block, in the course of a step C33, the entropy coding module MCE or MCEk starts with the initialization of its state variables. According to the illustrated example using the above mentioned arithmetic coding, this involves the initialization of an interval representing the probability of occurrence of the symbols contained in the given set of symbols. This interval is initialized in a manner known per se with two bounds, a lower bound L and an upper bound H. The value of the lower bound L is fixed to 0 and the value of the upper bound is fixed to 1, thereby corresponding to the probability of occurrence of the first symbol among all the symbols of the given set of symbols. The size R of this interval is therefore defined at this junction point with R=HL=1. The initialized interval is usually further divided into a number of predetermined sub-intervals, each of which represents the probability of occurrence of a symbol of the given set of symbols.

[0079] As a variant, if the entropy coding used is LZW coding, the conversion table for strings of symbols is initialized to contain every possible symbol exactly once.

[0080] If, after the aforementioned step C32, the current block is not the first block of the image IE, a determination of the availability of the required previously encoded and decoded blocks is undertaken, in the course of a step C40 which will be described later.

[0081] In the course of a step C34, the coding of the first current block MB1 of the first row SE1 represented in figure 4A or 4B is undertaken. Such a step C34 comprises several sub-steps C341 to C348 which are described below.

[0082] During a first sub-step C341 represented in FIG. 2B, predictive coding of the current block MB1 is undertaken by known techniques of intra-prediction and / or inter-prediction, in the course of which block MB1 is predicted with respect to at least one previously coded and decoded block.

[0083] Other modes of intra prediction, such as those proposed in the H.264 standard, are of course possible.

[0084] The current block MB1 may also be predictively coded in inter mode, in the process of predicting the current block with respect to blocks resulting from previously coded and decoded images. Other types of prediction are of course also conceivable. Among the possible predictions of the current block, the optimal prediction is selected according to a bit rate distortion criterion well known to those skilled in the art.

[0085] The aforementioned predictive coding step makes it possible to construct a predicted block MBp1 which is an approximation of the current block MB1. This information related to the predictive coding will subsequently be written into the stream F transmitted to the decoding device DO. Such information includes in particular the type of prediction (inter or intra prediction) and, if appropriate, the mode of intra prediction, the type of division of the block or macroblock if the macroblock is subdivided, the indexes of the reference images and the displacement vectors used in the inter prediction mode. This information is compressed by the coding device CO.

[0086] The subsequent course of substep C342 involves subtracting the predicted block MBp1 from the current block MB1 to generate a residual block MBr1.

[0087] In the course of a subsequent sub-step C343, a transformation of the residual block MBr1 is undertaken, by means of a conventional direct transformation operation, for example a discrete cosine transformation of the DCT type, in order to generate a transformed block MBt1.

[0088] In the course of a subsequent sub-step C344, quantization of the transformed block MBt1 is undertaken, for example by means of a conventional quantization operation, such as scalar quantization. A block of quantized coefficients MBq1 is then obtained.

[0089] In the course of a subsequent sub-step C345, entropy coding of the block of quantized coefficients MBq1 is undertaken. In the preferred embodiment, this involves CABAC entropy coding. Such a step may include: a) reading one or more symbols of a predetermined set of symbols associated with the current block; b) Associating digital information, such as bits, with the read symbol.

[0090] In the aforementioned variant in which LZW coding is used, a digital item of information corresponding to the code of the symbol in the current conversion table is associated with the symbol to be coded, and the updating of the conversion table is carried out by a procedure known per se.

[0091] In the course of a subsequent sub-step C346, a dequantization of the block MBq1 is undertaken according to a conventional dequantization operation, which is the inverse operation of the quantization performed in step C344. A block of dequantized coefficients MBDq1 is then obtained.

[0092] In the course of a subsequent sub-step C347, an inverse transformation of the block of inverse quantized coefficients MBDq1 is undertaken, which is the inverse operation of the direct transformation performed in the above step C343. A decoded residual block MBDr1 is then obtained.

[0093] In the course of a subsequent sub-step C348, construction of the decoded block MBD1 is undertaken by adding the decoded residual block MBDr1 to the predicted block MBp1. It should be noted that the decoded residual block MBDr1 is identical to the decoded block obtained at the completion of the method for decoding an image IE, as will be explained further in the description. In this way, the decoded block MBD1 is made available to the coding unit UCk or to any other coding unit forming part of the predetermined number R of coding units.

[0094] At the completion of the aforementioned encoding step C34, the entropy coding module MCE or MCEk such as the one represented in Fig. 3B contains all the probabilities, such as the probabilities progressively re-updated in parallel with the coding of the first block, corresponding to the different elements of the possible syntax and the different associated coding contexts.

[0095] After the aforementioned encoding step C34, during a step C35 a test is performed to determine whether the current block is the jth block of this same row, j being a predetermined value, at least 1, known to the encoding device CO.

[0096] If it is the jth block, then in the course of step C36 represented in FIG. 2B, the set of probabilities calculated for the jth block is stored in a buffer memory MT of a coding device CO such as that represented in FIG. 3A or 3B and in FIGS. 4A and 4B, the size of said memory being adapted to store the calculated number of probabilities.

[0097] During step C37 represented in Fig. 2B, the coding unit UC or UCk tests whether the current block of the row SEk just coded is the last block of the image IE. Such a step is also performed if during step C35 the current block is not the j-th block of the row SE1.

[0098] If the current block is the last block of an image IE, the coding method ends, during step C38.

[0099] If the current block is not the last block of the image IE, then in the course of a step C39, the next block MB to be coded is selected according to the order of traversal represented by the arrow PS of FIG. 4A or 4B. i The selection is undertaken.

[0100] In the course of step C40 illustrated in FIG. 2B, the current block MB iA determination is then undertaken of the availability of previously encoded and decoded blocks required to encode .

[0101] If this is the first row SE1, then such a step is performed to determine the current block MB i The objective of the present invention is to verify the availability of at least one block located to the top left of the current block to be coded. However, the blocks are coded one after the other over the row SEk under consideration, taking into account the order of the traversal PS selected in the embodiment represented in Fig. 4A or 4B. Thus, a coded and decoded block to the left is always available (with the exception of the first block of the row). In the example represented in Fig. 4A or 4B, this is the block located immediately to the left of the current block to be coded.

[0102] If this is a row SEk different from the first row, the decision step further consists in verifying whether a predetermined number N' of blocks located in the previous row SEk-1, for example two blocks respectively located above and to the right of the current block, are available for encoding the current block, i.e. whether they have already been encoded and decoded by the encoding unit UC or UCk-1.

[0103] As this test step tends to slow down the encoding method, in an alternative approach according to the invention, the clock CLK represented in Fig. 3C is adapted to synchronize the progress of the encoding of the blocks, in case the encoding of the rows is of parallel type, so as to guarantee, without the need to verify, the availability of the two blocks respectively located above and to the right of the current block. Thus, the encoding unit UCk always starts to encode the first block with a shift of a predefined number N' (for example N'=2) of encoded and decoded blocks of the previous row SEk-1 used for encoding the current block. From the software point of view, such an implementation of the clock can significantly accelerate the time of processing the blocks of the image IE in the encoding device CO.

[0104] During step C41 represented in FIG. 2B, a test is performed to determine whether the current block is the first block of the row SEk under consideration.

[0105] If it is the first block, then in the course of a step C42, a reading is undertaken of only those symbol occurrence probabilities calculated during the coding of the jth block of the previous row SEk-1 in the buffer memory MT.

[0106] According to a first variant represented in Fig. 4A, the jth block is the first block of the previous row SEk-1 (j=1). Such reading consists in replacing the probabilities of the CABAC coder by the probabilities in the buffer memory MT. This reading step is indicated in Fig. 4A by thin-lined arrows, with this replacement being carried out for the first blocks of each of the second row SE2, the third row SE3 and the fourth row SE4.

[0107] According to a second variant of the aforementioned step C43 shown in Fig. 4B, the jth block is the second block of the previous row SEk-1 (j=2). Such a reading consists in replacing the probabilities of the CABAC coder by the probabilities in the buffer memory MT. This reading step is illustrated in Fig. 4B by thin dashed arrows, with this replacement being carried out for the first block of each of the second row SE2, the third row SE3 and the fourth row SE4.

[0108] After step C42, the current block is encoded and decoded by repeating steps C34 to C38 described above.

[0109] If, after the aforementioned step C41, the current block is not the first block of the row SEk under consideration, advantageously no reading of the probabilities arising from previously coded and decoded blocks located in the same row SEk, i.e. in the illustrated example, the coded and decoded blocks located immediately to the left of the current block, is undertaken. Indeed, considering a sequential traversal PS for reading blocks located in the same row as represented in Figure 4A or 4B, the symbol occurrence probabilities present in the CABAC coding device at the very moment of starting the coding of the current block are precisely those that exist after the decoding / coding of the previous block of this same row.

[0110] Thus, in the course of step C43 represented in FIG. 2B, learning of symbol occurrence probabilities for the entropy coding of the current block is undertaken, these symbol occurrence probabilities corresponding only to those calculated for the previous block of the same row, as represented by the double solid arrow in FIG. 4A or FIG. 4B.

[0111] After step C43, the current block is encoded and decoded by repeating steps C34 to C38 described above.

[0112] Then, during step C44, a test is performed to determine whether the current block is the last block of the row SEk under consideration.

[0113] If it is not the last block, proceed to step C44 to determine the next block MB to be coded. i Step C39 of selecting is performed again.

[0114] If the current block is the last block of the row SEk under consideration, in the course of a step C45, the coding device CO of Fig. 3A or 3C performs a nulling as described above. For this purpose, the coding unit UCk transmits the totality of the bits associated with the symbols read during the coding of each block of said row SEk under consideration to the corresponding substream generation module MGSFk in such a way that the module MGSFK writes the totality of said bits in the data substream Fm containing the sequence of binary numbers representing the coded block of said row SEk under consideration. Such nulling is symbolized in Fig. 4A and 4B by a triangle at the end of each row SEk.

[0115] In the course of a step C46 represented in Figure 2B, the coding unit UC or UCk performs a step identical to the above-mentioned step C33, namely a step of reinitializing the intervals representative of the probability of occurrence of the symbols contained in a given set of symbols, such a reinitialization being depicted in Figures 4A and 4B by a black dot at the beginning of each row SEk.

[0116] The advantage of performing steps C45 and C46 at this level of coding is that the coding device CO is in an initialized state during the coding of the next block processed by the coding unit UC or by the coding unit UCk, so that a decoding unit working in parallel, as will be explained further in the description, is able to decode the compressed stream F directly from this point on (since an initialized state is sufficient). Detailed Description of the Decoding Part Embodiment

[0117] Next, an embodiment of a decoding method according to the invention is described, which is implemented in a software or hardware manner by modifying a decoding device that is initially compliant with the H.264 / MIPEG-4 AVC standard.

[0118] The decoding method according to the invention is represented in the form of an algorithm comprising steps D1 to D4 represented in FIG. 5A.

[0119] According to an embodiment of the invention, the decoding method according to the invention is implemented in a decoding device DO represented in FIG. 6A.

[0120] With reference to Fig. 5A, the first decoding step D1 is the identification in said stream F of L sub-streams F1, F2, ..., Fm, ..., FL, each of which contains P subsets SE1, SE2, ..., SEk, ..., SEP of previously coded blocks or macroblocks MB, as represented in Fig. 4A or 4B. For this purpose, each sub-stream Fm of the stream F is associated with an index intended to enable the decoding device DO to determine the position of each sub-stream Fm in the stream F. As a variant, at the completion of the aforementioned coding step C3, the coding device CO avoids the insertion of sub-stream indexes in the stream F, by ordering the sub-streams F1, F2, ..., Fm, ..., FL of the stream F in the order expected by the decoding device DO. Such a procedure therefore allows a reduction in costs in terms of the bit rate of the data stream F.

[0121] In the example shown in Figure 4A or 4B, the blocks MB have a square shape and are all the same size. Depending on the image size, which is not necessarily a multiple of the block size, the last block on the left and the last block on the bottom may not be square. In alternative embodiments, the blocks may be, for example, rectangular in size and / or may not be aligned with each other.

[0122] Moreover, each block or macroblock itself may be divided into sub-blocks which may themselves be further subdivided.

[0123] Such identification is performed in a stream extraction module EXDO such as the one represented in FIG. 6A.

[0124] In the example depicted in Figures 4A and 4B, the predetermined number P is six, but for clarity of the illustration, only four subsets SE1, SE2, SE3, SE4 are depicted with dashed lines.

[0125] With reference to Fig. 5A, a second decoding step D2 consists in decoding each of said subsets of blocks SE1, SE2, SE3, SE4, the blocks of the subset under consideration being decoded, for example, according to a predefined order of the traversal PS. In the example shown in Fig. 4A or 4B, the blocks of the current subset SEk (1 < k < P) are decoded in order from left to right as indicated by the arrow PS. Upon completion of step D2, a decoded subset of blocks SED1, SED2, SED3, ..., SEDk, ..., SEDP is obtained.

[0126] Such decoding may be sequential, so that it can be performed utilizing a single decoding unit.

[0127] However, in order to be able to benefit from a multi-platform decoding architecture, the decoding of a subset of blocks is of parallel type and is performed in R decoding units UDk (1≦k≦R), for example R=4 as represented in Fig. 6A. Such a measure therefore allows a substantial acceleration of the decoding method. The decoding device DO comprises, in a manner known per se, a buffer memory MT adapted to contain symbol occurrence probabilities such as are progressively re-updated in parallel with the decoding of the current block.

[0128] As shown in more detail in FIG. 6B, each of the decoding units UDk is a module denoted MDEk for entropy decoding of said current block by learning at least one symbol occurrence probability calculated for at least one previously decoded block; a module denoted MDPk for predictively coding a current block with respect to said previously decoded blocks.

[0129] The predictive decoding module MDPk is capable of performing predictive decoding of the current block by conventional prediction techniques, for example in intra mode and / or inter mode.

[0130] The entropy decoding module MDEk on its part is of the CABAC type, but modified according to the invention, as will be explained further in the description.

[0131] As a variant, the entropy decoding module MDEk may be a Huffman decoding device known per se.

[0132] In the example shown in FIG. 4A or FIG. 4B, the first unit UD1 decodes the blocks of the first row SE1 from left to right. When the first unit UD1 reaches the last block of the first row SE1, it proceeds to the first block of the (n+1)th row, here the 5th row, etc. The second unit UD2 decodes the blocks of the second row SE2 from left to right. When the second unit UC2 reaches the last block of the second row SE2, it proceeds to the first block of the (n+2)th row, here the 6th row, etc. This traversal is repeated up to the unit UD4, which decodes the blocks of the fourth row SE4 from left to right. When the fourth unit UD4 reaches the last block of the first row, it proceeds to the first block of the (n+4)th row, here the 8th row, etc., and so on and so forth, until the last block of the last identified sub-stream is decoded.

[0133] Other types of traversals than those just described above are of course possible: for example, each decoding unit can process nested rows as well as nested columns as described above, and rows or columns can be traversed in either direction.

[0134] With reference to Fig. 5A, a third decoding step D3 is the reconstruction of the decoded image ID on the basis of each decoded subset SED1, SED2, ..., SEDk, ..., SEDP obtained in the decoding step D2. More precisely, the decoded blocks of each decoded subset SED1, SED2, ..., SEDk, ..., SEDP are transmitted to an image reconstruction unit URI such as the one represented in Fig. 6A. In the course of this step D3, the unit URI writes the decoded blocks in the decoded image so that they are available.

[0135] In the course of a fourth decoding step D4, represented in FIG. 5A, the fully decoded image ID is delivered by means of the unit URI, represented in FIG. 6A.

[0136] Various specific sub-steps of the invention, such as those implemented in the decoding units UDk during the aforementioned step D2 of parallel decoding, will now be described with reference to FIG. 5B.

[0137] In the course of a step D21, the decoding unit UDk selects as the current block the first block to be decoded of the current row SEk represented in FIG. 4A or 4B.

[0138] In the course of a step D22, the decoding unit UDk tests whether the current block is the first block of the decoded image, which in this example is the first block of the sub-stream F1.

[0139] If it is the first block of the decoded image, then, in the course of a step D23, the entropy decoding module MDE or MDEk starts to initialize its state variables. According to the example shown, this involves the initialization of intervals representative of the probability of occurrence of the symbols contained in a given set of symbols.

[0140] As a variant, if the entropy decoding used is an LZW decoding, the conversion table of the string of symbols is initialized to contain every possible symbol exactly once.Step D23 is identical to the encoding step C33 described above and will not be described subsequently.

[0141] If, after the aforementioned step D22, the current block is not the first block of the decoded image ID, then a determination of the availability of the required previously decoded block is undertaken, in the course of a step D30 which will be described later.

[0142] In the course of a step D24, decoding of the first current block MB1 of the first row SE1 represented in Figure 4A or 4B is undertaken. Such a step D24 comprises several sub-steps D241 to D246 which are described below.

[0143] During a first sub-step D241, an entropy decoding of the syntax elements associated with the current block is undertaken. Such a step mainly consists of: a) reading each bit associated with said first row SE1 contained in a sub-stream; b) reconstructing the symbol based on each bit read.

[0144] In the aforementioned variant in which LZW decoding is used, a digital item of information corresponding to the code of a symbol in the current conversion table is read and, by a procedure known per se, the symbol is reconstructed on the basis of the read code and an update of the conversion table is carried out.

[0145] More precisely, the syntax elements related to the current block are decoded by a CABAC entropy decoding module MDE1 such as the one represented in Fig. 6B, which decodes each bit sub-stream F1 of the compressed file to generate the syntax elements, while re-updating the probability of occurrence of a symbol just at the moment of decoding it in such a way that the probability of occurrence of this symbol is identical to the probability of occurrence obtained during the encoding of the same symbol during the aforementioned entropy encoding step C345.

[0146] In the course of a subsequent sub-step D242, a predictive decoding of the current block MB1 is undertaken by known techniques of intra- and / or inter-prediction, in the course of which the block MB1 is predicted with respect to at least one previously decoded block.

[0147] Other modes of intra prediction, such as those proposed in the H.264 standard, are of course possible.

[0148] During this step, predictive decoding is performed using the syntax elements decoded in the previous step, including in particular the type of prediction (inter- or intra-prediction) and, if appropriate, the mode of intra-prediction, the type of block or macroblock partitioning if the macroblock is subdivided, the index of the reference image and the displacement vector used in the inter-prediction mode.

[0149] The predictive decoding step described above makes it possible to construct a predicted block MBp1.

[0150] In the course of a subsequent sub-step D243, the construction of a quantized residual block MBq1 is undertaken using the previously decoded syntax elements.

[0151] In the course of the subsequent sub-step D244, inverse quantization of the quantized residual block MBq1 is undertaken by a conventional inverse quantization operation, which is the inverse operation of the previous quantization performed in step C344, generating a decoded inverse quantized block MBDt1.

[0152] In the course of a subsequent sub-step D245, an inverse transformation of the dequantized block MBDt1 is undertaken, which is the inverse operation of the direct transformation performed in the above step C343. A decoded residual block MBDr1 is then obtained.

[0153] In the course of a subsequent substep D246, construction of the decoded block MBD1 is undertaken by adding the decoded residual block MBDr1 to the predicted block MBp1, such that the decoded block MBD1 is available for use by the decoding unit UD1 or any other decoding unit forming part of the predetermined number N of other decoding units.

[0154] At the completion of the aforementioned decoding step D246, the entropy decoding module MDE1 such as that represented in Fig. 6B contains all the probabilities, such as the probabilities progressively re-updated in parallel with the coding of the first block, which probabilities correspond to the different elements of the possible syntax and the different associated decoding contexts.

[0155] After the aforementioned decoding step D24, during a step D25, a test is performed to determine whether the current block is the jth block of this same row, j being a predetermined value, at least 1, known to the decoding device DO.

[0156] If it is the jth block, then in the course of step D26, the set of probabilities calculated for the jth block is stored in a buffer memory MT of a decoding device DO, such as the one represented in Figure 6A and Figures 4A and 4B, the size of said memory being adapted to store the calculated number of probabilities.

[0157] During a step D27, the unit UDk tests whether the current block just decoded is the last block of the last substream.

[0158] If so, the decoding method ends, during step D28.

[0159] If it is not the last block of the last substream, then in the course of a step D29, the next block MB i The selection is undertaken.

[0160] If, during the above step D25, the current block is not the j-th block of the row SEDk under consideration, then the above step D27 is undertaken.

[0161] In the course of step D30 following the above-mentioned step D29, the current block MB i In this step, a determination is undertaken of the availability of previously decoded blocks necessary for decoding the current block MB k−1. Given the fact that this involves parallel decoding of blocks by separate decoding units UDk, it is possible that these blocks have not been decoded by the decoding units assigned to the decoding of these blocks and therefore may not be available yet. Said determination step consists in verifying whether a predetermined number N′ of blocks located in the previous row SEk−1, for example two blocks respectively located above and to the right of the current block, are available for the decoding of the current block, i.e. have already been decoded by the decoding unit UDk−1 assigned for their decoding ... iThe second objective is to verify the availability of at least one block located to the top left of the current block to be decoded. However, the blocks are decoded one after the other over the row SEk under consideration, taking into account the order of the traversal PS selected in the embodiment represented in FIG. 4A or FIG. 4B. Thus, a decoded block to the left is always available (with the exception of the first block of the row). In the example represented in FIG. 4A or FIG. 4B, this involves the block located immediately to the left of the current block to be decoded. For this, only the availability of two blocks located respectively above and to the top right of the current block is tested.

[0162] As this test step tends to slow down the decoding method, in an alternative approach according to the invention, the clock CLK represented in Fig. 6A is adapted to synchronize the progress of the decoding of a block so as to guarantee, without the need to verify, the availability of the two blocks respectively located above and to the right of the current block. Thus, as represented in Fig. 4A or 4B, the decoding unit UDk always starts decoding the first block with a shift of a predefined number N' (here N'=2) of decoded blocks of the previous row SEk-1 used for the decoding of the current block. From a software point of view, such a clock implementation can significantly accelerate the time for processing the blocks of each subset SEk in the decoding device DO.

[0163] During step D31, a test is performed to determine whether the current block is the first block of the row SEk under consideration.

[0164] If it is the first block, then in the course of a step D32, reading is undertaken in the buffer memory MT only the symbol occurrence probabilities calculated during the decoding of the jth block of the previous row SEk-1.

[0165] According to a first variant represented in Fig. 4A, the jth block is the first block of the previous row SEk-1 (j=1). Such a reading consists in replacing the probabilities of the CABAC decoder by the probabilities in the buffer memory MT. This reading step is indicated in Fig. 4A by thin-lined arrows, with this replacement being carried out for the first block of each of the second row SE2, the third row SE3 and the fourth row SE4.

[0166] According to a second variant of the aforementioned step D32 shown in Fig. 4B, the jth block is the second block of the previous row SEk-1 (j=2). Such a reading consists in replacing the probabilities of the CABAC decoder by the probabilities in the buffer memory MT. This reading step is illustrated in Fig. 4B by thin dashed arrows, with this replacement being carried out for the first block of each of the second row SE2, the third row SE3 and the fourth row SE4.

[0167] After step D32, the current block is decoded by repeating steps D24 to D28 described above.

[0168] If, after the aforementioned step D31, the current block is not the first block of the row SEk under consideration, advantageously no reading of the probabilities arising from a previously decoded block located in the same row SEk, i.e. in the represented example the decoded block located immediately to the left of the current block, is undertaken. Indeed, considering a successive traversal PS for reading blocks located in the same row as represented in Figure 4A or 4B, the symbol occurrence probabilities present in the CABAC decoder at the very moment of starting the decoding of the current block are precisely those that existed after the decoding of the previous block of this same row.

[0169] Thus, in step D33, learning of symbol occurrence probabilities for entropy decoding of the current block is undertaken, said probabilities corresponding only to those calculated for the previous block of the same row, as represented by the double solid arrow in Figure 4A or Figure 4B.

[0170] After step D33, the current block is decoded by repeating steps D24 to D28 described above.

[0171] Then, during step D34, a test is performed to determine whether the current block is the last block of the row SEk under consideration.

[0172] If it is not the last block, proceed to step D34 to determine the next block MB to be coded. i Step D29 of selecting is performed again.

[0173] If the current block is the last block of the row SEk under consideration, then in the course of a step D35, the decoding unit UDk performs a step identical to the above-mentioned step D23, namely a step of reinitializing the intervals representative of the probability of occurrence of the symbols contained in a given set of symbols, such a reinitialization being indicated in Figures 4A and 4B by a black dot at the beginning of each row SEk.

[0174] The decoding device DO being in an initialized state at the start of each of the rows therefore gives great flexibility in terms of choosing the level of parallelism of the decoding and optimizing the processing time for the decoding.

[0175] In the exemplary encoding / decoding diagram depicted in FIG. 7A, the encoding device CO comprises a single encoding unit UC and the decoding device DO comprises six decoding units, as depicted in FIG. 3A.

[0176] The coding unit UC sequentially codes the rows SE1, SE2, SE3, SE4, SE5 and SE6. In the illustrated example, the rows SE1 to SE4 have been completely coded, the row SE5 is in the process of coding and the row SE6 has not yet been coded. Taking into account the sequential nature of the coding, the coding unit UC is adapted to deliver a stream F containing the ordered substreams F1, F2, F3, F4 in the order of coding of the rows SE1, SE2, SE3 and SE4. For this purpose, the substreams F1, F2, F3 and F4 are symbolized with the same hatching as that which symbolizes the coded rows SE1, SE2, SE3, SE4, respectively. Due to the nulling step at the end of the encoding of the encoded row and the reinitialization of the probability intervals at the start of the encoding or decoding of the next row to be encoded / decoded, the decoding device DO is in an initialized state every time it reads to decode a sub-stream and therefore the four sub-streams F1, F2, F3, F4 can be decoded in parallel in an optimal manner using, for example, decoding units UD1, UD2, UD3 and UD4 installed on four separate platforms.

[0177] In the exemplary encoding / decoding diagram depicted in FIG. 7B, the encoding device CO comprises two encoding units UC1 and UC2, and the decoding device DO comprises six decoding units, as depicted in FIG. 3C.

[0178] The coding unit UC1 sequentially codes the odd-ranked rows SE1, SE3 and SE5, and the coding unit UC2 sequentially codes the even-ranked rows SE2, SE4 and SE6. For this purpose, rows SE1, SE3 and SE5 show a white background, while rows SE2, SE4 and SE6 show a dotted background. In the illustrated example, rows SE1 to SE4 have been fully coded, row SE5 is in the process of coding, and row SE6 has not yet been coded. Taking into account the fact that the coding performed is of level 2 parallel type, the coding unit UC1 sequentially codes the two-part decomposed sub-stream F1 and F3 obtained after coding rows SE1 and SE3, respectively. 2n+1The coding unit UC2 is adapted to deliver a sub-stream F decomposed into two parts F2 and F4 obtained after coding the rows SE2 and SE4, respectively. 2n The coding device CO is therefore adapted to deliver two sub-streams F 2n+1 and F 2n 7A owing to the juxtaposition of the substreams F1, F3, F2, F4, the substreams F1, F2, F3 and F4 are adapted to transmit to the decoding device DO a stream F which includes substreams ordered F1, F3, F2, F4 differently from that represented in Fig. 7A due to the juxtaposition of the substreams F1, F2, F3 and F4, respectively, symbolized with the same hatching as that which symbolizes the encoded rows SE1, SE2, SE3, SE4, with the substreams F1 and F3 showing a white background (encoding of odd-order rows) and the substreams F2 and F4 showing a dotted background (encoding of even-order rows).

[0179] With regard to the advantages mentioned in conjunction with FIG. 7A, such an encoding / decoding diagram further shows the advantage that a decoding device can be employed whose level of decoding parallelism is completely independent of the level of encoding parallelism, thereby making it further possible to optimize the operation of the encoding device / decoding device. [Explanation of symbols]

[0180] IE Image CO encoder PCO Split Module GRCO Calculation Module UC Coding Unit MT Buffer Memory CF Stream Building Module UCk Coding Unit MCP predictive coding module MCPk predictive coding module MCE Entropy Coding Module MCEk Entropy Coding Module MGSF Stream Generation Software Module MGSFk Stream Generation Software Module

Claims

1. receiving a bitstream representing at least one encoded image; identifying from the bitstream a plurality of predetermined groups of blocks representing at least one coded image; processing a first group of blocks, entropy decoding a first row of consecutive blocks in the first group of blocks; processing a second group of blocks, entropy decoding a second row of consecutive blocks in the second group of blocks; a second row of the consecutive blocks immediately follows a first row of the consecutive blocks in raster order of an image decoded from the at least one encoded image; and a second row of the consecutive blocks does not immediately follow a first row of the consecutive blocks in the bitstream. Image decoding method.

2. 2. The computer-implemented method of claim 1, receiving the bitstream representing the at least one encoded image from a coding system comprising one or more coding units for coding each of the groups of blocks; and providing a plurality of groups of the blocks to one or more decoding units; the number of the one or more decoding units is different from the number of the one or more coding units; Image decoding method.

3. 2. The computer-implemented method of claim 1, predictively decoding each of the plurality of blocks relative to at least one previously decoded block. Image decoding method.

4. 2. The computer-implemented method of claim 1, updating probability data in a memory unit based on entropy decoded data of at least the first group of blocks. Image decoding method.

5. one or more processors; and When executed by the one or more processors, receiving a bitstream representing at least one encoded image; identifying from the bitstream a plurality of predetermined groups of blocks representing at least one coded image; processing a first group of blocks, entropy decoding a first row of consecutive blocks in the first group of blocks; processing a second group of blocks, entropy decoding a second row of consecutive blocks in the second group of blocks; a second row of the consecutive blocks immediately follows a first row of the consecutive blocks in raster order of an image decoded from the at least one encoded image; and a second row of the consecutive blocks does not immediately follow a first row of the consecutive blocks in the bitstream; one or more storage devices storing instructions that cause the one or more processors to perform operations including system.

6. 6. The system of claim 5, The operations further include: receiving the bitstream representing the at least one coded image from a coding system comprising one or more coding units for coding each of the groups of blocks; providing the groups of blocks to one or more decoding units; and a number of the one or more decoding units being different from a number of the one or more encoding units. system.

7. 6. The system of claim 5, The operation includes: predictively decoding each of the plurality of blocks relative to at least one previously decoded block. system.

8. 6. The system of claim 5, The operation includes: updating probability data in a memory unit based on entropy decoded data of at least the first group of blocks. system.

9. When executed by one or more computers, receiving a bitstream representing at least one encoded image; identifying from the bitstream a plurality of predetermined groups of blocks representing at least one coded image; processing a first group of blocks, entropy decoding a first row of consecutive blocks in the first group of blocks; processing a second group of blocks, entropy decoding a second row of consecutive blocks in the second group of blocks; a second row of the consecutive blocks immediately follows a first row of the consecutive blocks in raster order of an image decoded from the at least one encoded image; and a second row of the consecutive blocks does not immediately follow a first row of the consecutive blocks in the bitstream; A non-transitory computer-readable medium storing software including instructions that cause the one or more computers to perform operations including:

10. 10. The computer readable medium of claim 9, The operation includes: receiving the bitstream representing the at least one encoded image from a coding system comprising one or more coding units for coding each of the groups of blocks; and providing the groups of blocks to one or more decoding units; and a number of the one or more decoding units being different from a number of the one or more encoding units. Computer-readable medium.

11. 10. The computer readable medium of claim 9, The operation includes: predictively decoding each of the plurality of blocks relative to at least one previously decoded block. Computer-readable medium.

12. 10. The computer readable medium of claim 9, The operation includes: updating probability data in a memory unit based on entropy decoded data of at least the first group of blocks. Computer-readable medium.