WO2013152401A1 - Procédé, appareil et système de codage et de décodage d'un sous-ensemble d'unités de transformation de données vidéo codées - Google Patents

Procédé, appareil et système de codage et de décodage d'un sous-ensemble d'unités de transformation de données vidéo codées Download PDF

Info

Publication number
WO2013152401A1
WO2013152401A1 PCT/AU2013/000380 AU2013000380W WO2013152401A1 WO 2013152401 A1 WO2013152401 A1 WO 2013152401A1 AU 2013000380 W AU2013000380 W AU 2013000380W WO 2013152401 A1 WO2013152401 A1 WO 2013152401A1
Authority
WO
WIPO (PCT)
Prior art keywords
decoding
transform unit
rice
parameter
golomb
Prior art date
Application number
PCT/AU2013/000380
Other languages
English (en)
Inventor
Volodymyr KOLESNIKOV
Original Assignee
Canon Kabushiki Kaisha
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AU2012202182A external-priority patent/AU2012202182B2/en
Priority to PL13775550T priority Critical patent/PL2837185T3/pl
Priority to KR1020147025173A priority patent/KR101818102B1/ko
Priority to US14/394,065 priority patent/US10873761B2/en
Priority to BR112014021436-0A priority patent/BR112014021436B1/pt
Priority to EP13775550.0A priority patent/EP2837185B1/fr
Application filed by Canon Kabushiki Kaisha filed Critical Canon Kabushiki Kaisha
Priority to JP2015504820A priority patent/JP2015516745A/ja
Priority to CN201380019838.9A priority patent/CN104221288A/zh
Priority to RU2014141168A priority patent/RU2014141168A/ru
Priority to KR1020187000410A priority patent/KR101974320B1/ko
Priority to ES13775550T priority patent/ES2746961T3/es
Publication of WO2013152401A1 publication Critical patent/WO2013152401A1/fr

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/4068Parameterized codes
    • H03M7/4075Golomb codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Definitions

  • the present invention relates generally to digital video signal processing and, in particular, to a method, apparatus and system for encoding and decoding a subset of transform units of video data.
  • JCT-VC Joint Collaborative Team on Video Coding
  • JCT- VC Joint Collaborative Team on Video Coding
  • ITU-T Telecommunication Standardisation Sector
  • ITU-T International Telecommunication Union
  • VCEG Video Coding Experts Group
  • MPEG Moving Picture Experts Group
  • JCT-VC Joint Collaborative Team on Video Coding
  • H.264/MPEG-4 AVC a presently existing video coding standard
  • the H.264/MPEG-4 AVC standard is itself a large improvement on previous video coding standards, such as MPEG- 4 and ITU-T H.263.
  • the new video coding standard under development has been named "high efficiency video coding (HEVC)”.
  • HEVC high efficiency video coding
  • the Joint Collaborative Team on Video Coding JCT-VC is also considering implementation challenges arising from technology proposed for high efficiency video coding (HEVC) that create difficulties when scaling implementations of the standard to operate at high resolutions or high frame rates.
  • the H.264/MPEG-4 AVC video coding standard presents difficulties for achieving high compression efficiency when coding residual coefficients to represent video data.
  • Video data is formed by a sequence of frames, with each frame having a two- dimensional array of samples.
  • frames include one luminance (luma) and two chrominance (chroma) channels.
  • Colour information is typically represented using a colour space such as YUV, with Y being the luma channel and UV being two chroma channels.
  • a colour space such as YUV gives the advantage that the majority of frame content is contained in the luma channels and a relatively smaller amount of content stored in the UV channels is sufficient to reconstruct a colour frame.
  • the chroma channels may also be down-sampled to a lower spatial resolution with negligible perceptual quality loss.
  • a commonly used chroma format known as 4:2:0 results in each chroma channel having half the vertical and horizontal resolution.
  • Each frame is decomposed into an array of largest coding units (LCUs).
  • the largest coding units (LCUs) have a fixed size, with; edge dimensions being a power of two and having equal width and height, such as 64' luma samples.
  • a coding tree enables the subdivision of each largest coding unit (LCU) into four coding units (CUs), each having half the width and height of a parent largest coding unit (LCU).
  • Each of the coding units (CUs) may be further subdivided into four equally-sized coding units (CUs).
  • Such a subdivision process may be applied recursively until a smallest coding unit (SCU) size is reached, enabling coding units (CUs) to be defined down to a minimum supported size.
  • SCU smallest coding unit
  • CUs coding units
  • the recursive subdivision of a largest coding unit, into a hierarchy of coding units, has a quad-tree structure and is referred to as the coding tree.
  • the subdivision process is encoded in a communications bit-stream as a sequence of flags, coded as bins. Coding units therefore have a square shape.
  • a set of coding units exist in a coding tree that are not " further sub-divided,
  • Transform trees exist at the coding units.
  • a transform tree may further decompose a coding unit using a quad-tree structure as used, for the coding tree.
  • residual data is encoded using transform units (TUs).
  • the transform tree may subdivide coding units into transform units having a non-square shape. Further, the transform tree structure does not require that transform units (TUs) occupy all of the area provided by the parent coding unit.
  • Each coding unit at leaf nodes of the coding trees are subdivided into one or more arrays of predicted data samples, each known as a prediction unit (PU).
  • Each prediction unit (PU) contains a prediction of a portion of input video frame data, derived by applying an intra-prediction or an inter-prediction process.
  • a single prediction unit (PU) may occupy an entire area of a coding unit (CU), or the coding unit (CU) may be split into two equal-sized rectangular prediction units (PUs), either horizontally or vertically. Additionally, the coding units (CU) may be split into four equal-sized square prediction units (PUs).
  • a video encoder compresses the video data into a bit-stream by converting the video data into a sequence of syntax elements.
  • a context adaptive binary arithmetic coding (CABAC) scheme is defined within the high efficiency video coding (HEVC) standard under development, using an identical arithmetic coding scheme as to that defined in the MPEG4-AVC/H.264 video compression standard.
  • HEVC high efficiency video coding
  • CABAC context adaptive binary arithmetic coding
  • each syntax element is expressed as a sequence of bins. Each bin is either bypass-coded or arithmetically coded. Bypass coding is used where the bin is equally likely to be 0 or 1. In this case, there is no further compression achievable.
  • Arithmetic coding is used for bins which have an unequal probability distribution. Each arithmetically coded bin is associated with information known as a 'context'. Contexts contain a likely bin value (the 'valMPS') and a probability state, an integer which maps to an estimated probability of the likely bin value. Creating such a sequence of bins, comprising combinations of bypass-coded bins and arithmetic-coded bins, from a syntax element is known as "binarising" the syntax element.
  • context selection for bins provides a means to improve coding efficiency.
  • coding efficiency may be improved by selecting a particular bin such that statistical properties from previous instances of the bin, where the associated context information was used, correlate with statistical properties of a current instance of the bin.
  • Such context selection frequently utilises spatially local information to determine the optimal context.
  • a prediction for a current block is derived, based on reference sample data either from other frames, or from neighbouring regions within the current block that have been previously decoded.
  • the difference between the prediction and the desired sample data is known as the residual.
  • a frequency domain representation of the residual is a two-dimensional array of residual coefficients. By convention, the upper-left corner of the two-dimensional array contains residual coefficients representing low- frequency information.
  • a method of decoding a transform unit of encoded video data using Golomb-Rice decoding comprising:
  • determining significant residual coefficients for a sub-set of the transform unit selecting a predetermined Rice parameter for Golomb-Rice decoding of the subset of the transform unit, the predetermined Rice parameter being offset from a zero setting when the determined number of significant residual coefficients is higher than a predetermined threshold;
  • an apparatus for decoding a transform unit of encoded video data using Golomb-Rice decoding comprising:
  • a system for decoding a transform unit of encoded video data using Golomb-Rice decoding comprising:
  • a memory for storing data and a computer program
  • a processor coupled to said memory for executing said computer program, said computer program comprising instructions for:
  • determining significant residual coefficients for a sub-set of the transform unit selecting a predetermined Rice parameter for Golomb-Rice decoding of the subset of the transform unit, the predetermined Rice parameter being offset from a zero setting when the determined number of significant residual coefficients is higher than a predetermined threshold; and .
  • a computer readable medium having a computer program recoded thereon for decoding a transform unit of encoded video data using Golomb-Rice decoding, the program comprising:
  • a method of decoding a stream of video data to determine a value of a current residual coefficient in a decoded stream of video data comprising:
  • a method of decoding a transform unit of encoded video data using Golomb-Rice decoding comprising:
  • determining significant residual coefficients for a sub-set of the transform unit selecting a predetermined Rice parameter for Golomb-Rice decoding of the subset of the transform unit, the predetermined Rice parameter being offset from a zero setting when the determined quantization parameter is lower than a predetermined threshold; and decoding the subset of the transform unit using the predetermined Rice parameter as an initial parameter for the Golomb-Rice decoding.
  • an apparatus for decoding a transform unit of encoded video data using Golomb-Rice decoding comprising:
  • a system for decoding a transform unit of encoded video data using Golomb-Rice decoding comprising:
  • a memory for storing data and a computer program
  • a processor coupled to said memory for executing said computer program, said computer program comprising instructions for:
  • predetermined Rice parameter for Golomb-Rice decoding of the subset of the transform unit, the predetermined Rice parameter being offset from a zero setting when the determined quantization parameter is lower than a predetermined threshold; and decoding the subset of the transform unit using the predetermined Rice parameter as an initial parameter for the Golomb-Rice decoding.
  • a computer readable medium having a computer program recoded thereon for decoding a transform unit of encoded video data using Golomb-Rice decoding, the program comprising:
  • a method of decoding a transform unit of encoded video data using Golomb-Rice decoding comprising:
  • determining significant residual coefficients for a sub-set of the transform unit selecting a predetermined Rice parameter for Golomb-Rice decoding of the subset of the transform unit, the predetermined Rice parameter being offset from a zero setting when the determined quantization parameter is lower than or equal to a predetermined threshold, the width is greater than a predetermined threshold and the height is greater than a predetermined threshold; and
  • an apparatus for decoding a transform unit of encoded video data using Golomb-Rice decoding comprising:
  • means for determining a width and a height for the transform unit means for selecting a predetermined Rice parameter for Golomb-Rice decoding of the subset of the transform unit, the predetermined Rice parameter being offset from a zero setting when the determined quantization parameter is lower than or equal to a
  • the width is greater than a predetermined threshold and the height is greater than a predetermined threshold
  • a system for decoding a transform unit of encoded video data using Golomb-Rice decoding comprising:
  • a memory for storing data and a computer program
  • a processor coupled to said memory for executing said computer program, said computer program comprising instructions for:
  • the predetermined Rice parameter being offset from a zero setting when the determined quantization parameter is lower than or equal to a predetermined threshold, the width is greater than a predetermined threshold and the height is greater than a predetermined threshold;
  • a computer readable medium having a computer program recoded thereon for decoding a transform unit of encoded video data using Golomb-Rice decoding, the program comprising:
  • the predetermined Rice parameter being offset from a zero setting when the determined quantization parameter is lower than or equal to a predetermined threshold, the width is greater than a predetermined threshold and the height is greater than a predetermined threshold;
  • Fig. 1 is a schematic block diagram showing functional modules- of a video encoder
  • Fig. 2 is a schematic block diagram showing functional modules of a video decoder
  • Figs. 3A and 3B form a schematic block diagram of a general purpose computer system upon which the encoder and decoder of Figs. 1 and 2, respectively, may be practiced;
  • Figs. 4 A and 4B shows spatial structure of an example transform unit
  • Fig. 5 is a schematic block diagram showing syntax element structure of an example transform unit
  • Fig. 6A is a schematic block diagram showing a method of encoding a transform unit (TU);
  • Fig. 6B is a schematic flow diagram showing a method of decoding a transform unit (TU);
  • Fig. 7 is a schematic block diagram showing syntax element structure of a sub-set of the example transform unit of Fig. 5;
  • Fig. 8A is a schematic flow diagram showing a method of encoding a sub-set of a transform unit
  • Fig. 8B is a schematic flow diagram showing a method of decoding a sub-set of a transform unit
  • Fig. 9 is a table showing binary representations of residual coefficients with Golomb-Rice code- words.
  • Fig. 10 is a table showing binary representations of residual coefficients with exponential Golomb code-words of order zero;
  • Fig. 1 1 is a table showing a lookup table for determining a value of a Golomb- ice parameter based on the current value of a Golomb-Rice parameter and the value of a previous residual coefficient;
  • Fig. 12A is a schematic flow diagram showing a method of encoding a residual coefficient
  • Fig. 12B is a schematic flow diagram showing a method of decoding a residual coefficient
  • Fig. 13 is a schematic flow diagram showing a method for determining the value of a parameter as used by the method for decoding a residual coefficient using Golomb- Rice decoding;
  • Fig. 14A shows a binariser for decoding remaining residual coefficient magnitude values for a sub-set of a transform unit (TU);
  • Fig. 14B shows another binariser for decoding remaining residual coefficient magnitude values for a sub-set of a transform unit (TU).
  • Fig. 15 shows another example transform unit.
  • the property of low-frequency information being predominant in the upper-left corner of a two-dimensional array of residual coefficients may be used by a binarisation scheme to minimise the size of the residual coefficients in a bit-stream.
  • One aspect of binarisation is selection of contexts to use for coding syntax elements corresponding to individual flags.
  • One flag may use more than one context. Determining which context should be used for a particular instance of a flag depends on other already available information and is known as 'context modelling'. Context modelling is a process whereby a context that most accurately represents the statistical properties of the present instance of the flag is selected. For example, frequently the value of a flag is influenced by the values of neighbouring instances of the same flag, in which case a context can be selected based on the values of neighbouring instances of the flag. Due to the majority of frame information being contained in the luma channel, context modelling frequently uses separate contexts for the luma channel versus the chroma channels. However, contexts are - H - typically shared between chroma channels, as the statistical properties of the two chroma channels are relatively similar.
  • Version 6 of the high efficiency video coding (HEVC) test model (“HM-6.0") divides a transform unit (TU) into a number of sub-sets and scans the residual coefficients in each sub-set in two passes.
  • the first pass encodes flags indicating the status of residual coefficients as being nonzero-valued (significant) or zero-valued (non-significant). This data is known as a significance map.
  • a second pass encodes the magnitude and sign of significant residual coefficients, known as the coefficient levels.
  • a provided scan pattern enables scanning of the two-dimensional array of residual coefficients into a one-dimensional array.
  • the provided scan pattern is used for processing both * the significance map and the coefficient levels.
  • the location of the last significant coefficient in the two-dimensional significance map may be determined.
  • Scan patterns may be horizontal, vertical or diagonal.
  • HM-6,0 provides support for residual blocks, also known as transform units (TUs) having both a square shape and a non-square shape.
  • Each transform unit (TU) contains a set of residual coefficients. Residual blocks having equally sized side dimensions are known as square transform units (TUs) and residual blocks having unequally sized side dimensions are known as non-square transform units (TUs).
  • Transform unit (TU) sizes supported in HM-6.0 are 4x4, 8x8, 16x16, 32x32, 4x16,
  • Transform unit (TU) sizes are typically described in terms of luma- samples. However, when a chroma format of 4:2:0 is used, each chroma sample occupies the area of 2x2 luma samples. Accordingly, scanning transform units (TUs) to encode chroma residual data uses scan patterns of half the horizontal and vertical dimensions, such as 2x2 for a 4x4 luma residual block.
  • the 16x16, 32x32, 4x16, 16x4, 8x32 and 32x8 transform units are divided into a number of sub-blocks, i.e.: a lower-layer of the transform unit (TU) scan, having a size of 4x4, with a corresponding map existing within HM-6.0.
  • sub-blocks for the above transform unit (TU) sizes are co-located with sub-sets in the transform unit (TU).
  • sub-sets may not be co- located with the sub-blocks having sizes different from the sizes of sub-blocks.
  • the set significant coefficient flags within a portion of the significance map collocated within one sub-block is referred to as a significant coefficient group.
  • the significance map coding makes use of a two-level scan.
  • the upper level scan performs a scan, such as a backward diagonal down-left scan, to code or infer flags representing the significant coefficient groups of each sub-block.
  • a scan such as the backward diagonal down-left scan, is performed to code the significant coefficient flags for sub-blocks having a one- valued significant coefficient group flag.
  • a 16x16 transform unit a 4x4 upper-level scan is used.
  • a 32x32 transform unit TU
  • an 8x8 upper- level scan is used.
  • 4x16, 32x8 and 8x32 transform unit (TU) sizes 4x1 , 1x4, 8x2 and 2x8 upper-level scans are used respectively.
  • residual coefficient data may be encoded into a bit- stream.
  • Each "residual coefficient” is a number representing image characteristics within a transform unit in the frequency (DCT) domain and occupying a unique location within the transform unit.
  • a transform unit is a block of residual data samples that may be transformed between the spatial and the frequency domains. In the frequency domain, the transform unit (TU) encodes the residual data samples as residual coefficient data. Side dimensions of transform units are sized in powers of two (2), ranging from 4 samples to 32 samples for a "Luma" channel, and 2 to 16 samples for a "Chroma” channel.
  • the leaf nodes of the ' transform unit (TU) tree may contain either a transform unit (TU) or nothing at all, in the case where no residual coefficient data is required.
  • a frequency domain representation resulting from a transform such as a modified discrete cosine transform (DCT) is also, a two-dimensional array of residual coefficients.
  • DCT modified discrete cosine transform
  • the spectral characteristics of typical sample data within a transform unit (TU) are such that the frequency domain representation is more compact than the spatial representation.
  • the predominance of lower-frequency spectral information typical in a transform unit (TU) results in a clustering of larger-valued residual coefficients towards the upper-left of the transform unit (TU), where low-frequency residual coefficients are represented.
  • DCTs Modified discrete cosine transforms
  • DSTs modified discrete sine transforms
  • Implementations of the residual transform are configured to support each required transform unit (TU) size.
  • TU transform unit
  • the residual coefficients from the residual transform are scaled and quantised. The scaling and quantisation reduces the magnitude of the residual coefficients, reducing the size of the data coded into the bit-stream at the cost of reducing the image quality.
  • a quantization process is performed.
  • the purpose of the quantization process is to achieve a higher compression ratio by reducing the precision of the magnitude of the residual coefficients. This reduction in magnitude precision is a lossy process and thus has an impact on visual quality.
  • the level of precision reduction is controlled by a quantization parameter (QP). The higher the value of the parameter the more visual quality is affected.
  • QP quantization parameter
  • the quantization parameter maybe modified on transform unit (TU) level by using a delta-qp syntax element as described below.
  • the high efficiency video coding (HEVC) standard under development is seeking to achieve a high efficiency compression of video data. Estimation and statistical data analysis may be used to achieve high efficiency compression of video data.
  • the high efficiency video coding (HEVC) standard under development is seeking to encode or decode video data at high bit-rates.
  • the context adaptive binary arithmetic coding (CABAC) scheme employed in the high efficiency video coding (HEVC) standard under development supports an 'equal probability' mode of operation referred to as 'bypass coding'. In this mode, a bin is not associated with a context from the context model, and so there is no context model update step. In such a mode, multiple adjacent bins may be read from a bit-stream in parallel, provided each bin is bypass coded which increases throughput. For example, hardware implementations may write/read groups of adjacent bypass coded data in parallel to increase the throughput of encoding/decoding the bit- stream.
  • Fig. 1 is a schematic block diagram showing functional modules of a video encoder 100.
  • Fig. 2 is a schematic block diagram showing functional modules of a corresponding video decoder 200.
  • the video encoder 100 and video decoder 200 may be implemented using a general-purpose computer system 300, as shown in Figs. 3A and 3B where the various functional modules may be implemented by dedicated hardware within the computer system 300, by software executable within the computer system 300, or alternatively by a combination of dedicated hardware and software executable within the computer system 300.
  • the computer system 300 includes: a computer module 301 ; input devices such as a keyboard 302, a mouse pointer device 303, a scanner 326, a camera 327, and a microphone 380; and output devices including a printer 315, a display device 314 and loudspeakers 317.
  • An external Modulator-Demodulator (Modem) transceiver device 316 may be used by the computer module 301 for communicating to and from a communications network 320 via a connection 321.
  • the communications network 320 may be a wide-area network (WAN), such as the Internet, a cellular telecommunications network, or a private WAN.
  • WAN wide-area network
  • the modem 316 may be a traditional "dial-up" modem.
  • the modem 316 may be a broadband modem.
  • a wireless modem may also be used for wireless connection to the communications network 320.
  • the computer module 301 typically includes at least one processor unit 305, and a memory unit 306.
  • the memory unit 306 ' may have semiconductor random access memory (RAM) and semiconductor read only memory (ROM).
  • the computer module 301 also includes an number of input/output (I/O) interfaces including: an audio- video interface 307 that couples to the video display 314, loudspeakers 317 and microphone 380; an I/O interface 313 that couples to the keyboard 302, mouse 303, scanner 326, camera 327 and optionally a joystick or other human interface device (not illustrated); and an interface 308» for the external modem 316 and printer 315.
  • the modem 316 may be incorporated within the computer module 301 , for example within the interface 308.
  • the computer module 301 also has a local network interface 31 1, which permits coupling of the computer system 300 via a connection 323 to a local-area communications network 322, known as a Local Area Network (LAN).
  • LAN Local Area Network
  • the local communications network 322 may also couple to the wide network 320 via a connection 324, which would typically include a so-called "firewall” device or device of similar functionality.
  • the local network interface 31 1 may comprise an EthernetTM circuit card, a BluetoothTM wireless arrangement or an IEEE 802.1 1 wireless arrangement; however, numerous other types of interfaces may be practiced for the interface 31 1.
  • the I/O interfaces 308 and 313 may afford either or both of serial and parallel connectivity, the former typically being implemented according to the Universal Serial Bus (USB) standards and having corresponding USB connectors (not illustrated).
  • Storage devices 309 are provided and typically include a hard disk drive (HDD) 310. Other storage devices such as a floppy disk drive and a magnetic tape drive (not illustrated) may also be used.
  • An optical disk drive 312 is typically provided to act as a non-volatile source of data.
  • Portable memory devices such optical disks (e.g. CD-ROM, DVD, Blu-ray DiscTM), USB-RAM, portable, external hard drives, and floppy disks, for example, may be used as appropriate sources of data to the system 300.
  • any of the HDD 310, optical drive 312, networks 320 and 322, or camera 327 may for a source for video data to be encoded, or, with the display 314, a destination for decoded video data to be stored or reproduced.
  • the components 305 to 313 of the computer module 301 typically communicate via an interconnected bus 304 and in a manner that results in a conventional mode of operation of the computer system 300 known to those in the relevant art.
  • the processor 305 is coupled to the system bus 304 using a connection 318.
  • the memory 306 and optical disk drive 312 are coupled to the system bus 304 by connections 319. Examples of computers on which the described arrangements can be practised include IBM-PC's and compatibles, Sun Sparcstations, Apple MacTM or alike computer systems.
  • the encoder 100 and the decoder 200 may be implemented using the computer system 300 wherein the encoder 100, the decoder 200 and the processes, to be described, may be implemented as one or more software application programs 333 executable within the computer system 300.
  • the encoder 100, the decoder 200 and the steps of the described methods may be effected by instructions 331 (see Fig. 3B) in the software 333 that are carried out within the computer system 300.
  • the software instructions 331 may be formed as one or more code modules, each for performing one or more particular tasks.
  • the software may also be divided into two separate parts, in which a first part and the corresponding code modules performs the described methods and a second part and the corresponding code modules manage a user interface between the first part and the user.
  • the software may be stored in a computer readable medium, including the storage devices described below, for example.
  • the software is loaded into the computer system 300 from the computer readable medium, and then executed by the computer system 300.
  • a computer readable medium having such software or computer program recorded on the computer readable medium is a computer program product.
  • the use of the computer program product in the computer system 300 preferably effects an advantageous apparatus for implementing the encoder 100, the decoder 200 and the described methods.
  • the software 333 is typically stored in the HDD 310 or the memory 306.
  • the software is loaded into the computer system 300 from a computer readable medium, and executed by the computer system 300.
  • the software 333 may be stored on an optically readable disk storage medium (e.g., CD-ROM) 325 that is read by the optical disk drive 312.
  • the application programs 333 may be supplied to the user encoded on one or more CD-ROMs 325 and read via the corresponding drive 312, or alternatively may be read by the user from the networks 320 or 322.
  • the software can also be loaded into the computer system 300 from other computer readable media.
  • Computer readable storage media refers to any non-transitory tangible storage medium that provides recorded instructions and/or data to the computer system 300 for execution and/or processing. Examples of such storage media include floppy disks, magnetic tape, CD-ROM, DVD, Blu-ray Disc, a hard disk drive, a ROM or integrated circuit, USB memory, a magneto-optical disk, or a computer readable card such as a PCMCIA card and the like, whether or not such devices are internal or external of the computer module 301.
  • Examples of transitory or non-tangible computer readable transmission media that may also participate in the provision of the software, application programs, instructions and/or video data or encoded video data to the computer module 301 include radio or infra-red transmission channels as well as a network connection to another computer or networked device, and the Internet or Intranets including e-mail transmissions and information recorded on Websites and the like.
  • the second part of the application programs 333 and the corresponding code modules mentioned above may be executed to implement one or more graphical user interfaces (GUIs) to be rendered or otherwise represented upon the display 314.
  • GUIs graphical user interfaces
  • a user of the computer system 300 and the application may manipulate the interface in a functionally adaptable manner to provide controlling commands and/or input to the applications associated with the GUI(s).
  • Other forms of functionally adaptable user interfaces may also be implemented, such as an audio interface utilizing speech prompts output via the loudspeakers 317 and user voice commands input via the microphone 380.
  • Fig. 3B is a detailed schematic block diagram of the processor 305 and a "memory" 334.
  • the memory 334 represents a logical aggregation of all the memory modules (including the HDD 309 and semiconductor memory 306) that can be accessed by the computer module 301 in Fig. 3 A.
  • the POST program 350 executes.
  • the POST program 350 is typically stored in a ROM 349 of the semiconductor memory 306 of Fig. 3A.
  • a hardware device such as the ROM 349 storing software is sometimes referred to as firmware.
  • the POST program 350 examines hardware within the computer module 301 to ensure proper functioning and typically checks the processor 305, the memory 334 (309, 306), and a basic input-output systems software (BlOS)module 351, also typically stored in the ROM 349, for correct operation.
  • the BIOS 351 activates the hard disk drive 310 of Fig. 3 A.
  • Activation of the hard disk drive 310 causes a bootstrap loader program 352 that is resident on the hard disk drive 310 to execute via the processor 305.
  • the operating system 353 is a system level application, executable by the processor 305, to fulfil various high level functions, including processor management, memory management, device management, storage management, software application interface, and generic user interface.
  • the operating system 353 manages the memory 334 (309, 306) to ensure that each process or application running on the computer module 301 has sufficient memory in which to execute without colliding with memory allocated to another process. Furthermore, the different types of memory available in the system 300 of Fig. 3A must be used properly so that each process can run effectively. Accordingly, the aggregated memory 334 is not intended to illustrate how particular segments of memory are allocated (unless otherwise stated), but rather to provide a general view of the memory accessible by the computer system 300 and how such is used.
  • the processor 305 includes a number of functional modules including a control unit 339, an arithmetic logic unit (ALU) 340, and a local or internal memory 348, sometimes called a cache memory.
  • the cache memory 348 typically includes a number of storage registers 344- 346 in a register section.
  • One or more internal busses 341 functionally interconnect these functional modules.
  • the processor 305 typically also has one or more interfaces 342 for communicating with external devices via the system bus 304, using a connection 318.
  • the memory 334 is coupled to the bus 304 using a connection 319.
  • the application program 333 includes a sequence of instructions 331 that may include conditional branch and loop instructions.
  • the program 333 may also include data 332 which is used in execution of the program 333.
  • the instructions 331 and the data 332 are stored in memory locations 328, 329, 330 and 335, 336, 337, respectively.
  • a particular instruction may be stored in a single memory location as depicted by the instruction shown in the memory location 330.
  • an instruction may be segmented into a number of parts each of which is stored in a separate memory location, as depicted by the instruction segments shown in the memory locations 328 and 329.
  • the processor 305 is given a set of instructions which are executed therein.
  • the processor 305 waits for a subsequent input, to which the processor 305 reacts to by executing another set of instructions.
  • Each input may be provided from one or more of a number of sources, including data generated by one or more of the input devices 302, 303, data received from an external source across one of the networks 320, 302, data retrieved from one of the storage devices 306, 309 or data retrieved from a storage medium 325 inserted into the corresponding reader 312, all depicted in Fig. 3 A.
  • the execution of a set of the instructions may in some cases result in output of data. Execution may also involve storing data or variables to the memory 334.
  • the encoder 100, the decoder 200 and the described methods Use input variables 354, which are stored in the memory 334 in corresponding memory locations 355, 356, 357.
  • the encoder 100, the decoder 200 and the described methods produce output variables 361, which are stored in the memory 334 in corresponding memory locations 362, 363, 364.
  • Intermediate variables 358 may be stored in memory locations 359, 360, 366 and 367.
  • each fetch, decode, and execute cycle comprises:
  • a further fetch, decode, and execute cycle for the next instruction may be executed.
  • a store cycle may be performed by which the control unit 339 stores or writes a value to a memory location 332.
  • Each step or sub-process in the processes to be described is associated with one or more segments of the program 333 and is typically performed by the register section 344, 345, 347, the ALU 340, and the control unit 339 in the processor 305 working together to perform the fetch, decode, and execute cycles for every instruction in the instruction set for the noted segments of the program 333.
  • the encoder 100, the decoder 200 and the described methods may alternatively be implemented in dedicated hardware such as one or more integrated circuits performing the functions or sub functions of the described methods.
  • dedicated hardware may include graphic processors, digital signal processors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs) or one or more microprocessors and associated memories.
  • the video encoder 100 may be implemented as one or more software code modules of the software application program 333 resident on the hard disk drive 310 and being controlled in its execution by the processor 305.
  • the video encoder 100 comprises modules 102 to 1 12, 1 14 and 1 15 which may each be implemented as one or more software code modules of the software application program 333.
  • the video encoder 100 of Fig. 1 is an example of a high efficiency video coding (HEVC) video decoding pipeline
  • processing stages performed by the modules 102 to 1 12, 1 14 and 115 are common to other video codecs such as VC-1 or H.264/MPEG-4 AVC.
  • the video encoder 100 receives unencoded frame data 101 as a series of frames including luminance and chrominance samples.
  • the video encoder 100 divides each frame of the frame data 101 into hierarchical sets of coding units (CUs) which may be represented, for example, as a coding unit (CU) tree.
  • CUs coding units
  • the video encoder 100 operates by outputting, from a multiplexer module 110, an array of predicted data samples known as a prediction unit (PU) 120.
  • a difference module 1 15 outputs the difference between the prediction unit (PU) 120 and a corresponding array of data samples received from the frame data 101 , the difference being known as residual data samples 122.
  • the residual data samples 122 from the difference module 1 15 are received by a transform module 102, which converts the difference from a spatial representation to a frequency domain representation to create transform coefficients 124 for each transform unit (TU) in the transform tree.
  • a transform module 102 converts the difference from a spatial representation to a frequency domain representation to create transform coefficients 124 for each transform unit (TU) in the transform tree.
  • HEVC high efficiency video coding
  • the conversion to the frequency domain representation is implemented using a modified discrete cosine transform (DCT), in which a traditional DCT is modified to be implemented using shifts and additions.
  • DCT discrete cosine transform
  • the transform coefficients 124 are then input to a scale and quantise module 103 and are scaled and quantised to produce residual coefficients 126.
  • the scale and quantisation process results in a loss of precision.
  • the residual coefficients 126 are taken as input to an inverse scaling module 105 which reverses the scaling performed by the scale and quantise module 103 to produce rescaled transform coefficients 128, which are rescaled versions of the residual coefficients 126.
  • the residual coefficients 126 are also taken as input to an entropy encoder module 104 which encodes the residual coefficients in an encoded bit-stream 1 13. Due to the loss of precision resulting from the scale and quantise module 103, the rescaled transform coefficients 128 are not identical to the original transform coefficients 124.
  • the rescaled transform coefficients 128 from the inverse scaling module 105 are then output to an inverse transform module 106.
  • the inverse transform module 106 performs an inverse transform from the frequency domain to the spatial domain to produce a spatial-domain representation 130 of the rescaled transform coefficients 128 identical to a spatial domain representation that is produced at a decoder.
  • a motion estimation module 107 produces motion vectors 132 by comparing the frame data 101 with previous frame data stored in a frame buffer module 1 12 configured within the memory 306.
  • the motion vectors 132 are then input to a motion compensation module 108 which produces inter-predicted reference samples 134 by filtering samples stored in the frame buffer module 112, taking into account a spatial offset derived from the motion vectors 132.
  • the motion vectors 132 are also passed as syntax elements to the entropy encoder module 104 for coding in the encoded bit-stream 1 13.
  • An intra-frame prediction module 109 produces intra-predicted reference samples 136 using samples 138 obtained from a summation module 1 14, which sums the output 120 of the multiplexer module 1 10 and the output 130 from the inverse transform module 106.
  • Prediction units may be coded using intra-prediction or inter-prediction methods.
  • the decision as to whether to use intra-prediction or inter-prediction is made according to a rate-distortion trade-off between desired bit-rate of the resulting encoded bit-stream 113 and the amount of image quality distortion introduced by either the intra- prediction or inter-prediction method.
  • intra-prediction one intra-prediction mode is selected from a set of possible modes, also according to a rate-distortion trade-off.
  • One intra-prediction mode is selected for each prediction unit.
  • the multiplexer module 1 10 selects either the intra-predicted reference samples 136 from the intra-frame prediction module 109 or the inter-predicted reference samples 134 from the motion compensation block 108, depending on a current prediction mode 142, determined by control logic not illustrated but well-known in the art.
  • the prediction mode 142 is also provided to the entropy encoder 104 and as such is used to determine or otherwise establish the scan order of transform units as will be described. Inter-frame prediction uses only a diagonal scan order, whereas intra-frame prediction may use the diagonal scan, a horizontal scan or a vertical scan order.
  • the summation module 1 14 produces a sum 138 that is input to a de-blocking filter module 1 1 1.
  • the de-blocking filter module 1 1 1 performs filtering along block boundaries, producing de-blocked samples 140 that are written to the frame buffer module 1 12 configured within the memory 306.
  • the frame buffer module 1 12 is a buffer with sufficient capacity to hold data from multiple past frames for future reference.
  • the residual data samples 122 within one transform unit (TU) are determined by finding the difference between data samples of the input frame data 101 and the prediction 120 of the data samples of the input frame data 101.
  • the difference provides a spatial representation of the residual coefficients of the transform unit (TU).
  • the residual coefficients of a transform unit (TU) are converted to the two- dimensional significance map.
  • the significance map of the residual coefficients in the transform unit (TU) is then scanned in a particular order, known as a scan order, to form a one-dimensional list of flag values, called a list of significant coefficient flags.
  • the scan order may be described or otherwise specified by a scan pattern, such as that received with the prediction mode 142 from the intra-prediction module 109.
  • the scan pattern may be horizontal, vertical, diagonal or zig-zag.
  • Version 6 of the high efficiency video coding (HEVC) test model (i.e., "HM 6.0") performs scanning in a backward direction. However, scanning in a forward direction is also possible.
  • HEVC reference model version 6.0 i.e., "HM_6.0”
  • the scan operation starts one residual coefficient after a last significant coefficient (where 'after' is in the direction of a backward scan of the residual coefficients) and progresses until an upper-left location of the significance map is reached.
  • Scan operations having this property and which accord to the HEVC reference model version 6.0 are known as 'backward scans'.
  • HM_6.0 HEVC reference software version 6.0
  • TU transform unit
  • the list of significant coefficient flags, indicating the significance of each residual coefficient prior to the last significant coefficient, is coded into the bit-stream.
  • the last significant coefficient flag value is not required to be explicitly encoded into the bit-stream because the prior coding of the location of the last significant coefficient flag implicitly indicates that this residual coefficient was significant.
  • the video encoder 100 also comprises an entropy encoder module 104 that implements an entropy encoding method.
  • the entropy encoder module 104 produces syntax elements from incoming residual coefficient data (or residual coefficients) 126 received from the scale and quantise module 103.
  • the entropy encoder module 104 outputs encoded bit-stream 1 13 and will be described in more detail below.
  • the encoded bit-stream 113 is delineated into network abstraction layer (NAL) units. Each slice of a frame is contained in one NAL unit.
  • NAL network abstraction layer
  • CABAC context adaptive binary arithmetic coding
  • PIPE probability interval partitioning entropy
  • one of the supported entropy coding methods is selected according to the configuration of the encoder 100. Further; in encoding the coding units from each frame, the entropy encoder module 104 writes the encoded bit-stream 1 13 such that each frame has one or more slices per frame, with each slice containing image data for part of the frame. Producing one slice per frame reduces overhead associated with delineating each slice boundary. However, dividing the frame into multiple slices is also possible.
  • the video decoder 200 of Fig. 2 may be implemented as one or more software code modules of the software application program 333 resident on the hard disk drive 310 and being controlled in its execution by the processor 305.
  • the video decoder 200 comprises modules 202 to 208 and 210 which may each be implemented as one or more software code modules of the software application program 333.
  • HEVC high efficiency video coding
  • processing stages performed by the modules 202 to 208 and 209 are common to other video codecs that employ entropy coding, such as H.264 MPEG-4 AVC, MPEG-2 and VC-1.
  • An encoded bit-stream such as the encoded bit-stream 1 13, is received by the video decoder 200.
  • the encoded bit-stream 1 13 may be read from memory 306, the hard disk drive 310, a CD-ROM, a Blu-rayTM disk or other computer readable storage medium.
  • the encoded bit-stream 1 13 may be received from an external source such as a server connected to the communications network 320 or a radio-frequency receiver.
  • the encoded bit-stream 113 contains encoded syntax elements representing frame data to be decoded.
  • the encoded bit-stream 113 is input to an entropy decoder module 202 which extracts the syntax elements from the encoded bit-stream 1 13 and passes the values of the syntax elements to other ' blocks in the video decoder 200.
  • Syntax element data 220 representing residual coefficient data is passed to an inverse scale and transform module 203 and syntax element data 222 representing motion vector information is passed to a motion compensation module 204.
  • the inverse scale and transform module 203 performs inverse scaling on the residual coefficient data to create reconstructed transform coefficients.
  • the module 203 then performs an inverse transform to convert the reconstructed transform coefficients from a frequency domain representation to a spatial domain representation, producing residual samples 224, such as the inverse transform described with reference to the inverse transform module 106.
  • the motion compensation module 204 uses the motion vector data 222 from entropy decoder module 202, combined with previous frame data 226 from a frame buffer block 208, configured within the memory 306, to produce inter-predicted reference samples 228 for a prediction unit (PU), being a prediction of output decoded frame data.
  • a syntax element indicates that the current coding unit was coded using intra- prediction
  • the intra-frame prediction module 205 produces intra-predicted reference samples 230 for the prediction unit (PU) using samples spatially neighbouring the prediction unit (PU).
  • the spatially neighbouring samples are obtained from a sum 232 output from a summation module 210.
  • the multiplexer module 206 selects intra-predicted reference samples or inter-predicted reference samples for the prediction unit (PU) depending on the current prediction mode, which is indicated by a syntax element in the encoded bit-stream 1 13.
  • the array of samples 234 output from the multiplexer module 206 is added to the residual samples 224 from the inverse scale and transform module 203 by the summation module 210 to produce the sum 232 which is then input to each of a deblocking filter module 207 and the intra-frame prediction module 205.
  • the intra-frame prediction module 205 receives a prediction mode 236 from the entropy decoder 202.
  • the multiplexer 206 receives an intra-frame prediction / inter- frame prediction selection signal from the entropy decoder 202.
  • the de-blocking filter module 207 performs filtering along data block boundaries to smooth artefacts visible along the data block boundaries.
  • the output of the de-blocking filter module 207 is written to the frame buffer module 208 configured within the memory 306.
  • the frame buffer module 208 provides sufficient storage to hold multiple decoded frames for future reference. Decoded frames 209 are also output from the frame buffer module 208.
  • Fig. 4A shows an example transform unit (TU) 400.
  • the transform unit 400 has a rectangular spatial structure and may vary in size from 4x4 to 32x32. Width and height of the transform unit (TU) 400 takes values which are integer powers of two (2).
  • transform units hold the residual coefficients.
  • a two- level scan which divides the transform unit (TU) 400 into a set of one or more sub-sets 401, may be defined.
  • Each sub-set consists of sixteen (16) consecutive residual coefficients in a scan order 403, except the first sub-set in the scan order, which may contain less than sixteen (16) residual coefficients, depending on the position of the last significant coefficient.
  • the example transform unit 400 has a last significant coefficient position 451 with respect to the scan order 403.
  • scanning is performed by scanning each lower-level using a scan, such as the backward diagonal down-left scan.
  • a scan such as the backward diagonal down-left scan.
  • scanning may be performed using a scan such as the backward diagonal down-left scan.
  • a decision maybe made to not perform lower-level scanning of the next sub-set if the next sub-set does not contain any significant residual coefficients.
  • the transform unit 400 contains a sub-set 452 with no significant residual coefficients. In this instance, the lower-level scanning step may be skipped for the sub-set 452 and high-level scanning proceeds to a next sub-set in the scan order 403.
  • the upper left sub-set 405 of the transform unit 400 has sub-set index zero. Other sub-sets have incrementing indexes in the order opposite to the scan order.
  • a bit-stream portion 501 of the bit-stream 1 13 contains syntax elements of transform unit (TU) 400 and consists of the following syntax elements:
  • delta qp 502 contains information about a difference between a quantization parameter value used to quantize the transform unit (TU) 400 and a predetermined quantization parameter value.
  • the last_significant_xy syntax element 503 contains information about a position of the last significant residual coefficient in the transform unit (TU) 400.
  • sub-set residual coefficient data 504 The sub-set residual coefficient data consists of zero or more blocks 701 and contains information about the values of the residual coefficients of the transform unit (TU) 400.
  • a block 701 contains information about the values of the residual coefficients of a single sub-set of a transform unit (TU) and consists of the following syntax elements:
  • significant_coeff_group_fiag 702 The significant coeff group flag syntax element 702 is coded once per sub-set and when false, all residual coefficients in the subset are inferred to be zero and the residual coefficient data 703, 704, 705 706 and 707 is absent from the block701. Otherwise (when the significant_ceoff_group_flag syntax element 702 is true), at least one residual coefficient in the sub-set has a non-zero value and some combination of residual coefficient data 703, 704, 705, 706 and 707 is present in the block 701.
  • a block 703 of zero or more significant coeff flag values The block 703 is present if the significant coeff group flag 702 indicates presence of the block 703. Values of the significant_coeff_flag702 are present in the block 703 for every residual coefficient of the sub-set except the last significant residual coefficient to indicate whether the magnitude of a given residual coefficient is greater than zero.
  • a block 704 of zero or more cbeff_abs_level_greaterl_flag values The block
  • the coeff_abs_level_greaterl_flag values are present in the block 703, for every residual coefficient of the sub-set for which magnitude was indicated to be greater than zero, to indicate whether the magnitude of a given residual coefficient is greater than one.
  • the coeff_abs_level_greater2_flag values are present in the block 705, for every residual coefficient of the sub-set for which the magnitude was indicated to be greater than one, to indicate whether the magnitude of a given residual coefficient is greater than two.
  • the block 706 is present if the significant_coeff_group_flag 702 indicates presence of the block 706.
  • the coeff sign flag values are present in the block 706, for every residual coefficient for which the magnitude was indicated to be greater than zero, to indicate the arithmetic sign of a given residual coefficient.
  • each coeff_abs_level_remaining value of the block 707 is a Golomb-Rice code-word for a given value of the residual coefficient magnitude minus three (i.e., the remaining residual coefficient magnitude).
  • the block 707 is present if the significant_coeff_group_flag 702 indicates presence of the block 707.
  • the coeff_abs_level_remaining values are present in the block 707 for each residual coefficient for which the magnitude was indicated to be greater than two.
  • the coeff_abs_level_remaining values specify the value of the Golomb- Rice code-word for the remaining residual coefficient magnitude of a given residual coefficient.
  • a method 650 of encoding a transform unit (TU) will now be described with reference to Fig. 6A.
  • the method 650 may be implemented as part of the entropy encoder modules 104of the encoder 100.
  • the software code modules 102 to 1 12, 1 14 and 1 15 forming the encoder 100 are resident on the hard disk drive 310 and are controlled in their execution by the processor 305.
  • the method 650 will be described by way of example with reference to the bit- stream portion 501 of Fig. 5.
  • the method 650 encodes the delta_qp 502, the last_significant_xy503 and the data 504 into the bit-stream portion 50
  • the method 650 begins at encode delta-qp value step 651, where a delta-qp value is encoded by the encoder module 104, under execution of the processor 305, and stored in the memory 306.
  • the position of the last significant residual coefficient is encoded into the bit-stream portion 501 by the encoder module 104, under execution of the processor 305.
  • the bit-stream portion 501 may be stored in the memory 306.
  • the position of the last significant residual coefficient, width and height of the transform unit and information about scan order 403 are used to determine the number of sub-sets to be encoded in the transform unit (TU).
  • the method 650 continues at an encode sub-set step 653, where the sub-set data
  • the encoder module 104 determines whether more subsets 504 should be encoded into the bit-stream portion 501 , based on the information about the position of the last significant residual coefficient in the transform unit (TU) and scan order 403 used. If the encoder module 104 determines that there are more sub-sets 504 to be encoded, then the method 650 returns to encode sub-set step 653. As such, the method 650 iterates over steps 653 and 654 until all sub-sets from the sub-set containing the last significant coefficient to the first sub-set have been processed. Otherwise, the method 650 concludes.
  • TU transform unit
  • a method 600 of decoding a transform unit (TU) will be described with reference to Fig.6B.
  • the method 600 may be implemented as part of the entropy decoder module202 of the decoder 200.
  • the software code modules 202 to 208 and 210forming the decoder 200 are resident on the hard disk drive 310 and are controlled in their execution by the processor 305.
  • the method 600 will be described by way of example with reference to the bit-stream portion 501 of Fig. 5 encoded in accordance with the method 650.
  • the method 600 decodes data blocks 502, 503, 504 from the bit-stream portion 501.
  • the method begins at decode delta-qp value step 601 , where a value of delta-qp flag is determined by the decoder module 202 under execution of the processor 305.
  • the delta-qp flag value may be stored in the memory 306.
  • the position of the last significant residual coefficient in the transform unit (TU) is determined by the decoder module 202.
  • the position of the last significant residual coefficient, width and height of the transform unit and information about scan order 403 are used to determine the number of sub-sets to be decoded in the transform unit (TU).
  • the method 600 continues at decode sub-set step 603, where the sub-set data 504 is decoded by the decoder module 202 under execution of the processor 305.
  • the decoded sub-set data may be stored within the memory 306.
  • the decoder module 202 determines whether more subsets 504 should be decoded from the bit-stream portion 501 based on the information about the position of the last significant residual coefficient in the transform unit (TU) and used scan order403.
  • the method 600 returns to sub-set step 603. Otherwise, the method 600 concludes.
  • a method 850 of encoding a sub-set of a transform unit (TU) will now be described with the reference to Fig.8A.
  • the method 850 may be implemented as part of the entropy encoder module 104 of the encoder 100.
  • the software code modules 102 to 1 12, 1 14 and 115 forming the encoder 100 are resident on the hard disk drive 310 and are controlled in their execution by the processor 305.
  • the method 850 will be described by way of example with reference to the block 701 of Fig. 7.
  • the method 850 encodes the blocks 702, 703, 704, 705, 706, 707 into the bit- stream portion 501.
  • the method 850 begins at encodes significant group flag step 851 where the encoder module 104, under execution of the processor 305, encodes a value of the significant_eoeff_group_flag 702 and stores the encoded value in the memory 306.
  • step 852 if the value of the significant ;oeff_group_flag 702 indicates that the sub-set contains the data to be encoded for blocks 703, 704, 705 706, 707 the method 850 proceeds to step 853. Otherwise, the method 850 concludes.
  • the encoder module 104 under execution of the processor 305, encodes the block 703 of significant coeff flag values.
  • the encoder module 104 determines one significant coeff flag value for each residual coefficient of the sub-set except the last significant residual coefficient of the transform unit (TU).
  • the significant coeff flag values may be stored in the memory 306.
  • the encoder module 104 encodes the block 704 of coeff_abs_level_greaterl_flag values.
  • the encoder module 104 determines one coeff_abs_level_greaterl_flag value for each residual coefficient of the sub-set with the magnitude greater than zero.
  • the encoded coeff_abs_level_greaterl_flag values may be stored in the memory 306.
  • the encoder module 104 encodes the block 705 of coeff_abs_level_greater2_flag values.
  • the encoder module 104 determines one coeff_abs_level_greater2_flag value for each residual coefficient of the . sub-set with a magnitude greater than one.
  • the encoded coeff_abs_level_greater2_flag values may be stored in the memory 306.
  • the encoder module 104 under execution of the processor 305, encodes the block 706 of coeff_sign_flag values.
  • the encoder module 104 determines one coeff_sign_flag value for each residual coefficient of the sub-set with the magnitude greater than zero.
  • the encoded coeff_sign_flag values may be stored in the memory 306.
  • the encoder module 104 encodes the block 707 of coeff_abs_level_remaining values.
  • the encoder module 104 determines one coeff_abs_level_remaining value for each residual coefficient of the sub-set with the magnitude greater than two.
  • the encoded coeff_abs_level_remaining values may be stored in the memory 306.
  • a method 800 of decoding a sub-set of a transform unit (TU) will be described with the reference to Fig.8B.
  • the method 800 may be implemented as part of the entropy decoder module 202 of the decoder 200.
  • the software code modules 202 to 208 and 210 forming the decoder 200 are resident on the hard disk drive 310 and are controlled in their execution by the processor 305.
  • the method 800 will be described by way of example with reference to the block 701 of Fig. 7.
  • the method 800 decodes the blocks 702, 703, 704, 705, 706, 707from the bit-stream portion 501.
  • the method 800 begins at decode significant group flag step 801 , where the decoder module 202 decodes a value of the significant_coeff_group_flag702.
  • the decodedsignificant_coeff_group_flag702 value may be stored in the memory 306. .
  • step 802 if the decoder module 202 determines that the value of the significant_coeff_group_flag702 indicates that the sub-set contains the residual coefficient data blocks 703, 704, 705, 706, 707 the method 800 proceeds to step 803. Otherwise, the method 800 concludes.
  • the decoder module 202 under execution of the processor 305, decodes the block 703 of significant_coeff_flag values.
  • the decoder module 202 determines one significant coeff flag value for each residual coefficient of the sub-set except the last significant residual coefficient of the transform unit (TU).
  • the decoded significant coeff flag values may be stored in the memory 306.
  • the decoder module 202 decodes the block 704 of coeff_abs_level_greaterl_flag values.
  • the decoder module 202 determines one coeff_abs_level_greaterl_flag value for each residual coefficient of the sub-set for which one the magnitude was determined at step 803 to be greater than zero.
  • the decoded coeff_abs_level_greaterl_flag values may be stored in the memory 306.
  • the decoder module 202 under execution of the processor 305, decodes the block 705 of coeff_abs_level_greater2_flag values.
  • the decoder module 202 determines one coeff_abs_level_greater2_flag value for each residual coefficient of the sub-set for which the magnitude was determined at step 804 to be greater than one.
  • the decoded coeff_abs_level_greater2_flag values may be stored in the memory 306.
  • the decoder module 202 decodes the block 706 of coeff sign flag values.
  • the decoder module 202 determines one coeff_sign_flag value for every residual coefficient of the sub-set for which the magnitude was determined at step 803 to be greater than zero.
  • the coeff_sign_flag values may be stored in the memory 306.
  • the method 800 concludes at step 807, where the decoder module 202 decodes the block 707 of coeff_abs_level_remaining values.
  • the decoder module 202 determines one coeff_abs_level_remaining value for each residual coefficient of the sub-set for which the magnitude was determined at step 805 to be greater than two. Also at step 807, the decoder module 202 determines the value of a Golomb-Rice code-word for the remaining residual coefficient magnitude of a given residual coefficient.
  • step 807 the method 800 concludes.
  • Parameterized Golomb-Rice codes are a class of universal prefix binary codes used to represent the remaining residual coefficient magnitude values of residual coefficients of a transform unit (TU).
  • a prefix binary code is a binary value representation where every binary code-word has a unique prefix. Such a unique prefix allows a particular code-word to be distinguished from other code- words which is necessary to uniquely identify the values represented by the code-words. - 3 ! -
  • Each code- word of a parameterized Golomb-Rice code may consist of two parts: a parameterized truncated-Rice prefix part and possibly an empty order-O-exponential- Golomb suffix part.
  • the truncated-Rice prefix part depends on a parameter which may take values 0, 1, 2, 3, 4. For every value of the parameter there is defined a threshold. If the encoded value of residual coefficient remaining magnitude is less than the threshold then the value is encoded with a truncated-Rice code without an exponential-Golomb suffix.
  • a predetermined truncated-Rice code- word is encoded to indicate that the encoded value is equal to or greater than the threshold. Further, a value equal to the original encoded value minus the value of the threshold is encoded using an order-O-exponential-Golomb code.
  • Table 900 contains example truncated-Rice code-words for values 0 to 15 and parameter K values 0 and 1.
  • Table 1000 contains example order-O-exponential-Golomb code-words.
  • the value ten (10) will be represented with the truncated-Rice prefix "1 1 1 1 1 1 1 1” and order-O- exponential-Golomb suffix "1 10" forming Golomb-Rice code-word "1 1 11 1 1 1 1 1 10".
  • a Golomb-Rice code-word may be uniquely identified from a given binary sequence.
  • Every code-word of parameterized Golomb-Rice code has a fixed length which depends on the parameter K and the encoded value.
  • a limited number of code- words may have a given length.
  • some encoded values are represented with shorter code-words while other encoded values will be represented with longer code-words.
  • the code-words may be allocated to the encoded values so as to minimize a total length of all the code- words encoded into the bit- stream 113.
  • Different remaining residual coefficient magnitude values have a different frequency of appearance in the transform unit (TU) data.
  • a reduction of the total codeword length maybe achieved by assigning code-words to the encoded values so that the length of the code-word corresponds to the frequency of appearance of the encoded value. For example, more frequent values of residual coefficient remaining magnitude may be assigned shorter code-words, the values of residual coefficient remaining magnitude with the same frequency may be assigned code-words of the same length.
  • the parameter K of parameterized Golomb-Rice code allows the distribution of code-word length among the code-words to be controlled. The smaller values of the parameter K allocate more optimal code- words to values with smaller magnitudes while the larger values of the parameter K allocate more optimal code-words to values with larger magnitudes. Therefore, in order to allocate optimal code-words in general, the described methods determine the value of the parameter K. based on the frequency of appearance of a given value of residual coefficient remaining magnitude.
  • the true frequencies of the residual coefficient remaining magnitude values such as the values of the remaining residual coefficients magnitude are not known in advance so an estimation of the parameter K value is performed within a subset.
  • the encoder 100 and decoder 200 may be configured to use the same value of the parameter K to decode a particular code-word. As such, estimation of the frequency value is limited to the information available at the decoder 200.
  • the estimation of the frequency value may consist of two phases: initial estimation and adaptation.
  • the initial estimation phase provides an initial estimated value for the parameter .
  • the adaptation phase provides further corrections to the value of the parameter as values of the remaining residual coefficients magnitude are being decoded and more information becomes available for the analysis.
  • Initial estimation ensures more optimal code-word allocation.
  • the initial estimation is usually hard to implement in an efficient way as prior to decoding no information about the values of the remaining residual coefficients magnitude is available.
  • An efficient method of initially determining an estimation of the parameter may provide considerable improvements in coding efficiency.
  • a method 1250 of encoding a block of coeff_abs_level_remaining values of a subset of a transform unit (TU) will now be described with the reference to Fig.1 1 and Fig.12 A.
  • the method 1250 may be implemented as part of the entropy encoder module 104of the encoder 100.
  • the software code modules 102 to 1 12, 1 14 and 1 15 forming the encoder 100 are resident on the hard disk drive 310 and are controlled in their execution by the processor 305.
  • the method 1250 will be described by way of example with reference to the block 707 of coeff_abs_level_remaining values of Fig. 7.
  • the method 1250 encodes zero or more coeff_abs_level_remaining values into the block 707 of the stream portion501.
  • the method 1250 begins at initialization step 1251 , where the Golomb-Rice parameter K is initially estimated by the encoder module 104 under execution of the processor 305.
  • the initial value of may be stored in the memory 306.
  • the encoder module 104 determines necessity of the parameter adaptation during the encoding. ,
  • step 1257 if the encoder module 104 determines that adaptation is necessary, then the method 1250 proceeds to step 1252.
  • the adaption decision step 1257 will be described in more detail below. Otherwise, the method 1250 proceeds to step 1255.
  • step 1252 if the encoder module 104 determines that there are more coeff abs level remaining values to encode then the method 1250 proceeds to step 1253. Otherwise, the method 1250 concludes.
  • the encoder module 104 performs encoding of the Golomb- Rice code-word into the block 707 in accordance with the initial value of the Golomb-Rice parameter K as described above with reference to Tables 900 and 1000.
  • the encoder module 104 performs adaptation of the value of the parameter K to be used for encoding the next coeff_abs_level_remaining value.
  • the next value K n+ iof the parameter K is determined at step 1254 based on two parameters: the current value of the parameter n and a last decoded coeff_abs_level_remaining value.
  • Step 1254 may be determined using a look-up table 1 100 as shown in Fig. 1 1.
  • the look-up table 1 100 may be stored in the memory 306 and/or the hard disk drive 310.
  • the look-up table 1100 provides values for K Continue + i using the value K n as the column and the residual coefficient magnitude as the row. For example, if the current value of the parameter K is one (1) and the last decoded coeff_abs_Ievel ⁇ remaining value is twelve (12) then the next value of the parameter K is three (3).
  • step 1255 if the encoder module 104 determines that there are more coeff_abs_level_remaining values to encode, then the method 1250 proceeds to step 1256. Otherwise, the method 1250 concludes.
  • the encoder module 104 performs encoding of the Golomb- Rice code-word into the block 707 and stores the encoded Golomb-Rice code-word in the memory 306.
  • a method 1200 of decoding a block of coeff_abs_level_remaining values of a sub- set of a transform unit (TU) will now be described with the reference to Fig.1 1 and Fig.l2B.
  • the decoding is performed in accordance with the method 1200 using Golomb- Rice decoding.
  • the method 1200 may be implemented as part of the entropy decoder module 202 to 208 of the decoder 200.
  • the software code modules 202 to 208 and 210 forming the decoder 200 are resident on the hard disk drive 310 and are controlled in their execution by the processor 305.
  • the method 1200 will be described by way of example with reference to the block 707 of coeff_abs_level_remaining values of Fig. 7.
  • the method 1200 decodes zero or more coeff abs level remaining values (i.e., values of residual coefficient remaining magnitude) from the block 707 of the bit-stream portion 501.
  • the method 1200 begins at initialization step 1201, where a Golomb-Rice parameter K is initially determined by the decoder module 202 under execution of the processor 305. Also at step 1201, the decoder module 202 determines necessity of the parameter adaptation during the decoding. Step 1201 is the same as the step 1251.
  • step 1207 if the decoder module 202 determines that adaptation is necessary, as will be described below, then the method 1200 proceeds to step 1202. Otherwise, the method 1200 proceeds to step 1205.
  • step 1202 if the decoder module 202 determines that there are , more coeff_abs_level_remaining values to decode, then the method 1200 proceeds to step 1203. Otherwise, the method 1200 concludes.
  • the decoder module 202 performs decoding the Golomb-
  • the decoder module 202 performs adaptation of the value of the parameter to be used for Golomb-Rice decoding of the next coeff_abs_level_remaining value of the sub-set.
  • the procedure of adaptation performed at step 1204 is the same as used at step 1254 described above.
  • step 1205 if the decoder module 202determines that there are more coeff_abs_level_remaining values to decode, then the method 1200 proceeds to step 1206. Otherwise, the method 1200 concludes.
  • the decoder module 202 performs decoding of the Golomb- Rice code-word from the block 707 using Golomb-Rice decoding.
  • the decoded Golomb- Rice code- word may be stored in the memory 306.
  • Fig. 14A shows a coeff_abs_level_remaining binariser 1400.
  • the binariser module 1400 may be implemented using the computer system 300 where various functional modules 1414, 1413, 1406, 1407 and 1410 may be implemented by software executable within the computer system 300.
  • the binariser 1400 may be implemented by dedicated hardware within the computer system 300.
  • the binariser 1400 may be implemented by a combination of dedicated hardware and software executable within the computer system 300.
  • the binariser 1400 may be implemented as part of the decoder module 202 of the decoder 200. Alternatively, the binariser 1400 may also be implemented as part of the encoder module 104 of the decoder 100.
  • the binariser 1400 decodes remaining residual coefficient magnitude values for a sub-set of a transform unit (TU).
  • the binariser 1400 uses adaptive estimation of the parameter .
  • the binariser 1400 comprises an initial estimation of Ko module 1414 which performs initial estimation of the parameter K as described above.
  • a module 1413 decodes a remaining residual coefficient magnitude V 0 .
  • Module 1413 accepts input Golomb-Rice code-word 1402 and the initially estimated value 1401 of the parameter K. Once module 1413 completes decoding a decoded remaining residual coefficient magnitude value 1412 is output as seen in Fig. 14A.
  • Module 1406 performs adaptation of the parameter value based on the initially estimated value 1401 of the parameter and the value 1404 decoded by the module 1403 as described above.
  • Module 1407 decodes a remaining residual coefficient magnitude V
  • Module 1407 accepts as input a Golomb-Rice code- word 1403 and an estimated value 1405 of the parameter K. Once module 1407 completes decoding a decoded remaining residual coefficient magnitude value 1411 is output.
  • Module 1410 performs adaptation of the parameter K value based on the previous value 1405 of the parameter K and the value 1408 decoded by the module 1407.
  • Estimated value 1409 of the parameter K maybe used by next Golomb-Rice decoding and adaptation modules 141 .
  • Module 1410 depends on the data provided by the module 1407 which depends on the data provided by the module 1406 which depends on the data provided by the module 1413. As such, parallel execution of the decoding modules 1413 and 1410 is difficult. Further decoding and adaptation modules 1415 also depend both on input data 1416 as well as on previously estimated values of the parameter K. However, the adaptation steps such as steps 1406 and 1410 do not affect the actual value of , the parameter if the value of the parameter K is already optimal. Avoiding adaptation steps where it is redundant may improve decoding throughput without considerable impact on the coding efficiency.
  • Fig. 14B shows another coeff abs_level_remaining binariser 1450.
  • the binariser module 1450 may be implemented using the computer system 300 where various functional modules 1414, 1413, 1406, 1407 and 1410 may be implemented by software executable within the computer system 300.
  • the binariser 1450 may be implemented by dedicated hardware within the computer system 300.
  • the binariser 1450 may be implemented by a combination of dedicated hardware and software executable within the computer system 300.
  • the binariser 1450 may implemented as part of the decoder module 202 of the decoder 200. Alternatively, the binariser 1450 may also be implemented as part of the encoder module 104 of the decoder 100.
  • the binariser 1450 does not use adaptive estimation of the parameter K.
  • the binarizer 1450 achieves parallelism by decoding multiple residual coefficients per clock cycle.
  • Module 1458 performs initial estimation of the parameter K as described above.
  • Module 1454 decodes a remaining residual coefficient magnitude V 0 as described above.
  • Module 1454 then accepts input Golomb-Rice code-word 1452 and the initially estimated value 1451 of the parameter K.
  • Module 1456 decodes a remaining residual coefficient magnitude V ⁇ .
  • Module 1456 accepts as input a Golomb-Rice code-word 1453 and the initially estimated value 1451 of the parameter .
  • Further decoding modules 1460 will also accept their corresponding input Golomb- Rice code- words 1459 and the initially estimated value 1451 of the parameter .
  • Modules 1454, 1456 and all further decoder modules 1460 do not have any data dependencies and can be executed in parallel.
  • a method 1300 of determining a value of the parameter for decoding a block of coeff_abs_level_remaining values of a sub-set of a transform unit (TU) will now be described with the reference to Fig.13.
  • the method 1300 is used by both the encoder 100 and decoder 200 to guarantee correct decoding of data. As such, the method 1300 may be implemented as part of the entropy encoder modules 104 of the encoder 100. Further, the method 1300 may be implemented as part of the entropy decoder module 202 of the decoder 200.
  • the method 1300 will be described by way of example with reference to the decoder 200.
  • the method 1300 begins at step 1301 , where the decoder module 202, under execution of the processor 305, analyses previously decoded information for a current subset and previously decoded sub-sets of the transform unit (TU).
  • the previously decoded information for the current sub-set may be accessed from the memory 306. Step 1301 will be described in further detail below.
  • the decoder module 202 determines whether the decoding will use adaptation and determines a value for the parameter . Step 1302 will be described in further detail below.
  • the value of the parameter K estimated at step 1302 is assigned by the decoder module 202 to a variable configured within the memory 306 holding the parameter .
  • the method 1300 concludes.
  • step 1301 may analyse whether the number of non-zero residual coefficients in the current sub-set is greater than a predetermined threshold value T. If the number of non-zero (significant) residual coefficients is greater than the predetermined threshold then the parameter K is assigned an offset value K 0ffS et. The offset value will result in the parameter K having a non-zero value that is offset from zero by the value of Koff set . The value of K ⁇ ,ff S et may be as predetermined value and set to one (1 ). Otherwise, the parameter K is assigned a zero setting value 2er0 .
  • the threshold value T used to make the decision would be fourteen (14).
  • the offset value Koff Set of the parameter K would be one (1 ) and the zero setting value zer o would be zero (0).
  • the value of the quantization parameter Q and the index of the current subset I may be analysed at step 1301. In such an implementation, if the value of the quantization parameter Q is less than a predetermined threshold TQ and the value of the subset index I is less than a predetermined threshold I SU bset then the parameter K is assigned an offset value Koffset- Otherwise, the parameter is assigned a zero setting
  • the threshold value of the quantization parameter TQ used to make the decision would be ten (10) and the value of the subset index Isubset used to make the decision would be one (1).
  • the offset value Koffset of the parameter K would be one ( 1 ) and the zero setting value K zer0 would be zero (0).
  • the values of transform unit width and height may additionally be analysed at step 1301. In such an implementation, if the values of transform unit width and height are greater than predetermined thresholds T W idth and Theight then the parameter K is assigned an offset value ⁇ 0 ⁇ 3 ⁇ 4 ⁇ ⁇ ⁇ Otherwise, the parameter K is assigned a zero setting value ⁇ ⁇ 0
  • the threshold values of transform unit width and height T W idih and Theight used to make the decision would be eight (8) and eight (8).
  • the offset value K 0 ff se t of the parameter K would be one (1 ) and the zero setting value Kzero would be zero (0).
  • a decision about using adaptation during encoding or decoding of a sub-set maybe made at step 1302 based on the index of the sub-set. If the index is equal to or greater than a predetermined value l max then at step 1257 of encoder method 1250 and at step 1207 of decoder method 1200, the method proceeds to the step 1205 of decoder and step 1255 of encoder and does not use adaptation of the parameter K. Having a fixed Rice parameter K may be considered as dependency free Golomb-Rice encoding or decoding. Otherwise, the method proceeds to step 1202 of method 1200 and step 1252 of method 1250 and uses adaptation of the parameter K. Having an adaptive Rice parameter K may be considered as dependency based Golomb-Rice encoding or decoding.
  • HM_6.0 For the HEVC test model 6.0 ("HM_6.0"), the threshold value of the index I max would be six (6).
  • Fig. 15 shows an example transform unit 1500 where the threshold value six (6) of the index I max is used at step 1302 to make a decision about using adaptation during encoding or decoding of a subset. A backward diagonal scan pattern is assumed in the example of Fig. 15. Transform unit 1500 is split into sixteen subsets such as sub-set 1510. Every subset in Fig.
  • sub-sets marked with letter "A” indicate sub-sets that are encoded and decoded using adaptive Rice parameters R; while subsets marked with “F” indicate sub-sets using fixed Rice parameters R when using a threshold value of six (6) for the index I max at step 1302.
  • the value of six for the index I max results in the "A" sub-sets using adaptive Rice parameters R within the sub-set.
  • Sub-set marked with the letter “F” indicate sub-sets in positions in the TU 1500 where a threshold Value of six (6) for the index I max result in the sub-sets using a fixed Rice parameter.
  • the threshold value of index I max is the same for all of the sub-sets in the TU 1500, the location of the sub-set in the TU 1500 is compared to the threshold to determine if an adaptive Rice parameter is to be used for encoding and decoding.
  • the value of the threshold index is used to select a boundary between the adaptive and fixed sub-sets in fig. 15.
  • the sub-set order starts at zero (0) for the top left sub-set 1520 and proceeds in a reverse scan order with sub-set 1530 as one (1) and sub-set 1540 as sub-set two (2).
  • a decision about using adaptation during encoding or decoding of a sub-set maybe made at step 1302 based on a number G
  • a method does not apply to the case when there is no previously encoded or decoded sub-set.
  • step 1257 of encoder method 1250 the method 1250 proceeds to step 1255 of encoder method 1250 (or step 1205 of decoder method 1200) and does not use adaptation of the parameter R. Otherwise, the method 1250 proceeds to step 1252 of encoder method 1250 (or the method 1200 proceeds to step 1202 of decoder method 1200) and uses adaptation of the parameter R.
  • the threshold value of the index T 2 i would be four (4). .
  • the arrangements described are applicable to the computer and data processing industries and particularly for the digital signal processing for the encoding a decoding of signals such as video signals.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

