WO2013074042A1 - Method and an apparatus for coding an intra prediction mode - Google Patents

Method and an apparatus for coding an intra prediction mode Download PDF

Info

Publication number
WO2013074042A1
WO2013074042A1 PCT/SG2012/000433 SG2012000433W WO2013074042A1 WO 2013074042 A1 WO2013074042 A1 WO 2013074042A1 SG 2012000433 W SG2012000433 W SG 2012000433W WO 2013074042 A1 WO2013074042 A1 WO 2013074042A1
Authority
WO
WIPO (PCT)
Prior art keywords
mode
intra prediction
block
prediction mode
coding
Prior art date
Application number
PCT/SG2012/000433
Other languages
French (fr)
Inventor
Chuohao Yeo
Yih Han Tan
Zhengguo Li
Hui Li TAN
Original Assignee
Agency For Science, Technology And Research
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
Application filed by Agency For Science, Technology And Research filed Critical Agency For Science, Technology And Research
Publication of WO2013074042A1 publication Critical patent/WO2013074042A1/en

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/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • 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
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Definitions

  • Various embodiments relate to the field of coding intra prediction modes.
  • Intra-frame coding is used to compress frames without any temporal dependencies, that is to say, intra-frame coding is performed using a single frame or image.
  • FIG. 1 shows a schematic diagram illustrating the directional intra prediction modes, i.e, the Vertical+x and Horizontal+x intra prediction modes.
  • the term "Vertical” and “Horizontal” with respect to intra prediction modes may be denoted a "Ver” and "Hor”, respectively.
  • Direct current (DC) prediction mode refers to a special prediction mode, where the mean of the upper and left samples are used to predict the entire block. Generally, DC prediction mode is useful for blocks with little or no local activities. Planar prediction mode uses a linear function between the neighboring samples to the left and to the top in order to predict the current samples.
  • the Hor+6 mode is not available, even though the intent of the design seems to be to include all the even (i.e. Ver+2x and Hor+2x) directional prediction modes.
  • CABAC context- adaptive binary arithmetic code
  • CAVLC context-adaptive variable length code
  • the present invention relates to a method of coding an intra prediction mode.
  • the method includes providing a type flag indicating an intra prediction mode for a block of a frame of a video sequence; providing further data to be coded; and coding the further data using an adaptive context of a context-adaptive binary arithmetic code entropy coder and coding the type flag based on an equal probability distribution independent from the adaptive context.
  • the present invention relates to a method of coding an intra prediction mode.
  • the method includes determining a candidate for an intra prediction mode for a block of a frame of a video sequence; and generating an input string for an encoder, the encoder being configured to encode the frame, wherein the input string includes an occurrence flag indicating whether the intra prediction mode for the block is a predefined mode that is not the candidate.
  • the present invention relates to an apparatus for coding an intra prediction mode.
  • the apparatus includes a flag provider configured to provide a type flag indicating an intra prediction mode for a block of a frame of a video sequence; a data provider configured to provide further data to be coded; and an encoder configured to code the further data using an adaptive context of a context-adaptive binary arithmetic code entropy coder and to code the type flag based on an equal probability distribution independent from the adaptive context.
  • the present invention relates to an apparatus for coding an intra prediction mode.
  • the apparatus includes a determiner configured to determine a candidate for an intra prediction mode for a block of a frame of a video sequence; and a string generator configured to generate an input string for an encoder, the encoder being configured to encode the frame, wherein the input string includes an occurrence flag indicating whether the intra prediction mode for the block is a predefined mode that is not the candidate.
  • FIG. 1 shows a schematic diagram illustrating the directional intra prediction modes
  • FIG. 2 shows a simplified schematic diagram of an encoder system
  • FIG. 3 shows a flow diagram illustrating a method for coding an intra prediction mode, in accordance to various embodiments
  • FIG. 4 shows an exemplary schematic representation of the relationship between a block and a video sequence, in accordance to various embodiments
  • FIG. 5 shows a schematic diagram of a source block and two neighbouring blocks, in accordance to various embodiments
  • FIG. 6 shows a flow diagram illustrating another method for coding an intra prediction mode, in accordance to various embodiments
  • FIG. 7 shows a schematic block diagram of an apparatus for coding an intra prediction mode, in accordance to various embodiments
  • FIG. 8 shows a schematic block diagram of another apparatus for coding an intra prediction mode, in accordance to various embodiments.
  • FIG. 9 shows an exemplary decoding tree for coding an intra prediction mode, in accordance to various embodiments.
  • FIG. 10 shows another exemplary decoding tree for coding an intra prediction mode, in accordance to various embodiments.
  • FIG. 11 shows yet another exemplary decoding tree for coding an intra prediction mode, in accordance to various embodiments.
  • Various embodiments may provide a method for coding intra prediction mode.
  • Various embodiments may provide a method for coding intra prediction mode that is applicable to the High-Efficiency Video Coding (HEVC).
  • CABAC context-adaptive binary arithmetic code
  • the method may replace the current variable length code (VLC) table with a simple combination of unary coding and fixed length code (FLC) as well as allow the use of the full set of intra prediction modes available for 4x4 blocks while maintaining similar coding performance.
  • VLC current variable length code
  • FLC fixed length code
  • a method for coding intra prediction mode may be provided that simplifies the method used in, for example, HEVC WD4 for both CABAC and CALVC entropy coding. Simplification of the coding of the intra prediction mode does not compromise coding performance. In fact, such simplification has insignificant impact on coding performance.
  • FIG. 2 shows a simplified schematic diagram of an encoder system 200 for encoding an image 202 made up of source pixels 204 and reference pixels 206.
  • the reference pixels 206 are used to generate a prediction 208 for the source pixels 204.
  • the intra prediction 208 is then applied to the source pixels 204 at 210 prior to coding by an entropy coder 212 to form a resultant bitstream 21 .
  • Various embodiments may provide methods and apparatus for coding an intra prediction mode.
  • the intra prediction mode of a block (or may be referred to as a source block)
  • the intra prediction mode for the source block is first determined.
  • the intra prediction mode for the source block may be any one of two (or three) most probable modes (MPM) that are determined using two neighouring blocks of the source block or any one of the remaining modes that is not any of the MPM. If the intra prediction mode is a MPM, then coding the intra prediction mode may simply be indicated by a binary represention (e.g. using a coded flag).
  • the intra prediction mode is not a MPM
  • further queries or checks requiring binarized replies may be implemented using other flags so as to further simplify the coding of the intra prediction mode (e.g., to enable the use of shorter bit representation for the coding).
  • the apparatus for coding an intra prediction mode may include a memory which is for example used in the processing carried out by the apparatus.
  • a memory used in the embodiments may be a volatile memory, for example a DRAM (Dynamic Random Access Memory) or a non-volatile memory, for example a PROM (Programmable Read Only Memory), an EPROM (Erasable PROM), EEPROM (Electrically Erasable PROM), or a flash memory, e.g., a floating gate memory, a charge trapping memory, an MRAM (Magnetoresistive Random Access Memory) or a PCRAM (Phase Change Random Access Memory).
  • DRAM Dynamic Random Access Memory
  • PROM Programmable Read Only Memory
  • EPROM Erasable PROM
  • EEPROM Electrical Erasable PROM
  • flash memory e.g., a floating gate memory, a charge trapping memory, an MRAM (Magnetoresistive Random Access Memory) or a PCRAM (Phase Change Random Access Memory).
  • a “circuit” may be understood as any kind of a logic implementing entity, which may be special potpose circuitry or a processor executing software stored in a memory, firmware, or any combination thereof.
  • a “circuit” may be a hard-wired logic circuit or a programmable logic circuit such as a programmable processor, e.g. a microprocessor (e.g. a Complex Instruction Set Computer (CISC) processor or a Reduced Instruction Set Computer (RISC) processor).
  • a “circuit” may also be a processor executing software, e.g. any kind of computer program, e.g. a computer program using a virtual machine code such as e.g. Java. Any other kind of implementation of the respective functions which will be described in more detail below may also be understood as a "circuit” in accordance with an alternative embodiment.
  • a method of coding an intra prediction mode 300 is provided as shown in FIG. 3.
  • a type flag indicating an intra prediction mode for a block of a frame of a video sequence is provided.
  • further data to be coded is provided.
  • the further data is coded using an adaptive context of a context- adaptive binary arithmetic code entropy coder and the type flag is coded based on an equal probability distribution independent from the adaptive context.
  • a block 400 may include pixels and forms part of a largest coding unit (LCU), a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU) or a transform unit (TU) 402, which is in turn part of a slice 404 taken from an image or a frame 406 of a video sequence 408.
  • LCU largest coding unit
  • CTU coding tree unit
  • CU coding unit
  • PU prediction unit
  • TU transform unit
  • An intra prediction mode which is a type of prediction mode may be applied to the block 400.
  • the intra prediction mode generally involves manipulating information that is contained only within a current frame (spatially), and not relative to any other frame in a video sequence (temporally).
  • the intra-prediction may be in a form of a luma prediction or a chroma prediction, representing the lurriinence level and the colour, respectively.
  • the intra-prediction may be selected from a group consisting of a 64x64 luma prediction, a 32x32 luma prediction, a 32x32 chroma prediction, a 16x16 luma prediction, a 16x16 chroma prediction, a 8x8 luma prediction, a 8x8 chroma prediction, a 4x4 luma prediction, and a 4x4 chroma prediction.
  • n x n refers to prediction block size.
  • the intra-prediction mode includes a directional intra- prediction mode or a DC intra-prediction mode or a Planar intra-prediction mode.
  • FIG. 1 shows an exemplary illustration of intra-prediction modes with the boundaries such as "Hor+8", “Hor-7", “Ver-8” and “Ver+8", and mid-points such as “Hor” and "Ver”.
  • Other directional intra-prediction modes may be spatially distributed between the boundaries and may be denoted by "Ver + x", “Ver - x", “Hor + x" and "Hor - x" where x is an offset of 1, or 2, or 3, ....
  • the spatial distribution of these other directional intra-prediction modes may be substantially even.
  • Each directional intra-prediction mode for example, "Ver+8" may be spaced about 45° with respect to “Ver” when taken as a reference. As another example, “Ver+4" may be spaced about 22.5° with respect to “Ver” when taken as a reference.
  • coding generally refer to a form of cryptogram or a representation. Generally, coding is used to compress digital data.
  • encoding may be interchangably referred to as "coding”.
  • the "flag” may be an indication or an identifier or a signal.
  • a flag may be represented by a bit or a group of bits.
  • the flag may be used indicate status, for example a "1" flag may indicate a status, while a "0" flag may represent a complementary status.
  • the flag sets at "1” may imply a TRUE statement in response to an enquiry.
  • the flag sets at "0” may imply a FALSE statement in response to the enquiry.
  • the type flag may be set to "1" indicating that the intra prediction mode is a most probable mode (MPM); and the type flag may be set to "0" indicating that the intra prediction mode is another MPM.
  • MPM most probable mode
  • further data refers to information or data that is not a flag or symbol representing an intra prediction mode or a coding of the intra prediction mode.
  • the information is fed to the entropy coder for coding.
  • further data may refer to image data from the block of the frame.
  • Coding using "adaptive context” refers to coding based on multiple probability modes for different contexts.
  • a context modeling estimating conditional probabilities of the coding symbols may be provided.
  • previous context may be used.
  • equal probability distribution refers to a 50%-50% distribution. For example, if there is a 50% chance that a bit pattern may be a "11" and a 50% chance that the bit pattern may be a "00", equal probability distribution is observed for the bit pattern.
  • CABAC context-adaptive binary arithmetic code entropy coder
  • the context is removed for coding. In other words, the bit pattern may be coded in bypass mode where the context is disregarded for probability distribution. This is as opposed to the concept of adaptive context.
  • the "equal probability distribution independent from the adaptive context” refers to coding of a bit or symbol in the bypass mode and not during an initialization process for the CABAC.
  • the probabilities may be initialized at a 50%-50% distribution (for using the adaptive context). It should be appreciated and understood that this initialization process in using adaptive context is not the same as "equal probability distribution independent from the adaptive context”.
  • the intra prediction mode for the block may be determined using a neighbouring block of the block.
  • a neighouring block may generally be a block 400 of FIG. 4.
  • the neighbouring block may be abutting the block.
  • a neighbouring block may include a block left to the (source) block or a block above the (source) block.
  • a neighbouring block may also refer to a plurality of neighbouring blocks.
  • two neighbouring blocks may include a first block left to the source block and a second block above the source block.
  • the intra prediction mode for the block may be an intra prediction mode used by the neighbouring block if it has been determined that the neighbouring block is intra coded and is positioned within the frame.
  • the intra prediction mode for the block is a planar prediction mode or a DC prediction mode if it has been determined that the neighbouring block is positioned outside the frame, or is not intra-coded.
  • an intra prediction mode may be coded as described below.
  • Up to two most probable modes (MPM) for the source block 500 may be derived from neighboring left (L) and above (A) blocks 502, 504, as shown in FIG. 5.
  • the source block 500 may refer to a block 400 of FIG. 4.
  • the most probable mode candidates may be the intra prediction mode used by A 502 and L 504.
  • the two MPM may not be found when:
  • a 502 and/or L 504 are not intra coded, and/or
  • a 502 and/or L 504 are in a different slice or outside the image boundaries, and/or
  • a 502 and L 504 have the same intra prediction mode.
  • the Planar mode and the DC mode may be inserted in that order until two MPMs are derived. Therefore, there are always two MPM candidates.
  • up to three most probable modes (MPM) for the source block 500 may be derived from neighboring left (L) and above (A) blocks 502, 504, as shown in FIG. 5.
  • the source block 500 may refer to a block 400 of FIG. 4.
  • the most probable mode candidates may be the intra prediction mode used by A 502 and L 504 or derived from them.
  • the three MPM may not be found when:
  • a 502 and/or L 504 are not intra coded, and/or
  • a 502 and/or L 504 are in a different slice or outside the image boundaries, and/or
  • a 502 and L 504 have the same intra prediction mode.
  • the Planar mode, the DC mode and the Ver mode may be inserted in that order until three MPMs are derived. Therefore, there are always three MPM candidates.
  • coding the type flag at 306 may include coding the type flag using bits when a context-adaptive variable length code entropy coder is used.
  • entropy coding is a type of lossless coding to compress digital data by representing frequently occurring patterns with few bits and rarely occurring patterns with more bits.
  • CABAC Context-based Adaptive Binary Arithmetic Coder
  • CAVLC Context Adaptive Variable Length Coding
  • encoding may use an arithmetic coding based CABAC, or a variable length coding based CAVLC.
  • a method of coding an intra prediction mode 600 may be provided as shown in FIG. 6.
  • a candidate for an intra prediction mode for a block of a frame of a video sequence may be determined.
  • an input string for an encoder may be generated.
  • the encoder may be configured to encode the frame.
  • the input string may include an occurrence flag indicating whether the intra prediction mode for the block is a predefined mode that is not the candidate.
  • the "occurrence flag” may be similar to a flag as defined above.
  • the term "candidate for an intra prediction mode" refers to a potential intra prediction mode that may be used as the actual or eventual intra prediction mode for the block. However, it may also be possible that this candidate for the intra prediction mode may not be the eventual intra prediction mode for the block.
  • the predefined mode may be an intra prediction mode that occurs more often than another intra prediction mode that is not the candidate. It should be appreciated that the predefined mode may be determined based on other characteristics. For example, the predefined mode may be defined by its mode value such as an intra prediction mode having the largest mode value (e.g., Mode 34). In another example, the predefined mode may be defined by a direction such as an "Ver" intra prediction mode. [0066] The term "generating" may generally refer but not limited to forming, determining or outputing.
  • the method 600 may further include coding the occurrence flag using an adaptive context of a context-adaptive binary arithmetic code (CAB AC) entropy coder or using bits when a context-adaptive variable length code (CAVLC) entropy coder is used.
  • CAB AC context-adaptive binary arithmetic code
  • CAVLC context-adaptive variable length code
  • the method 600 may further include providing further data to be coded; coding the further data using an adaptive context of a context- adaptive binary arithmetic code entropy coder and coding the occurrence flag based on an equal probability distribution independent from the adaptive context.
  • the occurrence flag may be coded in bypass mode.
  • adaptive context equal probability distribution
  • entropy coder coding
  • intra prediction mode equal probability distribution
  • the input string may further include an occurrence symbol indicating the intra prediction mode for the block, that is not the predefined mode, if it has been determined that the occurrence flag indicates that the intra prediction mode for the block is not the predefined mode.
  • symbol may represent a variable with semantic meanings.
  • a preset mode value associating to the intra prediction mode for the block may be set at a mode value of the predefined mode.
  • the preset mode value associating to the intra prediction mode for the block may be set at a mode value of another intra prediction mode incremented by 1, wherein the other intra prediction mode is not the predefined mode.
  • mode value refers to a numerical representation assigned to each intra prediction mode.
  • the mode value "Mode 0" may be used to indicate the DC prediction mode
  • “Mode 1” may be used to indicate the Planar prediction mode
  • “Mode 2” may be used to indicate “Ver” prediction mode
  • “Mode 3” may be used to indicated “Hor” prediction mode
  • “Mode 4" may be used to indicated “Ver+8”, and this form of assignment is performed for all 35 intra prediction modes.
  • the mode value "Mode 0" may be used to indicate the Planar prediction mode
  • “Mode 1” may be used to indicate the DC prediction mode
  • “Mode 2” may be used to indicate “Hor+8” prediction mode
  • “Mode 3” may be used to indicated “Hor+7” prediction mode
  • “Mode 4" may be used to indicated “Hor+6”, and this form of assignment is performed for all 35 intra prediction modes.
  • the term "assignment” may generally refer to allocation or allotment upon satisfying certain requirements or conditions.
  • an algorithm may be used for assignment.
  • the algorithm may be realized by a computer program (e.g., machine codes or JavaScript programs) or by firmware (e.g., a hard- wired circuit of logic implementation).
  • the algorithm may depend on a set of conditions or may controlled by human intervention, for example, a status overwrite.
  • the candidate may include two modes having a first mode value and a second mode value respectively, wherein the first mode .value is less than the second mode value; and wherein the occurrence symbol may indicate the preset mode value if it has been determined that the preset mode value is less than the first mode value; or the preset mode value incremented by 1 if it has been determined that the preset mode value is more than or equal to the first mode value but less than the second mode value decremented by 1 ; or the preset mode value incremented by 2 if it has been determined that the preset mode value is more than or equal to the second mode value decremented by l.
  • the preset mode value may be associated with a Planar intra prediction mode; the preset mode value incremented by 1 may be associated with a DC intra prediction mode; and the preset mode value incremented by 2 may be associated with a Ver intra prediction mode.
  • the method 600 may further include coding the occurrence symbol using a fixed-length code (FLC).
  • FLC fixed-length code
  • the occurrence symbol may be coded using a fixed-length code.
  • the occurrence symbol may be inferred to be 0 and therefore no further bits need to be coded.
  • the occurrence symbol may be inferred to be 0 because out of the 4 modes available for a 64x64 block, 2 of these modes may be used as MPM, and another one mode may be used as the predefined mode, which leaves only a last mode being indicated in the occurrence symbol; thereby not needing further bits to be coded.
  • the occurrence symbol may be coded using a FLC.
  • the FLC may be a 5-bit FLC.
  • the method 600 may further include coding the occurrence symbol based on an equal probability distribution independent from the adaptive context of the context-adaptive binary arithmetic code entropy coder. In other words, the method 600 may further include coding the occurrence symbol in bypass mode.
  • the intra prediction mode for the block may be one of 35 luma intra prediction modes for a high-efficiency video coding standard.
  • the block may be selected from a group consisting of a 4x4 block, a 8x8 block, a 16x16 block, a 32x32 block, and a 64x64 block.
  • the method 600 may further include coding a mode symbol, depending on the size of the (source) block, using a fixed-length-code (FLC) or an adaption context when the encoder is a CABAC entropy coder.
  • the mode symbol may be coded in bypass mode.
  • a mode symbol indicates which one of the intra prediction modes that is not any of the two MPM the intra prediction mode for the (source block) is if it has been determined that a mode flag indicates that the intra prediction mode is not any of the two MPM.
  • the mode flag may be implemented as a prior conditional check to the type flag.
  • the mode flag may be prev_intra_luma_pred_flag and the mode symbol may be rem_intra_luma_pred_mode as denoted, for example, in FIG. 9.
  • the Ver intra prediction mode which is not any of the 2 MPM, may be indicated in the mode symbol (as a first remaining mode).
  • an ordered list may be ("Planar”, “DC”, "Ver” ⁇ .
  • the method 600 may further include coding the mode symbol, depending on the size of the source block, using a fixed-length-code (FLC) alone or in combination with unary coding, or a variable-length-code (VLC) when the encoder is a CAVLC entropy coder.
  • FLC fixed-length-code
  • VLC variable-length-code
  • generating the input string may further include dividing the intra prediction modes that are not any of the two MPM into a first group and a second group, wherein the input string may further include a grouping flag indicating whether the intra prediction mode for the source block belongs to the first group or the second group.
  • dividing may refer but is not limited to assigning, alloting, arranging, or categorizing.
  • the first group may include the intra prediction modes that are not any of the two MPM in a first range of [1, 2 ⁇ " '], and the second group may include the intra prediction modes that are not any of the two MPM at Mode 0 and in a second range ⁇ [1+2 ⁇ , 2 N ], N being the number of intra prediction modes that are not any of the two MPM.
  • the input string may further include a grouping symbol indicating which one of the intra prediction modes in the first group the intra prediction mode for the source block is and setting a first mode value associating to the intra prediction mode for the source block at the mode value of the one of the intra prediction modes incremented by 1 if it has been determined that the grouping flag indicates that the intra prediction mode for the source block belongs to the first group.
  • the input string may further include a grouping symbol indicating which one of the intra prediction modes in the second group the intra prediction mode for the source block is if it has been determined that the occurrence flag indicates that the one of the intra prediction modes in the second group occurs more often than the other one of the intra prediction modes in the second group.
  • a first mode value associating to the intra prediction mode for the source block may be set at the mode value of the one of the intra prediction modes incremented by (l+2 N ).
  • a first mode value associating to the intra prediction mode for the source block may be set at the mode value of the other one of the intra prediction modes.
  • the grouping symbol may indicate the first mode value associating to the intra prediction mode for the source block if it has been determined that the first mode value is less than the lower value of the two MPM; or a second mode value associating to the intra prediction mode for the (source) block if it has been determined that the second mode value is more than or equal to the lower value of the two MPM but less than the higher value of the two MPM decremented by 1 ; or a third mode value associating to the intra prediction mode for the source block if it has been determined that the third mode value is more than or equal to the higher value of the two MPM decremented by 1 , wherein the second mode value is the first mode value incremented by 1 ; and wherein the third mode value is the first mode value incremented by 2.
  • the method 600 may further include coding the grouping flag and the grouping symbol, depending on the size of the source block, using FLCs or adaption contexts when the encoder is a CAB AC entropy coder or using a combination of unary coding and FLCs when the encoder is a CAVLC entropy coder.
  • an apparatus for coding an intra prediction mode may be provided as shown in FIG. 7.
  • the apparatus 700 may include a flag provider 702 configured to provide a type flag indicating an intra prediction mode for a block of a frame of a video sequence; a data provider 704 configured to provide further data to be coded; and an encoder 706 (or may be referred to as an encoding circuit) configured to code the further data using an adaptive context of a context-adaptive binary arithmetic code entropy coder and to code the type flag based on an equal probability distribution independent from the adaptive context.
  • the terms "intra prediction mode", "code”, “block”, “adaptive context”, “equal probability distribution", and "flag" may be defined as above.
  • the intra prediction mode for the (source) block may be determined using a neighbouring block of the block.
  • the neighbouring block may refer to two neighbouring blocks which may include a first block left to the source block and a second block above the source block.
  • the intra prediction mode for the block may be an intra prediction mode used by the neighbouring block if it has been determined that the neighbouring block is intra coded and is positioned within the frame.
  • the intra prediction mode for the block may be a planar prediction mode or a DC prediction mode if it has been determined that the neighbouring block is positioned outside the frame, or is not intra-coded.
  • the encoder 706 may be configured to code the type flag using bits when the encoder is a context-adaptive variable length code entropy coder.
  • an apparatus for coding an intra prediction mode 800 may be provided as shown in FIG. 8.
  • the apparatus 800 may include a determiner 802 (or may be referred to as a determining circuit) configured to determine a candidate for an intra prediction mode for a block of a frame of a video sequence; and a string generator 804 (or may be referred to as a string generating circuit) configured to generate an input string for an encoder, the encoder being configured to encode the frame, wherein the input string includes an occurrence flag indicating whether the intra prediction mode for the block is a predefined mode that is not the candidate.
  • intra prediction mode "candidate”, “generate”, “encoder”, “block”, and “predefined mode” may be defined as above.
  • the predefined mode may be an intra prediction mode that occurs more often than another intra prediction mode that is not the candidate.
  • the encoder may be further configured to code the occurrence flag using an adaptive context of a context-adaptive binary arithmetic code entropy coder or to code the occurrence flag using bits when the encoder is a context-adaptive variable length code entropy coder.
  • the apparatus 800 may further include a data provider configured to provide further data to be coded, wherein the encoder may be further configured to code the further data using an adaptive context of a context-adaptive binary arithmetic code entropy coder and to code the occurrence flag based on an equal probability distribution independent from the adaptive context. In other words, the occurrence flag may be coded in bypass mode.
  • the input string may further include an occurrence symbol indicating the intra prediction mode for the block, that is not the predefined mode, if it has been determined that the occurrence flag indicates that the intra prediction mode for the block is not the predefined mode.
  • occurrence flag is set to "1" indicating that the intra prediction mode for the block is the predefined mode
  • a preset mode value associating to the intra prediction mode for the block may be set at a mode value of the predefined mode.
  • the preset mode value associating to the intra prediction mode for the block may be set at a mode value of another intra prediction mode incremented by 1, wherein the other intra prediction mode is not the predefined mode.
  • the candidate may include two modes having a first mode value and a second mode value respectively; wherein the first mode value is less than the second mode value; and wherein the occurrence symbol may indicate the preset mode value if it has been determined that the preset mode value is less than the first mode value; or the preset mode value incremented by 1 if it has been determined that the preset mode value is more than or equal to the first mode value but less than the second mode value decremented by 1; or the preset mode value incremented by 2 if it has been determined that the preset mode value is more than or equal to the second mode value decremented by 1.
  • the preset mode value may be associated with a Planar intra prediction mode
  • the preset mode value incremented by 1 may be associated with a DC intra prediction mode
  • the preset mode value incremented by 2 may be associated with a Ver intra prediction mode.
  • the encoder may be configured to code the occurrence symbol using a fixed-length code.
  • a fixed-length code As described above, based on the example described in Table 1, when the block is selected from a group consisting of a 4x4 block, a 8x8 block, a 16x16 block, and a 32x32 block, the occurrence symbol may be coded using a fixed- length code. For the 64x64 case of Table 1, the occurrence symbol may be inferred to be 0 and therefore no further bits need to be coded.
  • the encoder may be configured to code the occurrence symbol based on an equal probability distribution independent from the adaptive context of the context-adaptive binary arithmetic code entropy coder.
  • the encoder may be configured to code the occurrence flag using an adaptive context when the encoder is a context-adaptive binary arithmetic code (CABAC) entropy coder.
  • CABAC context-adaptive binary arithmetic code
  • the intra prediction mode for the block may be one of 35 luma intra prediction modes for a high-efficiency video coding standard.
  • the block may be selected from a group consisting of a 4x4 block, a 8x8 block, a 16x16 block, a 32x32 block, and a 64x64 block.
  • the apparatus 800 may further include a mode coder configured to code a mode symbol, depending on the size of the source block, using a fixed-length-code (FLC) alone or in combination with unary coding, or a variable-length- code (VLC) when the encoder is a CAVLC entropy coder.
  • FLC fixed-length-code
  • VLC variable-length- code
  • the mode coder may be configured to code the mode, depending on the size of the source block, using a FLC, adaptive context or in bypass mode.
  • mode symbol may be defined as above.
  • the string generator 804 may further be configured to divide the intra prediction modes that are not any of the two MPM into a first group and a second group, wherein the input string may further include a grouping flag indicating whether the intra prediction mode for the source block belongs to the first group or the second group.
  • the term "divide" may be defined as above.
  • the first group may include the intra prediction modes that are not any of the two MPM in a first range of [ 1 , 2 ⁇ " '], and the second group may include the intra prediction modes that are not any of the two MPM at Mode 0 and in a second range of [1+2 ⁇ " ', 2 N ], N being the number of intra prediction modes that are not any of the two MPM.
  • the input string may further include a grouping symbol indicating which one of the intra prediction modes in the first group the intra prediction mode for the source block is and setting a first mode value associating to the intra prediction mode for the source block at the mode value of the one of the intra prediction modes incremented by 1 if it has been determined that the grouping flag indicates that the intra prediction mode for the source block belongs to the first group.
  • the input string may further include a grouping symbol indicating which one of the intra prediction modes in the second group the intra prediction mode for the (source) block is if it has been determined that the occurrence flag indicates that the one of the intra prediction modes in the second group occurs more often than the other one of the intra prediction modes in the second group.
  • a first mode value associating to the intra prediction mode for the source block may be set at the mode value of the one of the intra prediction modes incremented by (l+2 N ⁇ l ).
  • a first mode value associating to the intra prediction mode for the source block may be set at the mode value of the other one of the intra prediction modes.
  • the grouping symbol may indicate the first mode value associating to the intra prediction mode for the source block if it has been determined that the first mode value is less than the lower value of the two MPM; or a second mode value associating to the intra prediction mode for the source block if it has been determined that the second mode value is more than or equal to the lower value of the two MPM but less than the higher value of the two MPM decremented by 1 ; or a third mode value associating to the intra prediction mode for the source block if it has been determined that the third mode value is more than or equal to the higher value of the two MPM decremented by 1, wherein the second mode value is the first mode value incremented by 1; and wherein the third mode value is the first mode value incremented by 2.
  • the apparatus 800 may further include a group coder configured to code the grouping flag and the grouping symbol, depending on the size of the source block, using FLCs or adaptive contexts when the encoder is a CABAC entropy coder or using a combination of unary coding and FLCs when the encoder is a CAVLC entropy coder.
  • a group coder configured to code the grouping flag and the grouping symbol, depending on the size of the source block, using FLCs or adaptive contexts when the encoder is a CABAC entropy coder or using a combination of unary coding and FLCs when the encoder is a CAVLC entropy coder.
  • terms in italics may denote variables with semantic meanings.
  • italicized terms include IntraPredMode, IntraMPMOMode, IntraMPMl Mode,. Terms in bold denote syntax elements that are coded in the bitstream.
  • prev_intra_Iuma_pred_flag mpm_idx
  • rem_intra_luma_pred_mode rem_intra_Iuma_pred_mode_eqO
  • rem_intra_luma_pred_mode_minusl rem_intra_luma_pred_mode_half
  • rem_intra_Iuma_pred_mode_idx terms in bold include prev_intra_Iuma_pred_flag, mpm_idx, rem_intra_luma_pred_mode, rem_intra_Iuma_pred_mode_eqO, rem_intra_luma_pred_mode_minusl, rem_intra_luma_pred_mode_half, rem_intra_Iuma_pred_mode_idx.
  • Some of the terms used to denote the syntax elements are italicized (e.g., rem_intra_luma pred node, rem_intra_luma pred node ninus I , rem ntra uma jpredjnode _idx) to imply that the values of the decoded syntax elements are to be used.
  • FIG. 9 shows a decoding tree for coding the intra prediction mode, more specifically, the Luma intra prediction mode for Example 1.
  • a flag, prev_intra_luma_pred_flag (for example, the mode flag as defined above) is signalled to indicate if IntraPredMode is equal to either IntraMPMOMode or IntraMPMlMode. If so, another flag, mpm_idx, (for example, the type flag as defined above) is signalled to indicate whether it is IntraMPMOMode or IntraMPMlMode. If not, a rem_intra_luma_pred_mode symbol (for example, the mode symbol as defined above) is signalled to indicate which of the remaining intra prediction modes is used.
  • mpm_idx for example, the type flag as defined above
  • prev_intra_luma_pred_flag and mpm_idx are coded using an adaptive context (i.e., via a probability model).
  • rem_intra_lumajpred_mode is binarized using a fixed-length-code (FLC) in the 4x4 and 64x64 case, since only 16 and 2 remaining intra prediction modes are present, respectively.
  • rem_intra_luma_pred_mode is binarized using a FLC with a special case for rem_intra_luma_pred_mode being equal to 31 or 32, since there are 33 remaining intra prediction modes available. Furthermore, the bins of rem_intra_luma_pred_mode are coded using an adaptive context as well. Therefore, a total of three contexts are used for intra mode coding when CABAC is used as the entropy coder.
  • prev_intra_luma_pred_flag and mpm_idx are coded as bits (or may also be referred to as "binary bits").
  • rem_intra_luma_pred_mode is coded using a fixed-length-code (FLC) in the 64x64 case, since only 2 remaining intra prediction modes are present, respectively.
  • rem_intra_luma_pred_mode is coded using a variable-length-code (VLC) with 16 entries for the 4x4 case, and 33 entries for each of the 8x8, 16x16 and 32x32 cases. Therefore, two additional tables of VLC codeword and codeword lengths are needed for the 16 entries case, and for the 33 entries cases.
  • VLC variable-length-code
  • Example 1 may be implemented in an "All Intra High-Efficiency (HE)", which uses CABAC as the entropy coder.
  • An average coding gain of about 0.12% may be achieved despite the simplified encoding of the intra mode by reducing the number of contexts.
  • the number of bins coded in bypass mode is increased, and the special case (of rem_intra_lumajpred_mode being 31 or 32) for block sizes of 8x8, 16x16 and 32x32 is avoided.
  • Example 2 the coding of the Luma intra prediction mode is simplified.
  • the MPM coding remains the same as described in Example 1 above.
  • CABAC binary arithmetic coding
  • this syntax element is coded in bypass mode (assuming an equal probability distribution), which reduces the complexity of binary arithmetic coding (BAC) in this example.
  • BAC binary arithmetic coding
  • FIG. 10 shows a exemplary decoding tree that summarizes the coding of reni_intra_luma_pred_mode.
  • a simple FLC may be used to binarize rem_intra_luma_pred_mode_minusl (for example, the occurrence symbol as described above) when CABAC is used as the entropy coder, while a FLC may be used to directly code rem_intra_luma_pred_mode_minusl when CAVLC is used as the entropy coder.
  • rem_intra_lumajpred_mode_minusl is inferred to be 0, and no further bits need to be coded.
  • Table 3 is based on the example described in Table 1 and summarizes the number of bins/bits used for rem_intra_luma_pred_mode_minusl for each block size, as well as the total number of available intra modes.
  • Table 4 is based on the example described in Table 2 and summarizes the number of bins/bits used for rem_intra_luma_pred_mode_minusl for each block size, as well as the total number of available intra modes.
  • CABAC CABAC
  • prev_intra_luma_pred and rem_intra_luma_pred_mode_eqO are coded using context models.
  • the mpm_idx and rem_intra_Iuma_pred_mode_minusl are coded in bypass mode. Therefore, the number of contexts may be reduced from 3 to 2, and at most 2 bins are coded using context models.
  • rem_intra_Iuma_pred_mode_eq0 may be coded in bypass mode.
  • prev_intra_luma_pred When CAVLC is used as the entropy coder, prev_intra_luma_pred, rem_intra_lumajpred_mode_eqO and mpm_idx are coded as binary flags, while rem_intra_luma_pred_mode_minusl is coded using a FLC with the appropriate number of bits depending on the block size, as shown in Tables 3 and 4 above.
  • Example 3 may be implemented in an "All Intra Low Complexity (LC)", which uses CAVLC as the entropy coder. There may be an average coding loss of about 0.14 %, which is relatively insignificant given the advantage of simplifying the encoding of the intra prediction mode by avoiding the use of a VLC and by using a FLC instead.
  • LC All Intra Low Complexity
  • rem_intra_Iuma_pred_mode when CAVLC is used as the entropy coder.
  • This alternative scheme uses a combination of unary coding and FLC, both of which requires no look-up tables and is simple to implement.
  • rem_intra_luma_pred_mode_haIf and ren intra_luma_pred_mode_idx may refer to the grouping flag and the grouping symbol as defined above.
  • the number of remaining modes is 1 + 2 N , i.e., ranging from [0, 2 ⁇ ].
  • N the number of modes
  • the term "about” or “approximately” as applied to a numeric value encompasses the exact value and a variance of +/- 5% of the value.
  • the phrase "at least substantially” may include “exactly” and a variance of +/- 5% thereof.
  • the phrase "A is at least substantially the same as B” may encompass embodiments where A is exactly the same as B, or where A may be within a variance of +/- 5%, for example of a value, of B, or vice versa.

Abstract

The present invention is directed to a method of coding an intra prediction mode including providing a type flag indicating an intra prediction mode for a block of a frame of a video sequence; providing further data to be coded; and coding the further data using an adaptive context of a context-adaptive binary arithmetic code entropy coder and coding the type flag based on an equal probability distribution independent from the adaptive context. The present invention is also directed to a method of coding an intra prediction mode including determining a candidate for an intra prediction mode for a block; and generating an input string for an encoder configured to encode the frame, wherein the input string includes an occurrence flag indicating whether the intra prediction mode for the block is a predefined mode that is not the candidate. Apparatus for coding an intra prediction mode are also disclosed.

Description

Method and an Apparatus for Coding an Intra Prediction Mode
Cross-Reference To Related Application
[0001] This application makes reference to and claims the benefit of priority of an application for "A Method for Coding Intra Prediction Mode" filed on November 17, 2011 with the Intellectual Property Office of Singapore, and there duly assigned application number 201108534-7. The content of said application filed on November 17, 2011 is incorporated herein by reference for all purposes, including an incorporation of any element or part of the description, claims or drawings not contained herein and referred to in Rule 20.5(a) of the PCT, pursuant to Rule 4.18 of the PCT.
Technical Field
[0002] Various embodiments relate to the field of coding intra prediction modes.
Background
[0003] Intra-frame coding is used to compress frames without any temporal dependencies, that is to say, intra-frame coding is performed using a single frame or image.
[0004] In the current working standard draft of high-efficiency video coding (HEVC), there are a total of 35 intra prediction modes available for Luma coding. These are the Planar prediction, DC prediction, Vertical+x (-8 < x < 8) and Horizontal+x (-7 < x < 8). FIG. 1 shows a schematic diagram illustrating the directional intra prediction modes, i.e, the Vertical+x and Horizontal+x intra prediction modes. The term "Vertical" and "Horizontal" with respect to intra prediction modes may be denoted a "Ver" and "Hor", respectively. Direct current (DC) prediction mode refers to a special prediction mode, where the mean of the upper and left samples are used to predict the entire block. Generally, DC prediction mode is useful for blocks with little or no local activities. Planar prediction mode uses a linear function between the neighboring samples to the left and to the top in order to predict the current samples.
[0005] However, not all modes can be used for all block sizes in some cases. In one exemplary case, the possible modes available for each block size may be summarized in
Table 1.
[0006] Table 1
Figure imgf000003_0001
[0007] As shown in Table 1, for the 4x4 case in particular, the Hor+6 mode is not available, even though the intent of the design seems to be to include all the even (i.e. Ver+2x and Hor+2x) directional prediction modes.
[0008] In another exemplary case, all 35 modes for all block sizes may be available as summarized in Table 2.
[0009] Table 2
Figure imgf000003_0002
[0010] Thus, there is a need to provide a method and an apparatus for coding intra prediction mode, seeking to address at least the problems mentioned and to simplify the known method used, for example, in HEVC WD4, for entropy coding based on context- adaptive binary arithmetic code (CABAC) and context-adaptive variable length code (CAVLC).
Summary
[0011] In a first aspect, the present invention relates to a method of coding an intra prediction mode. The method includes providing a type flag indicating an intra prediction mode for a block of a frame of a video sequence; providing further data to be coded; and coding the further data using an adaptive context of a context-adaptive binary arithmetic code entropy coder and coding the type flag based on an equal probability distribution independent from the adaptive context.
[0012] In a second aspect, the present invention relates to a method of coding an intra prediction mode. The method includes determining a candidate for an intra prediction mode for a block of a frame of a video sequence; and generating an input string for an encoder, the encoder being configured to encode the frame, wherein the input string includes an occurrence flag indicating whether the intra prediction mode for the block is a predefined mode that is not the candidate.
[0013] In a third aspect, the present invention relates to an apparatus for coding an intra prediction mode. The apparatus includes a flag provider configured to provide a type flag indicating an intra prediction mode for a block of a frame of a video sequence; a data provider configured to provide further data to be coded; and an encoder configured to code the further data using an adaptive context of a context-adaptive binary arithmetic code entropy coder and to code the type flag based on an equal probability distribution independent from the adaptive context.
[0014] In a fourth aspect, the present invention relates to an apparatus for coding an intra prediction mode. The apparatus includes a determiner configured to determine a candidate for an intra prediction mode for a block of a frame of a video sequence; and a string generator configured to generate an input string for an encoder, the encoder being configured to encode the frame, wherein the input string includes an occurrence flag indicating whether the intra prediction mode for the block is a predefined mode that is not the candidate.
Brief Description of the Drawings
[0015] In the drawings, like reference characters generally refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the principles of the invention. In the following description, various embodiments of the invention are described with reference to the following drawings, in which:
[0016] FIG. 1 shows a schematic diagram illustrating the directional intra prediction modes;
[0017] FIG. 2 shows a simplified schematic diagram of an encoder system;
[0018] FIG. 3 shows a flow diagram illustrating a method for coding an intra prediction mode, in accordance to various embodiments;
[0019] FIG. 4 shows an exemplary schematic representation of the relationship between a block and a video sequence, in accordance to various embodiments;
[0020] FIG. 5 shows a schematic diagram of a source block and two neighbouring blocks, in accordance to various embodiments;
[0021] FIG. 6 shows a flow diagram illustrating another method for coding an intra prediction mode, in accordance to various embodiments;
[0022] FIG. 7 shows a schematic block diagram of an apparatus for coding an intra prediction mode, in accordance to various embodiments;
[0023] FIG. 8 shows a schematic block diagram of another apparatus for coding an intra prediction mode, in accordance to various embodiments;
[0024] FIG. 9 shows an exemplary decoding tree for coding an intra prediction mode, in accordance to various embodiments;
[0025] FIG. 10 shows another exemplary decoding tree for coding an intra prediction mode, in accordance to various embodiments; and [0026] FIG. 11 shows yet another exemplary decoding tree for coding an intra prediction mode, in accordance to various embodiments.
Detailed Description
[0027] The following detailed description refers to the accompanying drawings that show, by way of illustration, specific details and embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. Other embodiments may be utilized and structural, and logical changes may be made without departing from the scope of the invention. The various embodiments are not necessarily mutually exclusive, as some embodiments can be combined with one or more other embodiments to form new embodiments.
[0028] In order that the invention may be readily understood and put into practical effect, particular embodiments will now be described by way of examples and not limitations, and with reference to the figures.
[0029] Various embodiments may provide a method for coding intra prediction mode.
[0030] Various embodiments may provide a method for coding intra prediction mode that is applicable to the High-Efficiency Video Coding (HEVC). When context-adaptive binary arithmetic code (CABAC) is used as the entropy coder, the method may reduce the number of probability contexts needed, may allow the use of the full set of intra prediction modes available for 4x4 blocks in cases where the number of modes is less than 35 (e.g., the number of modes = 18 as in Table 1), may remove the need for an escape code when coding intra prediction mode for larger block sizes, and may provide an improved coding performance. When context-adaptive variable length code (CAVLC) is used as the entropy coder, the method may replace the current variable length code (VLC) table with a simple combination of unary coding and fixed length code (FLC) as well as allow the use of the full set of intra prediction modes available for 4x4 blocks while maintaining similar coding performance. [0031] In the various embodiments, a method for coding intra prediction mode may be provided that simplifies the method used in, for example, HEVC WD4 for both CABAC and CALVC entropy coding. Simplification of the coding of the intra prediction mode does not compromise coding performance. In fact, such simplification has insignificant impact on coding performance.
[0032] FIG. 2 shows a simplified schematic diagram of an encoder system 200 for encoding an image 202 made up of source pixels 204 and reference pixels 206. In the encoder system 200, the reference pixels 206 are used to generate a prediction 208 for the source pixels 204. The intra prediction 208 is then applied to the source pixels 204 at 210 prior to coding by an entropy coder 212 to form a resultant bitstream 21 .
[0033] Various embodiments may provide methods and apparatus for coding an intra prediction mode. To code the intra prediction mode of a block (or may be referred to as a source block), the intra prediction for the source block is first determined. The intra prediction mode for the source block may be any one of two (or three) most probable modes (MPM) that are determined using two neighouring blocks of the source block or any one of the remaining modes that is not any of the MPM. If the intra prediction mode is a MPM, then coding the intra prediction mode may simply be indicated by a binary represention (e.g. using a coded flag). However, if the intra prediction mode is not a MPM, further queries or checks requiring binarized replies may be implemented using other flags so as to further simplify the coding of the intra prediction mode (e.g., to enable the use of shorter bit representation for the coding).
[0034] The apparatus for coding an intra prediction mode may include a memory which is for example used in the processing carried out by the apparatus. A memory used in the embodiments may be a volatile memory, for example a DRAM (Dynamic Random Access Memory) or a non-volatile memory, for example a PROM (Programmable Read Only Memory), an EPROM (Erasable PROM), EEPROM (Electrically Erasable PROM), or a flash memory, e.g., a floating gate memory, a charge trapping memory, an MRAM (Magnetoresistive Random Access Memory) or a PCRAM (Phase Change Random Access Memory). [0035] In an embodiment, a "circuit" may be understood as any kind of a logic implementing entity, which may be special puipose circuitry or a processor executing software stored in a memory, firmware, or any combination thereof. Thus, in an embodiment, a "circuit" may be a hard-wired logic circuit or a programmable logic circuit such as a programmable processor, e.g. a microprocessor (e.g. a Complex Instruction Set Computer (CISC) processor or a Reduced Instruction Set Computer (RISC) processor). A "circuit" may also be a processor executing software, e.g. any kind of computer program, e.g. a computer program using a virtual machine code such as e.g. Java. Any other kind of implementation of the respective functions which will be described in more detail below may also be understood as a "circuit" in accordance with an alternative embodiment.
[0036] In a first aspect, a method of coding an intra prediction mode 300 is provided as shown in FIG. 3. At 302, a type flag indicating an intra prediction mode for a block of a frame of a video sequence is provided. At 304, further data to be coded is provided. At 306, the further data is coded using an adaptive context of a context- adaptive binary arithmetic code entropy coder and the type flag is coded based on an equal probability distribution independent from the adaptive context.
[0037] As used herein, with reference to FIG. 4, a block 400 (or interchangably referred to as a source block) may include pixels and forms part of a largest coding unit (LCU), a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU) or a transform unit (TU) 402, which is in turn part of a slice 404 taken from an image or a frame 406 of a video sequence 408.
[0038] An intra prediction mode which is a type of prediction mode may be applied to the block 400. The intra prediction mode generally involves manipulating information that is contained only within a current frame (spatially), and not relative to any other frame in a video sequence (temporally).
[0039] In various embodiments, the intra-prediction may be in a form of a luma prediction or a chroma prediction, representing the lurriinence level and the colour, respectively. The intra-prediction may be selected from a group consisting of a 64x64 luma prediction, a 32x32 luma prediction, a 32x32 chroma prediction, a 16x16 luma prediction, a 16x16 chroma prediction, a 8x8 luma prediction, a 8x8 chroma prediction, a 4x4 luma prediction, and a 4x4 chroma prediction. In this context, n x n refers to prediction block size.
[0040] In various embodiments, the intra-prediction mode includes a directional intra- prediction mode or a DC intra-prediction mode or a Planar intra-prediction mode. FIG. 1 shows an exemplary illustration of intra-prediction modes with the boundaries such as "Hor+8", "Hor-7", "Ver-8" and "Ver+8", and mid-points such as "Hor" and "Ver". Other directional intra-prediction modes may be spatially distributed between the boundaries and may be denoted by "Ver + x", "Ver - x", "Hor + x" and "Hor - x" where x is an offset of 1, or 2, or 3, .... The spatial distribution of these other directional intra-prediction modes may be substantially even. Each directional intra-prediction mode, for example, "Ver+8" may be spaced about 45° with respect to "Ver" when taken as a reference. As another example, "Ver+4" may be spaced about 22.5° with respect to "Ver" when taken as a reference.
[0041] In the context of various embodiments, the term "coding" generally refer to a form of cryptogram or a representation. Generally, coding is used to compress digital data. The term "encoding" may be interchangably referred to as "coding".
[0042] As used herein, the "flag" may be an indication or an identifier or a signal. For example, a flag may be represented by a bit or a group of bits. Generally, the flag may be used indicate status, for example a "1" flag may indicate a status, while a "0" flag may represent a complementary status. For example, the flag sets at "1" may imply a TRUE statement in response to an enquiry. Conversely, the flag sets at "0" may imply a FALSE statement in response to the enquiry.
[0043] For example, the type flag may be set to "1" indicating that the intra prediction mode is a most probable mode (MPM); and the type flag may be set to "0" indicating that the intra prediction mode is another MPM. The derivation of MPM is further described below.
[0044] The term "further data" refers to information or data that is not a flag or symbol representing an intra prediction mode or a coding of the intra prediction mode. The information is fed to the entropy coder for coding. For example, "further data" may refer to image data from the block of the frame.
[0045] Coding using "adaptive context" refers to coding based on multiple probability modes for different contexts. In using adaptive context, a context modeling estimating conditional probabilities of the coding symbols may be provided. To enable estimating conditional probabilities, previous context may be used.
[0046] The term "equal probability distribution" refers to a 50%-50% distribution. For example, if there is a 50% chance that a bit pattern may be a "11" and a 50% chance that the bit pattern may be a "00", equal probability distribution is observed for the bit pattern. In equal probability distribution for the context-adaptive binary arithmetic code entropy coder (CABAC), the context is removed for coding. In other words, the bit pattern may be coded in bypass mode where the context is disregarded for probability distribution. This is as opposed to the concept of adaptive context.
[0047] The "equal probability distribution independent from the adaptive context" refers to coding of a bit or symbol in the bypass mode and not during an initialization process for the CABAC. In the initialization process of using adaptive context, there is no previous context available to estimate the conditional probabilities. As such, the probabilities may be initialized at a 50%-50% distribution (for using the adaptive context). It should be appreciated and understood that this initialization process in using adaptive context is not the same as "equal probability distribution independent from the adaptive context".
[0048] In various embodiments, the intra prediction mode for the block may be determined using a neighbouring block of the block.
[0049] A neighouring block may generally be a block 400 of FIG. 4. The neighbouring block may be abutting the block. For example, a neighbouring block may include a block left to the (source) block or a block above the (source) block. A neighbouring block may also refer to a plurality of neighbouring blocks.
[0050] In an example described below with reference to FIG. 5, two neighbouring blocks may include a first block left to the source block and a second block above the source block. [0051] In one embodiment, the intra prediction mode for the block may be an intra prediction mode used by the neighbouring block if it has been determined that the neighbouring block is intra coded and is positioned within the frame.
[0052] In a different embodiment, the intra prediction mode for the block is a planar prediction mode or a DC prediction mode if it has been determined that the neighbouring block is positioned outside the frame, or is not intra-coded.
[0053] For example, an intra prediction mode may be coded as described below.
[0054] Up to two most probable modes (MPM) for the source block 500 may be derived from neighboring left (L) and above (A) blocks 502, 504, as shown in FIG. 5. For example, the source block 500 may refer to a block 400 of FIG. 4.
[0055] If available, the most probable mode candidates may be the intra prediction mode used by A 502 and L 504. The two MPM may not be found when:
(i) A 502 and/or L 504 are not intra coded, and/or
(ii) A 502 and/or L 504 are in a different slice or outside the image boundaries, and/or
(iii) A 502 and L 504 have the same intra prediction mode.
[0056] When the two MPM are not found, the Planar mode and the DC mode may be inserted in that order until two MPMs are derived. Therefore, there are always two MPM candidates.
[0057] In another embodiment, up to three most probable modes (MPM) for the source block 500 may be derived from neighboring left (L) and above (A) blocks 502, 504, as shown in FIG. 5. For example, the source block 500 may refer to a block 400 of FIG. 4.
[0058] If available, the most probable mode candidates may be the intra prediction mode used by A 502 and L 504 or derived from them. The three MPM may not be found when:
(i) A 502 and/or L 504 are not intra coded, and/or
(ii) A 502 and/or L 504 are in a different slice or outside the image boundaries, and/or
(iii) A 502 and L 504 have the same intra prediction mode. [0059] When the three MPM are not found, the Planar mode, the DC mode and the Ver mode may be inserted in that order until three MPMs are derived. Therefore, there are always three MPM candidates.
[0060] In some embodiments, coding the type flag at 306 may include coding the type flag using bits when a context-adaptive variable length code entropy coder is used.
[0061] For example, entropy coding is a type of lossless coding to compress digital data by representing frequently occurring patterns with few bits and rarely occurring patterns with more bits. In the HEVC standard, Context-based Adaptive Binary Arithmetic Coder (CABAC), and Context Adaptive Variable Length Coding (CAVLC) may be used. In other words, encoding may use an arithmetic coding based CABAC, or a variable length coding based CAVLC.
[0062] In a second aspect, a method of coding an intra prediction mode 600 may be provided as shown in FIG. 6. At 602, a candidate for an intra prediction mode for a block of a frame of a video sequence may be determined. At 604, an input string for an encoder may be generated. The encoder may be configured to encode the frame. The input string may include an occurrence flag indicating whether the intra prediction mode for the block is a predefined mode that is not the candidate.
[0063] The "occurrence flag" may be similar to a flag as defined above.
[0064] As used herein, the term "candidate for an intra prediction mode" refers to a potential intra prediction mode that may be used as the actual or eventual intra prediction mode for the block. However, it may also be possible that this candidate for the intra prediction mode may not be the eventual intra prediction mode for the block.
[0065] In various embodiments, the predefined mode may be an intra prediction mode that occurs more often than another intra prediction mode that is not the candidate. It should be appreciated that the predefined mode may be determined based on other characteristics. For example, the predefined mode may be defined by its mode value such as an intra prediction mode having the largest mode value (e.g., Mode 34). In another example, the predefined mode may be defined by a direction such as an "Ver" intra prediction mode. [0066] The term "generating" may generally refer but not limited to forming, determining or outputing.
[0067] In some embodiments, the method 600 may further include coding the occurrence flag using an adaptive context of a context-adaptive binary arithmetic code (CAB AC) entropy coder or using bits when a context-adaptive variable length code (CAVLC) entropy coder is used.
[0068] In other embodiments, the method 600 may further include providing further data to be coded; coding the further data using an adaptive context of a context- adaptive binary arithmetic code entropy coder and coding the occurrence flag based on an equal probability distribution independent from the adaptive context. In other words, the occurrence flag may be coded in bypass mode.
[0069] The terms "adaptive context", "equal probability distribution", "entropy coder", "coding", and "intra prediction mode" may be defined as above.
[0070] In various embodiments, the input string may further include an occurrence symbol indicating the intra prediction mode for the block, that is not the predefined mode, if it has been determined that the occurrence flag indicates that the intra prediction mode for the block is not the predefined mode.
[0071] The term "symbol" may represent a variable with semantic meanings.
[0072] When the occurrence flag is set to "1" indicating that the intra prediction mode for the block is the predefined mode, a preset mode value associating to the intra prediction mode for the block may be set at a mode value of the predefined mode. When the occurrence flag is set to "0" indicating that the intra prediction mode for the block is not the predefined mode, the preset mode value associating to the intra prediction mode for the block may be set at a mode value of another intra prediction mode incremented by 1, wherein the other intra prediction mode is not the predefined mode.
[0073] As used herein, the term "mode value" refers to a numerical representation assigned to each intra prediction mode.
[0074] For example, the mode value "Mode 0" may be used to indicate the DC prediction mode, "Mode 1" may be used to indicate the Planar prediction mode, "Mode 2" may be used to indicate "Ver" prediction mode, "Mode 3" may be used to indicated "Hor" prediction mode, "Mode 4" may be used to indicated "Ver+8", and this form of assignment is performed for all 35 intra prediction modes.
[0075] In another example, the mode value "Mode 0" may be used to indicate the Planar prediction mode, "Mode 1" may be used to indicate the DC prediction mode, "Mode 2" may be used to indicate "Hor+8" prediction mode, "Mode 3" may be used to indicated "Hor+7" prediction mode, "Mode 4" may be used to indicated "Hor+6", and this form of assignment is performed for all 35 intra prediction modes.
[0076] It should be understood and appreciated that other forms of assignment of mode value to the intra prediction mode may be possible.
[0077] The term "assignment" may generally refer to allocation or allotment upon satisfying certain requirements or conditions. For example, an algorithm may be used for assignment. As used herein, the algorithm may be realized by a computer program (e.g., machine codes or JavaScript programs) or by firmware (e.g., a hard- wired circuit of logic implementation). The algorithm may depend on a set of conditions or may controlled by human intervention, for example, a status overwrite.
[0078] For example, the candidate may include two modes having a first mode value and a second mode value respectively, wherein the first mode .value is less than the second mode value; and wherein the occurrence symbol may indicate the preset mode value if it has been determined that the preset mode value is less than the first mode value; or the preset mode value incremented by 1 if it has been determined that the preset mode value is more than or equal to the first mode value but less than the second mode value decremented by 1 ; or the preset mode value incremented by 2 if it has been determined that the preset mode value is more than or equal to the second mode value decremented by l.
[0079] In one embodiment, the preset mode value may be associated with a Planar intra prediction mode; the preset mode value incremented by 1 may be associated with a DC intra prediction mode; and the preset mode value incremented by 2 may be associated with a Ver intra prediction mode.
[0080] In some embodiments, the method 600 may further include coding the occurrence symbol using a fixed-length code (FLC). Based on the example described in Table 1, when the block is selected from a group consisting of a 4x4 block, a 8x8 block, a 16x16 block, and a 32x32 block, the occurrence symbol may be coded using a fixed-length code. For the 64x64 case of Table 1, the occurrence symbol may be inferred to be 0 and therefore no further bits need to be coded. In this example, the occurrence symbol may be inferred to be 0 because out of the 4 modes available for a 64x64 block, 2 of these modes may be used as MPM, and another one mode may be used as the predefined mode, which leaves only a last mode being indicated in the occurrence symbol; thereby not needing further bits to be coded. It should be understood that for the other example described in Table 2, since all 35 modes are used for the 4x4 block and 64x64 block, the occurrence symbol may be coded using a FLC. For example, the FLC may be a 5-bit FLC.
[0081] In other embodiments, the method 600 may further include coding the occurrence symbol based on an equal probability distribution independent from the adaptive context of the context-adaptive binary arithmetic code entropy coder. In other words, the method 600 may further include coding the occurrence symbol in bypass mode.
[0082] In various embodiments, the intra prediction mode for the block may be one of 35 luma intra prediction modes for a high-efficiency video coding standard. The block may be selected from a group consisting of a 4x4 block, a 8x8 block, a 16x16 block, a 32x32 block, and a 64x64 block.
[0083] In various examples, the method 600 may further include coding a mode symbol, depending on the size of the (source) block, using a fixed-length-code (FLC) or an adaption context when the encoder is a CABAC entropy coder. In one example, the mode symbol may be coded in bypass mode.
[0084] A mode symbol indicates which one of the intra prediction modes that is not any of the two MPM the intra prediction mode for the (source block) is if it has been determined that a mode flag indicates that the intra prediction mode is not any of the two MPM. The mode flag may be implemented as a prior conditional check to the type flag. For example, the mode flag may be prev_intra_luma_pred_flag and the mode symbol may be rem_intra_luma_pred_mode as denoted, for example, in FIG. 9.
[0085] For example, when the 2 MPM are the Planar intra prediction mode and the DC intra prediction mode, the Ver intra prediction mode, which is not any of the 2 MPM, may be indicated in the mode symbol (as a first remaining mode). In other words, an ordered list may be ("Planar", "DC", "Ver"} .
[0086] In these examples, the method 600 may further include coding the mode symbol, depending on the size of the source block, using a fixed-length-code (FLC) alone or in combination with unary coding, or a variable-length-code (VLC) when the encoder is a CAVLC entropy coder.
[0087] In various examples, generating the input string (e.g., at 604) may further include dividing the intra prediction modes that are not any of the two MPM into a first group and a second group, wherein the input string may further include a grouping flag indicating whether the intra prediction mode for the source block belongs to the first group or the second group.
[0088] As used herein, the term "dividing" may refer but is not limited to assigning, alloting, arranging, or categorizing.
[0089] The first group may include the intra prediction modes that are not any of the two MPM in a first range of [1, 2^"'], and the second group may include the intra prediction modes that are not any of the two MPM at Mode 0 and in a second range οΐ [1+2ΝΑ, 2N], N being the number of intra prediction modes that are not any of the two MPM.
[0090] In one of these example, the input string may further include a grouping symbol indicating which one of the intra prediction modes in the first group the intra prediction mode for the source block is and setting a first mode value associating to the intra prediction mode for the source block at the mode value of the one of the intra prediction modes incremented by 1 if it has been determined that the grouping flag indicates that the intra prediction mode for the source block belongs to the first group.
[0091] In another one of these example, the input string may further include a grouping symbol indicating which one of the intra prediction modes in the second group the intra prediction mode for the source block is if it has been determined that the occurrence flag indicates that the one of the intra prediction modes in the second group occurs more often than the other one of the intra prediction modes in the second group.
[0092] As similarly described above, when the occurrence flag is set to "1" indicating that the one of the intra prediction modes that is not any of the two MPM occurs more often than the other one of the intra prediction modes that is not any of the two MPM, a first mode value associating to the intra prediction mode for the source block may be set at the mode value of the one of the intra prediction modes incremented by (l+2N ). Further, when the occurrence flag is set to "0" indicating that the one of the intra prediction modes that is not any of the two MPM occurs less often than the other one of the intra prediction modes that is not any of the two MPM, a first mode value associating to the intra prediction mode for the source block may be set at the mode value of the other one of the intra prediction modes.
[0093] The grouping symbol may indicate the first mode value associating to the intra prediction mode for the source block if it has been determined that the first mode value is less than the lower value of the two MPM; or a second mode value associating to the intra prediction mode for the (source) block if it has been determined that the second mode value is more than or equal to the lower value of the two MPM but less than the higher value of the two MPM decremented by 1 ; or a third mode value associating to the intra prediction mode for the source block if it has been determined that the third mode value is more than or equal to the higher value of the two MPM decremented by 1 , wherein the second mode value is the first mode value incremented by 1 ; and wherein the third mode value is the first mode value incremented by 2.
[0094] The method 600 may further include coding the grouping flag and the grouping symbol, depending on the size of the source block, using FLCs or adaption contexts when the encoder is a CAB AC entropy coder or using a combination of unary coding and FLCs when the encoder is a CAVLC entropy coder.
[0095] In a third aspect, an apparatus for coding an intra prediction mode may be provided as shown in FIG. 7. In FIG. 7, the apparatus 700 may include a flag provider 702 configured to provide a type flag indicating an intra prediction mode for a block of a frame of a video sequence; a data provider 704 configured to provide further data to be coded; and an encoder 706 (or may be referred to as an encoding circuit) configured to code the further data using an adaptive context of a context-adaptive binary arithmetic code entropy coder and to code the type flag based on an equal probability distribution independent from the adaptive context. [0096] The terms "intra prediction mode", "code", "block", "adaptive context", "equal probability distribution", and "flag" may be defined as above.
[0097] As similarly described above, the intra prediction mode for the (source) block may be determined using a neighbouring block of the block. For example, the neighbouring block may refer to two neighbouring blocks which may include a first block left to the source block and a second block above the source block. The intra prediction mode for the block may be an intra prediction mode used by the neighbouring block if it has been determined that the neighbouring block is intra coded and is positioned within the frame. Alternatively, the intra prediction mode for the block may be a planar prediction mode or a DC prediction mode if it has been determined that the neighbouring block is positioned outside the frame, or is not intra-coded. The encoder 706 may be configured to code the type flag using bits when the encoder is a context-adaptive variable length code entropy coder.
[0098] In a fourth aspect, an apparatus for coding an intra prediction mode 800 may be provided as shown in FIG. 8. In FIG. 8, the apparatus 800 may include a determiner 802 (or may be referred to as a determining circuit) configured to determine a candidate for an intra prediction mode for a block of a frame of a video sequence; and a string generator 804 (or may be referred to as a string generating circuit) configured to generate an input string for an encoder, the encoder being configured to encode the frame, wherein the input string includes an occurrence flag indicating whether the intra prediction mode for the block is a predefined mode that is not the candidate.
[0099] The terms "intra prediction mode", "candidate", "generate", "encoder", "block", and "predefined mode" may be defined as above.
[00100] As similarly described above, the predefined mode may be an intra prediction mode that occurs more often than another intra prediction mode that is not the candidate. The encoder may be further configured to code the occurrence flag using an adaptive context of a context-adaptive binary arithmetic code entropy coder or to code the occurrence flag using bits when the encoder is a context-adaptive variable length code entropy coder. [00101] The apparatus 800 may further include a data provider configured to provide further data to be coded, wherein the encoder may be further configured to code the further data using an adaptive context of a context-adaptive binary arithmetic code entropy coder and to code the occurrence flag based on an equal probability distribution independent from the adaptive context. In other words, the occurrence flag may be coded in bypass mode.
[00102] The input string may further include an occurrence symbol indicating the intra prediction mode for the block, that is not the predefined mode, if it has been determined that the occurrence flag indicates that the intra prediction mode for the block is not the predefined mode. When the occurrence flag is set to "1" indicating that the intra prediction mode for the block is the predefined mode, a preset mode value associating to the intra prediction mode for the block may be set at a mode value of the predefined mode. When the occurrence flag is set to "0" indicating that the intra prediction mode for the block is not the predefined mode, the preset mode value associating to the intra prediction mode for the block may be set at a mode value of another intra prediction mode incremented by 1, wherein the other intra prediction mode is not the predefined mode.
[00103] The terms "further data", "adaptive context", "equal probability distribution", "mode value" and "symbol" may be defined as above.
[00104] In various embodiments, the candidate may include two modes having a first mode value and a second mode value respectively; wherein the first mode value is less than the second mode value; and wherein the occurrence symbol may indicate the preset mode value if it has been determined that the preset mode value is less than the first mode value; or the preset mode value incremented by 1 if it has been determined that the preset mode value is more than or equal to the first mode value but less than the second mode value decremented by 1; or the preset mode value incremented by 2 if it has been determined that the preset mode value is more than or equal to the second mode value decremented by 1.
[00105] For example, the preset mode value may be associated with a Planar intra prediction mode, the preset mode value incremented by 1 may be associated with a DC intra prediction mode; and the preset mode value incremented by 2 may be associated with a Ver intra prediction mode.
[00106] In various embodiments, the encoder may be configured to code the occurrence symbol using a fixed-length code. As described above, based on the example described in Table 1, when the block is selected from a group consisting of a 4x4 block, a 8x8 block, a 16x16 block, and a 32x32 block, the occurrence symbol may be coded using a fixed- length code. For the 64x64 case of Table 1, the occurrence symbol may be inferred to be 0 and therefore no further bits need to be coded.
[00107] In one embodiment, the encoder may be configured to code the occurrence symbol based on an equal probability distribution independent from the adaptive context of the context-adaptive binary arithmetic code entropy coder.
[00108] In another embodiment, the encoder may be configured to code the occurrence flag using an adaptive context when the encoder is a context-adaptive binary arithmetic code (CABAC) entropy coder.
[00109] In various embodiments, as similarly described above, the intra prediction mode for the block may be one of 35 luma intra prediction modes for a high-efficiency video coding standard. The block may be selected from a group consisting of a 4x4 block, a 8x8 block, a 16x16 block, a 32x32 block, and a 64x64 block.
[00110] In some examples, the apparatus 800 may further include a mode coder configured to code a mode symbol, depending on the size of the source block, using a fixed-length-code (FLC) alone or in combination with unary coding, or a variable-length- code (VLC) when the encoder is a CAVLC entropy coder. As described above, when the encoder is a CABAC entropy coder, the mode coder may be configured to code the mode, depending on the size of the source block, using a FLC, adaptive context or in bypass mode.
[00111] The term "mode symbol" may be defined as above.
[00112] The string generator 804 may further be configured to divide the intra prediction modes that are not any of the two MPM into a first group and a second group, wherein the input string may further include a grouping flag indicating whether the intra prediction mode for the source block belongs to the first group or the second group. The term "divide" may be defined as above.
[00113] The first group may include the intra prediction modes that are not any of the two MPM in a first range of [ 1 , 2^"'], and the second group may include the intra prediction modes that are not any of the two MPM at Mode 0 and in a second range of [1+2^"', 2N], N being the number of intra prediction modes that are not any of the two MPM.
[00114] In one of these examples, as similarly described above, the input string may further include a grouping symbol indicating which one of the intra prediction modes in the first group the intra prediction mode for the source block is and setting a first mode value associating to the intra prediction mode for the source block at the mode value of the one of the intra prediction modes incremented by 1 if it has been determined that the grouping flag indicates that the intra prediction mode for the source block belongs to the first group.
[00115] In yet another one of these examples, the input string may further include a grouping symbol indicating which one of the intra prediction modes in the second group the intra prediction mode for the (source) block is if it has been determined that the occurrence flag indicates that the one of the intra prediction modes in the second group occurs more often than the other one of the intra prediction modes in the second group.
[00116] When the occurrence flag is set to "1" indicating that the one of the intra prediction modes that is not any of the two MPM occurs more often than the other one of the intra prediction modes that is not any of the two MPM, a first mode value associating to the intra prediction mode for the source block may be set at the mode value of the one of the intra prediction modes incremented by (l+2N~l). When the occurrence flag is set to "0" indicating that the one of the intra prediction modes that is not any of the two MPM occurs less often than the other one of the intra prediction modes that is not any of the two MPM, a first mode value associating to the intra prediction mode for the source block may be set at the mode value of the other one of the intra prediction modes.
[00117] The grouping symbol may indicate the first mode value associating to the intra prediction mode for the source block if it has been determined that the first mode value is less than the lower value of the two MPM; or a second mode value associating to the intra prediction mode for the source block if it has been determined that the second mode value is more than or equal to the lower value of the two MPM but less than the higher value of the two MPM decremented by 1 ; or a third mode value associating to the intra prediction mode for the source block if it has been determined that the third mode value is more than or equal to the higher value of the two MPM decremented by 1, wherein the second mode value is the first mode value incremented by 1; and wherein the third mode value is the first mode value incremented by 2.
[00118] In one of these examples, the apparatus 800 may further include a group coder configured to code the grouping flag and the grouping symbol, depending on the size of the source block, using FLCs or adaptive contexts when the encoder is a CABAC entropy coder or using a combination of unary coding and FLCs when the encoder is a CAVLC entropy coder.
[00119] Various embodiments may be provided as described in a set of exemplary schemes or mechanisms for coding intra prediction modes.
[00120] In the various exemplary schemes, terms in italics may denote variables with semantic meanings. For example, such italicized terms include IntraPredMode, IntraMPMOMode, IntraMPMl Mode,. Terms in bold denote syntax elements that are coded in the bitstream. For example, terms in bold include prev_intra_Iuma_pred_flag, mpm_idx, rem_intra_luma_pred_mode, rem_intra_Iuma_pred_mode_eqO, rem_intra_luma_pred_mode_minusl, rem_intra_luma_pred_mode_half, rem_intra_Iuma_pred_mode_idx. Some of the terms used to denote the syntax elements are italicized (e.g., rem_intra_luma pred node, rem_intra_luma pred node ninus I , rem ntra uma jpredjnode _idx) to imply that the values of the decoded syntax elements are to be used.
[00121] Example 1
[00122] The intra prediction mode of the source block is denoted by IntraPredMode, and the two most probable modes (MPM) are denoted by IntraMPMOMode and IntraMPMl Mode, respectively. [00123] FIG. 9 shows a decoding tree for coding the intra prediction mode, more specifically, the Luma intra prediction mode for Example 1.
[00124] In FIG. 9, first, a flag, prev_intra_luma_pred_flag, (for example, the mode flag as defined above) is signalled to indicate if IntraPredMode is equal to either IntraMPMOMode or IntraMPMlMode. If so, another flag, mpm_idx, (for example, the type flag as defined above) is signalled to indicate whether it is IntraMPMOMode or IntraMPMlMode. If not, a rem_intra_luma_pred_mode symbol (for example, the mode symbol as defined above) is signalled to indicate which of the remaining intra prediction modes is used.
[00125] When context-adaptive binary arithmetic code (CABAC) is used as the entropy coder, prev_intra_luma_pred_flag and mpm_idx are coded using an adaptive context (i.e., via a probability model). On the other hand, rem_intra_lumajpred_mode is binarized using a fixed-length-code (FLC) in the 4x4 and 64x64 case, since only 16 and 2 remaining intra prediction modes are present, respectively. For the 8x8, 16x16 and 32x32 cases, rem_intra_luma_pred_mode is binarized using a FLC with a special case for rem_intra_luma_pred_mode being equal to 31 or 32, since there are 33 remaining intra prediction modes available. Furthermore, the bins of rem_intra_luma_pred_mode are coded using an adaptive context as well. Therefore, a total of three contexts are used for intra mode coding when CABAC is used as the entropy coder.
[00126] When CAVLC (Context-Adaptive Variable Length Code) is used as the entropy coder, prev_intra_luma_pred_flag and mpm_idx are coded as bits (or may also be referred to as "binary bits"). On the other hand, rem_intra_luma_pred_mode is coded using a fixed-length-code (FLC) in the 64x64 case, since only 2 remaining intra prediction modes are present, respectively. For the 4x4, 8x8, 16x16 and 32x32 cases, rem_intra_luma_pred_mode is coded using a variable-length-code (VLC) with 16 entries for the 4x4 case, and 33 entries for each of the 8x8, 16x16 and 32x32 cases. Therefore, two additional tables of VLC codeword and codeword lengths are needed for the 16 entries case, and for the 33 entries cases.
[00127] Example 1 may be implemented in an "All Intra High-Efficiency (HE)", which uses CABAC as the entropy coder. An average coding gain of about 0.12% may be achieved despite the simplified encoding of the intra mode by reducing the number of contexts. The number of bins coded in bypass mode is increased, and the special case (of rem_intra_lumajpred_mode being 31 or 32) for block sizes of 8x8, 16x16 and 32x32 is avoided.
[00128] Example 2
[00129] In Example 2, the coding of the Luma intra prediction mode is simplified. The MPM coding remains the same as described in Example 1 above. However, when CABAC is used as the entropy coder, the context used is removed to code mpm_idx. In other words, this syntax element is coded in bypass mode (assuming an equal probability distribution), which reduces the complexity of binary arithmetic coding (BAC) in this example. Furthermore, one context model and initialization entry may be eliminated.
[00130] Example 3
[00131] FIG. 10 shows a exemplary decoding tree that summarizes the coding of reni_intra_luma_pred_mode. In the case where rem_intra_luma_pred_mode == 0 happens much more frequently than other cases, this implies that this event (symbol) may be coded with a shorter codeword. A first signalling is activated if rem_intra_luma_pred_mode == 0 using a rem_intra_Iuma_pred_mode_eq0 flag (for example, the occurrence flag as defined above), before coding rem_intra_luma_pred_mode.
[00132] There are several benefits of introducing the rem_intra_luma_pred_mode_eq0 flag. First, for the 4x4 case as described in Table 1, this enables coding of 17 remaining modes (i.e., modes that are not the two MPM), thereby including the Hor+6 intra prediction mode, which was initially not available. Second, for both the 4x4 case and the 8x8, 16x16 and 32x32 cases as described in Table 1, a simple FLC may be used to binarize rem_intra_luma_pred_mode_minusl (for example, the occurrence symbol as described above) when CABAC is used as the entropy coder, while a FLC may be used to directly code rem_intra_luma_pred_mode_minusl when CAVLC is used as the entropy coder. For 64x64 blocks as described in Table 1, rem_intra_lumajpred_mode_minusl is inferred to be 0, and no further bits need to be coded.
[00133] Table 3 is based on the example described in Table 1 and summarizes the number of bins/bits used for rem_intra_luma_pred_mode_minusl for each block size, as well as the total number of available intra modes.
[00134] Table 3
Figure imgf000025_0001
[00135] Table 4 is based on the example described in Table 2 and summarizes the number of bins/bits used for rem_intra_luma_pred_mode_minusl for each block size, as well as the total number of available intra modes.
[00136] Table 4
Figure imgf000025_0002
[00137] When CABAC is used as the entropy coder, only prev_intra_luma_pred and rem_intra_luma_pred_mode_eqO are coded using context models. The mpm_idx and rem_intra_Iuma_pred_mode_minusl are coded in bypass mode. Therefore, the number of contexts may be reduced from 3 to 2, and at most 2 bins are coded using context models.
[00138] In a different example using CABAC, rem_intra_Iuma_pred_mode_eq0 may be coded in bypass mode.
[00139] When CAVLC is used as the entropy coder, prev_intra_luma_pred, rem_intra_lumajpred_mode_eqO and mpm_idx are coded as binary flags, while rem_intra_luma_pred_mode_minusl is coded using a FLC with the appropriate number of bits depending on the block size, as shown in Tables 3 and 4 above.
[00140] Example 3 may be implemented in an "All Intra Low Complexity (LC)", which uses CAVLC as the entropy coder. There may be an average coding loss of about 0.14 %, which is relatively insignificant given the advantage of simplifying the encoding of the intra prediction mode by avoiding the use of a VLC and by using a FLC instead.
[00141] Example 4
[00142] An alternative coding scheme, as shown in the decoding tree of FIG. 11, is considered for rem_intra_Iuma_pred_mode when CAVLC is used as the entropy coder. This alternative scheme uses a combination of unary coding and FLC, both of which requires no look-up tables and is simple to implement. rem_intra_luma_pred_mode_haIf and ren intra_luma_pred_mode_idx may refer to the grouping flag and the grouping symbol as defined above.
[00143] To illustrate an example of this alternative scheme, it may be assumed that the number of remaining modes is 1 + 2N, i.e., ranging from [0, 2^]. When the number of modes is 19, N= 4, and when the number of modes is 35, N= 5.
[00144] In this alternative scheme, a unary code is first used to signal if the remaining mode is in [1,
Figure imgf000026_0001
2Nl Table 5 shows the codewords used for different ranges. [00145] Table 5
Figure imgf000027_0001
[00146] If the range signaled is either [1, 2^'] or [1+2^ 2N], then a N-l length FLC is used to signal the index within the signaled range. If 0 is signalled, no further codeword needs to be sent. Also, if N = 0, then only a binary codeword is used to signal if the remaining mode is 0 or 1.
[00147] In this alternative scheme (for CAVLC used as the entropy coder), there is no additional need to have any VLC tables for the decoding of intra prediction modes. There is no coding loss even though the coding of the intra mode has been made simpler by replacing a look-up table based VLC with a simple combination of unary coding and FLC. In addition, there is no significant change in both encoding and decoding runtime.
[00148] As used herein, the term "and/or" includes any and all combinations of one or more of the associated listed items.
[00149] In the context of various embodiments, the term "about" or "approximately" as applied to a numeric value encompasses the exact value and a variance of +/- 5% of the value.
[00150] The phrase "at least substantially" may include "exactly" and a variance of +/- 5% thereof. As an example and not limitation, the phrase "A is at least substantially the same as B" may encompass embodiments where A is exactly the same as B, or where A may be within a variance of +/- 5%, for example of a value, of B, or vice versa.
[00151] While the invention has been particularly shown and described with reference to specific embodiments, it should be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. The scope of the invention is thus indicated by the appended claims and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced.

Claims

1. A method of coding an intra prediction mode, the method comprising:
providing a type flag indicating an intra prediction mode for a block of a frame of a video sequence;
providing further data to be coded; and
coding the further data using an adaptive context of a context- adaptive binary arithmetic code entropy coder and coding the type flag based on an equal probability distribution independent from the adaptive context.
2. The method of claim 1, wherein the intra prediction mode for the block is determined using a neighbouring block of the block.
3. The method of claim 2, wherein the intra prediction mode for the block is an intra prediction mode used by the neighbouring block if it has been determined that the neighbouring block is intra coded and is positioned within the frame.
4. The method of claim 2, wherein the intra prediction mode for the block is a planar prediction mode or a DC prediction mode if it has been determined that the neighbouring block is positioned outside the frame, or is not intra-coded.
5. The method of any one of claims 1 to 4, wherein coding the type flag comprises coding the type flag using bits when a context-adaptive variable length code entropy coder is used.
6. A method of coding an intra prediction mode, the method comprising:
determining a candidate for an intra prediction mode for a block of a frame of a video sequence; and
generating an input string for an encoder, the encoder being configured to encode the frame, wherein the input string comprises an occurrence flag indicating whether the intra prediction mode for the block is a predefined mode that is not the candidate.
7. The method of claim 6, wherein the predefined mode is an intra prediction mode that occurs more often than another intra prediction mode that is not the candidate.
8. The method of claim 6 or 7, further comprising coding the occurrence flag using an adaptive context of a context-adaptive binary arithmetic code entropy coder or using bits when a context-adaptive variable length code entropy coder is used.
9. The method of claim 6 or 7, further comprising providing further data to be coded; coding the further data using an adaptive context of a context-adaptive binary arithmetic code entropy coder and coding the occurrence flag based on an equal probability distribution independent from the adaptive context.
10. The method of any one of claims 6 to 9, wherein the input string further comprises an occurrence symbol indicating the intra prediction mode for the block, that is not the predefined mode, if it has been determined that the occurrence flag indicates that the intra prediction mode for the block is not the predefined mode.
11. The method of any one of claims 6 to 10,
wherein when the occurrence flag is set to "1" indicating that the intra prediction mode for the block is the predefined mode, a preset mode value associating to the intra prediction mode for the block is set at a mode value of the predefined mode; and
wherein when the occurrence flag is set to "0" indicating that the intra prediction mode for the block is not the predefined mode, the preset mode value associating to the intra prediction mode for the block is set at a mode value of another intra prediction mode incremented by 1, wherein the other intra prediction mode is not the predefined mode.
12. The method of claim 11 ,
wherein the candidate comprises two modes having a first mode value and a second mode value respectively;
wherein the first mode value is less than the second mode value; and
wherein the occurrence symbol indicates
the preset mode value if it has been determined that the preset mode value is less than the first mode value; or
the preset mode value incremented by 1 if it has been determined that the preset mode value is more than or equal to the first mode value but less than the second mode value decremented by 1 ; or
the preset mode value incremented by 2 if it has been determined that the preset mode value is more than or equal to the second mode value decremented by 1.
13. The- method of any one of claims 10 to 12, further comprising coding the occurrence symbol using a fixed-length code.
14. The method of any one of claims 10 to 12, further comprising coding the occurrence symbol based on an equal probability distribution independent from the adaptive context of the context-adaptive binary arithmetic code entropy coder.
15. The method of any one of claims 1 to 14, wherein the intra prediction mode for the block is one of 35 luma intra prediction modes for a high-efficiency video coding standard.
16. The method of any one claims 1 to 15, wherein the block is selected from a group consisting of a 4x4 block, a 8x8 block, a 16x16 block, a 32x32 block, and a 64x64 block.
17. An apparatus for coding an intra prediction mode, the apparatus comprising: a flag provider configured to provide a type flag indicating an intra prediction mode for a block of a frame of a video sequence; a data provider configured to provide further data to be coded; and an encoder configured to code the further data using an adaptive context of a context-adaptive binary arithmetic code entropy coder and to code the type flag based on an equal probability distribution independent from the adaptive context.
18. The apparatus of claim 17, wherein the intra prediction mode for the block is determined using a neighbouring block of the block.
19. The apparatus of claim 18, wherein the intra prediction mode for the block is an intra prediction mode used by the neighbouring block if it has been determined that the neighbouring block is intra coded and is positioned within the frame.
20. The apparatus of claim 18, wherein the intra prediction mode for the block is a planar prediction mode or a DC prediction mode if it has been determined that the neighbouring block is positioned outside the frame, or is not intra-coded.
21. The apparatus of any one of claims 17 to 20, wherein the encoder is configured to code the type flag using bits when the encoder is a context-adaptive variable length code entropy coder.
22. An apparatus for coding an intra prediction mode, the apparatus comprising: a determiner configured to determine a candidate for an intra prediction mode for a block of a frame of a video sequence; and
a string generator configured to generate an input string for an encoder, the encoder being configured to encode the frame,
wherein the input string comprises an occurrence flag indicating whether the intra prediction mode for the block is a predefined mode that is not the candidate.
23. The apparatus of claim 22, wherein the predefined mode is an intra prediction mode that occurs more often than another intra prediction mode that is not the candidate.
24. The apparatus of claim 22 or 23, wherein the encoder is further configured to code the occurrence flag using an adaptive context of a context-adaptive binary arithmetic code entropy coder or to code the occurrence flag using bits when the encoder is a context-adaptive variable length code entropy coder.
25. The apparatus of claim 22 or 23, further comprising a data provider configured to provide further data to be coded,
wherein the encoder is further configured to code the further data using an adaptive context of a context-adaptive binary arithmetic code entropy coder and to code the occurrence flag based on an equal probability distribution independent from the adaptive context.
26. The apparatus of any one of claims 22 to 25, wherein the input string further comprises an occurrence symbol indicating the intra prediction mode for the block, that is not the predefined mode, if it has been determined that the occurrence flag indicates that the intra prediction mode for the block is not the predefined mode.
27. The apparatus of any one of claims 22 to 26,
wherein when the occurrence flag is set to "1" indicating that the intra prediction mode for the block is the predefined mode, a preset mode value associating to the intra prediction mode for the block is set at a mode value of the predefined mode; and
wherein when the occurrence flag is set to "0" indicating that the intra prediction mode for the block is not the predefined mode, the preset mode value associating to the intra prediction mode for the block is set at a mode value of another intra prediction mode incremented by 1, wherein the other intra prediction mode is not the predefined mode.
28. The apparatus of claim 27,
wherein the candidate comprises two modes having a first mode value and a second mode value respectively; wherein the first mode value is less than the second mode value; and
wherein the occurrence symbol indicates
the preset mode value if it has been determined that the preset mode value is less than the first mode value; or
the preset mode value incremented by 1 if it has been determined that the preset mode value is more than or equal to the first mode value but less than the second mode value decremented by 1 ; or
the preset mode value incremented by 2 if it has been determined that the preset mode value is more than or equal to the second mode value decremented by 1.
29. The apparatus of any one of claims 26 to 28, wherein the encoder is configured to code the occurrence symbol using a fixed-length code.
30. The apparatus of any one of claims 26 to 29, wherein the encoder is configured to code the occurrence symbol based on an equal probability distribution independent from the adaptive context of the context-adaptive binary arithmetic code entropy coder.
31. The apparatus of any one of claims 17 to 30, wherein the intra prediction mode for the block is one of 35 luma intra prediction modes for a high-efficiency video coding standard.
32. The apparatus of any one claims 17 to 31, wherein the block is selected from a group consisting of a 4x4 block, a 8x8 block, a 16x16 block, a 32x32 block, and a 64x64 block.
PCT/SG2012/000433 2011-11-17 2012-11-19 Method and an apparatus for coding an intra prediction mode WO2013074042A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
SG201108534-7 2011-11-17
SG201108534 2011-11-17

Publications (1)

Publication Number Publication Date
WO2013074042A1 true WO2013074042A1 (en) 2013-05-23

Family

ID=48429972

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/SG2012/000433 WO2013074042A1 (en) 2011-11-17 2012-11-19 Method and an apparatus for coding an intra prediction mode

Country Status (1)

Country Link
WO (1) WO2013074042A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018232676A1 (en) * 2017-06-22 2018-12-27 华为技术有限公司 Method and apparatus for intra-frame prediction
CN112532989A (en) * 2020-06-02 2021-03-19 腾讯科技(深圳)有限公司 Video encoding method, video decoding method and related equipment
CN114173115A (en) * 2019-03-23 2022-03-11 华为技术有限公司 Encoder, decoder and corresponding methods for intra prediction

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050089235A1 (en) * 2003-10-28 2005-04-28 Satoshi Sakaguchi Intra-picture prediction coding method
US20110243229A1 (en) * 2008-09-22 2011-10-06 Sk Telecom. Co., Ltd Apparatus and method for image encoding/decoding using predictability of intra-prediction mode
US20110249739A1 (en) * 2010-04-12 2011-10-13 Sony Corporation Context adaptive directional intra prediction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050089235A1 (en) * 2003-10-28 2005-04-28 Satoshi Sakaguchi Intra-picture prediction coding method
US20110243229A1 (en) * 2008-09-22 2011-10-06 Sk Telecom. Co., Ltd Apparatus and method for image encoding/decoding using predictability of intra-prediction mode
US20110249739A1 (en) * 2010-04-12 2011-10-13 Sony Corporation Context adaptive directional intra prediction

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018232676A1 (en) * 2017-06-22 2018-12-27 华为技术有限公司 Method and apparatus for intra-frame prediction
US10819999B2 (en) 2017-06-22 2020-10-27 Huawei Technologies Co., Ltd. Intra-frame prediction method and apparatus
CN114173115A (en) * 2019-03-23 2022-03-11 华为技术有限公司 Encoder, decoder and corresponding methods for intra prediction
CN114173115B (en) * 2019-03-23 2022-10-11 华为技术有限公司 Encoder, decoder and corresponding methods for intra prediction
CN112532989A (en) * 2020-06-02 2021-03-19 腾讯科技(深圳)有限公司 Video encoding method, video decoding method and related equipment

Similar Documents

Publication Publication Date Title
JP7445030B2 (en) Unified significance map encoding method and apparatus
CN110460845B (en) Method for palette coding
EP2839645B1 (en) Coefficient groups and coefficient coding for coefficient scans
US20170041022A1 (en) Method and Apparatus for Reordered Binarization of Syntax Elements in CABAC
CA2771840C (en) Binarization of dqp using separate absolute value and sign (savs) in cabac
JP6730187B2 (en) Data encoding and decoding
WO2013036071A2 (en) Inter prediction method and apparatus therefor
EP3841746A1 (en) Coding transform coefficients with throughput constraints
WO2019100060A1 (en) Memory reduction for context initialization with temporal prediction
WO2015142854A1 (en) Dictionary coding of video content
EP2727363A1 (en) Method and apparatus of intra mode coding
JP2015507885A5 (en)
CN108141621B (en) Method and device for coding and decoding video data
KR20130048153A (en) Significance map encoding and decoding using partition selection
WO2013074042A1 (en) Method and an apparatus for coding an intra prediction mode
CN107995496B (en) Method for determining binary code words for transform coefficients
US20210021829A1 (en) Binarization of dqp using separate absolute value and sign (savs) in cabac
CN104519356A (en) CABAC (context-based adaptive binary arithmetic coding) coding/decoding method

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: 12848896

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12848896

Country of ref document: EP

Kind code of ref document: A1