Cabac not-coded flag for bin streams following a pattern
By skipping the encoding and decoding of predictable binary symbol sequences in video compression, the method reduces bitstream size and improves efficiency, addressing the inefficiencies in existing entropy coding methods.
Patent Information
- Application Number
- PCT/EP2024/086523
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-01-03
- Filing Date
- 2024-12-16
- Publication Date
- 2025-07-10
AI Technical Summary
Existing video compression systems face inefficiencies in entropy coding due to the high cost of encoding and decoding sequences of binary symbols that follow identifiable patterns, particularly in contexts where the probability of certain symbols remains constant, leading to increased bit usage.
Implementing a method and apparatus that skip the arithmetic encoding or decoding of sequences of binary symbols when they follow a predictable pattern, using a not-coded flag to signal this to the decoder, thereby reducing the bitstream size and improving compression efficiency.
Reduces the bitstream size and enhances compression efficiency by avoiding the unnecessary encoding and decoding of sequences that follow predictable patterns, thus optimizing the use of arithmetic coding in video compression systems.
Smart Images

Figure EP2024086523_10072025_PF_FP_ABST
Abstract
Description
[0001] CABAC NOT-CODED FLAG FOR BIN STREAMS FOLLOWING A PATTERN
[0002] This application claims the priority to European Application No. 24305010.1 , filed on 3 January 2024, which is incorporated herein by reference in its entirety.
[0003] TECHNICAL FIELD
[0004] The present embodiments generally relate to video compression. The present embodiments relate to a method and an apparatus for encoding or decoding an image or a video. More particularly, the present embodiments relate to improving entropy coding in video compression system.
[0005] BACKGROUND
[0006] To achieve high compression efficiency, image and video coding schemes usually employ prediction and transform to leverage spatial and temporal redundancy in the video content. Generally, intra or inter prediction is used to exploit the intra or inter picture correlation, then the differences between the original block and the predicted block, often denoted as prediction errors or prediction residuals, are transformed, quantized, and entropy coded. In inter prediction, motion vectors used in motion compensation are often predicted from motion vector predictor. To reconstruct the video, the compressed data are decoded by inverse processes corresponding to the entropy coding, quantization, transform, and prediction.
[0007] SUMMARY
[0008] According to an aspect, a method for encoding an image or a video is provided. The method is performed for at least one part of an image and for at least one context associated to one or more probability values used for arithmetically encoding a sequence of binary symbols. The method comprises obtaining a sequence of binary symbols, determining whether or not the sequence of binary symbols represents a given pattern, encoding an information indicating whether or not arithmetic encoding for the sequence of binary symbols is skipped, and responsive to a determination that the information indicates that arithmetic encoding for the sequence of binary symbols is not skipped, arithmetic encoding the sequence of binary symbols using the one or more probability values associated to the at least one context. In this way, when the sequence of binary symbols obtained for the at least one context represents a given pattern, its arithmetic encoding or entropy encoding is skipped and signaled to the decoder. For example, a binary symbol of the sequence is part of a binarization of a syntax element relating to the at least one part of the image.
[0009] According to another aspect, an apparatus for encoding an image or a video is provided. The apparatus comprises one or more processors operable to, for at least one part of an image and for at least one context, obtain a sequence of binary symbols, a binary symbol of the sequence being part of a binarization of a syntax element relating to the at least one part of the image, the at least one context being associated to one or more probability values used for arithmetically encoding the sequence of binary symbols, determine whether or not the sequence of binary symbols represents a given pattern, encode an information indicating whether or not arithmetic encoding for the sequence of binary symbols is skipped, responsive to a determination that the information indicates that arithmetic encoding for the sequence of binary symbols is not skipped, arithmetically encode the sequence of binary symbols using the one or more probability values associated to the at least one context.
[0010] According to an aspect, a method for decoding an image or a video is provided. The method comprises for at least one part of an image and for at least one context associated to one or more probability values used for arithmetically decoding a sequence of binary symbols, a binary symbol of the sequence being part of a binarization of a syntax element relating to the at least one part of the image: decoding an information indicating whether or not arithmetic decoding for the sequence of binary symbols is skipped, if the decoded information indicates that arithmetic decoding for the sequence of binary symbols is skipped, determining values for the binary symbols of the sequence according to a given pattern, otherwise, arithmetic decoding the sequence of binary symbols using the one or more probability values associated to the at least one context.
[0011] According to another aspect, an apparatus for decoding an image or a video is provided. The apparatus comprises one or more processors operable to for at least one part of an image and for at least one context associated to one or more probability values used for arithmetically decoding a sequence of binary symbols, a binary symbol of the sequence being part of a binarization of a syntax element relating to the at least one part of the image: decode an information indicating whether or not arithmetic decoding for the sequence of binary symbols is skipped, if the decoded information indicates that arithmetic decoding for the sequence of binary symbols is skipped, determine values for the binary symbols of the sequence according to a given pattern, otherwise, arithmetically decode the sequence of binary symbols using the one or more probability values associated to the at least one context.
[0012] Further embodiments that can be used alone or in combination are described herein. One or more embodiments also provide a computer program comprising instructions which when executed by one or more processors cause the one or more processors to perform any one of the methods for encoding or decoding an image or a video according to any of the embodiments described herein. One or more of the present embodiments also provide a non- transitory computer readable medium and / or a computer readable storage medium having stored thereon instructions for encoding or decoding an image or a video according to the methods described herein.
[0013] One or more embodiments also provide a computer readable storage medium having stored thereon a bitstream generated according to the methods described herein. One or more embodiments also provide a method and apparatus for transmitting or receiving the bitstream generated according to the methods described above.
[0014] BRIEF DESCRIPTION OF THE DRAWINGS
[0015] FIG. 1A illustrates a block diagram of a system within which aspects of the present embodiments may be implemented according to an embodiment.
[0016] FIG. 1 B illustrates a block diagram of a system within which aspects of the present embodiments may be implemented according to another embodiment.
[0017] FIG. 1 C illustrates a block diagram of a system within which aspects of the present embodiments may be implemented according to another embodiment.
[0018] FIG. 2 illustrates a block diagram of an embodiment of a video encoder within which aspects of the present embodiments may be implemented.
[0019] FIG. 3 illustrates a block diagram of an embodiment of a video decoder within which aspects of the present embodiments may be implemented.
[0020] FIG. 4 illustrates an example of a context-based entropy coding scheme.
[0021] FIG. 5 illustrates an example of a parameter initialization for a context-based entropy coding scheme.
[0022] FIG. 6 illustrates an example of a CABAC engine in VVC encoding scheme.
[0023] FIG. 7 illustrates an example of a method for decoding a bin.
[0024] FIG. 8 illustrates an example of a method for encoding a sequence of binary symbols according to an embodiment.
[0025] FIG. 9 illustrates an example of a method for decoding a sequence of binary symbols according to an embodiment. FIG. 10 illustrates an example of a method for determining a cost of any bin streams according to an embodiment.
[0026] FIG. 11 illustrates an example of a method for signaling or decoding syntax elements used in some embodiments described herein.
[0027] FIG. 12 shows two remote devices communicating over a communication network in accordance with an example of the present principles.
[0028] FIG. 13 shows the syntax of a signal in accordance with an example of the present principles.
[0029] DETAILED DESCRIPTION
[0030] This application describes a variety of aspects, including tools, features, embodiments, models, approaches, etc. Many of these aspects are described with specificity and, at least to show the individual characteristics, are often described in a manner that may sound limiting. However, this is for purposes of clarity in description, and does not limit the application or scope of those aspects. Indeed, all of the different aspects can be combined and interchanged to provide further aspects. Moreover, the aspects can be combined and interchanged with aspects described in earlier filings as well.
[0031] The aspects described and contemplated in this application can be implemented in many different forms. FIGs. 1A, 1 B, 1 C, 2 and 3 below provide some embodiments, but other embodiments are contemplated and the discussion of FIGs. 1 A, 1 B, 1 C, 2 and 3 does not limit the breadth of the implementations. At least one of the aspects generally relates to video encoding and decoding, and at least one other aspect generally relates to transmitting a bitstream generated or encoded. These and other aspects can be implemented as a method, an apparatus, a computer readable storage medium having stored thereon instructions for encoding or decoding video data according to any of the methods described, and / or a computer readable storage medium having stored thereon a bitstream generated according to any of the methods described.
[0032] In the present application, the terms “reconstructed” and “decoded” may be used interchangeably, the terms “pixel” and “sample” may be used interchangeably, the terms “image,” “picture” and “frame” may be used interchangeably.
[0033] Various methods are described herein, and each of the methods comprises one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for proper operation of the method, the order and / or use of specific steps and / or actions may be modified or combined. Additionally, terms such as “first”, “second”, etc. may be used in various embodiments to modify an element, component, step, operation, etc., such as, for example, a “first decoding” and a “second decoding”. Use of such terms does not imply an ordering to the modified operations unless specifically required. So, in this example, the first decoding need not be performed before the second decoding, and may occur, for example, before, during, or in an overlapping time period with the second decoding.
[0034] The present aspects are not limited to VVC or HEVC, and can be applied, for example, to other standards and recommendations, whether pre-existing or future-developed, and extensions of any such standards and recommendations (including VVC and HEVC). Unless indicated otherwise, or technically precluded, the aspects described in this application can be used individually or in combination.
[0035] FIG. 1A-1 C illustrates block diagrams of examples of systems in which various aspects and embodiments can be implemented. Any one of the systems 100A, 100B or 100B may be embodied as a device including the various components described below and is configured to perform one or more of the aspects described in this application. Examples of such devices, include, but are not limited to, various electronic devices such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set top boxes, digital television receivers, personal video recording systems, connected home appliances, and servers. In various embodiments, the system 100A, 100B or 100C is communicatively coupled to other systems, or to other electronic devices, via, for example, a communications bus or through dedicated input and / or output ports. In various embodiments, the system 100A, 100B or 100C is configured to implement one or more of the aspects described in this application.
[0036] FIG. 1A illustrates a block diagram of an example of a system in which various aspects and embodiments can be implemented. The system 100A includes at least one processor 1 10 configured to execute instructions loaded therein for implementing, for example, the various aspects described in this application. Processor 1 10 may include embedded memory, input output interface, and various other circuitries as known in the art. The system 100A includes at least one memory 120, e.g., a volatile memory device, and / or a non-volatile memory device, including, but not limited to, EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, magnetic disk drive, and / or optical disk drive. The memory 120 may include an internal storage device, an attached storage device, and / or a network accessible storage device, as non-limiting examples. The processor 1 10 may be interconnected to the memory 120 by an interconnection bus 1 15.
[0037] Program code to be loaded onto processor 1 10 to perform the various aspects described in this application is subsequently loaded onto memory 120 for execution by processor 110. In some embodiments, memory inside of the processor 110 is used to store program code instructions and to provide working memory for processing that is needed during encoding or decoding. The input to the elements of system 100A may be provided through various input devices (not represented). Both Processor 1 10 and memory 120 can also have one or more additional interconnections to external connections.
[0038] FIG. 1 B illustrates a block diagram of an example of a system 100B in which various aspects and embodiments can be implemented. The system 100B includes the processor 110 and memory 120 as described in relation with FIG. 1A. The input to the elements of system 100B may be provided through various input devices as indicated in block 105 which is described further below with FIG. 1 C. Such input devices include, but are not limited to, (i) a radio frequency (RF) portion that receives an RF signal transmitted, for example, over the air by a broadcaster, (ii) a Component (COMP) input terminal (or a set of COMP input terminals), (iii) a Universal Serial Bus (USB) input terminal, and / or (iv) a High Definition Multimedia Interface (HDMI) input terminal. Other examples, not shown in FIG. 1 B, include composite video.
[0039] The various elements may be interconnected and transmit data therebetween using suitable connection arrangement 1 15, for example, an internal bus as known in the art, including the I2C bus, wiring, and printed circuit boards.
[0040] The system 100B includes communication interface 150 that enables communication with other devices via communication channel 190. The communication interface 150 may include, but is not limited to, a transceiver configured to transmit and to receive data over communication channel 190. The communication interface 150 may include, but is not limited to, a modem or network card and the communication channel 190 may be implemented, for example, within a wired and / or a wireless medium.
[0041] The system 100B may provide an output signal to various output devices, including a display, speakers, and other peripheral devices. The output devices may be communicatively coupled to system 100B via dedicated connections through respective interfaces 160, 170, and 180. Alternatively, the output devices may be connected to system 100B using the communications channel 190 via the communications interface 150.
[0042] FIG. 1 C illustrates a block diagram of an example of a system 100C in which various aspects and embodiments can be implemented according to another embodiment. Elements of system 100C, singly or in combination, may be embodied in a single integrated circuit, multiple les, and / or discrete components. For example, in at least one embodiment, the processing and encoder / decoder elements of system 100C are distributed across multiple les and / or discrete components. The system 100C includes the processor 1 10 and memory 120 as described in relation with FIG. 1 A or 1 B.
[0043] System 100C includes a storage device 140, which may include non-volatile memory and / or volatile memory, including, but not limited to, EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, magnetic disk drive, and / or optical disk drive. The storage device 140 may include an internal storage device, an attached storage device, and / or a network accessible storage device, as non-limiting examples.
[0044] System 100C includes an encoder / decoder module 130 configured, for example, to process data to provide an encoded video or decoded video, and the encoder / decoder module 130 may include its own processor and memory. The encoder / decoder module 130 represents module(s) that may be included in a device to perform the encoding and / or decoding functions. As is known, a device may include one or both of the encoding and decoding modules. Additionally, encoder / decoder module 130 may be implemented as a separate element of system 100C or may be incorporated within processor 110 as a combination of hardware and software as known to those skilled in the art.
[0045] Program code to be loaded onto processor 1 10 or encoder / decoder 130 to perform the various aspects described in this application may be stored in storage device 140 and subsequently loaded onto memory 120 for execution by processor 1 10. In accordance with various embodiments, one or more of processor 1 10, memory 120, storage device 140, and encoder / decoder module 130 may store one or more of various items during the performance of the processes described in this application. Such stored items may include, but are not limited to, the input data (image, video, volumetric content), the decoded data (image, video, volumetric content) or portions of the decoded data, the bitstream, matrices, variables, and intermediate or final results from the processing of equations, formulas, operations, and operational logic.
[0046] In some embodiments, memory inside of the processor 110 and / or the encoder / decoder module 130 is used to store instructions and to provide working memory for processing that is needed during encoding or decoding. In other embodiments, however, a memory external to the processing device (for example, the processing device may be either the processor 1 10 or the encoder / decoder module 130) is used for one or more of these functions. The external memory may be the memory 120 and / or the storage device 140, for example, a dynamic volatile memory and / or a non-volatile flash memory. In several embodiments, an external non-volatile flash memory is used to store the operating system of a television. In at least one embodiment, a fast external dynamic volatile memory such as a RAM is used as working memory for data encoding and decoding operations, such as for MPEG-2, HEVC (HEVC refers to High Efficiency Video Coding, also known as H.265 and MPEG-H Part 2), or VVC (Versatile Video Coding also known as H.266, standard developed by JVET, the Joint Video Experts Team).
[0047] The input to the elements of system 100C may be provided through various input devices as indicated in block 105, also mentionned in FIG. 1 B. Such input devices of system 100B or 100C include, but are not limited to, (i) a radio frequency (RF) portion that receives an RF signal transmitted, for example, over the air by a broadcaster, (ii) a Component (COMP) input terminal (or a set of COMP input terminals), (iii) a Universal Serial Bus (USB) input terminal, and / or (iv) a High Definition Multimedia Interface (HDMI) input terminal. Other examples, not shown in FIG. 1 B or 1 C, include composite video.
[0048] In various embodiments, the input devices of block 105 in system 100B or 100C have associated respective input processing elements as known in the art. For example, the RF portion may be associated with elements suitable for (i) selecting a desired frequency (also referred to as selecting a signal, or band-limiting a signal to a band of frequencies), (ii) down converting the selected signal, (iii) band-limiting again to a narrower band of frequencies to select (for example) a signal frequency band which can be referred to as a channel in certain embodiments, (iv) demodulating the down converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select the desired stream of data packets. The RF portion of various embodiments includes one or more elements to perform these functions, for example, frequency selectors, signal selectors, band-limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF portion may include a tuner that performs various of these functions, including, for example, down converting the received signal to a lower frequency (for example, an intermediate frequency or a near-baseband frequency) or to baseband. In one set-top box embodiment, the RF portion and its associated input processing element receives an RF signal transmitted over a wired (for example, cable) medium, and performs frequency selection by filtering, down converting, and filtering again to a desired frequency band. Various embodiments rearrange the order of the above-described (and other) elements, remove some of these elements, and / or add other elements performing similar or different functions. Adding elements may include inserting elements in between existing elements, for example, inserting amplifiers and an analog-to-digital converter. In various embodiments, the RF portion includes an antenna.
[0049] Additionally, the USB and / or HDMI terminals may include respective interface processors for connecting system 100B or 100C to other electronic devices across USB and / or HDMI connections. It is to be understood that various aspects of input processing, for example, Reed-Solomon error correction, may be implemented, for example, within a separate input processing IC or within processor 110 as necessary. Similarly, aspects of USB or HDMI interface processing may be implemented within separate interface ICs or within processor 1 10 as necessary. The demodulated, error corrected, and demultiplexed stream is provided to various processing elements, including, for example, processor 110, and encoder / decoder 130 operating in combination with the memory and storage elements to process the data stream as necessary for presentation on an output device.
[0050] Various elements of the systems 100A, 100B or 100C may be provided within an integrated housing, Within the integrated housing, the various elements may be interconnected and transmit data therebetween using the suitable connection arrangement 115, for example, an internal bus as known in the art, including the I2C bus, wiring, and printed circuit boards.
[0051] Similarly as for the sytem 100B of FIG. 1 B, the system 100C includes communication interface 150 that enables communication with other devices via communication channel 190. The communication interface 150 may include, but is not limited to, a transceiver configured to transmit and to receive data over communication channel 190. The communication interface 150 may include, but is not limited to, a modem or network card and the communication channel 190 may be implemented, for example, within a wired and / or a wireless medium.
[0052] Data is streamed to the system 100B or 100C, in various embodiments, using a Wi-Fi network such as IEEE 802.1 1 (IEEE refers to the Institute of Electrical and Electronics Engineers). The Wi-Fi signal of these embodiments is received over the communications channel 190 and the communications interface 150 which are adapted for Wi-Fi communications. The communications channel 190 of these embodiments is typically connected to an access point or router that provides access to outside networks including the Internet for allowing streaming applications and other over-the-top communications. Other embodiments provide streamed data to the system 100B or 100C using a set-top box that delivers the data over the HDMI connection of the input block 105. Still other embodiments provide streamed data to the system 100B or 100C using the RF connection of the input block 105. As indicated above, various embodiments provide data in a non-streaming manner. Additionally, various embodiments use wireless networks other than Wi-Fi, for example a cellular network or a Bluetooth network.
[0053] The system 100C may provide an output signal to various output devices, including a display 165, speakers 175, and other peripheral devices 185. The display 165 of various embodiments includes one or more of, for example, a touchscreen display, an organic lightemitting diode (OLED) display, a curved display, and / or a foldable display. The display 165 can be for a television, a tablet, a laptop, a cell phone (mobile phone), or other devices. The display 165 can also be integrated with other components (for example, as in a smart phone), or separate (for example, an external monitor for a laptop). The other peripheral devices 185 include, in various examples of embodiments, one or more of a stand-alone digital video disc (or digital versatile disc) (DVR, for both terms), a disk player, a stereo system, and / or a lighting system. Various embodiments use one or more peripheral devices 185 that provide a function based on the output of the system 100C. For example, a disk player performs the function of playing the output of the system 100C.
[0054] In various embodiments, control signals are communicated between the system 100C and the display 165, speakers 175, or other peripheral devices 185 using signaling such as AV.Link, CEC, or other communications protocols that enable device-to-device control with or without user intervention. The output devices may be communicatively coupled to system 100C via dedicated connections through respective interfaces 160, 170, and 180. Alternatively, the output devices may be connected to system 100C using the communications channel 190 via the communications interface 150. The display 165 and speakers 175 may be integrated in a single unit with the other components of system 100C in an electronic device, for example, a television. In various embodiments, the display interface 160 includes a display driver, for example, a timing controller (T Con) chip.
[0055] The display 165 and speaker 175 may alternatively be separate from one or more of the other components, for example, if the RF portion of input 105 is part of a separate set-top box. In various embodiments in which the display 165 and speakers 175 are external components, the output signal may be provided via dedicated output connections, including, for example, HDMI ports, USB ports, or COMP outputs.
[0056] In any of the systems 100A, 100B or 100C, the embodiments can be carried out by computer program product comprising code instructions that implements any one of embodiments described herein. The computer program product may be computer software implemented by the processor 1 10 or by hardware, or by a combination of hardware and software. As a nonlimiting example, the embodiments can be implemented by one or more integrated circuits. The memory 120 of any one of the systems 100A, 100B or 100C can be of any type appropriate to the technical environment and can be implemented using any appropriate data storage technology, such as optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory, as nonlimiting examples. The processor 1 10 of any one of the systems 100A, 100B or 100C can be of any type appropriate to the technical environment, and can encompass one or more of microprocessors, general purpose computers, special purpose computers, and processors based on a multi-core architecture, as non-limiting examples.
[0057] FIG. 2 illustrates an example of a block-based hybrid video encoder 200. Variations of this encoder 200 are contemplated, but the encoder 200 is described below for purposes of clarity without describing all expected variations.
[0058] In some embodiments, FIG. 2 also illustrate an encoder in which improvements are made to the HEVC standard or a VVC standard Versatile Video Coding, Standard ITU-T H.266, ISO / IEC 23090-3, 2020) or an encoder employing technologies similar to HEVC or VVC, such as an encoder ECM (Enhanced Compression Model) under development by JVET (Joint Video Exploration Team).
[0059] Before being encoded, the video sequence may go through pre-encoding processing (201 ), for example, applying a color transform to the input color picture (e.g., conversion from RGB 4:4:4 to YCbCr 4:2:0), or performing a remapping of the input picture components in order to get a signal distribution more resilient to compression (for instance using a histogram equalization of color components), or re-sizing the picture (ex: down-scaling). Metadata can be associated with the pre-processing and attached to the bitstream.
[0060] In the encoder 200, a picture is encoded by the encoder elements as described below. The picture to be encoded is partitioned (202) and processed in units of, for example, CUs (Coding units) or blocks. In the disclosure, different expressions may be used to refer to such a unit or block resulting from a partitioning of the picture. Such wording may be coding unit or CU, coding block or CB, luminance CB, or block. A CTU (Coding Tree Unit) refers to a group of blocks or group of units or group of coding units (CUs). In some embodiments, a CTU may be considered as a block, or a unit as itself.
[0061] Each unit is encoded using, for example, either an intra or inter mode. When a unit is encoded in an intra mode, it performs intra prediction (260). In an inter mode, motion estimation (275) and compensation (270) are performed. The intra mode and / or the inter mode may comprise several distinct sub-modes. For example, the intra mode may comprise directional intra predictions, template-based intra mode derivation prediction, intra block copy prediction or others modes spatially predicting the samples values of the unit. The inter mode may comprise skip mode, merge mode according to which motion information is derived from a list of motion candidates and no motion vector prediction residual is encoded, an inter mode according to which motion information is derived from a list of motion candidates and further refined either by encoding motion vector prediction residual or by template-matching performed both at the encoder and the decoder, further inter modes are also possible. The encoder decides (205) which one of the intra mode or inter mode to use for encoding the unit. When different intra modes and / or inter modes are possible, the endoder decides (205) which of the intra modes or inter modes to use. The encoder indicates the intra / inter decision by, for example, one or more syntax element signaling the prediction mode. The encoder may also blend (205) intra prediction result and inter prediction result, or blend results from different intra / inter prediction methods. Prediction residuals are calculated, for example, by subtracting (210) the predicted block from the original image block.
[0062] The motion refinement module (272) uses already available reference picture in order to refine the motion field of a block without reference to the original block. A motion field for a region can be considered as a collection of motion vectors for all pixels with the region. If the motion vectors are sub-block-based, the motion field can also be represented as the collection of all sub-block motion vectors in the region (all pixels within a sub-block have the same motion vector, and the motion vectors may vary from sub-block to sub-block). If a single motion vector is used for the region, the motion field for the region can also be represented by the single motion vector (same motion vectors for all pixels in the region).
[0063] The prediction residuals are then transformed (225) and quantized (230). The quantized transform coefficients, as well as motion vectors and other syntax elements, are entropy coded (245) to output a bitstream. The encoder can skip the transform and apply quantization directly to the non-transformed residual signal. The encoder can bypass both transform and quantization, i.e., the residual is coded directly without the application of the transform or quantization processes.
[0064] The encoder decodes (reconstructs) an encoded block to provide a reference for further predictions. The quantized transform coefficients are de-quantized (240) and inverse transformed (250) to decode prediction residuals. Combining (255) the decoded prediction residuals and the predicted block, an image block is reconstructed. In-loop filters (265) are applied to the reconstructed picture to perform, for example, one or more of a deblocking filtering, an SAO (Sample Adaptive Offset) filtering or an ALF (Adaptive Loop Filter) filtering to reduce encoding artifacts. The filtered image is stored at a reference picture buffer (280). Such filtered image is also referred to as a reference image in the following.
[0065] FIG. 3 illustrates a block diagram of a video decoder 300. In the decoder 300, a bitstream is decoded by the decoder elements as described below. Video decoder 300 generally performs a decoding pass reciprocal to the encoding pass as described in FIG. 2. The encoder 200 also generally performs video decoding as part of encoding video data.
[0066] In particular, the input of the decoder includes a video bitstream, which can be generated by video encoder 200. The bitstream is first entropy decoded (330) to obtain transform coefficients, motion vectors, and other coded information. The picture partition information indicates how the picture is partitioned. The decoder may therefore divide (335) the picture according to the decoded picture partitioning information. The transform coefficients are dequantized (340) and inverse transformed (350) to decode the prediction residuals. Combining (355) the decoded prediction residuals and the predicted block, an image block is reconstructed.
[0067] The predicted block can be obtained (370) from intra prediction (360) or motion- compensated prediction (i.e., inter prediction) (375). In a similar manner as in the encoder, intra prediction and / or inter prediction may comprise several distinct sub-modes. The decoder obtains (370) the predictor block based on one or more syntax elements signaling the prediction mode among the available intra modes and inter modes. The decoder may blend (370) the intra prediction result and inter prediction result, or blend results from multiple intra / inter prediction methods. Before motion compensation, the motion field may be refined (372) by using already available reference pictures. In-loop filters (365) are applied to the reconstructed image. The filtered image is stored at a reference picture buffer (380). Note that, for a given picture, the contents of the reference picture buffer 380 on the decoder 300 side is identical to the contents of the reference picture buffer 280 on the encoder 200 side for the same picture.
[0068] The decoded picture can further go through post-decoding processing (385), for example, an inverse color transform (e.g. conversion from YCbCr 4:2:0 to RGB 4:4:4) or an inverse remapping performing the inverse of the remapping process performed in the pre-encoding processing (201 ), or re-sizing the reconstructed pictures (ex: up-scaling). The post-decoding processing can use metadata derived in the pre-encoding processing and signaled in the bitstream.
[0069] Some of the embodiments described herein relates to entropy encoding and entropy decoding of at least one part of an image or a video to encode or decode. Embodiments described herein could also apply to any kind of input data that is being encoded / decoded, such as an image, a video, a volumetric content, audio signals, ....
[0070] In the case of image or video input data, any one of the embodiments described herein can be implemented for instance in entropy coding module of a video encoder and entropy decoding module of a video decoder. For instance, the embodiments described herein can be implemented in the entropy coding module 245 of the video encoder 200 in FIG. 2 or the entropy decoding module 330 of the video decoder 300 in FIG. 3.
[0071] In VVC ( Versatile video coding, ITU-T H.266, TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU, SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services - Coding of moving video, April 2022) and a current vesion of the ECM ( “Algorithm description of Enhanced Compression Model 10 (ECM 10)”, M. Coban, R.-L. Liao, K. Naser, J. Strom, L. Zhang, document JVET-AE2025, 29th JVET Meeting), a large part of the signaling is done using an entropy coding of the values to transmit. Especially, using CABAC (Context Adaptive Binary Arithmetic Coding), only binary values are encoded / decoded and generic (i.e. non-binary) values should first undergo a binarization process. The binzarization process provides a binary representation of the generic values, that is a representation using only binary symbols.
[0072] For each individual bin (binary symbol) to encode, a probability model is attached, to represent the conditional probability of the bin being equal to 1 or 0. This probability model may depend on some contextual information. This allows reaching an average coding rate for the considered bin that is close to the theoretical lower bound defined by the conditional entropy of the binary symbol given the contextual information. This conditional entropy is known to be lower than the non-contextual entropy, thus leading to a lower coding rate.
[0073] In the following, the probability of a bin is meant to be the probability that the bin value is T. But the principles described herein apply similarly to the case that the probability is the one that the bin value is ‘O’.
[0074] The probability of each bin to encode is updated after each encoding / decoding, according to the value taken by the considered coded bin. The speed at which the probability is updated is a parameter of the model (i.e. the probability model associated to the bin). Another parameter is the initial probability used by the model.
[0075] An example of an entropy coding scheme is illustrated in FIG. 4:
[0076] For each bin to encode, at 410, a context is selected. At 420, it is determined if the bin is the first one to encode for this context. If this is the case, at 430, an initial probability p is obtained for the selected context. The initial probability is known both at the encoder and decoder. Otherwise (no at 420), at 440, the current probability p is obtained. At 450, the bin is encoded using the obtained probability value p. At 460, the current probability value is updated to provide an updated probability value p’ which then becomes the current probability value for the next bin to encode using the selected context. At 460, the current probability value is updated using a window size parameter w that is associated with the selected context.
[0077] As can be seen, each context is associated with a current probability p and a window size w corresponding to the update speed of the probability. Typically, the probability is updated (460 on FIG. 4) as follows: p' = a * b + (1 - a) * p, where p is the current probability, p’ is the updated probability, b the bin value encoded / decoded using the current probability p, and a = where w is the window size which determines the speed at which the probability is being updated.
[0078] In recent codecs like HEVC and VVC, a context is associated with two probabilities pO and p1 and the two probabilities are maintained and updated during encoding / decoding. The two probabilities pO and p1 are updated using two different window sizes, wO and w1 . In the case of maintaining two probabilities, each bin is encoded / decoded by considering the weighted sum of the two probabilities pO and p1 using a weight a. The windows sizes are updated each time a bin has been encoded / decoded depending on parameters dwOO, dw01 , dw10, dw11 . The current probability p or in case there are two probabilities pO and p1 , are initialized using an initial probability value. Typically, pO and p1 are initialized using the same initial probability value.
[0079] The parameters for a given context (initial probability, windows sizes, weight between probabilities) depend on external parameters, such as the type of slice to encode (intra I, biprediction, B uni-direction P), a swicth model (between B and P), a quantization parameter qp.
[0080] Each context uses parameters that are known between the encoder and the decoder, and these parameters are decided per context.
[0081] At the beginning of each slice, the parameters for each context are initialized as depicted in FIG. 5. Depending on a slice type of the slice being encoded / decoded, a slope and an offset are obtained, as well as window sizes wO and w1. The initial probability p is computed using the qp parameter for the slice, and the obtained slope and offset.
[0082] Moreover, a flag called sh_cabac_init_flag is signaled in the slice header for non intra slices as shown in the table 1 below. This flag allows to switch the parameters to use for initialization: when the flag is true for a B slice, P slice parameters set are used, and the other way around.
[0083] Table 1
[0084] FIG. 6 shows an example of an overall CABAC engine for an inter slice. The parameters in dashed boxes are fixed parameters for a particular context. These parameters are chosen between 3 parameters set: the set defined for B slice, the set defined for P slice and the set from a previous model. The previous model is the one used for a previous coded slice which is carried over a following slice together with the probability values learned when encoding the previous slice. For Intra slices, only the I model is available.
[0085] Note that the dw values (dwOO, dw01 , dw10, dw11 ) are shared for all models (B, P, I and previous model).
[0086] As illustrated on FIG. 6, a bin is encoded / decoded (at 610) using probability value p which depends on probabilities p’0 and p’1 ans is determined as follows (at 620): p=a*p’0+(1-a)*p’1. These probabilities p’0 and p’1 are initialized with the same value as pO and p1 (POi and P1 i on FIG. 6), and p’0 and p’1 are updated using the previously used values of pO and p1 , the observed bin and the modified update windows wO’ and wT (which also depend on the observed bin).
[0087] The probability pO and p1 (at state t) are updated (respectively at 640 and 641 ) depending on the bin value b and window sizes wO and w1 respectively: pO_next= aO * b + (1 -aO) *p0 where being the updated pO and p1 values (at state t+1).
[0088] The windows size wO’ and wT are updated (respectively at 650 and 651 ) from wO and w1 using the bin value b and the corresponding dw parameters as follows: w0’=w0+dw0[b] and w1’=w1+dw1[b], with dw0[b] and dw1 [b] being dwOO and dw10 if b is 0, or dw01 and dw1 1 if b is 1 .
[0089] The probability p’O and p’1 (at state t) are then updated (respectively at 630 and 631 ) depending on the bin value b using the updated window sizes wO’ and wT as follows: al' = and with pO’_next and p1’_next being the updated p’O and p’1 values (at state t+1 ).
[0090] In the VVC standard, CABAC contains the following major changes compared to the design in HEVC: a Core CABAC engine, a separate residual coding structure for transform block and transform skip block and a context modeling for transform coefficients. The core CABAC engine is further described below.
[0091] The CABAC engine in HEVC uses a table-based probability transition process between 64 different representative probability states. In HEVC, the range ivICurrRange representing the state of the coding engine is quantized to a set of 4 values prior to the calculation of the new interval range. The HEVC state transition can be implemented using a table containing all 64x4 8-bit pre-computed values to approximate the values of ivICurrRange * pLPS( pStateldx ), where pLPS is the probability of the least probable symbol (LPS) and pStateldx is the index of the current state. Also, a decode decision can be implemented using a pre-computed LUT. First IvILpsRange is obtained using the LUT. Then, IvILpsRange is used to update IvICurrRange and calculate the output binVal.
[0092] IvILpsRange = rangeTabLps[ pStateldx ][ qRangeldx ] (3- 1 )
[0093] In VVC, the probability is linearly expressed by the probability index pStateldx. Therefore, all the calculation can be done with equations without LUT operation. To improve the accuracy of probability estimation, a multi-hypothesis probability update model is applied. The pStateldx used in the interval subdivision in the binary arithmetic coder is a combination of two probabilities pStateldxO and pStateldxl. The two probabilities are associated with each context model and are updated independently with different adaptation rates. The adaptation rates of pStateldxO and pStateldxl for each context model are pre-trained based on the statistics of the associated bins. The probability estimate pStateldx s the weighted average of the estimates from the two hypotheses.
[0094] FIG. 7 shows a flowchart for decoding a single binary decision in VVC, that is FIG. 7 illustrates an example of decoding a binary symbol binVal. As done in HEVC, VVC CABAC also has a QP dependent initialization process invoked at the beginning of each slice. Given the initial value of a luma QP for the slice, the initial probability state of a context model, denoted as preCtxState, is derived as follows: m = slopeldx x 5 - 45 (3-2) n = (offset Idx « 3) +7 (3-3) preCtxState = Clip3(1, 127, ((m x (QP - 32)) » 4) + n) (3-4) where slopeldx and offsetldx are restricted to 3 bits, and total initialization values are represented by 6-bit precision. The probability state preCtxState represents the probability in the linear domain directly. Hence, preCtxState only needs proper shifting operations before input to arithmetic coding engine, and the logarithmic to linear domain mapping as well as the 256-byte table is saved. pStateldxO = preCtxState « 3 (3-5) pStateldxl = preCtxState « 7 (3-6)
[0095] In ECM (Algorithm description of Enhanced Compression Model 3 (ECM 3) JVET-X2025-v2 Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29
[0096] 23rd Meeting, by teleconference, 7-16 July 2021) extended precision and slice-type-based window size are proposed. The intermediate precision used in the arithmetic coding engine is increased, including three elements. First, the precisions for two probability states are both increased to 15 bits, in comparison to 10 bits and 14 bits in VVC. Second, the LPS range update process is modified as follows:
[0097] If q>= 16384, q = 215-1 -q
[0098] RLPS=((range*(q»6))»9)+1 , where range is a 9-bit variable representing the width of the current interval, q is a 15-bit variable representing the probability state of the current context model, and RLPS is the updated range for LPS. This operation can also be realized by looking up a 512x256-entry in 9-bit look-up table. Third, at the encoder side, the 256-entry look-up table used for bits estimation in VTM is extended to 512 entries.
[0099] Regarding the slice-type-based window size, since statistics are different with different slice types, it is beneficial to have a context probability state updated at a rate that is optimal under the given slice type. Therefore, for each context model, three window sizes are pre-defined for I-, B-, and P-slices, respectively, as the initialization parameters. The context initialization parameters and window sizes are retrained.
[0100] Study in ECM have been proposed for adaptive update rates, weighted average and state carry-over SEREGIN ET AL., "EE2-Test4.3: Combined tests of EE2-4. 1 and EE2-4.2", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29, Document JVET-Z0135-v1, 26th Meeting, by teleconference, 20 April 2022). While the update rules for the two probability states pStateldxO and pStateldxl stay the same, encoding of the n-th bit (bin bn) with a given context is performed using probability states pStateldxO’ and pStateldxT, which are obtained from pStateldxO and pStateldxl using window sizes wO’ and wT which depend on the (n-1 )-th bin noted bn-i (that is the previous encoded / decoded bin using the same given context), where: and dO(bi) and d1 (bi) are look-up tables on offset values dOO, d01 , d10 and d11 defined at initialization for the considered context and added to the window size wO and w1 .
[0101] Furthermore, the probability state used for encoding or decoding is a weighted average of pStateldxO’ and pStateldxl’ (instead of a simple average as before): pStateldx(n) = a*pStateldxO’(n) + (1-a)*pStateldx1’(n), (3-55) where the parameter a (same as a in FIG. 6) is obtained from a LUT and depends on the context and on the slice type.
[0102] Finally, the initial state of some B or P-slices are inherited from previous slices instead of being re-initialized at each slice: more precisely, the two final states of each B-slice (or P-slice) are stored and used to initialize the next B-slice (or P-slice) in the same intra-period sharing the same temporal level and qp.
[0103] From the foregoing, it appears that for each slice, CABAC encodes / decodes a series of bins, also called bin streams in the following, using specific contexts with distinct probability model. That is, each context has its own probability models which evolve over time when encoding / decoding binary symbols using this context. All the binary symbols encoded / deocded using the same context can be represented as a sequence of bins, or bin stream.
[0104] It may happen that one or more of these bin streams is exclusively composed of ‘0’ bins (respectively T) or any other serie of bins that follow an identifiable pattern, (for example alternating 0 and 1 such as 0 1 0 1 0 1 0 1 ...) . Encoding such bin streams has a CABAC cost that is not negligible, in particular for a high number of bins. An aim of some embodiments described herein is to reduce the cost for encoding such patterns of bins.
[0105] Examples of cabac costs are provided below.
[0106] For example, a flag that is present in N coding units (CU) of a slice is to be encoded using a given cabac context. If pi is the current probability to have a T bin in the probability model of the given cabac context, when coding N zero bins, pi progressively converges towards a small value. But since this value is higher or equal to a minimal bound pi min, which depends on the probability value representation in considered video codec and on the update windows, the minimal cost Cmin to encode the N zero bins (assuming a constant probability of pi min) is: Cmin = - N * log2(1 -pimin).
[0107] In current implementation of ECM, as the minimal probability pimin is 1 / 210, Cmin is given by: Cmin = -N*log2(1023 / 1024). For example, for N=1000, Cmin = 1 .4 bits.
[0108] Below are some examples of estimated encoding costs for one CTC (Common Test Conditions) video file:
[0109] Table 2: ECM encoding of BqTerrace with QP 27: example of images (POC) with zero bins for SigCoefGroup context, and their associated estimated cost.
[0110] Some embodiments provide a method for signaling to the decoder that a sequence of bins that uses a same context or a group of contexts follows an identifiable pattern and that the sequence of bins is thus not encoded. It can be seen from above, that for some context it can be more beneficial to signal that the sequence of bins for this context follows a pattern rather than transmitting the corresponding encoded CABAC stream.
[0111] In some embodiments, a signalization flag is added in the slice header. This flag may have a fixed cost of 1 bit per slice and per context. Some variants are provided that allow to decrease the signalization cost, for example when the flag is signaled for a high number of contexts and patterns.
[0112] In some embodiments, for some contexts for which the bin streams follow identifiable patterns, the CABAC encoding of bin streams for these contexts is modified. A not-coded flag is signaled to the decoder indicating if the encoding is skipped or not for such a bin stream. In some variant, the not-coded flag can be an identifier or an index so as to transmit not only a binary value. In the following, the not-coded flag could be also be referred to as skipping information. The skipping information indicating whether or not a sequence of bins that use a specific context for arithmetic encoding / decoding is skipped. In some variant, the skipping information also indicates the pattern to reconstruct the sequence of bins when its encoding / decoding is skipped.
[0113] In some variants, higher-level information is signal to the decoder to activate / deactivate the tool “not-coded” for some contexts at the beginning of each slice (or before each CTU, or before each CTU line).
[0114] In some variants, the not-coded flags are transmitted in an optimized way, e.g. via arithmetic coding.
[0115] Embodiments are described below for encoding / decoding a sequence of bins that use a same context for entropy coding. However, the embodiments can also apply for encoding / decoding a sequence of bins that use a group of contexts. In this case, the sequence of bins comprises all the bins that uses one of the context of the group of contexts.
[0116] In the embodiments described below, the sequence of bins corresponds to bins that have been generated for encoding at least one part of an image. The at least one part of the image can comprise: one or more blocks, one or more groups of blocks, a slice, one or more lines of groups of blocks, the image, or even more than an image.
[0117] FIG. 8 illustrates an example of a method 800 for encoding a sequence of binary symbols according to an embodiment. As explained above, the method 800 is implemented for at least one part of an image to encode and for at least one context. At 810, the sequence of binary symbols is obtained. As described above, a binary symbol of the sequence represents either a syntax element to encode when the syntax element is a binary element such as a flag, or one bit from a binarization of a syntax element when the syntax element is not a binary element. In either cases, the syntax elements have been obtained when encoding the at least one part of the image. For example, the binary symbols are the symbols that are provided as input to a context-based arithmetic encoding module of an encoder. As described above, the at least one context is associated to one or more probability values used for arithmetically encoding the sequence of binary symbols.
[0118] At 820, it is determined whether or not the sequence of binary symbols represents a given pattern. In other words, it is determined whether or not a given pattern can be identified in the sequence of binary symbols. For example, it is checked whether the sequence of binary symbols is a series of 0s or a series of 1 s or an alternating of 0s and 1s.... If a pattern can be identifed in the sequence of binary symbols (yes at 820), then at 830, the encoding of the sequence of binary symbols is skipped and an information is signaled that indicates that arithmetic encoding for the sequence of binary symbols is skipped.
[0119] If a pattern cannot be identifed in the sequence of binary symbols (yes at 820), then at 840, an information is signaled that indicates that arithmetic encoding for the sequence of binary symbols is not skipped and at 850, the sequence of binary symbols is arithmetically encoded using the one or more probability values associated to the at least one context. When encoding the binary symbols, the probability values associated to the context are updated as described above.
[0120] In a variant, at 830, when the encoding of the sequence of binary symbols is skipped, probability values associated with the context are not updated as the corresponding binary symbols are not arithmetically encoded.
[0121] In another variant, at 830, when the encoding of the sequence of binary symbols is skipped, probability values associated with the context are updated taking into account the observed binary symbols of the sequence. In this way, probability values are learned as if the binary symbols that use the context were encoded even if the binary symbols are not arithmetically encoded.
[0122] When skipping the arithmetic enoding of binary symbols that use a given context, whether or not updating the probability values associated to the given context shall be done in a same manner in the encoder and the decoder.
[0123] In an embodiment, at 830, when the encoding of the sequence of binary symbols for the context is skipped, it is the arithmetic encoding of a binary symbol of the sequence that is not performed, i.e. skipped, when the entropy core coder engine encounters this binary symbol during the entropy coding of the binary symbols generated by the encoding of the at least one part of an image.
[0124] FIG. 9 illustrates an example of a method 900 for decoding a sequence of binary symbols according to an embodiment. For example, the sequence of binary symbols has been encoded in the manner descrbied with FIG. 8. As for method 800, the method 900 for decoding a sequence of binary symbols is implemented for at least one part of an image to decode and for at least one context. The at least one context is associated to one or more probability values used for arithmetically decoding the sequence of binary symbols, with a binary symbol of the sequence being part of a binarization of a syntax element relating to the at least one part of the image. At 910, an information is decoded which indicates whether or not arithmetic decoding for the sequence of binary symbols is skipped. If the decoded information indicates that arithmetic decoding for the sequence of binary symbols is skipped (yes at 910), then at 920, a given pattern which represents the sequence of binary symbols is obtained. In a variant, the given pattern is known to the decoder and is fixed, for example it can be a series of Os or a series of 1 s. In antoher variant, the given pattern is identifed using the decoded information. For example, the decoded information is an index indicating the pattern, for example a value 0 indicates no pattern (no at 910), 1 indicates a series of Os or 0-length pattern, 2 indicates a series of 1 s or 1 -length pattern, 3 indicates an alternate of Os and 1 s pattern. Other values are possible as well as other patterns can be included. At 930, when the pattern is obtained, the sequence of binary symbols is determined by assigning values to the binary symbols according to the given pattern. Assigning the values to the binary symbols can be carried out over time by the core CABAC decoding engine when reading the bistream and arithmetically decoding the binary symbols for the at least one part of an image. When reading the bitstream and a next binary symbol to be decoded is one that uses the considered context (the context for which encoding of the binary symbols has been skipped), the binay symbol to be decoded takes a value according to the pattern obtained for the context.
[0125] If, at 920, the decoded information indicates that arithmetic decoding for the sequence of binary symbols is not skipped (thus the sequence of binary symbols does not represent a given pattern, then at 940, the sequence of binary symbols is arithmetically decoded using the one or more probaiblity values associated to the at least one context. When decoding the binary symbols, the probability values associated to the context are updated as described above.
[0126] In a variant, at 930, when the decoding of the sequence of binary symbols is skipped, probability values associated with the context are not updated as the corresponding binary symbols are not arithmetically decoded but determined using the obtained pattern.
[0127] In another variant, at 930, when the decoding of the sequence of binary symbols is skipped, probability values associated with the context are updated taking into account the value determined for a binary symbol of the sequence using the obtained pattern.
[0128] In the following, embodiments are described with 0 run-length pattern, but embodiments also apply to 1 run-length pattern. More generally, embodiments apply to any known patterns, for example: alternate of 0 and 1 bin, long range of 0 with only one small range of 1 etc.).
[0129] As described with FIG. 8 and 9, the CABAC or arithmetic encoding / decoding is modified for detecting patterns in bin streams using specific context.
[0130] Embodiments described are described herein in the case of CABAC entropy encoding and decoding as used in HEVc, VVC or the ECM under study. However, embodiments apply in a similar manner to any arithmetic encoding / decoding scheme that uses context for encoding binary symbols. Different variants can be implemented. For example, on the encoder side, the pattern detection on series of bins can be applied at different levels: at slice level, or at CTU (Coding Tree Unit or group of blocks) level, or at CU level (Coding Unit or block) or at beginning of a line or a group of lines of CTUs level.
[0131] The signaling of the information indicating whether or not the encoding of the bin streams is skipped is thus provided at the considered level.
[0132] The pattern detection, and thus the corresponding signaling, could be implemented for one or more slice type, such as I, P or B, or for one or more slice QPs or one or more specific temporal layers when using a hierarchical temporal decompositon of the video frames for encoding.
[0133] In some embodiments, the pattern detection and the corresponding signaling could be implemented for each one of the contexts Ci used in the context-based arithmetic codec or for only a subset of them.
[0134] As indicated with FIG. 8, the pattern detection takes place inside the encoder cabac engine, after the Cus or blocks are compressed, and all bin values are known for each CU or block.
[0135] At a slice level, or at the beginning of each CTU, or each CTU slice, or each CU, for each context Ci considered, instead of encoding bin after bin the sequence of bins which use this context Ci, a detection stage takes place to identify the presence of some patterns in the series of bins. For example, it looks if all bins of the sequence that use the context Ci are zero for all CUs or blocks of the slice.
[0136] If it is the case, the arithmetic encoding of all bins that use the context Ci is skipped, and a flag, called not-coded flag in the following, set to 1 is signaled for this slice and this context Ci. In this variant, the not-coded flag corresponds to the information indicating whether or not the encoding of the bin streams is skipped mentionned with FIG. 8 and 9.
[0137] Else (no pattern has been identified in the sequence of bins that use the context Ci), the bins are arithmetically encoded and transmitted, and the not-coded flag is set to 0 and signaled.
[0138] In a variant, the information indicating whether or not the encoding of the bin streams is skipped is a binarized identifier indicating a type of pattern. For example, a value 0 indicates no pattern identified, 1 indicates a 0-length pattern, 2 indicates a 1 -length pattern, 3 indicates an alternate 0-1 pattern. Other values are possible and other patterns can also be considered.
[0139] In a variant, even when a pattern is detected, the encoder may decide to encode the sequence of bins or to skip its encoding based on bitrate cost decision that takes into account the cost of signaling the information indicating that encoding is skipped (for example using a not-coded flag set to 1 ) compared to a reference cost of signaling the encoded sequence of bins. The encoder may also decide to not use this feature for some slices. Instead, it can transmit the encoded sequence of bins and an information indicating that encoding is not skipped (for example using a not-coded flag set to 0).
[0140] For example, in this variant, the following heuristic can be applied, as depicted in FIG. 10: Costref is the cost of the encoded bins of the sequence that use the considered context Ci, and which contains a detected pattern, Si is the cost for signaling a not-coded flag sei to 1 and So is the cost of signaling the not-coded flag set to 0. The encoder checkes whether a pattern is detected or not in the sequence of bins for the context Ci. For example, it checks whether or not all bins are 0. If not, then the cost for transmitting the sequence of bins for the context Ci is set to Costref+So and the not-coded flag is set to 0. Otherwise (a pattern is detected), it checks if Costref+So is lower than Si, that is it is checked whether it is cheaper in terms of bitrate to encode the sequence of bins for the context Ci along with the not-coded flag set to 0 or to send only the not-coded flag is set to 1 .
[0141] FIG. 11 illustrates an example of a method for signaling or decoding syntax elements used in some embodiments described herein. According to an embodiment, it is signaled to the decoder when the feature is activated. In this embodiement, the conditions when to skip the encoding of a sequence of bins using a given contxext Ci as described in the embodiments above can be first agreed between the encoder and the decoder following a normative specification.
[0142] For example, for a given profile of content, the algorithm specification of the codec defines a subset of contexts Ci, a subset of slice type, QPs, and a subset of patterns, for which the “not coded’ feature is activated by default, that is the conditions for which it is possible to skip the encoding of a sequence of bins.
[0143] In an embodiment, this piece of information can be dynamic, and transmitted in an APS (Adaptive Parameter Set), a SPS (Sequence Parameter Set), or a slice header (SH); alternatively, this piece of information is transmitted more than once per slice, e.g. at the beginning of each CTU line, or at the beginning of each CTU, or at the beginning of each CU. The table 3 below shows an illustration of the signaling within a SPS, where a list sps_not_coded_context_ids[] of length sps_num_not_codeds_context_ids is added. This list containts indexes of contexts Ci for which pattern detection and signaling can be used.
[0144] Table 3
[0145] In a variant, an index Ci in the list sps_not_coded_context_ids[] may identify not a single context Ci, but an identifier of a collection of contexts sharing same classification criteria. In this variant, the signaling cost is reduced. Instead of signaling each context identifier, the contexts are classified in few categories or coding tools and a category index idx is signaled. In a non-limitative example, considering the coding tool "Split_f lag" as used in the ECM, there is actually 8 sub-contexts with context id = 0 to 8 that are used for this coding tool. All 8 subcontexts of the coding tool can be grouped into a same category so that one index is signaled for the 8 sub-contexts. In other examples, the contexts are assigned an identifer known by the encoder and decoder, some features / coding tools use a range of contexts (for example mmvd uses contexts with identifiers from 51 to 64, msvd uses contexts with identifiers from 204 to 257). A classification can be made by considreing the range of contexts identifiers used by the coding tools and an index assigned to each class.
[0146] In another variant, a base identifier for the context identifier is signaled as well as a number of N consecutives contexts that have a same activation value of the « not coded » feature. For example, (204, 53) would be interpreted as all contexts having an identifier in the range [204, 257],
[0147] In another variant, for each context for which the sps_not_coded_context_ids[j] is activated, a boolean value can be signaled sub_context[i] for each sub-context i of the context ) indicating the same for each sub-context.
[0148] In another embodiment, at a more fine-tuned level, for example at a slice level, or beginning of line of CTU level, the encoder can choose if it is better to use the “not coded’ feature or not by signaling for one context Ci (or group of contexts Ci ) an activation flag. In this embodiment, it is signaled for each one of the context or group of contexts for which pattern detection and signaling can be used, whether the feature is enabled or not.
[0149] Table 4 below is an illustration of a signaling inside a SH where a list of activation flags sh_not_coded_activation_flags[] is added for each context or group of contexts to which the feature can be applied. When combined with the previous embodiment, the activation flag is signaled for each previously signaled sps_not_coded_context_ids.
[0150] As illustrated in table 4, sh_not_coded_activation_flags[] are for example signaled in a global header (for example a SPS , or in SH).
[0151] Table 4
[0152] Table 5 below illustrates an example of signaling the not-coded flags for the contexts for which the feature is enabled.
[0153] For each selected slice and contexts Ci where the feature is activated (table 3 and 4), the value of the not-coded flags or of an identifier when the information also signals the pattern, are signaled to the decoder.
[0154] In a variant, the not-coded flags are transmitted in clear form in the SH. The table 5 below gives an example of signaling in a SH:
[0155] Table 5
[0156] In a variant, the not-coded flags are encoded using one encoding technique, like for instance arithmetic coding. In one variant, this arithmetic coding can be instantiated using a CABAC context Cnot_codedj, with an associated probability pi . Therefore, when embodiments are applied on N contexts Ci for M QPs, N*M attached contexts Cnot coded j are added.
[0157] In a sub-variant, each attached context Cnot_codedj uses a fixed (non-adaptive) probability.
[0158] In another sub-variant, the cabac contexts are partitioned into a certain number of subsets Si,... Sk and a new cabac context is defined for each subset Si. THe new cabac context defined for a subset Si is used to entropy encode and decode all not-coded flags for the contexts in the subset Si. To minimize the signaling cost, the CABAC encoding of not-coded flag bins for all selected contexts may be merged together in the same output signalization encoded NAL (Network Abstract Layer), that may be prepended in the slice data, or in the SH. In this latter case, the SH signals the not-coded flags in the encoded form of a CABAC bitstream.
[0159] FIG. 11 illustrates an example of a method 1 100 for signaling or decoding syntax elements used in some embodiments described herein. At 1 110, it is signaled the contexts for which the sequence of bins that use this context can be skipped, for example using the signaling of table 3. At 11 10, it is signaled the contexts among the contexts used by the arithmetic coder that are available for using the feature of the pattern detection and corresponding signaling of skipping information. This step can be optional, if the considered contexts are known between the encoder and decoder, for example hard-coded in a normative specification.
[0160] At 1 120, it is signaled for each of the contexts that are available for using the pattern detection and corresponding signaling of skipping information, whether the pattern detection and corresponding signaling of skipping information is enabled or disabled for this context, for example using the signaling of table 4.
[0161] At 1130, for each one of the contexts for which the pattern detection and corresponding signaling of skipping information is enabled, it is signaled whether the sequence of bins that use the considered context is skipped or not. At 1130, the skipping information (or also referred as not-coded flag) is signaled. This is done for example using table 5.
[0162] In some variants, the CABAC encoding of Not-coded flags can be optimized as follows.
[0163] In the following, embodiments are provided for optimizing the cost of signaling the not-coded flags, when they are encoded with new CABAC contexts, called Cnot_codedj below.
[0164] It is considered that the initial probability pi to have a T for a context Cnot_codedj is fixed. The choice of an optimal value for pi is crucial to be as close as possible to observations and match the real distribution of 0 and 1 values for the not-coded flags.
[0165] In one embodiment, the encoder runs a training phase to find best parameters for each probability model and context Cnot_codedj. Each context is trained independently on a set of sequences, like the set used for CTC.
[0166] For a current versionof the codec to optimize, a classic encoding is first performed and all bin values are dumped after the compression part, for each sequence, slice and context Ci. These bins streams serve as input for the training for all associated contexts Cnot_codedj.
[0167] For each bin streams related to a selected context Ci, for a given slice type and a slice QP: the cumulated reference cost Costref are computed. The cumulated reference cost Costref is the sum of the cabac cost for encoding all bin streams that use context Ci belonging to all POCs and all sequences of the CTC.
[0168] A cumulated candidate cost Costk is computed for encoding the bin streams using detection of patterns and corresponding signaling in one of the embodiments described above and using a cabac context Cnot_codedj initialized with a fix probability pk for each k in [0..1], for example by step of 1 / 29(the actual resolution of initial probabilities in ECM).
[0169] When computing the cost Costk, the heuristic described in FIG. 10 to determine if the Not- coded flag must be set or not can be used. In the CABAC case, the cost Si (Resp. So) to signal a 1 (Resp. 0) is -log(pk), (Resp. -Iog(1 -pk)).
[0170] The probability pmax that gives the maximum bitrate gain as Costk - Costref is determined and used as initial values for the context considered.
[0171] Depending on the value of the maximum bitrate gain on all CTC, the encoder may activate or not the pattern detection feature for a given context, for example if maximum bitrate gain is greater than a given threshold, using the signalization described in tables 3 and 4.
[0172] An example of an algorithm to optimize each context Cnot_codedj that consists in finding the best probability pmax that gives the best gain on all the CTC, is as follows:
[0173] For all Context Ci
[0174] Best_gain = 0
[0175] / / compute the reference costs Costref j
[0176] COStref J=0
[0177] For all sequences in CTC
[0178] For all slices with slice_type in sublist(B, P, I), QP in sublist of QPs
[0179] Costref j = Costref j + costci(bin stream) # cabac reference cost computed with context Ci
[0180] / / find best probability p_imaxfor not-coded context Cnot_codedj
[0181] For all candidate probability pk in [0..1]
[0182] Initialize a not-coded context Cnot _codedj,k with internal probability pk
[0183] Costi,k = 0
[0184] For all sequences
[0185] For all slices with slice_type in sublist(B, P, I), QP in sublist of QPs
[0186] Costi,k= Costi,k+ costcnot_codedj,k (bin stream)
[0187] # cabac cost computed with context Cnot_codedj,k as described in FIG. 10
[0188] Current gain = Costi.k- Costref j
[0189] If Current gain > best_gain then
[0190] Best_gain = current gain
[0191] Best proba p J_max — Pk
[0192] In an embodiment, illustrated in FIG. 12, in a transmission context between two remote devices A and B over a communication network NET, the device A comprises a processor in relation with memory RAM and ROM which are configured to implement a method for encoding a sequence of binary symbols according to any one of the embodiments described herein and the device B comprises a processor in relation with memory RAM and ROM which are configured to implement a method for decoding a sequence of binary symbols according to any one of the embodiments described herein. In accordance with an example, the network is a broadcast network, adapted to broadcast / transmit a coded video from device A to decoding devices including the device B.
[0193] FIG. 13 shows an example of the syntax of a signal transmitted over a packet-based transmission protocol. Each transmitted packet P comprises a header H and a payload PAYLOAD. In some embodiments, the payload PAYLOAD may comprise data representative of at least one part of an image encoded according to any one of the embodiments described above. The payload can also comprise any signaling as described above. For example, the signal comprises for at least one context associated to one or more probability values used for arithmetically encoding a sequence of binary symbols, a binary symbol of the sequence being part of a binarization of a syntax element relating to the at least one part of the image, the coded data comprises an information indicating whether or not arithmetic encoding for the sequence of binary symbols is skipped. The signal can also comprise one or more first syntax elements indicating for one or more contexts, whether or not a sequence of binary symbols can be skipped, the sequence of binary symbols being obtained for the one or more contexts or for one of the one or more contexts, and / or for one or more contexts, a second syntax element enabling or disabling that a sequence of binary symbols can be skipped for at least one context of the one or more contexts.
[0194] Various implementations involve decoding. “Decoding”, as used in this application, can encompass all or part of the processes performed, for example, on a received encoded sequence in order to produce a final output suitable for display. In various embodiments, such processes include one or more of the processes typically performed by a decoder, for example, entropy decoding, inverse quantization, inverse transformation, and differential decoding. In various embodiments, such processes also, or alternatively, include processes performed by a decoder of various implementations described in this application, for example, entropy decoding a sequence of binary symbols to reconstruct image or video data.
[0195] As further examples, in one embodiment “decoding” refers only to entropy decoding, in another embodiment “decoding” refers only to differential decoding, and in another embodiment “decoding” refers to a combination of entropy decoding and differential decoding, and in another embodiment “decoding” refers to the whole reconstructing picture process including entropy decoding. Whether the phrase “decoding process” is intended to refer specifically to a subset of operations or generally to the broader decoding process will be clear based on the context of the specific descriptions and is believed to be well understood by those skilled in the art.
[0196] Various implementations involve encoding. In an analogous way to the above discussion about “decoding”, “encoding” as used in this application can encompass all or part of the processes performed, for example, on an input video sequence in order to produce an encoded bitstream. In various embodiments, such processes include one or more of the processes typically performed by an encoder, for example, partitioning, differential encoding, transformation, quantization, and entropy encoding. In various embodiments, such processes also, or alternatively, include processes performed by an encoder of various implementations described in this application, for example, determining re-sampling filter coefficients, resampling a decoded picture.
[0197] As further examples, in one embodiment “encoding” refers only to entropy encoding, in another embodiment “encoding” refers only to differential encoding, and in another embodiment “encoding” refers to a combination of differential encoding and entropy encoding. Whether the phrase “encoding process” is intended to refer specifically to a subset of operations or generally to the broader encoding process will be clear based on the context of the specific descriptions and is believed to be well understood by those skilled in the art.
[0198] Note that the syntax elements as used herein, are descriptive terms. As such, they do not preclude the use of other syntax element names.
[0199] This disclosure has described various pieces of information, such as for example syntax, that can be transmitted or stored, for example. This information can be packaged or arranged in a variety of manners, including for example manners common in video standards such as putting the information into an SPS, a PPS, a NAL unit, a header (for example, a NAL unit header, picture header or a slice header), or an SEI message. Other manners are also available, including for example manners common for system level or application level standards such as putting the information into one or more of the following: a. SDP (session description protocol), a format for describing multimedia communication sessions for the purposes of session announcement and session invitation, for example as described in RFCs and used in conjunction with RTP (Real-time Transport Protocol) transmission. b. DASH MPD (Media Presentation Description) Descriptors, for example as used in DASH and transmitted over HTTP, a Descriptor is associated to a Representation or collection of Representations to provide additional characteristic to the content Representation. c. RTP header extensions, for example as used during RTP streaming. d. ISO Base Media File Format, for example as used in OMAF and using boxes which are object-oriented building blocks defined by a unique type identifier and length also known as 'atoms' in some specifications. e. HLS (HTTP live Streaming) manifest transmitted over HTTP. A manifest can be associated, for example, to a version or collection of versions of a content to provide characteristics of the version or collection of versions.
[0200] When a figure is presented as a flow diagram, it should be understood that it also provides a block diagram of a corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flow diagram of a corresponding method / process.
[0201] Some embodiments refer to rate distortion optimization. In particular, during the encoding process, the balance or trade-off between the rate and distortion is usually considered, often given the constraints of computational complexity. The rate distortion optimization is usually formulated as minimizing a rate distortion function, which is a weighted sum of the rate and of the distortion. There are different approaches to solve the rate distortion optimization problem. For example, the approaches may be based on an extensive testing of all encoding options, including all considered modes or coding parameters values, with a complete evaluation of their coding cost and related distortion of the reconstructed signal after coding and decoding. Faster approaches may also be used, to save encoding complexity, in particular with computation of an approximated distortion based on the prediction or the prediction residual signal, not the reconstructed one. Mix of these two approaches can also be used, such as by using an approximated distortion for only some of the possible encoding options, and a complete distortion for other encoding options. Other approaches only evaluate a subset of the possible encoding options. More generally, many approaches employ any of a variety of techniques to perform the optimization, but the optimization is not necessarily a complete evaluation of both the coding cost and related distortion.
[0202] The implementations and aspects described herein can be implemented in, for example, a method or a process, an apparatus, a software program, a data stream, or a signal. Even if only discussed in the context of a single form of implementation (for example, discussed only as a method), the implementation of features discussed can also be implemented in other forms (for example, an apparatus or program). An apparatus can be implemented in, for example, appropriate hardware, software, and firmware. The methods can be implemented in, for example, a processor, which refers to processing devices in general, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices, such as, for example, computers, cell phones, portable / personal digital assistants ("PDAs"), and other devices that facilitate communication of information between end-users.
[0203] Reference to “one embodiment” or “an embodiment” or “one implementation” or “an implementation”, as well as other variations thereof, means that a particular feature, structure, characteristic, and so forth described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrase “in one embodiment” or “in an embodiment” or “in one implementation” or “in an implementation”, as well any other variations, appearing in various places throughout this application are not necessarily all referring to the same embodiment.
[0204] Additionally, this application may refer to “determining” various pieces of information. Determining the information can include one or more of, for example, estimating the information, calculating the information, predicting the information, or retrieving the information from memory.
[0205] Further, this application may refer to “accessing” various pieces of information. Accessing the information can include one or more of, for example, receiving the information, retrieving the information (for example, from memory), storing the information, moving the information, copying the information, calculating the information, determining the information, predicting the information, or estimating the information.
[0206] Additionally, this application may refer to “receiving” various pieces of information. Receiving is, as with “accessing”, intended to be a broad term. Receiving the information can include one or more of, for example, accessing the information, or retrieving the information (for example, from memory). Further, “receiving” is typically involved, in one way or another, during operations such as, for example, storing the information, processing the information, transmitting the information, moving the information, copying the information, erasing the information, calculating the information, determining the information, predicting the information, or estimating the information.
[0207] It is to be appreciated that the use of any of the following “and / or”, and “at least one of”, for example, in the cases of “A / B”, “A and / or B” and “at least one of A and B”, is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of both options (A and B). As a further example, in the cases of “A, B, and / or C” and “at least one of A, B, and C”, such phrasing is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of the third listed option (C) only, or the selection of the first and the second listed options (A and B) only, or the selection of the first and third listed options (A and C) only, or the selection of the second and third listed options (B and C) only, or the selection of all three options (A and B and C). This may be extended, as is clear to one of ordinary skill in this and related arts, for as many items as are listed.
[0208] Also, as used herein, the word “signal” refers to, among other things, indicating something to a corresponding decoder. In this way, in an embodiment the same parameter is used at both the encoder side and the decoder side. Thus, for example, an encoder can transmit (explicit signaling) a particular parameter to the decoder so that the decoder can use the same particular parameter. Conversely, if the decoder already has the particular parameter as well as others, then signaling can be used without transmitting (implicit signaling) to simply allow the decoder to know and select the particular parameter. By avoiding transmission of any actual functions, a bit savings is realized in various embodiments. It is to be appreciated that signaling can be accomplished in a variety of ways. For example, one or more syntax elements, flags, and so forth are used to signal information to a corresponding decoder in various embodiments. While the preceding relates to the verb form of the word “signal”, the word “signal” can also be used herein as a noun.
[0209] As will be evident to one of ordinary skill in the art, implementations can produce a variety of signals formatted to carry information that can be, for example, stored or transmitted. The information can include, for example, instructions for performing a method, or data produced by one of the described implementations. For example, a signal can be formatted to carry the bitstream of a described embodiment. Such a signal can be formatted, for example, as an electromagnetic wave (for example, using a radio frequency portion of spectrum) or as a baseband signal. The formatting can include, for example, encoding a data stream and modulating a carrier with the encoded data stream. The information that the signal carries can be, for example, analog or digital information. The signal can be transmitted over a variety of different wired or wireless links, as is known. The signal can be stored on a processor- readable medium.
[0210] A number of embodiments has been described above. Features of these embodiments can be provided alone or in any combination, across various claim categories and types.
Claims
CLAIMS1 . A method, comprising, for at least one part of an image and for at least one context: obtaining a sequence of binary symbols, a binary symbol of the sequence being part of a binarization of a syntax element relating to the at least one part of the image, the at least one context being associated to one or more probability values used for arithmetically encoding the sequence of binary symbols, determining whether the sequence of binary symbols represents a given pattern, encoding an information indicating whether arithmetic encoding for the sequence of binary symbols is skipped, responsive to a determination that the information indicates that arithmetic encoding for the sequence of binary symbols is not skipped, arithmetic encoding the sequence of binary symbols using the one or more probability values associated to the at least one context.
2. An apparatus comprising one or more processors operable to, for at least one part of an image and for at least one context: obtain a sequence of binary symbols, a binary symbol of the sequence being part of a binarization of a syntax element relating to the at least one part of the image, the at least one context being associated to one or more probability values used for arithmetically encoding the sequence of binary symbols, determine whether the sequence of binary symbols represents a given pattern, encode an information indicating whether arithmetic encoding for the sequence of binary symbols is skipped, responsive to a determination that the information indicates that arithmetic encoding for the sequence of binary symbols is not skipped, arithmetically encode the sequence of binary symbols using the one or more probability values associated to the at least one context.
3. A method comprising, for at least one part of an image and for at least one context associated to one or more probability values used for arithmetically decoding a sequence of binary symbols, a binary symbol of the sequence being part of a binarization of a syntax element relating to the at least one part of the image: decoding an information indicating whether arithmetic decoding for the sequence of binary symbols is skipped,when the decoded information indicates that arithmetic decoding for the sequence of binary symbols is skipped, determining values for the binary symbols of the sequence according to a given pattern, otherwise, arithmetic decoding the sequence of binary symbols using the one or more probability values associated to the at least one context.
4. An apparatus comprising one or more processors operable to, for at least one part of an image and for at least one context associated to one or more probability values used for arithmetically decoding a sequence of binary symbols, a binary symbol of the sequence being part of a binarization of a syntax element relating to the at least one part of the image: decode an information indicating whether arithmetic decoding for the sequence of binary symbols is skipped, when the decoded information indicates that arithmetic decoding for the sequence of binary symbols is skipped, determine values for the binary symbols of the sequence according to a given pattern, otherwise, arithmetically decode the sequence of binary symbols using the one or more probability values associated to the at least one context.
5. The method of claim 1 or 3 or the apparatus of claim 2 or 4, wherein the information indicates the given pattern.
6. The method of any one of claims 1 , 3 or 5 or the apparatus of any one of claims 2 or 4-5, wherein responsive to a determination that the encoded or decoded information indicates that arithmetic encoding or decoding for the sequence of binary symbols is skipped, the method further comprises or the one or more processors are further operable to update the one or more probability values associated to the at least one context based on the binary symbols of the sequence.
7. The method of any one of claims 1 , 3 or 5-6 or the apparatus of any one of claims 2 or 4-6, wherein the sequence of binary symbols is obtained for one of a block of the image, a group of blocks of the image, a line of groups of blocks of the image, or a slice of the image.
8. The method of any one of claims 1 , 3, 5-7 or the apparatus of any one of claims 2 or 4-7, wherein the at least one part of the image corresponds to a given slice type, or a given temporal layer.
9. The method of any one of claims 1 , 3, or 5-8 or the apparatus of any one of claims 2 or 4-8, wherein the sequence of binary symbols is obtained for a subset of contexts comprising the at least one context.
10. The method of any one of claims 1 , 3, or 5-9 or the apparatus of any one of claims 2 or 4-9, further comprising or the one or more processors being further operable to encode or decode one or more first syntax elements indicating for one or more contexts, whether a sequence of binary symbols can be skipped, the sequence of binary symbols being obtained for the one or more contexts or for one of the one or more contexts.1 1. The method or the apparatus of claim 10, wherein the one or more first syntax elements are signaled in a sequence parameter set or in a slice header or in an adaptive parameter set.
12. The method of any one of claims 1 , 3, or 5-1 1 or the apparatus of any one of claims 2 or 4-11 , further comprising or the one or more processors being further operable to encode or decode for one or more contexts, a second syntax element enabling or disabling that a sequence of binary symbols can be skipped for at least one context of the one or more contexts.
13. The method or the apparatus of claim 12, wherein the second syntax element is signaled in a slice header or for a line of groups of blocks, or for a group of blocks.
14. The method or the apparatus of claim 12 or 13, wherein encoding or decoding an information indicating whether arithmetic encoding or decoding for the sequence of binary symbols is skipped is responsive to the value of the second syntax element obtained for the at least one context.
15. The method of any one of claims 1 , 3, or 5-14 or the apparatus of any one of claims 2 or 4-14, wherein the information is arithmetically encoded or decoded using a second context.
16. The method or the apparatus of claim 15, wherein the second context is shared for a subset of the at least one context, when arithmetically encoding or decoding the information for contexts of the subset.
17. The method of any one of claims 1 , 3, or 5-16 or the apparatus of any one of claims2 or 4-16, wherein the second syntax element enables that a sequence of binary symbols can be skipped for at least one context of the one or more contexts based on a first cost obtained for encoding the sequence of binary symbols and the information indicating that the sequence of binary symbols is not skipped and on a second cost obtained for encoding the information indicating that the sequence of binary symbols is skipped.
18. A non-transitory computer readable medium storing coded data representative of at least one part of an image, for at least one context associated to one or more probability values used for arithmetically encoding a sequence of binary symbols, a binary symbol of the sequence being part of a binarization of a syntax element relating to the at least one part of the image, the coded data comprises an information indicating whether arithmetic encoding for the sequence of binary symbols is skipped.
19. The non-transitory computer readable medium of claim 18, wherein the coded data further comprises one or more first syntax elements indicating for one or more contexts, whether a sequence of binary symbols can be skipped, the sequence of binary symbols being obtained for the one or more contexts or for one of the one or more contexts.
20. The non-transitory computer readable medium of claim 18 or 19, wherein the coded data further comprises, for one or more contexts, a second syntax element enabling or disabling that a sequence of binary symbols can be skipped for at least one context of the one or more contexts.
21. A computer program product including instructions for causing one or more processors to carry out the method of any of claims 1 , 3 or 5-17.
22. A non-transitory computer readable medium storing executable program instructions to cause a computer executing the program instructions to perform the method of any of claims 1 , 3 or 5-17.
23. A device comprising: an apparatus according to claim 4; and at least one of (i) an antenna configured to receive or transmit a signal, the signal including data representative of the at least one part of the image, (ii) a bandlimiter configured to limit the signal to a band of frequencies that includes the data representative of the at least one part of the image, or (iii) a display configured to display the image.
24. A device according to claim 23, wherein the device comprises at least one of a television, a cell phone, a tablet, a set-top box.
Citation Information
Patent Citations
Acceleration of Bypass Binary Symbol Processing in Video Coding
US20120300839A1
Image processing apparatus and method
US20190020877A1
Encoder, decoder, encoding method, and decoding method
US20210105479A1
EP24305010A