La présente invention concerne un procédé de décodage d'une unité de transformation (par exemple, 400) de données vidéo codées en utilisant un décodage de Golomb-Rice. Des coefficients résiduels significatifs pour un sous-ensemble de l'unité de transformation sont déterminés. Un paramètre de Rice prédéterminé pour le décodage de Golomb-Rice du sous-ensemble de l'unité de transformation est sélectionné. Le paramètre de Rice prédéterminé étant décalé par rapport à un réglage à zéro lorsque le nombre déterminé de coefficients résiduels significatifs est supérieur à un seuil prédéterminé. Le sous-ensemble de l'unité de transformation est décodé en utilisant le paramètre de Rice prédéterminé en tant que paramètre initial pour le décodage de Golomb-Rice.
PCT/AU2013/000380 2012-04-13 2013-04-12 Procédé, appareil et système de codage et de décodage d'un sous-ensemble d'unités de transformation de données vidéo codées WO2013152401A1 (fr)

Priority Applications (10)

Application Number Priority Date Filing Date Title
ES13775550T ES2746961T3 (es) 2012-04-13 2013-04-12 Procedimiento, aparato y sistema para codificar y descodificar un subconjunto de unidades de transformación de datos de vídeo codificados
KR1020147025173A KR101818102B1 (ko) 2012-04-13 2013-04-12 인코딩된 비디오 데이터의 변환 유닛의 서브세트를 인코딩 및 디코딩하는 방법, 장치 및 시스템
US14/394,065 US10873761B2 (en) 2012-04-13 2013-04-12 Method, apparatus and system for encoding and decoding a subset of transform units of encoded video data
BR112014021436-0A BR112014021436B1 (pt) 2012-04-13 2013-04-12 Método e aparelho para codificar e decodificar um subconjunto de unidades de transformação de dados de vídeo codificados
EP13775550.0A EP2837185B1 (fr) 2012-04-13 2013-04-12 Procédé, appareil et système de codage et de décodage d'un sous-ensemble d'unités de transformation de données vidéo codées
PL13775550T PL2837185T3 (pl) 2012-04-13 2013-04-12 Sposób, aparat i system do kodowania i dekodowania podzbioru jednostek transformacji zakodowanych danych wideo
JP2015504820A JP2015516745A (ja) 2012-04-13 2013-04-12 符号化ビデオデータの変換単位のサブセットを符号化及び復号するための方法、装置及びシステム
CN201380019838.9A CN104221288A (zh) 2012-04-13 2013-04-12 对编码视频数据的变换单位的子集编码和解码的方法、设备和系统
RU2014141168A RU2014141168A (ru) 2012-04-13 2013-04-12 Способ, устройство и система для кодирования и декодирования поднабора единиц преобразования кодированных видеоданных
KR1020187000410A KR101974320B1 (ko) 2012-04-13 2013-04-12 비디오 데이터의 변환 유닛의 서브 블록을 인코딩 및 디코딩하는 방법, 장치 및 기록매체

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
AU2012202182A AU2012202182B2 (en) 2012-04-13 Method, apparatus and system for encoding and decoding a subset of transform units of encoded video data
AU2012202182 2012-04-13

