Data encoding and decoding

By combining historical data and multiple encoding techniques, the problem of low encoding efficiency for out-of-range values ​​in video data encoding has been solved, achieving efficient encoding of values ​​outside the range and improving encoding efficiency and accuracy.

CN115769574BActive Publication Date: 2026-06-19SONY GROUP CORP

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
SONY GROUP CORP
Filing Date
2021-06-16
Publication Date
2026-06-19

AI Technical Summary

Technical Problem

In existing video data coding technologies, the coding efficiency of escaped values ​​during entropy coding is low, especially for values ​​that exceed the range of unary coding.

Method used

A method combining historical data storage and multiple encoding techniques is adopted. The first encoding technique encodes the range of data items, the dataset is selected using historical data, and the remaining values ​​that exceed the range are encoded using the second encoding technique.

Benefits of technology

It improves the efficiency of video data encoding, especially the ability to encode values ​​that are outside the range of unary coding, thus enhancing the flexibility and accuracy of encoding.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115769574B_ABST
    Figure CN115769574B_ABST
Patent Text Reader

Abstract

A method for encoding a continuous data item includes: storing historical data of the encoded data item, the historical data indicating one or more aspects of encoding the encoded data item; encoding a given data item using a first encoding technique, the first encoding technique including encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously encoded datasets; and (ii) historical data applied to a given attribute of the given data item, selecting a series of datasets from a plurality of candidate datasets; and encoding an arbitrary residual value of the given data item using a second encoding technique different from the first encoding technique, the residual value being the amount by which the given data item exceeds a maximum value that can be encoded by the first encoding technique.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to data encoding and decoding. Background Technology

[0002] The “background” description provided herein is intended to provide a general context for this disclosure. To the extent described in this background section, the work of the currently named inventor and descriptions that may not conform to the prior art at the time of submission are neither explicitly nor implicitly considered to be prior art to this disclosure.

[0003] Several systems (e.g., video or image data encoding and decoding systems) involve transforming video data into a frequency domain representation, quantizing the frequency domain coefficients, and then applying some form of entropy coding to the quantized coefficients. This enables the compression of the video data. Appropriate decoding or decompression techniques are then applied to recover a reconstructed version of the original video data.

[0004] In some examples, the entropy encoding process may involve generating one or more “datasets” (e.g., an importance graph, a graph greater than one, a graph greater than two, and / or other datasets) to describe the coefficient block, where any outlier values ​​that cannot be encoded by the importance graph alone are encoded as so-called escape values. Encoding of escape values ​​may be performed (in some examples) by generating a first part (e.g., a unary or truncated unary encoded part, such as a prefix) and a second part (e.g., a non-unary encoded part), the length of which depends on the size of the second part value in bits. Summary of the Invention

[0005] This disclosure resolves or mitigates the problems arising from this treatment.

[0006] This disclosure provides a method for encoding continuous data items, the method comprising:

[0007] Store historical data of coded data items, which indicates one or more aspects of the coded data items being encoded;

[0008] Encoding a given data item using a first encoding technique, the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously encoded datasets; and (ii) historical data applied to a given attribute of the given data item, selecting a series of datasets from multiple candidate datasets; and

[0009] By using a second encoding technique different from the first encoding technique, any residual value of a given data item is encoded, where the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique.

[0010] This disclosure also provides a method for decoding an input data signal representing consecutive data items, the method comprising:

[0011] Store historical data of the decoded data item, which indicates one or more aspects of the decoding of the decoded data item;

[0012] Decoding a given data item using a first decoding technique, the first decoding technique comprising decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously decoded datasets; and (ii) historical data applied to a given attribute of the given data item, selecting a series of datasets from multiple candidate datasets; and

[0013] A second decoding technique, different from the first decoding technique, is used to decode any residual value of a given data item, where the residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique.

[0014] This disclosure also provides an apparatus for encoding consecutive data items, the apparatus comprising:

[0015] A historical data storage device is configured to store historical data of coded data items, which indicates one or more aspects of the coded data items being encoded.

[0016] A first encoder circuit is configured to encode a given data item using a first encoding technique, the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously encoded datasets; and (ii) historical data of a given attribute applied to the given data item, selecting a series of datasets from a plurality of candidate datasets; and

[0017] The second encoder circuit is configured to encode any residual value of a given data item using a second encoding technique different from the first encoding technique, wherein the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique.

[0018] This disclosure also provides an apparatus for decoding an input data signal representing consecutive data items, the apparatus comprising:

[0019] A history data storage device is configured to store historical data of decoded data items, which indicates one or more aspects of decoding the decoded data items;

[0020] A first decoder circuit is configured to decode a given data item using a first decoding technique, the first decoding technique comprising decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously decoded datasets; and (ii) historical data of a given attribute applied to the given data item, selecting a series of datasets from a plurality of candidate datasets; and

[0021] The second decoder circuit is configured to decode any residual value of a given data item using a second decoding technique different from the first decoding technique, wherein the residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique.

[0022] This disclosure also provides a method for encoding consecutive blocks of data items, the method comprising:

[0023] Store historical data of encoded data item blocks, which indicates one or more aspects of the data item blocks being encoded;

[0024] Generate block parameters for a given data item block, which depend at least in part on the historical data applied to the given data item block;

[0025] Encoding a given data item of a given data item block using a first encoding technique, the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and selecting a series of datasets from multiple candidate datasets depending on block parameters generated for the given data item block; and

[0026] By using a second encoding technique different from the first encoding technique, any residual value of a given data item is encoded, where the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique.

[0027] This disclosure also provides a method for decoding consecutive blocks of data items, the method comprising:

[0028] Store historical data of the decoded data item blocks, which indicates one or more aspects of the decoding of the data item blocks;

[0029] Generate block parameters for a given data item block, which depend at least in part on the historical data applied to the given data item block;

[0030] Decoding a given data item of a given data item block using a first decoding technique, the first decoding technique comprising decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for a data item, and selecting a series of datasets from multiple candidate datasets depending on block parameters generated for the given data item block; and

[0031] A second decoding technique, different from the first decoding technique, is used to decode any residual value of a given data item, where the residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique.

[0032] This disclosure also provides an apparatus for encoding consecutive blocks of data items, the apparatus comprising:

[0033] A historical data storage device is configured to store historical data of encoded data item blocks, which indicates one or more aspects of the data item blocks being encoded.

[0034] A generator circuit is configured to generate block parameters for a given data item block, the block parameters depending at least in part on historical data applied to the given data item block;

[0035] A first encoder circuit is configured to encode a given data item of a given data item block using a first encoding technique, the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for a data item, and selecting a series of datasets from a plurality of candidate datasets depending on block parameters generated for the given data item block; and

[0036] The second encoder circuit is configured to encode any residual value of a given data item using a second encoding technique different from the first encoding technique, wherein the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique.

[0037] This disclosure also provides an apparatus for decoding consecutive blocks of data items, the apparatus comprising:

[0038] A history data storage is configured to store historical data of decoded data item blocks, which indicates one or more aspects of decoding the data item blocks;

[0039] A generator circuit is configured to generate block parameters for a given data item block, the block parameters depending at least in part on historical data applied to the given data item block;

[0040] A first decoder circuit is configured to decode a given data item of a given data item block using a first decoding technique, the first decoding technique including decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for a data item, and selecting a series of datasets from multiple candidate datasets depending on block parameters generated for the given data item block; and

[0041] The second decoder circuit is configured to decode any residual value of a given data item using a second decoding technique different from the first decoding technique. The residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique.

[0042] Further relevant aspects and features of this disclosure are defined in the appended claims.

[0043] It should be understood that the foregoing general description and the following detailed description are examples of this technology, but not limiting ones. Attached Figure Description

[0044] A more complete understanding of this disclosure and its many accompanying advantages will be readily available when considered in conjunction with the accompanying drawings, by referring to the following detailed description, in which:

[0045] Figure 1 An audio / video (A / V) data transmission and reception system using video data compression and decompression is illustrated schematically;

[0046] Figure 2 A video display system that uses video data decompression is illustrated schematically;

[0047] Figure 3 An audio / video storage system using video data compression and decompression is illustrated schematically;

[0048] Figure 4 A camera using video data compression is illustrated schematically;

[0049] Figure 5 and 6 The storage medium is shown schematically;

[0050] Figure 7 A schematic diagram of video data compression and decompression equipment is provided;

[0051] Figure 8 The predictor is illustrated schematically;

[0052] Figure 9 The transition skip mode is illustrated schematically;

[0053] Figure 10a , Figure 10b , Figure 11a and Figure 11b The corresponding scanning direction is schematically shown;

[0054] Figure 12 This is a schematic diagram showing the encoding device;

[0055] Figure 13 This is a schematic diagram showing the decoding device;

[0056] Figures 14 to 26 It is a schematic flowchart representing the corresponding method; and

[0057] Figure 27a , Figure 27b , Figure 28 , Figure 29 , Figure 30a , Figure 30b , Figure 31 , Figure 32a , Figure 32b , Figure 33 , Figure 34a , Figure 34b and Figure 35 The use of a template is illustrated schematically. Detailed Implementation

[0058] Now refer to the attached diagram, Figures 1 to 4 A schematic diagram of an apparatus or system utilizing a compression and / or decompression device is provided, which will be described below in conjunction with embodiments of the present technology.

[0059] All data compression and / or decompression devices described below can be implemented in hardware, software running on general-purpose data processing devices (e.g., general-purpose computers), programmable hardware (e.g., application-specific integrated circuits (ASICs) or field-programmable gate arrays (FPGAs), or combinations thereof). Where embodiments are implemented by software and / or firmware, it should be understood that such software and / or firmware, as well as non-transitory data storage media storing or otherwise providing such software and / or firmware, are considered embodiments of this technology.

[0060] Figure 1 This diagram schematically illustrates an audio / video data transmission and reception system that uses video data compression and decompression. In this example, the data values ​​to be encoded or decoded represent image data.

[0061] The input audio / video signal 10 is provided to a video data compression device 20, which at least compresses the video component of the audio / video signal 10 for transmission along a transmission path 30, such as a cable, fiber optic cable, or wireless link. The compressed signal is processed by a decompression device 40 to provide an output audio / video signal 50. For the return path, the compression device 60 compresses the audio / video signal intended for transmission along the transmission path 30 to the decompression device 70.

[0062] Compression device 20 and decompression device 70 can thus form one node of the transmission link. Decompression device 40 and compression device 60 can form another node of the transmission link. Of course, in the case of a unidirectional transmission link, only one node needs a compression device, while the other node only needs a decompression device.

[0063] Figure 2 A video display system using video data decompression is schematically illustrated. Specifically, compressed audio / video signal 100 is processed by decompression device 110 to provide a decompressed signal that can be displayed on display 120. Decompression device 110 can be implemented as an integral part of display 120, for example, provided within the same housing as the display device. Alternatively, decompression device 110 can be provided as, for example, a so-called set-top box (STB). Note that the expression "set-top box" does not imply that the box is located in any particular orientation or position relative to display 120; it is simply a term used in the art to refer to a device that can be connected to a display as a peripheral device.

[0064] Figure 3 An audio / video storage system using video data compression and decompression is schematically illustrated. Input audio / video signal 130 is provided to compression device 140, which generates a compressed signal for storage by storage device 150, such as a disk drive, optical disk drive, magnetic tape drive, solid-state storage device, such as semiconductor memory, or other storage device. For playback, compressed data is read from storage device 150 and transmitted to decompression device 160 for decompression to provide output audio / video signal 170.

[0065] It should be understood that compressed or encoded signals and storage media storing such signals (e.g., machine-readable non-transitory storage media) are considered embodiments of this technology.

[0066] Figure 4 A camera using video data compression is illustrated schematically. Figure 4 In this process, an image capture device 180 (e.g., a charge-coupled device (CCD) image sensor and associated control and readout electronics) generates a video signal, which is transmitted to a compression device 190. A microphone (or multiple microphones) 200 generates an audio signal to be transmitted to the compression device 190. The compression device 190 generates a compressed audio / video signal 210 (generally shown as schematic stage 220) to be stored and / or transmitted.

