Context reduction for context adaptive binary arithmetic coding
Abstract
This record has no abstract on file.
Term
6 yearsto projected expiry
Projected expiry 5 October 2032, counted from filing; an application has no term until it is granted.
- Priority
- Filed
- Published
- Today
- Projected expiry
1 claim: 1 independent, 0 dependent
- 1Zastrzeżenia patentowe 1. Sposób kodowania danych wideo obejmujący:określanie (602) pierwszego trybu predykcji dla bloku danych wideo w wycinku typu P slice;reprezentowanie (604) pierwszego trybu predykcji jako elementu składni typu predykcji wycinka typu P-slice;określanie (606) drugiego typu predykcji dla bloku danych wideo w wycinku typu B slice;elementu składni typu predykcji wycinka typu P-slice i elementu składni typu predykcji wycinka typu B-slice;znamienny tym, że binaryzacja elementu składni typu predykcji wycinka typu P-slice i binaryzacja elementu składni typu predykcji wycinka typu B-slice są określane z wykorzystaniem tej samej logiki binaryzacji. 2. Sposób według zastrzeżenia 1, w którym kodowanie danych wideo obejmuje: binaryzowanie elementu składni typu predykcji wycinka typu P-slice z wykorzystaniem określonej binaryzacji wycinka typu P-slice;binaryzowanie elementu składni typu predykcji wycinka typu B-slice z wykorzystaniem określonej binaryzacji wycinka typu B-slice;stosowanie kodowania typu context adaptive binary arithmetic coding (CABAC) względem binaryzowanego 53/59P36908PL00 EP 2 777 162 B1 elementu składni typu predykcji wycinka typu P-slice;oraz stosowanie kodowania typu context adaptive binary arithmetic coding (CABAC) względem binaryzowanego elementu składni typu predykcji wycinka typu B-slice. 3. Sposób dekodowania danych wideo obejmujący: odwzorowywanie (710) binaryzowanego elementu składni typu predykcji wycinka typu P-slice na typ predykcji z wykorzystaniem odwzorowania binaryzacji dla bloku danych wideo w wycinku typu P slice;odwzorowywanie (712) binaryzowanego elementu składni typu predykcji wycinka typu B-slice na typ predykcji oraz dekodowanie (714) danych wideo na podstawie odwzorowanych typów predykcji;znamienny przez wykorzystywanie tego samego odwzorowania binaryzacji dla bloku danych wideo w wycinku typu B slice;4. Sposób według zastrzeżenia 3, obejmujący ponadto: odbieranie (702) kodowanego za pomocą kodowania typu context adaptive binary arithmetic elementu składni typu predykcji wycinka typu P-slice, który wskazuje typ predykcji dla bloku danych wideo w wycinku typu P slice;i odbieranie kodowanego za pomocą kodowania typu context adaptive binary arithmetic elementu składni typu predykcji wycinka typu B-slice, który wskazuje typ predykcji dla bloku danych wideo w wycinku typu B slice, przy czym dekodowanie danych wideo obejmuje ponadto: dekodowanie (706) elementu składni typu predykcji wycinka typu P-slice w celu utworzenia binaryzowanego elementu składni typu predykcji wycinka typu P-slice;oraz 53/59P36908PL00 EP 2 777 162 B1 dekodowanie (708) elementu składni typu predykcji wycinka typu B-slice w celu utworzenia binaryzowanego elementu składni typu predykcji wycinka typu B-slice. 5. Sposób według zastrzeżenia 1 albo 3, w którym element składni typu predykcji wycinka typu P-slice i element składni typu predykcji wycinka typu B-slice określają tryb predykcji i typ podziału. 6. Sposób według zastrzeżenia 5, w którym tryb predykcji zawiera jedną spośród predykcji międzyobrazowej i predykcji wewnątrzobrazowej. 7. Sposób według zastrzeżenia 5, w którym typ podziału zawiera jedne spośród podziałów symetrycznych i podziałów asymetrycznych. 8. Urządzenie (20) skonfigurowane do kodowania danych wideo, zawierające: środki (41) do określania pierwszego typu predykcji dla bloku danych wideo w wycinku typu P slice;środki (41) do reprezentowania pierwszego typu predykcji jako elementu składni typu predykcji wycinka typu Pslice;środki (41) do określania drugiego typu predykcji dla bloku danych wideo w wycinku typu B slice;środki (41) do reprezentowania drugiego typu predykcji jako elementu składni typu predykcji wycinka typu Bslice;środki (41) do określania binaryzacji wycinka typu Pslice dla elementu składni typu predykcji wycinka typu Pslice;53/59P36908PL00 EP 2 777 162 B1 środki do określania binaryzacji wycinka typu B-slice dla elementu składni typu predykcji wycinka typu B-slice;oraz środki (56) do kodowania danych wideo na podstawie binaryzacji elementu składni typu predykcji wycinka typu P-slice oraz elementu składni predykcji wycinka typu Bslice;znamienne tym, że środki do określania binaryzacji wycinka typu P-slice dla elementu składni typu predykcji wycinka typu P-slice oraz środki do określania binaryzacji wycinka typu B-slice dla elementu składni typu predykcji wycinka typu B-slice są skonfigurowane do wykorzystywania tej samej logiki binaryzacji;9. Urządzenie według zastrzeżenia 8, w którym środki do kodowania danych wideo zawierają: środki do binaryzowania elementu składni typu predykcji wycinka typu P-slice z wykorzystaniem określonej binaryzacji wycinka typu P-slice;środki do binaryzowania elementu składni typu predykcji wycinka typu B-slice z wykorzystaniem określonej binaryzacji wycinka typu B-slice;środki do stosowania kodowania typu context adaptive binary arithmetic coding (CABAC) względem binaryzowanego elementu składni typu predykcji wycinka typu P-slice;oraz środki do stosowania kodowania typu context adaptive binary arithmetic coding (CABAC) względem binaryzowanego elementu składni typu predykcji wycinka typu B-slice . 10. Urządzenie (30) skonfigurowane do dekodowania danych wideo zawierające: środki do odwzorowywania binaryzowanego elementu składni typu predykcji wycinka typu P-slice na typ predykcji z 53/59P36908PL00 EP 2 777 162 B1 wykorzystaniem odwzorowania binaryzacji dla bloku danych wideo w wycinku typu P slice;środki do odwzorowywania binaryzowanego elementu składni typu predykcji wycinka typu B-slice na typ predykcji z wykorzystaniem odwzorowania binaryzacji dla bloku danych wideo w wycinku typu B slice;oraz środki (80;81) do dekodowania danych wideo na podstawie odwzorowanych typów predykcji;znamienne tym, że środki do odwzorowywania binaryzowanego elementu składni typu predykcji wycinka typu P-slice i środki do odwzorowywania binaryzowanego elementu składni typu predykcji wycinka typu B-slice są skonfigurowane do wykorzystywania tego samego odwzorowania binaryzacji. 11. Urządzenie według zastrzeżenia 10, zawierające ponadto: środki do odbierania kodowanego za pomocą kodowania typu context adaptive binary arithmetic elementu składni typu predykcji wycinka typu P-slice, który wskazuje typ predykcji dla bloku danych wideo w wycinku typu P slice;oraz środki do odbierania kodowanego za pomocą kodowania typu context adaptive binary arithmetic elementu składni typu predykcji wycinka typu B-slice, który wskazuje typ predykcji dla bloku danych wideo w wycinku typu B slice, w którym środki do dekodowania danych wideo zawierają ponadto: środki do dekodowania elementu składni typu predykcji wycinka typu P-slice w celu utworzenia binaryzowanego elementu składni typu predykcji wycinka typu P-slice;oraz środki do dekodowania elementu składni typu predykcji wycinka typu B-slice w celu utworzenia binaryzowanego elementu składni typu predykcji wycinka typu B-slice. 53/59P36908PL00 EP 2 777 162 B1 12. Urządzenie według zastrzeżenia 8 albo 10, w którym element składni typu predykcji wycinka typu P-slice i element składni typu predykcji wycinka typu B-slice określają tryb predykcji i typ podziału. 13. Urządzenie według zastrzeżenia 12, w którym tryb predykcji zawiera jedną spośród predykcji międzyobrazowej i predykcji wewnątrzobrazowej. 14. Urządzenie według zastrzeżenia 12, w którym typ podziału zawiera jedne spośród podziałów symetrycznych i podziałów asymetrycznych. 15. Odczytywalny komputerowo nośnik pamięci przechowujący instrukcje, które podczas wykonywania powodują, że jeden lub większa liczba procesorów skonfigurowanych do kodowania lub dekodowania danych wideo wykonuje sposób zgodnie z, odpowiednio, dowolnym z zastrzeżeń od 1 do 7. Qualcomm Incorporated Peł nomocnik: 53/59P36908PL00 EP 2 777 162 B1 53/59P36908PL00 EP 2 777 162 B1 53/59P36908PL00 EP 2 777 162 B1 DEKODER WIDEO FIG.3 53/59P36908PL00 EP 2 777 162 B1 53/59P36908PL00 EP 2 777 162 B1 53/59P36908PL00 EP 2 777 162 B1 53/59P36908PL00 EP 2 777 162 B1 53/59P36908PL00 EP 2 777 162 B1 53/59P36908PL00 EP 2 777 162 B1 53/59P36908PL00 EP 2 777 162 B1
473 paragraphs in 84 sections, as filed
TECHNICAL FIELD [0001] The present invention relates to video coding, in particular context adaptive binary arithmetic coding (CABAC) coding used in video coding.
BACKGROUND [0002] Digital video capabilities can be contained in a wide range of devices, including digital television, digital direct broadcast systems, wireless broadcast systems, digital assistant (PDA) devices, laptops or desktop computers, tablet computers, e-book readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cellular or satellite radiotelephones, so-called 'smartphones', video teleconferencing devices, video streaming devices and the like. Digital video devices implement video compression techniques, such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Part 10, advanced video coding ( AVC), a high performance video coding standard (HEVC) that is currently in the state of development and extension of such standards. Video devices can transmit, receive, encode, decode and / or save digital video information in a more efficient way by implementing such video compression techniques.
[0003] Video compression techniques implement spatial (intra-picture) and / or time (inter-picture) prediction to reduce or remove the redundancy present in video sequences. For block-based
53 / 59P36908PL00
In video coding, the slice video slice (i.e., video or part of a video image) can be divided into video blocks, which can also be referred to as tree blocks, encoding units (CUs), and / or nodes coding. The video blocks in the intra-picture (I) coded slice of the image are coded using spatial prediction with reference samples in adjacent blocks in the same image. Video blocks in inter-image coded (P or B) image slice can use spatial prediction for reference samples in adjacent blocks for reference in the same image or time prediction for reference samples in other images. Images can be referred to as frames, and reference images can be referred to as reference frames.
[0004] The result of spatial or temporal prediction is the predictor block for the block to be coded. Residual data represents pixel differences between the original block to be encoded and the predictor block. The inter-picture coded block is coded according to a motion vector that indicates a block of reference samples forming a predictor block, and residual data indicating the difference between the coded block and the predictor block. The in-picture coded block is encoded according to the in-picture coding mode and the residual data. For additional compression, residual data can be transformed from the pixel domain to the transformation domain, resulting in residual transformation coefficients that can then be quantized. Quantized transformation coefficients, initially ordered in a two-dimensional array, can be scanned to create a one-dimensional transformation coefficient vector, and entropy coding can be used to achieve even greater compression.
53 / 59P36908PL00
EP 2 777 162 B1 [0005] In the document "WD4: Working Draft of High-Efficiency Video Coding" by B Bross et al, from the 6th JCT-VC meeting; 97.MPEG Meeting, Torino July 14-22, 2011 describes adaptive context coding.
SUMMARY OF THE INVENTION not limiting inter_pred_flag, merge_idx, cbf_cr, [0006] The invention is defined in the claims to which reference is now made. Basically, this document describes techniques for context adaptive binary arithmetic coding (CABAC) in video encoding. In particular, this document proposes to reduce the number of CABAC contexts used for one or more syntax elements, examples of which include pred_type, ref_idx_lx, cbf_cb, coeff_abs_level_greater1_flag, and coeff_abs_level_greater2_flag. Modifications can provide a reduction of up to 56 contexts with negligible changes in coding performance. The proposed context reductions for syntax elements can be used individually or in any combination.
[0007] A method for coding video data is described that includes determining a split type for a prediction mode for a video data block, encoding a binary symbol of the split type syntax of a prediction type video block using video CABAC coding with a single context, the single context being such alone for any type of division, and encoding the binary symbol size of the prediction type syntax element for the video data block using CABAC encoding in bypass mode.
[0008] A method for decoding video data is described which comprises receiving a prediction type syntax element for a video data block that has been encoded using encoding
53 / 59P36908PL00
EP 2 777 162 B1
CABAC, wherein the prediction type syntax element includes a split type binary symbol representing the split type and a split size binary symbol representing the split size, decode the binary symbol split type of the prediction type syntax element using context adaptive binary arithmetic coding with a single context, with a single the context is the same for any type of split, and decoding the binary symbol size of the prediction type syntax element using CABAC encoding in bypass mode.
[0009] A method of coding video data is described which comprises coding a coded Cb chrominance block tag for a video block using CABAC coding, wherein coding a coded CbAC chrominance block tag comprises using a set of contexts comprising one or more contexts as part of the CABAC coding. and coding the coded Cr chrominance block tag using CABAC coding, wherein the coding of the coded Cr chrominance block tag includes the use of the same set of contexts as the coded Cb chrominance block tag as part of the CABAC coding.
[0010] The details of one or more examples are set out in the accompanying drawings and the description below. Other features, objectives and advantages will become apparent based on the description and drawings, as well as the reservations.
BRIEF DESCRIPTION OF THE DRAWINGS [0011]
FIG. 1 is a block diagram illustrating an exemplary video coding and decoding system that can use the techniques described herein.
53 / 59P36908PL00
EP 2 777 162 B1
FIG. 2 is a block diagram illustrating an exemplary video encoder that can implement the techniques described herein.
FIG. 3 is a block diagram illustrating an example video decoder that can implement the techniques described herein.
FIG. 4 is a schematic diagram illustrating both types of square and non-square division.
FIG. 5 is a schematic diagram illustrating types of asymmetric division.
FIG. 6 is a flowchart illustrating an exemplary video coding method according to the invention.
FIG. 7 is a flowchart illustrating an exemplary video decoding method according to the invention. FIG. 8 is a flowchart illustrating an exemplary video coding method according to the invention.
FIG. 9 is a flowchart illustrating an exemplary video decoding method according to the invention. FIG. 10 is a flowchart illustrating an exemplary video coding method according to the invention.
DETAILED DESCRIPTION [0012] This document describes techniques for encoding data such as video data. In particular, the document describes techniques that can promote efficient coding of video data using contextual adaptive entropy coding processes. In particular, this document proposes to reduce the number of CABAC contexts used to encode syntax elements such as pred_type, merge_idx, inter_pred_flag, ref_idx_lx, cbf_cb, cbf_cr, coeff_abs_level_greater1_flag and coeff_abs_level_greater. Modifications reduce
53 / 59P36908PL00
EP 2 777 162 B1 with up to 56 contexts with negligible changes in coding performance. This document describes video coding for illustrative purposes. However, the techniques described in this document may also be used to encode other types of data.
[0013] FIG. 1 is a block diagram illustrating an example video encoding and decoding system 10 that can be configured to use context adaptive binary arithmetic coding (CABAC) techniques in accordance with examples of the present invention. As shown in FIG. 1, the system 10 includes a source device 12 that transmits the encoded video to the target device 14 via the communication channel 16. The encoded video data can also be saved on storage medium 34 or on server 36 files and can be accessed via target device 14 as required. When data is stored on a storage media or on a file server, the video encoder 20 can provide encoded video data to another device, such as a network interface, compact disc (CD), recorder or device for pressing Blu-ray discs or universal video discs (DVDs) ), or other devices for storing encoded video data on a storage medium. Similarly, a device separate from the video decoder 30, such as a network interface, CD or DVD reader, or the like, can recover encoded video data from a storage medium and provide the recovered data to the video decoder 30.
[0014] The source device 12 and the target device 14 can be any of a variety of different devices, including desktop computers, notebook computers (i.e. laptops), tablet computers, set-top boxes, handsets such as so-called smartphones , televisions, cameras, display devices, digital media players, video game consoles, or the like. In many cases, such devices can
53 / 59P36908PL00
EP 2 777 162 B1 be equipped to implement wireless communication. Thus, the communication channel 16 may include a wireless channel, a wired channel, or a combination of wireless and wired channels suitable for transmitting encoded video data. Similarly, target device 14 can access the file server 36 via any standard data connection, including an internet connection. It may include a wireless channel (e.g. Wi-Fi connection), wired connection (e.g. DSL, cable modem, etc.), or a combination of both that is suitable for accessing encoded video data saved on a file server.
[0015] CABAC coding techniques, according to the examples of the present invention, can be used in video coding to support any of a wide variety of multimedia applications, such as over-the-air broadcasting, cable television broadcasts, satellite broadcasts, video streaming, for example. via the Internet, digital video encoding for recording on a data storage medium, decoding digital video recorded on a data storage medium, or other applications. In some examples, the system 10 may be configured to support unidirectional or bidirectional video transmission to support applications such as video streaming, video playback, video broadcasting and / or video telephony.
[0016] In the example of FIG. 1, source device 12 includes a video source 18, video encoder 20, modulator / demodulator 22 and transmitter 24. In source device 12, video source 18 may include a source such as a video capture device such as a video camera, archive video containing previously captured video, a video resource interface for receiving video from a video content provider, and / or a computer graphics layout to generate computer graphics data as
53 / 59P36908PL00
Source video, or a combination of such sources. As one example, if the video source 18 is a video camera, the source device 12 and the target device 14 may form so-called video cameras or video phones. However, the techniques described in this document can be used essentially in video coding, and can be used in wireless and / or wired applications, or in an application in which the encoded video data is stored on a local disk.
[0017] Captured, previously captured or computer generated video may be encoded by a video encoder. The encoded video information can be modulated by modem 22 in accordance with a communication standard, such as a wireless communication protocol, and transmitted to target device 14 via transmitter 24. Modem 22 may include various mixers, filters, amplifiers or other components designed to modulate signals. The transmitter 24 may include systems for transmitting data, including amplifiers, filters and one or more antennas.
[0018] Captured, previously captured or computer generated video, which is encoded by the video encoder 20, can also be saved on storage medium 34 or on server 36 files for later use. The storage medium 34 may be Blu-ray discs, DVD discs, CD-ROMs, flash memory, or any other suitable storage medium for storing encoded video. The encoded video stored on the storage medium 34 can then be accessed by the target device 14 for decoding and playback. Although not shown in FIG. 1, in some examples, storage medium 34 and / or file server 36 can store transmitter output 24.
[0019] The file server 36 may be any type of server capable of storing the encoded video and transmitting the encoded video to the target device 14.
53 / 59P36908PL00
EP 2 777 162 B1
Exemplary file servers include a network server (e.g. for a website), an FTP server, network attached storage (NAS) devices, a local disk drive, or any other type of device capable of saving encoded video data and transmitting it to the target device. The transmission of encoded video data from a 36 file server can be streaming, download, or a combination of both. The target file server 14 can be accessed by the target device 14 via any standard data connection, including an internet connection. It may include a wireless channel (e.g. Wi-Fi connection), a wired connection (e.g. DSL, cable modem, Ethernet, USB, etc.), or a combination of both that is suitable for accessing encoded video data stored on the server files.
[0020] Target device 14, in the example of FIG. 1, includes receiver 26, modem 28, video decoder 30, and display device 32. Receiver 26 of destination device 14 receives information via channel 16, and modem 28 demodulates information to create a demodulated bit stream for video decoder 30. Information communicated via channel 16 may include a variety of different syntax information generated by the video encoder 20 for use by the video decoder 30 in decoding video data. Such submission may also be included in the encoded video data recorded on the storage medium 34 or on the server 36 files. Each of the video encoder 20 and the video decoder 30 may be part of a respective codec (CODEC) that is capable of encoding or decoding video data.
[0021] The display device 32 may be integrated with or on the outside of the target device 14. In some examples, the target device 14 may include an integrated display device, and may also be configured to connect to an external device
53 / 59P36908PL00
EP 2 777 162 B1. In other examples, the target device 14 may be a display device. Basically, the display device 32 displays the decoded video data to a user, and can include any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or any other type of display device.
[0022] In the example of FIG. 1, the communication channel 16 may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines, or any combination of wireless and wired carriers. The communication channel 16 may form part of a packet network, such as a local area network, wide area network, or a global network, such as the Internet. The communication channel 16 generally represents any suitable communication medium, or collection of different communications, for transmitting video data from the source 12 to the destination device 14, including any suitable combination of wired or wireless carriers. The communication channel 16 may include routers, switches, base stations or any other equipment that may be useful to allow communication from the source device 12 to the target device 14.
[0023] The video encoder 20 and video decoder 30 may operate in accordance with a video compression standard such as the High Performance Video Encoding Standard (HEVC) currently being developed by the Joint Collaborative Team on Video Coding (JCT-VC) within the Video Coding Experts group Group (VCEG) ITU-T and the ISO / IEC Motion Picture Experts Group (MPEG). The latest draft of the HEVC standard, referred to as "HEVC Working Draft 6" or "WD6" is described in document JCTVCH1003 by Bross et al., "High efficiency video coding of device carriers
53 / 59P36908PL00
EP 2 777 162 B1 (HEVC) text specification draft 6 "Joint Collaborative Team on
Video Coding (JCT-VC) in ITU-T SG16 WP3 and ISO / IEC
JTC1 / SC29 / WG11, 8th Meeting: San Jose, California, USA, February, 2012, which, from June 1, 2012, can be downloaded from http://phenix.intevry.fr/jct/doc_end_user/documents/8_San%20Jose/ WG11 / JCTVCH1003-v22.zip.
[0024] Alternatively, the video encoder 20 and the video decoder 30 may operate in accordance with proprietary or industrial standards, such as the ITU-T H.264 standard, alternatively referred to as MPEG-4, Part 10, advanced extensions of such standards.
however, the present invention is not limited to any particular coding standard. Other examples include MPEG-2 and ITU-T video coding (AVC) or the techniques of the present
H.263.
[0025] Although not shown in FIG. 1, in some aspects, both the video encoder 20 and the video decoder 30 may be integrated in the audio encoder and decoder, and may include appropriate MUX-DEMUX units, or other hardware and software, to support both audio and video in a shared data stream or separate data streams. If applicable, in some examples, MUX-DEMUX units may be in accordance with the ITU H.223 multiplexer protocol, or other protocols such as the user datagram protocol (UDP).
[0026] Both the video encoder 20 and the video decoder 30 can be implemented as any of a wide variety of suitable encoder circuits, such as one or more microprocessors, digital signal processors (DSP), special purpose integrated circuits (ASICs), directly programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware or any combination thereof. When the techniques are implemented partly in software, the device can store
53 / 59P36908PL00
Instructions for the software in a suitable non-transitive computer readable medium and execute the instructions on the hardware using one or more processors to implement the techniques in accordance with the present invention. Each of the video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, each of which may be integrated as part of a combined encoder / decoder (CODEC) in a respective device.
[0027] The video encoder 20 may implement any or all of the techniques of the present invention for CABAC encoding in the video coding process. Similarly, the video decoder 30 may implement any or all of the techniques for CABAC encoding in the video encoding process. The video encoder as described herein may refer to the video encoder or video decoder. Similarly, the video coding unit may relate to a video encoder or video decoder. Similarly, video encoding may relate to video encoding or video decoding.
[0028] In one example of the invention, the video encoder 20 can be configured to determine the first prediction type for the video slice in a P slice, represent the first prediction type as a syntax element of the P slice slice prediction type, and specify a second prediction type for the block video data in a B slice slice, representing the second prediction type as part of the B-slice slice prediction type syntax, determining the binarization of the Pslice slice for the Pslice slice prediction type syntax element, determining the binarization of the B-slice slice for the B-slice slice prediction syntax element, where the P-slice slice prediction syntax element and the slice type prediction syntax element B-slice are determined using the same binarization logic, and encoding video data based on the binarization of the P-slice slice prediction syntax element and the B-slice slice prediction syntax element.
53 / 59P36908PL00
[0029] In another example of the invention, the video decoder 30 may be configured to map the binaryized syntax element of the P-slice slice prediction type into a prediction type using binarization mapping for the video data block in the P slice slice, binaryized mapping syntax element of the B-slice slice prediction type to the prediction type using the same binarization mapping for the video data block in the B slice slice, and decoding video data based on mapped prediction types.
[0030] In another example of the invention, the video encoder 20 can be configured to determine the split type for the prediction mode for the video data block, encode the binary symbol encode of the split type syntax of the prediction type video block using the single context context CABAC coding the context is the same for any type of split, and encoding the binary symbol size of the prediction type syntax element for the video data block using CABAC encoding in bypass mode.
[0031] In another example of the invention, the video decoder 30 may be configured to receive a prediction type syntax element for a video data block that has been encoded using CABAC encoding, the prediction type syntax element comprising a split type binary symbol representing the split type and a binary symbol Split size representing the split size decoding the binary symbol of the prediction type syntax split element using single context CABAC coding, whereby the single context is the same for any type of split, and decoding the binary symbol of the prediction type syntax split element using CABAC encoding in bypass mode.
[0032] In another example of the invention, both the video encoder 20 and the video decoder 30 can be configured to
53 / 59P36908PL00
Coding a Cb chrominance block coded tag for a video data block using CABAC coding, wherein the coding of the Cb chrominance coded block tag comprises the use of a set of contexts containing one or more contexts as part of the CABAC coding, and for coding a coded chrominance block tag Cr using CABAC coding, wherein the coding of the coded Cr chrominance block tag includes the use of the same set of contexts as the coded Cb chrominance block tag as part of the CABAC coding.
[0033] The JCT-VC group is working on developing the HEVC standard. The HEVC standardization efforts are based on a growing video coding device model known as the HEVC (HM) test model. The HM model assumes several additional capabilities of video coding devices compared to existing devices according to, e.g., ITU-T H.264 / AVC. For example, while H.264 provides nine in-screen prediction coding modes, the HM model can provide up to thirty-three in-screen prediction coding modes. The following paragraph will discuss some aspects of the HM model in more detail.
[0034] In general, the working model of the HM model describes that a video frame or video can be divided into a sequence of tree blocks or largest coding units (LCU) that contain both luminance and chrominance samples. The tree block has a similar purpose to the H.264 macroblock. The slice contains many successive blocks of the tree in coding order. The video frame or picture can be divided into one or more slice slices. Each block of the tree can be divided into coding units (CU) according to a quadruple tree. For example, a tree block, such as a quad root tree node, can be divided into four child nodes, and each child node can in turn be a parent node and can be divided into four more nodes
53 / 59P36908PL00
Daughter children. The terminated, undivided child node, as the leaf node of the quad tree, contains the encoding node, i.e. the encoded video block. The syntax data associated with the coded bit stream may specify the maximum number of times the tree block splits, and may also specify the minimum size of the coding nodes.
[0035] The CU includes coding node and prediction units (PU) and transformation units (TU) associated with the coding node. The CU unit size basically matches the size of the coding node and usually must have a square shape. The CU unit size can range from 8x8 pixels, up to a tree block size of up to 64x64 pixels or more. Each CU may contain one or more PU units and one or more TU units. Syntax data associated with a CU may describe, for example, dividing the CU into one or more PU. The split modes may vary depending on whether the CU is bypassed or encoded in direct mode, encoded in intra-image prediction mode or in inter-image prediction mode. PU units can be divided so that they do not have a square shape. Syntax data associated with a CU may also describe, for example, dividing the CU into one or more TUs according to the quadruple tree. The TU unit may have a square or non-square shape.
[0036] The incoming HEVC standard allows transformations according to TUs, which can be different for different CUs. TUs typically have sizes based on the size of PU units with a given CU unit defined for a split LCU, although this case may not always be the case. TU units are usually the same size as or smaller than PU units. In some examples, residual samples corresponding to the CU unit may be
53 / 59P36908PL00
EP 2 777 162 B1 internally divided into smaller units using the quadruple tree structure known as the "residual quadruple tree" (RQT). RQT tree leaf nodes can be referred to as transformation units (TUs). The pixel difference values associated with the TU units can be transformed to create transformation coefficients that can be quantized.
[0037] Basically, the PU unit refers to data related to the prediction process. For example, when the PU unit is encoded in the intra-picture mode, the PU unit may contain data describing the intra-picture prediction mode for the PU unit. As another example, when the PU unit is encoded in cross-picture mode, the PU unit may contain data defining a motion vector for the PU unit. Data defining the motion vector for the PU unit may describe, for example, the horizontal component of the motion vector, vertical component of the motion vector, resolution for the motion vector (e.g. accuracy to one quarter pixel or accuracy to one eighth pixel), reference image as indicated by the vector motion, and / or a list of reference images (e.g., List 0, List 1 or List C) for the motion vector.
[0038] Basically, the TU unit is used for the transformation and quantization process. A CU unit having one or more PU units may also contain one or more transformation units (TUs). After prediction, the video encoder 20 may calculate residual values from the video block identified by the coding node according to the PU. The coding node is then updated to take into account the residual values of the reference instead of the original video block. Residual values contain pixel difference values that can be transformed into transformation coefficients, quantized and scanned using transformations and other transformation information specified in TU units to
53 / 59P36908PL00
EP 2 777 162 B1 to form arranged transformation coefficients for entropy coding. The coding node can be updated again to refer to these arranged transformation coefficients. This document usually uses the term "video block" to refer to the CU coding node. In some specific cases, the term "video block" may also be used in this document to refer to a treeblock, i.e. an LCU or CU that includes a coding node, and PU and TUs.
[0039] The video sequence usually includes a series of frames or video images. An image group (GOP) generally contains a series of one or more video images. The GOP group may contain syntax data in the GOP group header, the header of one or more images, or elsewhere that describe the number of images contained in the GOP group. Each slice of the image may contain slice syntax data that describe the encoding mode for the corresponding slice. The video encoder 20 typically operates on video blocks in individual slice video slices to encode video data. The video block may correspond to a coding node in the CU. Video blocks can have fixed or variable sizes, and may vary in size according to a particular encoding standard.
[0040] As an example, the HM model supports prediction for different CU unit sizes. Assuming that the specific CU unit size is 2Nx2N, the HM model supports intra-image prediction for PU unit sizes of 2Nx2N or NxN, and inter-image prediction for symmetrical PU units of 2Nx2N, 2NxN, Nx2N or NxN. The HM model also supports an asymmetrical split for inter-image prediction for PU unit sizes of 2NxnU, 2NxnD, nLx2N and nRx2N. Asymmetrical
53 / 59P36908PL00
In the split, one direction of the CU unit is not divided, while the other direction is divided into 25% and 75%. The part of the CU unit corresponding to 25% of the division is indicated by 'n' followed by the indication 'Up', 'Down', 'Left' or 'Right' (' Right "). Thus, for example, "2NxnU" refers to the CU 2Nx2N unit which is horizontally divided with the 2Nx0.5N PU unit at the top and the 2Nx1.5N PU unit at the bottom.
[0041] FIG. 4 is a schematic diagram illustrating both types of quadratic and non-square divisions for intra-image prediction and inter-image prediction.
Division 102 is a 2Nx2N division and can be used for both intra-image and inter-image prediction. Division 104 is an NxN division and can be used for both intra-image and inter-image prediction. Division 106 is a division of 2NxN and is currently used in HEVC coding for inter-image prediction. Division 108 is the division of Nx2N and is currently used in HEVC coding for inter-image prediction.
<td> 112</td><td>is</td><td>division</td><td>2NxnD</td><td>and is</td>
<td>in</td><td colspan="2">HEVC encoding</td><td>for</td><td>prediction</td>
<td> 114</td><td>is</td><td>division</td><td>nLx2N</td><td>and is</td>
<td>in</td><td colspan="2">HEVC encoding</td><td>for</td><td>prediction</td>
<td> 116</td><td>is</td><td>division</td><td>nRx2N</td><td>and is</td>
<td>in</td><td colspan="2">HEVC encoding</td><td>for</td><td>prediction</td>
[0042] FIG. 5 is a schematic diagram illustrating types of asymmetric division. Division 110 is a division of 2NxnU and is currently used in HEVC coding for inter-image prediction. Division currently used between images. Division currently used between images. Division currently used between images.
[0043] In this document, the designations "NxN" and "N na
N "can be used interchangeably to refer to the pixel dimensions of the video block in terms of vertical and horizontal dimensions, e.g. 16x16 pixels or 16 by 16 pixels. basically,
53 / 59P36908PL00
The 16x16 block will have 16 pixels in the vertical direction (y = 16) and 16 pixels in the horizontal direction (x = 16). Similarly, the NxN block generally has N pixels in the vertical direction and N pixels in the horizontal direction, with N representing a non-negative integer value. Pixels in a block can be arranged in rows and columns. In addition, blocks do not necessarily have to have the same number of pixels in the horizontal and vertical directions. For example, blocks may contain NxM pixels, where M is not necessarily equal to N.
[0044] After intra-picture or inter-picture predictive coding using the PU units of the CU, the video encoder 20 can calculate residual data to which transforms determined by the CUs of the TUs are applied. Residual data may correspond to pixel differences between the pixels of the uncoded image and the prediction values corresponding to CU units. The video encoder 20 can create residual data for the CU and then transform the residual data to form transformation coefficients.
[0045] After any transformations to create the transformation coefficients, the video encoder 20 may perform the transformation coefficient quantization. Quantization basically refers to a process in which transformation coefficients are quantized to reduce as much as possible the amount of data used to represent the coefficients, providing additional compression. The quantization process can reduce the bit depth associated with some or all coefficients. For example, the n-bit value may be rounded down to the m-bit value during quantization, where n is greater than m.
[0046] In some examples, the video encoder 20 may use a predetermined scan order to scan the quantized transformation coefficients to form a sorted vector that can be
53 / 59P36908PL00
EP 2 777 162 B1 entropy coded. In other examples, the video encoder 20 may perform adaptive scanning. After scanning the quantized transformation coefficients to form a one-dimensional vector, the video encoder 20 may entropy encode the one-dimensional vector, e.g. according to context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), entropy coding with Probability Interval Partitioning Entropy Coding) (PIPE) or other entropy coding technique. The video encoder 20 may also entropy encode syntax elements associated with the encoded video data for use by the video decoder 30 in decoding video data.
[0047] To implement CABAC encoding, the video encoder 20 may assign a context within the context model to the symbol to be transmitted. The context may relate, for example, to whether the adjacent symbol values are nonzero or not. To implement CAVLC encoding, the video encoder 20 may select a variable length code for the symbol to be transmitted. The code words in the VLC code can be built so that relatively short codes correspond to more likely symbols, while longer codes correspond to less likely symbols. In this way, by using the VLC code, you can save bits compared to, for example, using code words of equal length for each symbol to be transmitted. The likelihood determination can also be based on the context assigned to the symbol.
[0048] This document relates to context adaptive binary arithmetic coding (CABAC) entropy techniques or other entropy coders such as using entropy coding
53 / 59P36908PL00
Probability (PIPE) or related encoders. Arithmetic coding is a form of entropy coding used in many compression algorithms that have high coding efficiency because it is able to map symbols to non-integer code words. An example of an arithmetic coding algorithm is the type of Context Based Binary Arithmetic Coding (CABAC) used in H.264 / AVC.
[0049] In general, coding of data symbols using CABAC encoding involves one or more of the following steps:
(1) Binarization: If the symbol to be encoded has no binary value, it is mapped to a sequence of so-called "bins". Each binary symbol can have a value of "0" or "1".
(2) Context assignment: Each binary symbol (in normal mode) is assigned to the context. The context model determines how the context for a given binary symbol is calculated based on information available for the binary symbol, such as the values of previously encoded symbols or the number of binary symbols.
(3) Coding of binary symbols: binary symbols are encoded by an arithmetic encoder. To encode a binary symbol, the arithmetic coder requires, as an input value, the probability of the value of the binary symbol, i.e. the probability that the value of the binary symbol is equal to "0", and the probability that the value of the binary symbol is equal to "1". The (estimated) probability of each context is represented by an integer value called 'context state'. Each context has a state, and therefore the state (i.e. estimated probability) is the same for binary symbols assigned to one context, and it differs between contexts.
53 / 59P36908PL00
(4) Status update: The probability (status) for the selected context is updated based on the actual coded value of the binary symbol (e.g., if the value of the binary symbol was "1", the probability for "1" is increased).
[0050] It should be noted that entropy coding by probability intervals (PIPE) uses principles similar to the principles of arithmetic coding, and therefore can also use the techniques of the present invention.
[0051] CABAC encoding in H.264 / AVC and HEVC uses states, and each state is implicitly associated with probability by default. There are CABAC coding variants in which the symbol probability ("0" or "1") is used directly, i.e. the probability (or its integer version) is a state. For example, such CABAC coding variants are described in the document "Description of video coding technology proposal by France Telecom, NTT, NTT DOCOMO, Panasonic and Technicolor," JCTVC-A114, 1st JCT-VC Meeting, Dresden, DE, April 2010 hereinafter referred to as "JCTVC-A114", and in a document by A. Alshin and E. Alshin, "Multi-parameter probability update
JCTVC-F254, 6th JCT-VC Meeting, Torino, IT, hereinafter referred to as "JCTVC-F254".
[0052] This document proposes to reduce the number of binarizations and / or contexts used in CABAC coding. In particular, this document proposes techniques that can reduce the number of contexts used in CABAC coding by up to 56. With the number of contexts reduced by 56, the experimental results show a change in the bitdistortion (BD) rate of 0.00%, 0.01% and -0.13% under test conditions only for CABAC coding respectively " , July 2011, high efficiency intra-image (high efficiency intra53 / 59P36908PL00
EP 2 777 162 B1 only), random access and low-delay. As such, reducing the number of contexts needed reduces the memory requirement in both the encoder and decoder without significantly affecting coding performance.
[0053] In this document, it is proposed to reduce the number of CABAC contexts used for the syntax elements, pred_type, merge_idx, inter_pred_flag, ref_idx_lx, cbf_cb, cbf_cr, coeff_abs_level_greater1_flag and coeff_abs_level_greater2_flag. Modifications reduce up to 56 contexts with negligible changes in coding performance. The proposed context reductions for the syntax elements above can be used individually or in any combination.
[0054] The pred_type syntax element contains a prediction mode (pred_mode_flag) and a split type (part_mode) for each coding unit. The pred_mode_flag syntax element of 0 specifies that the current coding unit is encoded in cross-picture prediction mode. The syntax element pred_mode_flag of 1 specifies that the current coding unit is encoded in in-mode prediction mode. The part_mode syntax element specifies the split mode of the current coding unit.
[0055] The syntax element merge_idx [x0] [y0] defines the merging candidate index of the merger candidate list, where x0, y0 specify the location (x0, y0) of the upper left luminance sample of the considered prediction block relative to the upper left luminance sample . When merge_idx [x0] [y0] is not present, it is assumed that it is equal to 0. The list of linking candidates is a list of adjacent coding units for the current units from which traffic information can be copied.
[0056] The syntax element inter_pred_flag [x0] [y0] determines whether single prediction or double prediction is used for the current prediction unit. Indexes x0, y0 of the array
53 / 59P36908PL00
Determine the location (x0, y0) of the upper left luminance sample of the prediction block in question relative to the upper left luminance sample.
[0057] The syntax element ref_idx_lx refers to a specific reference image in the list of reference images.
[0058] The syntax elements cbf_cb, cbf_cr indicate whether or not chrominance transformation blocks (Cb and Cr, respectively) contain non-zero transformation coefficients. The syntax element cbf_cb [x0] [y0] [trafoDepth] equal to 1 specifies that the transformation block Cb contains one or more transformation coefficient levels that are not equal to 0. The indexes x0, y0 of the table determine the location (x0, y0) of the upper left luminance sample of the transformation block in question relative to the upper left luminance sample of the image. The index of the trafoDepth array determines the current level of internal division of the coding unit into blocks for the purposes of coding the transformation. The trafoDepth array index is 0 for blocks that correspond to coding units. When cbf_cb [x0] [y0] [trafoDepth] does not exist and the prediction mode is not an intra-picture prediction mode, it is concluded that cbf_cb [x0] [y0] [trafoDepth] is 0.
[0059] The syntax element cbf_cr [x0] [y0] [trafoDepth] equal to 1 specifies that the transformation block Cr contains one or more transformation coefficient levels that are not equal to 0. Indexes x0, y0 of the array specify location (x0, y0) upper left luminance sample of the transformation block in question relative to the upper left luminance sample of the image. The index of the trafoDepth array determines the current level of internal division of the coding unit into blocks for the purposes of coding the transformation. The trafoDepth array index is 0 for blocks that correspond to coding units. When cbf_cr [x0] [y0] [trafoDepth] does not occur and the prediction mode is not an intra-picture prediction mode,
53 / 59P36908PL00
It is concluded that the value of cbf_cr [x0] [y0] [trafoDepth] is equal to 0.
[0060] The syntax element coeff_abs_level_greater1_flag [n] determines, for scanning items n, whether there are transformation coefficient levels greater than 1. When coeff_abs_level_greater1_flag [n] does not occur, it is assumed to be 0.
[0061] The syntax element coeff_abs_level_greater2_flag [n] determines, for scanning position n, whether there are transformation coefficient levels greater than 2. When coeff_abs_level_greater2_flag [n] does not occur, it is assumed that it is equal to 0.
[0062] In one proposal for HEVC encoding, different binarizations for the pred_type syntax element are used in slice P slices of this document under conditions and B, as shown in Table 1. The proposed use of the same binarization for slice P and B slices Examples are shown in Tables 2-4. Table 5 shows the effect of coding efficiency on P slice slices in typical tests (see e.g. F. Bossen, "Common test and software reference configurations", JCTVCF900).
53 / 59P36908PL00
EP 2 777 162 B1
Table 1. Binarization for pred type in one proposal for HEVC encoding
<td rowspan="3">Type sector type slice</td><td rowspan="3">Value pred_type</td><td rowspan="3">PredMode (mode prediction)</td><td rowspan="3">PartMode (mode division)</td><td colspan="3">A string of binary symbols</td>
<td rowspan="2">cLog2CUSize> Log2MinCUSize (1)</td><td colspan="2">cLog2CUSize = = Log2MinCUSize</td>
<td>cLog2CUSize = = 3 &&! inter_4x4_enabled_flag (2)</td><td>cLog2CUSize> 3 | | inter_4x4_enabled_flag (3)</td>
<td rowspan="2">AND</td><td> 0</td><td>MODE_INTRA</td><td>PART_2Nx2N</td><td> -</td><td> 1</td><td> 1</td>
<td> 1</td><td>MODE_INTRA</td><td>PART_NxN</td><td> -</td><td> 0</td><td> 0</td>
<td rowspan="10">P</td><td> 0</td><td>MODE_INTER</td><td>PART_2Nx2N</td><td> 0 1</td><td> 0 1</td><td> 0 1</td>
<td> 1</td><td>MODE_INTER</td><td>PART_2NxN</td><td> 0 011</td><td> 0 01</td><td> 0 01</td>
<td> 2</td><td>MODE_INTER</td><td>PART_Nx2N</td><td> 0 0011</td><td> 0 00</td><td> 0 001</td>
<td> 4</td><td>MODE_INTER</td><td>PART_2NxnU</td><td> 0 0100</td><td> -</td><td> -</td>
<td> 5</td><td>MODE_INTER</td><td>PART_2NxnD</td><td> 0 0101</td><td> -</td><td> -</td>
<td> 6</td><td>MODE_INTER</td><td>PART_nLx2N</td><td> 0 00100</td><td> -</td><td> -</td>
<td> 7</td><td>MODE_INTER</td><td>PART_nRx2N</td><td> 0 00101</td><td> -</td><td> -</td>
<td> 3</td><td>MODE_INTER</td><td>PART_NxN</td><td> -</td><td> -</td><td> 0000</td>
<td> 4</td><td>MODE_INTRA</td><td>PART_2Nx2N</td><td> 1</td><td> 11</td><td> 11</td>
<td> 5</td><td>MODE_INTRA</td><td>PART_NxN</td><td> -</td><td> 10</td><td> 10</td>
53 / 59P36908PL00
EP 2 777 162 B1 (continuation)
<td rowspan="3">Type sector type slice</td><td rowspan="3">Value pred_type</td><td rowspan="3">PredMode (mode prediction)</td><td rowspan="3">PartMode (mode division)</td><td colspan="3">A string of binary symbols</td>
<td rowspan="2">cLog2CUSize> Log2MinCUSize (1)</td><td colspan="2">cLog2CUSize = = Log2MinCUSize</td>
<td>cLog2CUSize = = 3 &&! inter_4x4_enabled_flag (2)</td><td>cLog2CUSize> 3 | | inter_4x4_enabled_flag (3)</td>
<td rowspan="10">B</td><td> 0</td><td>MODE_INTER</td><td>PART_2Nx2N</td><td> 1</td><td> 1</td><td> 1</td>
<td> 1</td><td>MODE_INTER</td><td>PART_2NxN</td><td> 011</td><td> 01</td><td> 01</td>
<td> 2</td><td>MODE_INTER</td><td>PART_Nx2N</td><td> 0011</td><td> 001</td><td> 001</td>
<td> 4</td><td>MODE_INTER</td><td>PART_2NxnU</td><td> 0100</td><td> -</td><td> -</td>
<td> 5</td><td>MODE_INTER</td><td>PART_2NxnD</td><td> 0101</td><td> -</td><td> -</td>
<td> 6</td><td>MODE_INTER</td><td>PART_nLx2N</td><td> 00100</td><td> -</td><td> -</td>
<td> 7</td><td>MODE_INTER</td><td>PART_nRx2N</td><td> 00101</td><td> -</td><td> -</td>
<td> 3</td><td>MODE_INTER</td><td>PART_NxN</td><td> -</td><td> -</td><td> 0001</td>
<td> 4</td><td>MODE_INTRA</td><td>PART_2Nx2N</td><td> 000</td><td> 000 0</td><td> 0000 0</td>
<td> 5</td><td>MODE_INTRA</td><td>PART_NxN</td><td> -</td><td> 000 1</td><td> 0000 1</td>
53 / 59P36908PL00
[0063] As can be seen in Table 1, slice I slices (e.g. slice slices that only contain intra-picture predicted blocks) contain two different types of prediction (pred_type). One binary symbol string (binarization) is used for an intra-image predicted block with the 2Nx2N split type, while another binary symbol string is used for the intra-image predicted block with the NxN split type. As shown in Table 1, the binary symbol string used for I slice slices does not depend on the size of the CU unit.
[0064] For slice slices P and B, in Table 1, different binary symbol strings are used for each pred_type value. In contrast, the value of pred_type depends on both the prediction mode used (inter-picture prediction or intra-picture prediction) and the type of partition. For slice P and B slices, the actual binary symbol string used also depends on the size of the CU being encoded and whether cross-picture prediction is enabled for the 4x4 block size or not.
[0065] The first column under the binary symbol string applies to a situation in which the logarithmic function of the CU unit size for a coded CU unit is greater than the logarithmic function of the minimum allowable CU size. According to one example in HEVC encoding, the first column of binary symbol strings is used if cLog2CUSize>
Log2MinCUsize. The logarithmic function is used to create a smaller number so that a smaller subsequent index can be used.
[0066] If the logarithmic function of the CU unit size for the coding CU unit is equivalent to the logarithmic function of the minimum allowable CU size (i.e. cLog2CUSize = = Log2MinCUSize), then one of columns 2 and 3 under the string of binary symbols in table 1 is
53 / 59P36908PL00
EP 2 777 162 B1 used for binarization selection. Column 2 is used when the log function of the CU unit size for an encoded CU unit is equivalent to 3 and cross-image prediction for a CU 4x4 unit is not enabled (i.e. cLog2CUSize = = 3 &&
! Inter_4x4_enabled_flag). Column 3 is used when the logarithmic function of the CU unit size for the CU unit to be coded is greater than 3 or when the inter-picture prediction for the CU 4x4 unit is enabled (i.e. cLog2CUSize> 3 || inter_4x4_enabled_flag).
[0067] Table 2 below shows exemplary binarizations, where slice P and B slices use the same binary symbol strings, according to one or more of the examples described herein. As shown in Table 2, P slice slices use the same binarizations used for B slice slices in Table 1. In this way, it is not necessary to save and use a separate set of contexts for both P and B slice slices. As such, the total number of contexts needed to encode the pred_type syntax element is reduced. In addition, only one mapping (instead of two) must be saved between the logic of the binary symbol string (shown in columns (1) - (3)) and the actual string of binary symbols.
53 / 59P36908PL00
EP 2 777 162 B1
Table 2. Binarization for pred type in one example of the invention
<td rowspan="3">Type of slice slice type</td><td rowspan="3">Pred_ type value</td><td rowspan="3">PredMode (mode prediction)</td><td rowspan="3">PartMode (mode division)</td><td colspan="3">A string of binary symbols</td>
<td rowspan="2">cLog2CUSize> Log2MinCUSize (1)</td><td colspan="2">cLog2CUSize = = Log2MinCUSize</td>
<td>cLog2CUSize = = 3 &&! inter_4x4_enabled_flag (2)</td><td>cLog2CUSize> 3 | | inter_4x4_enabled_flag (3)</td>
<td rowspan="2"> 1</td><td> 0</td><td>MODE_INTRA</td><td>PART_2Nx2N</td><td> -</td><td> 1</td><td> 1</td>
<td> 1</td><td>MODE_INTRA</td><td>PART_NxN</td><td> -</td><td> 0</td><td> 0</td>
<td rowspan="10">P or B.</td><td> 0</td><td>MODE_INTER</td><td>PART_2Nx2N</td><td> 1</td><td> 1</td><td> 1</td>
<td> 1</td><td>MODE_INTER</td><td>PART_2NxN</td><td> 011</td><td> 01</td><td> 01</td>
<td> 2</td><td>MODE_INTER</td><td>PART_Nx2N</td><td> 0011</td><td> 001</td><td> 001</td>
<td> 4</td><td>MODE_INTER</td><td>PART_2NxnU</td><td> 0100</td><td> -</td><td> -</td>
<td> 5</td><td>MODE_INTER</td><td>PART_2NxnD</td><td> 0101</td><td> -</td><td> -</td>
<td> 6</td><td>MODE_INTER</td><td>PART_nLx2N</td><td> 00100</td><td> -</td><td> -</td>
<td> 7</td><td>MODE_INTER</td><td>PART_nRx2N</td><td> 00101</td><td> -</td><td> -</td>
<td> 3</td><td>MODE_INTER</td><td>PART_NxN</td><td> -</td><td> -</td><td> 0001</td>
<td> 4</td><td>MODE_INTRA</td><td>PART_2Nx2N</td><td> 000</td><td> 000 0</td><td> 0000 0</td>
<td> 5</td><td>MODE_INTRA</td><td>PART_NxN</td><td> -</td><td> 000 1</td><td> 0000 1</td>
53 / 59P36908PL00
[0068] Table 3 below shows another example of binarization for pred_type. In this example, B slice slices use the same binarizations as P slice slices from Table 1. Table 4 below shows an additional example where P slice slices and B slice slices use the same binarizations. Tables 2-4 are only intended to provide examples of shared binarization between slice P and B. Any binarization or binarization rules can be used so that the pred_type syntax elements for both slice P and B slices share the same binarization.
[0069] The video encoder 20 and the video decoder 30 can store the same mapping rules and mapping tables (e.g. as shown in Tables 2-4) for use with both P and B slice slices. CABAC encoding and decoding can be applied to pred_type syntax element using the same mappings.
[0070] In this way, the video encoder 20 can be configured to determine the first prediction type for the video slice in the slice P slice, represent the first prediction type as a syntax element of the Pslice slice prediction type, determine the second prediction type for the video data block in slice B slice, representing the second prediction type as part of the Bslice slice prediction type syntax, determining the binarization of the P-slice slice for the P-slice slice prediction type syntax element, determining the binarization of the B-slice slice for the B-slice slice prediction syntax element, with the P-slice slice prediction syntax element and syntax element the B-slice slice prediction type is determined using the same binarization logic, and encoding video data based on the binarization of the P-slice slice prediction syntax element and the B-slice slice prediction syntax element.
53 / 59P36908PL00
[0071] The video encoder 20 may be further configured to binarize the Pslice slice prediction type syntax element using the specific binaryization of the Pslice slice, binarize the B-slice slice prediction type syntax element using the specific B- slice slice binarization slice, using context adaptive binary arithmetic coding (CABAC) for binaryized P-slice slice prediction syntax element, and applying context adaptive binary arithmetic coding (CABAC) to the binaryized B-slice slice prediction syntax element.
[0072] Similarly, the video decoder 30 may be configured to map the binaryized P-slice slice prediction syntax type element into a prediction type using binary mapping for the video data block in the P slice slice, mapping the binaryized component of the B type slice prediction type component - slides per prediction type using the same binarization mapping for a video data block in a B slice and decoding video data based on mapped prediction types.
[0073] The video decoder 30 may further be configured to receive coded using context adaptive binary arithmetic coding of the P-slice slice prediction syntax element, which indicates the prediction type for the video data block in the P slice slice, coded receive slice type adaptive binary arithmetic element of the B-slice slice prediction syntax element, which indicates the prediction type for the video data block in the B slice slice, decoding a P-slice slice prediction syntax element to create a binarized P-slice slice prediction syntax element, and decoding a B-slice slice prediction syntax element to create a binaryized Bslice slice prediction syntax element.
53 / 59P36908PL00
EP 2 777 162 B1
Table 3. Binarization for pred type in another example of the invention
<td rowspan="3">Type sector type slice</td><td rowspan="3">Pred_ type value</td><td rowspan="3">PredMode (mode prediction)</td><td rowspan="3">PartMode (mode division)</td><td colspan="3">A string of binary symbols</td>
<td rowspan="2">cLog2CUSize> Log2MinCUSize (1)</td><td colspan="2">cLog2CUSize = Log2MinCUSize</td>
<td>cLog2CUSize = = 3 &&! inter_4x4_enabled_flag (2)</td><td>cLog2CUSize> 3 | | inter_4x4_enabled_flag (3)</td>
<td rowspan="2"> 1</td><td> 0</td><td>MODE_INTRA</td><td>PART_2Nx2N</td><td> -</td><td> 1</td><td> 1</td>
<td> 1</td><td>MODE_INTRA</td><td>PART_NxN</td><td> -</td><td> 0</td><td> 0</td>
<td rowspan="10">P or B.</td><td> 0</td><td>MODE_INTER</td><td>PART_2Nx2N</td><td> 0 1</td><td> 0 1</td><td> 0 1</td>
<td> 1</td><td>MODE_INTER</td><td>PART_2NxN</td><td> 0 011</td><td> 0 01</td><td> 0 01</td>
<td> 2</td><td>MODE_INTER</td><td>PART_Nx2N</td><td> 0 0011</td><td> 0 00</td><td> 0 001</td>
<td> 4</td><td>MODE_INTER</td><td>PART_2NxnU</td><td> 0 0100</td><td> -</td><td> -</td>
<td> 5</td><td>MODE_INTER</td><td>PART_2NxnD</td><td> 0 0101</td><td> -</td><td> -</td>
<td> 6</td><td>MODE_INTER</td><td>PART_nLx2N</td><td> 000100</td><td> -</td><td> -</td>
<td> 7</td><td>MODE_INTER</td><td>PART_nRx2N</td><td> 000101</td><td> -</td><td> -</td>
<td> 3</td><td>MODE_INTER</td><td>PART_NxN</td><td> -</td><td> -</td><td> 0 000</td>
<td> 4</td><td>MODE_INTRA</td><td>PART_2Nx2N</td><td> 1</td><td> 11</td><td> 11</td>
<td> 5</td><td>MODE_INTRA</td><td>PART_NxN</td><td> -</td><td> 10</td><td> 10</td>
53 / 59P36908PL00
EP 2 777 162 B1
Table 4. Binarization for pred type in another example of the invention
<td rowspan="3">Type sector type slice</td><td rowspan="3">Pred_ type value</td><td rowspan="3">PredMode (mode prediction)</td><td rowspan="3">PartMode (mode division)</td><td colspan="3">A string of binary symbols</td>
<td rowspan="2">cLog2CUSize> Log2MinCUSize (1)</td><td colspan="2">cLog2CUSize = = Log2MinCUSize</td>
<td>cLog2CUSize = = 3 &&! inter_4x4_enabled_flag (2)</td><td>cLog2CUSize> 3 | | inter_4x4_enabled_flag (3)</td>
<td rowspan="2">AND</td><td> 0</td><td>MODE_INTRA</td><td>PART_2Nx2N</td><td> -</td><td> 1</td><td> 1</td>
<td> 1</td><td>MODE_INTRA</td><td>PART_NxN</td><td> -</td><td> 0</td><td> 0</td>
<td rowspan="10">P or B.</td><td> 0</td><td>MODE_INTER</td><td>PART_2Nx2N</td><td> 1</td><td> 1</td><td> 1</td>
<td> 1</td><td>MODE_INTER</td><td>PART_2NxN</td><td> 011</td><td> 01</td><td> 01</td>
<td> 2</td><td>MODE_INTER</td><td>PART_Nx2N</td><td> 001</td><td> 00</td><td> 001</td>
<td> 4</td><td>MODE_INTER</td><td>PART_2NxnU</td><td> 0100</td><td> -</td><td> -</td>
<td> 5</td><td>MODE_INTER</td><td>PART_2NxnD</td><td> 0101</td><td> -</td><td> -</td>
<td> 6</td><td>MODE_INTER</td><td>PART_nLx2N</td><td> 0000</td><td> -</td><td> -</td>
<td> 7</td><td>MODE_INTER</td><td>PART_nRx2N</td><td> 0001</td><td> -</td><td> -</td>
<td> 3</td><td>MODE_INTER</td><td>PART_NxN</td><td> -</td><td> -</td><td> 000</td>
<td> 4</td><td>MODE_INTRA</td><td>PART_2Nx2N</td><td> 000</td><td> 000 0</td><td> 0000 0</td>
<td> 5</td><td>MODE_INTRA</td><td>PART_NxN</td><td> -</td><td> 000 1</td><td> 0000 1</td>
53 / 59P36908PL00
[0074] Table 5 below shows the coding performance using shared binarization for slice P and B slices shown in Table 2. As can be seen in Table 5, using shared binarization, the coding performance is slightly lost or it is not lost at all. The Low delay P HE (High Efficiency) configuration is a typical test condition for binarization of the predicted slice (P) unidirectional. AE classes represent different frame resolutions. Class A represents 2k x 4k resolution. Class B represents 1920 x 1080 resolution. Class C represents WVGA resolution. Class D represents WQVGA resolution. Class E represents 720P resolution. A change between 0.1 and 0.2 percent under the Low delay P HE test conditions is generally considered insignificant.
<td rowspan="2">BD ratio</td><td colspan="3">Low delay P HE configuration</td>
<td>Y</td><td>AT</td><td>V</td>
<td>Class A</td><td></td><td></td><td></td>
<td>Class B</td><td> 0,02%</td><td> 0,16%</td><td> 0,26%</td>
<td>Class C</td><td> 0,01%</td><td> 0,05%</td><td> -0,12%</td>
<td>Class D</td><td> -0,02%</td><td> -0,10%</td><td> -0,12%</td>
<td>E class</td><td> 0,02%</td><td> 0,03</td><td> 0,05%</td>
<td>altogether</td><td> 0,01%</td><td> 0,04%</td><td> 0,03%</td>
<td>Time code [%]</td><td></td><td></td><td></td>
<td>Decode time [%]</td><td></td><td></td><td></td>
Table 5. Coding performance for unified binarization for pred_type [0075] Optionally, the same binarizations (not limited to tables 2-4) for the prediction type (includes prediction size and / or prediction mode) can be shared by two and more different types of slices slice type of inter-picture prediction. Slices of inter-image prediction may contain, but are not limited to:
53 / 59P36908PL00
EP 2 777 162 B1
a. P slice: Slice only supports one-way motion prediction
b. B slice slice: The slice slice supports unidirectional and bidirectional motion prediction
c. In scalable video coding: the extension layer can share the same binarizations with the base layer.
d. In multi-view coding: different views can share the same binarizations.
[0076] When asymmetric splitting is enabled, four contexts, equally divided into two sets of contexts, are used for CABAC encoding in the last two binary symbols to signal the pred_type syntax element for asymmetric splits (i.e. PART_2NxnU, PART_2NxnD,
PART_nLx2N, PART_nRx2N). Depending on whether the split consists of dividing along the horizontal or vertical direction, one set of contexts is used. The penultimate binary symbol (i.e., split type binary symbol; part_mode) determines whether the current CU has symmetrical or asymmetrical splits. Last binary symbol (i.e. split size binary symbol; part_mode) determines whether the size of the first split is one quarter or three quarters of the CU size. Table 6 shows an example of contexts: penultimate (split type) and last (split size) for the pred_type syntax element.
Table 6. Contexts for the last two binary symbols of the Pred Type syntax element
<td>Binary symbol</td><td>Context</td>
<td>Split type (Symmetrical or Asymmetrical)</td><td>Set of 1 contexts (2 Contexts, one for vertical division, 1 for horizontal division)</td>
<td>Division size (The first division is ¼ CU or ¾ CU unit)</td><td>Set of 2 contexts (2 Contexts, one for ¼ CU and one for ¾ CU)</td>
53 / 59P36908PL00
[0077] In this document, it is proposed to use one context for the penultimate binary symbol (i.e., split type binary symbol) and to use the bypass mode for the last binary symbol (i.e., split size binary symbol). As a result, the number of contexts is reduced from 4 to 1. Table 7 shows an example of the context used in accordance with this example of the invention. Table 8 shows the coding performance associated with the proposed modifications. The configuration of random access high efficiency (HE) (direct access, high performance) is a test condition with frames with direct access.
The Low delay B HE configuration (low delay, high performance) provides test conditions that enable bidirectional prediction.
Table 7. Contexts for the last two binary symbols of the Pred Type syntax element according to an example of the invention.
<td>Binary symbol</td><td>Context</td>
<td>Split type (Symmetrical or Asymmetrical)</td><td>Set of 1 contexts (1 Context)</td>
<td>Division size (The first division is ¼ CU or ¾ CU unit)</td><td>Workaround mode (No contexts)</td>
<td rowspan="2">Ratio BD</td><td>All Intra HE</td><td colspan="3">Random access HE</td><td colspan="3">Low delay B HE</td>
<td>YUV</td><td>Y</td><td>AT</td><td>V</td><td>Y</td><td>AT</td><td>V</td>
<td>Class A</td><td></td><td> 0,03%</td><td> -0,17%</td><td> -0,29%</td><td></td><td></td><td></td>
<td>Class B</td><td></td><td> 0,02%</td><td> -0,03%</td><td> 0,04%</td><td> 0,01%</td><td> 0,00%</td><td> 0,24%</td>
<td>Class C</td><td></td><td> -0,01%</td><td> -0,03%</td><td> -0,02%</td><td> -0,01%</td><td> -0,03%</td><td> 0,02%</td>
<td>Class D</td><td></td><td> 0,01%</td><td> 0,07%</td><td> -0,05%</td><td> 0,01%</td><td> 0,06%</td><td> 0,03%</td>
<td>E class</td><td></td><td></td><td></td><td></td><td> 0,00%</td><td> 0,30%</td><td> 0,39%</td>
<td>altogether</td><td></td><td> 0,01%</td><td> -0,04%</td><td> -0,07%</td><td> 0,00%</td><td> 0,06%</td><td> 0,01%</td>
<td>Time</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>code.[%]</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>Time</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>Decoding. [%]</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
Table 8. Coding performance for the proposed method for pred_type
53 / 59P36908PL00
[0078] In this way, according to this example, the video encoder 20 can be configured to determine the split type for the prediction mode for a video data block, encode the split type binary symbol code for the prediction type syntax element for the video data block from using context adaptive binary arithmetic coding with a single context, whereby a single context is the same for any type of division, and encoding the split-size binary symbol for the prediction type syntax for a video data block using context adaptive binary arithmetic coding in bypass mode.
[0079] Similarly, according to this example, the video decoder 30 may be configured to receive a prediction type syntax element for a video data block that has been encoded using context adaptive binary arithmetic coding (CABAC), wherein the prediction type syntax element a split type binary symbol representing the split type and a split size binary symbol representing the split size, decoding a split type binary symbol for a prediction type syntax element using context adaptive binary arithmetic coding in a single context, where the single context is the same for any type of split, and decoding a split size binary symbol for a prediction type syntax for a video data block using context adaptive binary arithmetic coding in bypass mode.
[0080] In another example, when coding a rectangular split type, a bypass mode or single context may be used for a binary symbol that indicates whether the split mode is PART_nLx2N or PART_nRx2N, or whether the mode is PART_2NxnU, PART_2NxnD. The use of workaround or single context is feasible because
53 / 59P36908PL00
The potential potential chance of using any split mode is close to 50%. In addition, optionally, a bypass mode or single context may be used for the binary symbol, which indicates whether the mode is a symmetrical split or an asymmetrical split.
[0081] The next example of the invention relates to signaling in the "combining" mode of inter-picture prediction. In linking mode, the encoder instructs the decoder, by signaling the bit stream for the prediction syntax, to copy the motion vector, reference index (identifying the reference image on the given list of reference images indicated by the motion vector) and direction of motion prediction (which identifies the list of reference images) (List 0 or List 1), i.e. in terms of whether the reference frame temporarily precedes or follows the current frame) from the selected motion vector candidate for the current part of the image to be encoded. This is accomplished by signaling, in the bit stream, an index to the list of potential motion vectors identifying the selected potential motion vector (i.e., the specified spatial motion vector predictor (MVP) or the potential MVP time predictor).
[0082] Thus, for the combining mode, the prediction syntax may include a tag identifying the mode (in this case the "combining" mode) and an index (merge_idx) identifying the selected motion vector. In some cases, the motion vector will be in the causal part relative to the current part. That is, the potential motion vector will already be decoded by the decoder. As such, the decoder already has a received and / or a specified motion vector, reference index, and motion prediction direction for the causal part. As such, the decoder can simply recover from motion memory vector, reference index and motion prediction direction associated with the causal part and copy
53 / 59P36908PL00
These values as traffic information from the current part. To reconstruct a block in link mode, the decoder receives a predictor block using the acquired motion information for the current part, and adds residual data to the predictor block to reconstruct the encoded block.
[0083] In the HM4.0 model, one of the five joining candidates is signaled when the current PU is in the joining mode. Truncated unary code is used to represent the merge_idx index of the syntax element. In one proposal for HEVC encoding, for CABAC encoding, each binary symbol uses one context. This document proposes the use of one context many times in all four binary symbols, as shown in Table 9.
Table 9. Contexts for the last two binary symbols of the Pred Type syntax element
<td>Binary symbol</td><td>Context</td>
<td>Binary symbol 0-3 for merge idx</td><td>Set of 1 contexts (same context set for all binary symbols)</td>
[0084] Table 10 shows the coding efficiency associated with this example.
<td rowspan="2">Ratio BD</td><td>All Intra HE</td><td colspan="3">Random access HE</td><td colspan="3">Low delay B HE</td>
<td>YUV</td><td>Y</td><td>AT</td><td>V</td><td>Y</td><td>AT</td><td>V</td>
<td>Class A</td><td></td><td> 0,00%</td><td> -0,20%</td><td> -0,07%</td><td></td><td></td><td></td>
<td>Class B</td><td></td><td> 0,01%</td><td> 0,03%</td><td> 0,03%</td><td> 0,01%</td><td> -0,08%</td><td> -0,22%</td>
<td>Class C</td><td></td><td> 0,00%</td><td> 0,04%</td><td> 0,00%</td><td> 0,00%</td><td> -0,08%</td><td> -0,09%</td>
<td>Class D</td><td></td><td> 0,03%</td><td> -0,09%</td><td> -0,05%</td><td> 0,05%</td><td> -0,24%</td><td> 0,44%</td>
<td>E class</td><td></td><td></td><td></td><td></td><td> -0,14%</td><td> 0,08%</td><td> 0,78%</td>
<td>altogether</td><td></td><td> 0,01%</td><td> -0,05%</td><td> -0,02%</td><td> -0,01%</td><td> -0,09%</td><td> 0,17%</td>
<td>Time</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>code.[%]</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>Time</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>Decoding. [%]</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
merge_idx
Table 10. Coding performance of the proposed method for
53 / 59P36908PL00
[0085] Optionally, more than one context can be used in the coding of the join index, with some binary symbols sharing the same context and some binary symbols using different contexts. As one example, only consecutive binary symbols share the same context. For example, binary symbol bin2 and binary symbol bin3 can share one context; binary symbol bin2 and binary symbol bin4 cannot share the same context unless the binary symbol bin3 also shares this context.
[0086] As another example, it is assumed that the total number of binary index symbols for the combination index is N (the first binary symbol is bin0, the last binary symbol is the binary symbol N-1). The threshold values Y, thresi, i = 1, ..., y are used to determine context sharing in the link index coding. In this example, the following rules indicate how contexts are shared between binary symbols:
1. 0 <Y <N (there are less threshold values than binary symbols)
2. thresi <thresi + 1
3. 0 <thres1
4. thresY = N
5. the binary binj symbol will share one context, where i = {thresy, ..., thresi + 1-1} [0087] Based on these rules, the previous method in which one context is repeatedly used in all four binary symbols may be seen as one case in which N = 4, Y = 1, thres1 = 4. Thus, binary symbols 0 to 3 share the same context.
[0088] Another example includes the settings N = 4, Y = 2, thres1 = 2, thres2 = 4. In this example, the binary symbols bin0 and bin1
53 / 59P36908PL00
EP 2 777 162 B1 share the same contexts and binary symbols bin2 and bin3 share the same contexts.
[0089] The inter-picture prediction flag (inter_pred_flag) determines whether single or double prediction is used for the current PU unit. In some examples, the context index for the inter-picture prediction marker is equal to the depth of the current CU. Because there are four possible CU depths (0 3), there are four possible contexts for coding the inter_pred_flag tag.
[0090] In this document, it is proposed that the context index used to select the context for coding the inter_pred_flag tag be equal to the depth of the current CU unit (e.g., decomposition of a level four-level tree for CU units), but that it is limited by the selected threshold (i.e. was the smaller of the current CU depth or threshold). In one example, a threshold of 2 may be selected. Alternatively, the context index may be equal to the maximum CU depth minus the current CU depth and limited by the selected threshold. Alternatively, a predefined mapping table can be created to select the context index by a given CU depth. The mapping table can be implemented as a logic file. As a result, 3 contexts are used to encode the syntax element inter_pred_flag.
[0091] Table 11 shows the coding performance when the initialization table is changed, but the number of contexts is not changed. Table 12 shows the coding efficiency of the proposed technique that reduces the number of contexts from 4 to 3.
53 / 59P36908PL00
EP 2 777 162 B1
<td rowspan="2">Ratio BD</td><td>All Intra HE</td><td colspan="3">Random access HE</td><td colspan="3">Low delay B HE</td>
<td>YUV</td><td>Y</td><td>AT</td><td>V</td><td>Y</td><td>AT</td><td>V</td>
<td>Class A</td><td></td><td> 0,03%</td><td> -0,15%</td><td> -0,11%</td><td></td><td></td><td></td>
<td>Class B</td><td></td><td> -0,03%</td><td> 0,01%</td><td> -0,03%</td><td> 0,03%</td><td> -0,02%</td><td> 0,11%</td>
<td>Class C</td><td></td><td> 0,00%</td><td> -0,12%</td><td> 0,06%</td><td> -0,03%</td><td> -0,16%</td><td> 0,01%</td>
<td>Class D</td><td></td><td> -0,01%</td><td> -0,04%</td><td> 0,01%</td><td> -0,09%</td><td> 0,51%</td><td> 0,20%</td>
<td>E class</td><td></td><td></td><td></td><td></td><td> 0,10%</td><td> -0,03%</td><td> 0,65%</td>
<td>altogether</td><td></td><td> -0,01%</td><td> -0,07%</td><td> -0,02%</td><td> 0,00%</td><td> 0,07%</td><td> 0,14%</td>
<td>Time</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>code.[%]</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>Time</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>Decoding.</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td> [%]</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
Table 11. Coding performance of the HM4.0 model with modified CABAC initialization for the inter_pred_flag tag.
<td rowspan="2">Ratio BD</td><td>All Intra HE</td><td colspan="3">Random access HE</td><td colspan="3">Low delay B HE</td>
<td>YUV</td><td>Y</td><td>AT</td><td>V</td><td>Y</td><td>AT</td><td>V</td>
<td>Class A</td><td></td><td> 0,05%</td><td> -0,11%</td><td> -0,14%</td><td></td><td></td><td></td>
<td>Class B</td><td></td><td> -0,01%</td><td> -0,03%</td><td> 0,02%</td><td> 0,00%</td><td> -0,01%</td><td> 0,15%</td>
<td>Class C</td><td></td><td> -0,02%</td><td> -0,14%</td><td> -0,02%</td><td> 0,01%</td><td> 0,01%</td><td> 0,03%</td>
<td>Class D E class</td><td></td><td> 0,03%</td><td> -0,01%</td><td> -0,01%</td><td> -0,09% -0,12%</td><td> -0,12% 0,08%</td><td> 0,01% 0,45%</td>
<td>altogether</td><td></td><td> 0,01%</td><td> -0,07%</td><td> -0,03%</td><td> -0,04%</td><td> -0,01%</td><td> 0,03%</td>
<td>Time code.[%] Time Decoding. [%]</td><td></td><td colspan="3"></td><td colspan="3"></td>
Table 12. Coding performance of the proposed context reduction technique for the inter_pred_flag tag.
53 / 59P36908PL00
[0092] The reference frame index (ref_idx_lx) is signaled by using a truncated unary code with respect to the active reference frame on the associated list (e.g., List 0 or List 1). Three contexts are used to encode the reference frame index. One context is used for binary symbol 0, one context for binary symbol 1, and one context for the rest of binary symbols. Table 13 shows an example of context assignments for unary binary symbols for the ref_idx_lx index.
Table 13. Context assignment for ref_idx_lx index binary symbols
<td>Binary symbols of the unary index ref_idx_lx</td><td>Context</td>
<td>Binary symbol 0</td><td>Context 1</td>
<td>Binary symbol 1</td><td>Context 2</td>
<td>2-N binary symbols (N is the total number of binary symbols)</td><td>Context 3</td>
[0093] This document proposes the use of two contexts for coding the unary code for the ref_idx_lx index; one context for binary symbol 0 and another context for the rest of binary symbols. Table 14 shows an example of context assignment for unary binary symbols for the index ref_idx_lx in accordance with this example of the invention. Table 15 shows the coding performance associated with the proposed modifications.
Table 14. Context assignment for ref_idx_lx index binary symbols.
<td>Binary symbols of the unary index ref_idx_lx</td><td>Context</td>
<td>Binary symbol 0</td><td>Context 1</td>
<td>Binary symbols 1-N (N is the total number of binary symbols)</td><td>Context 2</td>
53 / 59P36908PL00
EP 2 777 162 B1
<td rowspan="2">Ratio BD</td><td>All Intra HE</td><td colspan="3">Random access HE</td><td colspan="3">Low delay B HE</td>
<td>YUV</td><td>Y</td><td>AT</td><td>V</td><td>Y</td><td>AT</td><td>V</td>
<td>Class A</td><td></td><td> -0,01%</td><td> -0,11%</td><td> -0,16%</td><td></td><td></td><td></td>
<td>Class B</td><td></td><td> -0,01%</td><td> 0,00%</td><td> -0,01%</td><td> 0,01%</td><td> -0,12%</td><td> 0,01%</td>
<td>Class C</td><td></td><td> -0,01%</td><td> 0,02%</td><td> 0,03%</td><td> -0,04%</td><td> -0,14%</td><td> -0,07%</td>
<td>Class D</td><td></td><td> 0,03%</td><td> 0,06%</td><td> 0,11%</td><td> -0,06%</td><td> 0,19%</td><td> -0,09%</td>
<td>E class</td><td></td><td></td><td></td><td></td><td> -0,06%</td><td> -0,34%</td><td> 0,48%</td>
<td>altogether</td><td></td><td> 0,00%</td><td> -0,01%</td><td> -0,01%</td><td> -0,03%</td><td> -0,09%</td><td> 0,05%</td>
<td>Time</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>code.[%]</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>Time</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>Decoding.</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td> [%]</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
Table 15. Coding performance of the proposed method for the ref_idx_lx index.
[0094] For tag syntax elements of the coded chrominance block (cbf_cb and cbf_cr), two different sets of contexts (5 contexts in each context set) are used for CABAC coding. The index of the actual context used in each set is equal to the current transformation depth associated with the coded chrominance block tag being coded. Table 16 shows the context sets for the coded chrominance, cbf_cb and cbf_cr tag blocks.
Table 16. Context sets for cbf cb and cbf cr
<td>Coded chrominance block tag</td><td>Context Set</td>
<td>Cbf_cb</td><td>Set of 1 contexts (5 contexts)</td>
<td>Cbf cr</td><td>Set of 2 contexts (5 contexts)</td>
[0095] In this document, it is proposed that cbf_cb and cbf_cr share one set of contexts. Index
53 / 59P36908PL00
The actual context used in each set may still be equal to the current transformation depth associated with the coded chrominance block tag being coded. Table 17 shows the context sets for the coded chrominance, cbf_cb and cbf_cr tag blocks, in accordance with examples of the present invention. Table 18 shows the coding efficiency associated with the proposed modifications.
Table 17. Context sets for cbf_cb and cbf_cr in accordance with examples of the present invention
<td>Coded chrominance block tag</td><td>Context Set</td>
<td>Cbf_cb</td><td>Set of 1 contexts (5 contexts)</td>
<td>Cbf cr</td><td>Set of 1 contexts (5 contexts)</td>
<td rowspan="2">Ratio BD</td><td colspan="3">All Intra HE</td><td colspan="3">Random access HE</td><td colspan="3">Low delay B HE</td>
<td>Y</td><td>AT</td><td>V</td><td>Y</td><td>AT</td><td>V</td><td>Y</td><td>AT</td><td>V</td>
<td>Class A</td><td> -0,01%</td><td> 0,59%</td><td> -1,06%</td><td> 0,02%</td><td> 0,56%</td><td> -1,71%</td><td></td><td></td><td></td>
<td>Class B</td><td> 0,00%</td><td> 0,59%</td><td> -1,07%</td><td> -0,01%</td><td> 0,68%</td><td> -1,32%</td><td> 0,01%</td><td> 1,06%</td><td> 1,89%</td>
<td>Class C</td><td> -0,01%</td><td> 0,17%</td><td> -0,75%</td><td> 0,00%</td><td> 0,09%</td><td> -0,63%</td><td> -0,01%</td><td> 0,21%</td><td> 0,97%</td>
<td>Class D</td><td> 0,00%</td><td> 0,17%</td><td> -0,51%</td><td> 0,04%</td><td> -0,23%</td><td> -0,80%</td><td> 0,04%</td><td> -0,36%</td><td> 0,45%</td>
<td>E class</td><td> 0,00%</td><td> 0,36%</td><td> 0,24%</td><td></td><td></td><td></td><td> 0,04%</td><td> 0,36%</td><td> 0,40%</td>
<td>altogether</td><td> 0,00%</td><td> 0,21%</td><td> -0,70%</td><td> 0,01%</td><td> 0,30%</td><td> -1,13%</td><td> 0,02%</td><td> 0,36%</td><td> 0,87%</td>
<td>Time code.[%] Time Decoding. [%]</td><td colspan="3"></td><td colspan="3"></td><td colspan="3"></td>
Table 18. Coding performance of the proposed method for cbf_cb and cbf_cr.
53 / 59P36908PL00
[0096] In this way, according to this example, both the video encoder 20 and the video decoder 30 can be configured to encode the Cb chrominance coded block tag for the video data block using context adaptive binary arithmetic coding (CABAC), wherein the CABAC encoding uses a set of contexts containing one or more contexts, and for encoding a coded Cr chrominance block tag using CABAC encoding, wherein CABAC encoding uses the same set of contexts as the Cb chrominance coded block tag. The video encoder 20 and the video decoder 30 may further be configured to select a context from one or more contexts based on the transformation depth of the transformation unit associated with the video data block.
[0097] In one proposal for HEVC encoding, there are twelve sets of contexts for both the coeff_abs_level_greater1_flag tag and the coeff_abs_level_greater2_flag tag. The coeff_abs_level_grea ter1_flag tag indicates whether the transformation coefficient has an absolute value greater than 1. The coeff_abs_level_greater2_flag tag indicates whether the transformation coefficient has an absolute value greater than 2. Context sets are evenly assigned for components and chrominance, i.e. 6 context sets for and 6 contexts for chrominance. Each set consists of 5 contexts. The index of the ctxSet set is selected based on the previous coeff_abs_level_greater1_flag. For the luminance tag of the contexts luminance, the coeff_abs_level_greater1_flag tag, context index of the context set, greater1Ctx, is determined from the string of ones at the end to a maximum of 4. The context index can be represented as:
ctxldx_level_greaterl = (ctxSet * 5) + Μϊη (4, greaterl Ctx) (1)
53 / 59P36908PL00
[0098] For the coeff_abs_level_greater2_flag tag, the context index in the context set, greater2Ctx, is based on the number of coeff_abs_level_greater1_flag tags from 1 to maximum 4. The context index can be represented as:
ctxldx_level_greater2 = (ctxSet * 5) + Min (4, greatcr2Ctx) (2) greater1Ctx is based on the number for significant coefficients and the number of coefficients that are greater than 1. On the other hand, greater2Ctx is based on the number of coefficients that are greater than 1.
[0099] In some examples, a different number of contexts may be used in different sets of contexts, including, for example:
1. Context sets for a level greater than 1 or for a level greater than 2 could have a different number of contexts. For example, sets of 0 and 3 contexts could have 5 contexts, and the rest of the context sets could have 2 contexts.
2. Context sets for the luminance factor can have a different number of contexts compared to the context sets for the chrominance component. For example, a set of 0 contexts for luminance can have 5 contexts, and a set of 0 contexts for chrominance could have 4 contexts.
3. A context set for a level greater than 1 may have a different number of contexts than a set of contexts for a level greater than 2. For example, a set of 0 contexts for a level greater than 1 could have 5 contexts, and a set of 0 contexts for a level greater than 2 could only have 3 contexts.
53 / 59P36908PL00
[0100] In other examples, a different number for context sets may be used for encoding, more than 1 or more than 2, including, for example:
1. Context sets for the luminance factor may have a different number of contexts set than the context sets used for the chrominance component. For example, luminance could use 6 contexts, and chrominance could use 4 contexts.
2. Context sets for more than 1 may have a different number of contexts set than the context sets used for more than 2. For example, more than 1 could use 6 contexts, more than 2 could use 4 contexts.
[0101] Optionally, a metric is used to determine which context is used in the context set, and the range of metric values is greater than the number for the contexts in the context set. In one such aspect, one context could be associated with one or more metric values. Context sharing is continuous. For example, y = 2 is associated with preferably limited to values, let the metric value be y. context 3, ay = 1 and y = 4 can also be associated with context 3. However, if y = 3 is associated with context 4, y = 4 cannot be associated with context 3.
[0102] For example, for the coeff_abs_level_greater1_flag tag, context sets 0 and 3 have 2, 4 and 5 contexts have 2 coeff_abs_level_greater2_flag, sets 0, 1 and 2 context have 5 contexts, and sets 3, 4 and 5 contexts have 2 contexts. You can present it as:
contexts, contexts.
and
For sets 1, the ctxldx_level_greaterl = tag (ctxSet * 5) + Min (Thres_ greaterl, greaterlCtx) (3)
53 / 59P36908PL00
If ctxSet = 0 or ctxSet = 3, Thres_greater1 = 4;
otherwise, Thres_greater1 = 1.
ctxldx_level_gr & aier2 = (ctxSet * 5) + Min (Thres_ greater2, greatcr2Ctx) (4) if ctxSet <3, Thres_greater2 = 4;
otherwise, Thres_ greater2 = 1 [0103] Thres_greater1 and Thres_greater2 may be selected differently based on the following situations:
1. Luminance or chrominance component 2. Context sets [0104]
As another example, for the coeff_abs_level_greater1_flag tag, sets of 0 and 3 contexts have 5 contexts, contexts.
2, 4 and 5 contexts have 3 coeff_abs_level_greater2_flag, sets of 0, 1 and 2 contexts have 5 contexts, while sets of 3, 4 and 5 contexts have 2 contexts. You can present it as:
and
For sets 1, tag ctxTdx_level_greaterl = (ctxSet * 5) + greaterl Ctx_mapped (3) ctxldx_level_greater2 = (ctxSet * 5) + greater2Ctx mapped (4) [0105] In these examples, the mapping can be as shown in the tables 19 and :
Table 19
<td>greater1Ctx</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> >3</td>
<td>ctxSet 0</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td>
<td>ctxSet 1</td><td> 0</td><td> 1</td><td> 1</td><td> 2</td><td> 2</td>
<td>ctxSet 2</td><td> 0</td><td> 1</td><td> 1</td><td> 1</td><td> 2</td>
<td>ctxSet 3</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td>
<td>ctxSet 4</td><td> 0</td><td> 1</td><td> 2</td><td> 2</td><td> 2</td>
<td>ctxSet 5</td><td> 0</td><td> 1</td><td> 1</td><td> 2</td><td> 2</td>
53 / 59P36908PL00
EP 2 777 162 B1
Table 20
<td>greater2Ctx</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> >3</td>
<td>ctxSet 0</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td>
<td>ctxSet 1</td><td> 0</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td>
<td>ctxSet 2</td><td> 0</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td>
<td>ctxSet 3</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td>
<td>ctxSet 4</td><td> 0</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td>
<td>ctxSet 5</td><td> 0</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td>
[0106] The CABAC coding initialization tables of the coeff_abs_level_greater1_flag tag and the coeff_abs_level_greater2_flag tag are also modified for the context sets for Thres_greater1 or Thres_greater2 equal to 1. The modifications move the fifth context initialization to be initialization of the second context. This proposed method reduces the number of contexts from 120 to 78.
<td rowspan="2">Ratio BD</td><td colspan="3">All Intra HE</td><td colspan="3">Random access HE</td><td colspan="3">Low delay B HE</td>
<td>Y</td><td>AT</td><td>V</td><td>Y</td><td>AT</td><td>V</td><td>Y</td><td>AT</td><td>V</td>
<td>Class A</td><td> 0,00%</td><td> 0,04%</td><td> 0,03%</td><td> 0,05%</td><td> 0,31%</td><td> -0,35%</td><td></td><td></td><td></td>
<td>Class B</td><td> 0,01%</td><td> 0,04%</td><td> 0,03%</td><td> 0,01%</td><td> 0,03%</td><td> -0,09%</td><td> 0,00%</td><td> -0,15%</td><td> 0,23%</td>
<td>Class C</td><td> 0,00%</td><td> 0,05%</td><td> 0,00%</td><td> 0,03%</td><td> 0,06%</td><td> 0,06%</td><td> 0,00%</td><td> 0,23%</td><td> 0,23%</td>
<td>Class D</td><td> 0,00%</td><td> 0,01%</td><td> -0,03%</td><td> 0,01%</td><td> 0,22%</td><td> 0,04%</td><td> -0,01%</td><td> 0,26%</td><td> 0,24%</td>
<td>E class</td><td> 0,00%</td><td> 0,02%</td><td> 0,03%</td><td></td><td></td><td></td><td> 0,09%</td><td> -0,52%</td><td> 0,16%</td>
<td>altogether</td><td> 0,00%</td><td> 0,01%</td><td> 0,01%</td><td> 0,02%</td><td> 0,15%</td><td> -0,09%</td><td> 0,01%</td><td> -0,02%</td><td> 0,04%</td>
<td>Time code.[%] Time Decoding. [%]</td><td colspan="3"></td><td colspan="3"></td><td colspan="3"></td>
Table 21. Coding performance of the proposed method for the coeff_abs_level_greater1_flag tag and the coeff_abs_level_greater2_flag tag.
53 / 59P36908PL00
[0107] Table 21 shows the number of contexts for all syntax elements mentioned in previous chapters. The total reduction is 56 contexts.
Table 22. Comparison of the number of contexts in the proposed method and the HM4.0 model
<td>number of contexts</td><td>HM4.0</td><td>The proposed way</td>
<td>pred type</td><td> 10</td><td> 6</td>
<td>merge idx</td><td> 4</td><td> 1</td>
<td>inter pred flag</td><td> 4</td><td> 3</td>
<td>ref idx lc, ref idx 10, ref idx 11</td><td> 3</td><td> 2</td>
<td>cbf cb, cbf cr</td><td> 10</td><td> 5</td>
<td>tag coeff abs 1eve1 greaterl flag</td><td> 60</td><td> 36</td>
<td>marker coeff abs level greater2 flag</td><td> 60</td><td> 42</td>
<td>Sum</td><td> 151</td><td> 95</td>
[0108] FIG. 2 is a block diagram illustrating an example video encoder 20 that can implement the techniques described in this document. The video encoder 20 may perform intra-image coding and inter-image coding of video blocks within slice slices. Intra-image coding relies on spatial prediction to reduce or remove spatial redundancy in a video within a given frame or video. Cross-image coding relies on time prediction to reduce or remove temporal redundancy in video within adjacent frames or video sequences. In-picture mode (I-mode) can refer to any of several spatial compression modes. Cross-picture modes such as one-way prediction (Pmode) or two-way prediction (B-mode) can refer to any of several temporal compression modes.
[0109] In the example of FIG. 2, the video encoder 20 includes a split unit 35, a prediction unit 41, a memory 64
53 / 59P36908PL00
EP 2 777 162 B1 reference images, adder 50, transformation unit 52, quantization unit 54 and entropy coding unit 56. The prediction unit 41 includes the motion estimation unit 42, the motion compensation unit 44 and the intra-image prediction unit 46. To reconstruct the video block, the video encoder 20 also includes inverse quantization unit 58, inverse transformation unit 60 and adder 62. A deblock filter (not shown in FIG. 2) may also be included to filter block boundaries to remove block related artifacts from the reconstructed video. If desired, a de-blocking filter could typically filter the output of the adder 62. In addition to the de-blocking filter, additional loop filters (in the loop or after the loop) may also be used.
[0110] As shown in FIG. 2, the video encoder 20 receives the video data, and the split unit 35 divides the data into video blocks. This division can also include the division into slices, tiles or other larger units as well as the division of the video block, e.g. according to the structure of the quad tree of LCU and CU units. The video encoder 20 generally illustrates the components that encode the video blocks in the slice video slice to be encoded. The slice can be divided into many video blocks (and possibly into sets of video blocks called tiles). The prediction unit 41 can select one of many possible coding modes, such as one of many intra-picture coding modes or one of many inter-picture coding modes, for the current video block based on error results (e.g., degree of coding distortion level). Prediction unit 41 can and provide the resulting inter-picture or in-picture coded block to adder 50 to generate the residual data block and to adder 62 to reconstruct the encoded block for use as a reference image.
53 / 59P36908PL00
[0111] The intra-picture prediction unit 46 in the prediction unit 41 may perform intra-picture predictive coding of the current video block with respect to one or more adjacent blocks in the same frame or slice as the current block to be encoded. to provide spatial compression. The motion estimation unit 42 and the motion compensation unit 44 in the prediction unit 41 perform inter-picture predictive coding of the current video block with respect to one or more predictor blocks in one or more reference images to provide time compression.
integrated, conceptual.
[0112] Motion estimation unit 42 may be configured to determine the inter-picture prediction mode for the slice video slice according to a predetermined template for the video sequence. The predefined template may indicate slice video slices in sequence as P slice slices, B slice slices or GPB (generalized P / B) slices. The motion estimation unit 42 and the motion compensation unit 44 can be to a large extent but are illustrated separately for the purposes of the Motion estimation, implemented by the motion estimation unit, is a process of generating motion vectors that estimate the motion for video blocks. The motion vector may, for example, indicate the displacement of the PU of the video block in the current frame or video image relative to the predictor block in the reference image.
[0113] The predictive block is a block that appears to be best suited to the PU unit of the video block, which is to be in terms of pixel difference, which can be by the sum of absolute differences (SAD), squares of differences (SSD) or other measures of differences. In some examples, the video encoder 20 may calculate values for partial pixel positions of reference images stored in the memory coded to determine the sum
53 / 59P36908PL00
EP 2 777 162 B1 reference images. For example, the video encoder 20 may interpolate the values of one quarter pixel position, one eighth pixel position or other partial pixel positions of the reference image. Thus, the motion estimation unit 42 may perform a motion search for full pixel positions and partial pixel positions and provide a motion vector with partial pixel accuracy.
[0114] The motion estimation unit 42 calculates a motion vector for the PU of the video block in a slice between coded coded slice by comparing the position of the PU unit with the position of the reference image predictor block. The reference image can be selected from the first list of reference images (List 0) or from the second list of reference images (List 1), each identifying one or more reference images stored in the memory of 64 reference images. The motion estimation unit 42 sends the calculated motion vector to the entropy coding unit 56 and the motion compensation unit 44.
[0115] Motion compensation performed by the motion compensation unit 44 may include downloading or generating a predictor block based on the motion vector determined by motion estimation, possibly performing interpolation with sub-pixel accuracy. After receiving the motion vector for the PU of the current video block, the motion compensation unit 44 may locate the predictor block indicated by the motion vector on one of the reference image lists. The video encoder 20 creates a residual video block by subtracting the predictor block pixel values from the pixel values of the current encoded video block, creating pixel difference values. Pixel difference values form residual data for the block, and can include both luminance and chrominance differences. Adder 50 represents the component or components that perform this subtraction. The motion compensation unit 44 can also
53 / 59P36908PL00
Generate syntax elements associated with video blocks and the slice video slice for use by the video decoder 30 when decoding video blocks of the slice video slice. [0116] The intra-picture prediction unit 46 can predict intra-picture the current block as an alternative to inter-picture prediction performed by the motion estimation unit 42 and the motion compensation unit 44 as described above. In particular, the intra-picture prediction unit 46 may determine the intra-picture prediction to be used to encode the current block. In some examples, the intra-picture prediction unit 46 may encode the current block using different in-picture prediction modes, e.g. during separate coding passes, and the intra-image prediction unit 46 (or mode selection unit 40, in some examples) may select the appropriate intra-image prediction mode to be used from among the modes tested. For example, the intra-image prediction unit 46 can calculate ratedistortion values using distortion rate analysis for the various in-screen prediction modes tested, and select an intra-image prediction mode having the best distortion rate characteristics among the modes tested. The rate-of-distortion analysis basically determines the amount of distortion (or errors) between the encoded block and the original, uncoded block that has been encoded to form the encoded block, as well as the rate (i.e., the number of bits) used to produce the encoded block. The intra-image prediction unit 46 can calculate ratios based on distortion and bit rate for various coded blocks to determine which intra-picture prediction mode has the best bit rate - distortion for the block.
53 / 59P36908PL00
EP 2 777 162 B1 [0117]
In any case, after selecting the intra-image prediction mode for the intra-image prediction mode, the prediction mode indicating the block to the block can be selected, the unit 46 provides intra-image information for the entropy coding unit 56. The entropy coding unit 56 may encode information indicating the selected in-picture prediction mode according to the techniques of the present invention. The video encoder 20 may contain, in the transmitted bit stream, configuration data that may include multiple index tables of intra-picture prediction modes and multiple modified index tables of in-picture prediction modes (also referred to as code word mapping tables), coding context definitions for various blocks, and indications most likely intra-image prediction mode, table of indexes of intra-image prediction modes, and a modified table of indexes of intra-image prediction modes to be used for each context. [0118] After the prediction unit 41 generates a prediction block for the current video block via either inter-picture prediction or intra-picture prediction, the video encoder 20 creates the residual video block by subtracting the predictor block from the current video block. The residual video data in the residual block may be contained in one or more TUs and applied to the transformation unit. The transformation unit 52 converts residual video data to residual transformation coefficients using a transformation such as cosine (DCT) or conceptually a Transformation unit 52 can from the domain of pixels to such a discrete transformation domain similar transformation transform residual video data of the transformation domain, frequency.
53 / 59P36908PL00
[0119] The transformation unit 52 may send the resulting transformation coefficients to the quantization unit 54. The quantization unit 54 quantizes transformation coefficients to further reduce throughput. The quantization process may reduce the bit depth associated with some or all of the coefficients. The degree of quantization can be modified by adjusting the quantization parameter. In some examples, the quantization unit 54 may then perform a scan of the matrix containing the quantized transformation coefficients. Alternatively, entropy coding unit 56 may perform scanning. As one example, the coding techniques described herein may be implemented in whole or in part by entropy coding unit 56. However, aspects of the present invention are not so limited. For example, the coding techniques described herein can be performed by the video encoder component 20 not shown in FIG. 2, such as a processor or any other component. In some examples, the coding techniques of the invention may be implemented by one of the other units or modules illustrated in FIG. 2. In yet some other examples, the coding techniques of the invention may be implemented by a combination of units and video encoder modules. In this way, the video encoder 20 may be configured to implement the exemplary techniques described herein.
[0120] After quantization, entropy coding unit 56 codes for entropy quantized transformation coefficients. For example, entropy coding unit 56 may implement context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), context-adaptive binary arithmetic coding based on syntax (SBAC), split entropy coding on probability intervals (PIPE)
53 / 59P36908PL00
EP 2 777 162 B1 or other entropy coding methodology or technique. After the entropy coding performed by the entropy coding unit 56, the encoded video stream may be transmitted to the video decoder 30 or archived for later transmission or recovery by the video decoder 30. The entropy coding unit 56 may also entropy encode motion vectors and other syntax elements for the current encoded slice video slice.
[0121] In one example of the invention, entropy coding unit 56 can be configured to determine the first prediction type for a video slice in a P slice, represent the first prediction type as a syntax element of the P slice slice prediction type, and specify a second prediction type for a video data block in a B slice slice, representing the second prediction type as part of the B-slice slice prediction type syntax, determining the binarization of the P-slice slice for the P-slice slice prediction type syntax element, determining the binarization of the B-slice slice for the B-slice slice prediction syntax element, with the P-slice slice prediction syntax element and syntax element the B-slice slice prediction type is determined using the same binarization logic, and encoding video data based on binarization of the P-slice slice prediction syntax element and Bslice slice prediction syntax element.
[0122] In another example of the invention, entropy coding unit 56 may be configured to determine the split type for the prediction mode for the video data block, split binary symbol coding for the prediction type syntax element for the video data block using context adaptive binary arithmetic coding with a single context, whereby the single context is the same for any type of split and encoding of the binary symbol
53 / 59P36908PL00
Selecting split size contexts for the prediction type syntax for a video data block using context adaptive binary arithmetic coding in bypass mode.
[0123] In another example of the invention, entropy coding unit 56 may be configured to encode a Cb chrominance coded block tag for a video data block using context adaptive binary arithmetic coding (CABAC), wherein the CABAC encoding uses a set of contexts comprising one or more the number of contexts, and for coding the tag of the coded Cr chrominance block using CABAC coding, wherein CABAC encoding uses the same set of contexts as the Cb chrominance coded block tag. The video encoder 20 and the video decoder 30 may further be configured to context from one or more based on the transformation depth for a transformation unit associated with the video data block.
[0124] Inverse quantization unit 58 and inverse transformation unit 60 use inverse quantization and inverse transformation, respectively, to reconstruct the residual block in the pixel domain for later use as a reference block or reference image. Motion compensation unit 44 may calculate the reference block by adding a residual block to the predictor block of one of the reference images within one of the reference image lists. The motion compensation unit 44 may also apply one or more interpolation filters to the reconstructed residual block to calculate pixel partial values for use in motion estimation. Adder 62 adds the reconstructed residual block to the prediction block with the compensated motion produced by the motion compensation unit 44 to create a reference block for storing 64 reference images. The reference block can be used by unit 42
53 / 59P36908PL00
Motion estimation and motion compensation unit 44 as a reference block for inter-image prediction of a block in the next frame or video.
[0125] FIG. 3 is a block diagram illustrating an example video decoder 30 that can implement the techniques described herein. In the example of FIG. 3, the video decoder 30 includes entropy decoding unit 80, prediction unit 81, inverse quantization unit 86, inverse transformation unit 88, adder 90, and memory 92 of reference images. The prediction unit 81 includes the motion compensation unit 82 and the in-picture prediction unit 84. The video decoder 30 may, in some, substantially implement the encoding decoding transition described in
2.
slice and related decoding unit 80 examples, inverse to transition with respect to video encoder 20 in FIG [0126] During the decoding process, the video decoder 30 receives the bit stream of the encoded video that represents the video blocks of the encoded video slice syntax elements from the entropy video decoder 20 30 video entropy entropy bit stream to generate quantized coefficients, motion vectors and other syntax elements. Entropy decoding unit 80 forwards motion vectors and other syntax elements to prediction unit 81. The video decoder 30 may receive syntax elements at the slice video slice level and / or at the video block level.
[0127] As one example, the coding techniques described herein may be implemented fully or partially by an entropy decoding unit
However, aspects of the present invention are not so limited. For example, the coding techniques described herein may be implemented by a video decoder component 30 not shown in FIG. 3, such as a processor or any other component. In some examples, techniques
53 / 59P36908PL00
The coding according to the invention may be implemented by one of the other units or modules illustrated in FIG. 3. In yet some other examples, the coding techniques of the invention may be implemented by a combination of units and modules of a video decoder. In this way, the video decoder 30 can be configured to implement the exemplary techniques described herein.
[0128] In one example of the invention, entropy decoding unit 80 may be configured to map the binaryized P-slice slice prediction syntax type element to the prediction type using binarization mapping for the video data block in the P slice slice, mapping the binaryized type syntax element B-slice slice prediction to prediction type using the same binarization mapping for a video data block in a B slice slice, and decoding video data based on mapped prediction types.
[0129] In one example of the invention, entropy decoding unit 80 may be configured to receive a prediction type syntax element for a video data block that has been encoded using context adaptive binary arithmetic coding (CABAC), the prediction type syntax element having a symbol binary split type representing the split type and a binary split size symbol representing the split size, decoding a split type binary symbol for a prediction type syntax element using context adaptive binary arithmetic coding with a single context, where the single context is the same for any type of split, and decoding a split size binary symbol for the prediction type syntax for a video data block from using context adaptive binary arithmetic coding in bypass mode.
53 / 59P36908PL00
[0130] In another example of the invention, entropy decoding unit 80 may be configured to encode a Cb chrominance coded block tag for a video data block using context adaptive binary arithmetic coding (CABAC) coding, the CABAC coding using a set of contexts containing one or more contexts, and for coding a coded Cr chrominance block tag using CABAC coding, wherein CABAC encoding uses the same set of contexts as the Cb chrominance coded block tag. The video encoder 20 and the video decoder 30 may further be configured to select a context from one or more contexts based on the transformation depth of the transformation unit associated with the video data block.
[0131] When the slice video slice is encoded as an intra-picture (I) coded slice, the prediction unit 84 of the prediction unit 81 may generate prediction data for the video block of the current slice video slice based on the signaled prediction mode and data from previously decoded blocks of the current frame or picture. When the video frame is encoded as inter-picture coded slice (i.e. B, P or GPB), motion compensation unit 82 for prediction unit 81 produces predictive blocks for the video slice of the current slice video slice based on motion vectors and other syntax elements received from entropy decoding unit 80. Predictive blocks can be created from one of the reference images on one of the reference image lists. The video decoder 30 can create reference frame lists, List 0 and List 1, using default creation techniques based on reference images stored in the memory of 92 reference images.
[0132] Motion compensation unit 82 determines prediction information for the video block of the current slice video slice
53 / 59P36908PL00
EP 2 777 162 B1 by syntactic analysis of motion vectors and other syntax elements, and uses prediction information to create predictive blocks for the current video block to be decoded. For example, motion compensation unit 82 uses some of the received syntax elements to determine the prediction mode (e.g. intra-picture or inter-picture prediction) used to encode video blocks of a slice video slice, slice type of an inter-picture prediction slice (e.g. slice B slice, P slice or GPB slice), structure information for one or more lists of reference image for slice slice, motion vectors for each inter-image coded slice video slice, inter-image prediction state for each inter-image coded video slice slice type and other information to decode video blocks in the current slice video slice.
[0133] Motion compensation unit 82 may also perform interpolation based on interpolation filters. Motion compensation unit 82 may use interpolation filters that were used by the video encoder 20 when encoding video blocks to calculate interpolated values for partial pixels of reference blocks. In this case, motion compensation unit 82 may determine interpolation filters used by the video encoder 20 based on the received syntax elements and use interpolation filters to form predictor blocks.
[0134] Inverse quantization unit 86 inverse quantizes, i.e., dequantizes, quantized transformation coefficients provided in the bit stream and decoded by entropy decoding unit 80. The inverse quantization process may involve using the quantization parameter calculated by the video encoder for each video block in the slice video slice to determine the degree
53 / 59P36908PL00
Unit, the component summation of quantization and, likewise, the degree of inverse quantization that should be used. Inverse transformation unit 88 uses an inverse transformation, e.g., DCT inverse transformation, inverse integer transformation, or conceptually similar inverse transformation process, relative to transformation coefficients to create residual blocks in the pixel domain.
[0135] After the motion compensation unit 82 generates a predictor block for the current video block based on motion vectors and other syntax elements, the video decoder 30 creates the decoded video block by summing the residual blocks from the inverse transformation unit 88 with the corresponding predictor blocks generated by 82 traffic compensation. Adder 90 represents or components that perform this operation. If desired, a deblock filter can also be used to filter decoded blocks to remove block related artifacts. Other loop filters (either in the coding loop or behind the coding loop) can also be used to smooth out pixel transitions or otherwise improve video quality. The decoded video blocks in a given frame or image are then stored in a memory of 92 reference images, which stores reference images used in subsequent motion compensation. The reference image memory 92 also stores decoded video for later presentation on a display device, such as display device 32 in FIG. 1.
[0136] FIG. 6 is a flowchart illustrating an exemplary video coding method according to the invention. The method of FIG. 6 can be implemented by the video encoder 20. The video encoder 20 may be configured to determine the first prediction type for the video data block in the P slice (602) slice, and to represent the first prediction type as part of the P-slice (604) slice prediction type syntax.
53 / 59P36908PL00
EP 2 777 162 B1
The video encoder 20 may further be configured to specify a second prediction type for the video data block in the B slice (606) slice, and to represent the second prediction type as part of the B-slice (608) slice prediction type syntax. The P-slice slice prediction type syntax element and the B-slice slice prediction type syntax element determine the prediction mode and one of the in-type split type. The prediction mode can include and prediction between images and
The split type can contain one of symmetrical and asymmetrical divisions.
[0137] The video encoder 20 may be further configured to determine the binarization of the P-slice slice for the P-slice (610) prediction type syntax element, and to determine the binarization of the B-slice slice for the B-slice predictive syntax element of the B-slice slice, where the P-slice slice prediction type syntax element and the B-slice slice prediction type syntax element are determined using the same binarization logic (612). The video encoder 20 can then encode the video data based on the binarization of the Pslice slice prediction type syntax element and the B-slice slice prediction type syntax element (614).
[0138] Video data coding may include binarizing a P-slice slice prediction type syntax element using a specific P-slice binarization, binarizing a Bslice slice prediction type syntax element using specific Bslice slice binarization, using context adaptive binary coding arithmetic coding (CABAC) relative to the binarized element of the P-slice slice prediction type syntax, and applying context adaptive binary arithmetic coding (CABAC) to the binaryized B-slice slice prediction syntax element.
53 / 59P36908PL00
[0139] FIG. 7 is a flowchart illustrating an exemplary video decoding method according to the invention. The method of FIG. 7 can be implemented by the video decoder 30. The video decoder 30 can be configured to receive coded using context adaptive binary arithmetic coding of the P-slice slice prediction syntax element that indicates the prediction type for the video data block in the P slice slice (702), and to receive coded using using context adaptive binary arithmetic coding element of the B-slice slice prediction type syntax, which indicates the type of prediction for the video data block in the B slice (704). The Pslice slice prediction type syntax element and the B-slice slice prediction type syntax element determine the prediction mode and split type. The prediction mode may contain one of the inter-picture prediction and intra-picture prediction. The split type may contain one of the symmetrical and asymmetrical divisions.
[0140] The video decoder 30 may further be configured to decode a Pslice slice prediction type syntax element to create a binarized P-slice slice prediction syntax element (706), and to decode a B-slice slice prediction syntax element creating a binarized syntax element of the B-slice slice prediction type (708). The video decoder 30 may further be configured to map the binaryized P-slice slice prediction syntax type element to the prediction type using binaryization mapping of the video data block in the P slice (710) slice to map the binaryized B-slice slice prediction syntax element. slice to prediction type using the same binarization mapping for the video data block in slice B slice (712). The video decoder 30 may then decode video data based on the mapped prediction types (714).
53 / 59P36908PL00
[0141] FIG. 8 is a flowchart illustrating an exemplary video coding method according to the invention. The method of FIG. 8 can be implemented by the video encoder 20. The video encoder 20 can be configured to specify the split type for the prediction mode for the video data block (802) and to encode the binary symbol of the split type syntax of the prediction type for the video data block using context adaptive binary arithmetic coding (CABAC) with single context (804). The single context is the same for any type of split. In one example, the split type is an asymmetrical split, and the binary symbol of the split type indicates whether the asymmetric split is vertically split or vertically split. For example, the split size binary symbol indicates whether the first split is one quarter of the video data block size or whether the first split is three quarters of the video data block size.
[0142] The video encoder 20 may further be configured to encode a binary symbol size split of the prediction type syntax element for the video data block using CABAC encoding in bypass mode (806).
[0143] FIG. 9 is a flowchart illustrating an exemplary video decoding method according to the invention. The method of FIG. 9 can be implemented by the video decoder 30. The video decoder 30 may be configured to receive a prediction type syntax element for a video data block that has been encoded using context adaptive binary arithmetic coding (CABAC), the prediction type syntax element having a split type binary symbol representing the split type and a binary symbol split size representing the split size (902). In one example, the split type is an asymmetrical split, and the binary symbol of the split type indicates whether the asymmetric split is vertically split or horizontally split. For example, the split size binary symbol indicates whether
53 / 59P36908PL00
The first split is one quarter of the video data block size or whether the first split is three quarters of the video data block size.
[0144] The video decoder 30 may further be configured to decode a binary symbol split type of the prediction type syntax element using single context CABAC coding, the single context being the same for any split type (904), and to decode the split size binary symbol for a prediction type syntax element using CABAC encoding in bypass mode (906).
[0145] FIG. 10 is a flowchart illustrating an exemplary video coding method according to the invention. The method of FIG. 10 may be implemented by either the video encoder 20 or the video decoder. For the purposes of FIG. 10, the video encoder 20 and the video decoder 30 will be collectively referred to as the video encoder. According to the techniques in FIG. 10, the video encoder may be configured to encode the Cb chrominance block coded tag for the video data block using context adaptive binary arithmetic coding (CABAC), wherein the coding of the Cb chrominance block coded tag includes using a context set comprising one or more contexts as part of CABAC (1002) coding, and for coding a coded Cr chrominance block tag using CABAC coding, wherein the coding of the coded Cr chrominance block tag comprises the use of the same set of contexts as for the coded Cb chrominance block tag as part of the CABAC (1004) coding. In one example, the context set contains 5 contexts.
[0146] In one optional example of the invention, the video encoder may further be configured to select a context from one or more contexts based on
53 / 59P36908PL00
In the stream of coded transformation depth of the transformation unit associated with the video data block (1006).
[0147] When acting as a video encoder, the video encoder may further be configured to signal the encoded Cb chrominance block tag in the encoded video bit stream, and to signal the encoded Cr chrominance block tag in the encoded video bit stream. When operating as a video decoder, the video encoder may further be configured to receive the coded coded chrominance Cb block tag in the bits of the encoded video, and to receive the coded chrominance block Cb tag in the coded video bit stream.
[0148] In one or more examples, the functions described can be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be recorded on or transmitted via a computer readable medium as one or more instructions or code, and executed by a hardware based processing unit. Computer-readable media may include computer-readable storage media that correspond to real media, such as data storage media, or communication media including any medium that allows the computer program to be transferred from one location to another, e.g., in accordance with a communication protocol. In this way, the computer-readable media may in principle correspond to (1) real computer-readable storage media that are non-transitive or (2) a communication medium, such as a signal or a carrier wave. Data storage media can be any available media that can be accessed by one or more computers or one or more processors to obtain instructions, code and / or data structures for
53 / 59P36908PL00
EP 2 777 162 B1 implement the techniques described in this document. A computer program product may include a computer-readable medium.
[0149] By way of example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical storage disk, magnetic storage disk or other magnetic storage devices, flash memory or any other storage media , which can be used to store the desired program code in the form of instructions or data structures and which can be accessed by a computer. In addition, any connection is correctly called a computer readable medium. For example, if the instructions are transmitted from a website, server or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL) or wireless technologies such as infrared, radio waves and microwaves, then the co-cable axial, fiber optic cable, twisted pair, digital subscriber line (DSL) or wireless technologies such as infrared, radio waves and microwaves are included in the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals or other transitive media, but instead relate to non-transitive, real storage media. The disc and disc used in this document include a compact disc (CD), laser disc, optical disc, universal digital disc (DVD), floppy disk and Blu-ray disc, with discs typically playing magnetic data while discs playing data optically using lasers. Combinations of the above should also be included in the scope of computer-readable media.
[0150] Instructions may be executed by one or more processors, such as one or more
53 / 59P36908PL00
Digital signal processors (DSPs), general purpose microprocessors, integrated circuits for special applications (ASICs), directly programmable gate arrays (FPGAs) or other equivalent integrated circuits or discrete logic circuits. Accordingly, the term "processor" as used herein may refer to any of the above structure or any other structure suitable for implementing the techniques described herein. In addition, in some aspects, the functionality described herein may be provided in dedicated hardware and / or software modules configured for coding and decoding, or embedded in a combined coding and decoding system. In addition, these techniques could be fully implemented in one or more logic circuits or elements.
[0151] The techniques of the present invention can be implemented in a wide variety of devices or devices, including a wireless headset, integrated circuit (IC) or IC integrated circuit (e.g., chipset). Various components, modules or units are described in this document to emphasize the functional aspects of the devices configured to perform the techniques presented, but do not necessarily require implementation by other hardware units. Instead, as described above, the various units may be combined into a hardware coding decoding unit or provided by a set of cooperating hardware units, including one or more processors as described above, in conjunction with the respective software and / or firmware. [0152] Various examples have been described. These and other examples fall within the scope of the following claims.
Qualcomm Incorporated Proxy:
53 / 59P36908PL00
EP 2 777 162 B1
Contents84
125 members in 23 offices
Priority claims14
| Document | Office | Kind | Date |
|---|---|---|---|
| 201161557325 | United States of America | P | |
| 201161557325 | United States of America | P | |
| 201161561911 | United States of America | P | |
| 201161561911 | United States of America | P | |
| 201213645296 | United States of America | A | |
| 201213645296 | United States of America | A | |
| 12791589 | European Patent Office (EPO) | A | |
| 2012059092 | United States of America | W | |
| 2012059092 | United States of America | W | |
| EP20120791589 | – | – | – |
| US201161557325P | – | – | – |
| US201161561911P | – | – | – |
| US201213645296 | – | – | – |
| WO2012US59092 | – | – | – |
Members125
| Document | Office | Kind | |
|---|---|---|---|
| US2013114671A1 | United States of America | A1 | |
| US2013114672A1 | United States of America | A1 | |
| US2013114673A1 | United States of America | A1 | |
| CA2854814A1 | Canada | A1 | |
| CA2854822A1 | Canada | A1 | |
| CA2854830A1 | Canada | A1 | |
| WO2013070353A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2013070354A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2013070355A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU2012336234A1 | Australia | A1 | |
| AU2012336323A1 | Australia | A1 | |
| AU2012336324A1 | Australia | A1 | |
| PH12014501006A1 | Philippines | A1 | |
| PH12014501035A1 | Philippines | A1 | |
| SG11201401682YA | Singapore | A | |
| SG11201401687XA | Singapore | A | |
| IL232286A0 | Israel | A0 | |
| IL232286D0 | Israel | D0 | |
| IL232287A0 | Israel | A0 | |
| IL232287D0 | Israel | D0 | |
| IL232288A0 | Israel | A0 | |
| IL232288D0 | Israel | D0 | |
| KR20140098116A | Republic of Korea | A | |
| KR20140098117A | Republic of Korea | A | |
| KR20140098118A | Republic of Korea | A | |
| CN103988437A | China | A | |
| CN103999367A | China | A | |
| SG11201401685UA | Singapore | A | |
| CN104040900A | China | A | |
| EP2777160A1 | European Patent Office (EPO) | A1 | |
| EP2777161A1 | European Patent Office (EPO) | A1 | |
| EP2777162A1 | European Patent Office (EPO) | A1 | |
| US2014355669A1 | United States of America | A1 | |
| US2014355681A1 | United States of America | A1 | |
| JP2014535243A | Japan | A | |
| JP2015502075A | Japan | A | |
| JP2015502076A | Japan | A | |
| HK1198401A | Hong Kong, China | A | |
| HK1198401A1 | Hong Kong, China | A1 | |
| HK1199152A | Hong Kong, China | A | |
| HK1199152A1 | Hong Kong, China | A1 | |
| IN3388CHN2014A | India | A | |
| IN3430CHN2014A | India | A | |
| IN3460CHN2014A | India | A | |
| EP2777162B1 | European Patent Office (EPO) | B1 | |
| UA109506C2 | Ukraine | C2 | |
| UA109507C2 | Ukraine | C2 | |
| EP2777160B1 | European Patent Office (EPO) | B1 | |
| ES2549145T3 | Spain | T3 | |
| PT2777162E | Portugal | E | |
| US9172976B2 | United States of America | B2 | |
| ES2550803T3 | Spain | T3 | |
| DK2777162T3 | Denmark | T3 | |
| DK2777160T3 | Denmark | T3 | |
| PT2777160E | Portugal | E | |
| AU2012336234B2 | Australia | B2 | |
| AU2012336323B2 | Australia | B2 | |
| RU2014122998A | Russian Federation | A | |
| RU2014123366A | Russian Federation | A | |
| RU2014123373A | Russian Federation | A | |
| US9237358B2 | United States of America | B2 | |
| JP5847957B2 | Japan | B2 | |
| JP5847958B2 | Japan | B2 | |
| PL2777160T3 | Poland | T3 | |
| PL2777162T3This record | Poland | T3 | |
| US9277241B2 | United States of America | B2 | |
| US9288508B2 | United States of America | B2 | |
| AU2012336324B2 | Australia | B2 | |
| UA111513C2 | Ukraine | C2 | |
| HUE026070T2 | Hungary | T2 | |
| KR101633199B1 | Republic of Korea | B1 | |
| KR101633200B1 | Republic of Korea | B1 | |
| KR101633201B1 | Republic of Korea | B1 | |
| ZA201404182B | South Africa | B | |
| JP5964448B2 | Japan | B2 | |
| US9451287B2 | United States of America | B2 | |
| RU2602380C2 | Russian Federation | C2 | |
| HUE027592T2 | Hungary | T2 | |
| CA2854830C | Canada | C | |
| CN103988437B | China | B | |
| CN103999367B | China | B | |
| CN104040900B | China | B | |
| IL232288A | Israel | A | |
| BR112014011060A2 | Brazil | A2 | |
| BR112014011063A2 | Brazil | A2 | |
| BR112014011065A2 | Brazil | A2 | |
| CA2854814C | Canada | C | |
| CA2854822C | Canada | C | |
| BR112014011060A8 | Brazil | A8 | |
| BR112014011063A8 | Brazil | A8 | |
| PH12014501005B1 | Philippines | B1 | |
| PH12014501006B1 | Philippines | B1 | |
| IL232287A | Israel | A | |
| IL255321A0 | Israel | A0 | |
| IL255321D0 | Israel | D0 | |
| IL232286A | Israel | A | |
| IL232286B | Israel | B | |
| IL255321A | Israel | A | |
| IL255321B | Israel | B | |
| IL258565A | Israel | A |
Numbers
- Publication, DOCDB
- 2777162
- Publication, EPODOC
- PL2777162T
- Application
- 791589
- Application, DOCDB
- 12791589
- Application, EPODOC
- PL20120791589T
Titles2
- English
- CONTEXT REDUCTION FOR CONTEXT ADAPTIVE BINARY ARITHMETIC CODING
- Polish
- Redukcja kontekstu dla kodowania typu context adaptive binary arithmetic coding
Classification
- CPC, 10
- H04N19/60
- H04N19/103
- H03M7/30
- H03M7/4018
- H04N19/13
- H04N19/136
- H04N19/174
- H04N19/176
- H04N19/50
- H04N19/91
- IPC, 6
- H04N19 13
- H04N19 103
- H04N19 174
- H04N19 176
- H04N19 50
- H04N19 91