Publications (1)

Publication Number Publication Date
WO2013152401A1 true WO2013152401A1 (fr) 2013-10-17

Family

ID=49326956

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/AU2013/000380 WO2013152401A1 (fr) 2012-04-13 2013-04-12 Procédé, appareil et système de codage et de décodage d'un sous-ensemble d'unités de transformation de données vidéo codées

Country Status (11)

Country Link
US (1) US10873761B2 (fr)
EP (1) EP2837185B1 (fr)
JP (2) JP2015516745A (fr)
KR (2) KR101974320B1 (fr)
CN (5) CN107071420B (fr)
AU (2) AU2016202272B2 (fr)
BR (1) BR112014021436B1 (fr)
ES (1) ES2746961T3 (fr)
PL (1) PL2837185T3 (fr)
RU (3) RU2014141168A (fr)
WO (1) WO2013152401A1 (fr)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104469366A (zh) * 2014-12-18 2015-03-25 中国科学院自动化研究所 一种0阶指数哥伦布码解码器及解码方法
US10979709B2 (en) 2016-10-14 2021-04-13 Industry Academy Cooperation Foundation Of Sejong University Image encoding method/device, image decoding method/device and recording medium having bitstream stored therein
EP3744093A4 (fr) * 2018-01-25 2022-01-26 LG Electronics Inc. Décodeur vidéo et son procédé de commande
GB2601184A (en) * 2020-11-23 2022-05-25 Sony Group Corp Image data encoding and decoding

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9978156B2 (en) * 2012-10-03 2018-05-22 Avago Technologies General Ip (Singapore) Pte. Ltd. High-throughput image and video compression
US9654777B2 (en) 2013-04-05 2017-05-16 Qualcomm Incorporated Determining palette indices in palette-based video coding
US9936200B2 (en) * 2013-04-12 2018-04-03 Qualcomm Incorporated Rice parameter update for coefficient level coding in video coding process
US9396249B1 (en) * 2013-06-19 2016-07-19 Amazon Technologies, Inc. Methods and systems for encoding parent-child map tile relationships
US9558567B2 (en) * 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
US10021419B2 (en) * 2013-07-12 2018-07-10 Qualcomm Incorported Rice parameter initialization for coefficient level coding in video coding process
KR20160102067A (ko) * 2013-12-30 2016-08-26 퀄컴 인코포레이티드 3d 비디오 코딩에서의 델타 dc 잔차 코딩의 단순화
CN106716999B (zh) * 2014-06-20 2019-08-09 寰发股份有限公司 用于视频编码的调色板预测器信令的方法
CN112272298B (zh) 2015-06-23 2023-07-18 联发科技(新加坡)私人有限公司 转换系数编解码的方法及装置
WO2017000222A1 (fr) * 2015-06-30 2017-01-05 Mediatek Singapore Pte. Ltd. Groupage de segments de dérivation et masquage de données de signe amélioré pour le codage résiduel
US20170311003A1 (en) * 2016-04-20 2017-10-26 Mediatek Inc. Method and apparatus for performing entropy encoding with sign data removal and associated method and apparatus for performing entropy decoding with sign data recovery
AU2016231584A1 (en) * 2016-09-22 2018-04-05 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data
WO2018070788A1 (fr) * 2016-10-14 2018-04-19 세종대학교 산학협력단 Procédé/dispositif de codage d'image, procédé/dispositif de décodage d'image, et support d'enregistrement sur lequel est stocké un flux binaire
CN108259896B (zh) * 2016-12-29 2021-10-08 四川大学 一种利用系数分布特性的哥伦布-莱斯初始参数自适应决策方法
JP7039815B2 (ja) * 2017-06-22 2022-03-23 ホアウェイ・テクノロジーズ・カンパニー・リミテッド フレーム内予測方法および装置
CN115442606A (zh) * 2017-07-31 2022-12-06 韩国电子通信研究院 对图像编码和解码的方法及存储比特流的计算机可读介质
KR20210002506A (ko) * 2018-05-02 2021-01-08 인터디지털 브이씨 홀딩스 인코포레이티드 비디오의 인코딩 및 디코딩
TWI714153B (zh) * 2018-06-29 2020-12-21 大陸商北京字節跳動網絡技術有限公司 零單元的定義
US11336918B2 (en) 2018-09-05 2022-05-17 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
WO2020101321A1 (fr) * 2018-11-12 2020-05-22 엘지전자 주식회사 Procédé de codage de coefficient de transformation sur la base de la mise à zéro à haute fréquence et appareil à cet effet
US10904548B2 (en) 2018-12-06 2021-01-26 Qualcomm Incorporated Coefficient processing for video encoding and decoding
US11632557B2 (en) 2019-01-01 2023-04-18 Lg Electronics Inc. Method and device for decoding video using residual sign related information in video coding system
US11134273B2 (en) * 2019-02-14 2021-09-28 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
US10939107B2 (en) * 2019-03-01 2021-03-02 Sony Corporation Embedded codec circuitry for sub-block based allocation of refinement bits
CN113728627B (zh) * 2019-04-26 2023-09-19 北京字节跳动网络技术有限公司 用于环路内重构的参数的预测
CN112118456B (zh) * 2019-06-20 2022-03-25 腾讯美国有限责任公司 莱斯参数选择方法、装置、计算机设备及存储介质
KR20220024500A (ko) 2019-07-12 2022-03-03 엘지전자 주식회사 변환에 기반한 영상 코딩 방법 및 그 장치
US11677984B2 (en) * 2019-08-20 2023-06-13 Qualcomm Incorporated Low-frequency non-separable transform (LFNST) signaling
KR20220038121A (ko) * 2019-08-23 2022-03-25 엘지전자 주식회사 비디오/영상 코딩 시스템에서 라이스 파라미터 도출 방법 및 장치
US11265536B2 (en) * 2019-09-23 2022-03-01 Tencent America LLC Method to extend the range of rice parameter for residual coding in transform skip mode
US11470334B2 (en) * 2019-09-23 2022-10-11 Qualcomm Incorporated Rice parameter derivation for lossless/lossy coding modes for video coding
US20240080480A1 (en) * 2019-10-07 2024-03-07 Lg Electronics Inc. Entropy coding method and device in video/image coding system
WO2021071187A1 (fr) * 2019-10-07 2021-04-15 엘지전자 주식회사 Procédé et appareil pour dériver un paramètre rice dans un système de codage vidéo/image
US11336891B2 (en) * 2019-11-25 2022-05-17 Tencent America LLC Coding method and system with improved transform domain coefficient computation
US11368715B2 (en) * 2019-12-27 2022-06-21 Qualcomm Incorporated Block-based delta pulse code modulation for video coding
CN116668695B (zh) * 2020-09-23 2024-03-26 北京达佳互联信息技术有限公司 用于视频编码的方法、计算设备和存储介质
US20240137535A1 (en) * 2021-02-25 2024-04-25 Kt Corporation Method for encoding/decoding a video signal and recording medium storing a data stream generated by the encoding method
CN113315968B (zh) * 2021-07-29 2021-12-03 杭州博雅鸿图视频技术有限公司 提高码率计算效率的电路设计方法、装置、设备及介质
CN117354534B (zh) * 2023-12-04 2024-02-02 上海方诚光电科技有限公司 一种自适应图像无损压缩方法、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060171465A1 (en) * 2001-06-29 2006-08-03 Kadayam Thyagarajan DCT compression using Golomb-Rice coding
US20110248873A1 (en) * 2010-04-09 2011-10-13 Qualcomm Incorporated Variable length codes for coding of video data

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0940994B1 (fr) * 1998-03-06 2014-04-16 Canon Kabushiki Kaisha Appareil et méthode de traitement d'image, et support d'enregistrement stockant des étapes mettant en oeuvre cette méthode
JP2000115783A (ja) * 1998-10-06 2000-04-21 Canon Inc 復号化装置及び方法
JP4181699B2 (ja) 1999-07-27 2008-11-19 キヤノン株式会社 符号化装置及び方法及び記憶媒体
CN100566419C (zh) * 2001-07-02 2009-12-02 高通股份有限公司 以无损的方式编码数字图像数据的设备和方法
US7689051B2 (en) * 2004-04-15 2010-03-30 Microsoft Corporation Predictive lossless coding of images and video
US6987468B1 (en) 2004-10-29 2006-01-17 Microsoft Corporation Lossless adaptive encoding and decoding of integer data
US7580585B2 (en) 2004-10-29 2009-08-25 Microsoft Corporation Lossless adaptive Golomb/Rice encoding and decoding of integer data using backward-adaptive rules
JP4427003B2 (ja) * 2005-05-23 2010-03-03 オリンパスイメージング株式会社 データ符号化装置、データ復号化装置、データ符号化方法、データ復号化方法、プログラム
DE102007017254B4 (de) 2006-11-16 2009-06-25 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung zum Kodieren und Dekodieren
US8229234B2 (en) * 2006-11-24 2012-07-24 Nec Corporation Coding and decoding device, coding and decoding method and program
US7486211B2 (en) * 2007-04-13 2009-02-03 Apple Inc. Method and system for entropy coding
WO2009044346A1 (fr) 2007-10-05 2009-04-09 Nokia Corporation Système et procédé pour combiner un codage de golomb adaptatif avec une quantification à débit fixe
WO2009150808A1 (fr) * 2008-06-10 2009-12-17 パナソニック株式会社 Dispositif de décodage d’image et dispositif de codage d’image
CN102282770B (zh) * 2009-01-23 2014-04-16 日本电信电话株式会社 一种参数选择方法、参数选择装置
WO2011013192A1 (fr) * 2009-07-27 2011-02-03 株式会社東芝 Procédé de codage d’image et procédé de décodage d’image
WO2012025215A1 (fr) 2010-08-23 2012-03-01 Panasonic Corporation Codes de golomb adaptatifs pour coder des coefficients de filtre
CN102238387B (zh) * 2011-05-25 2017-07-18 深圳市云宙多媒体技术有限公司 一种视频熵编码、熵解码方法、装置
CN102368385B (zh) * 2011-09-07 2013-08-14 中科开元信息技术(北京)有限公司 后向块自适应Golomb-Rice编解码方法及装置
US9743116B2 (en) 2012-01-19 2017-08-22 Huawei Technologies Co., Ltd. High throughput coding for CABAC in HEVC
US9635358B2 (en) * 2012-01-21 2017-04-25 Google Technology Holdings LLC Method of determining binary codewords for transform coefficients

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060171465A1 (en) * 2001-06-29 2006-08-03 Kadayam Thyagarajan DCT compression using Golomb-Rice coding
US20110248873A1 (en) * 2010-04-09 2011-10-13 Qualcomm Incorporated Variable length codes for coding of video data

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2837185A4 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104469366A (zh) * 2014-12-18 2015-03-25 中国科学院自动化研究所 一种0阶指数哥伦布码解码器及解码方法
CN104469366B (zh) * 2014-12-18 2017-10-03 中国科学院自动化研究所 一种0阶指数哥伦布码解码器及解码方法
US10979709B2 (en) 2016-10-14 2021-04-13 Industry Academy Cooperation Foundation Of Sejong University Image encoding method/device, image decoding method/device and recording medium having bitstream stored therein
US11659174B2 (en) 2016-10-14 2023-05-23 Industry Academy Cooperation Foundation Of Sejong University Image encoding method/device, image decoding method/device and recording medium having bitstream stored therein
EP3744093A4 (fr) * 2018-01-25 2022-01-26 LG Electronics Inc. Décodeur vidéo et son procédé de commande
GB2601184A (en) * 2020-11-23 2022-05-25 Sony Group Corp Image data encoding and decoding