[0067] The techniques described below primarily concern video data compression and decompression. It should be understood that many existing techniques can be combined with the video data compression techniques described herein for audio data compression to generate compressed audio / video signals. Therefore, a separate discussion of audio data compression will not be provided. It should also be understood that the data rate associated with video data (especially broadcast-quality video data) is typically much higher than the data rate associated with audio data (whether compressed or uncompressed). Therefore, it should be understood that uncompressed audio data can be accompanied by compressed video data to form a compressed audio / video signal. It should also be understood that, although this example (… Figures 1 to 4 (As shown) This involves audio / video data, but the techniques described below can be used in systems that simply process (i.e., compress, decompress, store, display, and / or transmit) video data. In other words, the embodiments can be applied to video data compression without requiring any associated audio data processing.

[0068] therefore, Figure 4 Examples of video capture devices, including image sensors and encoding devices of the types discussed below, are provided. Therefore, Figure 2 Examples of the types of decoding devices and the displays to which the decoded images are output are provided below.

[0069] Figure 2 and Figure 4 The combination can provide a video capture device including an image sensor 180, an encoding device 190, a decoding device 110, and a display 120, with the decoded image being output to the display.

[0070] Figure 5 and Figure 6 The storage medium is schematically shown, which stores, for example, compressed data generated by devices 20, 60, compressed data input to device 110 or storage medium or level 150, 220. Figure 5 The illustration schematically shows disk storage media such as disks or optical discs. Figure 6 A solid-state storage medium, such as flash memory, is illustrated schematically. Note that... Figure 5 and Figure 6 Examples may also be provided of non-transitory machine-readable storage media for storing computer software that, when executed by a computer, causes the computer to perform one or more methods, which will be discussed below.

[0071] Therefore, the above setup provides an example of a video storage, capture, transmission, or receiving device embodying any of the techniques described herein.

[0072] Figure 7 A schematic diagram is provided of a video or image data compression and decompression device for encoding and / or decoding image data information representing one or more images.

[0073] The controller 343 controls the overall operation of the device, and specifically, when compression modes are involved, it acts as a selector to control the attempted encoding process, selecting various operating modes, such as block size and shape, and whether the video data should be losslessly encoded or otherwise encoded. The controller is considered part of either an image encoder or an image decoder (whichever is appropriate). A continuous image of the input video signal 300 is provided to the adder 310 and the image predictor 320. References will follow below. Figure 8A more detailed description of the image predictor 320. Image encoder or decoder (depending on the situation) plus... Figure 8 Intra-image predictors can use data from... Figure 7 The characteristics of the device. However, this does not mean that an image encoder or decoder necessarily needs to be... Figure 7 Each feature.

[0074] Adder 310 actually performs a subtraction (negative addition) operation because it receives the input video signal 300 at the "+" input and the output of image predictor 320 at the "-" input, thus subtracting the predicted image from the input image. The result is a so-called residual image signal 330, representing the difference between the actual image and the predicted image.

[0075] One reason for generating residual image signals is as follows. The data encoding technique to be described (that is, the technique to be applied to the residual image signal) tends to work more efficiently when there is less "energy" in the image to be encoded. Here, the term "efficiently" means producing a small amount of encoded data; for a given image quality level, it is expected (and considered "efficient") to produce as little data as possible. The "energy" mentioned in the residual image refers to the amount of information contained in the residual image. If the predicted image is the same as the true image, the difference between the two (that is, the residual image) will contain zero information (zero energy) and will be very easy to encode into a small amount of encoded data. In general, if the prediction process can be made to work fairly well so that the predicted image content is similar to the image content to be encoded, it is expected that the residual image data will contain less information (less energy) than the input image, and therefore will be easier to encode into a small amount of encoded data.

[0076] Therefore, encoding (using adder 310) involves predicting image regions of the image to be encoded; and generating residual image regions based on the differences between the predicted image regions and the corresponding regions of the image to be encoded. In conjunction with the techniques discussed below, an ordered array of data values ​​includes data values ​​representing the residual image regions. Decoding involves predicting image regions of the image to be decoded; generating residual image regions indicating the differences between the predicted image regions and the corresponding regions of the image to be decoded; wherein the ordered array of data values ​​includes data values ​​representing the residual image regions; and combining the predicted image regions and the residual image regions.

[0077] The remainder of the device will now be described as acting as an encoder (encoding residual or difference images).

[0078] The residual image data 330 is provided to the transform unit or circuit 340, which generates a Discrete Cosine Transform (DCT) representation of the block or region of the residual image data. DCT technology itself is well-known and will not be described in detail here. It should also be noted that the use of DCT is merely an illustration of an exemplary setup. Other transforms that can be used include, for example, the Discrete Sine Transform (DST). Transforms can also include sequences or cascades of individual transforms, such as a setup where one transform follows another (whether directly or not). The selection of transforms can be explicitly determined and / or depends on side information used to configure the encoder and decoder. In other examples, a so-called "transform skip" mode can be selectively used, where no transform is applied.

[0079] Therefore, in the example, the encoding and / or decoding method includes predicting image regions of the image to be encoded; and generating residual image regions based on the differences between the predicted image regions and the corresponding regions of the image to be encoded; wherein an ordered array of data values ​​(discussed below) includes data values ​​representing the residual image regions.

[0080] The output of transform unit 340 (that is, (in one example) a set of DCTs for each transform block of the image data) is provided to quantizer 350. Various quantization techniques are known in the field of video data compression, ranging from simple multiplication by a quantization scaling factor to the application of complex lookup tables under the control of quantization parameters. The overall goal is twofold. First, the quantization process reduces the number of possible values ​​for the transform data. Second, the quantization process can increase the probability that the transform data value is zero. Both of these enable the entropy coding process, which will be described below, to more efficiently produce a small amount of compressed video data.

[0081] The scanning unit 360 applies a data scanning process. The purpose of the scanning process is to reorder the quantized transform data in order to group together as many non-zero quantized transform coefficients as possible, and of course, as many zero-value coefficients as possible. These characteristics allow for the efficient application of so-called run-length encoding or similar techniques. Therefore, the scanning process involves selecting coefficients from the quantized transform data according to a “scan order,” specifically selecting coefficient blocks corresponding to blocks of image data that have already been transformed and quantized, such that (a) all coefficients are selected once as part of the scan, and (b) the scan tends to provide the desired reordering. An example of a scan order that tends to give useful results is a diagonal order, for example, the so-called right diagonal scan order.

[0082] The scanning order can be different, for example, between transform skip blocks and transform blocks (blocks that have undergone at least one spatial frequency transformation).

[0083] The scanned coefficients are then fed to the entropy encoder (EE) 370. Similarly, various types of entropy coding can be used. Two examples are variants of the so-called CABAC (Context Adaptive Binary Arithmetic Coding) system and the so-called CAVLC (Context Adaptive Variable Length Coding) system. In general, CABAC is considered to offer better efficiency, and in some studies, it has been shown to provide a 10% to 20% reduction in the amount of encoded output data compared to CAVLC for comparable image quality. However, CAVLC is considered to have lower complexity than CABAC (in terms of its implementation). Note that the scanning and entropy coding processes are shown as separate processes, but they can actually be combined or processed together. That is, data can be read into the entropy encoder in the scanning order. The corresponding considerations apply to the corresponding inverse process, which will be described below.

[0084] The output of the entropy encoder 370, along with additional data (mentioned above and / or discussed below), such as defining how the predictor 320 generates the predicted image, whether the compressed data is transformed or the transformation is skipped, provides a compressed output video signal 380.

[0085] However, return path 390 is also provided because the operation of predictor 320 itself depends on the decompressed version of the compressed output data.

[0086] The reason for this feature is as follows. At an appropriate stage of the decompression process (described below), a decompressed version of the residual data is generated. This decompressed residual data must be added to the prediction image to generate the output image (because the original residual data is the difference between the input image and the prediction image). To make the process comparable, the prediction image generated by predictor 320 should be identical during both the compression and decompression processes. Of course, during decompression, the device cannot access the original input image, but only the decompressed image. Therefore, during compression, predictor 320 predicts (at least for inter-image coding) based on the decompressed version of the compressed image.

[0087] The entropy encoding process performed by entropy encoder 370 is considered (in at least some examples) to be "lossless," meaning it can be reversed to obtain data identical to the data initially provided to entropy encoder 370. Therefore, in such examples, the return path can be implemented before the entropy encoding stage. In fact, the scanning process performed by scan unit 360 is also considered lossless; therefore, in this embodiment, return path 390 is from the output of quantizer 350 to the input of complementary inverse quantizer 420. Where a stage introduces loss or potential loss, that stage (and its inverse stage) can be included in the feedback loop formed by the return path. For example, the entropy encoding stage can, at least in principle, be lossy, for example, through techniques that encode bits in parity information. In this case, entropy encoding and decoding should form part of the feedback loop.

[0088] In general, the entropy decoder 410, inverse scan unit 400, inverse quantizer 420, and inverse transform unit or circuit 430 provide the corresponding opposite functions of the entropy encoder 370, scan unit 360, quantizer 350, and transform unit 340. For now, the discussion will continue with the compression process; the process of decompressing the input compressed video signal will be discussed separately below.

[0089] During compression, the scanned coefficients are transmitted from quantizer 350 to inverse quantizer 420 via return path 390, and the inverse quantizer performs the inverse operation of scan unit 360. Inverse quantization and inverse transform processes are performed by units 420 and 430 to generate the compressed-decompressed residual image signal 440.

[0090] Image signal 440 is added to the output of predictor 320 at adder 450 to generate reconstructed output image 460 (although this may be preceded by so-called cyclic filtering and / or other filtering, see below). This forms an input to image predictor 320, as described below.

[0091] Now we turn to the decoding process applied to the decompressed received compressed video signal 470. The compressed video signal 470 is provided to the entropy decoder 410 and from there to a chain of inverse scan unit 400, inverse quantizer 420, and inverse transform unit 430, and then added by adder 450 to the output of image predictor 320. Thus, on the decoder side, the decoder reconstructs a version of the residual image and then (via adder 450) applies it to the predicted version of the image (block by block) to decode each block. Simply put, the output 460 of adder 450 forms the output decompressed video signal 480 (after the filtering process discussed below). In practice, further filtering (e.g., by...) can optionally be applied before the output signal. Figure 8 The loop filter 565 shown is, but in order to Figure 7For clarity, from a higher-level diagram Figure 7 The loop filter 565 is omitted in the text.

[0092] Figure 7 and Figure 8 The device can function as either a compression (encoding) device or a decompression (decoding) device. The functions of these two devices largely overlap. The scanning unit 360 and the entropy encoder 370 are not used in decompression mode, and the predictor 320 (described in detail below) and other units operate according to the mode and parameter information contained in the received compressed bitstream, rather than generating such information themselves.

[0093] Figure 8 The generation of the predicted image is illustrated schematically, particularly the operation of the image predictor 320.

[0094] The predictions performed by the image predictor 320 have two basic modes: so-called intra-frame prediction and so-called inter-frame or motion-compensated (MC) prediction. On the encoder side, each mode involves detecting the prediction direction with respect to the current block to be predicted and generating a predicted sample block based on other samples (in the same (intra-frame) or another (inter-frame) image). With the help of units 310 or 450, the difference between the predicted block and the actual block is encoded or applied to encode or decode the block respectively.

[0095] (At the decoder, or on the opposite decoding side of the encoder, the detection of the predicted direction can be in response to data associated with the encoded data by the encoder, indicating which direction to use at the encoder. Alternatively, the detection can be in response to the same factors that make the decision at the encoder.)

[0096] Intra-image prediction predicts the content of blocks or regions of an image based on data from within the same frame. This corresponds to what is known as I-frame coding in other video compression techniques. However, unlike I-frame coding, which involves encoding the entire image via intra-frame coding, in this embodiment, a choice between intra-frame and inter-frame coding can be made on a block-by-block basis, although in other embodiments, this choice is still made on a per-image basis.

[0097] Motion-compensated prediction is an example of inter-image prediction that uses motion information to attempt to define the source of image details to be encoded in the current image in another adjacent or nearby image. Thus, in an ideal example, the contents of an image data block in the predicted image can be encoded very simply as a reference (motion vector) pointing to a corresponding block in the same or slightly different location in a neighboring image.

[0098] The technique known as “block copying” prediction is in some respects a hybrid of the two, because it uses vectors to indicate the location of a sample block within the same image that is offset from the currently predicted block, and that sample block should be copied to form the currently predicted block.

[0099] Back Figure 8 Two image prediction settings (corresponding to intra-image and inter-image prediction) are illustrated, with multiplexer 500 selecting its result under the control of mode signal 510 (e.g., from controller 343) to provide blocks of predicted images for adders 310 and 450. The selection is made based on which choice yields the lowest "energy" (which, as described above, can be considered the information content to be encoded), and this selection is communicated to the decoder within the encoded output data stream. In this case, image energy can be detected, for example, by performing trial subtraction on regions of two versions of the predicted image from the input image, squaring each pixel value of the difference image, summing the squared values, and identifying which of the two versions produces the lower mean square value of the difference image associated with that image region. In other examples, trial encoding can be performed on each selection or potential selection, and then a choice can be made based on the cost of each potential selection, according to one or both of the bits required for image encoding and distortion.

[0100] In the intra-frame coding system, actual prediction is performed based on the image blocks received as part of signal 460 (filtered via loop filtering; see below). That is, the prediction is based on the encoded and decoded image blocks so that the exact same prediction can be performed in the decompression device. However, data can be derived from the input video signal 300 via the intra-frame mode selector 520 to control the operation of the intra-frame image predictor 530.

[0101] For inter-image prediction, motion compensation predictor 540 uses motion information, such as motion vectors derived from input video signal 300 by motion estimator 550. Motion compensation predictor 540 applies these motion vectors to a processed version of reconstructed image 460 to generate inter-image predicted blocks.

[0102] Therefore, units 530 and 540 (operating together with estimator 550) both act as detectors to detect the prediction direction of the current block to be predicted, and act as generators to generate a prediction block of samples (forming part of the predictions passed to units 310 and 450) based on other samples defined by the prediction direction.

[0103] The processing applied to signal 460 will now be described.

[0104] First, the signal can be filtered by a so-called loop filter 565. Various types of loop filters can be used. One technique involves applying a "deblocking" filter to eliminate or at least tend to reduce the effects of block-based processing performed by the transform unit 340 and subsequent operations. Another technique involves applying a so-called sample adaptive cancellation (SAO) filter. Generally, in a sample adaptive cancellation filter, filter parameter data (derived at the encoder and transmitted to the decoder) defines one or more cancellation amounts to be selectively combined by the sample adaptive cancellation filter with a given intermediate video sample (a sample of signal 460) according to: (i) the given intermediate video sample; or (ii) one or more intermediate video samples having a predetermined spatial relationship with the given intermediate video sample.

[0105] Alternatively, an adaptive loop filter can be applied using coefficients obtained by processing the reconstructed signal 460 and the input video signal 300. An adaptive loop filter is a filter that uses known techniques to apply adaptive filter coefficients to the data to be filtered. That is, the filter coefficients can vary depending on various factors. This includes data defining which filter coefficients to use as part of the encoded output data stream.

[0106] When the device operates as a decompression device, the filtered output from the loop filter unit 565 actually forms the output video signal 480. It is also buffered in one or more image or frame memories 570; the storage of consecutive images is a requirement for motion compensation prediction processing, especially for the generation of motion vectors. To meet storage requirements, the images stored in the image memory 570 can be stored in compressed form and then decompressed for use in generating motion vectors. For this purpose, any known compression / decompression system can be used. The stored images can be passed to an interpolation filter 580, which generates a higher-resolution version of the stored images; in this example, intermediate samples (subsamples) are generated such that the resolution of the interpolated image output by the interpolation filter 580 is four times (in each dimension) the resolution of the image stored in the image memory 570 with a luminance channel of 4:2:0 and eight times (in each dimension) the resolution of the image stored in the image memory 570 with a chroma channel of 4:2:0. The interpolated image is passed as input to the motion estimator 550 and also to the motion compensation predictor 540.

[0107] The method of segmenting an image for compression will now be described. Essentially, the image to be compressed is considered an array of sample blocks or regions. An image can be segmented into such blocks or regions using a decision tree, for example, the decision tree described in SERIESH: AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audio-visual services - Coding of moving video High efficiency video coding Recommendation ITU-TH.265 12 / 2016. Also: High Efficiency Video Coding (HEVC) algorithms and Architectures, Editors: Madhukar Budagavi, Gary J. Sullivan, Vivienne Sze; chapter 3; ISBN 978-3-319-06894-7; 2014, the entire contents of which are incorporated herein by reference.

[0108] In some examples, the resulting blocks or regions have a size, and in some cases a shape, which, by means of a decision tree, can generally follow the settings of image features within the image. This in itself can allow for improved encoding efficiency, as samples representing or following similar image features will tend to be grouped together by this setting. In some examples, square blocks or regions of different sizes (e.g., 4x4 samples of blocks up to 64x64 or larger) are available. In other example settings, blocks or regions of different shapes can be used, such as rectangular blocks or arrays (e.g., vertically or horizontally oriented). Other non-square and non-rectangular blocks can be envisioned. The result of dividing the image into such blocks or regions is (at least in this example) that each sample of the image is assigned to one and only one such block or region.

[0109] Change Skip Mode

[0110] Figure 9 The so-called transform skip mode is illustrated schematically. In this mode, a sample block (e.g., a rectangular coded block) or sample array (e.g., a so-called transform unit (TU)) is assigned a "transform skip" mode indicator, for example, by a portion of the functionality of controller 343. When the transform skip indicator is set, as shown... Figure 9As illustrated in the schematic bypass path 900, it bypasses the transform unit 340 (in the encoding path) and the inverse transform unit 430 (in the decoding path on the encoding side or in the decoder), so that no spatial frequency transformation is applied to the samples in that particular block.

[0111] Depending on the attributes of the block in question, the attributes of nearby blocks, trial (full or partial) encoding, etc., the controller 343 may select a transformation skip mode in addition to the possible choices of DCT, DST, or another transformation mode. Typically, the selection algorithm executed by the controller 343 aims to improve the encoding efficiency of the block in question.

[0112] In some previously presented example arrangements, the transform skip mode was restricted to a block size of 4×4 or smaller. In recent examples, this restriction has been relaxed, and the transform skip mode can be selectively applied to larger blocks. The transform skip mode can also be applied to TUs even when the TU is actually treated as multiple (smaller) sub-TUs.

[0113] Figure 10a and Figure 11a The corresponding scanning directions are schematically shown, where, Figure 10a An example is provided for applying skip blocks to 4×4 transforms. Figure 11a An example is provided for a so-called transform block, which is a block in which transform skip mode is not enabled, and therefore the block has been spatially frequency transformed (or more than once frequency transformed) by transform unit 340 during encoding.

[0114] refer to Figure 10a In the case of a transform skip block, in this example, the scan order is diagonal from the top left corner ("1") to the bottom right corner ("16"). Conversely, as Figure 11a As shown, in the case of a transform block (as an example of a coding block), the scan order is diagonal from the bottom right to the top left. Note that, apart from which coefficients or samples are “encoded” or “decoded” to derive the coding parameters for subsequent samples or coefficients, the scan order used makes little substantial difference to the techniques discussed below.

[0115] For larger blocks, a similar scanning order can be used, or sub-blocks with coefficients of 4×4, such as sub-TUs, can be scanned as shown in the figure, using a predetermined pattern to scan each sub-block sequentially.

[0116] Generally, a sample or coefficient block can be viewed as a group of data values ​​(or, once encoded, a group of encoded data values), each group of data values ​​having an associated encoding order (in other words, such as...). Figure 10a and Figure 11a (The scan order is shown in the example).

[0117] refer to Figure 10b and Figure 11b In at least some examples of the processing discussed below, references are made to samples or coefficients that have been encoded or decoded prior to the encoding or decoding of given coefficients 1000 and 1100 (for convenience, even in the case of transform skip blocks, the single general term "coefficient" may be used below). In the case of transform skip, the coefficients of the prior processing relevant to at least some of the techniques discussed below will be coefficients in a predetermined group or pattern, as shown in shaded form (one box for each coefficient), which are above and to the left of given coefficient 1000. In the case of non-transform skip operations, a similar predetermined pattern or grouping is used, but here, the coefficients of the prior processing relevant to at least some of the techniques discussed below are coefficients below and to the right of given coefficient 1100 (shown in shaded form). As mentioned above, these coefficients will be referenced by at least some of the techniques below. If any coefficient in the relevant shaded group is unavailable, for example because the coefficient will fall into another block or a block that has not yet been encoded or decoded, the coefficient is simply omitted from the corresponding process, and if necessary, the result of the process can be normalized to a smaller number of coefficients. (For example, normalization is related to the process of deriving the average value of the shadow coefficients, but not to the process of detecting the maximum or minimum value of the shadow coefficients.)

[0118] Data sets and escape codes

[0119] In the example arrangement, the entropy encoding stage (e.g., performed by the entropy encoder 370, with the reverse process performed by the entropy decoder 410) involves encoding the quantized transform coefficients of the scan (the scans applied by the scan unit 360 conform to the examples for transform skip and transform block shown in Figures 10 and 11, respectively).

[0120] Entropy coding is set up to encode values ​​into one or more so-called datasets and escape codes for the remaining values ​​not encoded by the datasets.

[0121] To generate the dataset, the data values ​​to be encoded are processed in the encoding order (e.g., scan order). The dataset generated for sample blocks such as 4×4 blocks or 4×4 (or other) sub-parts of larger blocks can be selected as zero or more of a set of candidate datasets (that is, datasets can be enabled, but not for specific coefficients, sub-TUs, or other blocks or groups), wherein the set of candidate datasets may include one or more of the following:

[0122] The importance plot (Sig) indicates the location of so-called "important" coefficients or samples, i.e., non-zero coefficients or samples. Each coefficient position in the block is encoded with an importance flag indicating a non-zero value.

[0123] The Greater Than 1 (GT1) flag indicates whether the absolute value of each importance coefficient is greater than 1. In some 4×4 block examples, the flag is sent only for the first 8 importance coefficients in the encoding order; in other examples, the flag can be sent for every importance coefficient. In other examples, if the importance flag is sent, the GT1 flag is always sent.

[0124] The "value &1" flag, or parity flag, is actually the least significant bit (LSB) of this stage (where & represents a logical AND operation).

[0125] The Greater Than 2 (GT2) flag indicates whether the absolute value of a coefficient is greater than 2, up to and including the first coefficient in the scan sequence with this attribute. Note that this flag is sent only for coefficients greater than 1 as indicated by the GT1 flag.

[0126] In some examples, the GT2 flag is no longer sent after the first coefficient greater than 2 appears in the scan sequence. However, in at least some of the current examples discussed, the GT2 flag may be sent on each occurrence of the computation, or at least a certain number of occurrences for each coefficient of the subTU (e.g., four occurrences; the allowed number of occurrences for a subTU is selectable, as described below).

[0127] In some examples, for non-TS operations, the GT2 flag is encoded whenever the GT1 flag is set. A limit of 4 is applied to the TS, up to four times for each coefficient, or until it is not set. Therefore, if the first GT2 flag is not set, the value is 1 or 2 (depending on parity); if the first GT2 flag is set but the second is not, the value is 3 or 4; if the first two GT2 flags are set but the third is not, the value is 5 or 6, and so on.

[0128] The coefficient sign provided for importance coefficients.

[0129] The absolute coefficient value (ABS(COEFF)) is modified in response to each encoding process of the above arrangement, and the modified value is used in the next encoding process. The modification is:

[0130] Subtract 1 when generating the important graph;

[0131] Subtract 1 when generating the GT1 graph;

[0132] When generating a flag with the value & 1, divide by 2.

[0133] This provides an example where, when selecting one or more datasets, encoding with a first encoding technique involves modifying data values ​​after encoding with a given dataset to account for values ​​that can be encoded with that dataset.

[0134] In other words, the coefficients for which a GT2 flag has already been generated actually have a minimum value of 4, as shown in the example below, where each dataset is shown in turn, and the columns below indicate the remaining values ​​(Val) to be encoded after the above modifications:

[0135]

[0136] Escape codes

[0137] Escape codes are used to encode the remaining absolute levels, that is, the level information not encoded by the aforementioned dataset. Due to the effective subtraction of 4 discussed above, in an arrangement where a GT2 flag is always sent during application, the remaining absolute levels only need to be encoded as "coeff-4". In the case of sending more than one GT2 flag for a coefficient, cancellation increments to indicate an increase in the contribution to the value represented by each consecutive GT2 flag.

[0138] The remaining absolute levels are encoded by escape codes, for example, including the first part and the second part which is not unary encoded. The second part can have a length in bits, which depends on the size value of the second part defined by the so-called Rice parameter.

[0139] This arrangement can be called Golomb-Rice code, where the value to be encoded is considered to have two parts (the first and second parts mentioned above). The first part is the result of dividing the value to be encoded by M, where M=2. b The second part is the remainder of the value to be encoded, for example, b least significant bits. In the discussion provided here, the parameter b is referred to as the second part size value.

[0140] In the example, the quotient, or first part, is encoded using unary coding, followed by the remainder, encoded using, for example, truncated binary coding. Note that if M=1, this coding is equivalent to unary coding.

[0141] In the example embodiment, the first part is a prefix and the second part is a suffix. For example, the first part may include a unary encoded value. For example, the first part may include a truncated unary value. However, note that the terms "first" and "second" are merely identifiers and do not necessarily mean that the first part must precede the second part in the encoding or transmission order.

[0142] Export the second part's size value on the encoding side.

[0143] Figure 12 An example encoding device is illustrated schematically. The device will be described in detail below, but from the perspective of this discussion, an important feature is that the device adaptively generates a second part size value for encoding a specific data value based on the previously encoded data values ​​in the encoding sequence.

[0144] refer to Figure 12 The generator 1210 receives data values ​​1200 from the scanning unit 360 in scanning order. The generator 1210 generates the aforementioned dataset, namely the importance graph, GT1 flag, LSB or parity check (val&1) flag, and GT2 flag. These are provided to the output unit 1220 for output to the encoded data stream.

[0145] Encoder 1230 encodes escape codes. Encoder 1230 responds to detector 1240, which detects whether any remaining absolute values ​​need to be encoded, and also responds to generator 1250, which generates a second part size value. In other words, it detects whether the current data value exceeds the maximum value that can be encoded from the dataset in use. Generator 1250 receives the previously encoded data value from data value 1200 and a parameter optionally defining the bit depth 1255 of data value 1200 as input, and may refer to a lookup table (LUT) (not shown).

[0146] Generator 1250 responds to so-called historical data stored in historical data memory 1260. Historical data may represent an array of counter values ​​or "historical data items" (e.g., a multidimensional array), which can be built and / or modified using techniques discussed below.

[0147] The nature and use of historical data, regarding the selection of zero or more datasets and the export of the second part size, will be discussed in detail below. On the encoder side, the historical data store is configured to store historical data for encoded data items, indicating one or more aspects of the encoded data item. In some examples, the stored historical data is associated with a block of encoded data items, indicating one or more aspects of the data item block being encoded.

[0148] Generator 1250 can generate a second part size value 1265 for each data value 1200, regardless of whether the data value requires escape codes. Alternatively, it can generate a second part size value only for data values ​​that actually require escape codes.

[0149] The encoder 1230 then performs the escape code encoding as described above and provides the escape code to the output unit 1220 for output to the data stream.

[0150] When the remaining value is too large to be fully represented by escape codes (that is, the value is greater than the maximum value that can be represented by escape codes using the main parameter), an alternative type of code (escape-escape code) can be provided.

[0151] Assuming the entropy encoding and decoding processes are lossless, the generator 1250 is using information that will also be available on the decoder side to derive the second part size value by using historical data, which is at least partially dependent on data derived from previously encoded data values, as source information (or at least as part of the source information). Therefore, on the decoder side, a similar derivation can be performed for previously decoded data values. Of course, if the specific entropy encoder and decoding processes used are not lossless, the encoded and subsequently decoded data values ​​can be used as source information on the encoder side, which would be equivalent to providing information after the entropy encoding stage. Figure 7 The return path is 390. However, given the lossless nature of the encoding used in this example, equivalent information can be obtained from the data value to be encoded on the encoder side and the decoded data value on the decoder side.

[0152] refer to Figure 13 The decoding device includes a dataset decoder 1300, which is configured to decode the aforementioned dataset (up to the GT2 flag). A detector 1310 detects whether any escape codes or values ​​are provided, and if so, passes these escape codes or values ​​to an escape code decoder 1320, which applies the inverse operation to the escape code encoding, i.e., Golomb-Rice decoding. To do this, decoder 1320 utilizes a second part size value information 1330 provided by generator 1340, which functionally corresponds to generator 1250 because the generator may respond to a dominant bit depth and may respond to a lookup table (the same lookup table used on the encoder side), and also respond to historical data stored in history memory 1350, depending on the decoding of the decoded data value 1360. In other words, on the decoder side, the history data memory is configured to store historical data for decoded data items, which indicates one or more aspects of the decoded data item being decoded. In some examples, the stored historical data is associated with blocks of decoded data items (e.g., sub-data), and the historical data indicates one or more aspects of the decoded data item block. Decoder 1320 uses the second part of the size value information 1330 to decode the escape code and outputs the decoded dataset and any combination of the decoded escape codes as decoded data 1370. This decoded data forms the output of the process and also forms the input 1360 of generator 1340.

[0153] Examples of encoding and decoding techniques

[0154] The operation will now be described. Figure 12 or Figure 13Example technologies for the device. In the following discussion, Figures 14 to 17 This involves non-transform skip (non-TS) operations (i.e., operations using frequency transforms or more than one frequency transform); and Figures 18 to 23 This involves the Transform Skip (TS) operation as described above.

[0155] Figure 14 The application of non-transformation skip arrangement is given. Figure 12 An overview of the device's coding process.

[0156] In step 1400, in response to historical data stored in the history memory 1260, the generator 1250 derives a parameter blockParameter associated with the current sub-TU. Here, a sub-TU represents a set of samples to be encoded, and the parameter derived in step 1400 represents a group parameter applied to that sub-TU. This parameter is derived at least in part based on historical information, such as a counter associated with previously encoded groups or sub-TUs.

[0157] Step 1400 (and 1800 below) represents an example of generating block parameters for a given data item block, which depend at least in part on the historical data applied to the given data item block.

[0158] Historical Information

[0159] Historical data is stored in the historical memory 1260 / 1350 on the encoder / decoder side, and is referenced by... Figure 16 The discussion focuses on later stages of the process, including exporting and updating. Historical data is exported symmetrically on both the encoder and decoder sides, ensuring that the same historical data is available at any point in the process, in every case, and that the same decisions and / or exports can be made in response to this historical data. Historical data can be correlated with previously used riceParameters or other information and can be partitioned in various ways, such as by transforms or transform skip operations, luminance or chrominance components, TU size, Manhattan distance to the top-left corner of the TU (Manhattan distance is the distance between two samples measured along a right-angle axis), etc. Counter information is used to derive the blockParameter and baseRiceParameter (discussed below).

[0160] Historical data items can be provided, as, for example, a one-dimensional or multi-dimensional array, where the selected or indexed dimensions are one or more of the following:

[0161] Current TU size

[0162] The position of TU or coefficient in the image

[0163] TS or non-TS

[0164] Position of coefficients in TU or subTU

[0165] Manhattan distance to the coefficient in the top left corner or refer to the following: Figures 27a to 35 Other methods discussed

[0166] Chromaticity or brightness

[0167] Color components

[0168] Historical data can be provided as a data item for each TU or each subTU, or as a historical data item for each coefficient position or group of coefficient positions.

[0169] These possible categories of historical data can be summarized as follows:

[0170] The color components represented by given image data values;

[0171] The size of the block containing the data values ​​of a given image;

[0172] The location of a given image data value within the image;

[0173] The position of a given image data value within the block of image data values ​​containing that given image data value;

[0174] The location of an image data value block containing a given image data value in the image;

[0175] The position of the sub-block of image data values ​​containing a given image data value within the image data value block;

[0176] The block size of the image data value block containing the given image data values;

[0177] The distance between a given image data value and a predetermined location within an image data value block containing the given image data value; and

[0178] Whether to use spatial frequency transformation to generate the given image data values.

[0179] Historical data is retrieved by applying the main parameters to the current TU / subTU / coefficient (used by steps 1400, 1600, 1800, 2000 or generated by steps 1630, 2030). These provide an index to an array (potentially a multidimensional array) of historical data values ​​to obtain relevant historical data items applied to the parameters associated with the coefficients and / or blocks.

[0180] Historical data can be initialized to all zeros, for example, at the start of encoding or decoding of any one or more sequences, images, slices, sub-pictures, CTUs, etc.

[0181] Export blockParameter

[0182] Step 1400 Select and export the parameter blockParameter to determine the signaling of the current sub-TU.

[0183] The reliance on historical data can be one or more of a variety of example possibilities. In some examples, historical data is looked up for the attributes applied to the subTU being encoded (or, in the case of providing historical data for each coefficient, for example coefficients such as the top-left coefficient), and set as the block parameter for that subTU.

[0184] In other examples, a combination (e.g., a weighted sum) of historical data items associated with multiple coefficient positions is generated and used as a block parameter.

[0185] Determine binary

[0186] In step 1410, in addition to or instead of determining the size of the second part, generator 1250 determines a set of binary or flags to use, along with the rice encoding offset and offset. This involves determining how much dataset can be used in encoding step 1440 in response to the block parameter discussed above. The dataset may include importance flags, greater than one (GT1) flags, greater than two (GT2) flags, and parity flags. The choice of which of these to use may be in response to the expected magnitude of the value to be encoded, which in turn depends on the block parameter.

[0187] In some examples, the binary representation is selectable at the level; that is, using the example just given, the available options in step 1410 are:

[0188] a) None

