Electronic methods and arrangements for decoding data streams, and related computer programs.
Artificial neural networks are used to generate context indices for entropy decoding, addressing inflexibility in existing methods and enhancing decoding efficiency and compression in audio or video content.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- オランジュ
- Filing Date
- 2021-10-01
- Publication Date
- 2026-06-17
Smart Images

Figure 0007875177000001 
Figure 0007875177000002 
Figure 0007875177000003
Abstract
Description
Technical Field
[0001] The present invention relates to the technical field of data decoding.
[0002] In particular, the present invention relates to a method for decoding a data stream, an electronic device, and a related computer program.
Background Art
[0003] Entropy coding is used, in particular, in the field of coding of audio or video content in order to optimally compress such data taking into account the occurrence statistics of different symbols within the data.
[0004] Within this framework, for example, CABAC ("Context Adaptive Binary Arithmetic Coding") may be mentioned, as described in the paper "Context-based adaptive binary arithmetic coding in the H.264 / AVC video compression standard" by D. Marpe, H. Schwarz, and T. Wiegand in IEEE Transactions on Circuits and Systems for Video Technology, vol. 13, no. 7, pp. 620 - 636, July 2003.
[0005] During decoding, the entropy decoder is always configured in a context that depends on previously decoded syntax elements in a manner predefined by the relevant standard.
Summary of the Invention
Means for Solving the Problems
[0006] The present invention is a method for decoding a sequence of binary elements, comprising: - applying previously decoded values at the input of an artificial neural network; - As a result of the above application, the step of generating a context index in the output of the artificial neural network, - A step of obtaining a new decoded value by applying a portion of the sequence of binary elements to an entropy decoder parameterized with the context identified by the generated context index, We propose a method that includes this.
[0007] Using artificial neural networks to generate context identifiers increases the flexibility when using entropy coding, which is particularly interesting when the data format is not fully predefined.
[0008] As described below, the decoding method may then include obtaining the decoded value by entropy decoding (using the entropy decoder described above) in each of multiple iterations (including the current iteration and preceding iterations), and the method for decoding a sequence of binary elements as defined above is as follows: - A step of applying the decoded value obtained by entropy decoding in a preceding iteration to the input of the artificial neural network. - As a result of the above application, the step of generating a context index in the output of the artificial neural network, - A step to obtain the decoded value in the current iteration by applying a portion of the sequence of binary elements to an entropy decoder parameterized by the context identified by the generated context index. It may include.
[0009] The method may further include the step of applying new decoded values to the input of an artificial neural network so that the output of the artificial neural network generates data representing audio or video content. In this case, the artificial neural network generates a context index on the one hand and data representing audio or video content on the other.
[0010] For example, the first part of the artificial neural network may be defined as generating a context index (and thus referred to as the "context-determining artificial neural network" in the following description), and the second part of the artificial neural network may be defined as generating data representing audio or video content (and thus referred to as the "decoding artificial neural network" in the following description).
[0011] Furthermore, the entropy decoding process by the entropy decoder may be stipulated to be paused unless a new context index is generated in the output of the artificial neural network. This allows for synchronization between the artificial neural network and the entropy decoder.
[0012] A sequence of binary elements may be included in the data stream. In this case, the data stream may also include information indicating the set of contexts available within the entropy decoder. Such information might, for example, indicate the number of contexts available within the entropy decoder.
[0013] The method may further include, for example, a step of initializing each context available in the entropy decoder using parameterized data contained in a data stream that includes a sequence of binary elements.
[0014] As applicable in the embodiments described below, the artificial neural network can be implemented by a processing unit.
[0015] Next, the method may include the step of configuring a processing unit according to the data contained in a data stream that includes a sequence of binary elements.
[0016] For example, during this configuration step, it is also possible to apply a predefined value to the input of the artificial neural network (even before the entropy decoder begins decoding the sequence of binary elements) to generate an initial context index (at the output of the artificial neural network). Thus, the entropy decoder is parameterized by the context indicated by this initial context index in order to entropy decode the first element of the sequence of binary elements (to obtain a first decoded value to apply to the input of the artificial neural network to initiate the process described above).
[0017] According to another possibility, the entropy decoder can be parameterized in a predefined initial context, unless the artificial neural network generates a context index. Thus, entropy decoding can be performed in this initial context to process the first element of the sequence of binary elements and obtain a first decoded value that is applied to the input of the artificial neural network so that the artificial neural network generates a context index.
[0018] Artificial neural networks are implemented, for example, by parallel processing units designed to perform multiple operations of the same type in parallel at a given time point.
[0019] The entropy decoder can be implemented by a processor separate from the parallel processing unit.
[0020] The present invention also proposes a computer program that includes instructions executable by a processor, and is designed to implement the above-described decoding method when these instructions are executed by the processor.
[0021] Finally, the present invention relates to an electronic device for decoding a sequence of binary elements, - An artificial neural network designed to receive a previously decoded value as an input and generate a context index as an output, - An entropy decoder designed to receive a sequence of binary elements as an input, - A control module designed to parameterize the entropy decoder in a context identified by the generated context index so as to obtain a new decoded value with the output of the entropy decoder, Propose an electronic device including.
[0022] As described below, the previously decoded value is decoded by entropy decoding in an iteration preceding the iteration in which a new decoded value is obtained (i.e., generated by the entropy decoder).
[0023] This electronic decoding device may include a synchronization mechanism that can temporarily stop the entropy decoding process by the entropy decoder unless a new context index is generated at the output of the artificial neural network.
[0024] This electronic decoding device may also include a processing unit capable of implementing an artificial neural network.
[0025] Next, the control module may be designed to configure the processing unit according to the data included in the data stream including the sequence of binary elements so that the processing unit can implement the artificial neural network as shown above.
[0026] The electronic decoding device may further include a processor that is separate from the processing unit and is designed to implement an entropy decoder.
[0027] Of course, different features, alternative forms, and embodiments of the present invention can be associated with each other according to various combinations unless they are incompatible or exclusive with each other.
[0028] Furthermore, various other features of the present invention will become apparent from the accompanying description, which is made with reference to drawings illustrating non-limiting embodiments of the present invention. [Brief explanation of the drawing]
[0029] [Figure 1] This shows a data processing assembly that includes several parts of an artificial neural network. [Figure 2] The feature map used within the processing assembly shown in Figure 1 is schematic. [Figure 3] This shows an electronic coding device used within the framework of the present invention. [Figure 4] Figure 3 is a flowchart showing the steps of the encoding method implemented within the electronic encoding device. [Figure 5] Figure 3 shows the data stream generated by the electronic encoding device. [Figure 6] An example of an electronic decoding device according to the present invention is shown. [Figure 7] Figure 6 is a flowchart showing the steps of the decoding method implemented in the electronic decoding device. [Modes for carrying out the invention]
[0030] Figure 1 shows a data processing assembly in which different parts are used to encode audio or video content, or to decode encoded data in order to render the audio of video content, as described below.
[0031] This assembly includes an encoding artificial neural network 8, an entropy encoder 10, a context-determining artificial neural network 40, an entropy decoder 30, and a decoding artificial neural network 28.
[0032] The coding artificial neural network 8 is designed to receive content data B as input (i.e., on the input layer) which forms a representation (in this case, uncompressed) of audio or video content. For example, in the case of video content, the content data includes, for each pixel of an image in an image sequence, data representing the brightness value of the pixel and data representing the chrominance value of the pixel.
[0033] The content data B applied to the input layer of the encoded artificial neural network 8 at a predetermined time may also represent a block of an image, or a block of image components (e.g., a block of the luminance or chrominance components or a block of color components of the image), or an image in a video sequence, or a component of an image in a video sequence (e.g., a luminance or chrominance component or color component), or a series of images in a video sequence.
[0034] For example, at least some of the neurons (or nodes) in the input layer of the coding artificial neural network 8 may each receive a pixel value of an image component, and the value may be defined as being represented by a single content data B.
[0035] When this content data B is applied to the input (i.e., input layer) of the coding artificial neural network 8, the coding artificial neural network 8 generates a value V as an output that represents the audio or video content itself.
[0036] However, the representative value V generated at the output of the encoded artificial neural network 8 forms a more compact representation than the corresponding content data B applied to the input of the encoded artificial neural network 8. For example, the number of nodes in the output layer of the encoded artificial neural network 8 is less than the number of nodes in the input layer of the encoded artificial neural network 8 (e.g., one-quarter, or even one-eighth or one-sixteenth).
[0037] The representative values V generated by the output of the artificial neural network 8 are then organized into a sequence of feature maps F, as schematically shown in Figure 2. Here, the coding artificial neural network 8 generates, for example, N feature maps F.
[0038] Each feature map F has, for example, a two-dimensional structure (or matrix structure). Therefore, each feature map F here forms a matrix with H rows and W columns.
[0039] An element at a given location within a given feature map F corresponds to a representative value V generated by the output node (or output layer node) of the coding artificial neural network 8, which is associated with this given location and this given feature map F in a predefined manner. According to one possible embodiment, the artificial neural network 8 generates all N feature maps as outputs (i.e., on its output layer) at a given time point. According to another possible embodiment, different sets of content data B (e.g., corresponding to different locations in an image) are applied to the input (i.e., input layer) of the artificial neural network 8 at different time points, and the artificial neural network 8 generates the corresponding feature map F as an output (i.e., on its output layer) at each of these different time points (in this case, the output nodes of the artificial neural network 8 are each associated with different locations in a single feature map F).
[0040] Alternatively, the representative values V generated by the output of the encoded artificial neural network 8 can be organized into an ordered sequence of representative values V. If the content data B applied to the input of the encoded artificial neural network 8 represents a block of an image (or a block of an image component), then the ordered sequence of representative values V generated by the output of the encoded artificial neural network 8 is associated with this block. Thus, different sequences of representative values generated consecutively by the artificial neural network 8 are each associated with different blocks of an image (or different blocks of relevant components of an image).
[0041] In yet another alternative form, the representative values V generated by the output of the coding artificial neural network 8 are placed within a multidimensional (e.g., M-dimensional) structure of the data. Each element of this structure is then identified by its position within the structure, i.e., a set of M coordinates in the example above. The representative values V generated by a given output node of the coding artificial neural network 8 (i.e., a given node of the output layer) then form elements of the structure, identified by their positions within the structure associated with this output node in a predefined manner (i.e., coordinates associated with this output node in a predefined manner).
[0042] The representative value V generated at the output (i.e., on the output layer) of the coding artificial neural network 8 is applied to the input of the entropy encoder 10 on the one hand, and to the input (i.e., the input layer) of the context-determining artificial neural network 40 on the other hand.
[0043] Therefore, the context-determining artificial neural network 40 receives representative values V (for example, corresponding to blocks of the encoded image or blocks of components of the encoded image) as input (i.e., on its input layer) and as a result generates a context index C as output. The context index C is here generated on the output node of the context-determining artificial neural network 40.
[0044] In the example described here, the context-determining artificial neural network 40 contains only this unique output node. However, as an alternative, the context-determining artificial neural network 40 may generate multiple context indices C as outputs, each associated with at least one representative value V (e.g., a set of representative values V). In the example described above, the context indices C generated in the output of the context-determining artificial neural network 40 may each be associated with different feature maps F (each containing a set of representative values V).
[0045] As shown in Figure 1, the context index C generated by the context-determining artificial neural network 40 is applied to the entropy encoder 10 and the entropy decoder 30.
[0046] The entropy encoder 10 is designed to encode several statistical sources, each corresponding to a specific probability of occurrence of the symbol to be encoded. To this end, the entropy encoder 10 can be parameterized in a specific context associated with a given statistical source, in which the entropy encoder 10 produces the optimal entropy encoding if the effectively encoded symbol (here, the representative value V) satisfies the expected probability of this statistical source.
[0047] In the following, the number of contexts to which the entropy encoder 10 can be parameterized during the entropy coding of the representative value V (i.e., the number of different statistical sources that can be processed in the signal formed by the representative value V) is denoted by K. For example, K = 160.
[0048] The entropy encoder 10 is, here, of the CABAC ("Context-Adaptive Binary Arithmetic Coding") type. Alternatively, it could be another type of entropy encoder, such as a Huffman type encoder, an arithmetic encoder, or an LZW ("Lempel-Ziv-Welch") encoder.
[0049] The representative value V received at the input of the entropy encoder 10 is ordered in a predefined manner for entropy coding by the entropy encoder 10.
[0050] For example, in the example described herein, where representative values are organized into a sequence of feature maps F, different feature maps F are processed in this sequence order, and within each feature map F, the elements (i.e., representative values V) are considered in a predefined (scan) order.
[0051] The entropy encoder 10 performs entropy coding of an ordered representative value V received as input, while being parameterized by the context indicated by the context index C generated at the output of the context-determining artificial neural network 40. In an alternative embodiment in which multiple context indexes C are generated at the output of the context-determining artificial neural network 40, the entropy encoder 10 performs entropy coding of an ordered representative value V received as input, each associated with a different feature map F, while (always) being parameterized by the context indicated by the context index C associated with the feature map F being entropy coded.
[0052] Next, the entropy encoder 10 generates a sequence of binary elements Fnn as its output. As will become clear below, this sequence of binary elements Fnn corresponds to a stream of compressed data representing audio or video content (generated at the output of the electronic encoding device 2, described below with reference to Figure 3, and a data stream for the electronic decoding device 20, described below with reference to Figure 6).
[0053] The binary element sequence Fnn is applied to the input of the entropy encoder 30, which is parameterized by the context indicated by the context index C generated at the output of the context-determining artificial neural network 40.
[0054] The entropy decoder 30 is designed to perform entropy decoding, which is the inverse of entropy coding performed by the entropy encoder 10 described above. Thus, the entropy decoder 30 is hereby a CABAC ("Context-Adaptive Binary Arithmetic Coding") type entropy decoder. Alternatively, it could be another type of entropy encoder, such as a Huffman type decoder, an arithmetic decoder, or an LZW ("Lempel-Ziv-Welch") decoder.
[0055] Therefore, the entropy decoder 30 generates the same representative value V as the one applied to the input of the entropy encoder 10 as its output. (In this regard, it should be remembered that entropy coding is lossless coding.)
[0056] The representative value V generated at the output of the entropy decoder 30 is applied to the input (i.e., the input layer) of the decoding artificial neural network 28.
[0057] The assignment of representative values V to each input node (or input layer node) of the decoding artificial neural network 28 is predefined. (It is further observed that the output layer of the encoding artificial neural network 8 corresponds to the input layer of the decoding artificial neural network 28. In fact, the use of entropy coding allows for improved data compression but does not alter the data itself.)
[0058] When the decoding artificial neural network 28 receives a representative value V as input, the decoding artificial neural network 28 generates a representation I of the content suitable for playback on an audio or video playback device as an output (i.e., on the output layer).
[0059] Therefore, in the case of video content (including images or sequences of images), the artificial neural network 28 generates at least one matrix representation I of image blocks (or blocks of image components, or alternatively, images or image components) as output (i.e., on its output layer).
[0060] The above describes a data processing assembly that generates a compressed stream (a sequence of binary elements Fnn) representing the content from content data B, and uses this compressed stream to generate a representation I of the content for playback on an audio or video playback device, with reference to Figure 1.
[0061] Such datasets can be optimized for specific types of content and / or specific rate-distortion compromises during the training phases of different artificial neural networks 8, 28, and 40 as described above.
[0062] First, a sequence of audio or video learning content (for example, a series of learning videos in this case) is selected. This is a set of content that represents the type of content that is desired to be compressed in this data processing assembly.
[0063] Next, each piece of content in the learning sequence (in this case, each video) can be applied (as content data B) to the input of the encoding artificial neural network 8, thereby making it possible to generate the sequence of binary elements Fnn (at the output of the entropy encoder 10) and the representation I (at the output of the decoding artificial neural network 28) each time (as described above).
[0064] The cost function is used to numerically evaluate the efficiency of the data processing assembly in the current configuration. Such a cost function is, for example, a rate-strain cost such as R + λ.D, where D is the strain (squared error) between the rendered content (using representation I) and the initial content (represented by content data B), R is the (actual or estimated) rate of the compressed stream (i.e., sequence of binary elements Fnn), and λ is a user-provided parameter that allows for a choice of compromises between compression and quality.
[0065] This cost function is used within the gradient backpropagation learning algorithm to vary the weights assigned to neurons in artificial neural networks 8, 28, and 40 in a manner that minimizes the cost function.
[0066] The weights assigned to the neurons of artificial neural networks 8, 28, and 40 when the minimum cost is considered to have been reached define these artificial neural networks 8, 28, and 40, and thus the data processing assembly, as they are used below.
[0067] Therefore, for different types of content (i.e., training sequences) and / or different compromises between compression and quality (each compromise corresponding to a specific parameter λ), it is possible to define several optimal data processing assemblies of this type, respectively (each defined in particular by the set of weights assigned to neurons in artificial neural networks 8, 28, and 40).
[0068] Here, we will explain how such data processing assembly parts can be used within electronic coding and electronic decoding devices.
[0069] Figure 3 shows an electronic coding device 2 that uses an encoding artificial neural network 8, a context-determining artificial neural network 40, and an entropy encoder 10.
[0070] This electronic coding device 2 includes a processor 4 (for example, a microprocessor) and a parallel processing unit 6, for example, a graphics processing unit, i.e., a GPU, or a tensor processing unit, i.e., a TPU.
[0071] The processor 4 is programmed (for example, by computer program instructions that are executable by the processor 4 and stored in memory (not shown) associated with the processor 4) to implement the control module 5 and the aforementioned entropy encoder 10.
[0072] As schematically shown in Figure 3, the control module 5 receives data P and B representing the audio or video content to be compressed; in this case, format data P and content data B. This content data B is of the same nature as described in the explanation of Figure 1 and will not be explained again.
[0073] Format data P indicates the format characteristics of the representation of audio or video content, such as, in the case of video content, image size (in pixels), frame rate, bit depth of luminance information, and bit depth of chrominance information.
[0074] The parallel processing unit 6, after being configured by the processor 4 (for example, by the control module 5), is designed to implement the coding artificial neural network 8 and the context-determining artificial neural network 40 (both belonging to a data processing assembly such as the data processing assembly in Figure 1). To this end, the parallel processing unit 6 is designed to execute multiple operations of the same type in parallel at a given time.
[0075] In the following, the artificial neural network formed from the coding artificial neural network 8 and the context-determining artificial neural network 40 will be referred to as the "overall coding network" 9. The parallel processing unit 6 is designed to implement this overall coding network 9 (after being configured by the processor 4, as already shown).
[0076] Here, an example of an encoding method implemented by the electronic encoding device 2 will be explained with reference to Figure 4.
[0077] The method shown in Figure 4 begins with step E2, which involves selecting a data processing assembly from among several data processing assemblies, following the instructions above with reference to Figure 1.
[0078] As already explained, these different data processing assemblies may have the same general structure (as shown in Figure 1), but the different artificial neural networks 8, 28, and 40 are defined by different weights (associated with neurons) for each data processing assembly (the optimization criteria differ for each data processing assembly).
[0079] The data processing assembly may be selected from among the data processing assemblies available for the electronic decoder (such as the electronic decoder 20 shown in Figure 6 and described below), for example, a decoding artificial neural network 28 and a context-determining artificial neural network 40 (together forming the overall decoding network as described below). To this end, the electronic decoder may, in some cases, receive in advance a list of artificial neural networks accessible by the electronic decoder (from the electronic decoder or a dedicated server).
[0080] The data processing assembly can also be selected according to the intended use (e.g., indicated by the user via a user interface not shown on the electronic coding device 2). For example, if the intended use is video conferencing, the selected data processing assembly enables low-latency decoding. For other uses, the selected data processing assembly may enable random-access decoding.
[0081] In a low-latency video sequence decoding process, the images in a video sequence are represented, for example, by encoded data that can be transmitted and decoded immediately. This data can then be transmitted in the order in which the video images are displayed, thereby ensuring a latency of one frame between encoding and decoding.
[0082] In the random access video sequence decoding process, the encoded data associated with multiple images is transmitted in an order different from the display order of these images, thereby improving compression. Next, encoded images that do not reference other images (so-called intraframes) can be encoded periodically, making it possible to start decoding the video sequence from several points in the encoded stream.
[0083] For this purpose, you can refer to the paper "Overview of the High Efficiency Video Coding (HEVC) Standard" by G.S. Ullivan, J.-R. Ohm, W.-J. Han, and T. Wiegand in IEEE Transactions on Circuits and Systems for Video Technology, vol.22, no.12, pp.1649-1668, Dec.2012.
[0084] The data processing assembly can also be selected to obtain the best possible compression-distortion compromise.
[0085] Different criteria for selecting a data processing assembly may, in some cases, be combined.
[0086] Once a data processing assembly is selected, the control module 5 proceeds in step E4 to configure the parallel processing unit 6 so that the parallel processing unit 6 can implement the encoding process intended in this data processing assembly.
[0087] Step E4 specifically involves creating instances of the global coding network 9, which includes the coding artificial neural network 8 and the context-determining artificial neural network 40 for the selected data processing assemblies, within the parallel processing unit 6.
[0088] This instance creation involves the following steps: - Within the parallel processing unit 6, the steps of securing the memory space necessary to implement the overall coding network 9, and / or - A step of programming the parallel processing unit 6 using the weights Γ and activation function that define the overall coding network 9, and / or - A step of loading at least a portion of content data B into the local memory of the parallel processing unit 6. It may include.
[0089] The following steps relate to encoding (i.e., preparing) the data stream for the electronic decoding device (for example, the electronic decoding device 20 described below with reference to Figure 6).
[0090] Therefore, this method includes, in particular, step E6 of encoding a first header portion Fc which contains data specific to the format of the representation of the audio or video content (for example, data linked to the format of the video sequence being encoded).
[0091] These data forming the first header portion Fc represent, for example, the image size (in pixels), frame rate, binary depth of luminance information, and binary depth of chrominance information. These data are constructed, for example, based on the format data P described above (after potential reformatting).
[0092] In step E8, the control module 5 performs encoding of a second header portion containing data R, which represents the overall decoding network, including the decoding artificial neural network 28 and the context-determining artificial neural network 40 belonging to the data processing assembly selected in step E2.
[0093] According to the first possible embodiment, these instruction data R may include identifiers for the overall decoding network.
[0094] Such identifiers indicate a global decoding network corresponding to the global coding network 9 described above (among multiple global decoding networks, for example, among a set of global decoding networks available to an electronic decoding device), and therefore, the global decoding network must be used to decode the representative value V. (Such a global decoding network includes, on the one hand, a decoding artificial neural network corresponding to the coding artificial neural network 8 included in the global coding network 9, and on the other hand, a context-determining artificial neural network 40 included in the global coding network 9.)
[0095] That is, such identifiers, by convention (particularly shared by the electronic coding device and the electronic decoding device), define this overall decoding network from among all overall decoding networks that the electronic decoding device can use (or access by the electronic decoding device). As already shown, the electronic coding device 2 may, if applicable, receive in advance a list of artificial neural networks accessible by the electronic decoding device (from the electronic decoding device or a dedicated server).
[0096] According to a second possible embodiment, these instruction data R may include data describing the overall decoding network.
[0097] The overall decoding network (including the decoding artificial neural network 28 and the context-determining artificial neural network 40 belonging to the data processing assembly selected in step E2) is encoded (i.e., represented) by these descriptive data (or encoded data of the decoding artificial neural network), for example, according to a standard such as MPEG-7 part 17 or using a format such as JSON.
[0098] For this purpose, you can refer to the paper "DeepCABAC: Context-adaptive binary arithmetic coding for deep neural network compression" by S. Wiedemann et al. in the Proceedings of the 36th International Conference on Machine Learning, Long Beach, California, PMLR 97, 2019, or the paper "Compact and Computationally Efficient Representation of Deep Neural Networks" by S. Wiedemann et al. in IEEE Transactions on Neural Networks and Learning Systems (Vol.31, Iss.3), March 2020.
[0099] The instruction data R may also be defined to include an indicator indicating whether the overall decoding network belongs to a predetermined set of artificial neural networks (in which case the first possible embodiment described above is used), or whether the overall decoding network is encoded in a data stream, i.e., represented by the description data described above (in which case the second possible embodiment described above is used).
[0100] The method in Figure 4 follows step E10, which determines whether the electronic decoding device can implement the decoding process using the overall decoding network described above.
[0101] The control module 5 determines this possibility, for example, by determining whether the electronic decoding device includes a module designed to implement this decoding process or software suitable for implementing this decoding process by the electronic decoding device (if this software is executed by the processor of the electronic decoding device) (potentially using previous interactions between the electronic encoding device 2 and the electronic decoding device).
[0102] If the control module 5 determines that the electronic decoding device is capable of implementing the decoding process, the method proceeds to step E14, which is described below.
[0103] If control module 5 determines that the electronic decryption device is unable to implement the decryption process, the method performs step E12, as described below (before proceeding to step E14).
[0104] Alternatively, the choice of whether or not to perform step E12 (before performing step E14) may be made according to a different criterion, for example, according to a dedicated indicator stored in the electronic coding device 2 (and optionally adjustable by the user via the user interface of the electronic coding device 2) or according to a choice made by the user (for example, obtained via the user interface of the electronic coding device 2).
[0105] In step E12, the control module 5 encodes a third header portion in the data stream, which includes a computer program (exe) (or code) executable by the processor of the electronic decryption device. (The use of the computer program (exe) within the electronic decryption device is described below with reference to Figure 7.)
[0106] To adapt for execution within the electronic decoding device, the computer program is selected, for example, within a library, based on information related to the hardware configuration of the electronic decoding device (e.g., information received during previous communication between the electronic encoding device 2 and the electronic decoding device).
[0107] Next, the method in Figure 4 proceeds to the step of encoding data representing the configuration of the entropy encoder 10 used in the data processing assembly selected in step E2 (and therefore the entropy decoder 30 of this same assembly).
[0108] Therefore, the method in Figure 4 first includes a step E14 of encoding a fourth header portion containing information I1 indicating the set of contexts to be used for entropy coding. In the example described herein, information I1 indicates the number K of contexts to be used for entropy coding.
[0109] Next, the method in Figure 4 includes step E16 of encoding a fifth header portion containing data Iinit for parameterizing the relevant context for each context used in entropy coding.
[0110] In the example described here, where the entropy coding used is of type CABAC, the parameterized data Iinit associated with a given context is data for initializing this context, as described, for example, in Recommendation ITU-T H.265, part "9.3.2.2 Initialization process for context variables".
[0111] In other embodiments, the parameterized data associated with a given context may be data representing a probabilistic model used for the context in relation to the entropy coding.
[0112] The method shown in Figure 4 follows step E18, in which the entropy encoder 10 is initialized (by the control module 5) using the parameterized data associated with different contexts. This type of initialization is described in the aforementioned document (Recommendation ITU-T H.265, part “9.3.2.2 Initialization process for context variables”).
[0113] Next, the method in Figure 4 includes step E20, which implements the encoding process, namely, the step of applying content data B to the input of the global encoding network 9 (or, in other words, the step of activating the global encoding network 9 using content data B as input). (Therefore, content data B is then applied to the input of the encoding artificial neural network 8.)
[0114] Therefore, step E20 enables the generation of representative values V and context index C (in this case, at the output of the overall coding network 9). More precisely, representative values V are generated at the output of the coding artificial neural network 8, and these representative values V are applied to the input of the context-determining artificial neural network 40 so that this context-determining artificial neural network 40 generates context index C as its output.
[0115] Next, the method in Figure 4 includes step E22 of entropy encoding the representative value V by the entropy encoder 10, the entropy encoder 10 being parameterized (optionally via control module 5) in a context defined by context index C generated at the output of the global coding network 9 (more precisely, at the output of the context-determining artificial neural network 40). In an alternative embodiment in which the context-determining artificial neural network 40 (and therefore the global coding network 9) generates a plurality of context index C associated with a set of representative values V, the entropy encoding of the representative value V by the entropy encoder 10 is performed by parameterizing the entropy encoder 10 in a context defined by context index C associated with the set containing the representative value V being entropy encoded.
[0116] Therefore, the entropy encoder 10 generates a sequence of binary elements Fnn as output, which represents the audio or video content in a compressed format.
[0117] Step E22 may, depending on the circumstances, include a substep of binarizing the representative value V (and therefore before entropy coding), as described in the aforementioned paper, "Context-based adaptive binary arithmetic coding in the H.264 / AVC video compression standard." The purpose of this binarization step is to convert the representative value V, which can take many values, into a sequence of binary elements, each of which is encoded by entropy coding (and in this case, the context is associated with the encoding of each binary element).
[0118] In particular, if step E20 allows processing only a portion of the audio or video content to be compressed (for example, if step E20 processes blocks, components, or images of a video sequence to be compressed), it is possible to repeat the execution of step E20 (to obtain representative values of consecutive portions of the content) and step E22 (to perform entropy coding of these representative values).
[0119] Therefore, in step E24, the processor 4 can construct a complete data stream including the header Fet and the sequence of binary elements Fnn.
[0120] The complete data stream is constructed such that the header Fet and the sequence of binary elements Fnn are individually identifiable.
[0121] According to one possible embodiment, the header Fet includes an indicator of a binary element sequence Fnn that begins within the complete data stream. This indicator is, for example, the starting location of the binary element sequence Fnn from the beginning of the complete data stream, bitwise. (i.e., in this case, the header has a predetermined fixed length.)
[0122] Other means for identifying the header Fet and the sequence Fnn of binary elements may be considered as alternatives, for example, as markers (i.e., a combination of bits used to indicate the beginning of the sequence Fnn of binary elements, the use of which is prohibited for the rest of the data stream or at least within the header Fet).
[0123] The data stream constructed in step E24 can be encapsulated in a transmission format that is known in itself, such as the “packet transport system” or “byte stream” format.
[0124] In the case of a "packet transport system" format (for example, as proposed by the RTP protocol), data is encoded in identifiable packets and transmitted over a communication network. The network can easily identify the boundaries of the data (images, sets of images, and in this case, the header Fet and the sequence of binary elements Fnn) using packet identification information provided by the network layer.
[0125] In the "byte stream" format, specifically, packets do not exist, and the construction of step E24 requires the identification of boundaries between related data (boundaries between parts of the stream corresponding to each image, and in this case, the boundary between the header Fet and the sequence of binary elements Fnn) using further means such as the use of a Network Abstraction Layer (NAL) unit, which allows a unique binary combination (such as 0x00000001) to identify boundaries between data.
[0126] Next, the complete data stream constructed in step E24 may be sent in step E26 to the electronic decoding device 20 described below (by means of communication not shown and / or via at least one communication network), or stored in the electronic encoding device 2 (for later transmission or, as an alternative, for later decoding within the electronic encoding device itself, in which case the electronic encoding device is designed to further implement the decoding method 20 described below with reference to Figure 6).
[0127] Therefore, this data stream includes a header Fet and a sequence of binary elements Fnn, as shown in Figure 5.
[0128] As is clear from the above, the header Fet is, - The first part Fc, which includes the data characteristics of the audio or video content representation format. - A second part containing data R showing the overall decoding network (including the decoding artificial neural network and the context-determining artificial neural network), - A third part, which may include a computer program (exe) that can be executed by the processor of the electronic decoding device. - A fourth part containing information I1 that shows the set of contexts used for entropy coding, - For each context used in entropy coding, a fifth part containing data Iinit for parameterizing the relevant context, Includes.
[0129] According to possible alternatives, it may be specified that information I1 indicating the set of contexts used for entropy coding is not transmitted, in which case the entropy encoder and entropy decoder can use a set of contexts defined in advance (by convention).
[0130] Figure 6 shows an electronic decoding device 20 that uses an entropy decoder 30, a context-determining artificial neural network 40, and a decoding artificial neural network 28 (these elements are described above with reference to Figure 1).
[0131] This electronic decoding device 20 includes a receiving unit 21, a processor 24 (e.g., a microprocessor), and a parallel processing unit 26, such as a graphics processing unit, i.e., a GPU, or a tensor processing unit, i.e., a TPU.
[0132] The receiving unit 21 is, for example, a communication circuit (such as a radio frequency communication circuit) that can receive data (in particular the data stream described above) from an external electronic device such as an electronic coding device 2 and communicate this data to the processor 24 (for example, the receiving unit 21 is connected to the processor 24 by a bus).
[0133] The electronic decoding device 20 also includes a storage unit 22, such as memory (optionally rewritable non-volatile memory) or a hard drive. While the storage unit 22 is shown in Figure 5 as a separate element of the processor 24, alternatively, the storage unit 22 may be integrated into (i.e., included in) the processor 24.
[0134] In this case, the processor 24 is adapted to execute, for example, multiple instructions of a computer program stored in the storage unit 22 in sequence.
[0135] Some of these instructions, when executed by the processor 24, enable the implementation of a control module 25 having functions described later. Alternatively, some of the functions of the control module 25 can be implemented by having the processor 24 execute instructions identified in the header Fet in step E52, as described later.
[0136] Another portion of the instructions stored in the storage unit 22, when executed by the processor 24, enables the implementation of the aforementioned entropy decoder 30. Alternatively, the entropy decoder 30 may be implemented in step E52 by having the processor 24 execute the instructions identified in the header Fet, as will be described later.
[0137] The parallel processing unit 26 is designed to implement the context-determining artificial neural network 40 and the decoding artificial neural network 28 after being configured by the processor 24 (more precisely, by the control module 25). To this end, the parallel processing unit 26 is designed to execute multiple operations of the same type in parallel at a given time.
[0138] As already shown, the context-determining artificial neural network 40 and the decoding artificial neural network 28 together form an artificial neural network referred to here as the "overall decoding network," which is shown as 29 in Figure 6.
[0139] As schematically shown in Figure 5, the processor 24 receives a data stream containing the header Fet and the sequence of binary elements Fnn (in this case, via the receiving unit 21).
[0140] As described below, the decoding artificial neural network 28 is used within a framework for processing data obtained by entropy decoding (by the entropy decoder 30) of a sequence of binary elements Fnn, and this data processing aims to obtain the audio or video content corresponding to the initial audio or video content B.
[0141] The storage unit 22 can store multiple parameter sets, each parameter set defining an overall decoding network (including a context-determining artificial neural network and a decoding artificial neural network). As described below, the processor 24 can configure the parallel processing unit 26 to use a specific parameter set from these parameter sets, so that the parallel processing unit 26 can then implement the artificial neural network defined by this specific parameter set (i.e., the overall decoding network in this case).
[0142] The storage unit 22 may store, in particular, a first parameter set defining a first artificial neural network that forms a random access decoder and / or a second parameter set defining a second artificial neural network that forms a low latency decoder.
[0143] In this case, the electronic decoding device 20 has pre-decoding options for both situations where random access to the content is desired and situations where the content should be displayed without delay.
[0144] Here, referring to Figure 7, we will describe a decoding method that uses, on the one hand, an entropy decoder 30 implemented within the electronic decoding device 20 (parameterized according to the context index C generated by the context-determining artificial neural network 40), and on the other hand, an artificial neural network 28 implemented by the parallel processing unit 26.
[0145] The method shown in Figure 7 begins with step E50, in which a data stream containing the header Fet and the sequence of binary elements Fnn is received (by the electronic decoder 20, specifically the receiving unit 21 in this case). The receiving unit 21 transmits the received data stream to the processor 24 for processing by the control module 25.
[0146] Next, the control module 25 proceeds to step E52, which identifies the header Fet and the sequence of binary elements Fnn in the received data stream, for example, by an indicator at the beginning of the binary element sequence (as already described in step E24).
[0147] In step E52, the control module 25 can also identify different parts of the header Fet (as described above with reference to Figure 5).
[0148] If, in step E52, executable instructions (such as instructions for a computer program Exe) are identified (i.e., detected) within the first data, the control module 25 may, in step E54, initiate the execution of these executable instructions to implement at least some of the (subject-descriptive) steps of processing the header data (and optionally entropy decoding). These instructions may be executed by the processor 24 or, alternatively, by a virtual machine instantiated within the electronic decoding device 20.
[0149] The method in Figure 7 follows step E56, which involves decoding data Fc, which is a feature of the format, in order to obtain the format features of the representation of the audio or video content. For example, in the case of video content, decoding of data portion Fc allows obtaining the image size (in pixels), and / or frame rate, and / or the binary depth of the luminance information, and / or the binary depth of the chrominance information.
[0150] Next, the control module 25 proceeds to step E58, which decodes data R, which represents the overall decoding network to be used.
[0151] According to the first possibility, as already shown, these data R are identifiers that represent the overall decoding network 28 within a given set of artificial neural networks, for example.
[0152] This predetermined set is, for example, a set of overall decoding networks accessible by the electronic decoding device 20, that is, a set of overall decoding networks in which the electronic decoding device 20 stores a set of parameters that define the relevant artificial neural network (as shown above), or a set of parameters that can be accessed by connecting to a remote electronic device such as a server (as described below).
[0153] In this case, the control module 25 may, for example, proceed to read the set of parameters associated with the decrypted identifier (this set of parameters defines the overall decryption network identified by the decrypted identifier) from the storage unit 22.
[0154] Alternatively (or if the storage unit 22 does not store a set of parameters for the overall decoding network identified by the decoded identifier), the control module 25 may transmit a request for a set of parameters to a remote server (this request may include, for example, the decoded identifier) and receive a set of parameters in response that defines the artificial neural network identified by the decoded identifier (in this case, forming the overall decoding network).
[0155] The set of parameters (read or received) may actually include specific parameters that define the decoding artificial neural network 28 and other parameters that define the context-determining artificial neural network 40.
[0156] According to a second possible embodiment, as already shown, data R is data Rc that describes the overall decoding network 29.
[0157] As already shown, this descriptive data (or encoded data) is encoded according to standards such as MPEG-7 Part 17 or using a format such as JSON.
[0158] Decoding these descriptive data makes it possible to obtain parameters that define the overall decoding network 29 to be used, including a context-determining artificial neural network 40 and a decoding artificial neural network 28 (to which data obtained by entropy decoding from a sequence of binary elements Fnn, as described below, is applied).
[0159] Such parameters may actually include specific parameters that define the decoding artificial neural network 28 and other parameters that define the context-determining artificial neural network 40.
[0160] In some embodiments, the use of the first or second possibility described above depends on the labels, which are also included in the data R, as already shown.
[0161] Regardless of which option is used, decoding the data R representing the overall decoding network to be used allows (in this case, the control module 25) to determine the features of the decoding artificial neural network 28 in particular. Thus, for example, in the example described herein, the control module 25 determines the number N of feature maps expected at the input of the decoding artificial neural network 28 and the sizes H, W of these feature maps. In fact, as described above, each element of the feature map F, the input layer of the decoding artificial neural network 28 corresponding to the output layer of the encoding artificial neural network 8, is associated with the input node (or node of the input layer) of the decoding artificial neural network in a predetermined manner. Thus, the number and size of the feature map F are linked to the features of the decoding artificial neural network 28 and certain header data such as the data Fc described above (in particular, including the image size).
[0162] Next, in step E60, the control module 25 proceeds to configure the parallel processing unit 26 using the parameters that define the overall decoding network 29 (parameters obtained in step E58) so that the parallel processing unit 26 can implement this overall decoding network 29 (including the context-determining artificial neural network 40 and the decoding artificial neural network 28).
[0163] This configuration step E60 specifically includes the creation of an instance of the global decoding network 29 (and thus the creation of instances of the context-determining artificial neural network 40 and the decoding artificial neural network 28) within the parallel processing unit 26, using the parameters obtained in step E58.
[0164] This instance creation involves the following steps: - Within the parallel processing unit 26, the step of securing the memory space necessary to implement the overall decoding network 29, and / or, - A step of programming the parallel processing unit 26 using parameters that define the overall decoding network 29 (e.g., including weights Γ' and activation functions) (parameters obtained in step E58), It may include.
[0165] Configuration step E60 may further include applying predefined (initial) values (e.g., stored in the storage unit 22) to the input layer of the global decoding network 29 so that the global decoding network 29 is activated and thus generates an initial context index C as an output (more precisely, in the output of the context-determining artificial neural network 40).
[0166] Next, in step E62, the control module 25 proceeds to decode information I1 which indicates the set of contexts available within the entropy decoder 30 (here, the number of contexts K available within the entropy decoder 30). As already shown, for example, K = 160.
[0167] Next, in step E64, the control module 25 proceeds to decode the parameterized data Iinit associated with each of the different contexts of the set of contexts used (this set is determined for the information I1 decoded in step E62).
[0168] Next, the control module 25 can implement step E66, which initializes each context available within the entropy decoder 30 using the parameterized data Iinit of the relevant context (decoded in step E64).
[0169] More precisely, the entropy encoder 30 is adaptive, and each context is initialized with a probabilistic model defined by parameterized data Iinit associated with that context.
[0170] Alternatively, if the entropy decoder 30 uses a fixed probability model for each context, the control module 25, in step E66, configures each context available to the entropy decoder 30 using a probability model defined by the parameterized data Iinit associated with that context.
[0171] Next, the control module 25 applies the sequence of binary elements Fnn (received via the receiving unit 21) to the input of the entropy decoder 30, while parameterizing the entropy decoder 30 with the context identified by the context index C generated at the output of the global decoding network 29 (i.e., generated here at the output of the context-determining artificial neural network 40) (step E70).
[0172] During the first iteration (i.e., the first transition to step E70), the context index C is the initial context index C described above, for example, generated as a result of the expected activation of the global decoding network 29 during step E60. Alternatively, unless the global decoding network 29 generates a context index C (i.e., in this case, during the first iteration), the entropy decoder 30 may be parameterized with a predefined initial context stored in the storage unit 22 (in this case, step E60 does not involve applying a predefined value to the global decoding network 29 for the expected activation of the global decoding network 29).
[0173] Therefore, during subsequent iterations (i.e., during the subsequent transition to step E70 resulting from the loop described later in step E76), the entropy decoder 30 is parameterized in the context identified by the context index C generated by the global decoding network 29, if the representative value V decoded (by entropy decoding) during the previous transition to step E70 was applied to the input of the global decoding network 29 (during the previous transition to step E72).
[0174] Therefore, in step E70, the entropy decoder 30 generates a new representative value V (by entropy decoding of the binary element sequence Fnn).
[0175] In practice, a synchronization mechanism may be provided between the global decoding network 29 and the entropy encoder 30 (to ensure that the context index C to be used is available at the time the entropy decoding of the corresponding representative value V is performed). This synchronization mechanism includes, for example, pausing entropy decoding (by the entropy decoder 30) unless a new context index C is available at the output of the global decoding network 29 (i.e., more precisely at the output of the context-determining artificial neural network 40).
[0176] According to a first possible embodiment, the intermediate variable C' is stored in memory (e.g., in a register of the processor 24 or in the storage unit 22) and updated by the global decoding network 29 (i.e., more precisely by the context-determining artificial neural network 40). Entropy decoding (by the entropy decoder 30) is suspended unless a new context index C is provided by the global decoding network 29 (i.e., more precisely by the context-determining artificial neural network 40). As soon as the intermediate variable C' is updated in memory, entropy decoding of one (or a predetermined number of) representative values V is performed using the context defined by the intermediate variable C' (identical to the context index C generated by the global decoding network 29), and then entropy decoding is suspended again (until a further update of the intermediate variable C' to generate a new context index C in the output of the global decoding network 29, i.e., the output of the context-determining artificial neural network 40).
[0177] According to a second possible embodiment, the synchronization mechanism depends on the generation of a context index C by the overall decoding network 29 (i.e., more precisely by the context-determining artificial neural network 40) for the progress of entropy decoding (by the entropy decoder 30). In this second embodiment, information (e.g., the context index C itself or, as an alternative, dedicated synchronization information) is transmitted from the overall decoding network 29 (e.g., from the context-determining artificial neural network 40) to the entropy decoder 30 when a portion of the neural network (e.g., a layer of the neural network) that provides the context index C to be used is activated. Once this information is transmitted, a representative value V (or a predetermined number of representative values V) is decoded by entropy decoding (by the entropy decoder 30 parameterized by the context defined by the current context index C).
[0178] Furthermore, in the alternative embodiment described above, in which the context-determining artificial neural network 40 (and therefore the global coding network 29) generates a plurality of context indices C, each associated with a set of representative values V, the entropy coding of representative values V by the entropy encoder 30 is performed by always parameterizing the entropy encoder 30 in a context defined by the context indices C associated with the set containing the representative values V obtained by the entropy coding at that point.
[0179] For example, in the example described herein, where a representative value V is organized into a sequence of feature maps F, the entropy decoder 30 enables sequential (entropy) decoding of different feature maps F, and therefore the control module 25 can (always) parameterize the entropy decoder 30 in a context defined by the context index C associated with the feature map F being entropy-decoded.
[0180] Next, the processor 24 (here directly at the output of the entropy encoder 30 or alternatively via the control module 25) can, in step E72, apply (i.e., present) the representative value V to the artificial neural network (overall decoding network) 29 implemented by the parallel processing unit 26, such that on the one hand, these data are processed by a decoding process using the decoding artificial neural network 28 at least partially, and on the other hand, a (new) context index C is generated at the output of the context determination artificial neural network 40.
[0181] In the example described here, the decoding neural network 28 receives a representative value V as input and generates an output representation I of the encoded content that is suitable for playback on an audio or video playback device. That is, the representative value V (here in the form of a feature map F) is applied to the input layer of the decoding artificial neural network 28, and the output layer of the decoding artificial neural network 28 generates the above-mentioned representation I of the encoded content. Therefore, in the case of video content (including an image or a sequence of images), the artificial neural network 28 generates at least one matrix representation I of the image as output (i.e., on its output layer).
[0182] As described in the explanation of Figure 1, the association between the elements of the feature map F (i.e., representative values V) and the input nodes (or input layer nodes) of the decoding artificial neural network 28 is predefined.
[0183] In certain embodiments, in order to process a specific representative value V (for example, corresponding to a block or image), the decoding artificial neural network 28 may receive as input at least some of the data generated at the output of the artificial neural network 28 while processing previous data (here, the previous representative value V) corresponding to a preceding block or preceding image. In this case, the process proceeds to step E74, in which the data generated at the output of the decoding artificial neural network 28 is reinjected into the input of the decoding artificial neural network 28.
[0184] Next, in step E76, the control module 25 determines whether the processing of the binary element sequence Fnn has been completed.
[0185] In the case of a negative decision (N), this method loops back to step E70 to perform entropy decoding of the subsequent portion of the sequence of binary elements Fnn and applies the other representative value V (generated by this entropy decoding) to the decoded artificial neural network 28.
[0186] If the decision is positive (P), this method terminates at step E78.
Claims
1. A method for decoding a sequence of binary elements (Fnn), - Step (E72) of applying a previously decoded value (V) to the input of the artificial neural network (29), - As a result of the above application, the step of generating a context index (C) in the output of the artificial neural network (29), - Step (E70) of obtaining a new decoded value (V) by applying a portion of the sequence of binary elements (Fnn) to an entropy decoder (30) parameterized by the context identified by the generated context index (C), A method that includes this.
2. The decoding method according to claim 1, further comprising the step (E72) of applying the new decoded value (V) to the input of the artificial neural network (29) such that the output of the artificial neural network (29) generates data (I) representing audio or video content.
3. The decoding method according to claim 1 or 2, wherein the entropy decoding process by the entropy decoder (30) is paused unless a new context index (C) is generated in the output of the artificial neural network (29).
4. The decoding method according to any one of claims 1 to 3, wherein the sequence of binary elements (Fnn) is included in a data stream further including information (I1) indicating a set of contexts available for use within the entropy decoder (30).
5. The decoding method according to claim 4, wherein the information (I1) indicates the number of contexts available within the entropy decoder (30).
6. A decoding method according to any one of claims 1 to 5, comprising the step (E66) of initializing each context available in the entropy decoder (30) using parameterized data (Iinit) contained in a data stream containing the sequence of binary elements (Fnn).
7. The decoding method according to any one of claims 1 to 6, wherein the artificial neural network (29) is implemented by a processing unit (26), and the method includes the step (E60) of configuring the processing unit (26) according to data contained in a data stream including the sequence of binary elements (Fnn).
8. The decoding method according to any one of claims 1 to 7, wherein the artificial neural network (29) is implemented by a parallel processing unit (26) designed to perform multiple operations of the same type in parallel at a given time.
9. The decoding method according to claim 8, wherein the entropy decoder (30) is implemented by a processor (24) separate from the parallel processing unit (26).
10. A computer program comprising instructions executable by a processor, and designed to implement the decoding method described in claim 1 when the instructions are executed by the processor.
11. An electronic device (20) for decoding a sequence of binary elements (Fnn), - An artificial neural network (29) designed to take a previously decoded value (V) as input and generate a context index (C) as output. - Entropy decoder (30) designed to receive the sequence of binary elements (Fnn) as input, - A control module (25) designed to parameterize the entropy decoder (30) in the context identified by the generated context index (C) so as to obtain a new decoded value (V) at the output of the entropy decoder (30), Electronic device (20) including.
12. The electronic decoding apparatus according to claim 11, further comprising a synchronization mechanism that can temporarily suspend the entropy decoding process by the entropy decoder (30) unless a new context index (C) is generated in the output of the artificial neural network (29).
13. The electronic decoding apparatus according to claim 11 or 12, comprising a processing unit (26) capable of implementing the artificial neural network (29).
14. The electronic decoding apparatus according to claim 13, wherein the control module (25) is designed to configure the processing unit (29) in accordance with data (R) contained in a data stream including the sequence of binary elements (Fnn).
15. The electronic decoding apparatus according to claim 13 or 14, comprising a processor (24) which is separate from the processing unit (26) and is designed to implement the entropy decoder (30).