Also Published As

Publication number Publication date
CN106851277A (zh) 2017-06-13
RU2014141168A (ru) 2016-06-10
EP2837185A4 (fr) 2016-03-16
EP2837185B1 (fr) 2019-09-04
AU2016202272B2 (en) 2017-09-28
JP2015516745A (ja) 2015-06-11
CN107071420B (zh) 2021-07-16
ES2746961T3 (es) 2020-03-09
RU2634214C1 (ru) 2017-10-24
PL2837185T3 (pl) 2020-03-31
US20150078443A1 (en) 2015-03-19
AU2012202182A1 (en) 2013-10-31
KR101974320B1 (ko) 2019-04-30
BR112014021436B1 (pt) 2023-03-07
CN107105247B (zh) 2021-05-07
AU2017279640B2 (en) 2019-08-01
JP6465955B2 (ja) 2019-02-06
KR101818102B1 (ko) 2018-01-12
BR112014021436A2 (fr) 2017-06-20
CN107105248A (zh) 2017-08-29
AU2017279640A1 (en) 2018-01-18
EP2837185A1 (fr) 2015-02-18
CN107071420A (zh) 2017-08-18
CN106851277B (zh) 2021-05-07
KR20180006495A (ko) 2018-01-17
CN107105247A (zh) 2017-08-29
CN107105248B (zh) 2021-05-07
CN104221288A (zh) 2014-12-17
US10873761B2 (en) 2020-12-22
RU2667715C1 (ru) 2018-09-24
KR20140126370A (ko) 2014-10-30
JP2018078625A (ja) 2018-05-17

Similar Documents

Publication Publication Date Title
AU2017279640B2 (en) Method, apparatus and system for encoding and decoding a subset of transform units of encoded video data
AU2018271348B2 (en) Method, apparatus and system for encoding and decoding the significance map for residual coefficients of a transform unit
EP2805485B1 (fr) Procédé, appareil et système de codage et de décodage de mode d'intraprédiction

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13775550

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 20147025173

Country of ref document: KR

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2015504820

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14394065

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

REG Reference to national code

Ref country code: BR

Ref legal event code: B01A

Ref document number: 112014021436

Country of ref document: BR

WWE Wipo information: entry into national phase

Ref document number: 2013775550

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2014141168

Country of ref document: RU

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 112014021436

Country of ref document: BR

Kind code of ref document: A2

Effective date: 20140828