[0189] b) Only importance indicators;

[0190] c) Importance markers and GT1 markers;

[0191] d) Importance flag, GT1 flag, and parity flag;

[0192] e) Importance flag, GT1 flag, GT2 flag, and parity flag

[0193] In other examples, options (d) and (e) can be interchanged.

[0194] For example, it can be selected as a mapping between blockParameter and the corresponding flag set, for example, as:

[0195]

[0196] In other examples, it is not necessary to apply hierarchies as described above, and there can be a mapping between the appropriate range of the blockParameter and the choice of the binary or flag to use. For example, such a mapping could be:

[0197]

[0198] In non-TS operations, one or zero GT2 flags are used, so the choice made in step 1410 is to use one or not use the GT2 flags.

[0199] For coding efficiency of smaller coefficients, the parity flag may be advantageous, but for larger coefficients, the efficiency of the parity flag may gradually decrease. Therefore, when the blockParameter is large (which tends to indicate larger coefficients), the parity flag can be disabled.

[0200] Step 1410 also uses the selected group of flags applied to the TU to determine the number of encoded binary bits required to encode the subTU. Each type of flag has associated requirements in terms of encoded binary bits, allowing step 1410 to calculate each coefficient or, based on the block size (e.g., the subTU size), how many binary bits are needed for the block.

