Concurrent decoding
By processing portions of encoded video data independently and in parallel, the method reduces memory bandwidth and computational load, addressing inefficiencies in existing video decoding technologies and enhancing decoding speed and efficiency.
Patent Information
- Application Number
- PCT/GB2024/051838
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-07-14
- Filing Date
- 2024-07-12
- Publication Date
- 2025-01-23
AI Technical Summary
Existing video decoding technologies, such as the Low Complexity Enhancement Video Codec (LCEVC), require significant memory bandwidth and perform numerous calculations, which can be inefficient and resource-intensive.
The method involves processing a portion of the encoded video data entirely before or in parallel to decoding other portions, reducing memory bandwidth and calculations by storing processed data in a cache and skipping unnecessary processing steps based on run-length encoded data analysis.
This approach reduces memory bandwidth usage and decreases the overall computational load, allowing for faster decoding speeds and more efficient use of resources while maintaining compliance with standardized hierarchical coding schemes.
Smart Images

Figure GB2024051838_23012025_PF_FP_ABST
Abstract
Description
[0001]CONCURRENT DECODING FIELD OF THE INVENTION This disclosure relates to a method for decoding video data. In particular, but not exclusively, this disclosure relates to advantageous implementations of standardised hierarchical coding schemes. BACKGROUND The decoding technology for the Low Complexity Enhancement Video Codec, LCEVC, is set out in the Draft Text of ISO / IEC FDIS 23094-2 as published at Meeting 129 of MPEG in Brussels in January 2020, as well as the Final Approved Text and WO 2020 / 188273 A1, each of which is incorporated by reference. Enhancement codecs, such as LCEVC, have been described in documents such as the LCEVC standard Draft Text of ISO / IEC FDIS 23094-2 as published at Meeting 129 of MPEG in Brussels in January 2020, as well as the Final Approved Text and WO 2020 / 188273 A1. A working implementation of this standard is found in the LCEVC Test Model (‘LTM’), which decodes data in accordance with the decoding processes described in the LCEVC standard document. The standard describes a decoding process comprising multiple operations such as entropy decoding, dequantization, and inverse-transformation. The LTM describes a process of taking the encoded data, processing the entirety of the data with a first set of operations, and then processing the output of that with a second set of operations, and so forth. In this way, an entire plane (or planes) of data are processed by a single operation before being fed into a further operation. The output of each operation may comprise one or more data structures representing a plane of video. These data structures may be stored in memory ready for access by a subsequent operation. For example, an entire plane(s) of quantised data is dequantized to create a plane of dequantized data. The plane(s) of dequantized data is then inverse transformed to generate a plane of residuals. The plane of residuals is then applied to an initial reconstructed signal. A compliant decoder is created in this manner. The Inventors have determined that such a decoder can be improved upon. In particular, embodiments are described that have a lower impact on memory bandwidth than, for example, the LTM. In particular, embodiments are described that can produce a compliant decoded bitstream whilst performing fewer calculations that, for example, the LTM. Described embodiments comprise features that synergistically produce both of these technical effects. Rather than following the general teachings of the standard by completing an operation of the decoding process on the entirety of (e.g. a frame of) data before commencing a next operation, embodiments of the invention process a portion of the encoded data ‘entirely’ before (or in parallel to) decoding other portions of the encoded data. In this way memory bandwidth is reduced (compared to the LTM) because only data relating to the portion is processed at a given time. In more detail, in the LTM, a relatively large amount of data (e.g. data relating to an entire plane) is transferred in and out of memory (e.g. a buffer) whilst the entire plane is being processed by an operation. In contrast, embodiments of the invention process only a ‘portion’ of the data and therefore if the portion is relatively small (e.g. a single coding or transform unit, multiple transform units, and so forth) then the data relating to the portion data can be stored in a cache (e.g., a processor cache), providing increased decoding speed due to the proximity of the cache to the processing unit. Even if the data is not stored in a cache, overall memory bandwidth is still reduced and thus advantages are provided. In certain examples described herein, the operation discussed above that is performed on the portion of encoded data may be embodied within a processing thread. Hence, concurrent processing of multiple threads may provide speed ups and concurrency. For example, on a multi-core Central Processing Unit (CPU), each core may processing one thread covering the entire decoding processing for a particular coding unit (e.g., 2x2 or 4x4); once a particular thread is finished with a particular coding unit it may either be terminated and respawned or reset (e.g., reinitialised with encoded data associated with a next coding unit). This process may be particularly efficient if the residual data is sparse, as this will lead to sparse coefficients and many portions of encoded data that are effectively 0 and do not need to be applied. In this manner, the number of threads to be executed to update a preliminary version of a frame (e.g., as per one of the levels in LCEVC) may be less than the number of coding units present in a frame (e.g., if the frame area is tiled by coding units). As may be appreciated, references to frame herein may be taken as a reference to one of one or more colour planes making up a frame. In this description the term “thread” is used as per the art of computer science, e.g. to refer to a smallest sequence of programmed instructions that can be managed independently by a scheduler (e.g., a scheduler that forms part of an operating system). As each thread typically has an associated portion of random access memory assigned to it (e.g., based on the variables that are to be processed by the thread), loads to and from memory may be optimised using the present approach as throughout the decoding sequence data may be small enough to fit within processor cache thus reducing memory accesses as different versions of the data are generated during the decoding sequence. This is a departure from other teachings relating to other coding standards. In many coding standards, there are coding dependencies between different units of encoded data (i.e. intra-coding). However, some coding standards such as LCEVC, units can be decoded independently of other units, in other words, there is no intra compression. This lack of dependency allows a portion of encoded data to be fully processed (i.e. decoded, and in embodiments decoded and applied) without the need to decode other portions of the encoded data (e.g., where the portions may correspond to spatial areas of a decoded picture). In this way, embodiments take a portion of the encoded data (e.g. corresponding to a area of an image, such as the top right, top left or other area) and process this portion all the way to ‘completion’ before (or in parallel to) starting work on decoding a different portion of the encoded data. Completion may be full decoding, which may include applying decoded residuals / enhancements to a base image. We note that both of the portions in embodiments relate to a same frame (i.e. rather than the portions relating to different frames). One of the decoding operations may comprise applying an inverse transform to multiple planes of data (e.g.4 or 16) to generate a single plane of residual data. Each plane may represent an element in a vector that is the result of a matrix transformation applied to a flattened area of pixels with associated residual values (e.g., a 2x2 area of residual values may be flattened into a 4x1 vector and then multiplied by a matrix such as a 4x4 Hadamard matrix). Each plane of the ‘encoded’ (in this example transformed data, also referred to as coefficients, i.e. prior to being inverse transformed) may be run length encoded. This initially may pose a problem to embodiments that process only a portion of the encoded data because each plane of coefficients may be run length encoded differently. For example, in LCEVC a 4x4 or 16x16 Hadamard transform is used that produces 4 or 16 planes of coefficients. The coefficients for the 4x4 transform may be represented as Average, Horizontal, Vertical and Diagonal directional components (A, H, V, D). Each of these directional components may be encoded as a separate plane or “surface” and the distribution of transformed residual values may vary according to the directional component (e.g., an average or adjusted average component may have more runs of 0). This means that it may not be straightforward to ensure that corresponding portions (e.g. corresponding to a top left of a plane, for example) of the planes of data are being processed together. One way this can be solved is by analysing each of the run lengths for each plane and selecting portions of encoded data based on the analysing. In particular, the run lengths for each plane (e.g. of coefficients) can be tracked, one of the planes will have a lowest (or joint lowest) run length at a given point of the encoded data, this conceptually is a minimum distance that can be ‘jumped’ forward before there is more (non-zero) data. If the run-length encoded data is provided as a raster sequence of values and run-lengths for each plane, then the minimum runs across the planes may be computed. Embodiments may make use of this by essentially skipping out processing portions of a plane, this operation saving advantage is possible because of the way that embodiments process portions of encoded data from start to finish. For example, 2x2 coding units with residual values of 0 (e.g., [0,0,0,0]) would have transformed coefficient values of 0 as well (i.e., [0,0,0,0]). This can lead to multiple coinciding runs of 0 in the coefficient planes. The processing operation for such coding units can effectively be skipped, as they will produce no residuals to add to a reconstructed image. This may also be thought of in terms of set intersections across the multiple surfaces that represent the different coefficients. For example, if a plane (e.g. residual plane, and so forth) has a non-zero value in the top left portion of the plane, then embodiments that are processing an encoded rendition of the plane would process the portion of encoded data corresponding to the top left portion to ‘completion’ (e.g. until the portion is decoded and / or applied to a base image). Embodiments would then determine the ‘next’ portion of encoded data to be processed. However, if the ‘next’ portion(s) (e.g. a portion adjacent to the top left of the plane) correspond to zero values (e.g. as determined by an analysis of the encoded data, such as an analysis of run length indicators in the encoded data), then embodiments may ‘skip’ processing such a ‘next’ portion and move on to a further ‘next’ portion of encoded data. The skipped portion can be skipped without impacting a final output image because, based on analysis of the run length information, it has been determined that even if the portion was fully processed (e.g. decoded and or applied) then all that would be obtained would be ‘zero’ data - which is not going to improve a final output image. This can ultimately reduce the amount of work (e.g. calculations, memory reads, and so forth) that are performed by a decoder. In methods such as that taught by the LTM, this cannot be taken advantage of because the LTM teaches processing an entire plane before moving onto the ‘next’ operation of decoding, and thus work cannot be ‘skipped’ because an entire / completed plane is required before moving onto the next operation. If the encoded data is a representation of enhancement data (e.g. residuals), then once one or more portions of encoded data are processed (e.g. decoded) they can be applied to a base image. This can be done for a (e.g. each) portion straight after the portion is decoded (i.e. before the processing of the next portion of encoded data has commenced), e.g. by ‘pixel touching’, adjusting, editing a base image stored in memory. Alternatively, the processed (e.g. decoded) portions of encoded data can be stored as an intermediate representation and then the intermediate representation is used to enhance the base, for example once the entirety of the encoded (frame of) data has been processed (e.g. decoded). An intermediate representation of the processed (e.g. decoded) portions of encoded data can be seen as a ‘command buffer’, this is because the intermediate representation are representations of the enhancement data that are obtained (and stored – hence ‘buffer’) over time as portions of encoded data are processed. In embodiments, an intermediate representation comprises a coordinate (i.e. a reference to a position in a frame) and a (residual) value to adjust a pixel of a base image (e.g. +4 or -10). This may be applied in parallel to all the colour planes of a frame. This may be advantageous because if an enhancement frame only enhances a small number of pixels (e.g.2 pixels) then an intermediate representation only needs to store two ‘instructions’, this is in contrast to if the enhancement frame was stored as a plane which could involve storing thousands of values (e.g. if the plane is 1080p). The concept of intermediate representations works synergistically with embodiments, for example: with intermediate representations, it is not necessary to build an entire plane, therefore, it is possible to ‘skip’ work (as described elsewhere in this document) because a value is not needed to be obtained for every element of the plane. Synergistically, in embodiments, each (e.g. fully processed) ‘portion’ may correspond to a (e.g. single) intermediate representation. Embodiments thus generally refer to frame by frame processing. In embodiments, all ‘portions’ of encoded data relate to a single frame of data. This thus distinguishes the methods from methods that may processes a portion(s) of a first frame fully before moving onto a ‘next’ portion that relates to a second frame. SUMMARY OF INVENTION In particular, we describe a method of decoding a video signal. The method may comprise performing operations on a portion of encoded data. The portion of data may be a representation of an area of a residual plane. Accordingly, a first aspect of the invention provides a method of decoding an entropy-encoded signal, the method comprising: separating at least a part of the entropy encoded signal into a plurality of surfaces, each surface comprising entropy encoded data; determining a first offset at which a datum of the entropy encoded data of one or more of the surfaces is a non-null value; and processing, by entropy decoding, the encoded data starting at the first offset in each of the surfaces to create a decoded portion of the entropy encoded signal. In this way, the invention provides an improved method for concurrently reading multiple surfaces, where the surfaces may have sparse regions. When reading the multiple surfaces, the method involves determining a location at which one of the surfaces has a non-null value. This allows for the reading and processing of a “run” (a consecutive series of data elements with the same value) of null values to be avoided, improving performance. It can be important to start processing all surfaces when even one has a non-null value, as the values stored in each surface may interact in arbitrary ways. Herein, the “null” values may be interpreted as a preset value, or a zero value. The null values may directly represent that no processing is needed, or they may be a value denoting a default case where the type of processing required may be assumed. The null value may be a single value or may be a member of a set of values, all of which are considered null. The null value may be predetermined or may be specified dynamically in an entropy encoded signal or in a side channel. Correspondingly, a “non-null” value, would be the opposite to a null value. This is intended to be a value that may directly represent that processing is needed. In some examples, the method may further comprise determining a second offset at which a datum of the entropy encoded data of each of the surfaces is a null value; wherein the entropy decoding is entropy decoding of the entropy encoded data between the first and second offsets in each of the surfaces. In this case, the performance of the method is further increased, by processing only the portion of the surfaces between the first and second offsets, and not processing runs of null values before the first offset and after the second offset. If the entropy-encoded signal has a plurality of sparse regions, it may be beneficial to reduce the processing load by determining multiple relevant regions of the signal. Accordingly, in some examples, the method may further comprise determining a plurality of pairs of first and second offsets; wherein the processing is processing of the encoded data found between each of the first and second offsets of the pairs of first and second offsets. This may further increase the performance of the method, by allowing for multiple null regions in the signal to be avoided. Of course, in some cases, it may be advantageous to not transmit or store runs of null data. Accordingly, an encoding or compression scheme may be used which is capable of reducing the amount of data required to represent a signal with these features. Therefore, in some cases, the entropy encoding of the entropy encoded signal comprises run length encoding, and the entropy decoding comprises run length decoding. In this case, the encoded signal may include a plurality of run length indications. This permits the method to efficiently determine the location of non-null values. Further, the method may require that the encoded data includes a plurality of encoded coefficients, each of the encoded coefficients being paired with a run length indication of the plurality of run length indications. By pairing the coefficients and run length indications one-to-one, the process of determining the location of non-null values is simplified. Accordingly, the method may further require that the determining a first offset comprises determining the location of a first non-null encoded coefficient. Similarly, in order to accurately compare the location of the non-null values in multiple different surfaces, it may be advantageous for the step of determining a first offset to comprise at least partially decoding the run length encoding of the encoded data. Alternatively or in addition, the entropy encoding may include Huffman coding, and the entropy decoding may correspondingly include Huffman decoding. The use of a Huffman coding scheme may allow the signal to be compressed in a lossless fashion, allowing for less bandwidth and storage to be used. Similarly, an arithmetic coding, or asymmetric numeral system, or other coding, encoding or compression scheme, may be used instead of or in conjunction with a Huffman coding scheme towards the same end. An advantageous use of this method may be found in the decoding of video signals, which can be separable into multiple surfaces for processing, and accordingly, the entropy encoded signal may be an entropy encoded video signal. Of course, the method may be equally applied to non-video signals, such as still images, photographic signals, or signals representing arbitrary data. In some video codecs, such as LCEVC, units can be decoded independently of other units — in other words, there is no intra compression. This is a departure from other teachings relating to other coding standards. In many coding standards, there are coding dependencies between different units of encoded data (i.e. intra- coding) and thus do not allow for such concurrent or parallel processing during parts of the decoding process. This separable nature allows for portions of the signal can be separated into distinct surfaces and processed concurrently. Accordingly, the entropy encoded signal may be an LCEVC-compliant signal. Further, the method may require that the decoded portion comprises one or more arrays of coefficients, further comprising processing the decoded portion to produce enhancement data. Such arrays of coefficients may be sparse, containing runs of null values, and accordingly, the use of the claimed method may improve the performance of the production of enhancement data. This enhancement data may be applied to a base signal in order to produce an enhanced signal, and accordingly, the method may further comprise enhancing a base dataset using the enhancement data. In this case, the processing of the decoded portion may include performing an inverse transform on the arrays of coefficients. More specifically, in some examples, the processing of the decoded portion may include writing the array of coefficients to a residual representation, the residual representation including residual values, and the enhancement data comprises the residual values. This allows the flexibility of constructing the residual values from the coefficients. Further, the residual representation may include a coordinate associated with each residual value, permitting an efficient, specific addressing of particular co-ordinates, reducing the bandwidth required for the signal. Alternatively or in addition, the coefficients may not be directly residual values themselves. Accordingly, the method may further comprise writing the array of coefficients to a buffer or operation list, or residual representation. In this way, the coefficients could represent specific operations, for example, operations in a stack or register machine, or operations specified in a standard, such as the LCEVC standard. In an example, the coefficients correspond to commands, and the enhancement data therefore comprises commands written to a command buffer. These commands may be pre-specified in a standard or may be dynamically specified, including being specified in the format of the signal. Optionally, the method may further comprise receiving the entropy encoded signal. The method may comprise performing the method within a single thread. The single thread may have a first memory load. The method may comprise performing, using a further thread, said operations on another portion of the encoded data The method may comprise performing, using the single further thread with a different memory load, said operations on another portion of the encoded data. The method may comprise, after completion of said method, commencing and / or performing said operations on another portion of the encoded data using said thread. The operations may comprise one or more of: entropy decoding; Huffman decoding; run length decoding; dequantization; inverse transformation. The operations may comprise one or more of: generating and storing a command to apply residuals to a base image; and applying residuals to an output plane. The output plane may be a base image or a buffer. The method may be performed on a single-core or multi-core central processing unit (CPU), or equally, by being implemented in hardware, or performed by a field- programmable gate array (FPGA), or similar device. The area may be one or more of: a transform unit associated with the encoded data; a coding unit associated with the encoded data; a transform unit used by an encoding method used to generate the encoded data; a coding unit used by an encoding method used to generate the encoded data. The portion of encoded data (or an intermediate representation of the portion of encoded data, wherein the intermediate representation is an output of the portion of encoded data following one or more of the operations) may comprise multiple planes of data. The method may comprise analysing a run length indicator for each plane. The method may comprise determining the further portion based on the analysis. The determining may comprise skipping one or more bits of the encoded data. The encoding method may be such that the coding or transform units are decodable independently of other coding or transform units. The encoding method may be such that the coding or transform units are decodable independently of a decoding of the base image. Further, we describe a device (e.g. a decoder) adapted to perform the described method. According to a second aspect of the invention, such a device is provided, being an apparatus configured to decode an entropy encoded signal, the apparatus being configured to: separate at least a part of the entropy encoded signal into a plurality of surfaces, each surface comprising entropy encoded data; determine a first offset at which a datum of the entropy encoded data of one or more of the surfaces is a non-null value; and process, by entropy decoding, the encoded data starting at the first offset in each of the surfaces to create a decoded portion of the entropy encoded signal. The apparatus may be configured to receive signals encoded with run length encoding, wherein the entropy encoded signal is encoded with run length encoding and the entropy decoding comprises run length decoding. In such a case, the encoded data may include a plurality of run length indications, and the encoded data may further include a plurality of encoded coefficients, each of the encoded coefficients being paired with a run length indication of the plurality of run length indications. Such an apparatus may be configured such that the determining a first offset comprises determining the location of a first non-null encoded coefficient. The apparatus may be further configured such that the determining a first offset comprises at least partially decoding the run length encoding of the encoded data. Such an apparatus may be a decoder. Such a decoder may be configured to decode the encoded data and to combine an output of said decoding with a decoding of the base encoding to generate a reconstruction of the input video. The apparatus may be further configured to perform any other of the methods described herein, which, for brevity, are not repeated. According to a third aspect of the invention, there is provided a computer program comprising instructions which, when the program is executed by a computer, cause the computer to carry out the method described herein. According to a fourth aspect of the invention, there is provided a non-transitory computer-readable medium comprising the aforementioned computer program. It should be understood that any discussion above specifically attributed to any first embodiment may be applied equally to any second embodiment, where appropriate. BRIEF DESCRIPTION OF DRAWINGS One or more examples will now be described with reference to the accompanying drawings, in which: Figures 1 and 2 are schematic diagrams respectively showing an example multi- layer encoder and decoder configuration; Figure 3 is a schematic diagram showing certain data processing operations performed by an example multi-layer encoder; Figure 4 is a schematic diagram showing further certain data processing operations performed by an example multi-layer encoder; Figure 5 is a schematic diagram showing certain data processing operations performed by an example multi-layer decoder; Figure 6 is a schematic diagram showing further certain data processing operations performed by an example multi-layer decoder; Figure 7 is a flow diagram showing an example method of decoding an entropy encoded signal; and Figure 8 is a schematic diagram of an example system configured to implement the example method. DETAILED DESCRIPTION Certain examples described herein act to encode or decode a signal into a set of one or more data streams, i.e. data that changes over time. Certain examples relate to an encoder or encoding process that generates a set of streams including at least an enhancement stream, where the enhancement stream provides enhancement to a base stream. The base stream may comprise an encoding with MPEG standards such as AVC / H.264, HEVC / H.265, etc. as well as algorithms such as VP9, AV1, and others. The enhancement stream may comprise an LCEVC stream. It is worth noting that the base stream may be decodable by a hardware decoder while the enhancement stream may be suitable for a software processing implementation with suitable power consumption. Certain examples provide an encoding structure that creates a plurality of degrees of freedom that allow great flexibility and adaptability in many situations, thus making the coding format suitable for many use cases including over-the-top (OTT) transmission, live streaming, live Ultra High Definition (UHD) broadcast, and so on. It also provides for low complexity video coding. In certain examples, a specific enhancement encoding scheme may be used. In one such case, the input video may be received at a first spatial resolution (e.g., HD or UHD) and the method may comprise a number of steps on a frame-by- frame basis. To start, a current frame of the input video may be downsampled to create a downsampled frame at a second spatial resolution that is lower than the first spatial resolution. For example, the second spatial resolution may be HD or Standard Definition - SD - content for respective original UHD or HD content. As part of the method, the base encoding of the downsampled frame may be instructed using the base encoder to create a base encoded stream. For example, an enhancement encoder may call an operating system encoding method and / or execute a defined executable file representing a registered and selected base encoder. This instructing may comprise passing the base quality factor to the base encoder, e.g. as part of a command line parameter or base configuration file. Following this, a reconstruction of the current frame at the second spatial resolution is reconstructed from a decoding of the base encoded stream (i.e., a decoding of the current frame in the base encoded stream, which may depend on other encoded frames if motion compensation is applied). Then, an enhancement encoder computes residual data for a first sublayer of the plurality of sublayers as a difference between the reconstruction of the current frame at the second spatial resolution and the downsampled current frame. For example, this may comprise the process of constructing an LCEVC first sublayer. Then, the residual data for the first sublayer is encoded using a quantisation step width to generate encoded residual data for the first sublayer. Turning briefly to this quantisation step width (SW), it may be computed using a function based on the form: SW = a + (1-a)*Q_factor^(-1 / 2), where a is determined empirically and Q_factor is a modulated quantisation (Q) factor. Different Q factors may be computed from the modulated Q factor for each sublayer. In another case, the step widths may be computed as a linear or power function with custom multipliers and constant factors. Caps and / or clamps may also be added to improve performance. The modulated Q factor may be computed by a mapping function. In some examples, this may be computed as set out in PCT / GB2023 / 053320, which is incorporated by reference, making use of the disclosed mapping function, empirical lookup tables, base quality factor, initial encoding quality factor, base factor calculator and / or enhancement quality factor. The mapping function may comprise a non-linear function where the parameters from the empirical tables set a multiplication coefficient and an exponential for the function. In various examples, the mapping function is configured to output the Q factor using a set of parameters and / or coefficients, such as a set of parameters and / or coefficients retrieves, for example using a base quality factor for a set of empirical lookup tables. In one case, the mapping function may first compute a modified base quality factor from a received base quality factor. This may comprise applying corrections or modulation for one or more of the following: resolution of the base and / or enhancement encoding, sharpness filtering parameters, and frame rate. The mapping function may then compute the Q factor based on the modified base quality factor. In one case, the mapping function may apply different computations for different ranges for an input encoding quality factor. For example, at or above a threshold computed based on the modified base quality factor, the Q factor may be set as a constant. Below said threshold, the Q factor may be computed as a non-linear function of the modified base quality factor and the encoding quality factor. In this case, coefficients including a multiplier and a power may be retrieved from a look-up table for a specified base encoder based on the modified base quality factor value. For example, below the threshold (if applied), the Q factor may be computed as a linear function of the modified base quality factor and the encoding quality factor as multiplied by the multiplier, with the result of the linear function being then raised to the power. The linear function may also comprise a framerate adjustment term. As noted above, in certain cases, constraints or caps on the modified base quality factor and / or the Q factor may be applied (e.g., applying minimum or maximum clamping). Returning to the method, a decoding of the encoded residual data for the first sublayer is then combined with the reconstruction of the current frame to generate a corrected reconstruction of the current frame. The corrected reconstruction of the current frame is upsampled to the first spatial resolution and residual data for a second sublayer of the plurality of sublayers is computed as a difference between the upsampled corrected reconstruction of the current frame and the current frame. Lastly, the residual data for the second sublayer using the quantisation step width for the second sublayer as described above to generate encoded residual data for the second sublayer. The enhancement encoder thus outputs an encoded enhancement stream. The encoded enhancement stream may be multiplexed with the encoded base stream that is output by the base encoder or they may be used as separate streams (e.g., stored and / or transmitted as appropriately configured bit streams). More detail of the process of generating this particular enhancement encoding is described with reference to Figures 1 to 3. In certain variations, the method is applied on a frame-by-frame basis and the base encoding parameters comprise one or more of: a frame type; a frame size in bits; and a quantisation metric for the frame. The frame type may indicate one of: an Intra (I) frame, a Predicted (P) frame, and a Bidirectional (B) frame. The quantisation metric may comprise an average quantisation parameter (QP) for the frame. The quantisation metric may alternatively comprise QPs for different regions of interest. In certain cases, mapping the encoding quality factor and / or mapping the base encoding parameters comprises using one or more look-up tables. For example, these look-up tables may store function parameters or mapped output values. Interpolation and rounding may be used where desired depending on implementation. In one particular variation, mapping the encoding quality factor and / or mapping the base encoding parameters comprises using one or more trained neural network architectures. For example, training samples comprising tuples of base encoding parameters and an enhancement quantisation factor (e.g., a normalised scalar or integer output) may be generated and these may be used to train a feed- forward neural network with at least one hidden layer using off-the-shelf backpropagation methods (e.g., as applied by the PyTorch or Tensorflow software libraries). The feed-forward neural network may then be used with the trained parameters in an inference mode to predict the enhancement quantisation factor from the input base encoding parameters. A similar method may be applied with training data in the form of encoding quality factors and base quality factors. In one case, mapping the encoding quality factor to the base quality factor comprises: determining a base encoding type, the base encoding type being selected from a plurality of different available base encoding types based on the base encoder used for the base encoding; and configuring a mapping for the determined base encoding type. The described methods may be used to encode or decode video data. For example, an encoder or a decoder may be adapted to perform the methods as described herein. In a software implementation, a computer program may be provided comprising instructions which, when the program is executed by a computer, cause the computer to carry out the methods as described herein, i.e. when executed by one or more processors of a computing device. The computer program may be stored upon a non-transitory computer-readable medium. The described methods and / or apparatus may be used to generate an enhancement bit stream that is encoded using the enhancement encoding parameters as computed by the described methods and / or apparatus. A decoder may be provided that is configured to decode this enhancement bit stream and to combine an output of said decoding with a decoding of the base encoding to generate a reconstruction of the input video. Certain general information relating to example enhancement coding schemes will now be described. This information provides examples of specific multi-layer coding schemes. It should be noted that examples are presented herein with reference to a signal as a sequence of samples (i.e., two-dimensional images, video frames, video fields, sound frames, etc.). For simplicity, non-limiting examples illustrated herein often refer to signals that are displayed as 2D planes of settings (e.g., 2D images in a suitable colour space), such as for instance a video signal. In an example case, the signal comprises a video signal. An example video signal is described in more detail with reference to Figure 3. Although examples are described specifically in relation to video, the approaches may also be used for other forms of media such as audio or subtitle data. The terms “picture”, “frame” or “field” are used interchangeably with the term “image”, so as to indicate a sample in time of the video signal: any concepts and methods illustrated for video signals made of frames (progressive video signals) can be easily applicable also to video signals made of fields (interlaced video signals), and vice versa. Despite the focus of examples illustrated herein on image and video signals, people skilled in the art can easily understand that the same concepts and methods are also applicable to any other types of multidimensional signal (e.g., audio signals, volumetric signals, stereoscopic video signals, 3DoF / 6DoF video signals, plenoptic signals, point clouds, etc.). Although image or video coding examples are provided, the same approaches may be applied to signals with dimensions fewer than two (e.g., audio or sensor streams) or greater than two (e.g., volumetric signals). In the description the terms “image”, “picture” or “plane” (intended with the broadest meaning of “hyperplane”, i.e., array of elements with any number of dimensions and a given sampling grid) will be often used to identify the digital rendition of a sample of the signal along the sequence of samples, wherein each plane has a given resolution for each of its dimensions (e.g., X and Y), and comprises a set of plane elements (or “element”, or “pel”, or display element for two-dimensional images often called “pixel”, for volumetric images often called “voxel”, etc.) characterized by one or more “values” or “settings” (e.g., by ways of non-limiting examples, colour settings in a suitable colour space, settings indicating density levels, settings indicating temperature levels, settings indicating audio pitch, settings indicating amplitude, settings indicating depth, settings indicating alpha channel transparency level, etc.). Each plane element is identified by a suitable set of coordinates, indicating the integer positions of said element in the sampling grid of the image. Signal dimensions can include only spatial dimensions (e.g., in the case of an image) or also a time dimension (e.g., in the case of a signal evolving over time, such as a video signal). In one case, a frame of a video signal may be seen to comprise a two-dimensional array with three colour component channels or a three-dimensional array with two spatial dimensions (e.g., of an indicated resolution – with lengths equal to the respective height and width of the frame) and one colour component dimension (e.g., having a length of 3). In certain cases, the processing described herein is performed individually to each plane of colour component values that make up the frame. For example, planes of pixel values representing each of Y, U, and V colour components may be processed in parallel using the methods described herein. Certain examples described herein use a scalability framework that uses a base encoding and an enhancement encoding. The video coding systems described herein operate upon a received decoding of a base encoding (e.g., frame-by- frame or complete base encoding) and add one or more of spatial, temporal, or other quality enhancements via an enhancement layer. The base encoding may be generated by a base layer, which may use a coding scheme that differs from the enhancement layer, and in certain cases may comprise a legacy or comparative (e.g., older) coding standard. Figure 1 to 3 show a spatially scalable coding scheme that uses a down-sampled source signal encoded with a base codec, adds a first level of correction or enhancement data to the decoded output of the base codec to generate a corrected picture, and then adds a further level of correction or enhancement data to an up-sampled version of the corrected picture. Thus, the spatially scalable coding scheme may generate an enhancement stream with two spatial resolutions (higher and lower), which may be combined with a base stream at the lower spatial resolution. In the spatially scalable coding scheme, the methods and apparatuses may be based on an overall algorithm which is built over an existing encoding and / or decoding algorithm (e.g., MPEG standards such as AVC / H.264, HEVC / H.265, etc. as well as non-standard algorithms such as VP9, AV1, and others, furthermore, a hierarchical coding scheme may serve as a ‘base’ to a further enhancement layer) which works as a baseline for an enhancement layer. The enhancement layer works accordingly to a different encoding and / or decoding algorithm. The idea behind the overall algorithm is to encode / decode hierarchically the video frame as opposed to using block-based approaches as done in the MPEG family of algorithms. Hierarchically encoding a frame includes generating residuals for the full frame, and then a reduced or decimated frame and so on. Figure 1 shows a system configuration for an example spatially scalable encoding system 500. In this sense, figure 1 shows an encoding system that may generate the aforementioned encoded data. The encoding process is split into two halves as shown by the dashed line. Each half may be implemented separately. Below the dashed line is a base level and above the dashed line is the enhancement level, which may usefully be implemented in software. The encoding system 500 may comprise only the enhancement level processes, or a combination of the base level processes and enhancement level processes as needed. The encoding system 500 topology at a general level is as follows. The encoding system 500 comprises an input “I” for receiving an input signal 501. The input I is connected to a down-sampler 505D. The down-sampler 505D outputs to a base encoder 520E at the base level of the encoding system 500. The down-sampler 505D also outputs to a residual generator 510-S. An encoded base stream is created directly by the base encoder 520E, and may be quantised and entropy encoded as necessary according to the base encoding scheme. The encoded base stream may be the base layer as described above, e.g. a lowest layer in a multi-layer coding scheme. Above the dashed line is a series of enhancement level processes to generate an enhancement layer of a multi-layer coding scheme. In the present example, the enhancement layer comprises two sub-layers. In other example, one or more sub- layers may be provided. In Figure 1, to generate an encoded sub-layer 1 enhancement stream, the encoded base stream is decoded via a decoding operation that is applied at a base decoder 520D. In some examples, the base decoder 520D may be a decoding component that complements an encoding component in the form of the base encoder 520E within a base codec. In other examples, the base decoding block 520D may instead be part of the enhancement level. Via the residual generator 510-S, a difference between the decoded base stream output from the base decoder 520D and the down-sampled input video is created (i.e., a subtraction operation 510-S is applied to a frame of the down-sampled input video and a frame of the decoded base stream to generate a first set of residuals). Here, residuals represent the error or differences between a reference signal or frame and a desired signal or frame. The residuals used in the first enhancement level can be considered as a correction signal as they are able to ‘correct’ a frame of a future decoded base stream. This is useful as this can correct for quirks or other peculiarities of the base codec. These include, amongst others, motion compensation algorithms applied by the base codec, quantisation and entropy encoding applied by the base codec, and block adjustments applied by the base codec. In Figure 1, the first set of residuals are transformed, quantised and entropy encoded to produce the encoded enhancement layer, sub-layer 1 stream. In Figure 1, a transform operation 510-1 is applied to the first set of residuals; a quantisation operation 520-1 is applied to the transformed set of residuals to generate a set of quantised residuals; and, an entropy encoding operation 530-1 is applied to the quantised set of residuals to generate the encoded enhancement layer, sub-layer 1 stream (e.g., at a first level of enhancement). The quantisation operation 520-1 may use the quantisation parameters generated by the methods and apparatus described above. However, it should be noted that in other examples only the quantisation step 520-1 may be performed. Entropy encoding may not be used, or may optionally be used in addition to one or both of the transform step 510-1 and quantisation step 520-1. The entropy encoding operation can be any suitable type of entropy encoding, such as a Huffmann encoding operation or a run-length encoding (RLE) operation, or a combination of both a Huffmann encoding operation and a RLE operation (e.g., RLE then Huffmann or prefix encoding). To generate the encoded enhancement layer, sub-layer 2 stream, a further level of enhancement information is created by producing and encoding a further set of residuals via residual generator 500-S. The further set of residuals are the difference between an up-sampled version (via up-sampler 505U) of a corrected version of the decoded base stream (the reference signal or frame), and the input signal 501 (the desired signal or frame). To achieve a reconstruction of the corrected version of the decoded base stream as would be generated at a decoder (e.g., as shown in Figure 2), at least some of the sub-layer 1 encoding operations are reversed to mimic the processes of the decoder, and to account for at least some losses and quirks of the transform and quantisation processes. To this end, the first set of residuals are processed by a decoding pipeline comprising an inverse quantisation block 520-1i and an inverse transform block 510-1i. The quantised first set of residuals are inversely quantised at inverse quantisation block 520-1i and are inversely transformed at inverse transform block 510-1i in the encoding system 500 to regenerate a decoder-side version of the first set of residuals. The decoded base stream from decoder 520D is then combined with the decoder-side version of the first set of residuals (i.e., a summing operation 510-C is performed on the decoded base stream and the decoder-side version of the first set of residuals). Summing operation 510-C generates a reconstruction of the down-sampled version of the input video as would be generated in all likelihood at the decoder – i.e. a reconstructed base codec video). The reconstructed base codec video is then up-sampled by up- sampler 505U. Processing in this example is typically performed on a frame-by-frame basis. Each colour component of a frame may be processed as shown in parallel or in series. The up-sampled signal (i.e., reference signal or frame) is then compared to the input signal 501 (i.e., desired signal or frame) to create the further set of residuals (i.e., a difference operation is applied by the residual generator 500-S to the up- sampled re-created frame to generate a further set of residuals). The further set of residuals are then processed via an encoding pipeline that mirrors that used for the first set of residuals to become an encoded enhancement layer, sub-layer 2 stream (i.e., an encoding operation is then applied to the further set of residuals to generate the encoded further enhancement stream). In further examples, the further set of residuals are transformed (i.e., a transform operation 510-0 is performed on the further set of residuals to generate a further transformed set of residuals). The transformed residuals are then quantised, and entropy encoded in the manner described above in relation to the first set of residuals (i.e., a quantisation operation 520-0 is applied to the transformed set of residuals to generate a further set of quantised residuals; and, an entropy encoding operation 530-0 is applied to the quantised further set of residuals to generate the encoded enhancement layer, sub-layer 2 stream containing the further level of enhancement information). The quantisation operation 520-0 may use the quantisation parameters generated by the methods and apparatus described above. In certain cases, the operations may be controlled, e.g. such that, only the quantisation step 520-0 may be performed. Entropy encoding may optionally be used in addition. In some examples, the entropy encoding operation may be a Huffmann encoding operation or a run- length encoding (RLE) operation, or both (e.g., RLE then Huffmann encoding). The transformation applied at both blocks 510-1 and 510-0 may be a Hadamard transformation that is applied to 2x2 or 4x4 blocks of residuals. The encoding operation in Figure 1 does not result in dependencies between local blocks of the input signal (e.g., in comparison with many known coding schemes that apply inter or intra prediction to macroblocks and thus introduce macroblock dependencies). As mentioned, examples of the described methods utilise this feature of the encoding scheme to generate a memory efficient implementation of a decoder to decode encoded data that has been encoded by an encoding scheme such as illustrated in Figure 5..Hence, the operations shown in Figure 1 may be performed in parallel on 4x4 or 2x2 blocks, which greatly increases encoding efficiency on multicore central processing units (CPUs) or graphical processing units (GPUs). As illustrated in Figure 1, the output of the spatially scalable encoding process is one or more enhancement streams for an enhancement layer which preferably comprises a first level of enhancement and a further level of enhancement. This is then combinable (e.g., via multiplexing or otherwise) with a base stream at a base level, e.g. into a MPEG2 transport stream or as multiple tracks within another digital container. The first level of enhancement (sub-layer 1) may be considered to enable a corrected video at a base level, that is, for example to correct for encoder quirks. The second level of enhancement (sub layer 2) may be considered to be a further level of enhancement that is usable to convert the corrected video to the original input video or a close approximation thereto. For example, the second level of enhancement may add fine detail that is lost during the downsampling and / or help correct from errors that are introduced by one or more of the transform operation 510-1 and the quantisation operation 520-1. Figure 2 shows a corresponding example decoding system 600 for the example spatially scalable coding scheme. This illustrates an example coding scheme performed by the described decoding method. In Figure 2, the encoded base stream is decoded at base decoder 620 in order to produce a base reconstruction of the input signal 501. This base reconstruction may be used in practice to provide a viewable rendition of the signal 501 at the lower quality level. However, the primary purpose of this base reconstruction signal is to provide a base for a higher quality rendition of the input signal 501. To this end, the decoded base stream is provided for enhancement layer, sub-layer 1 processing (i.e., sub-layer 1 decoding). Sub-layer 1 processing in Figure 2 comprises an entropy decoding process 630- 1, an inverse quantisation process 620-1, and an inverse transform process 610- 1. In embodiments, the operations (performed on a portion of encoded data) comprise the sub layer 1 processing. Thus, in various examples, the operations (performed on a portion of encoded data) comprise the entropy decoding process 630-1, an inverse quantisation process 620-1, and an inverse transform process 610-1. Optionally, only one or more of these steps may be performed depending on the operations carried out at corresponding block 500-1 at the encoder. By performing these corresponding steps, a decoded enhancement layer, sub- layer 1 stream comprising the first set of residuals is made available at the decoding system 600. The first set of residuals is combined with the decoded base stream from base decoder 620. In some examples, this is achieved via a summing operation 610-C, performed on a frame of the decoded base stream and a frame of the decoded first set of residuals to generate a reconstruction of the down- sampled version of the input video – i.e. the reconstructed base codec video. In some examples, the operations (performed on a portion of encoded data) comprise the summing operation 610-C. A frame of the reconstructed base codec video is then up-sampled by up-sampler 605U. In some embodiments, for example ones involving computationally complex upsampling, the upsampling may not form part of the operations performed on a portion of encoded data because the upsampling process may require a complete plane of data (i.e. a full sub layer 1 reconstruction). However, with simpler ‘localised’ upsampling processes, the upsampling process may form part of the operations performed on a portion of encoded data. Additionally, and optionally in parallel, the encoded enhancement layer, sub-layer 2 stream is processed to produce a decoded further set of residuals. Similar to sub-layer 1 processing, enhancement layer, sub-layer 2 processing comprises an entropy decoding process 630-0, an inverse quantisation process 620-0 and an inverse transform process 610-0. Of course, these operations will correspond to those performed at block 500-0 in encoding system 500, and one or more of these steps may be omitted as necessary. Block 600-0 produces a decoded enhancement layer, sub-layer 2 stream comprising the further set of residuals, and these are summed at operation 600- C with the output from the up-sampler 605U in order to create an enhancement layer, sub-layer 2 reconstruction of the input signal 501. This may be provided as the output of the decoding system 600. In embodiments, the operations (performed on a portion of encoded data) comprise the sublayer 2 processing. Accordingly, in various examples, the operations (performed on a portion of encoded data) comprise the entropy decoding process 630-0, an inverse quantisation process 620-0 and an inverse transform process 610-0. In further examples, the operations (performed on a portion of encoded data) comprise the summing operation 600-C with the output from the up-sampler 605U in order to create an enhancement layer. As illustrated in Figure 1 and 2, the output of the decoding process may comprise up to three outputs: a base reconstruction, a corrected lower resolution signal and an original signal reconstruction for the multi- layer coding scheme at a higher resolution. In general, examples described herein operate within encoding and decoding pipelines that comprises at least a transform operation. The transform operation may comprise a Directional Decomposition (DD) transform or a Directional Decomposition Squared (DDS) transform. More details on these transforms are included in patent applications WO 2013 / 171173 A1 and WO 2018 / 046941 A1, which are incorporated by reference. Further, the transform operation may comprise a Discrete Cosine Transform (DCT) or a variation of the DCT, a Fast Fourier Transform (FFT), or, in some examples, a Hadamard transform as implemented by LCEVC. The transform operation may be applied on a block-by-block basis. For example, an input signal may be segmented into a number of different consecutive signal portions or blocks and the transform operation may comprise a matrix multiplication (i.e., linear transformation) that is applied to data from each of these blocks (e.g., as represented by a 1D vector). In this description and in the art, a transform operation may be said to result in a set of values for a predefined number of data elements, e.g. representing positions in a resultant vector following the transformation. These data elements are known as transformed coefficients (or sometimes simply “coefficients”). As described herein, where the enhancement data comprises residual data, a reconstructed set of coefficient bits may comprise transformed residual data, and a decoding method may further comprise instructing a combination of residual data obtained from the further decoding of the reconstructed set of coefficient bits with a reconstruction of the input signal generated from a representation of the input signal at a lower level of quality to generate a reconstruction of the input signal at a first level of quality. The representation of the input signal at a lower level of quality may be a decoded base signal and the decoded base signal may be optionally upscaled before being combined with residual data obtained from the further decoding of the reconstructed set of coefficient bits, the residual data being at a first level of quality (e.g., a first resolution). Decoding may further comprise receiving and decoding residual data associated with a second sub-layer, e.g. obtaining an output of the inverse transformation and inverse quantisation component, and combining it with data derived from the aforementioned reconstruction of the input signal at the first level of quality. This data may comprise data derived from an upscaled version of the reconstruction of the input signal at the first level of quality, i.e. an upscaling to the second level of quality. Further details and examples of a two sub-layer enhancement encoding and decoding system may be obtained from published LCEVC documentation. Although examples have been described with reference to a tier-based hierarchical coding scheme in the form of LCEVC, the methods described herein may also be applied to other tier-based hierarchical coding scheme, such as VC- 6: SMPTE VC-6 ST-2117 as described in PCT / GB2018 / 053552 (published as WO 2019 / 111010 A1) and / or the associated published standard document, all of which are incorporated by reference. Figure 3 shows an example 700 of how a video signal may be decomposed into different components and then encoded. In the example of Figure 3, a video signal (v) 702 is encoded. The video signal 702 comprises a plurality of frames (F) or pictures 704, e.g. where the plurality of frames represent action over time. In this example, each frame 704 is made up of three colour components. The colour components may be in any known colour space. In Figure 3, the three colour components 706 are Y (luma), U (a first chroma opponent colour) and V (a second chroma opponent colour). Each colour component may be considered a plane 708 of values. The plane 708 may be decomposed into a set of n by n blocks of signal data 710. For example, in LCEVC, n may be 2 or 4; in other video coding technologies n may be 8 to 32. In LCEVC and certain other coding technologies, a video signal fed into a base layer is a downscaled version of the input video signal, e.g.501. In this case, the signal that is fed into both sub-layers of the enhancement layer comprises a residual signal comprising residual data. A plane of residual data may also be organised in sets of n-by-n blocks of signal data 710. The residual data may be generated by comparing data derived from the input signal being encoded, e.g. the video signal 501, and data derived from a reconstruction of the input signal, the reconstruction of the input signal being generated from a representation of the input signal at a lower level of quality. The comparison may comprise subtracting the reconstruction from the downsampled version. The comparison may be performed on a frame-by-frame (and / or block- by-block) basis. The comparison may be performed at the first level of quality; if the base level of quality is below the first level of quality, a reconstruction from the base level of quality may be upscaled prior to the comparison. In a similar manner, the input signal to the second sub-layer, e.g. the input for the second sub-layer transformation and quantisation component, may comprise residual data that results from a comparison of the input video signal 501 at the second level of quality (which may comprise a full-quality original version of the video signal) with a reconstruction of the video signal at the second level of quality. As before, the comparison may be performed on a frame-by-frame (and / or block- by-block) basis and may comprise subtraction. The reconstruction of the video signal may comprise a reconstruction generated from the decoded decoding of the encoded base bitstream and a decoded version of the first sub-layer residual data stream. The reconstruction may be generated at the first level of quality and may be upsampled to the second level of quality. Hence, a plane of data 708 for the first sub-layer may comprise residual data that is arranged in n-by-n signal blocks 710. One such 2 by 2 signal block is shown in more detail in Figure 3 (n is selected as 2 for ease of explanation) where for a colour plane the block may have values 712 with a set bit length (e.g., 8 or 16-bit). Each n-by-n signal block may be represented as a flattened vector 714 of length n2 representing the blocks of signal data. To perform the transform operation, the flattened vector 714 may be multiplied by a transform matrix 716 (i.e., the dot product taken). This then generates another vector 718 of length n2 representing different transformed coefficients for a given signal block 710. Figure 3 shows an example similar to LCEVC where the transform matrix 716 is a Hadamard matrix of size 4 by 4, resulting in a transformed coefficient vector 718 having four elements with respective values. These elements are sometimes referred to by the letters A, H, V and D as they may represent an average (A), horizontal difference (H), vertical difference (V) and diagonal difference (D). Such a transform operation may also be referred to as a directional decomposition. When n = 4, the transform operation may use a 16 by 16 matrix and be referred to as a directional decomposition squared. As shown in Figure 3, the set of values for each data element across the complete set of signal blocks 710 for the plane 708 may themselves be represented as a plane or surface of coefficient values 720. For example, values for the “H” data elements for the set of signal blocks may be combined into a single plane, where the original plane 708 is then represented as four separate coefficient planes 722. For example, the illustrated coefficient plane 722 contains all the “H” values. These values are stored with a predefined bit length, e.g. a bit length B, which may be 8, 16, 32 or 64 depending on the bit depth. A 16-bit example is considered below but this is not limiting. As such, the coefficient plane 722 may be represented as a sequence (e.g., in memory) of 16-bit or 2-byte values 724 representing the values of one data element from the transformed coefficients. These may be referred to as coefficient bits. These coefficient bits may be quantised and then entropy encoded as discussed to then generate the encoded enhancement or second layer data as described above. Figures 2 and 3 thus show decoding processes. There are many ways to implement such processes on a computer. Examples provide for an advantageous method of implementing a decoding process such as the decoding process illustrated in figures 2 and 3. Figures 2 and 3 are thus useful schematics for aiding understanding of described examples. In reference to methods described herein, a portion of data may correspond to a portion of an encoded representation of sequence 724. The portion of encoded data is taken from a start of a decoding operation (e.g. entropy decoding process 630-0 or entropy decoding process 630-1) through to the end (e.g. summing operation 600-C or summing operation 610-C) independently of any other portion of encoded data passing through those operations. Considering specifics of aspects disclosed herein, in general terms, when using the LTM, the processing involves feeding all of the encoded data for a whole frame into entropy decoding process 630-0 processing it and then feeding the entirety of the output into inverse quantisation process 620-0. This causes all the data to be unpacked into a large array. This also limits the amount of processing which can be performed concurrently or in parallel, as all the data for a single frame is processed in lockstep. Contrastingly, some example methods, as discussed herein, break up the encoded data into portions and then feed the portion through the entirety (or as much as is possible) of the decoding operations (e.g. entropy decoding process 630-0 to summing operation 600-C). As described, this provides numerous unexpected advantages (memory bandwidth savings as well as decrease in overall processes / calculations / workload) and moreover it different to how other decoders generally operate (due to the historical trend of relying on intra coding methods, which teach away from implementing a decoding method as described). Consistent with Figure 3, Figures 4, 5 and 6 detail a process able to be applied to a signal, such as, in some examples, a video signal. As set out above, Figure 3 shows plane 708 of values of one colour component. Such a plane 708 is also shown in Figure 4. By the processes set out above, in some examples including a transform, this is turned into a plane of coefficients, each representing A, H, V and D elements of the original block as a value. In the example shown in Figure 4, the plane 708 is processed in blocks. In various examples, such as the example shown in Figure 4, the blocks 402 are a group of 2 by 2 pixels of the image plane. As set out above, the blocks may be a different size, such as a group of 4 by 4 pixels. Due to this, the processing to turn the plane into A, H, V and D elements results in the original elements of each block being replaced with transform blocks 404. Consistent with the blocks being 2 by 2 pixels, the transform blocks are a group of 2 by 2 elements. The transform blocks 404 are then encoded as set out above. In various examples this includes Huffman encoding and / or run length encoding. This results in each of the coefficient values of element type being encoded into a bitstream 406. Consistent with the above, the coefficient values of each element type are represented as a sequence of 16-bit or 2-byte values 724. In Figure 4, the bitstream 406 is shown as being made up of sequences 724, in which there are encoded values 408. Overall, depending on whether the sequences are generated from sub-layer 1 or sub-layer 2, there are 16 or 17 sequences respectively, with additional surface for sub-layer 2 being due to the inclusion of temporal data. Sequence 16 (corresponding to the 17th sequence due to the numbering of the sequences beginning at 0) is therefore optional. In some examples, one or more pointers 410 or indicators are present, identifying the location of the lowest value non-null value in each sequence 724. In various examples, this identifies where processing of each sequence is able to start without being detrimental to the final output. This will be explained in greater detail below. In a number of examples, each sequence 724 includes signal data and, optionally, one or more signal bits, a zero run length low value (i.e. the minimum zero run length in the respective sequence) a zero run length high value (i.e. the maximum zero run length in the respective sequence). This is intended to correspond to a standard process to pass image data into a bitstream in an LCEVC-compliant manner. Turning to Figure 5, this shows the same bitstream 406 as in Figure 4. To decode the bitstream various steps are performed. Typically these are performed by a decoder 600 or an apparatus configured to decode an encoded signal. In some examples, as part of the decoding, the sequences 724 are separated into individual surfaces 502. Typically, these surfaces have differing lengths based on the data content of each surface. The lengths of the surfaces are typically longer the earlier in the bitstream sequence 724 on which the surface is based is located. This is due to, in some examples, Huffman encoding having been applied to the sequence data and the results from Huffman encoding. In some examples, as is the case here, surface 16 is included, as it is typically included when the surfaces related to the sub-layer 2 encoding output. As with the sequences 724, each surface 502 has an indicator 504a identifying a non-null value (i.e. a value that is not a null value). In some examples, this indicator is provided at the point in the surface that has the “first” non-null value, i.e. the non-null value closest to the start of the surface. In this example, each surface also has a second indicator 504b. This second indicator is used to indicate the location of the “second offset”, corresponding to the location at which null data is found after the first offset, as shown by the first indicator 504a. In various examples, the surfaces are each decoded using decoding mechanisms corresponding to the encoding mechanisms used to encode the data in each surface. In some examples, this included run length decoding and / or Huffman decoding. As shown in Figure 6, in some examples, this decoding includes generating an array of coefficients 602 from, in certain examples, each surface 502, and in other examples an array of coefficients for all the surfaces, Figure 6 showing a portion of one array of coefficients. The coefficients are grouped into 4 by 4 sections 604 of coefficient values with the array forming a grid of these sections. The decoding to extract the surface data into coefficients is conducted in line with the known process for each surface. In some examples, this is then processed into an output readable to create a decoded signal of the entropy encoded signal. In various examples, this is in the form of a residual representation 606. In some examples, the residual representation 606 is arrived at by dequantization and / or an inverse transform being carried out on the array of coefficients 602. The residual values in the residual representation are each paired in a number of examples with a pixel coordinate to form a geometric residual. As an alternative, the array of coefficients may be further processed to be output to a buffer, such as a command buffer or list of operations. In various examples, the residual representations 606 is then able to be output as a compliant decoded bitstream and combined with a decoded base to recreate an original image either at a lower resolution or upscaled to the original resolution depending on the sub-layer data used in the combining. This is achieved by applying the processes set out above in relation to Figure 2. Overall, this provides an example of the process shown in Figure 7. This includes the steps of separating (S101) at least a part of a received entropy encoded signal into a plurality of surfaces, each surface comprising entropy encoded data; determining (S102) a first offset at which a datum of the entropy encoded data of one or more of the surfaces is a non-null value; and processing (S103) , by entropy decoding, the encoded data starting at the first offset in each of the surfaces to create a decoded portion of the entropy encoded signal. In this example, the entropy encoded signal received is separated into a plurality of surfaces, such as the surfaces 504 of Figure 5. Each of these surfaces has two corresponding indicators 504a, 504b, which correspond to the first and second offsets. In the determining step (S102), each of the first indicators 504a is set to indicate the location of the first non-null coefficient in their respective surface. Each of the second indicators 504b is set to indicate the location of the first null coefficient after the respective first indicator in their respective surface. The indicators may be pointers, providing memory addresses of the non-null coefficients in the surface, or they may be lengths or offsets, providing an indication via a count of elements in the surface. In the processing step (S103), the encoded data is processed with reference to the indicators 504a, 504b. Only a portion of the data is processed, as the indicators allow for the null data to be skipped. The position in the surfaces where the data processing begins in every surface is the earliest position of any one of the first indicators 504a in any surface. In other words, in this example, the data must be processed in all surfaces from the point at which one surface has non- null values. In the same way, the position of the second indicators 504b is set at the first location in the respective surface where the data becomes null-valued after the first indicator 504a. Then, the data processing ends in every surface at the latest position of any one of the second indicators 504b in any surface. In some examples, there may be a plurality of first and second indicators, demarking regions of null values in the surfaces. The method described above can then be applied in repeated fashion to not process regions where all the surfaces are null-valued. In other examples, there may be only a single indicator 504a, and the data located in every surface at or after the position of the earliest indicator in any one of the surfaces may be processed. In this example, this entropy decoding comprises run length decoding, and the encoded data is processed to produce enhancement data. This enhancement data can be applied to a base dataset to produce an enhanced dataset. In various examples, this is based on having received (S100) the entropy encoded signal prior to the separation step. Broadly, this applies the LTM decoding process. However, rather than unpacking the bitstream (e.g. the entropy encoded signal) into a single large array, or manually processing each surface in turn, reading the data in a consecutive fashion, this method unpacks the bitstream into separate surfaces that are processed, separately and concurrently. Certain methods and encoder components as described herein may be performed by instructions that are stored upon a non-transitory computer readable medium. The non-transitory computer readable medium stores code comprising instructions that, if executed by one or more computers, would cause the computer to perform steps of methods or execute operations of encoder components as described herein. The non-transitory computer readable medium may comprise one or more of a rotating magnetic disk, a rotating optical disk, a flash random access memory (RAM) chip, and other mechanically moving or solid-state storage media. Some examples may be implemented as: physical devices such as semiconductor chips; hardware description language representations of the logical or functional behaviour of such devices; and one or more non-transitory computer readable media arranged to store such hardware description language representations. Descriptions herein reciting principles, aspects, and embodiments encompass both structural and functional equivalents thereof. In some examples, a system is provided as generally illustrated at 1000 in Figure 8. This includes a non-transitory computer-readable medium 1010, such as a hard-drive, solid-state drive or some other form of storage medium, is provided. This is capable of holding or storing a computer program 1001. The computer program includes instructions, typically in the form of computer code, that, when implemented on a computing device, such as by executing the program, cause an apparatus to perform one or more of the methods and processes set out above or to provide one or more of the decoders set out above. The apparatus may be a computing device such as a chip, server or some other form of computer. The system also includes a multi-core CPU 1002 on which the decoder is able to be implemented in some examples. The above examples are to be understood as illustrative examples. Further examples are envisaged. It is to be understood that any feature described in relation to any one example may be used alone, or in combination with other features described, and may also be used in combination with one or more features of any other of the examples, or any combination of any other of the examples. Furthermore, equivalents and modifications not described above may also be employed within the scope of the accompanying claims. Patent and non-patent documents that are referenced herein are deemed to be incorporated by reference into the present document. Certain examples have been described herein and it will be noted that different combinations of different components from different examples may be possible. Salient features are presented to better explain examples; however, it is clear that certain features may be added, modified and / or omitted without modifying the functional aspects of these examples as described. Elements described herein as “coupled” or “communicatively coupled” have an effectual relationship realizable by a direct connection or indirect connection, which uses one or more other intervening elements. Examples described herein as “communicating” or “in communication with” another device, module, or elements include any form of communication or link. Furthermore, equivalents and modifications not described above may also be employed without departing from the scope of the invention, which is defined in the accompanying claims.
Claims
CLAIMS 1. A method of decoding an entropy-encoded signal, the method comprising: separating at least a part of the entropy encoded signal into a plurality of surfaces, each surface comprising entropy encoded data; determining a first offset at which a datum of the entropy encoded data of one or more of the surfaces is a non-null value; and processing, by entropy decoding, the encoded data starting at the first offset in each of the surfaces to create a decoded portion of the entropy encoded signal.
2. The method of claim 1, wherein the processing further comprises: determining a second offset at which a datum of the entropy encoded data of each of the surfaces is a null value; wherein the entropy decoding is entropy decoding of the entropy encoded data between the first and second offsets in each of the surfaces.
3. The method of claim 2, further comprising: determining a plurality of pairs of first and second offsets; wherein the processing is processing of the encoded data found between each of the first and second offsets of the pairs of first and second offsets.
4. The method of any preceding claim, wherein the entropy encoding of the entropy encoded signal comprises run length encoding, and the entropy decoding comprises run length decoding.
5. The method according to claim 4, wherein the encoded data includes a plurality of run length indications.
6. The method according to claim 5, wherein the encoded data includes a plurality of encoded coefficients, each of the encoded coefficients being paired with a run length indication of the plurality of run length indications.
7. The method of claim 6, wherein the determining a first offset comprises determining the location of a first non-null encoded coefficient.
8. The method of any of claims 4 to 7, wherein the determining a first offset comprises at least partially decoding the run length encoding of the encoded data.
9. The method according to any one of the preceding claims, wherein the entropy encoding includes Huffman coding and the entropy decoding includes Huffman decoding.
10. The method according to any one of the preceding claims, wherein the decoded portion comprises one or more arrays of coefficients, further comprising processing the decoded portion to produce enhancement data.
11. The method of claim 10, wherein the processing of the decoded portion comprises dequantization of the arrays of coefficients.
12. The method of claim 10 or claim 11, wherein the processing of the decoded portion includes performing an inverse transform on the arrays of coefficients.
13. The method according to any of claims 10 to 12, further comprising enhancing a base dataset using the enhancement data.
14. The method according to any of claims 10 to 13, wherein the processing of the decoded portion includes writing the array of coefficients to a residual representation, the residual representation including residual values, and the enhancement data comprises the residual values.
15. The method according to claim 14, wherein the residual representation includes a coordinate associated with each residual value.
16. The method according to any of claims 10 to 13, wherein the processing of the decoded portion includes writing the array of coefficients to a buffer or operation list, or residual representation.
17. The method of claim 16, wherein the enhancement data comprises commands written to a command buffer.
18. The method according to any one of the preceding claims, wherein the entropy encoded signal is an entropy encoded video signal.
19. The method according to claim 18, wherein the entropy encoded signal is an LCEVC-compliant signal.
20. The method according to any one of the preceding claims, further comprising receiving the entropy encoded signal.
21. An apparatus configured to decode an entropy encoded signal, the apparatus being configured to: separate at least a part of the entropy encoded signal into a plurality of surfaces, each surface comprising entropy encoded data; determine a first offset at which a datum of the entropy encoded data of one or more of the surfaces is a non-null value; and process, by entropy decoding, the encoded data starting at the first offset in each of the surfaces to create a decoded portion of the entropy encoded signal.
22. The apparatus according to claim 21, wherein the entropy encoded signal is encoded with run length encoding and the entropy decoding comprises run length decoding.
23. The apparatus according to claim 22, the encoded data includes a plurality of run length indications, and the encoded data includes a plurality of encoded coefficients, each of the encoded coefficients being paired with a run length indication of the plurality of run length indications.
24. The apparatus according to any one of claims 21 to 23, wherein the determining a first offset comprises determining the location of a first non-null encoded coefficient.
25. The apparatus according to any one of claims 21 to 24, wherein the determining a first offset comprises at least partially decoding the run length encoding of the encoded data.
26. The apparatus according to any one of claims 21 to 25, wherein the apparatus is a decoder.
27. A computer program comprising instructions, which, when the program is executed by a computer, cause the computer to carry out the method according to any one of claims 1 to 20.
28. A non-transitory computer-readable medium comprising the computer program according to claim 27.
Citation Information
Patent Citations
Decomposition of residual data during signal encoding, decoding and reconstruction in a tiered hierarchy
WO2013171173A1
Data processing apparatuses, methods, computer programs and computer-readable media
WO2018046941A1
Methods and apparatuses for encoding and decoding a bytestream
WO2019111010A1
Constant rate factor video encoding control
WO2024134191A1
Method and apparatus for position identification in runlength compression data
US20060067586A1