The present invention relates in general to the field of processing images, and more precisely to coding and decoding digital images and sequences of digital images.
The invention can thus be applied in particular to the video coding performed in present video coders (MPEG, H.264, etc.) or future video coders (ITU-T/VCEG (HEVC) or ISO/MPEG (HVC)).
The HEVC standard that is currently being prepared and that is described in the document “Joint collaborative team on video coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 7th Meeting: Geneva, CH, Nov. 21-30, 2011” is similar to the preceding H.264 standard in the sense that it uses a block representation of the video sequence. Nevertheless, the HEVC standard differs from the H.264 standard by the fact that it subdivides the image into a plurality of block partitions referred to as “tiles”, as described in the document “Joint collaborative team on video coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 6th Meeting: Torino, IT, Jul. 14-22, 2011”.
More precisely, such a subdivision consists in partitioning each image of the video with the help of one or more vertical boundaries extending from top to bottom of the image and one or more horizontal boundaries extending from one side (e.g. left side) to the other (e.g. right side) of the image. The macroblocks lying between two consecutive vertical boundaries and two consecutive horizontal boundaries form a tile in which neighboring pairs of macroblocks are thus grouped together. Within a tile, the macroblocks are coded and then decoded in a lexicographical order, i.e. using a row by row scan through the blocks of the raster-scan type, starting the block situated at the top left corner of the tile and going to the block situated at the bottom right corner of the tile. The tiles are themselves coded and then decoded in lexicographical order.
The set of tiles T1, T4, and T7 is separated from the set of tiles T2, T5, and T8 by a vertical boundary F1.
The set of tiles T2, T5, and T8 is separated from the set of tiles T3, T6, and T9 by a vertical boundary F2.
The set of tiles T1, T2, and T3 is separated from the set of tiles T4, T5, and T6 by a horizontal boundary F3.
The set of tiles T4, T5, and T6 is separated from the set of tiles T7, T8, and T9 by a horizontal boundary F4.
The numbers and sizes of the tiles are parameters that can be set image by image. The macroblocks are numbered in the “raster-scan” order in which they are processed in the tile in question, as explained above.
The advantage of subdividing into tiles in this way is that the intra or inter prediction is not authorized for a macroblock of a tile in question, e.g. the macroblock MB10 of the tile T2, relative to a macroblock that has already been coded and then decoded and that belongs to a tile other than the tile T2, e.g. the macroblock MB3 of the tile T1. Consequently, each tile may be encoded and then decoded independently, thus enabling these tiles to be encoded and/or decoded in parallel on different processor units, with each unit processing one tile.
As in the H.264 standard, the above-mentioned HEVC standard proposes that for each macroblock under consideration for coding, a residual macroblock may be coded corresponding to the original macroblock minus a prediction. Such a residual macroblock contains coefficients that are quantified after optional transform, and then coded by an entropy coder.
Attention is given herein more particularly to the entropy coder. An entropy coder codes information in its order of arrival. Typically, the blocks are passed through row by row with a raster-scan type, starting from the top left block of the image. For each block, the information needed for representing the block (type of block, prediction mode, residual coefficients, . . . ) is sent sequentially to the entropy coder.
An arithmetic coder that is effective and of reasonable complexity is already known, it is referred to as a “context adaptive binary arithmetic coder” (CABAC) and it was introduced in the AVC compression standard (also known as ISO-MPEG4 part 10 and ITU-T H.264).
That entropy coder implements various concepts:
Thus, for each context used, the entropy coder makes use of a system for learning probabilities on the fly relative to the previously coded symbols for the context under consideration. This learning is based on the coding order of the symbols. When entropy coding of a current macroblock begins, the symbol appearance probabilities that are used are those obtained after coding a previously coded and then decoded macroblock, which is the macroblock immediately preceding the current block in the scan order through the blocks.
Such an entropy coder suffers from the drawback that the coding and decoding of a symbol depend on the probability state as learnt so far, so symbols can be decoded only in the same order as that used during coding.
In the future HEVC standard, entropy coding is performed tile by tile in the raster-scan order of those tiles, rather than row by row.
Thus, in the example shown in
It can be seen that it might nevertheless be advantageous to decode an image that has been coded after being subdivided into tiles, while nevertheless conserving the raster-scan order of the image rows as proposed in the H.264 standard rather than using the raster-scan order of the tiles. Such a provision is advantageous for the purpose of delivering pixel macroblock rows that are suitable for being displayed on display screens, since they generally make use of a horizontal scan of rows of pixels.
Consideration is given to an image IMG subdivided into tiles as shown in
Nevertheless, for the above-mentioned reasons, it may be desirable to decode the image IMG in compliance with the H.264 standard, i.e. macroblock row by macroblock row in the image IMG, in the following order: MB1, MB2, MB3, MB10, MB11, MB16, MB17, MB18, MB4, MB5, MB6, MB12, MB13, MB19, MB20, MB21, and so on to macroblock MB48.
Since the macroblocks of the image IMG are decoded in the order defined by the tiles, in order to display the first row of macroblocks MB1, MB2, MB3, MB10, MB11, MB16, MB17, MB18, it is therefore necessary to decode all of the macroblocks MB1 to MB9 of the substream SFX1 before it is possible to begin decoding the macroblocks MB10 and MB11 of the substream SFX2. Likewise, it is necessary to decode all of the macroblocks MB10 to MB15 of the substream SFX2 before it is possible to begin decoding the macroblocks MB16, MB17, and MB18 of the substream SFX3. Thus, solely for the purpose of decoding the first row of macroblocks of the image, such a provision gives rise to considerable delay in decoding said first row and requires memory to be used to conserve all of the decoded pixels relating to the macroblocks MB1 to MB9 of the tile T1, to the macroblocks MB10 to MB15 of the tile T2, and to the macroblocks MB16 to MB24 of the tile T3, which consumes a large amount of memory. Consequently, it would be desirable:
For this purpose, consideration is given to decoding the first row of macroblocks in the image IMG. A stream pointer PO scans through the substream SFX1 so as to read the data making it possible to decode the macroblocks MB1, MB2, and MB3. Given the fact that the CABAC entropy decoder uses sharing of bits between consecutive macroblocks, when the pointer PO has scanned through sufficient bits to be able to decode the data of the macroblock MB3, it has also read some of the bits needed for decoding at least the following macroblock MB4, which bits are referred to as “shared” bits. The pointer PO then needs to “jump” to the beginning of the following substream SFX2 in order to decode the data of the macroblocks MB10 and MB11. Such a jump is possible since each substream possesses a start address that is written in the header of the complete stream FX. Before making this jump, the decoder must:
Such a procedure thus continues each time a tile boundary is crossed while decoding the first row of the image IMG.
When decoding of the first row of the image IMG has terminated, the second row of the image is decoded. The pointer PO is then restored to the value previously stored in the memory MP1, and the shared bits that are contained in the memory BM1 are transferred into the current memory of the CABAC decoder. It is thus possible to begin decoding the macroblock MB4. This procedure is also performed for decoding the macroblocks MB12 and MB13 of the substream SFX2 and the macroblocks MB19, MB20, and MB21 of the substream SFX3.
Thereafter, the decoding of the following rows of the image IMG is continued in compliance with the above-described procedure.
The decoding method of that procedure does not provide good performance and it is cumbersome to implement, given the multiple operations it needs to perform and the large amount of information it needs to process and store. That gives rise to a decoding method with processing time that is too long and that consumes excessive memory resources.
An exemplary aspect of the present invention provides a coding method for coding at least one image comprising the steps of:
The method of the invention is remarkable in that, for at least one tile under consideration of the image, where the current block of the tile is a coded block situated along an edge of the tile forming a boundary with an adjacent edge of a tile neighboring the tile under consideration, it further comprises the following steps:
Coupling together the above-mentioned writing step and the step of reinitializing the entropy coder module enables a data stream to be produced that is coded in raster-scan order for each tile of blocks in the current image, while being particularly well adapted to decoding the blocks of the image row of blocks by row of blocks, during which method there is no need:
In a first example, the state variables of the entropy coder module comprise the two bounds of an interval representative of the appearance probability of a symbol from among the symbols in the predetermined set of symbols.
In a second example, the state variables of the entropy coder module comprise one bound together with the length of an interval representative of the appearance probability of a symbol from among the symbols in the predetermined set of symbols.
In a third example, the state variables of the entropy coder module are symbol strings contained in the translation table of an LWZ (Lempel-Ziv-Welch) entropy coder that is well known to the person skilled in the art, and, on Mar. 29, 2012, was described at the following Internet address: http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch
In a particular implementation, the boundary-forming edge of the tile is vertical.
Such a provision enables the coded stream to be decoded more easily by conserving raster-scan order for the rows of the image as proposed in the H.264 standard, rather than using the raster-scan order for the tiles. This makes it possible to reconstruct rows of pixel macroblocks that are suitable for being displayed on display screens that generally operate with horizontal scanning of rows of pixels.
Correspondingly, the invention also provides a device for coding at least one image, the device comprising:
Such a coder device is remarkable in that it comprises, for at least one tile under consideration of the image:
Correspondingly, the invention also provides a method of decoding a stream representative of at least one coded image, the method comprising the following steps:
Such a decoding method is remarkable in that for at least one substream for decoding corresponding to at least one tile of the image, in the event of the current block of the tile being a block previously decoded and identified as being situated along an edge of the tile forming a boundary with an adjacent edge of a tile adjacent to the tile, performing the initialization substep.
Such a provision enables the previously coded stream to be decoded in such a manner that the blocks of the stream are decoded one after another in raster-scan order, i.e. the order in which they are arranged in the image, and not from one substream to the following substream, in the raster-scan order in which they are arranged in tiles.
This provision is particularly advantageous when it is desired to display the image row of blocks by row of blocks in the raster-scan order of the blocks of the image, particularly in the context of displaying the image on a display screen, where such screens generally operate using horizontal scanning of pixel rows.
Furthermore, because the entropy decoder module is reinitialized each time a decoded block runs along a boundary between the tile being decoded and the following tile in raster-scan order, there is no need, for the purpose of restarting decoding of the second row of blocks of said tile, once the blocks of the first row of the following tile have been decoded to perform the following:
This results in a decoding method that is less expensive in terms of calculation and that therefore executes more quickly.
In a particular implementation, the edge of the boundary-forming tile is vertical.
Correspondingly, the invention provides a decoder device for decoding a stream representative of at least one coded image, the device comprising:
Such a decoder device is remarkable in that, for at least one substream for decoding corresponding to at least one tile of the image, in the event of the current block of the tile being a block that has been previously decoded and identified as being situated along an edge of the tile forming a boundary with an adjacent edge of a tile adjacent to the tile, the initialization submeans are activated to reinitialize the state variables of the entropy decoder module.
The invention also provides a computer program having instructions for executing steps of the above coding or decoding method when the program is executed by a computer.
Such a program may use any programming language, and be in the form of source code, object code, or code intermediate between source code and object code, such as in a partially complied form, or in any other desirable form.
The invention also provides a computer readable data medium including computer program instructions as mentioned above.
The data medium may be any entity or device capable of storing the program. For example, such a medium may comprise storage means, such as a read only memory (ROM), e.g. a compact disk (CD) ROM, or a microelectronic circuit ROM, or indeed magnetic storage means, e.g. a floppy disk or a hard disk.
Furthermore, such a data medium may be a transmissible medium such as an electrical or optical signal suitable for being conveyed via an electric or optical cable, by radio, or by other means. The program of the invention may in particular be downloaded from an Internet type network.
Alternatively, such a data medium may be an integrated circuit in which the program is incorporated, the circuit being adapted to execute the method in question or to be used in the execution thereof.
The above-mentioned coder device, the decoder device, and the computer programs all present at least the same advantages as the advantages conferred by the coding method of the present invention.
Other characteristics and advantages appear on reading about preferred implementations described with reference to the figures, in which:
An implementation of the invention is described below, in which the coding method of the invention is used for coding a sequence of images in a binary stream close to that obtained by coding using the H.264/MPEG-4 AVC standard. In this implementation, the coding method of the invention is implemented for example in software or hardware form by modifying a coder initially in compliance with the H.264/MPEG-4 AVC standard. The coding method of the invention is described in the form of an algorithm having steps C1 to C5, as shown in
In the implementation of the invention, the coding method of the invention is implemented in a coding device CO, an embodiment of which is shown in
With reference to
This cutting up is performed by a partitioning module PCO shown in
With reference to
The two vertical boundaries FR1 and FR2 in the image IE define:
This grouping together is performed by a calculation module GRCO shown in
With reference to
According to the invention, such coding is for example of sequential type and is performed by a coding unit UC that codes successively in raster-scan order a number N of tiles for coding, with N=3 in the example shown in
In known manner, the coding unit UC comprises:
The predictive coder module MCP is a module that is suitable for performing predictive coding of the current block, using conventional prediction techniques, such as for example in intra and/or inter mode.
The entropy coder module MCE is of the CABAC type, but it is modified in accordance with the present invention, as described below in the present description.
In particular, the modifications made to the entropy coder module MCE are based on the teaching of the document by Thomas Wiegand, Gary J. Sullivan, Gisle Bjontegaard, and Ajay Luthra, “Overview of the H.264/AVC video coding standard”, IEEE Transactions on Circuits and System for Video Technology, Vol. 13, No. 7, pp. 560-576, July 2003. In that document, it is specified that the CABAC entropy coder has the feature of allocating a non-integer number of bits to each symbol in a current alphabet for coding. Specifically, the CABAC coder waits until it has read a plurality of symbols, and then it allocates a predetermined number of bits to this set of symbols that have been read, with the coder writing the bits into the compressed stream for transmitting to the decoder. Such a provision thus makes it possible to share bits over a plurality of symbols and to code a symbol on a fractional number of bits, which number is representative of information that is closer to the information actually conveyed by a symbol. Other bits associated with the symbols that have been read are not transmitted in the compressed stream but are conserved, waiting to be allocated to one or more new symbols read by the CABAC coder so as to enable these other bits to be shared once more. In known manner, the entropy coder proceeds at a given instant to “flush” these non-transmitted bits. In other words, at said given instant, the coder extracts the bits that have not yet been transmitted and writes them into the compressed stream for the decoder. Such flushing takes place, for example, when the last symbol for coding has been read, so as to ensure that the compressed stream does indeed contain all of the bits needed by the decoder for decoding all of the symbols of the alphabet. More generally, the instant at which flushing is performed is determined as a function of the performance and the features specific to a given coder/decoder.
In a variant, the entropy coder module MCE may be a conventional Huffman coder.
In the example shown in
Scans of types other than that described above could naturally be used. Depending on the applications, the coding unit might not process a succession of rows as explained above, but rather a succession of columns. It is also possible to scan rows or columns in one direction or in an opposite direction.
With reference to
With reference to
With reference to
Such construction of the overall stream F is performed in a stream construction module CF, as shown in
With reference to
During a step C31, the coding unit UC selects as the current block the first block for coding in a current tile TUj, such as for example the first tile TU1 of the image IE shown in
During a step C32, the coding unit UC tests whether the current block is the first block (situated top left) of a row of the tile TU1 that was obtained at the end of the above-described step C2.
If so, given the fact that the first block B1 is also the first block of the image IE, the entropy coder module MCE proceeds during a step C33 with initializing its state variables. In the example shown, which makes use of the above-described arithmetic codings, this consists in initializing an interval representative of the appearance probability of a symbol contained in the predetermined set of symbols. In known manner, this interval is initialized with two bounds L and H, respectively a low bound and a high bound. The value of the low bound L is set to zero, while the value of the high bound is set to 1, which corresponds to the appearance probability of a first symbol from among all of the symbols of the predetermined set of symbols. The size R of this interval is thus defined at this stage by R=H-L=1. The initialized interval is also conventionally partitioned into a plurality of predetermined subintervals that are representative respectively of the appearance probabilities of symbols in the predetermined set of symbols.
In a variant, the initialized internal variables are one of the above-mentioned interval bounds, together with its length.
In another example, if the entropy coding used is LZW coding, then a symbol string translation table is initialized so that it contains all possible symbols once and once only.
During a step C34 that follows the above-described step C33, the first current block B1 of the first row of the tile TU1 shown in
During a first substep C341, the current block B1 is subjected to predictive coding using known intra and/or inter prediction techniques, during which the block B1 is predicted relative to at least one block that has previously been coded and then decoded.
Naturally, it is possible to use intra prediction modes other than those proposed in the H.264 standard.
The current block B1 may also be subjected to predictive coding in inter mode, during which the current block is predicted relative to a block from a previously coded and decoded image. Other types of prediction may naturally be envisaged. Among the types of prediction possible for a current block, the optimum type of prediction is selected on the basis of a distortion rate criterion that is well known to the person skilled in the art.
Said above-mentioned predictive coding step serves to construct a predicted block Bp1 which is an approximation of the current block B1. The information relating to the predictive coding is subsequently written in the stream F that is transmitted to the decoder DO. Such information comprises in particular the type of prediction (inter or intra), and where appropriate, the intra prediction mode, the type of partitioning used for a block or a macroblock if the macroblock has been subdivided, and the index of the reference image together with the motion vector used in the inter prediction mode. This information is compressed by the coder CO shown in
During a following substep C342, the predictive block Bp1 is subtracted from the current block B1 in order to produce a residue block Br1.
During a following substep C343, the residue block Br1 is transformed using a conventional direct transform operation, such as for example a discrete cosine transform (DCT) in order to produce a transformed block Bt1.
During a following substep C344, the transformed block Bt1 is quantified using a conventional quantification operation, such as for example scalar quantification. This produces a quantified coefficients block Bq1. During a following substep C345, entropy coding is performed on the quantified coefficients block Bq1. In the preferred implementation, this is done using CABAC entropy coding. Such a step consists in:
In the above-mentioned example in which the coding used is LZW coding, digital information relating to the code of the symbol in the current translation table is associated with the symbol for coding, and the translation table is updated, using a known method.
During a following substep C346, the block Bq1 is subjected to dequantification in a conventional dequantification operation, which is the operation that is the inverse of the quantification performed in step C344. This produces a dequantified coefficients block BDq1.
During a following substep C347, the inverse transform is applied to the dequantified coefficients block BDq1, where this operation is the inverse of the direct transform in above-mentioned step C343. A decoded residue block BDr1 is thus obtained.
During a following substep C348, the decoded block BD1 is constructed by adding the decoded residue block BDr1 to the predictive block Bp1. It should be observed that the decoded residue block is the same as the decoded block obtained at the end of the method of decoding the image IE as described below. The decoded block BD1 is thus made available for use by the coding unit UC.
At the end of the above-mentioned coding step C34, the entropy coder module MCE as shown in
The coding step C34 is also performed directly if, at the end of above-mentioned step C32, the current block is not the first block of a row of the tile TU1.
During a following step C35, the coding unit UC tests whether the current coded/decoded block is the last block of a row of the tile TU1. With reference to
If the current block that has been coded/decoded is the last block of a row of the tile TU1, i.e. with reference to
During a step C37, the coding unit UC performs a step identical to above-mentioned step C33, i.e. it initializes once more the interval representative of the appearance probability of a symbol contained in the predetermined set of symbols.
The advantage of performing the steps C36 and C37 at this stage of coding is that when the coding unit UC is coding the following block, the coder CO is in an initialized state. Thus, as described below, it becomes possible for a decoding unit to decode the compressed stream F directly from this point, since it suffices for it to be in the initialized state.
During a following step C38, the coding unit UC tests whether the current block that has just been coded/decoded is the last block of the image IE.
The step C38 is also performed when the current block that has been processed at the end of above-mentioned step C34 is not the last block of a row of the current tile following test step C35.
If the current block is the last block of the image IE, the current coding method is ended in a step C39.
Otherwise, the following block for coding is selected in application of the raster-scan order for the tile TU1 and the steps C31 et seq. are reiterated. In the example shown in
The above-described coding method is performed for all of the rows that are to be coded in a tile under consideration.
An implementation of the decoding method of the invention is described below in which the decoding method is implemented in software or hardware form by modifying a decoder that was initially in compliance with the H.264/MPEG-4 AVC standard.
The decoding method of the invention is shown in
In an embodiment of the invention, the decoding method of the invention is implemented in a decoder device DO shown in
With reference to
In the example shown in
Depending on the size of the image, which size is not necessarily a multiple of the size of the blocks, the last blocks to the left and the last blocks at the bottom need not be square. In an alternative implementation, the blocks may for example be rectangular in shape and/or they need not be in alignment with one another.
Each block or macroblock may also itself be divided into subblocks, that may themselves be subdivided.
Such identification of substreams is performed by a stream extraction module EXDO as shown in
With reference to
The tiles of blocks are decoded by a single decoding unit UD as shown in
As shown in greater detail in
The predictive decoder module MDP is suitable for performing predictive decoding of the current block using conventional prediction techniques, such as for example in intra and/or inter mode.
The entropy decoder module MDE is of the CABAC type, but it is modified in accordance with the present invention as described below.
In a variant, the entropy decoder module MDE could be a conventional Huffman decoder.
In the example shown in
Scans of types other than that described above could naturally be used. Depending on the application, the decoding unit UD, instead of processing a succession of rows as explained above, could process a succession of columns. It is also possible to scan the rows or the columns in one direction or the other.
With reference to
During a fourth decoding step D4 shown in
With reference to
During a step D21, the decoding unit UD selects as the current block in the corresponding substream the first block for decoding in a current tile TUj, such as for example the first tile TU1 of the image IE shown in
During a step D22, the decoding unit UD tests whether the current block is the first block (situated top left) of a row of the tile TU1, specifically the first block B1 of the substream SF1.
If it is, given the fact that the first block B1 is also the first block of the image IE, the entropy decoder module MDE acts during a step D23 to initialize its state variables. In the example shown, this comprises initializing an interval representative of the appearance probability of a symbol contained in the predetermined set of symbols.
In a variant, if the entropy decoding used is LZW decoding, then a symbol string translation table is initialized, so that it contains all possible symbols once and once only. Since the step D23 is identical to the above-described coding step C33, it is not described in greater detail.
During a step D24, that follows the above-described step D23, the first current block B1 of the first row of the tile TU1 shown in
During a first substep D241, the syntax elements associated with the current block are subjected to entropy decoding by reading the stream F with the help of a stream pointer P. Such a step consists mainly:
In the above-mentioned variant in which the decoding used is LZW decoding, digital information corresponding to the code of the symbol in the current translation table is read, the symbol is reconstructed from the code as read, and the translation table is updated using a method that is itself known.
More precisely, the syntax elements associated with the current block are decoded by the CABAC entropy decoder module MDE as shown in
During a following substep D242, predictive decoding of the current block B1 is performed using conventional intra and/or inter prediction techniques, during which the block B1 is predicted relative to at least one previously decoded block.
Naturally, it is possible to use intra prediction modes other than those proposed in the H.264 standard.
During this step, predictive decoding is performed with the help of the syntax elements decoded during the preceding step and including in particular the type of prediction (inter or intra), and where appropriate the intra prediction mode, the type of partitioning used for a block or a macroblock if it is has been subdivided, and the index of the reference image together with the motion vector as used in inter prediction mode.
Said above-mentioned predictive decoding step serves to construct a predicted block Bp1.
During a following substep D243, a quantified residue block Bq1 is constructed with the help of the previously decoded syntax elements.
During a following substep D244, the quantified residue block Bq1 is subjected to dequantification using a conventional dequantification operation that is the inverse of the quantification operation performed in the above-described step C344, thereby producing a decoded dequantified block BDt1.
During a following substep D245, the inverse transform is applied to the dequantified block BDt1, i.e. an operation is performed that is the inverse of the direct transform performed in above-described step C343. A decoded residue block BDr1 is thus obtained.
During a following substep D246, the decoded block BD1 is constructed by adding the decoded residue block BDr1 to the predicted block Bp1. The decoded block BD1, is thus made available for use by the decoding unit UD.
At the end of above-described decoding step D246, the entropy decoder module MDE as shown in
The decoding step D24 is also performed directly if, at the end of above-described step D22, the current block is not the first block of a row of the tile TU1.
During a following step D25, the decoding unit UD tests whether the decoded current block is identified as being the last block of a row of the tile TU1.
If the decoded current block is the last block of a row of the tile TU1, e.g. the block B3 as shown in
During a following step D27, the decoding unit UD tests whether the current block that has just been decoded is the last block of the image IE, i.e. whether it is the last block of the last substream, namely the substream SF3 in the example shown in
Such a step D27 is also performed when the current block that has been decoded at the end of above-described step D24 is not the last block of a row of the current tile following test step D25.
If the decoded current block is indeed the last decoded block of the image IE, then during a step D28, the decoding method is brought to an end.
Otherwise, the following block for decoding from the tile TU1 is selected in application of the raster-scan order, and steps D21 et seq. are reiterated. In the example shown in
The advantage of the above-described initialization step D26 lies in the fact that the decoding unit UD is then in an initialized state each time the pointer P of the stream F of
Such a provision is particularly suitable when it is desired to decode the image IE row of blocks by row of blocks, in particular for displaying the image on a display screen, where such screens generally operate by horizontally scanning rows of pixels.
The decoder unit UD is thus capable of moving the pointer P to the beginning of the substream SF2 to begin reading the first portion of the substream SF2 corresponding respectively to the first row of coded blocks B16 to B17 of the second tile TU2 and for decoding the blocks of this row in application of the above-described decoding method. Once the decoding of the blocks has been performed, the decoding unit UD is then in an initialized state ready for processing the next row of blocks B18 to B19. The decoding unit UD is thus capable of moving the pointer P to the beginning of the substream SF3 in order to begin reading the first portion of the substream SF3 corresponding respectively to the first row of coded blocks B26 to B28 of the third tile TU3 and for decoding the blocks of this row in accordance with the above-described decoding method. Once these blocks have been decoded, the decoding unit UD is in an initialized state in order to process the next row of blocks B29 to B31.
Such a procedure is then reiterated for each row of blocks in the image IE.
Furthermore, given the fact that the decoding unit is reinitialized each time a decoded block lies on the boundary between the tile currently being decoded and the tile that follows in raster-scan order, there is no need, for the purpose of restarting decoding of the second row of blocks of said tile, and once the blocks of the first row of the following tile have been decoded, to perform the following operations:
Although the present disclosure has been described with reference to one or more examples, workers skilled in the art will recognize that changes may be made in form and detail without departing from the scope of the disclosure and/or the appended claims.
Number | Date | Country | Kind |
---|---|---|---|
1252826 | Mar 2012 | FR | national |
This application is a Section 371 National Stage Application of International Application No. PCT/FR2013/050474, filed Mar. 6, 2013, the content of which is incorporated herein by reference in its entirety, and published as WO 2013/144474 on Oct. 3, 3013, not in English.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/FR2013/050474 | 3/6/2013 | WO | 00 |