[0201] Step 1410 sets the rice encoding offset so that the maximum value represented by the actual flag group used is used, for example, as described above, options (a) through (e) are 0, 1, 2, 2, and 4 respectively. If a parity flag is used, the value "offset" is set to 1, otherwise it is set to 0.

[0202] Then, control moves to step 1420, where it is detected whether there are more coefficients to be encoded in the current sub-TU.

[0203] CABAC encoding

[0204] The CABAC technique is used to perform encoding based on the selected binary or flag, and this is done via steps 1430, 1440, and 1490. These are shown surrounded by dashed boxes to indicate the possibility that encoding of the entire block (e.g., sub-TU) can be performed at this stage before moving on to the problem of handling any bypass encoding. In other words, these three steps can operate in a sub-loop, but for the clarity of the diagram, this sub-loop is not explicitly drawn. In other examples, steps 1430, 1440, and 1490 can be performed for a single coefficient, and then control moves to steps 1450 and 1460 regarding that coefficient before returning to step 1420. Either option is included as an embodiment of this disclosure.

[0205] Assuming there are coefficients to be encoded in step 1420, control proceeds to step 1430. In step 1430, it is checked whether there are enough binary records available at this stage of encoding the image to encode the next coefficient using the binary records required by the currently selected flag set determined in step 1410. If the answer is yes, encoding is performed in step 1440 using the selected binary records. Step 1440 will be described in more detail below. If the answer in step 1430 is no, control proceeds to step 1490. In step 1490, the rice encoding offset is set to zero, the offset is set to zero, and control proceeds to step 1450. For a sub-loop performing CABAC encoding based on a block, the control proceeding to step 1490 indicates the end of the sub-loop; that is, control falls outside the sub-loop, and CABAC encoding for the current block has ended.

[0206] In the case of a sub-loop arrangement, control will return from step 1440 to step 1430 until the sub-loop has been completed and the entire block has been CABAC encoded.

[0207] At the end of the CABAC encoded sub-loop, either a successful result at the end of the sub-loop in step 1440 or an early termination of the result in step 1490 will transfer control to step 1450. In step 1450, it is checked whether bypass coding is needed. If the answer is no, control returns to step 1420. If the answer is yes, control transfers to step 1460, where bypass coding is performed. Step 1460 will be described in more detail below.

[0208] Note that for the entire block or sub-TU, bypass coding can be performed on a similar sub-loop basis, as schematically shown by the dashed box around step 1460. Therefore, in a sub-loop arrangement, CABAC coding for all applications is performed first, followed by bypass coding for all applications.

[0209] Returning to the negative result of step 1420, if there are no more coefficients to be encoded in the current sub-TU (because both sub-loops have been fully executed, or because the main loop based on each coefficient has been executed), then the sign bit is encoded for the sub-TU in step 1470, and the process ends in step 1480.

[0210] Therefore, this provides an example of encoding a given data item 1440, 1840 (hereinafter) of a given data item block using a first encoding technique, which includes encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for a data item, and selecting the series of datasets 1410, 1810 from multiple candidate datasets based on block parameters generated for the given data item block.

[0211] decoding

[0212] On the decoding side, appropriate devices can be used. For historical data stored in historical memory 1350, such as historical data related to previously decoded blocks, the same derivation of blockParameter and / or the binary and offset to be used is performed (steps 1400, 1410). Steps 1400, 1410 are performed by generator 1340 on the decoder side. Steps 1440, 1470, 1460 on the decoder side involve decoding operations, not encoding operations; tests 1420, 1450 involve whether there are still coefficients to decode and whether bypass decoding is required. Figure 14 The generation of blockParameter and other similar parameters in the arrangement is performed by generator 1340. If a similar sub-loop arrangement is used on the encoding side, a similar sub-loop arrangement is performed on the decoder side.

[0213] Therefore, in Figures 14 to 21 References to encoding steps or processes in the discussion should also be considered as referring to the corresponding and symmetrical decoding steps and processes on the decoder side, where decisions and derivations are made based on the same source history data (derived from already decoded coefficients rather than already encoded coefficients).

[0214] Detailed discussion of step 1440

[0215] exist Figure 15 Step 1440 is shown in more detail, also for the case of non-transformation skipping.

[0216] Steps 1500, 1530, 1560, and 1580 represent tests to determine whether step 1410 selected to use the importance flag, GT1 flag, GT2 flag, and parity flag. In each case, a positive result drawn on the right-hand side indicates that step 1410 has determined that the corresponding flag should be used, while a negative result drawn vertically downwards indicates that step 1410 has determined that the corresponding flag should not be used.

[0217] In the case of an importance flag, if it is to be used, control proceeds to step 1510, where the importance graph is encoded, and the number of available binary bits is reduced by the number used to encode the importance graph. If, in step 1420, the sub-TU is fully encoded (this is detected by checking whether the "encode" flag indicating encoding of the importance flag is set to indicate "not encoded"; however, if the importance flag is "encoded" in step 1520, it cannot be guaranteed that the encoding process has been fully executed), control proceeds to the output of step 1440, in other words, to the output of step 1440. Figure 14 Step 1450. If not, control proceeds to the next test 1530. In a positive result, this test proceeds to step 1540, where the GT1 mapping is encoded and the number of available binary bits is reduced. Similarly, if the subTU is fully encoded (as indicated by the GT1 flag, which is not yet used in this case), control proceeds to step 1450; otherwise, the next test 1560 is executed. If the answer is positive, the GT2 mapping is encoded in step 1570, and the number of available binary bits is reduced. Likewise, if the result of step 1580 is positive, parity is encoded in step 1590, and the number of available binary bits is reduced.

[0218] For a specific choice of dataset, Figure 15 The technique provides an example in which, when two or more datasets are selected, encoding by the first encoding technique involves encoding the two or more datasets in a predetermined dataset order.

[0219] Bypass coding

[0220] As described above, bypass coding is performed using Rice coding that depends on the Rice parameter, such that the second coding technique includes encoding an escape code that comprises a first part and a non-unary encoded second part, the second part having a bit-length that depends on the size of the second part.

[0221] Figure 16 Further details of step 1460 above are provided, also in the case of a non-transform skip operation. Figure 16In the diagram, information 1640 stored in history memory 1260 / 1350 is schematically shown in dashed lines. In addition to providing input to step 1400 discussed above, it also provides input to step 1600 and is updated by step 1630, both of which will be discussed below.

[0222] Step 1460 includes, for example: Figure 16 The steps 1600…1630 are shown, and the process can be performed on a coefficient-by-coefficient basis or on a sub-loop basis for the entire block as described above.

[0223] In step 1600, a baseRiceParameter is established to determine the signaling for the sub-TU. For example:

[0224] baseRiceParameter = Mapping(selected historical data item)

[0225] Here, the mapping is equal to the corresponding historical data item divided by 4, 16, or another value, and the selected historical data item is the historical data item corresponding to the current state of the transform skip flag or other such flags, component (or luminance / chroma), block size, scaling Manhattan distance, etc.

[0226] In step 1610, the parameter riceParameter is generated. The following will refer to... Figure 17 Step 1610 is described in more detail.

[0227] In step 1620, based on the parameter riceParameter, the remaining part of the current coefficient (any value exceeding the maximum value that can be encoded in step 1440) is encoded as a bypass value using Rice encoding, and in step 1630, the historical data 1640 is updated.

[0228] In summary, bypass coding can be considered as encoding any residual value of a given data item using a second coding technique different from the first coding technique. The residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first coding technique.

[0229] Update historical data

[0230] Example updates (as an example of storage steps, including modifying at least a given attribute of a given data item in response to the encoding of a given data item) may include overwriting the historical data item with a calculated riceParameter, for example, using any one or more of the following example techniques to incrementally update the historical data item:

[0231] Reset the historical data to all 0 values, for example, (as described above) at the start of encoding or decoding of any one or more of each sequence, image, slice, subpicture, CTU, etc.;

[0232] Same as above, but reset to a non - zero value, for example, a value calculated from the bit depth of the coefficient (e.g., (bit depth - 10) Divisor

[0233] Update the historical data for all coefficients or only for all non - zero coefficients;

[0234] Update the historical data only for those coefficients whose absolute value is greater than a threshold (non - zero), e.g., 4;

[0235] The riceParameter overrides the historical data entry indexed by the current block / coefficient parameter;

[0236] Selectively increment or decrement the historical data value according to the absolute coefficient value, for example:

[0237] If the value >= (3 << (riceParameter)), increment the historical data entry;

[0238] If (value << 1) < (1 << riceParameter), decrement the historical data entry

[0239] Selectively increment or decrement the historical data value ("count"), for example:

[0240] If the value >= (3 << (count / divisor))), increment the count;

[0241] If (value << 1) < (1 << count / divisor), decrement the count

[0242] In some examples, the decrement process may involve setting the historical data entry to max(0, historical data entry - decrement value) (the decrement value is, for example, 1 or another value as described below);

[0243] In some examples, the amount or quantum of increment can be greater than the amount of decrement; for example, increment +3 or +4, decrement -1 (with an optional feature of being constrained to the lowest allowed value zero as described above); more generally, the amount of increment and the amount of decrement can be different;

[0244] Where the value = the coefficient value encoded by the escape - coding process encoded at that coefficient position.

[0245] The divisor is chosen along with the increment and decrement. For example, where increment = +4, decrement = -1, divisor = 16. The divisor is usually a power of 2, so it can be achieved with a simple offset. It is also used in the process of generating the candidate Rice parameters discussed below.

[0246] Updates can be conditional; for example, each sub-TU may update any individual historical data item at most once.

[0247] This update can update more than one historical data item; for example, it can update historical data items related to the locations of neighboring samples.

[0248] Conditional updates based on the coefficient values ​​mentioned in the list above provide an example of a modification step that involves selectively modifying stored historical data, at least for a given attribute of the given data item, in response to the encoding of the given data item, only when the given data item exceeds the absolute value of a threshold. For example, the threshold could be 0 or 4.

[0249] In general, modifications to historical data can make the historical data represent one or more aspects of the magnitude indicating the encoded (decoded) data item. For example, one or more aspects of encoding a data item include data that depends on the size of a second portion generated for encoding the data item.

[0250] Generate candidate Rice parameters

[0251] refer to Figure 17 Step 1610 includes one or more steps 1700 for generating candidate riceParameters. Examples of candidate riceParameters include:

[0252] i. Default VVC technology

[0253] ii. Adaptive VVC technology

[0254] iii. Basic Rice Techniques

[0255] iv. Local technology

[0256] This arrangement provides an example of generating multiple candidate second part sizes (candidate riceParameters) and selecting from multiple candidate second part sizes based on historical data of a given attribute applied to a given data item (based on the baseRiceParameter discussed below).

[0257] At least in the default VVC and adaptive VVC technologies, for at least one candidate second part size, the generation step includes obtaining the candidate second part size by accessing a lookup table based on an index that depends on at least one previously encoded data item (in these examples, it depends on the "sum").

[0258] (i) In this example of non-TS operation, the default VVC technology (i) involves setting the index value as follows:

[0259] index = max(0, min(31, sum - 5 offset)

[0260] Where:

[0261] max(A, B) returns the larger one of A and B;

[0262] min(A, B) returns the smaller one of A and B;

[0263] offset is the main offset value discussed above;

[0264] sum = the sum of available shadow coefficients relative to the current coefficient 1100 in Figure 11a (assuming any unavailable coefficient is 0);

[0265] The index value then provides the index of a lookup table (LUT) for the Rice parameter value, and riceParameter is set to the LUT value of the index:

[0266] riceParameter = LUT(index)

[0267] (ii) In the adaptive VVC technology, the variable temp_shift (used for this calculation) is defined as:

[0268] temp_shift = max(0, (baseRiceParameter - 2)); and

[0269] index = max(0, min(31, ((sum - 5 offset) >> temp_shift)

[0270] Where:

[0271] ">>n" means right shift by n bits (note that "<<n" used below similarly means left shift by n bits);

[0272] riceParameter is set to the LUT value indexed by the index (in the same LUT), but with an added amount of offset:

[0273] riceParameter = LUT(index) + temp_shift

[0274] As an alternative to the expressions for the index given above, any of the following can be used:

[0275] index=max(0,min(31,(sum>>temp_shift)-5 offset)

[0276] or:

[0277] index=max(0,min(31,(sum>>temp_shift)-temp_count `offset`, where `temp_count` is the number of available coefficients (possibly less than 5) used to calculate the sum.

[0278] In other examples, the following techniques (implemented here with example pseudocode) can be used in conjunction with adaptive VVC techniques. Historical data or "count" values ​​are obtained from a multidimensional historical data array, as a function of any one or more parameters discussed above, such as {the distance value in question, TS or non-TS, color components}.

[0279] temp_shift = max(0, (counter / divisor) - 2) {where the divisor is the predetermined constant scaling factor discussed above}

[0280] If it is in TS mode:

[0281] index = template [scan_position, absolute_coefficient_value, cutoff,temp_shift] + temp_shift

[0282] riceParameter = LUT (index) + temp_shift

[0283] If not in TS mode:

[0284] index = template [scan_position, absolute_coefficient_value, cutoff,temp_shift]

[0285] riceParameter = LUT (index) + temp_shift

[0286] Here, the cutoff is the minimum coefficient value that needs to be encoded using Golomb Rice encoding (instead of using a flag) (for the previously proposed system, this is 0 for TS or 4 for non-TS, but here it can be the same or different from those values).

[0287] The template is as follows. The template used in the above discussion involves... Figures 10a-11b This represents the sum of all coefficients in the bottom right corner (transform or regular residual coding) or top left corner (transform skip residual coding), and exists in previously proposed systems, such as the so-called universal video coding system. The pseudocode provides the sum of absolute coefficient values ​​(see...). Figures 10a to 11b The right offset is performed based on the calculated value `temp_shift`. Introducing the offset is advantageous. This offset is useful for larger coefficient values ​​(common at higher bit depths) and adjusts the sum of values ​​down to a 0..31 scale used for the LUT. Without the offset, the sum would typically be clipped to 31. Adding the same value after the LUT corrects the number of results. `temp_shift` is used instead of `baseRiceParameter` because this is the normalization step. Coefficient values ​​within a 10-bit profile (adjusted for this in previously proposed systems) result in a `baseRiceParameter` value as high as approximately 2. Therefore, `temp_shift` ensures that the fit only occurs when useful and is the correct (or at least useful or appropriate) relative size.

[0288] In the specific adaptive VVC example above that uses temp_shift, the step of generating multiple candidate second part sizes includes selectively applying offsets based at least on historical data.

[0289] In the example of adaptive VVC, the application steps include at least one of the following:

[0290] (i) Apply a right offset in the derivation of the index, which depends on the offset; and

[0291] (ii) Add the offset to the index export.

[0292] In various adaptive VVC examples, the generation step includes combining the value accessed from the lookup table with a value that depends on the offset (e.g., riceParameter = LUT(index) + temp_shift). For example, the generation step may include adding the value accessed from the lookup table to the offset.

[0293] Note that the term "template" is also used in the second usage below, related to selecting historical values ​​for the derivation of the original rice value. This is based on the location of the coefficient, not its value or the coefficient values ​​around it. This is a classification technique used for locations that might be expected to have similar coefficient sizes (without checking the values).

[0294] (iii) The basic Rice technique involves setting the riceParameter to the baseRiceParameter:

[0295] riceParameter = baseRiceParameter

[0296] (iv) The local technology is implemented as follows:

[0297] v = function ( Figure 11b (Shadow neighbors with a given coefficient of 1100).

[0298] in:

[0299] Functions include maximum value, minimum value, average value, etc.

[0300] Then initialize riceParameter as follows:

[0301] riceParameter = baseRiceParameter;

[0302] Increase or decrease riceParameter as follows:

[0303] And v>(3<<(riceParameter)), incrementing riceParameter;

[0304] When v < (3 << (riceParameter-2) and riceParameter > 0, decrease riceParameter.

[0305] Optionally, a maximum number of iterations can be applied, for example, such that riceParameter can be increased or decreased by a maximum of + / - 2.

[0306] Therefore, generating at least some candidate Rice parameters can provide examples of deriving the second part size, at least in part, based on historical data of a given attribute applied to a given data item.

[0307] Select in candidate Rice parameters

[0308] In step 1710, the generated results of candidate parameters are combined and / or selected to generate the actual riceParameter for use in step 1620.

[0309] In the example, you can select from the candidate Rice parameters based on the value of the baseRiceParameter. For example only, the selection can be mapped to the value of the baseRiceParameter as follows:

[0310]

[0311] In other examples, instead of using a single selection, it is possible to generate a combination of two or more candidate Rice parameters, for example, as a weighted sum of the corresponding candidate Rice parameters, where the candidate and weights to be used in the weighted sum are provided as a mapping of, for example, baseRiceParameter.

[0312] As mentioned above, these processes occur symmetrically on the encoder and decoder sides, and always use the data available to the encoder (representing the previously encoded block) and the decoder (representing the previously decoded block), so that the same result can be obtained in every case.

[0313] Transformation skip operation

[0314] Figures 18 to 23 Closely corresponding Figures 14 to 17 And in many cases, the corresponding steps were taken. In fact, the table below shows... Figures 14 to 17 The corresponding steps and Figures 18 to 23 The steps in this paper are essentially the same, so they will not be described in detail here. However, the differences will be discussed in detail below.

[0315]

[0316] Difference 1 - Sign bit

[0317] refer to Figure 18 It does not encode symbolic information as a negative result of a test about whether there are more coefficients to encode. Figure 18 Instead of step 1820, the negation of step 1920 is performed within step 1840 as step 1930. Therefore, the negation of step 1820 simply terminates the process 1800 of the sub-TU.

[0318] Difference 2 - GT2 logo

[0319] Step 1810 determines not only which binary numbers to use, but also how many GT2 flags to use, which can be up to four in the case of TS processing. These are encoded in step 1890, assuming that the remaining digits of the original number assigned by step 1810 (that is, those that have not been encoded in that sub-TU so far) are still greater than zero.

[0320] Similarly, refer to the section on step 1840. Figure 19 The negative result of the fully encoded test 1920 provides the encoding of the sign bit in step 1930. Step 1840 does not involve encoding the GT2 flags, as these are processed separately as described above.

[0321] Figure 18 The arrangement can be considered to include three sub-loops for each sub-TU or other block: the first sub-loop includes steps 1830, 1840, and 1895; then the second sub-loop includes steps 1850 and 1890; and then the third sub-loop includes step 1870, and these sub-loops are executed in the listed order.

[0322] Difference 3 - Default VVC technology

[0323] In this example, the default VVC technology includes setting riceParameter=1.

[0324] Difference 4 - Coefficients from previous encoding / decoding

[0325] In TS operations, the previously encoded / decoded coefficients used to generate candidate Rice parameters in adaptive and local techniques are: Figure 10b The coefficients are indicated by a light shading around a given coefficient of 1000.

[0326] Alternative examples that do not require block parameters

[0327] In the example above (which involves what will be discussed below) Figure 22 and Figure 23 In steps 1400 and 1800, the block parameter is derived and used as the basis for determining which binary / flag to use and setting other parameters for encoding and decoding.

[0328] However, other examples do not require the same form of block parameters. Instead, decisions about which binary / flag to use can be made on a coefficient-by-coefficient basis. For example, using techniques similar to those discussed in conjunction with steps 1410 and 1810, other corresponding coefficients can be determined individually regarding selected historical data items or combinations or weighted combinations of historical data items addressed by the current coefficient position and other parameters. Such examples may involve the discussion below. Figure 24 and Figure 25 .

[0329] In this way, in this coefficient-by-coefficient arrangement, the choice of which binary / flags to use for a coefficient can depend on:

[0330] Step 1410 / 1810 makes a selection based on the position of this coefficient; and

[0331] Is there enough binary data (1430 / 1830) remaining to encode the selected binary / flag?

[0332] In other words, this exemplary coefficient-by-coefficient arrangement can be considered as providing binary / flag selection for CABAC encoding based on (at least) the two factors mentioned above.

[0333] (Note that in the case of using blockParameter discussed above, this is an arrangement that assigns a set of datasets to blocks, so the question of whether the binary is available is irrelevant to the block-level assignment; however, for the assignment of coefficients one by one, the availability of the binary forms a second aspect of the assignment process.)

[0334] Therefore, this provides an example of encoding a given data item 1440, 1840 using a first encoding technique (in this example, CABAC encoding of the dataset), which involves encoding a series of zero or more datasets, each representing a corresponding range of values ​​for the data item, and selecting this series of datasets 1410, 1810 from multiple candidate datasets, depending on (i) the number of previously encoded datasets; and (ii) historical data applied to a given attribute of the given data item. Here, in the case of selecting binary values ​​one coefficient at a time, it can be considered that it depends on the selection made in steps 1410, 1810 and the detection 1430, 1830 regarding whether enough binary values ​​remain to be used for encoding the next coefficient. As described above, the corresponding techniques and decisions are performed during decoding.

[0335] Summary of equipment

[0336] According to the technical operation described in this article Figure 12 The device provides an example of a device for encoding consecutive data items, the device comprising:

[0337] The historical data storage 1260 is configured to store historical data of coded data items, which indicates one or more aspects of the coded data items being encoded.

[0338] A first encoder circuit 1210 is configured to encode a given data item using a first encoding technique, the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously encoded datasets; and (ii) historical data applied to a given attribute of the given data item, selecting a series of datasets from a plurality of candidate datasets; and

[0339] The second encoder circuit 1230 is configured to encode any residual value of a given data item using a second encoding technique different from the first encoding technique, wherein the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique.

[0340] According to the technical operation described in this article Figure 13 The device provides an example of a device for decoding an input data signal representing consecutive data items, the device comprising:

[0341] The historical data storage 1350 is configured to store historical data of decoded data items, which indicates one or more aspects of decoding the decoded data items;

[0342] A first decoder circuit 1300 is configured to decode a given data item using a first decoding technique, the first decoding technique comprising decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously decoded datasets; and (ii) historical data of a given attribute applied to the given data item, selecting a series of datasets from a plurality of candidate datasets; and

[0343] The second decoder circuit 1320 is configured to decode any residual value of a given data item using a second decoding technique different from the first decoding technique, wherein the residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique.

[0344] According to the technical operation described in this article Figure 12 The device provides an example of a device for encoding consecutive blocks of data items, the device comprising:

[0345] The historical data storage 1260 is configured to store historical data of encoded data item blocks, which indicates one or more aspects of the data item blocks being encoded.

[0346] Generator circuit 1250 is configured to generate block parameters for a given data item block, the block parameters depending at least in part on historical data applied to the given data item block;

[0347] A first encoder circuit 1210 is configured to encode a given data item of a given data item block using a first encoding technique, the first encoding technique including encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for a data item, and selecting a series of datasets from a plurality of candidate datasets depending on block parameters generated for the given data item block; and

[0348] The second encoder circuit 1230 is configured to encode any residual value of a given data item using a second encoding technique different from the first encoding technique, wherein the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique.

[0349] According to the technical operation described in this article Figure 13 The device provides an example of a device for decoding consecutive blocks of data items, the device comprising:

[0350] The historical data storage 1350 is configured to store historical data of decoded data item blocks, which indicates one or more aspects of decoding the data item blocks;

[0351] Generator circuit 1340 is configured to generate block parameters for a given data item block, the block parameters depending at least in part on historical data applied to the given data item block;

[0352] A first decoder circuit 1300 is configured to decode a given data item of a given data item block using a first decoding technique, the first decoding technique including decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for a data item, and selecting a series of datasets from multiple candidate datasets depending on block parameters generated for the given data item block; and

[0353] The second decoder circuit 1320 is configured to decode any residual value of a given data item using a second decoding technique different from the first decoding technique, wherein the residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique.

[0354] Note that, although Figure 12 and 13 In each case, the encoding circuit and the decoding circuit are referred to as two corresponding units, but in each case, the first and second circuits can be implemented as a single common circuit with two corresponding functions.

[0355] Use historical data from replication

[0356] As a variation of the techniques discussed above and below (and can be used in any combination thereof), the exemplary arrangement can utilize copies of historical data at least to some extent. For example, this can allow for a greater degree of parallel operation. (Refer to...) Figure 26 The flowchart discusses an example.

[0357] In summary, at the beginning of a specific processing stage 2600 (e.g., the start of processing each TU or sub-TU, or the start of processing each coefficient), a copy of all historical data is obtained (in step 2610), or at least a copy of historical data related to the processing performed in conjunction with that processing stage.

[0358] Processing with replicated historical data, such as the data discussed above. Figure 16 The related processing includes generating rice parameters (in step 2620) and making a decision on whether the historical data should be updated (in step 2630).

[0359] If (in step 2640) the historical data does indeed need to be updated using the above update procedure, then in step 2650 the update is applied to the actual historical data instead of the copy. Once the update has been processed, or if no update is needed (a negative result of step 2640), this is initiated by transferring control back to step 2620 if the current processing stage needs to process the next coefficient in step 2660. Otherwise, control returns to the next process stage in step 2600.

[0360] This arrangement provides an example of generating at least a portion of a copy of stored historical data that applies to a given attribute of a given data item;

[0361] The second part size is derived at least in part from a copy of historical data applied to a given attribute of a given data item (although other actions dependent on historical data may also be taken based on the copy rather than the "real-time" data; in fact, the copied data can be used anywhere in this discussion, except, for example, in the process of actually updating stored historical data, i.e., the "uncopied" or original historical data is described as being used); and

[0362] In response to the encoding of a given data item, at least the stored historical data applied to a given attribute of the given data item is modified.

[0363] Templates and template functions

[0364] As a variation of the above techniques (and can be used in any combination thereof), the exemplary arrangement can use template functions or representations as part of the indexing process of a multidimensional array of historical data.

[0365] Now refer to Figures 27a to 35 The templates shown discuss various methods that provide options to replace the aforementioned "Manhattan distance to the top-left corner" with coefficients and / or other functions of sub-block positions. Here, a keyword is provided to describe the index value riceIdx between 0 and 3. The riceIdx value is used as a parameter or index to access one dimension of the multidimensional array of historical data discussed above. These provide examples of introducing or processing dependencies on the historical data to be used (via riceIdx) according to one or more of the following:

[0366] The location of a given image data value within the image;

[0367] The position of a given image data value within the block of image data values ​​containing that given image data value;

[0368] The location of an image data value block containing a given image data value in the image;

[0369] The position of the sub-block of image data values ​​containing a given image data value within the image data value block;

[0370] Figures 27a to 35 The example shown schematically illustrates a 16×16 TU plotted as a 4×4 array of 4×4 sub-TUs. The same derivation can be used for coefficient positions within a TU if a different TU size is used.

[0371] Figure 27a The Manhattan distance method discussed above is illustrated schematically, as well as another method that can provide equivalent results.

[0372] In the case of the Manhattan distance approach:

[0373] riceIdx = min((posX + posY) >> 2, 3)

[0374] The same result is obtained in the case of the following function, which is called a template with clipping:

[0375] riceIdx = min(template(scanPos-minPos) + cgPosX + cgPosY, 3)

[0376] Here, scanPos is the scan position within the sub-block; minPos is the minimum scanPos within the sub-block; cgPosX and cgPosY are the X and Y positions of the sub-block (from (0,0) in the top-left sub-block to (3,3) in the bottom-right sub-block), in other words, these positions are constant for a given sub-block. The "template" represents the data values ​​in a 4×4 array, such as... Figure 27b As shown schematically in the diagram.

[0377] Figure 28 Another possible approach is illustrated schematically, referencing the Manhattan distance to the top-left corner of the sub-TU or sub-module. See here:

[0378] riceIdx = min(cgPosX + cgPosY, 3)

[0379] Figure 29 The arrangement uses multiple (e.g., two) different template arrays, such as Figure 30a and Figure 30b As illustrated. Here, Figure 30a The template array is used for the top-left sub-block (cgPosX, cgPosY) = (0, 0). Figure 30b The template array is used for all other sub-blocks.

[0380] riceIdx = min(templatei(scanPos-minPos) + cgPosX + cgPosY, 3)

[0381] Among them, template i This refers to the template array selected above.

[0382] exist Figure 31 A similar layout was used, in which multiple templates were used (two in this example), but the templates for all child blocks except the top-left child block were the same. Figure 32b Both are templates for a single value, and the template for the top-left child block is the same. Figure 32a In contrast, the template of the top-left sub-block exhibits variations between coefficient positions. Here:

[0383] riceIdx = (template(scanPos-minPos) + cgPosX + cgPosY, 3), used for the top left corner (although note that for this sub-block, (cgPosX + cgPosY) = 0, but riceIdx =template(scanPos-minPos) can be used for this sub-block).

[0384] riceIdx = min(1 + cgPosX + cgPosY, 3) is used for other...

[0385] Figure 33 The illustration schematically shows another variation of the same arrangement with a different "top left" template. Figure 34a However, it has the same "other" template ( Figure 34b ).

[0386] The last example method ( Figure 35 )as follows:

[0387] The "dc" coefficient (top left corner of the top left sub-block) is set to a riceIdx value (0 in this example); the rest of the top left sub-block is set to another riceIdx value (1 in this example), and all other coefficient positions are set to another riceIdx value (2 in this example).

[0388] To summarize these riceIdx techniques, the methods described above involve generating an index based on, for example, a potential scaled Manhattan distance from the top-left corner of the TU using a given coefficient; however, alternatives may include using:

[0389] Manhattan location of template + sub-TU

[0390] Manhattan distance of the sub-TU within the TU

[0391] Different templates for the top left sub-TU and other sub-TUs

[0392] Only the top-left child TU template (otherwise, a constant value).

[0393] DC / top left sub-TU (otherwise, a constant value)

[0394] Note that for some of these options, as mentioned above, it may be necessary to clip to the minimum or maximum value.

[0395] Summary of methods

[0396] Figure 22 This is a schematic flowchart illustrating a method for encoding consecutive data items, the method including:

[0397] Store (in step 2200) historical data of the encoded data item, which indicates one or more aspects of the encoded data item;

[0398] Encoding a given data item using a first encoding technique (step 2210), the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously encoded datasets; and (ii) historical data applied to a given attribute of the given data item, selecting a series of datasets from multiple candidate datasets; and

[0399] An arbitrary residual value of a given data item is encoded using a second encoding technique different from the first encoding technique (in step 2220), where the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique.

[0400] Figure 23 This is a schematic flowchart illustrating a method for decoding an input data signal representing consecutive data items, the method comprising:

[0401] Store (in step 2300) historical data of the decoded data item, which indicates one or more aspects of decoding the decoded data item;

[0402] Decoding a given data item using a first decoding technique (step 2310), the first decoding technique comprising decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously decoded datasets; and (ii) historical data applied to a given attribute of the given data item, selecting a series of datasets from multiple candidate datasets; and

[0403] By using a second decoding technique different from the first decoding technique, any residual value of a given data item is decoded (in step 2320), where the residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique.

[0404] Figure 24 This is a schematic flowchart illustrating a method for encoding consecutive blocks of data items, the method including:

[0405] Store (in step 2400) historical data of the encoded data item block, which indicates one or more aspects of the data item block being encoded;

[0406] Generate (in step 2410) block parameters for a given data item block, which depend at least in part on historical data applied to the given data item block;

[0407] Encoding a given data item of a given data item block using a first encoding technique (step 2420), the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for a data item, and selecting a series of datasets from multiple candidate datasets depending on block parameters generated for the given data item block; and

[0408] An arbitrary residual value of a given data item is encoded using a second encoding technique different from the first encoding technique (in step 2430), where the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique.

[0409] Figure 25 This is a schematic flowchart illustrating a method for decoding consecutive blocks of data items, the method including:

[0410] Store (in step 2500) historical data of the decoded data item block, which indicates one or more aspects of the decoding of the data item block;

[0411] Generate (in step 2510) block parameters for a given data item block, which depend at least in part on historical data applied to the given data item block;

[0412] Decoding a given data item of a given data item block using a first decoding technique (step 2520), the first decoding technique including decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for a data item, and selecting a series of datasets from multiple candidate datasets depending on the block parameters generated for the given data item block; and

[0413] By using a second decoding technique different from the first decoding technique, any residual value of a given data item is decoded (in step 2530), where the residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique.

[0414] Any one or more of the above encoding methods can be derived from Figure 7 and / or Figure 8 and / or Figure 12 The device implementation.

[0415] Any one or more of the above decoding methods can be derived from Figure 7 and / or Figure 8 and / or Figure 13 This is achieved through equipment.

[0416] Up to this point, embodiments of the present disclosure have been described as being implemented at least in part by a software-controlled data processing device. It should be understood that non-transitory machine-readable media (e.g., optical discs, magnetic disks, semiconductor memories, etc.) carrying such software are also considered to represent embodiments of the present disclosure. Similarly, data signals comprising encoded data generated according to the methods described above (whether or not they are contained on a non-transitory machine-readable medium) are also considered to represent embodiments of the present disclosure.

[0417] Clearly, many modifications and variations of this disclosure are possible based on the foregoing teachings. Therefore, it should be understood that, within the scope of the appended provisions, the technology may be implemented in ways other than those specifically described herein.

[0418] It should be understood that, for clarity, the above description has referenced various functional units, circuits, and / or processors in the embodiments. However, it will be apparent that any suitable functional distribution among the various functional units, circuits, and / or processors may be used without departing from the embodiments.

[0419] The described embodiments can be implemented in any suitable form, including hardware, software, firmware, or any combination thereof. The described embodiments can optionally be implemented, at least in part, as computer software running on one or more data processors and / or digital signal processors. Elements and components of any embodiment can be implemented physically, functionally, and logically in any suitable manner. In practice, the functionality can be implemented in a single unit, in multiple units, or as part of other functional units. Thus, the disclosed embodiments can be implemented in a single unit or can be physically and functionally distributed among different units, circuits, and / or processors.

[0420] Although this disclosure has been described in conjunction with some embodiments, it is not intended to be limited to the specific forms set forth herein. Furthermore, while features may appear to be described in conjunction with specific embodiments, those skilled in the art will recognize that the various features of the described embodiments can be combined in any manner suitable for implementing the technology.

[0421] The various aspects and characteristics are defined by the following numbered clauses:

[0422] 1. A method for encoding continuous data items, the method comprising:

[0423] Store historical data for coded data items, which indicates one or more aspects of the coded data items.

[0424] Encoding a given data item using a first encoding technique, the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously encoded datasets; and (ii) historical data applied to a given attribute of the given data item, selecting a series of datasets from multiple candidate datasets; and

[0425] By using a second encoding technique different from the first encoding technique, any residual value of a given data item is encoded, where the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique.

[0426] 2. The method according to Clause 1, wherein the second encoding technique includes encoding an escape code, the escape code comprising a first part and a non-unary encoded second part, the length of the second part depending on the size of the second part being in bits.

[0427] 3. The method according to Clause 2 includes deriving the second part size based at least in part on historical data that depends on a given attribute applied to a given data item.

[0428] 4. The method according to Clause 3 includes generating multiple candidate second part sizes and selecting from multiple candidate second part sizes based on historical data of a given attribute applied to a given data item.

[0429] 5. The method according to Clause 4, wherein the generation step includes obtaining, for at least one candidate second part size, a lookup table by accessing an index depending on at least one previously encoded data item.

[0430] 6. The method according to Clause 5, wherein the generation step includes selectively applying offsets, at least depending on historical data.

[0431] 7. The method according to Clause 6, wherein the application steps include one of the following:

[0432] (i) Apply a right offset in the derivation of the index, the right offset depending on the offset; and

[0433] (ii) Add the offset to the index export.

[0434] 8. The method according to Clause 7, wherein the generation step includes combining the value accessed from the lookup table with a value depending on the offset.

[0435] 9. The method according to Clause 8, wherein the generation step includes adding an offset to the value accessed from the lookup table.

[0436] 10. The method according to any of the preceding clauses, wherein the candidate dataset comprises one or more datasets selected from a list consisting of:

[0437] Importance datasets indicate whether a data item is non-zero;

[0438] One or more datasets greater than n, indicating whether a given data item is greater than the corresponding n value;

[0439] Parity check dataset, indicating the value of the least significant bit of a data item.

[0440] 11. The method according to Clause 10, wherein when one or more datasets are selected, encoding by the first encoding technique includes modifying the data values ​​after encoding by the given dataset to take into account values ​​that can be encoded by the dataset.

[0441] 12. The method according to Clause 11, wherein encoding by the first encoding technique when two or more datasets are selected includes encoding by the two or more datasets in a predetermined dataset order.

[0442] 13. The method according to any of the preceding clauses, wherein the storage step includes, in response to the encoding of a given data item, at least modifying the stored historical data applied to a given attribute of the given data item.

[0443] 14. According to the method of Clause 3, the derivation steps include:

[0444] Generate at least a portion of the stored historical data for a given attribute applied to a given data item;

[0445] The second part size is derived at least in part from a copy of historical data applied to a given attribute of a given data item; and

[0446] In response to the encoding of a given data item, at least the stored historical data applied to a given attribute of the given data item is modified.

[0447] 15. The method according to Clause 13 or Clause 14, wherein the modification step includes selectively modifying, in response to the encoding of the given data item, at least the stored historical data applicable to a given attribute of the given data item, only when the given data item exceeds the absolute value of a threshold.

[0448] 16. The method according to any of the preceding clauses, wherein historical data includes data indicating attributes of multiple data items.

[0449] 17. The method according to Clause 16, wherein the data item is an image data value, and the multiple data item attributes for a given image data value include two or more attributes selected from a list consisting of:

[0450] Color components represented by given image data values;

[0451] The size of the block containing the data values ​​of a given image;

[0452] The location of a given image data value within the image;

[0453] The position of a given image data value within the block of image data values ​​containing that given image data value;

[0454] The location of an image data value block containing a given image data value in the image;

[0455] The position of the sub-block of image data values ​​containing a given image data value within the image data value block;

[0456] The block size of the image data value block containing the given image data values;

[0457] The distance between a given image data value and a predetermined location within an image data value block containing the given image data value; and

[0458] Whether to use spatial frequency transformation to generate the given image data values.

[0459] 18. The method according to any of the preceding clauses, wherein one or more aspects of encoding the encoded data item include one or more aspects indicating the magnitude of the encoded data item.

[0460] 19. The method according to Clause 18, wherein one or more aspects of encoding the encoded data item include data that depends on the size of a second portion generated for encoding the encoded data item.

[0461] 20. Computer software that, when executed by a computer, causes the computer to perform a method according to any of the preceding clauses.

[0462] 21. A non-transitory machine-readable storage medium for storing computer software pursuant to Clause 20.

[0463] 22. An encoded data signal generated by the method according to any one of clauses 1-19.

[0464] 23. A non-transitory machine-readable storage medium for storing encoded data signals pursuant to Clause 22.

[0465] 24. A method for decoding an input data signal representing continuous data items, the method comprising:

[0466] Store historical data for decoded data items, which indicates one or more aspects of decoding the data items;

[0467] Decoding a given data item using a first decoding technique, the first decoding technique comprising decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously decoded datasets; and (ii) historical data applied to a given attribute of the given data item, selecting a series of datasets from multiple candidate datasets; and

[0468] A second decoding technique, different from the first decoding technique, is used to decode any residual value of a given data item, where the residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique.

[0469] 25. The method according to Clause 24, wherein the second decoding technique includes decoding escape codes, the escape codes comprising a first part and a second part of non-unary decoding, the length of the second part depending on the size of the second part being in bits.

[0470] 26. The method pursuant to Clause 25 includes deriving the second part size based at least in part on historical data that depends on a given attribute applied to a given data item.

[0471] 27. The method according to Clause 26 includes generating multiple candidate second part sizes and selecting from multiple candidate second part sizes based on historical data of a given attribute applied to a given data item.

[0472] 28. The method according to Clause 27, wherein the generation step includes obtaining, for at least one candidate second part size, a lookup table by accessing an index depending on at least one previously decoded data item.

[0473] 29. The method according to Clause 28, wherein the generation step includes selectively applying an offset, at least depending on historical data.

[0474] 30. The method according to Clause 29, wherein the application steps include one of the following:

[0475] (i) Apply a right offset in the derivation of the index, the right offset depending on the offset; and

[0476] (ii) Add the offset to the index export.

[0477] 31. The method according to Clause 30, wherein the generation step includes combining the value to be accessed from the lookup table with a value depending on the offset.

[0478] 32. The method according to Clause 31, wherein the generation step includes adding an offset to the value accessed from the lookup table.

[0479] 33. The method according to Clause 27, wherein the step of generating a plurality of candidate second part sizes includes, for at least one candidate second part size, applying an offset depending on the value of one or more data items.

[0480] 34. The method according to any one of clauses 24 to 33, wherein the candidate dataset comprises one or more datasets selected from a list consisting of:

[0481] Importance datasets indicate whether a data item is non-zero;

[0482] One or more datasets greater than n, indicating whether a given data item is greater than the corresponding n value;

[0483] Parity check dataset, indicating the value of the least significant bit of a data item.

[0484] 35. The method according to Clause 34, wherein when one or more datasets are selected, decoding by the first decoding technique includes modifying the data values ​​after decoding by the given dataset to take into account values ​​that can be decoded by the dataset.

[0485] 36. The method according to Clause 35, wherein when two or more datasets are selected, decoding by the first decoding technique includes decoding by the two or more datasets in a predetermined dataset order.

[0486] 37. The method according to any one of clauses 24 to 36, wherein the storage step includes, in response to the decoding of a given data item, modifying at least the stored historical data applied to a given attribute of the given data item.

[0487] 38. The method according to Clause 26, wherein the derivation step includes:

[0488] Generate at least a portion of the stored historical data for a given attribute applied to a given data item;

[0489] The second part size is derived at least in part from a copy of historical data applied to a given attribute of a given data item; and

[0490] In response to the decoding of a given data item, at least the stored historical data applied to a given attribute of the given data item is modified.

[0491] 39. The method according to Clause 37, wherein the modification step includes selectively modifying, in response to the decoding of a given data item, at least the stored historical data applicable to a given attribute of the given data item, only when the given data item exceeds the absolute value of a threshold.

[0492] 40. The method according to any one of clauses 24 to 39, wherein historical data includes data indicating attributes of multiple data items.

[0493] 41. The method according to Clause 40, wherein the data item is an image data value, and the multiple data item attributes for a given image data value include two or more attributes selected from a list consisting of:

[0494] Color components represented by given image data values;

[0495] The size of the block containing the data values ​​of a given image;

[0496] The location of a given image data value within the image;

[0497] The position of a given image data value within the block of image data values ​​containing that given image data value;

[0498] The location of an image data value block containing a given image data value in the image;

[0499] The position of the sub-block of image data values ​​containing a given image data value within the image data value block;

[0500] The block size of the image data value block containing the given image data values;

[0501] The distance between a given image data value and a predetermined location within an image data value block containing the given image data value; and

[0502] Whether to use spatial frequency transformation to generate the given image data values.

[0503] 42. The method according to any one of clauses 24 to 41, wherein one or more aspects of decoding the decoded data item include one or more aspects indicating the magnitude of the decoded data item.

[0504] 43. The method according to Clause 42, wherein one or more aspects of decoding the decoded data item include data that depends on the size of a second portion generated for decoding the decoded data item.

[0505] 44. A computer software that, when executed by a computer, causes the computer to perform a method pursuant to any one of clauses 24 to 43.

[0506] 45. A non-transitory machine-readable storage medium for storing computer software pursuant to clause 44.

[0507] 46. ​​An apparatus for encoding consecutive data items, the apparatus comprising:

[0508] A history data storage device is configured to store historical data of coded data items, which indicates one or more aspects of the coded data items.

[0509] A first encoder circuit is configured to encode a given data item using a first encoding technique, the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously encoded datasets; and (ii) historical data of a given attribute applied to the given data item, selecting a series of datasets from a plurality of candidate datasets; and

[0510] The second encoder circuit is configured to encode any residual value of a given data item using a second encoding technique different from the first encoding technique, wherein the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique.

[0511] 47. A video data capture, transmission, display and / or storage device including the device pursuant to Clause 46.

[0512] 48. An apparatus for decoding an input data signal representing consecutive data items, the apparatus comprising:

[0513] A history data storage device is configured to store historical data of decoded data items, which indicates one or more aspects of decoding the decoded data items;

[0514] A first decoder circuit is configured to decode a given data item using a first decoding technique, the first decoding technique comprising decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on (i) the number of previously decoded datasets; and (ii) historical data of a given attribute applied to the given data item, selecting a series of datasets from a plurality of candidate datasets; and

[0515] The second decoder circuit is configured to decode any residual value of a given data item using a second decoding technique different from the first decoding technique. The residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique.

[0516] 49. A video data capture, transmission, display and / or storage device including the device pursuant to Clause 48.

[0517] 50. A method for encoding a continuous block of data items, the method comprising:

[0518] Store historical data for encoded data item blocks, which indicates one or more aspects of the data item blocks being encoded;

[0519] Generate block parameters for a given data item block, the block parameters depending at least in part on the historical data applied to the given data item block;

[0520] Encoding a given data item of a given data item block using a first encoding technique, the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and selecting a series of datasets from multiple candidate datasets depending on block parameters generated for the given data item block; and

[0521] By using a second encoding technique different from the first encoding technique, any residual value of a given data item is encoded, where the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique.

[0522] 51. The method according to Clause 50, wherein the second encoding technique includes encoding an escape code comprising a first part and a non-unary encoded second part, the length of the second part depending on the size of the second part being in bits.

[0523] 52. The method pursuant to Clause 51 includes deriving the second part size based at least in part on historical data applied to a given data item block.

[0524] 53. The method according to Clause 52 includes generating multiple candidate second part sizes and selecting from multiple candidate second part sizes based on historical data of a given attribute applied to a given data item.

[0525] 54. The method according to Clause 53, wherein the step of generating a plurality of candidate second part sizes includes, for at least one candidate second part size, applying an offset depending on the value of one or more data items.

[0526] 55. The method according to any one of clauses 50 to 54, wherein the candidate dataset comprises one or more datasets selected from a list consisting of:

[0527] Importance datasets indicate whether a data item is non-zero;

[0528] One or more datasets greater than n, indicating whether a given data item is greater than the corresponding n value;

[0529] Parity check dataset, indicating the value of the least significant bit of a data item.

[0530] 56. The method according to Clause 55, wherein, when selecting one or more datasets, encoding by the first encoding technique includes modifying data values ​​after encoding by the given dataset to take into account values ​​that can be encoded by that dataset.

[0531] 57. The method according to Clause 56, wherein encoding by the first encoding technique when two or more datasets are selected includes encoding by the two or more datasets in a predetermined dataset order.

[0532] 58. The method according to any one of clauses 50 to 57, wherein the storage step includes, in response to the encoding of a given data item block, at least modifying the stored historical data applied to the given data item block.

[0533] 59. The method according to Clause 52, wherein the derivation step includes:

[0534] Generate at least a portion of the stored historical data for a given attribute applied to a given data item;

[0535] The second part size is derived at least in part from a copy of historical data applied to a given attribute of a given data item; and

[0536] In response to the encoding of a given data item, at least the stored historical data applied to a given attribute of the given data item is modified.

[0537] 60. The method according to Clause 58 or Clause 59, wherein the modification step includes selectively modifying, in response to the encoding of the given data item, at least the stored historical data applicable to a given attribute of the given data item, only when the given data item exceeds the absolute value of a threshold.

[0538] 61. The method according to any one of clauses 50 to 60, wherein the storage step includes storing historical data applied to multiple data item attributes.

[0539] 62. The method according to Clause 61, wherein the data item is an image data value, and the historical data of a given data item block containing a given image data value includes two or more attributes selected from a list consisting of:

[0540] Color components represented by given image data values;

[0541] The size of the block containing the data values ​​of a given image;

[0542] The location of a given image data value within the image;

[0543] The position of a given image data value within the block of image data values ​​containing that given image data value;

[0544] The location of an image data value block containing a given image data value in the image;

[0545] The position of the sub-block of image data values ​​containing a given image data value within the image data value block;

[0546] The block size of the image data value block containing the given image data values;

[0547] The distance between a given image data value and a predetermined location within an image data value block containing the given image data value; and

[0548] Whether to use spatial frequency transformation to generate the given image data values.

[0549] 63. The method according to any one of clauses 50 to 62, wherein one or more aspects of encoding the encoded data item include one or more aspects indicating the magnitude of the encoded data item.

[0550] 64. The method according to Clause 63, wherein one or more aspects of encoding the encoded data item include data that depends on the size of a second portion generated for encoding the encoded data item.

[0551] 65. A computer software that, when executed by a computer, causes the computer to perform the method pursuant to any one of clauses 50 to 64.

[0552] 66. A non-transitory machine-readable storage medium for storing computer software pursuant to clause 65.

[0553] 67. An encoded data signal generated by the method according to any one of clauses 50 to 64.

[0554] 68. A non-transitory machine-readable storage medium for storing encoded data signals pursuant to Clause 67.

[0555] 69. A method for decoding a continuous block of data items, the method comprising:

[0556] Store historical data for decoding data item blocks, which indicates one or more aspects of decoding the data item blocks;

[0557] Generate block parameters for a given data item block, the block parameters depending at least in part on the historical data applied to the given data item block;

[0558] Decoding a given data item of a given data item block using a first decoding technique, the first decoding technique comprising decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for a data item, and selecting a series of datasets from multiple candidate datasets depending on block parameters generated for the given data item block; and

[0559] A second decoding technique, different from the first decoding technique, is used to decode any residual value of a given data item, where the residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique.

[0560] 70. The method according to Clause 70, wherein the second decoding technique includes decoding an escape code comprising a first part and a second part which is not unary decoded, the length of the second part being in bits depending on the size of the second part.

[0561] 71. The method according to Clause 70 includes deriving the second part size based at least in part on historical data applied to a given data item block.

[0562] 72. The method according to Clause 71 includes generating a plurality of candidate second part sizes and selecting from the plurality of candidate second part sizes based on historical data of a given attribute applied to a given data item.

[0563] 73. The method according to Clause 72, wherein the step of generating a plurality of candidate second part sizes includes, for at least one candidate second part size, applying an offset depending on the value of one or more data items.

[0564] 74. The method according to any one of clauses 69 to 73, wherein the candidate dataset comprises one or more datasets selected from a list consisting of:

[0565] Importance datasets indicate whether a data item is non-zero;

[0566] One or more datasets greater than n, indicating whether a given data item is greater than the corresponding n value;

[0567] Parity check dataset, indicating the value of the least significant bit of a data item.

[0568] 75. The method according to Clause 74, wherein when one or more datasets are selected, decoding by the first encoding technique includes modifying the data values ​​after decoding by the given dataset to take into account values ​​that can be decoded by the dataset.

[0569] 76. The method according to Clause 75, wherein when two or more datasets are selected, decoding by the first decoding technique includes decoding by the two or more datasets in a predetermined dataset order.

[0570] 77. The method according to any one of clauses 69 to 76, wherein the storage step includes, in response to the decoding of a given data item block, at least modifying the stored historical data applied to the given data item block.

[0571] 78. The method according to Clause 71, wherein the derivation step includes:

[0572] Generate at least a portion of the stored historical data for a given attribute applied to a given data item;

[0573] The second part size is derived at least in part from a copy of historical data applied to a given attribute of a given data item; and

[0574] In response to the decoding of a given data item, at least the stored historical data applied to a given attribute of the given data item is modified.

[0575] 79. The method according to Clause 77 or Clause 78, wherein the modification step includes selectively modifying, in response to the decoding of a given data item, at least the stored historical data applicable to a given attribute of the given data item, only when the given data item exceeds the absolute value of a threshold.

[0576] 80. The method according to any one of clauses 69 to 79, wherein the storage step includes storing historical data applied to multiple data item attributes.

[0577] 81. The method according to Clause 80, wherein the data item is an image data value, and the historical data of a given data item block containing a given image data value includes two or more attributes selected from a list consisting of:

[0578] Color components represented by given image data values;

[0579] The size of the block containing the data values ​​of a given image;

[0580] The location of a given image data value within the image;

[0581] The position of a given image data value within the block of image data values ​​containing that given image data value;

[0582] The location of an image data value block containing a given image data value in the image;

[0583] The position of the sub-block of image data values ​​containing a given image data value within the image data value block;

[0584] The block size of the image data value block containing the given image data values;

[0585] The distance between a given image data value and a predetermined location within an image data value block containing the given image data value; and

[0586] Whether to use spatial frequency transformation to generate the given image data values.

[0587] 82. The method according to any one of clauses 69 to 81, wherein one or more aspects of decoding the decoded data item include one or more aspects indicating the magnitude of the decoded data item.

[0588] 83. The method according to Clause 82, wherein one or more aspects of decoding the decoded data item include data that depends on the size of a second portion generated for decoding the decoded data item.

[0589] 84. A computer software that, when executed by a computer, causes the computer to perform a method according to any one of clauses 69 to 83.

[0590] 85. A non-transitory machine-readable storage medium for storing computer software pursuant to clause 84.

[0591] 86. An apparatus for encoding consecutive blocks of data items, the apparatus comprising:

[0592] A history data store is configured to store historical data of coded data item blocks, the historical data indicating one or more aspects of the data item blocks being encoded;

[0593] A generator circuit is configured to generate block parameters for a given block of data items, the block parameters depending at least in part on historical data applied to the given block of data items;

[0594] A first encoder circuit is configured to encode a given data item of a given data item block using a first encoding technique, the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for a data item, and selecting a series of datasets from a plurality of candidate datasets depending on block parameters generated for the given data item block; and

[0595] The second encoder circuit is configured to encode any residual value of a given data item using a second encoding technique different from the first encoding technique. The residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique.

[0596] 87. A video data capture, transmission, display and / or storage device including the device pursuant to Clause 86.

[0597] 88. An apparatus for decoding consecutive blocks of data items, the apparatus comprising:

[0598] A history data store is configured to store historical data of decoded data item blocks, the historical data indicating one or more aspects of decoding the data item blocks;

[0599] A generator circuit is configured to generate block parameters for a given block of data items, the block parameters depending at least in part on historical data applied to the given block of data items;

[0600] A first decoder circuit is configured to decode a given data item of a given data item block using a first decoding technique, the first decoding technique comprising decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for a data item, and selecting a series of datasets from a plurality of candidate datasets depending on block parameters generated for the given data item block; and

[0601] The second decoder circuit is configured to decode any residual value of a given data item using a second decoding technique different from the first decoding technique. The residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique.

[0602] 89. A video data capture, transmission, display and / or storage device including the device pursuant to Clause 88.

Claims

1. A method for encoding consecutive data items, the method comprising: The system stores historical data of encoded data items, which indicates one or more aspects of the encoded data items. Encoding a given data item using a first encoding technique, the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on i) the number of previously encoded datasets; and ii) applying historical data of a given attribute of the given data item to select a series of datasets from a plurality of candidate datasets; and A second encoding technique, different from the first encoding technique, is used to encode any residual value of the given data item, where the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique. The second encoding technique includes encoding escape codes, which include a first part and a non-unary encoded second part, the second part having a length that depends on the size of the second part, the length being in bits.

2. The method of claim 1, further comprising deriving the second portion size based at least in part on the historical data applied to the given attribute of the given data item.

3. The method of claim 2, further comprising generating a plurality of candidate second part sizes, and selecting from the plurality of candidate second part sizes based on the historical data of the given attribute applied to the given data item.

4. The method of claim 3, wherein, The generation step includes obtaining, for at least one candidate second part size, the candidate second part size by accessing a lookup table based on an index that depends on at least one previously encoded data item.

5. The method of claim 4, wherein, The generation step includes selectively applying offsets, depending at least on the historical data.

6. The method of claim 5, wherein, The application steps include one of the following: i applies a right offset in the derivation of the index, the right offset depending on the offset amount; and ii. Add the offset to the export of the index.

7. The method of claim 6, wherein, The generation step includes combining the value accessed from the lookup table with a value that depends on the offset.

8. The method of claim 7, wherein, The generation step includes adding the offset to the value accessed from the lookup table.

9. The method according to claim 1, wherein, The candidate datasets include one or more datasets selected from a list consisting of the following: Importance datasets indicate whether a data item is non-zero; One or more datasets greater than n, indicating whether a given data item is greater than the corresponding n value; Parity check dataset, indicating the value of the least significant bit of a data item.

10. The method of claim 9, wherein, When one or more datasets are selected, encoding with the first encoding technique includes modifying data values ​​after encoding with a given dataset to take into account values ​​that can be encoded with the dataset.

11. The method of claim 10, wherein, When two or more datasets are selected, encoding using the first encoding technique includes encoding the two or more datasets in a predetermined dataset order.

12. The method of claim 1, wherein, The storage step includes modifying, at least the stored historical data applied to the given attribute of the given data item in response to the encoding of the given data item.

13. The method of claim 2, wherein, The export steps include: Generate at least a portion of the stored historical data applied to the given attribute of the given data item; The second portion size is derived at least in part from a copy of the historical data applied to the given attribute of the given data item; and In response to the encoding of the given data item, at least the stored historical data applied to the given attribute of the given data item is modified.

14. The method of claim 12, wherein, The modification steps include selectively modifying, in response to the encoding of the given data item, the stored historical data of at least the given attribute applied to the given data item only when the given data item exceeds the absolute value of a threshold.

15. The method of claim 1, wherein, The historical data includes data indicating the attributes of multiple data items.

16. The method of claim 15, wherein, A data item is an image data value, and the plurality of data item attributes given an image data value include two or more attributes selected from a list consisting of: Color components represented by the given image data values; The block size of the data value block containing the given image data value; The position of the given image data value in the image; The position of the given image data value in the image data value block containing the given image data value; The location of the image data value block containing the given image data value in the image; The position of the sub-block of image data values ​​containing the given image data value within the image data value block; The block size of the image data value block containing the given image data value; The distance between the given image data value and a predetermined position in the image data value block containing the given image data value; and Whether to use spatial frequency transformation to generate the given image data value.

17. The method of claim 1, wherein, The one or more aspects of encoding the encoded data item include one or more aspects indicating the magnitude of the encoded data item.

18. The method according to claim 17, wherein, The one or more aspects of encoding the encoded data item include data that depends on the size of the second portion generated for encoding the encoded data item.

19. A non-transitory machine-readable storage medium storing computer software, which, when executed by a computer, causes the computer to perform the method according to claim 1.

20. A non-transitory machine-readable storage medium storing a computer program and coded data signals, wherein when the computer program is executed by a computer, the coded data signals are generated by the method of claim 1.

21. A method for decoding an input data signal representing consecutive data items, the method comprising: Store historical data of the decoded data item, the historical data indicating one or more aspects of decoding the decoded data item; Decoding a given data item using a first decoding technique, the first decoding technique comprising decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on the number of datasets previously decoded; and ii. Historical data applied to a given attribute of the given data item, selecting a series of datasets from multiple candidate datasets; and A second decoding technique, different from the first decoding technique, is used to decode any residual value of the given data item. The residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique. The second decoding technique includes decoding escape codes, which include a first part and a second part that is not unary decoded, the length of which depends on the size of the second part and is in bits.

22. The method of claim 21, further comprising deriving the second portion size based at least in part on the historical data applied to the given attribute of the given data item.

23. The method of claim 22, further comprising generating a plurality of candidate second part sizes and selecting from the plurality of candidate second part sizes based on the historical data of the given attribute applied to the given data item.

24. The method of claim 23, wherein, The generation step includes obtaining, for at least one candidate second part size, the candidate second part size by accessing a lookup table based on an index that depends on at least one previously decoded data item.

25. The method according to claim 24, wherein, The generation step includes selectively applying offsets, depending at least on the historical data.

26. The method of claim 25, wherein, The application steps include one of the following: i applies a right offset in the derivation of the index, the right offset depending on the offset amount; and ii. Add the offset to the export of the index.

27. The method of claim 26, wherein, The generation step includes combining the value accessed from the lookup table with a value that depends on the offset.

28. The method of claim 27, wherein, The generation step includes adding the offset to the value accessed from the lookup table.

29. The method according to claim 23, wherein, The step of generating the plurality of candidate second part sizes includes applying an offset for at least one candidate second part size, depending on the value of one or more of the data items.

30. The method of claim 21, wherein, The candidate datasets include one or more datasets selected from a list consisting of the following: Importance datasets indicate whether a data item is non-zero; One or more datasets greater than n, indicating whether a given data item is greater than the corresponding n value; Parity check dataset, indicating the value of the least significant bit of a data item.

31. The method of claim 30, wherein, When one or more datasets are selected, decoding using the first decoding technique includes modifying the data values ​​after decoding with the given dataset to take into account values ​​that can be decoded with the dataset.

32. The method of claim 31, wherein, When two or more datasets are selected, decoding using the first decoding technique includes decoding the two or more datasets in a predetermined dataset order.

33. The method of claim 21, wherein, The storage step includes, in response to the decoding of the given data item, modifying at least the stored historical data of the given attribute applied to the given data item.

34. The method of claim 22, wherein, The export steps include: Generate at least a portion of the stored historical data applied to the given attribute of the given data item; The second portion size is derived at least in part from a copy of the historical data applied to the given attribute of the given data item; and In response to the decoding of the given data item, at least the stored historical data of the given attribute applied to the given data item is modified.

35. The method of claim 33, wherein, The modification steps include selectively modifying, in response to the decoding of the given data item, the stored historical data of at least the given attribute applied to the given data item only when the given data item exceeds the absolute value of the threshold.

36. The method of claim 21, wherein, The historical data includes data indicating the attributes of multiple data items.

37. The method of claim 36, wherein, A data item is an image data value, and the plurality of data item attributes given an image data value include two or more attributes selected from a list consisting of: Color components represented by the given image data values; The block size of the data value block containing the given image data value; The position of the given image data value in the image; The position of the given image data value in the image data value block containing the given image data value; The location of the image data value block containing the given image data value in the image; The position of the sub-block of image data values ​​containing the given image data value within the image data value block; The block size of the image data value block containing the given image data value; The distance between the given image data value and a predetermined position in the image data value block containing the given image data value; and Whether to use spatial frequency transformation to generate the given image data value.

38. The method of claim 21, wherein, The one or more aspects of decoding the decoded data item include one or more aspects indicating the magnitude of the decoded data item.

39. The method of claim 38, wherein, The one or more aspects of decoding the decoded data item include data that depends on the size of the second portion generated for decoding the decoded data item.

40. A non-transitory machine-readable storage medium for storing computer software, which, when executed by a computer, causes the computer to perform the method according to claim 21.

41. An apparatus for encoding consecutive data items, the apparatus comprising: A historical data storage device is configured to store historical data of coded data items, the historical data indicating one or more aspects of the coded data items being encoded; A first encoder circuit is configured to encode a given data item using a first encoding technique, the first encoding technique comprising encoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on the number of previously encoded datasets; And ii. historical data applied to a given attribute of the given data item, selecting a series of datasets from multiple candidate datasets; as well as The second encoder circuit is configured to encode any residual value of the given data item using a second encoding technique different from the first encoding technique, where the residual value is the amount by which the given data item exceeds the maximum value that can be encoded by the first encoding technique. The second encoding technique includes encoding escape codes, which include a first part and a non-unary encoded second part, the length of which depends on the size of the second part and is in bits.

42. A video data capture, transmission, display and / or storage device including the device according to claim 41.

43. An apparatus for decoding an input data signal representing consecutive data items, the apparatus comprising: A history data storage device is configured to store historical data of decoded data items, the historical data indicating one or more aspects of decoding the decoded data items; A first decoder circuit is configured to decode a given data item using a first decoding technique, the first decoding technique comprising decoding a series of zero or more datasets, each dataset representing a corresponding range of values ​​for the data item, and depending on the number of datasets previously decoded; And ii. historical data applied to a given attribute of the given data item, selecting a series of datasets from multiple candidate datasets; as well as The second decoder circuit is configured to decode any residual value of the given data item using a second decoding technique different from the first decoding technique, where the residual value is the amount by which the given data item exceeds the maximum value that can be decoded by the first decoding technique. The second decoding technique includes decoding escape codes, which include a first part and a second part that is not unary decoded, the length of which depends on the size of the second part and is in bits.

44. A video data capture, transmission, display, and / or storage device including the device according to claim 43.