WO2018207956A1 - Method and device for entropy-encoding and entropy-decoding video signal - Google Patents
Method and device for entropy-encoding and entropy-decoding video signal Download PDFInfo
- Publication number
- WO2018207956A1 WO2018207956A1 PCT/KR2017/004818 KR2017004818W WO2018207956A1 WO 2018207956 A1 WO2018207956 A1 WO 2018207956A1 KR 2017004818 W KR2017004818 W KR 2017004818W WO 2018207956 A1 WO2018207956 A1 WO 2018207956A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- syntax element
- current
- decoding
- unit
- symbol
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/65—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
- H04N19/68—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience involving the insertion of resynchronisation markers into the bitstream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
- the present invention relates to a method and apparatus for entropy encoding and decoding video signals. More specifically, the present invention relates to a method and apparatus for entropy encoding and decoding a video signal using several bit streams.
- Entropy coding is a process of generating a raw byte sequence payload (RWSP) by losslessly compressing syntax elements determined through an encoding process.
- Entropy coding uses syntax statistics to assign short bits to frequently occurring syntax and long bits to syntax that is not syntactically to express syntax elements as concise data.
- CABAC Context-based Adaptive Binary Arithmetic Coding
- CABAC uses a context model that is adaptively updated based on the context of the syntax and previously generated symbols during binary arithmetic coding.
- this CABAC also has a high complexity and has a sequential structure, which makes it difficult to perform parallel execution.
- An object of the present invention is to propose a method of coding a syntax element by mapping a syntax element to a plurality of bit streams in a function block unit for parallelization of entropy coding.
- An aspect of the present invention provides a method of performing entropy decoding on a video signal, comprising: receiving a video signal consisting of a plurality of bit streams; Decoding a symbol of a syntax element for each bit stream of the video signal; And deriving information of the syntax element using the decoded symbol, wherein the syntax element is a function block unit indicating an area in which one or more syntax elements are independently processed in a current block.
- the plurality of bit streams may be alternately mapped.
- the decoding of the symbol of the syntax element may further include performing the synchronization between the plurality of bit streams in units of the functional blocks.
- the decoding of the symbol of the syntax element may further include performing the synchronization between the plurality of bit streams in units of the syntax element.
- the performing of the synchronization between the plurality of bit streams further comprises acquiring a lock for starting decoding of a current syntax element in a current bit stream, and only when the lock is obtained.
- the symbol of the current syntax element can be decoded.
- the performing of the synchronization between the plurality of bit streams may further include returning the obtained lock when decoding of the current syntax element is terminated.
- the performing of the synchronization between the plurality of bit streams may include: checking lock state information indicating whether a lock on the current syntax element is obtained in a bit stream other than the current bit stream. It may further include.
- the performing of the synchronization between the plurality of bit streams may include performing the synchronization between the plurality of bit streams when a regular coding referencing a context is applied to a current syntax element. .
- the decoding of the symbol of the syntax element may further include converting a current bit stream after decoding the symbol of the syntax element in units of the functional blocks.
- an apparatus for performing entropy decoding on a video signal comprising: a video signal receiver configured to receive a video signal including a plurality of bit streams; A symbol decoder for decoding a symbol of a syntax element for each bit stream of the video signal; And a syntax element deriving unit configured to decode information of the syntax element using the decoded symbol, wherein the syntax element indicates a region in which one or more syntax elements are independently processed in a current block. ) May be alternately mapped to the plurality of bit streams.
- the symbol decoding unit may include a synchronization unit for performing synchronization between the plurality of bit streams in units of the functional blocks.
- the symbol decoding unit may include a synchronization unit that performs synchronization between the plurality of bit streams in units of syntax elements.
- the synchronization unit may acquire a lock for starting decoding of the current syntax element in the current bit stream, and the symbol of the current syntax element may be decoded only when the lock is obtained.
- the synchronization unit may return the obtained lock when decoding of the current syntax element is terminated.
- the synchronization unit may check lock state information indicating whether a lock on the current syntax element is obtained in a bit stream other than the current bit stream.
- the synchronization unit may perform synchronization between the plurality of bit streams when regular coding that refers to a context is applied to a current syntax element.
- the symbol decoder may switch a current bit stream after decoding a symbol of a syntax element in units of the functional blocks.
- the thread generating unit for generating a thread (thread) indicating a unit of work to be processed independently for each functional block unit to register in a thread queue for storing the information of the thread;
- a thread decoder configured to decode a plurality of threads stored in the thread queue in parallel.
- throughput of entropy coding may be improved by coding syntax elements in function block units and parallelizing them into multiple bit streams.
- syntax elements may be coded in parallel while keeping the coding order.
- the symbols with regular coding and the symbols with bypass coding are assigned to multiple bit streams in parallel to improve throughput and complexity. Can be improved.
- the throughput of entropy coding can be improved by configuring a symbol group so that data dependency is minimized.
- FIG. 1 is a schematic block diagram of an encoder in which encoding of a video signal is performed as an embodiment to which the present invention is applied.
- FIG. 2 is a schematic block diagram of a decoder in which decoding of a video signal is performed as an embodiment to which the present invention is applied.
- FIG. 3 is a schematic block diagram of an entropy encoding unit to which CABAC (Context-based Adaptive Binary Arithmetic Coding) is applied according to an embodiment to which the present invention is applied.
- CABAC Context-based Adaptive Binary Arithmetic Coding
- FIG. 4 is a schematic block diagram of an entropy decoding unit to which CABAC (Context-based Adaptive Binary Arithmetic Coding) is applied according to an embodiment to which the present invention is applied.
- CABAC Context-based Adaptive Binary Arithmetic Coding
- CABAC Context-based Adaptive Binary Arithmetic Coding
- CABAC Context-based Adaptive Binary Arithmetic Coding
- FIG. 7 is a diagram illustrating a method of mapping syntax elements of residual coding syntax to a plurality of bit streams in a function block unit according to an embodiment to which the present invention may be applied. to be.
- FIG. 8 is a residual coding syntax illustrating a method of performing synchronization between several bit streams in units of syntax elements as an embodiment to which the present invention can be applied.
- FIG. 9 is a syntax illustrating a method of coding a syntax element of residual coding in a function block unit in a function block unit according to an embodiment to which the present invention is applied.
- FIG. 10 is a syntax illustrating a method of coding a syntax element of a coding unit in various bit streams as an embodiment to which the present invention may be applied.
- FIG. 11 is a syntax illustrating a method of coding a syntax element of a prediction unit in several bit streams as an embodiment to which the present invention may be applied.
- 12 is a syntax illustrating a method of coding a syntax element of a prediction unit in several bit streams as an embodiment to which the present invention may be applied.
- FIG. 13 is a diagram illustrating a method of coding syntax elements of a coding unit in various bit streams as an embodiment to which the present invention may be applied.
- FIG. 14 is a coding unit syntax illustrating a method of performing synchronization between several bit streams in units of syntax elements as an embodiment to which the present invention may be applied.
- FIG. 15 is a syntax illustrating a method of coding a syntax element of a prediction unit in several bit streams as an embodiment to which the present invention may be applied.
- FIG. 16 is a diagram illustrating a method of coding a syntax element of a prediction unit (PU) in several bit streams as an embodiment to which the present invention may be applied.
- FIG. 17 is a prediction unit syntax illustrating a method of performing synchronization between several bit streams in units of syntax elements according to an embodiment to which the present invention may be applied.
- FIG. 18 is a diagram for describing a method of coding by mapping units divided hierarchically from a coding tree unit (CTU) to several bit streams as an embodiment to which the present invention may be applied.
- CTU coding tree unit
- FIG. 19 is a flowchart to describe a process of performing entropy decoding on a video signal composed of several bit streams as an embodiment to which the present invention may be applied.
- signals, data, samples, pictures, frames, and blocks may be interpreted as appropriate in each coding process.
- FIG. 1 is a schematic block diagram of an encoder in which encoding of a video signal is performed as an embodiment to which the present invention is applied.
- the encoder 100 may include an image splitter 110, a transformer 120, a quantizer 130, an inverse quantizer 140, an inverse transformer 150, a filter 160, and a decoder. It may include a decoded picture buffer (DPB) 170, an inter predictor 180, an intra predictor 185, and an entropy encoder 190.
- DPB decoded picture buffer
- the image divider 110 may divide the input image (or a picture or a frame) input to the encoder 100 into one or more processing units.
- the processing unit may be a Coding Tree Unit (CTU), a Coding Unit (CU), a Prediction Unit (PU), or a Transform Unit (TU).
- CTU Coding Tree Unit
- CU Coding Unit
- PU Prediction Unit
- TU Transform Unit
- the encoder 100 may generate a residual signal by subtracting the prediction signal output from the inter prediction unit 180 or the intra prediction unit 185 from the input image signal, and the generated residual signal is converted into a conversion unit ( 120).
- the transformer 120 may generate a transform coefficient by applying a transform technique to the residual signal.
- the transformation technique may include at least one of a discrete cosine transform (DCT), a discrete sine transform (DST), a karhunen-loeve transform (KLT), a graph-based transform (GBT), or a conditionally non-linear transform (CNT).
- DCT discrete cosine transform
- DST discrete sine transform
- KLT karhunen-loeve transform
- GBT graph-based transform
- CNT conditionally non-linear transform
- GBT means a conversion obtained from this graph when the relationship information between pixels is represented by a graph.
- CNT refers to a transform that is generated based on and generates a prediction signal using all previously reconstructed pixels.
- the conversion process may be applied to pixel blocks having the same size as the square, or may be applied to blocks of variable size rather than square.
- the quantization unit 130 may quantize the transform coefficients and transmit them to the entropy encoding unit 190, and the entropy encoding unit 190 may entropy code the quantized signal and output the bitstream.
- the quantized signal output from the quantization unit 130 may be used to generate a prediction signal.
- the quantized signal may reconstruct the residual signal by applying inverse quantization and inverse transformation through inverse quantization unit 140 and inverse transformation unit 150 in a loop.
- the reconstructed signal may be generated by adding the reconstructed residual signal to the prediction signal output from the inter predictor 180 or the intra predictor 185.
- the filtering unit 160 applies filtering to the reconstruction signal and outputs it to the reproduction apparatus or transmits the decoded picture buffer to the decoding picture buffer 170.
- the filtered signal transmitted to the decoded picture buffer 170 may be used as the reference picture in the inter predictor 180. As such, by using the filtered picture as a reference picture in the inter prediction mode, not only image quality but also encoding efficiency may be improved.
- the decoded picture buffer 170 may store the filtered picture for use as a reference picture in the inter prediction unit 180.
- the inter prediction unit 180 performs temporal prediction and / or spatial prediction to remove temporal redundancy and / or spatial redundancy with reference to the reconstructed picture.
- the motion information may be predicted based on the correlation of the motion information between the neighboring block and the current block.
- the intra predictor 185 may predict the current block by referring to samples around the block to which current encoding is to be performed.
- the intra prediction unit 185 may perform the following process to perform intra prediction. First, reference samples necessary for generating a prediction signal may be prepared. The prediction signal may be generated using the prepared reference sample. Then, the prediction mode is encoded. In this case, the reference sample may be prepared through reference sample padding and / or reference sample filtering. Since the reference sample has been predicted and reconstructed, there may be a quantization error. Accordingly, the reference sample filtering process may be performed for each prediction mode used for intra prediction to reduce such an error.
- the prediction signal generated by the inter predictor 180 or the intra predictor 185 may be used to generate a reconstruction signal or to generate a residual signal.
- FIG. 2 is a schematic block diagram of a decoder in which decoding of a video signal is performed as an embodiment to which the present invention is applied.
- the decoder 200 may include an entropy decoding unit 210, an inverse quantization unit 220, an inverse transform unit 230, a filtering unit 240, and a decoded picture buffer unit (DPB) 250. ), An inter predictor 260, and an intra predictor 265.
- the reconstructed video signal output through the decoder 200 may be reproduced through the reproducing apparatus.
- the decoder 200 may receive a signal output from the encoder 100 of FIG. 1, and the received signal may be entropy decoded through the entropy decoding unit 210.
- the inverse quantization unit 220 obtains a transform coefficient from the entropy decoded signal using the quantization step size information.
- the inverse transformer 230 inversely transforms a transform coefficient to obtain a residual signal.
- the reconstruction signal is generated by adding the obtained residual signal to the prediction signal output from the inter prediction unit 260 or the intra prediction unit 265.
- the filtering unit 240 applies filtering to the reconstruction signal and outputs it to the reproduction apparatus or transmits the decoded picture buffer unit 250 to the reproduction device.
- the filtered signal transmitted to the decoded picture buffer unit 250 may be used as the reference picture in the inter predictor 260.
- the embodiments described by the filtering unit 160, the inter prediction unit 180, and the intra prediction unit 185 of the encoder 100 are respectively the filtering unit 240, the inter prediction unit 260, and the decoder. The same may be applied to the intra predictor 265.
- FIG. 3 is a schematic block diagram of an entropy encoding unit to which CABAC (Context-based Adaptive Binary Arithmetic Coding) is applied according to an embodiment to which the present invention is applied.
- CABAC Context-based Adaptive Binary Arithmetic Coding
- the entropy encoding unit 300 to which the present invention is applied includes a binarization unit 310, a context modeling unit 320, a binary arithmetic encoding unit 330, and a memory 360, and the binary arithmetic encoding unit 330 includes: A regular binary encoding unit 340 and a bypass binary encoding unit 350.
- the regular binary encoding unit 340 and the bypass binary encoding unit 350 may be referred to as a normal coding engine and a bypass coding engine, respectively.
- the binarization unit 310 may output a binary symbol string composed of a binary value of 0 or 1 by receiving a sequence of data symbols and performing binarization.
- the binarization unit 310 may map syntax elements into binary symbols.
- Several different binarization processes such as unary (U), truncated unary (TU), k-th order Exp-Golomb (EGk), and fixed length processes, support binarization. Can be used for The binarization process may be selected based on the type of syntax element.
- the output binary symbol string is transmitted to the context modeling unit 320.
- the context modeling unit 320 selects probability information necessary for coding a current block from a memory and transmits the probability information to the binary arithmetic encoding unit 330.
- the context memory may be selected from the memory 360 based on the syntax element to be coded, and the probability information required for coding the current syntax element may be selected through the bin index binIdx.
- context refers to information about a probability of occurrence of a symbol
- context modeling refers to a process of estimating a probability necessary for binary arithmetic coding of the next bin from information about previously coded bins.
- the context may include a state representing a specific probability value and a Most Probable Symbol (MPS).
- the context modeler 320 may provide accurate probability estimation necessary to achieve high coding efficiency. Accordingly, different context models may be used for different binary symbols and the probability of such context model may be updated based on the values of previously coded binary symbols.
- Binary symbols with similar distributions can share the same context model.
- the context model for each of these binary symbols includes the syntax information of the bin, the bin index (binIdx) indicating the location of the bin in the bin string, the probability of the bin in the neighboring block of the block containing the bin, and the neighboring block for probability estimation. At least one of the decoding values of the specific syntax element of may be used.
- the binary arithmetic encoding unit 330 includes a regular binary encoding unit 340 and a bypass binary encoding unit 350 to perform entropy encoding on the output string. And output compressed data bits.
- the regular binary encoding unit 340 performs arithmetic coding based on recursive interval division.
- an interval (or interval, range) having an initial value of 0 to 1 is divided into two lower intervals based on a probability of a binary symbol.
- the encoded bits are converted to binary decimal numbers, they provide an offset from which one of intervals representing 0 or 1 can be selected in the course of successive decoding of binary symbol values.
- the interval can be updated to equalize the selected lower interval, and the interval division process itself is repeated.
- the spacing and offset have limited bit precision, so renormalization may be necessary to prevent overflow each time the spacing falls below a certain value. The renormalization may occur after each binary symbol is encoded or decoded.
- the bypass binary encoding unit 350 performs encoding without a context model, and performs coding by fixing a probability of a bin currently coded to 0.5. This can be used when it is difficult to determine the probability of syntax or when you want to code at high speed.
- FIG. 4 is a schematic block diagram of an entropy decoding unit to which CABAC (Context-based Adaptive Binary Arithmetic Coding) is applied according to an embodiment to which the present invention is applied.
- CABAC Context-based Adaptive Binary Arithmetic Coding
- the entropy decoding unit 400 to which the present invention is applied includes a context modeling unit 410, a binary arithmetic decoding unit 420, a memory 450, and an inverse binarization unit 460, and the binary arithmetic decoding unit 420.
- a regular binary decoding unit 430 and a bypass binary decoding unit 440 are included.
- the entropy decoding unit 400 receives the bit stream and checks whether a bypass mode is applied to the current syntax element.
- the bypass mode means that the coding is performed by fixing the probability of the currently coded bin to 0.5 without using the context model.
- the regular binary decoding unit 430 performs binary arithmetic decoding according to a regular mode.
- the context modeling unit 410 selects probability information necessary for decoding the current bitstream from the memory 450 and transmits the probability information to the regular binary decoding unit 430.
- bypass binary decoding unit 440 performs binary arithmetic decoding according to the bypass mode.
- the inverse binarization unit 460 receives a binary-type bin decoded by the binary arithmetic decoding unit 420 and converts it into an integer-type syntax element value.
- the debinarization unit 460 may output the binary bin as it is.
- CABAC Context-based Adaptive Binary Arithmetic Coding
- the encoder may perform binarization on the syntax element (S510).
- the encoder may determine whether to perform binary arithmetic coding according to a normal mode or binary arithmetic coding according to a bypass mode (S520).
- the encoder may select a context model (S530) and perform binary arithmetic encoding based on the context model (S540).
- the encoder may update the context model (S550), and may select a suitable context model again based on the updated context model in operation S530.
- the encoder may perform binary arithmetic encoding based on a probability of 0.5 (S560).
- CABAC Context-based Adaptive Binary Arithmetic Coding
- the decoder may receive a bitstream (S610).
- the decoder may check whether a regular mode or a bypass mode is applied to the current syntax element (S620).
- whether to apply the bypass mode may be determined in advance according to the type of syntax.
- symbols applied with the normal mode and symbols applied with the bypass mode may be combined to form a syntax element.
- the decoder may check whether a bypass mode is applied to the symbols of the current syntax element.
- the decoder may select a context model (S630) and perform binary arithmetic decoding based on the context model (S640).
- the decoder may update the context model (S650), and may select a suitable context model again based on the updated context model in operation S630.
- the decoder may perform binary arithmetic decoding based on the probability 0.5 (S660).
- the decoder may perform inverse binarization on the decoded bin string (S670). For example, a decoded binary type bin may be input and converted into an integer syntax element value.
- the entropy coding procedure is likely to be a bottleneck of overall performance due to data dependence inherent to arithmetic coding algorithms.
- a large amount of buffer memory may be needed because several frames must be buffered for real-time processing. Therefore, an improvement in throughput of entropy coding is required.
- CABAC Context-Adaptive Binary Arithmetic Coding
- a binary symbol refers to a symbol having a value of 0 or 1.
- a multi-symbol ie, a non-binary symbol refers to a symbol that can have three or more values.
- the set of all possible unit numbers finally input to the arithmetic coding engine may be referred to as alphabet. Accordingly, in the case of a binary symbol, the alphabet may be represented as being composed of 0 and 1, or may be represented as being 0 and 1 as alphabetical symbols.
- the interval (or interval) of [0, 1] is divided by a probability interval proportional to the probability of occurrence of each symbol.
- the length of each probability interval is determined in proportion to the probability value for the corresponding symbol.
- the interval for the currently coded symbol is selected, and the selected interval is used when coding the next symbol. Since the length of the interval continues to get smaller as the symbols are coded, the interval length can be scaled through a renormalization procedure so that the length of the interval is always within a certain range.
- CABAC Context Adaptive Binary Arithmetic Coding
- the probability interval is divided into two, and in multi-symbol (or multi-valued) arithmetic coding, the probability interval is divided by the number of symbols used (ie, the number of alphabet symbols). Except for the number of divided intervals, the arithmetic coding method does not have a difference between binary arithmetic coding and multi-symbol arithmetic coding. In other words, the same arithmetic coding method can be applied to binary arithmetic coding and multi-symbol arithmetic coding.
- the present invention proposes a method of coding a syntax element by mapping a syntax element to a plurality of bit streams in a function block unit in order to improve throughput of entropy coding.
- a functional block represents an area or a block in which one or more syntax elements are mapped and processed (or coded), and the term of the functional block is not limited to the name.
- the functional block may be referred to as a sub block, a functional unit, an area unit, a functional area, a sub area, a syntax element group, and the like.
- the present invention proposes a method for performing synchronization between several bit streams in units of functional blocks or in syntax elements.
- FIG. 7 is a diagram illustrating a method of mapping syntax elements of residual coding syntax to a plurality of bit streams in a function block unit according to an embodiment to which the present invention may be applied. to be.
- the encoder / decoder may split a residual coding routine (or residual coding syntax) into a plurality of subroutines (or stages), and map the divided subroutines to several bit streams to pipelining ( Can be coded in a pipelining fashion.
- the coding routine represents a series of coding procedures that are performed on a specific syntax structure.
- the coding includes encoding and decoding.
- the subroutine represents an area obtained by dividing the coding routine into functional block units.
- the residual coding routine of HEVC may be divided into functional block units, it may be divided into seven subroutines.
- the first subroutine of the divided seven subroutines may be represented as shown in Table 1 below.
- the encoder / decoder may code syntax elements transform_skip_flag, last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, and last_sig_coeff_y_suffix in the first subroutine.
- transform_skip_flag means a syntax element indicating whether a transform is applied to the current transform block.
- last_sig_coeff_x_prefix may indicate the prefix of the column position of the last significant coefficient in the scan order within the transform block.
- last_sig_coeff_y_prefix may indicate the prefix of the row position of the last significant coefficient in the scan order within the transform block.
- last_sig_coeff_x_suffix may indicate the column position suffix of the last significant coefficient in the scan order within the transform block.
- last_sig_coeff_y_suffix may indicate the row position suffix of the last significant coefficient in the scan order within the transform block.
- the meaningful coefficients represent non-zero quantized transform coefficients.
- the encoder / decoder may code a syntax element indicating whether a transform is applied to a current transform block in the first subroutine, and code a position of a last non-zero transform coefficient in the current transform block.
- the second subroutine of the divided seven subroutines may be represented as shown in Table 2 below.
- the encoder / decoder may code the syntax element coded_sub_block_flag in the second subroutine.
- coded_sub_block_flag indicates whether a non-zero quantized transform coefficient exists in subblock units.
- the third subroutine of the divided seven subroutines may be represented as shown in Table 3 below.
- the encoder / decoder may code the syntax element sig_coeff_flag in the third subroutine.
- sig_coeff_flag may indicate whether the quantized transform coefficient has a value greater than zero.
- a fourth subroutine of the divided seven subroutines may be represented as shown in Table 4 below.
- the encoder / decoder may code the syntax element coeff_abs_level_greater1_flag in the fourth subroutine.
- coeff_abs_level_greater1_flag may indicate whether the absolute value of the quantized transform coefficient has a value greater than one.
- the fifth subroutine of the divided seven subroutines may be represented as shown in Table 5 below.
- the encoder / decoder may code the syntax element coeff_abs_level_greater2_flag in the fifth subroutine.
- coeff_abs_level_greater2_flag may indicate whether the absolute value of the quantized transform coefficient has a value greater than two.
- sixth sub-routine of the divided seven sub-routines may be represented as shown in Table 6 below.
- the encoder / decoder may code the syntax element coeff_sign_flag in the sixth subroutine.
- coeff_sign_flag may indicate the sign of the quantized transform coefficient.
- the seventh sub-routine of the divided seven sub-routines may be represented as shown in Table 7 below.
- the encoder / decoder may code a syntax element coeff_abs_level_remaining in the seventh subroutine.
- coeff_abs_level_remaining may represent an absolute value of the remaining values of the values of the quantized transform coefficients.
- the encoder / decoder may code (or parse) whether a transform is applied to the TU in units of transform units (TUs) and positions of last non-zero transform coefficients in a first subroutine, and the encoder / decoder
- the syntax elements described in Tables 2 to 6 may be coded in units of coefficient groups (CGs) (or subgroups) in subsequent subroutines (ie, second to seventh subroutines).
- the encoder / decoder maps a first subroutine performed in TU units to a first bit stream (hereinafter referred to as BS1) 701, and the bit stream in CG units in a pipelining manner from the second subroutine. Can be coded alternately. In other words, the encoder / decoder may code each subroutine performed in CG units after the first subroutine in several bit streams.
- BS1 first bit stream
- the encoder / decoder may perform the second subroutine of the first CG in BS1 701 and then perform the second subroutine of the next CG in a second bit stream (hereinafter BS2) 702.
- the encoder / decoder may perform the second subroutine of the second CG in BS2 702 and then perform the second subroutine of the next CG in third bit stream (BS3) 703.
- the encoder / decoder may code the syntax elements of the subroutine by alternating bit streams in CG units from the second subroutine to the seventh subroutine.
- the encoder / decoder may perform the synchronization between the bit streams at the time when the subroutine is switched (that is, the time indicated by the dotted line in FIG. 7) in consideration of the data dependency on previously coded information. have. In other words, the encoder / decoder may perform synchronization between several bit streams at intervals of subroutines (or functional block units).
- the case where the data dependency exists may refer to previously coded information.
- the encoder / decoder can code (or perform) each subroutine in parallel while keeping the coding order.
- the encoder / decoder may perform synchronization on a syntax element basis to code in parallel while keeping the coding order. It demonstrates with reference to the following drawings.
- FIG. 8 is a residual coding syntax illustrating a method of performing synchronization between several bit streams in units of syntax elements as an embodiment to which the present invention can be applied.
- the encoder / decoder may divide the residual coding routine into a plurality of subroutines, and map the divided subroutines to multiple bit streams to code them in a pipelining manner.
- the encoder / decoder may perform synchronization between several bit streams in units of syntax elements in consideration of data dependency.
- the encoder / decoder may perform a procedure of acquiring and returning a lock on a current syntax element or a current processing region (or a current processing block) to perform synchronization between several bit streams.
- the encoder / decoder may acquire and release a lock in order to exclusively code the syntax element coded_sub_block_flag in each CG (or functional block) (S801).
- '(LA)' refers to an operation of acquiring a lock in order to exclusively perform coding of a corresponding syntax element or processing region as a lock acquire.
- other bit streams or CG pipelines, CG threads, and CG CABACs
- '(LR)' indicates an operation of releasing a lock acquired as a lock release so that a lock can be acquired in another bit stream.
- the encoder / decoder may perform an operation of acquiring and returning a lock while keeping a processing order (or coding order) between CGs. For example, if the processing (or coding) of a syntax element or region in the i th CG is only possible after the processing of the syntax element or region in the i-1 th CG, the encoder / decoder identifies which CG has unlocked To acquire the lock on the next CG.
- the encoder / decoder checks whether a lock has been obtained and returned from the previous bit stream (or CG) to obtain the lock for the current bit stream. You can try
- the encoder / decoder may acquire a lock prior to the CG loop (or subroutine) coding the syntax element sig_coeff_flag for each CG (S802).
- the encoder / decoder may acquire a lock before coding the syntax element, release the lock after coding the syntax element, and perform synchronization between several bit streams, as in step S801, or as in step S802.
- a lock may be acquired before performing a CG loop performed for each CG, and the lock may be released after the CG loop ends to perform synchronization between several bit streams.
- a lock When a lock is acquired / released for each syntax element, it may be coded in parallel while effectively considering data dependencies that may exist between syntax elements of each CG. In other words, by performing synchronization for each syntax element, the encoder / decoder can code while keeping the order between the syntax elements of each CG.
- synchronization between several bit streams may be performed by acquiring the lock before performing the corresponding CG loop, and the CG loop may be performed in parallel.
- the coding for each CG in the CG loop may be performed on a plurality of bit streams in a pipelining manner.
- the encoder / decoder may code syntax elements coeff_sign_flag and coeff_abs_level_remaining without performing synchronization, that is, without performing a lock acquisition and return procedure (S803 and S804).
- FIG. 9 is a syntax illustrating a method of coding a syntax element of residual coding in a function block unit in a function block unit according to an embodiment to which the present invention is applied.
- the encoder / decoder may code a syntax element of each functional block (or subroutine) and then bitstream switch to process multiple transform units simultaneously in multiple bitstreams.
- the number of CGs in the TU is variable according to the size of the TU. 7 and 8, the throughput of entropy coding may be improved when the number of CGs is one or more, and the throughput of entropy coding may be maximized when the number of CGs is less than the number of bit streams. Can be.
- the CGs belonging to multiple TUs or multiple TUs by switching bit streams into CG units (or subroutine units). can be processed in parallel, which can improve the throughput of entropy coding.
- the encoder / decoder allocates a bit stream for a subroutine performed in CG units within the current TU, and then switches the bit stream before the next subroutine performed in CG units within the TU (previous FIG. 7).
- the encoder / decoder may parallelize the coding of the CG loop of the current TU (the second to seventh subroutine in FIG. 7 before) and the CG loop before the next TU (before the first subroutine in FIG. 7),
- the pipelining stall means a coding delay occurring in the pipeline.
- the first sub-tutin and the CG loop may not be performed at the same time.
- the encoder / decoder can perform the CG loop for the current TU and at the same time perform the first subroutine for the next TU, an idle that can occur until starting the CG loop of the next TU is performed. You can save time.
- the encoder / decoder may switch a next bit stream after coding a syntax element in CG units through a CG loop (S901).
- the encoder / decoder may switch the bit stream by calling set_next_bitstream () indicating the switch of the bit stream.
- set_next_bitstream () syntax is expressed on the syntax
- the encoder / decoder may perform entropy coding in parallel using several bit streams.
- bit stream since the bit stream is switched for each iteration of the for loop, which is a CG loop, the bit stream can be switched even after the subroutine for the last CG.
- subroutines up to the CG loop before the next TU and subroutines corresponding to the first iteration of the next CG loop can be coded in the switched bit stream.
- the encoder / decoder performs coding before the CG loop of the next TU (ie, syntax elements transform_skip_flag, last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, and last_sig_coeff_coeff_yGs of the current coding of the loop _Guff_y_suffix).
- coding before the CG loop of the next TU ie, syntax elements transform_skip_flag, last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, and last_sig_coeff_coeff_yGs of the current coding of the loop _Guff_y_suffix.
- FIG. 10 is a syntax illustrating a method of coding a syntax element of a coding unit in various bit streams as an embodiment to which the present invention may be applied.
- the encoder / decoder may code threads in parallel by mapping a thread on which a coding unit (CU) routine (or CU syntax) is performed to several bitstreams.
- a thread refers to a unit of work that an entropy encoder / decoder processes independently, and the thread is not limited to the name of the term.
- the encoder / decoder may allocate functional blocks or threads to several bit streams in a round-robin fashion.
- the encoder / decoder codes a syntax element split_cu_flag indicating whether the current CU is split into a lower CU (or a lower depth CU) (S1001).
- a CU thread for executing a coding routine performed in a CU unit is registered in a thread queue (S1002).
- the encoder / decoder may register the CU routine as a thread in the thread queue without directly calling the CU syntax in the CTU syntax to execute the CU routine in parallel. Thereafter, the encoder / decoder may map a plurality of CU threads stored in the thread queue (or registered in the thread queue) to the multiple bit streams and code them in parallel.
- FIG. 11 is a syntax illustrating a method of coding a syntax element of a prediction unit in several bit streams as an embodiment to which the present invention may be applied.
- the encoder / decoder may map a thread in which a prediction unit (PU) routine is performed to multiple bitstreams and code them in parallel.
- PU prediction unit
- the encoder / decoder registers a PU thread for executing a coding routine performed in units of PUs in the thread queue (S1101).
- the CU skip means that no additional syntax element is signaled except index information for merging in CU syntax.
- whether CU skip is applied to the current CU may be signaled from the encoder through cu_skip_flag. If the value of cu_skip_flag is 1, it may mean that the skip mode is applied to the current CU. If the value of cu_skip_flag is 0, it may mean that the skip mode is not applied.
- the decoder may determine whether CU skip is applied to the current CU by parsing cu_skip_flag.
- the encoder / decoder may code a syntax element merge_flag (S1102) and put a PU thread of the PU into a thread queue. It is possible to register (S1103).
- the encoder / decoder may register PU threads of the partitioned PU according to the partition mode of the current CU in a thread queue.
- the encoder / decoder does not directly call the PU syntax (or PU thread, PU syntax routine, PU routine) in CU syntax to execute PU routines in parallel, but registers the PU routine as a thread in the thread queue. Can be. Thereafter, the encoder / decoder may map and encode a plurality of PU threads output from the thread queue (or registered in the thread queue) to several bit streams, respectively.
- the encoder / decoder may code the PU threads independently by coding the syntax merge_flag within the CU syntax when the split mode of the current CU is PART_2N ⁇ 2N.
- FIG. 11 a method of creating a PU thread in a CU syntax and registering it in a thread queue, and extracting several threads from the thread queue and coding the same in parallel in multiple bit streams.
- a method of parallelly coding a PU thread (or PU routine) by switching bit streams while calling a PU syntax will be described with reference to the following drawings.
- 12 is a syntax illustrating a method of coding a syntax element of a prediction unit in several bit streams as an embodiment to which the present invention may be applied.
- the encoder / decoder calls PU syntax in CU syntax and switches bitstreams to map PU syntax (or PU threads, PU routines, PU syntax routines) to multiple bitstreams and to code them in parallel can do.
- the encoder / decoder may call the PU syntax and switch the bit stream (S1201).
- the encoder / decoder may switch the bit stream by calling set_next_bitstream () indicating the switch of the bit stream.
- set_next_bitstream () syntax is expressed on the syntax
- the encoder / decoder may perform entropy coding in parallel using several bit streams.
- the encoder / decoder may change the bit stream every time a PU syntax is called in a CU syntax to parallelize coding of a PU (or PU thread) with coding of the remaining syntax elements in the CU syntax.
- the next bit stream among a plurality of bit streams may be determined in a round-robin manner.
- the encoder / decoder may call the PU syntax and switch the bit stream (S1202).
- the PU syntax may be called more than once in the CU syntax, and two or more PU threads may be generated and executed in parallel in several bit streams.
- FIG. 13 is a diagram illustrating a method of coding syntax elements of a coding unit in various bit streams as an embodiment to which the present invention may be applied.
- a CU routine may be divided into three stages (or subroutines) 1301, 1302, and 1303.
- the encoder / decoder may code the divided three stages in a pipelining manner.
- the encoder / decoder may code syntax elements cu_transquant_bypass_flag and cu_skip_flag. If the cu_transquant_bypass_flag value is 1, the scaling and transform process and the in-loop filter process can be skipped. And cu_skip_flag may indicate whether a skip mode is applied to the current CU.
- the encoder / decoder may register a PU unit (prediction unit thread) in the thread queue.
- the encoder / decoder may code the syntax elements pred_mode_flag and part_mode.
- pred_mode_flag may indicate a prediction mode applied to the current CU. That is, when the pred_mode_flag value is 0, it may be coded in inter prediction mode, and when the pred_mode_flag value is 1, it may be coded in intra prediction mode.
- part_mode may indicate the partition mode of the current CU.
- the encoder / decoder may code syntax elements pcm_flag, pcm_alignment_zero_bit, prev_intra_luma_pred_flag, mpm_idx, rem_intra_luma_pred_mode, and intra_chroma_pred_mode.
- the encoder / decoder codes pcm_alignment_zero_bit when the current position in the bit stream is not on the boundary of one byte, where pcm_alignment_zero_bit is zero.
- a value of 1 for prev_intra_luma_pred_flag indicates that the intra prediction mode of the current PU is included in the Most Probable Mode (MPM) mode, and 0 indicates that the intra prediction mode of the current PU is not included in the Most Probable Mode (MPM) mode. .
- the encoder / decoder may code rem_intra_luma_pred_mode.
- intra_chroma_pred_mode may indicate a prediction mode of the color difference component in PU units.
- the encoder / decoder may code a syntax element merge_flag and register a PU thread in the thread queue.
- the encoder / decoder may code a syntax element rqt_root_cbf when the prediction mode of the current CU is not an intra prediction mode, and the current CU is a merge mode and the split mode is not PART_2N ⁇ 2N.
- rqt_root_cbf may indicate whether a transform_tree syntax exists for the current CU.
- the encoder / decoder may register a transform tree thread to a thread queue.
- FIG. 14 is a coding unit syntax illustrating a method of performing synchronization between several bit streams in units of syntax elements as an embodiment to which the present invention may be applied.
- the encoder / decoder may perform synchronization between several bit streams in units of syntax elements in consideration of data dependency.
- the encoder / decoder may perform a procedure of acquiring and returning a lock on a current syntax element or a current processing region (or a current processing block) to perform synchronization between several bit streams.
- the encoder / decoder may acquire and release a lock to exclusively code a syntax element cu_transquant_bypass_flag in each CU (or CU thread) (S1401).
- the encoder / decoder acquires the lock for the current CU in the current bit stream as described above with reference to FIG. 8, the encoder / decoder is coded without starting coding the corresponding syntax element or processing region in another bit stream (or another CU thread). Can stop.
- the encoder / decoder may perform an operation of acquiring and returning a lock while keeping the processing order (or coding order) between CUs.
- the encoder / decoder may acquire / release a lock on a syntax element basis in the process of coding syntax elements of a CU to perform synchronization between several bit streams.
- the encoder / decoder may code merge_flag within the CU syntax to independently code the PU threads (S1402).
- the encoder / decoder may perform synchronization between several bit streams before generating the PU thread according to the partitioning mode of the PU in order to keep the order in which the PU threads are created (or issue) (S1403). In other words, the encoder / decoder may acquire the lock before generating the PU thread according to the split mode.
- FIG. 15 is a syntax illustrating a method of coding a syntax element of a prediction unit in several bit streams as an embodiment to which the present invention may be applied.
- the syntax element merge_flag may have already been coded in the CU syntax (see S1102 of FIG. 11 and S1402 of FIG. 14).
- the encoder / decoder may code merge_flag (S1501).
- FIG. 16 is a diagram illustrating a method of coding a syntax element of a prediction unit (PU) in several bit streams as an embodiment to which the present invention may be applied.
- a PU routine may be divided into three stages (or subroutines) 1601, 1602, and 1603.
- the encoder / decoder may code the divided three stages into several bit streams in a pipelining manner.
- the encoder / decoder may code the syntax element merge_idx when the value of cu_skip_flag is 1. If the value of cu_skip_flag is 0, the encoder / decoder may code the syntax element merge_flag.
- the encoder / decoder may code merge_idx when the merge_flag value is 1. If the merge_flag value is 1, the encoder / decoder may code the syntax element inter_pred_idc.
- inter_pred_idc indicates whether List 0, list 1, or bidirectional prediction is used for the current PU.
- the encoder / decoder may code syntax elements ref_idx_l0, mvd_coding, and mvp_l0_flag when the inter_pred_idc value is not in the list 1 direction.
- ref_idx_l0 represents a reference picture index in the list 0 direction
- mvp_l0_flag represents a motion vector prediction value index in the list 0 direction.
- mvd_coding may be coded on the PU syntax when synchronization is performed on a syntax element basis. It will be described later in detail.
- the encoder / decoder may code syntax elements ref_idx_l1, mvd_coding and mvp_l1_flag when the inter_pred_idc value is in the list 1 direction.
- ref_idx_l1 indicates a reference picture index in the list 1 direction
- mvp_l1_flag indicates a motion vector prediction value index in the list 1 direction.
- the encoder / decoder may code syntax elements ref_idx_l1, mvd_coding, and mvp_l1_flag when the inter_pred_idc value is bidirectional prediction.
- the encoder / decoder may simultaneously code the syntax elements.
- FIG. 17 is a prediction unit syntax illustrating a method of performing synchronization between several bit streams in units of syntax elements according to an embodiment to which the present invention may be applied.
- the encoder / decoder may perform synchronization between several bit streams in units of syntax elements in consideration of data dependency.
- the encoder / decoder may perform a procedure of acquiring and returning a lock on a current syntax element or a current processing region (or a current processing block) to perform synchronization between several bit streams.
- '(LA)' refers to an operation of acquiring a lock in order to exclusively perform coding of a corresponding syntax element or processing region as a lock acquire.
- the coding may be stopped in another bit stream (or PU pipeline, PU thread, or PU CABAC) without starting coding of the corresponding syntax element or processing region.
- '(LR)' indicates an operation of releasing a lock acquired as a lock release so that a lock can be acquired in another bit stream.
- the encoder / decoder may perform an operation of acquiring and returning a lock while keeping the processing order (or coding order) between PUs.
- the encoder / decoder may perform motion vector differential value coding (mvd_coding) in a PU syntax (or PU routine) in order to effectively perform syntax element unit synchronization.
- mvd_coding motion vector differential value coding
- FIG. 18 is a diagram for describing a method of coding by mapping units divided hierarchically from a coding tree unit (CTU) to several bit streams as an embodiment to which the present invention may be applied.
- CTU coding tree unit
- coding routines may be coded in several bit streams in a hierarchical division structure.
- the encoder / decoder codes the coding quad tree (coding_quadtree) syntax (S1801).
- the encoder / decoder may generate CU threads in the coding quad tree syntax and register the CU threads in the CU thread queue.
- the encoder / decoder codes CU threads registered in the CU thread queue (S1802). At this time, the encoder / decoder may code the CU threads in parallel (or simultaneously) in several bit streams. In addition, the encoder / decoder may generate PU threads in the CU syntax and register them in the PU thread queue (see FIG. 11 above), and generate transformation tree threads in the CU syntax and register them in the transformation tree thread queue (see FIG. 16).
- the encoder / decoder codes the PU threads registered in the PU thread queue (S1803). At this point, the encoder / decoder may code the PU threads in parallel (or simultaneously) in several bit streams.
- the encoder / decoder codes transform tree threads (S1804) and codes TU threads (S1805). Since the transform tree of step S1804 and the TU of step S1805 operate sequentially, the TU thread (or TU routine) may be performed while coding the transform tree thread in step S1804.
- the encoder / decoder codes the residual coding (residual_coding) syntax (S1806).
- the encoder / decoder codes the CG threads (S1807).
- CG_i (ie, CG_1, CG_2,..., CG_N) represents the second to seventh subroutines (or threads) described above with reference to FIG. 7.
- Registering and executing all the threads for the lower layer (or functional block) of the CTU may increase the latency until the data is transferred to other functional blocks according to the implementation of the buffer.
- the encoder / decoder allocates the generated threads to the bit stream in a round-robin manner and performs coding. Can be.
- the encoder / decoder performs four threads in step S1802 and then performs four threads in step S1803. Motion compensation can be performed.
- Embodiments proposed in the present invention may be applied independently, or a plurality of embodiments may be applied in combination.
- FIG. 19 is a flowchart to describe a process of performing entropy decoding on a video signal composed of several bit streams as an embodiment to which the present invention may be applied.
- the decoder may receive a video signal composed of a plurality of bit streams (S1901).
- the decoder may decode a symbol of a syntax element for each bit stream of the video signal (S1902).
- the syntax element may be a function block unit representing a region in which one or more syntax elements are independently processed in the current block. Can be mapped alternately.
- the decoder may perform synchronization between a plurality of bit streams in units of functional blocks or in syntax elements.
- the decoder acquires a lock for starting decoding the current syntax element in the current bit stream, and returns the obtained lock when decoding of the current syntax element is terminated. can do.
- the decoder may decode the current syntax element only when a lock is obtained in the corresponding bit stream.
- the decoder may check lock state information indicating whether a lock on the current syntax element is obtained in a bit stream other than the current bit stream.
- the lock state information may be stored in a separate storage space such as a context store.
- the decoder may attempt to acquire the lock by transmitting lock request information to the context store (or memory).
- the decoder may read state information about the lock from the context store to confirm whether the lock is acquired in another bit stream or ownership information of the lock.
- the lock release request together with the lock release information may be transmitted to the context store to allow updating of contexts related to the lock in another bit stream.
- the decoder may perform synchronization between the plurality of bit streams, and a bypass mode may be applied to the current syntax element.
- a bypass mode may be applied to the current syntax element.
- the decoder may switch the current bit stream after decoding the symbol of the syntax element in functional block units.
- the decoder generates a thread representing a unit of work that is independently processed for each functional block, and registers the thread in a thread queue that stores information of the thread.
- the plurality of threads stored in the thread queue may be decrypted in parallel.
- the decoder may derive information of the syntax element using the decoded symbol (S1903).
- the decoder may receive a binary-type bin decoded by the method described above with reference to FIGS. 4 and 6 and output a value of a syntax element.
- whether to perform pipelining by synchronizing in units is implementation dependent. For example, in hardware implementations, fine synchronization on a per-syntax basis may be advantageous in terms of throughput.
- the software implementation may vary depending on the performance of synchronization primitives (eg, mutex locks, semaphores, etc.) provided by the OS. The better the performance, the more likely it is to synchronize in smaller units.
- the embodiments described herein may be implemented and performed on a processor, microprocessor, controller, or chip.
- the functional units illustrated in FIGS. 1 to 4 may be implemented and performed on a computer, a processor, a microprocessor, a controller, or a chip.
- the decoder and encoder to which the present invention is applied include a multimedia broadcasting transmitting and receiving device, a mobile communication terminal, a home cinema video device, a digital cinema video device, a surveillance camera, a video chat device, a real time communication device such as video communication, a mobile streaming device, Storage media, camcorders, video on demand (VoD) service providing devices, internet streaming service providing devices, three-dimensional (3D) video devices, video telephony video devices, and medical video devices, and the like, for processing video and data signals Can be used for
- the processing method to which the present invention is applied can be produced in the form of a program executed by a computer, and can be stored in a computer-readable recording medium.
- Multimedia data having a data structure according to the present invention can also be stored in a computer-readable recording medium.
- the computer readable recording medium includes all kinds of storage devices for storing computer readable data.
- the computer-readable recording medium may include, for example, a Blu-ray disc (BD), a universal serial bus (USB), a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, and an optical data storage device. Can be.
- the computer-readable recording medium also includes media embodied in the form of a carrier wave (eg, transmission over the Internet).
- the bit stream generated by the encoding method may be stored in a computer-readable recording medium or transmitted through a wired or wireless communication network.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
The present invention provides a method for performing entropy-decoding a video signal, the method comprising the steps of: receiving a video signal including a plurality of bit streams; decoding a symbol of a syntax element for each bit stream of the video signal; and deriving information of the syntax element by using the decoded symbol, wherein the syntax element is alternately mapped to the plurality of bit streams on the basis of a function block unit indicating an area in which one or more syntax elements are independently processed within a current block.
Description
본 발명은 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치에 관한 것이다. 보다 구체적으로, 여러 비트 스트림을 이용하여 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치에 관한 것이다.The present invention relates to a method and apparatus for entropy encoding and decoding video signals. More specifically, the present invention relates to a method and apparatus for entropy encoding and decoding a video signal using several bit streams.
엔트로피 코딩은 부호화 과정을 통해 결정된 신택스 엘리먼트들을 무손실 압축하여 RBSP(Raw Byte Sequence Payload)를 생성하는 과정이다. 엔트로피 코딩은 신택스의 통계를 이용하여 자주 발생하는 신택스에 대해서는 짧은 비트를 할당하고, 그렇지 않은 신택스에는 긴 비트를 할당하여 신택스 엘리먼트들을 간결한 데이터로 표현한다.Entropy coding is a process of generating a raw byte sequence payload (RWSP) by losslessly compressing syntax elements determined through an encoding process. Entropy coding uses syntax statistics to assign short bits to frequently occurring syntax and long bits to syntax that is not syntactically to express syntax elements as concise data.
그 중, CABAC(Context-based Adaptive Binary Arithmetic Coding)은 이진 산술 코딩을 수행하는 과정에서 신택스의 컨텍스트와 이전에 발생한 심볼에 기초하여 적응적으로 업데이트된 컨텍스트 모델을 사용한다. 그러나, 이러한 CABAC도 연산량이 많아 복잡도가 높고 순차적 구조를 가지고 있어 병렬 수행이 어려운 문제점이 있다.Among them, CABAC (Context-based Adaptive Binary Arithmetic Coding) uses a context model that is adaptively updated based on the context of the syntax and previously generated symbols during binary arithmetic coding. However, this CABAC also has a high complexity and has a sequential structure, which makes it difficult to perform parallel execution.
따라서, 비디오 압축 기술에 있어서 신택스 엘리먼트를 보다 효율적으로 압축하고 전송할 필요가 있으며, 이를 위해 엔트로피 코딩의 성능을 향상시킬 필요가 있다.Accordingly, in video compression technology, there is a need to compress and transmit syntax elements more efficiently, and to this end, it is necessary to improve the performance of entropy coding.
본 발명의 목적은 엔트로피 코딩의 병렬화를 위해 신택스 요소(syntax element)를 기능 블록 단위(function block unit)로 여러 비트 스트림(bit stream)에 매핑하여 코딩하는 방법을 제안한다.An object of the present invention is to propose a method of coding a syntax element by mapping a syntax element to a plurality of bit streams in a function block unit for parallelization of entropy coding.
또한, 본 발명의 목적은 기능 블록 단위 또는 신택스 요소 단위로 여러 비트 스트림간 동기화를 수행하는 방법을 제안한다.It is also an object of the present invention to propose a method for performing synchronization between several bit streams on a functional block basis or on a syntax element basis.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The technical problems to be achieved in the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned above will be clearly understood by those skilled in the art from the following description. Could be.
본 발명의 일 양상은, 비디오 신호에 대해 엔트로피 디코딩을 수행하는 방법에 있어서, 복수 개의 비트 스트림(bit stream)으로 구성된 비디오 신호를 수신하는 단계; 상기 비디오 신호의 각 비트 스트림 별로 신택스 요소(syntax element)의 심볼(symbol)을 복호화하는 단계; 및 상기 복호화된 심볼을 이용하여 상기 신택스 요소의 정보를 도출하는 단계를 포함하되, 상기 신택스 요소는 현재 블록 내에서 하나 이상의 신택스 요소가 독립적으로 처리되는 영역을 나타내는 기능 블록 단위(function block unit)로 상기 복수 개의 비트 스트림에 번갈아가며 매핑될 수 있다.An aspect of the present invention provides a method of performing entropy decoding on a video signal, comprising: receiving a video signal consisting of a plurality of bit streams; Decoding a symbol of a syntax element for each bit stream of the video signal; And deriving information of the syntax element using the decoded symbol, wherein the syntax element is a function block unit indicating an area in which one or more syntax elements are independently processed in a current block. The plurality of bit streams may be alternately mapped.
바람직하게, 상기 신택스 요소의 심볼을 복호화하는 단계는, 상기 기능 블록 단위로 상기 복수 개의 비트 스트림간 동기화를 수행하는 단계를 더 포함할 수 있다.Preferably, the decoding of the symbol of the syntax element may further include performing the synchronization between the plurality of bit streams in units of the functional blocks.
바람직하게, 상기 신택스 요소의 심볼을 복호화하는 단계는, 상기 신택스 요소 단위로 상기 복수 개의 비트 스트림간 동기화를 수행하는 단계를 더 포함할 수 있다.Preferably, the decoding of the symbol of the syntax element may further include performing the synchronization between the plurality of bit streams in units of the syntax element.
바람직하게, 상기 복수 개의 비트 스트림간 동기화를 수행하는 단계는, 현재 비트 스트림에서 현재 신택스 요소의 복호화를 시작하기 위한 락(lock)을 획득하는 단계를 더 포함하고, 상기 락을 획득한 경우에만 상기 현재 신택스 요소의 심볼을 복호화할 수 있다.Preferably, the performing of the synchronization between the plurality of bit streams further comprises acquiring a lock for starting decoding of a current syntax element in a current bit stream, and only when the lock is obtained. The symbol of the current syntax element can be decoded.
바람직하게, 상기 복수 개의 비트 스트림간 동기화를 수행하는 단계는, 상기 현재 신택스 요소의 복호화가 종료된 경우 상기 획득된 락을 반환하는 단계를 더 포함할 수 있다.Preferably, the performing of the synchronization between the plurality of bit streams may further include returning the obtained lock when decoding of the current syntax element is terminated.
바람직하게, 상기 복수 개의 비트 스트림간 동기화를 수행하는 단계는, 상기 현재 비트 스트림 이외의 비트 스트림에서 상기 현재 신택스 요소에 대한 락을 획득하였는지 여부를 나타내는 락 상태 정보(lock state information)를 확인하는 단계를 더 포함할 수 있다.Preferably, the performing of the synchronization between the plurality of bit streams may include: checking lock state information indicating whether a lock on the current syntax element is obtained in a bit stream other than the current bit stream. It may further include.
바람직하게, 상기 복수 개의 비트 스트림간 동기화를 수행하는 단계는, 현재 신택스 요소에 컨텍스트(context)를 참조하는 정규 코딩(regular coding)이 적용되는 경우, 상기 복수 개의 비트 스트림간 동기화를 수행할 수 있다.Preferably, the performing of the synchronization between the plurality of bit streams may include performing the synchronization between the plurality of bit streams when a regular coding referencing a context is applied to a current syntax element. .
바람직하게, 상기 신택스 요소의 심볼을 복호화하는 단계는, 상기 기능 블록 단위로 신택스 요소의 심볼을 복호화한 후 현재 비트 스트림을 전환하는 단계를 더 포함할 수 있다.Preferably, the decoding of the symbol of the syntax element may further include converting a current bit stream after decoding the symbol of the syntax element in units of the functional blocks.
바람직하게, 상기 기능 블록 단위 마다 독립적으로 처리되는 작업 단위를 나타내는 스레드(thread)를 생성하여 상기 스레드의 정보를 저장하는 스레드 큐(thread queue)에 등록하는 단계; 및 상기 스레드 큐에 저장된 복수 개의 스레드들을 병렬적으로 복호화하는 단계를 더 포함할 수 있다.Preferably, generating a thread (thread) representing a unit of work to be processed independently for each functional block unit and registering in a thread queue for storing information of the thread; And decrypting a plurality of threads stored in the thread queue in parallel.
본 발명의 다른 일 양상은, 비디오 신호에 대해 엔트로피 디코딩을 수행하는 장치에 있어서, 복수 개의 비트 스트림(bit stream)으로 구성된 비디오 신호를 수신하는 비디오 신호 수신부; 상기 비디오 신호의 각 비트 스트림 별로 신택스 요소(syntax element)의 심볼(symbol)을 복호화하는 심볼 복호화부; 및 상기 복호화된 심볼을 이용하여 상기 신택스 요소의 정보를 복호화하는 신택스 요소 도출부를 포함하되, 상기 신택스 요소는 현재 블록 내에서 하나 이상의 신택스 요소가 독립적으로 처리되는 영역을 나타내는 기능 블록 단위(function block unit)로 상기 복수 개의 비트 스트림에 번갈아가며 매핑될 수 있다.According to another aspect of the present invention, there is provided an apparatus for performing entropy decoding on a video signal, the apparatus comprising: a video signal receiver configured to receive a video signal including a plurality of bit streams; A symbol decoder for decoding a symbol of a syntax element for each bit stream of the video signal; And a syntax element deriving unit configured to decode information of the syntax element using the decoded symbol, wherein the syntax element indicates a region in which one or more syntax elements are independently processed in a current block. ) May be alternately mapped to the plurality of bit streams.
바람직하게, 상기 심볼 복호화부는, 상기 기능 블록 단위로 상기 복수 개의 비트 스트림간 동기화를 수행하는 동기화부를 포함할 수 있다.Preferably, the symbol decoding unit may include a synchronization unit for performing synchronization between the plurality of bit streams in units of the functional blocks.
바람직하게, 상기 심볼 복호화부는, 상기 신택스 요소 단위로 상기 복수 개의 비트 스트림간 동기화를 수행하는 동기화부를 포함할 수 있다.Preferably, the symbol decoding unit may include a synchronization unit that performs synchronization between the plurality of bit streams in units of syntax elements.
바람직하게, 상기 동기화부는, 현재 비트 스트림에서 현재 신택스 요소의 복호화를 시작하기 위한 락(lock)을 획득하고, 상기 락이 획득된 경우에만 상기 현재 신택스 요소의 심볼이 복호화될 수 있다.Preferably, the synchronization unit may acquire a lock for starting decoding of the current syntax element in the current bit stream, and the symbol of the current syntax element may be decoded only when the lock is obtained.
바람직하게, 상기 동기화부는, 상기 현재 신택스 요소의 복호화가 종료된 경우 상기 획득된 락을 반환할 수 있다.Preferably, the synchronization unit may return the obtained lock when decoding of the current syntax element is terminated.
바람직하게, 상기 동기화부는, 상기 현재 비트 스트림 이외의 비트 스트림에서 상기 현재 신택스 요소에 대한 락을 획득하였는지 여부를 나타내는 락 상태 정보(lock state information)를 확인할 수 있다.Preferably, the synchronization unit may check lock state information indicating whether a lock on the current syntax element is obtained in a bit stream other than the current bit stream.
바람직하게, 상기 동기화부는, 현재 신택스 요소에 컨텍스트(context)를 참조하는 정규 코딩(regular coding)이 적용되는 경우, 상기 복수 개의 비트 스트림간 동기화를 수행할 수 있다.Preferably, the synchronization unit may perform synchronization between the plurality of bit streams when regular coding that refers to a context is applied to a current syntax element.
바람직하게, 상기 심볼 복호화부는, 상기 기능 블록 단위로 신택스 요소의 심볼을 복호화한 후 현재 비트 스트림을 전환할 수 있다.Preferably, the symbol decoder may switch a current bit stream after decoding a symbol of a syntax element in units of the functional blocks.
바람직하게, 상기 기능 블록 단위 마다 독립적으로 처리되는 작업 단위를 나타내는 스레드(thread)를 생성하여 상기 스레드의 정보를 저장하는 스레드 큐(thread queue)에 등록하는 스레드 생성부; 및 상기 스레드 큐에 저장된 복수 개의 스레드들을 병렬적으로 복호화하는 스레드 복호화부를 더 포함할 수 있다.Preferably, the thread generating unit for generating a thread (thread) indicating a unit of work to be processed independently for each functional block unit to register in a thread queue for storing the information of the thread; And a thread decoder configured to decode a plurality of threads stored in the thread queue in parallel.
본 발명의 실시예에 따르면, 신택스 요소(syntax element)들을 기능 블록 단위(function block unit)로 여러 비트 스트림에 코딩하여 병렬화함으로써 엔트로피 코딩의 처리량(throughput)을 향상시킬 수 있다.According to an embodiment of the present invention, throughput of entropy coding may be improved by coding syntax elements in function block units and parallelizing them into multiple bit streams.
본 발명의 실시예에 따르면, 여러 비트 스트림들간 동기화를 수행함으로써, 코딩 순서를 지키면서 신택스 요소들을 병렬적으로 코딩할 수 있다.According to an embodiment of the present invention, by performing synchronization between several bit streams, syntax elements may be coded in parallel while keeping the coding order.
또한, 본 발명의 실시예에 따르면, 정규 코딩(regular coding)을 적용한 심볼들과, 바이패스 코딩(bypass coding)을 적용한 심볼들을 여러 비트 스트림에 할당하여 병렬적으로 코딩함으로써 처리량을 향상시키고고 복잡도를 개선할 수 있다.In addition, according to an embodiment of the present invention, the symbols with regular coding and the symbols with bypass coding are assigned to multiple bit streams in parallel to improve throughput and complexity. Can be improved.
또한, 본 발명의 실시예에 따르면, 데이터 의존성(data dependency)이 최소화되도록 심볼 그룹을 구성함으로써 엔트로피 코딩의 처리량을 향상시킬 수 있다.In addition, according to an embodiment of the present invention, the throughput of entropy coding can be improved by configuring a symbol group so that data dependency is minimized.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effects obtainable in the present invention are not limited to the above-mentioned effects, and other effects not mentioned will be clearly understood by those skilled in the art from the following description. .
도 1은 본 발명이 적용되는 실시예로서, 비디오 신호의 인코딩이 수행되는 인코더의 개략적인 블록도를 나타낸다.1 is a schematic block diagram of an encoder in which encoding of a video signal is performed as an embodiment to which the present invention is applied.
도 2는 본 발명이 적용되는 실시예로서, 비디오 신호의 디코딩이 수행되는 디코더의 개략적인 블록도를 나타낸다.2 is a schematic block diagram of a decoder in which decoding of a video signal is performed as an embodiment to which the present invention is applied.
도 3은 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)이 적용되는 엔트로피 인코딩부의 개략적인 블록도를 나타낸다.3 is a schematic block diagram of an entropy encoding unit to which CABAC (Context-based Adaptive Binary Arithmetic Coding) is applied according to an embodiment to which the present invention is applied.
도 4는 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)이 적용되는 엔트로피 디코딩부의 개략적인 블록도를 나타낸다.4 is a schematic block diagram of an entropy decoding unit to which CABAC (Context-based Adaptive Binary Arithmetic Coding) is applied according to an embodiment to which the present invention is applied.
도 5는 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)에 따라 수행되는 인코딩 흐름도를 나타낸다.5 is an embodiment to which the present invention is applied and shows an encoding flowchart performed according to Context-based Adaptive Binary Arithmetic Coding (CABAC).
도 6은 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)에 따라 수행되는 디코딩 흐름도를 나타낸다.6 is an embodiment to which the present invention is applied and shows a decoding flowchart performed according to Context-based Adaptive Binary Arithmetic Coding (CABAC).
도 7은 본 발명이 적용될 수 있는 실시예로서, 레지듀얼 코딩 신택스(residual coding syntax)의 신택스 요소(syntax element)들을 기능 블록 단위(function block unit)로 여러 비트 스트림에 매핑하는 방법을 예시하는 도면이다.FIG. 7 is a diagram illustrating a method of mapping syntax elements of residual coding syntax to a plurality of bit streams in a function block unit according to an embodiment to which the present invention may be applied. to be.
도 8은 본 발명이 적용될 수 있는 실시예로서, 신택스 요소(syntax element) 단위로 여러 비트 스트림간 동기화를 수행하는 방법을 예시하는 레지듀얼 코딩(residual coding) 신택스이다.FIG. 8 is a residual coding syntax illustrating a method of performing synchronization between several bit streams in units of syntax elements as an embodiment to which the present invention can be applied.
도 9는 본 발명이 적용되는 일 실시예로서, 레지듀얼 코딩(residual coding)의 신택스 요소(syntax element)를 기능 블록 단위(function block unit)로 여러 비트 스트림에서 코딩하는 방법을 예시하는 신택스이다.FIG. 9 is a syntax illustrating a method of coding a syntax element of residual coding in a function block unit in a function block unit according to an embodiment to which the present invention is applied.
도 10은 본 발명이 적용될 수 있는 실시예로서, 코딩 유닛(coding unit)의 신택스 요소를 여러 비트 스트림에서 코딩하는 방법을 예시하는 신택스이다.FIG. 10 is a syntax illustrating a method of coding a syntax element of a coding unit in various bit streams as an embodiment to which the present invention may be applied.
도 11은 본 발명이 적용될 수 있는 실시예로서, 예측 유닛(prediction unit)의 신택스 요소를 여러 비트 스트림에서 코딩하는 방법을 예시하는 신택스이다.FIG. 11 is a syntax illustrating a method of coding a syntax element of a prediction unit in several bit streams as an embodiment to which the present invention may be applied.
도 12는 본 발명이 적용될 수 있는 실시예로서, 예측 유닛(prediction unit)의 신택스 요소를 여러 비트 스트림에서 코딩하는 방법을 예시하는 신택스이다.12 is a syntax illustrating a method of coding a syntax element of a prediction unit in several bit streams as an embodiment to which the present invention may be applied.
도 13은 본 발명이 적용될 수 있는 실시예로서, 코딩 유닛(coding unit)의 신택스 요소를 여러 비트 스트림에서 코딩하는 방법을 예시하는 도면이다.FIG. 13 is a diagram illustrating a method of coding syntax elements of a coding unit in various bit streams as an embodiment to which the present invention may be applied.
도 14는 본 발명이 적용될 수 있는 실시예로서, 신택스 요소(syntax element) 단위로 여러 비트 스트림간 동기화를 수행하는 방법을 예시하는 코딩 유닛(coding unit) 신택스이다.FIG. 14 is a coding unit syntax illustrating a method of performing synchronization between several bit streams in units of syntax elements as an embodiment to which the present invention may be applied.
도 15는 본 발명이 적용될 수 있는 실시예로서, 예측 유닛(prediction unit)의 신택스 요소를 여러 비트 스트림에서 코딩하는 방법을 예시하는 신택스이다.FIG. 15 is a syntax illustrating a method of coding a syntax element of a prediction unit in several bit streams as an embodiment to which the present invention may be applied.
도 16는 본 발명이 적용될 수 있는 실시예로서, PU(prediction unit)의 신택스 요소를 여러 비트 스트림에서 코딩하는 방법을 예시하는 도면이다.FIG. 16 is a diagram illustrating a method of coding a syntax element of a prediction unit (PU) in several bit streams as an embodiment to which the present invention may be applied.
도 17은 본 발명이 적용될 수 있는 실시예로서, 신택스 요소(syntax element) 단위로 여러 비트 스트림간 동기화를 수행하는 방법을 예시하는 예측 유닛(coding unit) 신택스이다.FIG. 17 is a prediction unit syntax illustrating a method of performing synchronization between several bit streams in units of syntax elements according to an embodiment to which the present invention may be applied.
도 18은 본 발명이 적용될 수 있는 실시예로서, 코딩 트리 유닛(CTU)으로부터 계층적으로 분할되는 유닛들을 여러 비트 스트림에 매핑하여 코딩하는 방법을 설명하기 위한 도면이다.FIG. 18 is a diagram for describing a method of coding by mapping units divided hierarchically from a coding tree unit (CTU) to several bit streams as an embodiment to which the present invention may be applied.
도 19는 본 발명이 적용될 수 있는 실시예로서, 여러 비트 스트림으로 구성된 비디오 신호에 대해 엔트로피 디코딩을 수행하는 과정을 설명하는 흐름도이다.FIG. 19 is a flowchart to describe a process of performing entropy decoding on a video signal composed of several bit streams as an embodiment to which the present invention may be applied.
이하, 본 발명의 실시예들에 따른 예시적인 엘리먼트들 및 동작들이 첨부된 도면들을 참조하여 기술된다. 그러나 상기 도면들을 참조하여 기술되는 본 발명의 상기 엘리먼트들 및 동작들은 단지 실시예들로서 제공되는 것이고, 이것에 의해서 본 발명의 기술적 사상과 그 핵심 구성 및 작용이 제한되지는 않는다는 것을 밝혀두고자 한다.Exemplary elements and operations in accordance with embodiments of the present invention are described below with reference to the accompanying drawings. However, it is to be noted that the elements and operations of the present invention described with reference to the drawings are provided only as embodiments, and thus the technical spirit of the present invention and its core configuration and operation are not limited thereto.
또한, 본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어를 사용하여 설명한다. 그러한 경우에는 해당 부분의 상세 설명에서 그 의미가 명확하게 기재된다. 따라서, 본 명세서의 설명에서 사용된 용어의 명칭 만에 기초하여 본 발명이 단순 해석되어서는 안 될 것이며 그 해당 용어의 의미까지 파악하여 해석되어야 함을 밝혀두고자 한다.In addition, the terminology used in the present invention is selected as a general term widely used as possible now, in a specific case will be described using terms arbitrarily selected by the applicant. In that case, the meaning is clearly stated in the detailed description of the part. Therefore, it should be understood that the present invention should not be simply interpreted based on only the names of the terms used in the description of the present specification, and the meanings of the terms should be interpreted.
또한, 본 발명에서 사용되는 용어들은 발명을 설명하기 위해 선택된 일반적인 용어들이나, 유사한 의미를 갖는 다른 용어가 있는 경우 보다 적절한 해석을 위해 대체 가능할 것이다. 예를 들어, 신호, 데이터, 샘플, 픽쳐, 프레임, 블록은 각 코딩 과정에서 적절하게 대체되어 해석될 수 있을 것이다.In addition, terms used in the present invention may be replaced for more appropriate interpretation when there are general terms selected to describe the invention or other terms having similar meanings. For example, signals, data, samples, pictures, frames, and blocks may be interpreted as appropriate in each coding process.
또한, 본 명세서에서 설명되는 실시예들의 개념과 방법들은, 다른 실시예들에도 적용가능하며, 본 명세서에서 모두 명시하여 기재하지 않더라도 본 발명의 기술적 사상 범위 내에서 각 실시예들의 조합도 적용가능할 것이다.In addition, the concepts and methods of the embodiments described herein may be applicable to other embodiments, and combinations of the embodiments may be applicable within the technical scope of the present invention even if all of them are not explicitly described. .
도 1은 본 발명이 적용되는 실시예로서, 비디오 신호의 인코딩이 수행되는 인코더의 개략적인 블록도를 나타낸다.1 is a schematic block diagram of an encoder in which encoding of a video signal is performed as an embodiment to which the present invention is applied.
도 1을 참조하면, 인코더(100)는 영상 분할부(110), 변환부(120), 양자화부(130), 역양자화부(140), 역변환부(150), 필터링부(160), 복호 픽쳐 버퍼(DPB: Decoded Picture Buffer)(170), 인터 예측부(180), 인트라 예측부(185) 및 엔트로피 인코딩부(190)를 포함하여 구성될 수 있다.Referring to FIG. 1, the encoder 100 may include an image splitter 110, a transformer 120, a quantizer 130, an inverse quantizer 140, an inverse transformer 150, a filter 160, and a decoder. It may include a decoded picture buffer (DPB) 170, an inter predictor 180, an intra predictor 185, and an entropy encoder 190.
영상 분할부(110)는 인코더(100)에 입력된 입력 영상(또는, 픽쳐, 프레임)를 하나 이상의 처리 유닛으로 분할할 수 있다. 예를 들어, 상기 처리 유닛은 코딩 트리 유닛(CTU: Coding Tree Unit), 코딩 유닛(CU: Coding Unit), 예측 유닛(PU: Prediction Unit) 또는 변환 유닛(TU: Transform Unit)일 수 있다. The image divider 110 may divide the input image (or a picture or a frame) input to the encoder 100 into one or more processing units. For example, the processing unit may be a Coding Tree Unit (CTU), a Coding Unit (CU), a Prediction Unit (PU), or a Transform Unit (TU).
인코더(100)는 입력 영상 신호에서 인터 예측부(180) 또는 인트라 예측부(185)로부터 출력된 예측 신호를 감산하여 잔여 신호(residual signal)를 생성할 수 있고, 생성된 잔여 신호는 변환부(120)로 전송된다. The encoder 100 may generate a residual signal by subtracting the prediction signal output from the inter prediction unit 180 or the intra prediction unit 185 from the input image signal, and the generated residual signal is converted into a conversion unit ( 120).
변환부(120)는 잔여 신호에 변환 기법을 적용하여 변환 계수(transform coefficient)를 생성할 수 있다. 예를 들어, 변환 기법은 DCT(Discrete Cosine Transform), DST(Discrete Sine Transform), KLT(Karhunen?Loeve Transform), GBT(Graph-Based Transform), 또는 CNT(Conditionally Non-linear Transform) 중 적어도 하나를 포함할 수 있다. 여기서, GBT는 픽셀 간의 관계 정보를 그래프로 표현한다고 할 때 이 그래프로부터 얻어진 변환을 의미한다. CNT는 이전에 복원된 모든 픽셀(all previously reconstructed pixel)를 이용하여 예측 신호를 생성하고 그에 기초하여 획득되는 변환을 의미한다. 또한, 변환 과정은 정사각형의 동일한 크기를 갖는 픽셀 블록에 적용될 수도 있고, 정사각형이 아닌 가변 크기의 블록에도 적용될 수 있다.The transformer 120 may generate a transform coefficient by applying a transform technique to the residual signal. For example, the transformation technique may include at least one of a discrete cosine transform (DCT), a discrete sine transform (DST), a karhunen-loeve transform (KLT), a graph-based transform (GBT), or a conditionally non-linear transform (CNT). It may include. Here, GBT means a conversion obtained from this graph when the relationship information between pixels is represented by a graph. CNT refers to a transform that is generated based on and generates a prediction signal using all previously reconstructed pixels. In addition, the conversion process may be applied to pixel blocks having the same size as the square, or may be applied to blocks of variable size rather than square.
양자화부(130)는 변환 계수를 양자화하여 엔트로피 인코딩부(190)로 전송하고, 엔트로피 인코딩부(190)는 양자화된 신호를 엔트로피 코딩하여 비트스트림으로 출력할 수 있다.The quantization unit 130 may quantize the transform coefficients and transmit them to the entropy encoding unit 190, and the entropy encoding unit 190 may entropy code the quantized signal and output the bitstream.
양자화부(130)로부터 출력된 양자화된 신호는 예측 신호를 생성하기 위해 이용될 수 있다. 예를 들어, 양자화된 신호는 루프 내의 역양자화부(140) 및 역변환부(150)를 통해 역양자화 및 역변환을 적용함으로써 잔여 신호를 복원할 수 있다. 복원된 잔여 신호를 인터 예측부(180) 또는 인트라 예측부(185)로부터 출력된 예측 신호에 더함으로써 복원 신호가 생성될 수 있다. The quantized signal output from the quantization unit 130 may be used to generate a prediction signal. For example, the quantized signal may reconstruct the residual signal by applying inverse quantization and inverse transformation through inverse quantization unit 140 and inverse transformation unit 150 in a loop. The reconstructed signal may be generated by adding the reconstructed residual signal to the prediction signal output from the inter predictor 180 or the intra predictor 185.
필터링부(160)는 복원 신호에 필터링을 적용하여 이를 재생 장치로 출력하거나 복호 픽쳐 버퍼(170)에 전송한다. 복호 픽쳐 버퍼(170)에 전송된 필터링된 신호는 인터 예측부(180)에서 참조 픽쳐로 사용될 수 있다. 이처럼, 필터링된 픽쳐를 화면간 예측 모드에서 참조 픽쳐로 이용함으로써 화질 뿐만 아니라 부호화 효율도 향상시킬 수 있다. The filtering unit 160 applies filtering to the reconstruction signal and outputs it to the reproduction apparatus or transmits the decoded picture buffer to the decoding picture buffer 170. The filtered signal transmitted to the decoded picture buffer 170 may be used as the reference picture in the inter predictor 180. As such, by using the filtered picture as a reference picture in the inter prediction mode, not only image quality but also encoding efficiency may be improved.
복호 픽쳐 버퍼(170)는 필터링된 픽쳐를 인터 예측부(180)에서의 참조 픽쳐로 사용하기 위해 저장할 수 있다.The decoded picture buffer 170 may store the filtered picture for use as a reference picture in the inter prediction unit 180.
인터 예측부(180)는 복원 픽쳐를 참조하여 시간적 중복성 및/또는 공간적 중복성을 제거하기 위해 시간적 예측 및/또는 공간적 예측을 수행한다. 이때, 인터 예측 모드에서 전송되는 움직임 정보의 양을 줄이기 위해 주변 블록과 현재 블록 간의 움직임 정보의 상관성에 기초하여 움직임 정보를 예측할 수 있다.The inter prediction unit 180 performs temporal prediction and / or spatial prediction to remove temporal redundancy and / or spatial redundancy with reference to the reconstructed picture. In this case, in order to reduce the amount of motion information transmitted in the inter prediction mode, the motion information may be predicted based on the correlation of the motion information between the neighboring block and the current block.
인트라 예측부(185)는 현재 부호화를 진행하려고 하는 블록의 주변에 있는 샘플들을 참조하여 현재 블록을 예측할 수 있다. 상기 인트라 예측부(185)는 인트라 예측을 수행하기 위해 다음과 같은 과정을 수행할 수 있다. 먼저, 예측 신호를 생성하기 위해 필요한 참조 샘플을 준비할 수 있다. 그리고, 준비된 참조 샘플을 이용하여 예측 신호를 생성할 수 있다. 이후, 예측 모드를 부호화하게 된다. 이때, 참조 샘플은 참조 샘플 패딩 및/또는 참조 샘플 필터링을 통해 준비될 수 있다. 참조 샘플은 예측 및 복원 과정을 거쳤기 때문에 양자화 에러가 존재할 수 있다. 따라서, 이러한 에러를 줄이기 위해 인트라 예측에 이용되는 각 예측 모드에 대해 참조 샘플 필터링 과정이 수행될 수 있다.The intra predictor 185 may predict the current block by referring to samples around the block to which current encoding is to be performed. The intra prediction unit 185 may perform the following process to perform intra prediction. First, reference samples necessary for generating a prediction signal may be prepared. The prediction signal may be generated using the prepared reference sample. Then, the prediction mode is encoded. In this case, the reference sample may be prepared through reference sample padding and / or reference sample filtering. Since the reference sample has been predicted and reconstructed, there may be a quantization error. Accordingly, the reference sample filtering process may be performed for each prediction mode used for intra prediction to reduce such an error.
상기 인터 예측부(180) 또는 상기 인트라 예측부(185)를 통해 생성된 예측 신호는 복원 신호를 생성하기 위해 이용되거나 잔여 신호를 생성하기 위해 이용될 수 있다. The prediction signal generated by the inter predictor 180 or the intra predictor 185 may be used to generate a reconstruction signal or to generate a residual signal.
도 2는 본 발명이 적용되는 실시예로서, 비디오 신호의 디코딩이 수행되는 디코더의 개략적인 블록도를 나타낸다.2 is a schematic block diagram of a decoder in which decoding of a video signal is performed as an embodiment to which the present invention is applied.
도 2를 참조하면, 디코더(200)는 엔트로피 디코딩부(210), 역양자화부(220), 역변환부(230), 필터링부(240), 복호 픽쳐 버퍼(DPB: Decoded Picture Buffer Unit)(250), 인터 예측부(260) 및 인트라 예측부(265)를 포함하여 구성될 수 있다. Referring to FIG. 2, the decoder 200 may include an entropy decoding unit 210, an inverse quantization unit 220, an inverse transform unit 230, a filtering unit 240, and a decoded picture buffer unit (DPB) 250. ), An inter predictor 260, and an intra predictor 265.
그리고, 디코더(200)를 통해 출력된 복원 영상 신호는 재생 장치를 통해 재생될 수 있다.The reconstructed video signal output through the decoder 200 may be reproduced through the reproducing apparatus.
디코더(200)는 도 1의 인코더(100)로부터 출력된 신호을 수신할 수 있고, 수신된 신호는 엔트로피 디코딩부(210)를 통해 엔트로피 디코딩될 수 있다. The decoder 200 may receive a signal output from the encoder 100 of FIG. 1, and the received signal may be entropy decoded through the entropy decoding unit 210.
역양자화부(220)에서는 양자화 스텝 사이즈 정보를 이용하여 엔트로피 디코딩된 신호로부터 변환 계수(transform coefficient)를 획득한다. The inverse quantization unit 220 obtains a transform coefficient from the entropy decoded signal using the quantization step size information.
역변환부(230)에서는 변환 계수를 역변환하여 잔여 신호를 획득하게 된다. The inverse transformer 230 inversely transforms a transform coefficient to obtain a residual signal.
획득된 잔여 신호를 인터 예측부(260) 또는 인트라 예측부(265)로부터 출력된 예측 신호에 더함으로써 복원 신호가 생성된다. The reconstruction signal is generated by adding the obtained residual signal to the prediction signal output from the inter prediction unit 260 or the intra prediction unit 265.
필터링부(240)는 복원 신호에 필터링을 적용하여 이를 재생 장치로 출력하거나 복호 픽쳐 버퍼부(250)에 전송한다. 복호 픽쳐 버퍼부(250)에 전송된 필터링된 신호는 인터 예측부(260)에서 참조 픽쳐로 사용될 수 있다. The filtering unit 240 applies filtering to the reconstruction signal and outputs it to the reproduction apparatus or transmits the decoded picture buffer unit 250 to the reproduction device. The filtered signal transmitted to the decoded picture buffer unit 250 may be used as the reference picture in the inter predictor 260.
본 명세서에서, 인코더(100)의 필터링부(160), 인터 예측부(180) 및 인트라 예측부(185)에서 설명된 실시예들은 각각 디코더의 필터링부(240), 인터 예측부(260) 및 인트라 예측부(265)에도 동일하게 적용될 수 있다.In the present specification, the embodiments described by the filtering unit 160, the inter prediction unit 180, and the intra prediction unit 185 of the encoder 100 are respectively the filtering unit 240, the inter prediction unit 260, and the decoder. The same may be applied to the intra predictor 265.
도 3은 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)이 적용되는 엔트로피 인코딩부의 개략적인 블록도를 나타낸다.3 is a schematic block diagram of an entropy encoding unit to which CABAC (Context-based Adaptive Binary Arithmetic Coding) is applied according to an embodiment to which the present invention is applied.
본 발명이 적용되는 엔트로피 인코딩부(300)는 이진화부(310), 컨텍스트 모델링부(320), 이진 산술 인코딩부(330) 및 메모리(360)를 포함하고, 상기 이진 산술 인코딩부(330)는 정규 이진 인코딩부(regular binary encoding unit)(340) 및 바이패스 이진 인코딩부(bypass binary encoding unit)(350)를 포함한다. 여기서, 상기 정규 이진 인코딩부(regular binary encoding unit)(340) 및 상기 바이패스 이진 인코딩부(bypass binary encoding unit)(350)는 각각 정규 코딩 엔진, 바이패스 코딩 엔진이라 불릴 수 있다.The entropy encoding unit 300 to which the present invention is applied includes a binarization unit 310, a context modeling unit 320, a binary arithmetic encoding unit 330, and a memory 360, and the binary arithmetic encoding unit 330 includes: A regular binary encoding unit 340 and a bypass binary encoding unit 350. Here, the regular binary encoding unit 340 and the bypass binary encoding unit 350 may be referred to as a normal coding engine and a bypass coding engine, respectively.
상기 이진화부(310)은 데이터 심볼들의 시퀀스를 수신하고 이진화를 수행함으로써 0 또는 1의 이진화된 값으로 구성된 이진 심볼(bin) 스트링을 출력할 수 있다. 상기 이진화부(310)은 신택스(syntax) 요소들을 이진 심볼들로 매핑할 수 있다. 서로 다른 여러 이진화 과정들, 예를 들어, 단항(unary: U), 끝이 잘린 단항(truncated unary: TU), k차 Exp-Golomb (EGk), 및 고정 길이(Fixed Length) 과정 등이 이진화를 위해 사용될 수 있다. 상기 이진화 과정은 신택스 요소의 유형을 기반으로 선택될 수 있다.The binarization unit 310 may output a binary symbol string composed of a binary value of 0 or 1 by receiving a sequence of data symbols and performing binarization. The binarization unit 310 may map syntax elements into binary symbols. Several different binarization processes, such as unary (U), truncated unary (TU), k-th order Exp-Golomb (EGk), and fixed length processes, support binarization. Can be used for The binarization process may be selected based on the type of syntax element.
출력된 이진 심볼 스트링은 컨텍스트 모델링부(320)으로 전송된다. The output binary symbol string is transmitted to the context modeling unit 320.
상기 컨텍스트 모델링부(320)은 메모리로부터 현재 블록을 코딩하는데 필요한 확률 정보를 선택하여 상기 이진 산술 인코딩부(330)로 전송한다. 예를 들어, 코딩할 신택스 엘리먼트에 기초하여 상기 메모리(360)에서 컨텍스트 메모리를 선택하고 빈 인덱스(binIdx)를 통해 현재 신택스 엘리먼트 코딩에 필요한 확률 정보를 선택할 수 있다. 여기서, 컨텍스트는 심볼의 발생 확률에 관한 정보를 의미하고, 컨텍스트 모델링은 이전까지 코딩된 빈(bin)들에 대한 정보로부터 다음 빈(bin)의 이진 산술 코딩에 필요한 확률을 추정하는 과정을 의미한다. 그리고, 컨텍스트는 특정 확률 값을 나타내는 상태(state)와 MPS(Most Probable Symbol)로 구성될 수 있다. The context modeling unit 320 selects probability information necessary for coding a current block from a memory and transmits the probability information to the binary arithmetic encoding unit 330. For example, the context memory may be selected from the memory 360 based on the syntax element to be coded, and the probability information required for coding the current syntax element may be selected through the bin index binIdx. Here, context refers to information about a probability of occurrence of a symbol, and context modeling refers to a process of estimating a probability necessary for binary arithmetic coding of the next bin from information about previously coded bins. . The context may include a state representing a specific probability value and a Most Probable Symbol (MPS).
상기 컨텍스트 모델링부(320)는 높은 코딩 효율을 성취하기 위해 필요한 정확한 확률 추정을 제공할 수 있다. 이에 따라, 서로 다른 이진 심볼들에 대해 서로 다른 컨텍스트 모델들이 사용될 수 있고 이러한 컨텍스트 모델의 확률은 이전에 코딩된 이진 심볼의 값들을 기반으로 업데이트될 수 있다.The context modeler 320 may provide accurate probability estimation necessary to achieve high coding efficiency. Accordingly, different context models may be used for different binary symbols and the probability of such context model may be updated based on the values of previously coded binary symbols.
유사한 분포를 가지는 이진 심볼들은 동일한 컨텍스트 모델을 공유할 수 있다. 이러한 각 이진 심볼에 대한 컨텍스트 모델은 확률 추정을 위해, 빈의 신택스 정보, 빈 스트링에서의 빈의 위치를 나타내는 빈 인덱스(binIdx), 빈이 들어 있는 블록의 이웃 블록에 포함된 빈의 확률, 이웃 블록의 특정 신택스 요소의 디코딩 값 중 적어도 하나가 이용될 수 있다.Binary symbols with similar distributions can share the same context model. The context model for each of these binary symbols includes the syntax information of the bin, the bin index (binIdx) indicating the location of the bin in the bin string, the probability of the bin in the neighboring block of the block containing the bin, and the neighboring block for probability estimation. At least one of the decoding values of the specific syntax element of may be used.
상기 이진 산술 인코딩부(330)는 정규 이진 인코딩부(regular binary encoding unit)(340) 및 바이패스 이진 인코딩부(bypass binary encoding unit)(350)를 포함하고, 출력된 스트링에 대한 엔트로피 인코딩을 수행하고 압축된 데이터 비트들을 출력한다.The binary arithmetic encoding unit 330 includes a regular binary encoding unit 340 and a bypass binary encoding unit 350 to perform entropy encoding on the output string. And output compressed data bits.
상기 정규 이진 인코딩부(regular binary encoding unit)(340)는 재귀적 간격 분할(recursive interval division)을 기반으로 산술 코딩을 수행한다.The regular binary encoding unit 340 performs arithmetic coding based on recursive interval division.
먼저, 0 내지 1의 초기값을 가지는 간격(또는 구간, 범위)이 이진 심볼의 확률을 기반으로 두 개의 하위 간격들로 분할된다. 인코딩된 비트들은 이진 소수로 변환되는 경우 이진 심볼의 값들이 연속적으로 디코딩되는 과정에서 0 또는 1을 나타내는 간격 중 하나를 선택할 수 있는 오프셋을 제공한다.First, an interval (or interval, range) having an initial value of 0 to 1 is divided into two lower intervals based on a probability of a binary symbol. When the encoded bits are converted to binary decimal numbers, they provide an offset from which one of intervals representing 0 or 1 can be selected in the course of successive decoding of binary symbol values.
디코딩된 모드의 이진 심볼 이후에, 상기 간격은 선택된 하위 간격을 동일하게 하기 위해 업데이트될 수 있으며, 상기 간격 분할 과정 자체가 반복된다. 상기 간격 및 오프셋은 제한된 비트 정밀도를 가지며, 따라서 상기 간격이 특정한 값 아래로 떨어질 때마다 오버플로우를 방지하기 위해 재정규화(renormalization)가 필요할 수 있다. 상기 재정규화(renormalization)는 각각의 이진 심볼이 인코딩 또는 디코딩된 이후에 발생할 수 있다.After the binary symbol in the decoded mode, the interval can be updated to equalize the selected lower interval, and the interval division process itself is repeated. The spacing and offset have limited bit precision, so renormalization may be necessary to prevent overflow each time the spacing falls below a certain value. The renormalization may occur after each binary symbol is encoded or decoded.
상기 바이패스 이진 인코딩부(bypass binary encoding unit)(350)는 컨텍스트 모델 없이 인코딩을 수행하며, 현재 코딩되는 빈(bin)의 확률을 0.5로 고정하여 코딩을 수행한다. 이는 신택스의 확률을 결정하기 어렵거나 고속으로 코딩하고자 할 때 이용될 수 있다.The bypass binary encoding unit 350 performs encoding without a context model, and performs coding by fixing a probability of a bin currently coded to 0.5. This can be used when it is difficult to determine the probability of syntax or when you want to code at high speed.
도 4는 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)이 적용되는 엔트로피 디코딩부의 개략적인 블록도를 나타낸다.4 is a schematic block diagram of an entropy decoding unit to which CABAC (Context-based Adaptive Binary Arithmetic Coding) is applied according to an embodiment to which the present invention is applied.
본 발명이 적용되는 엔트로피 디코딩부(400)는 컨텍스트 모델링부(410), 이진 산술 디코딩부(420), 메모리(450) 및 역이진화부(460)를 포함하고, 상기 이진 산술 디코딩부(420)는 정규 이진 디코딩부(regular binary decoding unit)(430) 및 바이패스 이진 디코딩부(bypass binary decoding unit)(440)를 포함한다. The entropy decoding unit 400 to which the present invention is applied includes a context modeling unit 410, a binary arithmetic decoding unit 420, a memory 450, and an inverse binarization unit 460, and the binary arithmetic decoding unit 420. A regular binary decoding unit 430 and a bypass binary decoding unit 440 are included.
상기 엔트로피 디코딩부(400)는 비트 스트림을 수신하고 현재 신택스 요소에 바이패스 모드(bypass mode)가 적용되는지 여부를 확인한다. 여기서, 바이패스 모드(bypass mode)는 컨텍스트 모델을 이용하지 않고, 현재 코딩되는 빈(bin)의 확률을 0.5로 고정하여 코딩을 수행하는 것을 의미한다. 바이패스 모드(bypass mode)가 적용되지 않는 경우, 상기 정규 이진 디코딩부(regular binary decoding unit)(430)는 정규 모드(regular mode)에 따라 이진 산술 디코딩을 수행한다.The entropy decoding unit 400 receives the bit stream and checks whether a bypass mode is applied to the current syntax element. In this case, the bypass mode means that the coding is performed by fixing the probability of the currently coded bin to 0.5 without using the context model. When the bypass mode is not applied, the regular binary decoding unit 430 performs binary arithmetic decoding according to a regular mode.
이때, 상기 컨텍스트 모델링부(410)는 상기 메모리(450)로부터 현재 비트스트림을 디코딩하는데 필요한 확률 정보를 선택하여 상기 정규 이진 디코딩부(regular binary decoding unit)(430)로 전송한다.In this case, the context modeling unit 410 selects probability information necessary for decoding the current bitstream from the memory 450 and transmits the probability information to the regular binary decoding unit 430.
한편, 바이패스 모드(bypass mode)가 적용되는 경우, 상기 바이패스 이진 디코딩부(bypass binary decoding unit)(440)는 바이패스 모드(bypass mode)에 따라 이진 산술 디코딩을 수행한다.On the other hand, when a bypass mode is applied, the bypass binary decoding unit 440 performs binary arithmetic decoding according to the bypass mode.
상기 역이진화부(460)는 상기 이진 산술 디코딩부(420)에서 디코딩된 이진수 형태의 빈(bin)을 입력받아 정수 형태의 신택스 엘리먼트 값으로 변환 출력하게 된다. 반면, 이진수 형태의 빈(bin) 또는 빈 스트링(bin string)이 신택스 요소의 값으로 매핑되는 신택스 엘리먼트의 경우, 상기 역이진화부(460)는 상기 이진수 형태의 빈(bin)을 그대로 출력할 수도 있다,The inverse binarization unit 460 receives a binary-type bin decoded by the binary arithmetic decoding unit 420 and converts it into an integer-type syntax element value. On the other hand, in the case of a syntax element in which a bin or a bin string of binary forms is mapped to a value of a syntax element, the debinarization unit 460 may output the binary bin as it is. have,
도 5는 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)에 따라 수행되는 인코딩 흐름도를 나타낸다.5 is an embodiment to which the present invention is applied and shows an encoding flowchart performed according to Context-based Adaptive Binary Arithmetic Coding (CABAC).
인코더는, 신택스 엘리먼트에 대해 이진화를 수행할 수 있다(S510). The encoder may perform binarization on the syntax element (S510).
상기 인코더는, 정규 모드에 따라 이진 산술 코딩을 수행할지 또는 바이패스 모드에 따라 이진 산술 코딩을 수행할지 여부를 확인할 수 있다(S520).The encoder may determine whether to perform binary arithmetic coding according to a normal mode or binary arithmetic coding according to a bypass mode (S520).
정규 모드의 경우, 상기 인코더는 컨텍스트 모델을 선택할 수 있고(S530), 상기 컨텍스트 모델에 기초하여 이진 산술 인코딩을 수행할 수 있다(S540). 그리고, 상기 인코더는, 컨텍스트 모델을 업데이트할 수 있으며(S550), 상기 S530 단계에서 업데이트된 컨텍스트 모델에 기초하여 다시 적합한 컨텍스트 모델을 선택할 수 있다.In the normal mode, the encoder may select a context model (S530) and perform binary arithmetic encoding based on the context model (S540). In addition, the encoder may update the context model (S550), and may select a suitable context model again based on the updated context model in operation S530.
한편, 바이패스 모드의 경우, 상기 인코더는 확률 0.5에 기초하여 이진 산술 인코딩을 수행할 수 있다(S560).In the bypass mode, the encoder may perform binary arithmetic encoding based on a probability of 0.5 (S560).
도 6은 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)에 따라 수행되는 디코딩 흐름도를 나타낸다.6 is an embodiment to which the present invention is applied and shows a decoding flowchart performed according to Context-based Adaptive Binary Arithmetic Coding (CABAC).
먼저, 디코더는 비트스트림을 수신할 수 있다(S610). First, the decoder may receive a bitstream (S610).
상기 디코더는 현재 신택스 요소에 정규 모드(regular mode)가 적용되는지 또는 바이패스 모드(bypass mode)가 적용되는지 여부를 확인할 수 있다(S620). 여기서, 상기 바이패스 모드의 적용 여부는 신택스의 종류에 따라 사전에 결정되어 있을 수 있다.The decoder may check whether a regular mode or a bypass mode is applied to the current syntax element (S620). Here, whether to apply the bypass mode may be determined in advance according to the type of syntax.
또한, 정규 모드가 적용되는 심볼들과 바이패스 모드가 적용되는 심볼들이 조합되어 신택스 요소를 구성할 수도 있다. 이 경우, 상기 디코더는 현재 신택스 요소의 심볼들에 바이패스 모드(bypass mode)가 적용되는지 여부를 확인할 수 있다.In addition, symbols applied with the normal mode and symbols applied with the bypass mode may be combined to form a syntax element. In this case, the decoder may check whether a bypass mode is applied to the symbols of the current syntax element.
상기 S620단계에서 확인한 결과 정규 모드가 적용되는 경우, 상기 디코더는 컨텍스트 모델을 선택할 수 있고(S630), 상기 컨텍스트 모델에 기초하여 이진 산술 디코딩을 수행할 수 있다(S640). 그리고, 상기 디코더는, 컨텍스트 모델을 업데이트할 수 있으며(S650), 상기 S630 단계에서 업데이트된 컨텍스트 모델에 기초하여 다시 적합한 컨텍스트 모델을 선택할 수 있다.When the normal mode is applied as a result of checking in step S620, the decoder may select a context model (S630) and perform binary arithmetic decoding based on the context model (S640). In addition, the decoder may update the context model (S650), and may select a suitable context model again based on the updated context model in operation S630.
한편, 상기 S620단계에서 확인한 결과 바이패스 모드가 적용되는 경우, 상기 디코더는 확률 0.5에 기초하여 이진 산술 디코딩을 수행할 수 있다(S660).On the other hand, when the bypass mode is applied as a result confirmed in step S620, the decoder may perform binary arithmetic decoding based on the probability 0.5 (S660).
상기 디코더는 디코딩된 빈스트링(bin string)에 대해 역이진화를 수행할 수 있다(S670). 예를 들어, 디코딩된 이진수 형태의 빈(bin)을 입력받아 정수 형태의 신택스 엘리먼트 값으로 변환 출력할 수 있다.The decoder may perform inverse binarization on the decoded bin string (S670). For example, a decoded binary type bin may be input and converted into an integer syntax element value.
최근 비디오 표준에서 고화질, 고프레임율, 고해상도의 영상을 코딩하는 경우, 산술 코딩(arithmetic coding) 알고리즘 등에 내재된 데이터 의존성으로 인해 엔트로피 코딩(entropy coding) 절차가 전체 성능의 병목이 될 가능성이 크다. 많은 비트 데이터가 발생하는 프레임들이 연속되는 경우, 실시간 처리를 위해 여러 프레임들을 버퍼링해야 하므로 상당한 크기의 버퍼 메모리가 필요할 수 있다. 따라서, 엔트로피 코딩의 처리량(throughput) 향상이 요구된다.In the case of coding high quality, high frame rate, and high resolution images in recent video standards, the entropy coding procedure is likely to be a bottleneck of overall performance due to data dependence inherent to arithmetic coding algorithms. When frames with many bit data are generated in a row, a large amount of buffer memory may be needed because several frames must be buffered for real-time processing. Therefore, an improvement in throughput of entropy coding is required.
현재 널리 적용되는 엔트로피 코딩(entropy coding) 방법으로 산술 코딩(arithmetic coding) 방법을 들 수 있다. 예를 들어, H.264, HEVC의 경우 이진 심볼(binary symbol)들에 대한 엔트로피 코딩 방법으로 심볼에 대한 확률이 적응적으로 변하는 CABAC(Context-Adaptive Binary Arithmetic Coding)을 적용하고 있다. 여기서, 이진 심볼(binary symbol)은 0 또는 1의 값을 가지는 심볼을 말한다. 반면에, 멀티 심볼(multi-symbol)(즉, 다치 심볼, non-binary symbol) 은 3개 이상의 값을 가질 수 있는 심볼을 말한다.As an entropy coding method which is widely applied at present, an arithmetic coding method may be mentioned. For example, in the case of H.264 and HEVC, CABAC (Context-Adaptive Binary Arithmetic Coding), in which the probability of a symbol is adaptively applied, is applied as an entropy coding method for binary symbols. Here, a binary symbol refers to a symbol having a value of 0 or 1. On the other hand, a multi-symbol (ie, a non-binary symbol) refers to a symbol that can have three or more values.
산술 코딩 엔진으로 최종 입력되는 가능한 모든 단위 숫자들의 집합은 알파벳(alphabet)으로 지칭될 수 있다. 따라서, 이진 심볼의 경우에는 알파벳이 0과 1로 구성되어 있다고 표현될 수도 있고, 알파벳 심볼로 0과 1이 가능하다고 표현될 수도 있다.The set of all possible unit numbers finally input to the arithmetic coding engine may be referred to as alphabet. Accordingly, in the case of a binary symbol, the alphabet may be represented as being composed of 0 and 1, or may be represented as being 0 and 1 as alphabetical symbols.
산술 코딩에서 [0, 1]의 간격(또는 구간)(interval)은 각 심볼 발생의 확률에 비례하는 확률 간격으로 나눠진다. 각 확률 간격의 길이는 해당 심볼(symbol)에 대한 확률 값에 비례하여 결정된다. 간격을 각 심볼들의 확률 간격에 비례하여 나눈 후, 상기 현재 코딩되는 심볼에 대한 간격이 선택되고, 상기 선택된 간격이 다음 심볼을 코딩할 때 사용된다. 심볼들이 코딩되면서 간격의 길이는 계속 작아지기 때문에, 재정규화(renormalization) 절차를 통해 간격 길이를 스케일링(scaling)하여, 간격의 길이가 항상 일정 범위 안에 놓이도록 할 수 있다.In arithmetic coding, the interval (or interval) of [0, 1] is divided by a probability interval proportional to the probability of occurrence of each symbol. The length of each probability interval is determined in proportion to the probability value for the corresponding symbol. After dividing the interval proportionally to the probability interval of each symbol, the interval for the currently coded symbol is selected, and the selected interval is used when coding the next symbol. Since the length of the interval continues to get smaller as the symbols are coded, the interval length can be scaled through a renormalization procedure so that the length of the interval is always within a certain range.
이하, 본 발명의 설명에 있어 설명의 편의를 위해, CABAC (Context Adaptive Binary Arithmetic Coding) 을 기준으로 예를 들어 설명하나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 이진 산술 코딩 대신 비-이진 산술 코딩(non-binary arithmetic coding)이 본 발명에 적용될 수도 있다.Hereinafter, for convenience of explanation in the description of the present invention, for example, it will be described based on Context Adaptive Binary Arithmetic Coding (CABAC), but the present invention is not limited thereto. For example, non-binary arithmetic coding may be applied to the present invention instead of binary arithmetic coding.
이진 산술 코딩에서는 확률 간격이 2개로 나눠지고, 멀티 심볼(또는 다치 심볼) 산술 코딩에서는 확률 간격이 사용되는 심볼의 수만큼(즉, 알파벳 심볼의 수만큼) 나눠진다. 나눠지는 간격의 개수를 제외하면 산술 코딩 방법은 이진 산술 코딩과 멀티 심볼 산술 코딩간에 차이가 존재하지 않는다. 다시 말해, 이진 산술 코딩과 멀티 심볼 산술 코딩에 동일한 산술 코딩 방법이 적용될 수 있다.In binary arithmetic coding, the probability interval is divided into two, and in multi-symbol (or multi-valued) arithmetic coding, the probability interval is divided by the number of symbols used (ie, the number of alphabet symbols). Except for the number of divided intervals, the arithmetic coding method does not have a difference between binary arithmetic coding and multi-symbol arithmetic coding. In other words, the same arithmetic coding method can be applied to binary arithmetic coding and multi-symbol arithmetic coding.
또한, 본 발명의 설명에 있어 설명의 편의를 위해, HEVC의 신택스(syntax) 또는 신택스 요소(syntax element)를 기준으로 예를 들어 설명하나, 본 발명이 이에 한정되는 것은 아니다. In addition, in the description of the present invention, for convenience of description, an example will be described based on a syntax or syntax element of HEVC, but the present invention is not limited thereto.
본 발명에서는 엔트로피 코딩의 처리량을 향상시키기 위해 신택스 요소(syntax element)를 기능 블록 단위(function block unit)로 여러 비트 스트림(bit stream)에 매핑하여 코딩하는 방법을 제안한다.The present invention proposes a method of coding a syntax element by mapping a syntax element to a plurality of bit streams in a function block unit in order to improve throughput of entropy coding.
여기서, 기능 블록은 하나 이상의 신택스 요소가 매핑되어 처리되는(또는 코딩되는) 영역 또는 블록을 나타내며, 상기 기능 블록의 용어는 그 명칭에 한정되는 것은 아니다. 예를 들어, 상기 기능 블록은 서브 블록, 기능 단위, 영역 단위, 기능 영역, 서브 영역, 신택스 요소 그룹 등으로 지칭될 수도 있다.Here, a functional block represents an area or a block in which one or more syntax elements are mapped and processed (or coded), and the term of the functional block is not limited to the name. For example, the functional block may be referred to as a sub block, a functional unit, an area unit, a functional area, a sub area, a syntax element group, and the like.
또한, 본 발명에서는 기능 블록 단위 또는 신택스 요소 단위로 여러 비트 스트림간 동기화를 수행하는 방법을 제안한다.In addition, the present invention proposes a method for performing synchronization between several bit streams in units of functional blocks or in syntax elements.
이하 본 발명의 설명에 있어 설명의 편의를 위해, HEVC의 신택스(syntax)를 기준으로 예로 들어 설명하나, 본 발명이 이에 한정되는 것은 아니다.In the following description of the present invention, for convenience of description, the syntax of the HEVC is described as an example, but the present invention is not limited thereto.
도 7은 본 발명이 적용될 수 있는 실시예로서, 레지듀얼 코딩 신택스(residual coding syntax)의 신택스 요소(syntax element)들을 기능 블록 단위(function block unit)로 여러 비트 스트림에 매핑하는 방법을 예시하는 도면이다.FIG. 7 is a diagram illustrating a method of mapping syntax elements of residual coding syntax to a plurality of bit streams in a function block unit according to an embodiment to which the present invention may be applied. to be.
도 7을 참조하면, 인코더/디코더는 레지듀얼 코딩 루틴(또는 레지듀얼 코딩 신택스)을 복수 개의 서브 루틴(또는 스테이지)으로 분할할 수 있고, 분할된 서브 루틴들을 여러 비트 스트림에 매핑하여 파이프라이닝(Pipelining) 방식으로 코딩할 수 있다. 여기서, 코딩 루틴은 특정 신택스 구조(syntax structure) 상에서 수행되는 일련의 코딩 절차를 나타낸다. 이때, 코딩은 인코딩과 디코딩을 포함한다. 그리고, 서브 루틴은 상기 코딩 루틴을 기능 블록 단위로 분할한 영역을 나타낸다.Referring to FIG. 7, the encoder / decoder may split a residual coding routine (or residual coding syntax) into a plurality of subroutines (or stages), and map the divided subroutines to several bit streams to pipelining ( Can be coded in a pipelining fashion. Here, the coding routine represents a series of coding procedures that are performed on a specific syntax structure. At this time, the coding includes encoding and decoding. The subroutine represents an area obtained by dividing the coding routine into functional block units.
예를 들어, HEVC의 레지듀얼 코딩 루틴을 기능 블록 단위로 분할하면, 7개의 서브 루틴으로 분할될 수 있다. 분할된 7개의 서브 루틴 중 제 1 서브 루틴은 아래의 표 1과 같이 나타낼 수 있다.For example, if the residual coding routine of HEVC is divided into functional block units, it may be divided into seven subroutines. The first subroutine of the divided seven subroutines may be represented as shown in Table 1 below.
표 1을 참조하면, 인코더/디코더는 제 1 서브 루틴에서 신택스 요소 transform_skip_flag, last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_suffix 를 코딩할 수 있다. Referring to Table 1, the encoder / decoder may code syntax elements transform_skip_flag, last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, and last_sig_coeff_y_suffix in the first subroutine.
여기서, transform_skip_flag는 현재 변환 블록에 변환이 적용되는지 여부를 나타내는 신택스 요소를 의미한다. last_sig_coeff_x_prefix는 변환 블록 내에서 스캔 순서상 마지막 의미 있는(significant) 계수의 열 위치의 접두어를 나타낼 수 있다. last_sig_coeff_y_prefix는 변환 블록 내에서 스캔 순서상 마지막 의미 있는 계수의 행 위치의 접두어를 나타낼 수 있다. last_sig_coeff_x_suffix는 변환 블록 내에서 스캔 순서상 마지막 의미 있는 계수의 열 위치 접미사를 나타낼 수 있다. last_sig_coeff_y_suffix는 변환 블록 내에서 스캔 순서상 마지막 의미 있는 계수의 행 위치 접미사를 나타낼 수 있다. 그리고, 상기 의미 있는 계수는 0이 아닌 양자화된 변환 계수를 나타낸다.Here, transform_skip_flag means a syntax element indicating whether a transform is applied to the current transform block. last_sig_coeff_x_prefix may indicate the prefix of the column position of the last significant coefficient in the scan order within the transform block. last_sig_coeff_y_prefix may indicate the prefix of the row position of the last significant coefficient in the scan order within the transform block. last_sig_coeff_x_suffix may indicate the column position suffix of the last significant coefficient in the scan order within the transform block. last_sig_coeff_y_suffix may indicate the row position suffix of the last significant coefficient in the scan order within the transform block. And the meaningful coefficients represent non-zero quantized transform coefficients.
즉, 인코더/디코더는 상기 제 1 서브 루틴에서 현재 변환 블록에 변환이 적용되는지 여부를 나타내는 신택스 요소를 코딩하고, 현재 변환 블록 내 마지막 0이 아닌 변환 계수의 위치를 코딩할 수 있다.That is, the encoder / decoder may code a syntax element indicating whether a transform is applied to a current transform block in the first subroutine, and code a position of a last non-zero transform coefficient in the current transform block.
또한, 분할된 7개의 서브 루틴 중 제 2 서브 루틴은 아래의 표 2와 같이 나타낼 수 있다.In addition, the second subroutine of the divided seven subroutines may be represented as shown in Table 2 below.
표 2를 참조하면, 인코더/디코더는 제 2 서브 루틴에서 신택스 요소 coded_sub_block_flag를 코딩할 수 있다. Referring to Table 2, the encoder / decoder may code the syntax element coded_sub_block_flag in the second subroutine.
여기서, coded_sub_block_flag는 서브 블록 단위로 0이 아닌 양자화된 변환 계수가 존재하는지 여부를 나타낸다.Here, coded_sub_block_flag indicates whether a non-zero quantized transform coefficient exists in subblock units.
또한, 분할된 7개의 서브 루틴 중 제 3 서브 루틴은 아래의 표 3과 같이 나타낼 수 있다.In addition, the third subroutine of the divided seven subroutines may be represented as shown in Table 3 below.
표 3을 참조하면, 인코더/디코더는 제 3 서브 루틴에서 신택스 요소 sig_coeff_flag를 코딩할 수 있다.Referring to Table 3, the encoder / decoder may code the syntax element sig_coeff_flag in the third subroutine.
여기서, sig_coeff_flag는 양자화된 변환 계수가 0보다 큰 값을 갖는지 여부를 나타낼 수 있다.Here, sig_coeff_flag may indicate whether the quantized transform coefficient has a value greater than zero.
또한, 분할된 7개의 서브 루틴 중 제 4 서브 루틴은 아래의 표 4와 같이 나타낼 수 있다.In addition, a fourth subroutine of the divided seven subroutines may be represented as shown in Table 4 below.
표 4를 참조하면, 인코더/디코더는 제 4 서브 루틴에서 신택스 요소 coeff_abs_level_greater1_flag 를 코딩할 수 있다.Referring to Table 4, the encoder / decoder may code the syntax element coeff_abs_level_greater1_flag in the fourth subroutine.
여기서, coeff_abs_level_greater1_flag 는 양자화된 변환 계수의 절대값이 1보다 큰 값을 가지는지 여부를 나타낼 수 있다.Here, coeff_abs_level_greater1_flag may indicate whether the absolute value of the quantized transform coefficient has a value greater than one.
또한, 분할된 7개의 서브 루틴 중 제 5 서브 루틴은 아래의 표 5와 같이 나타낼 수 있다.In addition, the fifth subroutine of the divided seven subroutines may be represented as shown in Table 5 below.
표 5를 참조하면, 인코더/디코더는 제 5 서브 루틴에서 신택스 요소 coeff_abs_level_greater2_flag 를 코딩할 수 있다.Referring to Table 5, the encoder / decoder may code the syntax element coeff_abs_level_greater2_flag in the fifth subroutine.
여기서, coeff_abs_level_greater2_flag 는 양자화된 변환 계수의 절대값이 2보다 큰 값을 가지는지 여부를 나타낼 수 있다.Here, coeff_abs_level_greater2_flag may indicate whether the absolute value of the quantized transform coefficient has a value greater than two.
또한, 분할된 7개의 서브 루틴 중 제 6 서브 루틴은 아래의 표 6과 같이 나타낼 수 있다.In addition, the sixth sub-routine of the divided seven sub-routines may be represented as shown in Table 6 below.
표 6을 참조하면, 인코더/디코더는 제 6 서브 루틴에서 신택스 요소 coeff_sign_flag 를 코딩할 수 있다.Referring to Table 6, the encoder / decoder may code the syntax element coeff_sign_flag in the sixth subroutine.
여기서, coeff_sign_flag 는 양자화된 변환 계수의 부호를 나타낼 수 있다.Here, coeff_sign_flag may indicate the sign of the quantized transform coefficient.
또한, 분할된 7개의 서브 루틴 중 제 7 서브 루틴은 아래의 표 7과 같이 나타낼 수 있다.In addition, the seventh sub-routine of the divided seven sub-routines may be represented as shown in Table 7 below.
표 7을 참조하면, 인코더/디코더는 제 7 서브 루틴에서 신택스 요소 coeff_abs_level_remaining 를 코딩할 수 있다.Referring to Table 7, the encoder / decoder may code a syntax element coeff_abs_level_remaining in the seventh subroutine.
여기서, coeff_abs_level_remaining 는 양자화된 변환 계수의 값의 나머지 값의 절대값을 나타낼 수 있다.Here, coeff_abs_level_remaining may represent an absolute value of the remaining values of the values of the quantized transform coefficients.
인코더/디코더는 제 1 서브 루틴에서 변환 유닛(TU: transform unit) 단위로 상기 TU에 변환이 적용되는지 여부 및 마지막 0이 아닌 변환 계수의 위치를 코딩(또는 파싱)할 수 있고, 인코더/디코더는 이후의 서브 루틴(즉 제 2 내지 제 7 서브 루틴)에서 계수 그룹(CG: cefficient group)(또는 서브 그룹) 단위로 표 2 내지 표 6에서 설명한 신택스 요소들을 코딩할 수 있다.The encoder / decoder may code (or parse) whether a transform is applied to the TU in units of transform units (TUs) and positions of last non-zero transform coefficients in a first subroutine, and the encoder / decoder The syntax elements described in Tables 2 to 6 may be coded in units of coefficient groups (CGs) (or subgroups) in subsequent subroutines (ie, second to seventh subroutines).
도 7을 참조하면, 인코더/디코더는 TU 단위로 수행되는 제 1 서브 루틴을 제 1 비트 스트림(이하, BS1)(701)에 매핑하고, 제 2 서브 루틴부터 파이프라이닝 방식으로 CG 단위로 비트 스트림을 번갈아 가며 코딩할 수 있다. 다시 말해, 인코더/디코더는 제 1 서브 루틴 이후 CG 단위로 수행되는 각 서브 루틴들을 여러 비트 스트림에서 코딩할 수 있다.Referring to FIG. 7, the encoder / decoder maps a first subroutine performed in TU units to a first bit stream (hereinafter referred to as BS1) 701, and the bit stream in CG units in a pipelining manner from the second subroutine. Can be coded alternately. In other words, the encoder / decoder may code each subroutine performed in CG units after the first subroutine in several bit streams.
구체적으로, 인코더/디코더는 첫 번째 CG의 제 2 서브 루틴을 BS1(701)에서 수행한 후에 다음 CG의 제 2 서브 루틴을 제 2 비트 스트림(이하, BS2)(702)에서 수행할 수 있다. 인코더/디코더는 두 번째 CG의 제 2 서브 루틴을 BS2(702)에서 수행한 후에 다음 CG의 제 2 서브 루틴을 제 3 비트 스트림(BS3)(703)에서 수행할 수 있다. Specifically, the encoder / decoder may perform the second subroutine of the first CG in BS1 701 and then perform the second subroutine of the next CG in a second bit stream (hereinafter BS2) 702. The encoder / decoder may perform the second subroutine of the second CG in BS2 702 and then perform the second subroutine of the next CG in third bit stream (BS3) 703.
위와 같은 방식으로 인코더/디코더는 제 2 서브 루틴부터 제 7 서브 루틴까지 CG 단위로 비트 스트림을 번갈아가며 서브 루틴의 신택스 요소를 코딩할 수 있다.In the above manner, the encoder / decoder may code the syntax elements of the subroutine by alternating bit streams in CG units from the second subroutine to the seventh subroutine.
이 경우, 인코더/디코더는 이전에 코딩된 정보에 대한 데이터 의존성(data dependency)을 고려하여 서브 루틴이 전환되는 시점(즉, 도 7에서 점선으로 도시된 시점)에 비트 스트림들간 동기화를 수행할 수 있다. 다시 말해, 인코더/디코더는 서브 루틴(또는 기능 블록 단위)을 주기로 여러 비트 스트림간 동기화를 수행할 수 있다.In this case, the encoder / decoder may perform the synchronization between the bit streams at the time when the subroutine is switched (that is, the time indicated by the dotted line in FIG. 7) in consideration of the data dependency on previously coded information. have. In other words, the encoder / decoder may perform synchronization between several bit streams at intervals of subroutines (or functional block units).
여기서, 데이터 의존성이 존재하는 경우는, 예를 들어, 동일한 컨텍스트 모델을 사용하는 경우, 이전에 코딩된 정보를 참조하는 경우 등이 있을 수 있다. 상기 서브 루틴이 전환되는 시점에서 비트 스트림들간 동기화를 수행함으로써, 인코더/디코더는 코딩 순서를 지키면서 각각의 서브 루틴을 병렬적으로 코딩(또는 수행)할 수 있다.Here, the case where the data dependency exists, for example, when using the same context model, may refer to previously coded information. By performing synchronization between bit streams when the subroutine is switched, the encoder / decoder can code (or perform) each subroutine in parallel while keeping the coding order.
반면에, 인코더/디코더는 코딩 순서를 지키면서 병렬적으로 코딩하기 위해 신택스 요소 단위로 동기화를 수행할 수도 있다. 아래의 도면을 참조하여 설명한다.On the other hand, the encoder / decoder may perform synchronization on a syntax element basis to code in parallel while keeping the coding order. It demonstrates with reference to the following drawings.
도 8은 본 발명이 적용될 수 있는 실시예로서, 신택스 요소(syntax element) 단위로 여러 비트 스트림간 동기화를 수행하는 방법을 예시하는 레지듀얼 코딩(residual coding) 신택스이다.FIG. 8 is a residual coding syntax illustrating a method of performing synchronization between several bit streams in units of syntax elements as an embodiment to which the present invention can be applied.
전술한 바와 같이, 인코더/디코더는 레지듀얼 코딩 루틴을 복수 개의 서브 루틴으로 분할할 수 있고, 분할된 서브 루틴들을 여러 비트 스트림에 매핑하여 파이프라이닝 방식으로 코딩할 수 있다.As described above, the encoder / decoder may divide the residual coding routine into a plurality of subroutines, and map the divided subroutines to multiple bit streams to code them in a pipelining manner.
본 발명의 일 실시예에서, 인코더/디코더는 데이터 의존성을 고려하여 신택스 요소 단위로 여러 비트 스트림간 동기화를 수행할 수 있다. In an embodiment of the present invention, the encoder / decoder may perform synchronization between several bit streams in units of syntax elements in consideration of data dependency.
구체적으로, 인코더/디코더는 여러 비트 스트림간 동기화를 수행하기 위해 현재 신택스 요소 또는 현재 처리 영역(또는 현재 처리 블록)에 대한 락(lock)을 획득하고 반환하는 절차를 수행할 수 있다.In detail, the encoder / decoder may perform a procedure of acquiring and returning a lock on a current syntax element or a current processing region (or a current processing block) to perform synchronization between several bit streams.
도 8(a)를 참조하면, 인코더/디코더는 각 CG(또는 기능 블록) 에서 신택스 요소 coded_sub_block_flag를 배타적으로 코딩하기 위해 락을 획득하고 해제할 수 있다(S801).Referring to FIG. 8A, the encoder / decoder may acquire and release a lock in order to exclusively code the syntax element coded_sub_block_flag in each CG (or functional block) (S801).
여기서, ‘(LA)’는 락 획득(lock acquire)으로서 해당 신택스 요소 또는 처리 영역의 코딩을 배타적으로(exclusive)하게 수행하기 위해 락을 획득하는 동작을 나타낸다. 현재 비트 스트림에서 현재 CG에 대한 락을 획득하는 경우, 다른 비트 스트림(또는 CG 파이프라인, CG 스레드, CG CABAC)에서는 해당 신택스 요소 또는 처리 영역의 코딩을 시작하지 않고 코딩을 멈출 수 있다.Here, '(LA)' refers to an operation of acquiring a lock in order to exclusively perform coding of a corresponding syntax element or processing region as a lock acquire. When obtaining a lock on the current CG in the current bit stream, other bit streams (or CG pipelines, CG threads, and CG CABACs) may stop coding without starting coding corresponding syntax elements or processing regions.
그리고, ‘(LR)’는 락 해제(lock release)로서 획득했던 락을 해제하여 다른 비트 스트림에서 락을 획득할 수 있도록 하는 동작을 나타낸다.'(LR)' indicates an operation of releasing a lock acquired as a lock release so that a lock can be acquired in another bit stream.
이때, 인코더/디코더는 CG들간 처리 순서(또는 코딩 순서)를 지키면서 락을 획득하고 반환하는 동작을 수행할 수 있다. 예를 들어, i번째 CG에서 신택스 요소 또는 영역의 처리(또는 코딩)가 i-1번째 CG의 신택스 요소 또는 영역의 처리가 끝나야만 가능한 경우, 인코더/디코더는 어떤 CG가 락을 해제했는지를 구분하여 다음 CG에서 락을 획득하도록 할 수 있다. In this case, the encoder / decoder may perform an operation of acquiring and returning a lock while keeping a processing order (or coding order) between CGs. For example, if the processing (or coding) of a syntax element or region in the i th CG is only possible after the processing of the syntax element or region in the i-1 th CG, the encoder / decoder identifies which CG has unlocked To acquire the lock on the next CG.
만약 CG 단위로 수행되는 서브 루틴들이 여러 bit-stream들에 번갈아 가면서 코딩되는 경우, 인코더/디코더는 이전 비트 스트림(또는 CG)에서 락을 획득하고 반환했는지를 체크하여 현재 비트 스트림에 대한 락의 획득을 시도할 수 있다.If subroutines performed in units of CG are coded alternately across several bit-streams, the encoder / decoder checks whether a lock has been obtained and returned from the previous bit stream (or CG) to obtain the lock for the current bit stream. You can try
도 8(b)를 참조하면, 인코더/디코더는 CG 마다 신택스 요소 sig_coeff_flag를 코딩하는 CG loop(또는 서브 루틴)에 앞서 락을 획득할 수 있다(S802).Referring to FIG. 8B, the encoder / decoder may acquire a lock prior to the CG loop (or subroutine) coding the syntax element sig_coeff_flag for each CG (S802).
즉, 인코더/디코더는 S801 단계에서와 같이, 신택스 요소를 코딩하기에 전에 락을 획득하고 상기 신택스 요소를 코딩한 후 락을 해제하여 여러 비트 스트림간 동기화를 수행할 수도 있고, S802 단계에서와 같이, CG 마다 수행되는 CG loop를 수행하기 전에 락을 획득하고 상기 CG loop가 종료한 후 락을 해제하여 여러 비트 스트림간 동기화를 수행할 수도 있다.That is, the encoder / decoder may acquire a lock before coding the syntax element, release the lock after coding the syntax element, and perform synchronization between several bit streams, as in step S801, or as in step S802. For example, a lock may be acquired before performing a CG loop performed for each CG, and the lock may be released after the CG loop ends to perform synchronization between several bit streams.
신택스 요소 마다 락을 획득/해제하는 경우, 각 CG의 신택스 요소간 존재할 수 있는 데이터 의존성을 효과적으로 고려하면서 병렬적으로 코딩할 수 있다. 다시 말해, 신택스 요소 마다 동기화를 수행함으로써, 인코더/디코더는 각 CG의 신택스 요소간의 순서를 지키면서 코딩할 수 있다.When a lock is acquired / released for each syntax element, it may be coded in parallel while effectively considering data dependencies that may exist between syntax elements of each CG. In other words, by performing synchronization for each syntax element, the encoder / decoder can code while keeping the order between the syntax elements of each CG.
반면에, CG loop 마다 락을 획득/해제하는 경우, 해당 CG loop를 수행하기 전에 락을 획득함으로써 여러 비트 스트림간 동기화를 수행할 수 있고, CG loop를 병렬적으로 수행할 수 있다. 이때, CG loop 내 각 CG에 대한 코딩은 파이프 라이닝 방식으로 여러 비트 스트림에서 수행될 수 있다.On the other hand, in the case of acquiring / releasing locks for each CG loop, synchronization between several bit streams may be performed by acquiring the lock before performing the corresponding CG loop, and the CG loop may be performed in parallel. In this case, the coding for each CG in the CG loop may be performed on a plurality of bit streams in a pipelining manner.
도 8(c)를 참조하면, 인코더/디코더는 동기화를 수행함 없이, 즉, 락의 획득 및 반환 절차를 수행하지 않고, 신택스 요소 coeff_sign_flag와 coeff_abs_level_remaining를 코딩할 수 있다(S803, S804).Referring to FIG. 8C, the encoder / decoder may code syntax elements coeff_sign_flag and coeff_abs_level_remaining without performing synchronization, that is, without performing a lock acquisition and return procedure (S803 and S804).
예를 들어, 신택스 요소 coeff_sign_flag와 coeff_abs_level_remaining에 바이패스 코딩이 적용되는 경우, 데이터 의존성이 존재하지 않을 수 있다. 이러한 경우, 인코더/디코더는 상기 coeff_sign_flag와 coeff_abs_level_remaining를 코딩할 때, 동기화를 적용하지 않음으로써, CG 단위(또는 기능 블록 단위)로 수행되는 서브 루틴의 병렬 수행성(parallelism)을 향상시킬 수 있다.For example, when bypass coding is applied to the syntax elements coeff_sign_flag and coeff_abs_level_remaining, data dependency may not exist. In this case, when the encoder / decoder codes the coeff_sign_flag and the coeff_abs_level_remaining, the synchronization may not be applied, thereby improving parallelism of the subroutine performed in the CG unit (or functional block unit).
도 9는 본 발명이 적용되는 일 실시예로서, 레지듀얼 코딩(residual coding)의 신택스 요소(syntax element)를 기능 블록 단위(function block unit)로 여러 비트 스트림에서 코딩하는 방법을 예시하는 신택스이다.FIG. 9 is a syntax illustrating a method of coding a syntax element of residual coding in a function block unit in a function block unit according to an embodiment to which the present invention is applied.
본 발명의 일 실시예에서, 인코더/디코더는 각 기능 블록(또는 서브 루틴)의 신택스 요소를 코딩한 후, 비트 스트림 전환하여 복수 개의 변환 유닛을 여러 비트 스트림에서 동시에 처리할 수 있다.In one embodiment of the present invention, the encoder / decoder may code a syntax element of each functional block (or subroutine) and then bitstream switch to process multiple transform units simultaneously in multiple bitstreams.
HEVC의 경우를 예로 들면, TU의 크기에 따라 TU 내 CG의 개수는 가변적이다. 앞서 도 7 및 도 8에서 설명한 방법은, CG의 개수가 하나 이상인 경우 엔트로피 코딩의 처리량(throughput)이 향상될 수 있고, 비트 스트림의 개수보다 CG의 개수가 적지 않은 경우 엔트로피 코딩의 처리량이 극대화 될 수 있다. For example, in the case of HEVC, the number of CGs in the TU is variable according to the size of the TU. 7 and 8, the throughput of entropy coding may be improved when the number of CGs is one or more, and the throughput of entropy coding may be maximized when the number of CGs is less than the number of bit streams. Can be.
반면, TU의 크기에 따라 병렬화(또는 파이프라이닝)를 적용할 수 있는 CG의 개수가 적은 경우에는, CG 단위(또는 서브 루틴 단위)로 비트 스트림을 전환함으로써, 여러 TU 또는 여러 TU들에 속한 CG들을 병렬적으로 처리할 수 있고 이로 인해 엔트로피 코딩의 처리량이 향상될 수 있다.On the other hand, when the number of CGs to which parallelization (or pipelining) can be applied according to the size of the TUs is small, the CGs belonging to multiple TUs or multiple TUs by switching bit streams into CG units (or subroutine units). Can be processed in parallel, which can improve the throughput of entropy coding.
구체적으로, 인코더/디코더는 현재의 TU 내에서 CG 단위로 수행되는 서브 루틴에 대해 비트 스트림을 할당한 후, 비트 스트림을 전환하여 그 다음 TU 내에서 CG 단위로 수행되는 서브 루틴 이전(앞서 도 7에서 제 1 서브 루틴)까지 연이어 비트 스트림을 할당할 수 있다. 즉, 인코더/디코더는 현재 TU의 CG 루프(앞서 도 7에서 제 2 내지 제 7 서브 루틴)와 다음 TU의 CG 루프 전(앞서 도 7에서 제 1 서브 루틴)까지의 코딩을 병렬화할 수 있고, 다음 TU의 GG 루프에 대해 연속적으로 비트 스트림을 할당하여 여러 비트스트림들에 대한 파이프라인들을 쉬지 않고 수행시킬 수 있으며, 파이프라이닝 스톨이 발생하는 구간을 최소화할 수 있다. 여기서, 파이프라이닝 스톨은 파이프 라인에서 발생하는 코딩 지연을 의미한다. Specifically, the encoder / decoder allocates a bit stream for a subroutine performed in CG units within the current TU, and then switches the bit stream before the next subroutine performed in CG units within the TU (previous FIG. 7). To the first subroutine). That is, the encoder / decoder may parallelize the coding of the CG loop of the current TU (the second to seventh subroutine in FIG. 7 before) and the CG loop before the next TU (before the first subroutine in FIG. 7), By continuously assigning bit streams to the GG loop of the next TU, pipelines for various bit streams can be performed without stopping, and a section in which a pipelining stall occurs can be minimized. Here, the pipelining stall means a coding delay occurring in the pipeline.
앞서 도 7에서 전술한 바와 같이, TU 내에서 제 1 서브 투틴과 CG 루프(제 2 내지 제 7 서브 루틴)은 동시에 수행될 수 없다. 본 실시예에 따르면, 인코더/디코더는 현재 TU에 대한 CG 루프를 수행하면서, 동시에 다음 TU에 대한 제 1 서브 루틴을 수행할 수 있기 때문에, 상기 다음 TU의 CG 루프를 시작하기까지 발생할 수 있는 유휴 시간을 줄일 수 있다.As described above in FIG. 7, in the TU, the first sub-tutin and the CG loop (second to seventh subroutines) may not be performed at the same time. According to the present embodiment, since the encoder / decoder can perform the CG loop for the current TU and at the same time perform the first subroutine for the next TU, an idle that can occur until starting the CG loop of the next TU is performed. You can save time.
도 9를 참조하면, 인코더/디코더는 CG 루프를 통해 CG 단위로 신택스 요소를 코딩한 후 다음 비트 스트림으로 전환할 수 있다(S901). Referring to FIG. 9, the encoder / decoder may switch a next bit stream after coding a syntax element in CG units through a CG loop (S901).
예를 들어, 인코더/디코더는 비트 스트림의 전환을 나타내는 set_next_bitstream()을 호출함으로써 비트 스트림을 전환할 수 있다. 상기 set_next_bitstream() 구문이 신택스 상에 표현됨으로써, 인코더/디코더는 여러 비트 스트림을 이용하여 병렬적으로 엔트로피 코딩을 수행할 수 있다.For example, the encoder / decoder may switch the bit stream by calling set_next_bitstream () indicating the switch of the bit stream. As the set_next_bitstream () syntax is expressed on the syntax, the encoder / decoder may perform entropy coding in parallel using several bit streams.
이 경우 CG 루프인 for 루프의 반복(iteration) 마다 비트 스트림을 전환되기 때문에, 마지막 CG에 대한 서브 루틴 후에도 비트 스트림이 전환될 수 있다. 따라서, 다음 TU의 CG 루프 이전까지의 서브 루틴과 다음 CG 루프의 첫 번째 반복(iteration)에 해당하는 서브 루틴을 상기 전환된 비트 스트림에서 코딩할 수 있다.In this case, since the bit stream is switched for each iteration of the for loop, which is a CG loop, the bit stream can be switched even after the subroutine for the last CG. Thus, subroutines up to the CG loop before the next TU and subroutines corresponding to the first iteration of the next CG loop can be coded in the switched bit stream.
아래의 표 8의 TU의 신택스를 참조하여 설명한다.It demonstrates with reference to TU syntax of Table 8 below.
표 8을 참조하면, 예를 들어, TU에서 여러 개의 레지듀얼 코딩 루틴(또는 레지듀얼 코딩 신택스)이 호출되고, 각각의 레지듀얼 코딩 루틴 내에서 하나의 CG만 코딩되는 경우를 가정하여 설명한다. Referring to Table 8, for example, it is assumed that several residual coding routines (or residual coding syntax) are called in a TU, and only one CG is coded in each residual coding routine.
이 경우, 본 실시예에서 제안하는 방법에 따르면, 인코더/디코더는 다음 TU의 CG 루프 전까지의 코딩(즉, 신택스 요소 transform_skip_flag, last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_suffix의 코딩)을 현재 TU의 CG 루프의 코딩과 동시에 수행할 수 있으며, 상기 다음 TU의 CG 루프에 대한 코딩도 해당 비트 스트림에서 연이어 수행할 수 있다.In this case, according to the method proposed in this embodiment, the encoder / decoder performs coding before the CG loop of the next TU (ie, syntax elements transform_skip_flag, last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, and last_sig_coeff_coeff_yGs of the current coding of the loop _Guff_y_suffix). Can be performed simultaneously with the CG loop of the next TU.
이상에서, 레지듀얼 코딩의 신택스 요소를 여러 비트 스트림에 매핑하여 병렬적으로 코딩하는 방법을 설명하였다. 전술한 기능 블록 단위 병렬 코딩 방법은 레지듀얼 코딩 루틴 이외의 코딩 루틴(또는 파싱 루틴)들에 대해서도 동일한 방식으로 적용될 수 있다. 아래의 도면을 참조하여 설명한다.In the above, the method of mapping the syntax elements of the residual coding to several bit streams and coding them in parallel has been described. The aforementioned functional block unit parallel coding method may be applied to coding routines (or parsing routines) other than the residual coding routine in the same manner. It demonstrates with reference to the following drawings.
도 10은 본 발명이 적용될 수 있는 실시예로서, 코딩 유닛(coding unit)의 신택스 요소를 여러 비트 스트림에서 코딩하는 방법을 예시하는 신택스이다.FIG. 10 is a syntax illustrating a method of coding a syntax element of a coding unit in various bit streams as an embodiment to which the present invention may be applied.
본 발명의 일 실시예에서, 인코더/디코더는 코딩 유닛(CU: coding_unit) 루틴(또는 CU 신택스)이 수행되는 스레드(thread)를 여러 비트스트림에 매핑하여 병렬적으로 코딩할 수 있다. 여기서, 스레드는 엔트로피 인코더/디코더가 독립적으로 처리하는 작업 단위를 말하며, 상기 스레드는 그 용어의 명칭에 한정되는 것은 아니다. 또한, 인코더/디코더는 라운드 로빈(round-robin) 방식으로 기능 블록 또는 스레드들을 여러 비트 스트림에 할당할 수 있다. In an embodiment of the present invention, the encoder / decoder may code threads in parallel by mapping a thread on which a coding unit (CU) routine (or CU syntax) is performed to several bitstreams. Here, a thread refers to a unit of work that an entropy encoder / decoder processes independently, and the thread is not limited to the name of the term. In addition, the encoder / decoder may allocate functional blocks or threads to several bit streams in a round-robin fashion.
먼저, 인코더/디코더는 현재 CU가 하위 CU(또는 하위 심도의 CU)으로 분할되는지 여부를 나타내는 신택스 요소 split_cu_flag를 코딩한다(S1001).First, the encoder / decoder codes a syntax element split_cu_flag indicating whether the current CU is split into a lower CU (or a lower depth CU) (S1001).
현재 CU이 하위 CU로 분할되지 않는 경우, CU 단위로 수행되는 코딩 루틴을 수행하기 위한 CU 스레드(thread)를 스레드 큐(thread queue)에 등록한다(S1002).If the current CU is not divided into lower CUs, a CU thread for executing a coding routine performed in a CU unit is registered in a thread queue (S1002).
즉, 인코더/디코더는 CU 루틴을 병렬적으로 수행하기 위하여 CTU 신택스에서 CU 신택스를 직접 호출하지 않고, CU 루틴을 하나의 스레드로서 스레드 큐에 등록할 수 있다. 이후, 인코더/디코더는 상기 스레드 큐에 저장된(또는 상기 스레드 큐에 등록된) 복수 개의 CU 스레드들을 각각 여러 비트 스트림에 매핑하여 병렬적으로 코딩할 수 있다.That is, the encoder / decoder may register the CU routine as a thread in the thread queue without directly calling the CU syntax in the CTU syntax to execute the CU routine in parallel. Thereafter, the encoder / decoder may map a plurality of CU threads stored in the thread queue (or registered in the thread queue) to the multiple bit streams and code them in parallel.
도 11은 본 발명이 적용될 수 있는 실시예로서, 예측 유닛(prediction unit)의 신택스 요소를 여러 비트 스트림에서 코딩하는 방법을 예시하는 신택스이다.FIG. 11 is a syntax illustrating a method of coding a syntax element of a prediction unit in several bit streams as an embodiment to which the present invention may be applied.
본 발명의 일 실시예에서, 인코더/디코더는 예측 유닛(PU: prediction unit) 루틴이 수행되는 스레드(thread)를 여러 비트스트림에 매핑하여 병렬적으로 코딩할 수 있다.In an embodiment of the present invention, the encoder / decoder may map a thread in which a prediction unit (PU) routine is performed to multiple bitstreams and code them in parallel.
인코더/디코더는 현재 CU에 CU 스킵(skip)이 적용되는 경우, PU 단위로 수행되는 코딩 루틴을 수행하기 위한 PU 스레드(thread)를 스레트 큐에 등록한다(S1101).When the CU skip is applied to the current CU, the encoder / decoder registers a PU thread for executing a coding routine performed in units of PUs in the thread queue (S1101).
여기서, CU 스킵이란 CU 신택스에서 머지(merge)를 위한 인덱스 정보 외에는 추가적인 신택스 요소가 시그널링되지 않는 것을 의미한다. 이때, 현재 CU에 CU 스킵이 적용되는지 여부는 cu_skip_flag를 통해 인코더로부터 시그널링될 수 있다. cu_skip_flag의 값이 1 이면 현재 CU에 스킵 모드가 적용되는 것을, cu_skip_flag의 값이 0이면 스킵 모드가 적용되지 않는 것을 의미할 수 있다. 디코더는 cu_skip_flag를 파싱하여 현재 CU에 CU 스킵이 적용되는지 여부를 판단할 수 있다.Here, the CU skip means that no additional syntax element is signaled except index information for merging in CU syntax. In this case, whether CU skip is applied to the current CU may be signaled from the encoder through cu_skip_flag. If the value of cu_skip_flag is 1, it may mean that the skip mode is applied to the current CU. If the value of cu_skip_flag is 0, it may mean that the skip mode is not applied. The decoder may determine whether CU skip is applied to the current CU by parsing cu_skip_flag.
현재 CU의 예측 모드가 인터 모드(inter mode)이고 현재 CU의 분할 모드(PartMode)가 PART_2Nx2N 인 경우, 인코더/디코더는 신택스 요소 merge_flag를 코딩할 수 있고(S1102), PU의 PU 스레드를 스레드 큐에 등록할 수 있다(S1103).If the prediction mode of the current CU is inter mode and the partition mode (PartMode) of the current CU is PART_2Nx2N, the encoder / decoder may code a syntax element merge_flag (S1102) and put a PU thread of the PU into a thread queue. It is possible to register (S1103).
만약, 현재 CU의 분할 모드(PartMode)가 PART_2Nx2N이 아닌 경우, 인코더/디코더는 현재 CU의 분할 모드에 따라 분할된 PU의 PU 스레드들을 스레드 큐에 등록할 수 있다.If the partition mode (PartMode) of the current CU is not PART_2Nx2N, the encoder / decoder may register PU threads of the partitioned PU according to the partition mode of the current CU in a thread queue.
즉, 인코더/디코더는 PU 루틴을 병렬적으로 수행하기 위하여 CU 신택스에서 PU 신택스(또는 PU 스레드, PU 신택스 루틴, PU 루틴)를 직접 호출하지 않고, PU 루틴을 하나의 스레드로서 스레드 큐에 등록할 수 있다. 이후, 인코더/디코더는 상기 스레드 큐로부터 출력되는(또는 스레드 큐에 등록된) 복수 개의 PU 스레드들을 각각 여러 비트 스트림에 매핑하여 코딩할 수 있다.That is, the encoder / decoder does not directly call the PU syntax (or PU thread, PU syntax routine, PU routine) in CU syntax to execute PU routines in parallel, but registers the PU routine as a thread in the thread queue. Can be. Thereafter, the encoder / decoder may map and encode a plurality of PU threads output from the thread queue (or registered in the thread queue) to several bit streams, respectively.
또한, S1102 단계에서와 같이 인코더/디코더는 현재 CU의 분할 모드가 PART_2Nx2N인 경우, 신택스 merge_flag를 CU 신택스 내에서 코딩함으로써, PU 스레드들을 독립적으로 코딩할 수 있다.In addition, as in step S1102, the encoder / decoder may code the PU threads independently by coding the syntax merge_flag within the CU syntax when the split mode of the current CU is PART_2N × 2N.
앞서 도 11에서는 CU 신택스에서 PU 스레드를 생성하여 스레드 큐에 등록하고, 여러 스레드들을 상기 스레드 큐로부터 꺼내 여러 비트 스트림에서 병렬적으로 코딩하는 방법을 설명하였다. 이하에서 아래의 도면을 참조하여 PU 신택스를 호출하면서 비트 스트림을 전환하여 PU 스레드(또는 PU 루틴)을 병렬적으로 코딩하는 방법을 설명한다.In FIG. 11, a method of creating a PU thread in a CU syntax and registering it in a thread queue, and extracting several threads from the thread queue and coding the same in parallel in multiple bit streams. Hereinafter, a method of parallelly coding a PU thread (or PU routine) by switching bit streams while calling a PU syntax will be described with reference to the following drawings.
도 12는 본 발명이 적용될 수 있는 실시예로서, 예측 유닛(prediction unit)의 신택스 요소를 여러 비트 스트림에서 코딩하는 방법을 예시하는 신택스이다.12 is a syntax illustrating a method of coding a syntax element of a prediction unit in several bit streams as an embodiment to which the present invention may be applied.
본 발명의 일 실시예에서, 인코더/디코더는 CU 신택스에서 PU 신택스를 호출하고 비트 스트림을 전환하여 PU 신택스(또는 PU 스레드, PU 루틴, PU 신택스 루틴)들을 여러 비트스트림에 매핑하여 병렬적으로 코딩할 수 있다.In one embodiment of the present invention, the encoder / decoder calls PU syntax in CU syntax and switches bitstreams to map PU syntax (or PU threads, PU routines, PU syntax routines) to multiple bitstreams and to code them in parallel can do.
도 12(a)를 참조하면, 인코더/디코더는 현재 CU에 CU 스킵이 적용되는 경우, PU 신택스를 호출하고, 비트 스트림을 전환할 수 있다(S1201).Referring to FIG. 12A, when CU skip is applied to the current CU, the encoder / decoder may call the PU syntax and switch the bit stream (S1201).
예를 들어, 인코더/디코더는 비트 스트림의 전환을 나타내는 set_next_bitstream()을 호출함으로써 비트 스트림을 전환할 수 있다. 상기 set_next_bitstream() 구문이 신택스 상에 표현됨으로써, 인코더/디코더는 여러 비트 스트림을 이용하여 병렬적으로 엔트로피 코딩을 수행할 수 있다.For example, the encoder / decoder may switch the bit stream by calling set_next_bitstream () indicating the switch of the bit stream. As the set_next_bitstream () syntax is expressed on the syntax, the encoder / decoder may perform entropy coding in parallel using several bit streams.
즉, 인코더/디코더는 CU 신택스에서 PU 신택스를 호출할 때마다 비트 스트림을 변경하여 PU(또는 PU 스레드)의 코딩과 상기 CU 신택스 내 나머지 신택스 요소의 코딩을 병렬화할 수 있다. 이때, 라운드 로빈(round-robin) 방식으로 여러 비트 스트림 중 다음 비트 스트림이 결정될 수 있다. That is, the encoder / decoder may change the bit stream every time a PU syntax is called in a CU syntax to parallelize coding of a PU (or PU thread) with coding of the remaining syntax elements in the CU syntax. In this case, the next bit stream among a plurality of bit streams may be determined in a round-robin manner.
PU의 분할 모드가 PART_2NxN인 경우, 인코더/디코더는 PU 신택스를 호출하고, 비트 스트림을 전환할 수 있다(S1202).If the partition mode of the PU is PART_2NxN, the encoder / decoder may call the PU syntax and switch the bit stream (S1202).
만약, PU의 분할 모드가 PART_2Nx2N이 아닌 경우, PU 신택스는 CU 신택스 내에서 두 번 이상 호출될 수 있고, 두 개 이상의 PU 스레드들이 생성되어 여러 비트 스트림에서 병렬적으로 수행될 수 있다.If the partition mode of the PU is not PART_2N × 2N, the PU syntax may be called more than once in the CU syntax, and two or more PU threads may be generated and executed in parallel in several bit streams.
도 13은 본 발명이 적용될 수 있는 실시예로서, 코딩 유닛(coding unit)의 신택스 요소를 여러 비트 스트림에서 코딩하는 방법을 예시하는 도면이다.FIG. 13 is a diagram illustrating a method of coding syntax elements of a coding unit in various bit streams as an embodiment to which the present invention may be applied.
도 13를 참조하면, CU 루틴은 3개의 스테이지(또는 서브 루틴)(1301, 1302, 1303)으로 분할될 수 있다. 인코더/디코더는 상기 분할된 3개의 스테이지를 파이프라이닝 방식으로 코딩할 수 있다.Referring to FIG. 13, a CU routine may be divided into three stages (or subroutines) 1301, 1302, and 1303. The encoder / decoder may code the divided three stages in a pipelining manner.
구체적으로, 제 1 스테이지(1301)에서 인코더/디코더는 신택스 요소 cu_transquant_bypass_flag와 cu_skip_flag를 코딩할 수 있다. 만약, cu_transquant_bypass_flag 값이 1이면 스케일링 및 변환 절차(scaling and transform process)와 인-루프 필터 절차(in-loop filter process)를 건너뛸 수 있다. 그리고, cu_skip_flag는 현재 CU에 스킵 모드가 적용되는지 여부를 나타낼 수 있다.In detail, in the first stage 1301, the encoder / decoder may code syntax elements cu_transquant_bypass_flag and cu_skip_flag. If the cu_transquant_bypass_flag value is 1, the scaling and transform process and the in-loop filter process can be skipped. And cu_skip_flag may indicate whether a skip mode is applied to the current CU.
제 2 스테이지(1302)에서 신택스 요소 cu_skip_flag 값이 1인 경우, 인코더/디코더는 PU 스레드(prediction unit thread)를 스레트 큐에 등록할 수 있다.When the syntax element cu_skip_flag value is 1 in the second stage 1302, the encoder / decoder may register a PU unit (prediction unit thread) in the thread queue.
제 2 스테이지(1302)에서 신택스 요소 cu_skip_flag 값이 0인 경우, 인코더/디코더는 신택스 요소 pred_mode_flag와 part_mode를 코딩할 수 있다. 여기서, pred_mode_flag는 현재 CU에 적용된 예측 모드를 나타낼 수 있다. 즉, 상기 pred_mode_flag 값이 0인 경우에는 인터 예측 모드로 코딩됨을, 상기 pred_mode_flag 값이 1인 경우에는 인트라 예측 모드로 코딩됨을 나타낼 수 있다. part_mode는 현재 CU의 분할 모드를 나타낼 수 있다.When the syntax element cu_skip_flag value is 0 in the second stage 1302, the encoder / decoder may code the syntax elements pred_mode_flag and part_mode. Here, pred_mode_flag may indicate a prediction mode applied to the current CU. That is, when the pred_mode_flag value is 0, it may be coded in inter prediction mode, and when the pred_mode_flag value is 1, it may be coded in intra prediction mode. part_mode may indicate the partition mode of the current CU.
만약, 현재 블록의 예측 모드가 인트라 예측 모드인 경우, 인코더/디코더는 신택스 요소 pcm_flag, pcm_alignment_zero_bit, prev_intra_luma_pred_flag, mpm_idx, rem_intra_luma_pred_mode, intra_chroma_pred_mode를 코딩할 수 있다.If the prediction mode of the current block is the intra prediction mode, the encoder / decoder may code syntax elements pcm_flag, pcm_alignment_zero_bit, prev_intra_luma_pred_flag, mpm_idx, rem_intra_luma_pred_mode, and intra_chroma_pred_mode.
여기서, pcm_flag값이 1인 경우 휘도 성분의 CU이 pcm_sample 신택스(syntax) 가 존재하고, transform_tree신택스는 존재하지 않음을 나타낸다. 인코더/디코더는 비트 스트림에서 현재 위치가 한 바이트(byte)의 경계에 있지 않은 경우 pcm_alignment_zero_bit를 코딩하며, 이때, pcm_alignment_zero_bit의 값은 0이다. prev_intra_luma_pred_flag 값이 1인 경우 현재 PU의 인트라 예측 모드가 MPM(Most Probable Mode)모드에 포함되는 것을 나타내며, 0인 경우는 현재 PU의 인트라 예측 모드가 MPM(Most Probable Mode) 모드에 포함되지 않는 것을 나타낸다. MPM(Most Probable Mode)모드에 포함되지 않은 나머지 예측 모드의 경우, 인코더/디코더는 rem_intra_luma_pred_mode를 코딩할 수 있다. 그리고, intra_chroma_pred_mode는 PU 단위로 색차 성분의 예측 모드를 나타낼 수 있다.Here, when the pcm_flag value is 1, it indicates that the CU of the luminance component has the pcm_sample syntax and the transform_tree syntax does not exist. The encoder / decoder codes pcm_alignment_zero_bit when the current position in the bit stream is not on the boundary of one byte, where pcm_alignment_zero_bit is zero. A value of 1 for prev_intra_luma_pred_flag indicates that the intra prediction mode of the current PU is included in the Most Probable Mode (MPM) mode, and 0 indicates that the intra prediction mode of the current PU is not included in the Most Probable Mode (MPM) mode. . For the remaining prediction modes not included in the Most Probable Mode (MPM) mode, the encoder / decoder may code rem_intra_luma_pred_mode. In addition, intra_chroma_pred_mode may indicate a prediction mode of the color difference component in PU units.
만약, 현재 블록의 예측 모드가 인트라 예측 모드가 아닌 경우(또는 인터 예측 모드인 경우), 인코더/디코더는 신택스 요소 merge_flag를 코딩할 수 있고, PU 스레드(thread)를 스레트 큐에 등록할 수 있다.If the prediction mode of the current block is not the intra prediction mode (or the inter prediction mode), the encoder / decoder may code a syntax element merge_flag and register a PU thread in the thread queue.
제 2 스테이지(1302)에서만 PU 스레드를 스레드 큐에 등록함으로써, PU들간 스레드 큐에 등록되는 순서(또는 이슈(issue)되는 순서)를 지킬 수 있다. By registering the PU thread in the thread queue only in the second stage 1302, it is possible to keep the order (or the order in which the issue) is registered in the thread queue between the PUs.
제 3 스테이지(1303)에서 현재 CU의 예측 모드가 인트라 예측 모드가 아니고, 현재 CU이 머지 모드임과 동시에 분할 모드가 PART_2Nx2N인 경우가 아니라면, 인코더/디코더는 신택스 요소 rqt_root_cbf를 코딩할 수 있다. 여기서, rqt_root_cbf 현재 CU을 위한 변환 트리 신택스(transform_tree syntax)의 존재 여부를 나타낼 수 있다.In the third stage 1303, the encoder / decoder may code a syntax element rqt_root_cbf when the prediction mode of the current CU is not an intra prediction mode, and the current CU is a merge mode and the split mode is not PART_2N × 2N. Here, rqt_root_cbf may indicate whether a transform_tree syntax exists for the current CU.
그리고, 제 3 스테이지(1303)에서 인코더/디코더는 변환 트리 스레드(transform tree thread)를 스레드 큐(thread queue)에 등록할 수 있다.In the third stage 1303, the encoder / decoder may register a transform tree thread to a thread queue.
도 14는 본 발명이 적용될 수 있는 실시예로서, 신택스 요소(syntax element) 단위로 여러 비트 스트림간 동기화를 수행하는 방법을 예시하는 코딩 유닛(coding unit) 신택스이다.FIG. 14 is a coding unit syntax illustrating a method of performing synchronization between several bit streams in units of syntax elements as an embodiment to which the present invention may be applied.
본 발명의 일 실시예에서, 인코더/디코더는 데이터 의존성을 고려하여 신택스 요소 단위로 여러 비트 스트림간 동기화를 수행할 수 있다. 구체적으로, 인코더/디코더는 여러 비트 스트림간 동기화를 수행하기 위해 현재 신택스 요소 또는 현재 처리 영역(또는 현재 처리 블록)에 대한 락(lock)을 획득하고 반환하는 절차를 수행할 수 있다. In an embodiment of the present invention, the encoder / decoder may perform synchronization between several bit streams in units of syntax elements in consideration of data dependency. In detail, the encoder / decoder may perform a procedure of acquiring and returning a lock on a current syntax element or a current processing region (or a current processing block) to perform synchronization between several bit streams.
도 14(a)를 참조하면, 인코더/디코더는 각 CU(또는 CU 스레드)에서 신택스 요소 cu_transquant_bypass_flag를 배타적으로 코딩하기 위해 락을 획득하고 해제할 수 있다(S1401).Referring to FIG. 14A, the encoder / decoder may acquire and release a lock to exclusively code a syntax element cu_transquant_bypass_flag in each CU (or CU thread) (S1401).
즉, 인코더/디코더는 앞서 도 8에서 설명한 바와 같이 현재 비트 스트림에서 현재 CU에 대한 락을 획득하는 경우, 다른 비트 스트림(또는 다른 CU 스레드)에서 해당 신택스 요소 또는 처리 영역의 코딩을 시작하지 않고 코딩을 멈출 수 있다.That is, when the encoder / decoder acquires the lock for the current CU in the current bit stream as described above with reference to FIG. 8, the encoder / decoder is coded without starting coding the corresponding syntax element or processing region in another bit stream (or another CU thread). Can stop.
이때, 인코더/디코더는 CU들간 처리 순서(또는 코딩 순서)를 지키면서 락을 획득하고 반환하는 동작을 수행할 수 있다.In this case, the encoder / decoder may perform an operation of acquiring and returning a lock while keeping the processing order (or coding order) between CUs.
S1401 단계와 동일하게 인코더/디코더는 CU의 신택스 요소들을 코딩하는 과정에서 신택스 요소 단위로 락을 획득/해제하여 여러 비트 스트림간 동기화를 수행할 수 있다.In the same manner as in operation S1401, the encoder / decoder may acquire / release a lock on a syntax element basis in the process of coding syntax elements of a CU to perform synchronization between several bit streams.
전술한 바와 같이, 인코더/디코더는 현재 CU의 분할 모드가 PART_2Nx2N인 경우, PU 스레드들을 독립적으로 코딩하기 위해 merge_flag를 CU 신택스 내에서 코딩할 수 있다(S1402).As described above, when the split mode of the current CU is PART_2N × 2N, the encoder / decoder may code merge_flag within the CU syntax to independently code the PU threads (S1402).
인코더/디코더는 PU 스레드가 생성(또는 이슈)되는 순서를 지키기 위해 PU의 분할 모드에 따른 PU 스레드 생성에 앞서 여러 비트 스트림간 동기화를 수행할 수 있다(S1403). 다시 말해, 인코더/디코더는 분할 모드에 따른 PU 스레드를 생성하기에 앞서 락을 획득할 수 있다.The encoder / decoder may perform synchronization between several bit streams before generating the PU thread according to the partitioning mode of the PU in order to keep the order in which the PU threads are created (or issue) (S1403). In other words, the encoder / decoder may acquire the lock before generating the PU thread according to the split mode.
도 15는 본 발명이 적용될 수 있는 실시예로서, 예측 유닛(prediction unit)의 신택스 요소를 여러 비트 스트림에서 코딩하는 방법을 예시하는 신택스이다.FIG. 15 is a syntax illustrating a method of coding a syntax element of a prediction unit in several bit streams as an embodiment to which the present invention may be applied.
도 15를 참조하면, cu_skip_flag의 값이 0이고 현재 PU의 분할 모드가 PART_2Nx2N인 경우, CU 신택스에서 신택스 요소 merge_flag가 이미 코딩되었을 수 있다(앞서 도 11의 S1102, 도 14의 S1402 참조).Referring to FIG. 15, when the value of cu_skip_flag is 0 and the split mode of the current PU is PART_2Nx2N, the syntax element merge_flag may have already been coded in the CU syntax (see S1102 of FIG. 11 and S1402 of FIG. 14).
따라서, 인코더/디코더는 cu_skip_flag의 값이 0이고 현재 PU의 분할 모드가 PART_2Nx2N이 아닌 경우, merge_flag를 코딩할 수 있다(S1501).Therefore, when the value of cu_skip_flag is 0 and the split mode of the current PU is not PART_2Nx2N, the encoder / decoder may code merge_flag (S1501).
도 16은 본 발명이 적용될 수 있는 실시예로서, PU(prediction unit)의 신택스 요소를 여러 비트 스트림에서 코딩하는 방법을 예시하는 도면이다.FIG. 16 is a diagram illustrating a method of coding a syntax element of a prediction unit (PU) in several bit streams as an embodiment to which the present invention may be applied.
도 16을 참조하면, PU 루틴은 3개의 스테이지(또는 서브 루틴)(1601, 1602, 1603)으로 분할될 수 있다. 인코더/디코더는 상기 분할된 3개의 스테이지를 파이프라이닝 방식으로 여러 비트 스트림에 코딩할 수 있다.Referring to FIG. 16, a PU routine may be divided into three stages (or subroutines) 1601, 1602, and 1603. The encoder / decoder may code the divided three stages into several bit streams in a pipelining manner.
구체적으로, 제 1 스테이지(1601)에서 인코더/디코더는 cu_skip_flag의 값이 1일 경우, 신택스 요소 merge_idx를 코딩할 수 있다. 만약, cu_skip_flag의 값이 0일 경우, 인코더/디코더는 신택스 요소 merge_flag를 코딩할 수 있다.Specifically, in the first stage 1601, the encoder / decoder may code the syntax element merge_idx when the value of cu_skip_flag is 1. If the value of cu_skip_flag is 0, the encoder / decoder may code the syntax element merge_flag.
그리고, 제 1 스테이지(1601)에서 인코더/디코더는 merge_flag 값이 1일 경우, merge_idx를 코딩할 수 있다. 만약, merge_flag 값이 1일 경우, 인코더/디코더는 신택스 요소 inter_pred_idc를 코딩할 수 있다. 여기서, inter_pred_idc는 현재 PU에 리스트0(list0), 리스트1(list1) 또는 양방향 예측이 사용되는지 여부를 나타낸다.In the first stage 1601, the encoder / decoder may code merge_idx when the merge_flag value is 1. If the merge_flag value is 1, the encoder / decoder may code the syntax element inter_pred_idc. Here, inter_pred_idc indicates whether List 0, list 1, or bidirectional prediction is used for the current PU.
제 2 스테이지(1602)에서 인코더/디코더는 inter_pred_idc 값이 리스트1 방향이 아닌 경우, 신택스 요소 ref_idx_l0, mvd_coding, mvp_l0_flag를 코딩할 수 있다. 여기서, ref_idx_l0는 리스트0 방향의 참조 픽쳐 인덱스를 나타내며, mvp_l0_flag는 리스트 0 방향의 움직임 벡터 예측값 인덱스를 나타낸다. mvd_coding는 신택스 요소 단위로 동기화를 수행하는 경우, PU 신택스 상에서 코딩될 수 있다. 이하, 자세히 후술한다.In the second stage 1602, the encoder / decoder may code syntax elements ref_idx_l0, mvd_coding, and mvp_l0_flag when the inter_pred_idc value is not in the list 1 direction. Here, ref_idx_l0 represents a reference picture index in the list 0 direction, and mvp_l0_flag represents a motion vector prediction value index in the list 0 direction. mvd_coding may be coded on the PU syntax when synchronization is performed on a syntax element basis. It will be described later in detail.
제 2 스테이지(1602)에서 인코더/디코더는 inter_pred_idc 값이 리스트1 방향인 경우, 신택스 요소 ref_idx_l1, mvd_coding, mvp_l1_flag를 코딩할 수 있다. 여기서, ref_idx_l1는 리스트1 방향의 참조 픽쳐 인덱스를 나타내며, mvp_l1_flag는 리스트 1 방향의 움직임 벡터 예측값 인덱스를 나타낸다.In the second stage 1602, the encoder / decoder may code syntax elements ref_idx_l1, mvd_coding and mvp_l1_flag when the inter_pred_idc value is in the list 1 direction. Here, ref_idx_l1 indicates a reference picture index in the list 1 direction, and mvp_l1_flag indicates a motion vector prediction value index in the list 1 direction.
제 3 스테이지(1603)에서 인코더/디코더는 inter_pred_idc 값이 양방향 예측인 경우, 신택스 요소 ref_idx_l1, mvd_coding, mvp_l1_flag를 코딩할 수 있다.In the third stage 1603, the encoder / decoder may code syntax elements ref_idx_l1, mvd_coding, and mvp_l1_flag when the inter_pred_idc value is bidirectional prediction.
이때, ref_idx_l0와 ref_idx_l1간, mvp_l0_flag와 mvp_l1_flag간 데이터 의존성이 존재하지 않으므로, 인코더/디코더는 상기 신택스 요소들을 동시에 코딩할 수 있다.In this case, since there is no data dependency between ref_idx_l0 and ref_idx_l1 and between mvp_l0_flag and mvp_l1_flag, the encoder / decoder may simultaneously code the syntax elements.
도 17은 본 발명이 적용될 수 있는 실시예로서, 신택스 요소(syntax element) 단위로 여러 비트 스트림간 동기화를 수행하는 방법을 예시하는 예측 유닛(coding unit) 신택스이다.FIG. 17 is a prediction unit syntax illustrating a method of performing synchronization between several bit streams in units of syntax elements according to an embodiment to which the present invention may be applied.
본 발명의 일 실시예에서, 인코더/디코더는 데이터 의존성을 고려하여 신택스 요소 단위로 여러 비트 스트림간 동기화를 수행할 수 있다.In an embodiment of the present invention, the encoder / decoder may perform synchronization between several bit streams in units of syntax elements in consideration of data dependency.
구체적으로, 인코더/디코더는 여러 비트 스트림간 동기화를 수행하기 위해 현재 신택스 요소 또는 현재 처리 영역(또는 현재 처리 블록)에 대한 락(lock)을 획득하고 반환하는 절차를 수행할 수 있다.In detail, the encoder / decoder may perform a procedure of acquiring and returning a lock on a current syntax element or a current processing region (or a current processing block) to perform synchronization between several bit streams.
앞서 도 8에서 설명한 바와 같이, ‘(LA)’는 락 획득(lock acquire)으로서 해당 신택스 요소 또는 처리 영역의 코딩을 배타적으로(exclusive)하게 수행하기 위해 락을 획득하는 동작을 나타낸다. 현재 비트 스트림에서 현재 CG에 대한 락을 획득하는 경우, 다른 비트 스트림(또는 PU 파이프라인, PU 스레드, PU CABAC)에서는 해당 신택스 요소 또는 처리 영역의 코딩을 시작하지 않고 코딩을 멈출 수 있다.As described above with reference to FIG. 8, '(LA)' refers to an operation of acquiring a lock in order to exclusively perform coding of a corresponding syntax element or processing region as a lock acquire. When obtaining a lock for the current CG in the current bit stream, the coding may be stopped in another bit stream (or PU pipeline, PU thread, or PU CABAC) without starting coding of the corresponding syntax element or processing region.
그리고, ‘(LR)’는 락 해제(lock release)로서 획득했던 락을 해제하여 다른 비트 스트림에서 락을 획득할 수 있도록 하는 동작을 나타낸다.'(LR)' indicates an operation of releasing a lock acquired as a lock release so that a lock can be acquired in another bit stream.
이때, 인코더/디코더는 PU들간 처리 순서(또는 코딩 순서)를 지키면서 락을 획득하고 반환하는 동작을 수행할 수 있다.In this case, the encoder / decoder may perform an operation of acquiring and returning a lock while keeping the processing order (or coding order) between PUs.
또한, 인코더/디코더는 신택스 요소 단위의 동기화를 효과적으로 수행하기 위하여 PU 신택스(또는 PU 루틴) 내에서 움직임 벡터 차분값 코딩(mvd_coding)을 수행할 수 있다.In addition, the encoder / decoder may perform motion vector differential value coding (mvd_coding) in a PU syntax (or PU routine) in order to effectively perform syntax element unit synchronization.
도 18은 본 발명이 적용될 수 있는 실시예로서, 코딩 트리 유닛(CTU)으로부터 계층적으로 분할되는 유닛들을 여러 비트 스트림에 매핑하여 코딩하는 방법을 설명하기 위한 도면이다.FIG. 18 is a diagram for describing a method of coding by mapping units divided hierarchically from a coding tree unit (CTU) to several bit streams as an embodiment to which the present invention may be applied.
도 18을 참조하면, 계층적 분할 구조에서 코딩 루틴(또는 스레드)들이 여러 비트 스트림에 코딩될 수 있다.Referring to FIG. 18, coding routines (or threads) may be coded in several bit streams in a hierarchical division structure.
인코더/디코더는 코딩 쿼드 트리(coding_quadtree) 신택스를 코딩한다(S1801). 이때, 인코더/디코더는 코딩 쿼드 트리 신택스에서 CU 스레드들을 생성하여 CU 스레드 큐에 등록할 수 있다.The encoder / decoder codes the coding quad tree (coding_quadtree) syntax (S1801). In this case, the encoder / decoder may generate CU threads in the coding quad tree syntax and register the CU threads in the CU thread queue.
인코더/디코더는 CU 스레드 큐에 등록된 CU 스레드들을 코딩한다(S1802). 이때, 인코더/디코더는 상기 CU 스레드들을 병렬적으로(또는 동시에) 여러 비트 스트림에서 코딩할 수 있다. 또한, 인코더/디코더는 CU 신택스에서 PU 스레드들을 생성하여 PU 스레드 큐에 등록할 수 있고(앞서 도 11 참조), CU 신택스에서 변환 트리 스레드들을 생성하여 변환 트리 스레드 큐에 등록할 수 있다(앞서 도 16 참조).The encoder / decoder codes CU threads registered in the CU thread queue (S1802). At this time, the encoder / decoder may code the CU threads in parallel (or simultaneously) in several bit streams. In addition, the encoder / decoder may generate PU threads in the CU syntax and register them in the PU thread queue (see FIG. 11 above), and generate transformation tree threads in the CU syntax and register them in the transformation tree thread queue (see FIG. 16).
인코더/디코더는 PU 스레드 큐에 등록된 PU 스레드들을 코딩한다(S1803). 이때, 인코더/디코더는 상기 PU 스레드들을 병렬적으로(또는 동시에) 여러 비트 스트림에서 코딩할 수 있다.The encoder / decoder codes the PU threads registered in the PU thread queue (S1803). At this point, the encoder / decoder may code the PU threads in parallel (or simultaneously) in several bit streams.
인코더/디코더는 변환 트리 스레드들을 코딩하고(S1804), TU 스레드들을 코딩한다(S1805). S1804 단계의 변환 트리와 S1805 단계의 TU는 순차적으로 동작하기 때문에, S1804 단계에서 변환 트리 스레드를 코딩하면서, TU 스레드(또는 TU 루틴)을 수행할 수 있다.The encoder / decoder codes transform tree threads (S1804) and codes TU threads (S1805). Since the transform tree of step S1804 and the TU of step S1805 operate sequentially, the TU thread (or TU routine) may be performed while coding the transform tree thread in step S1804.
인코더/디코더는 레지듀얼 코딩(residual_coding) 신택스를 코딩한다(S1806).The encoder / decoder codes the residual coding (residual_coding) syntax (S1806).
인코더/디코더는 CG 스레드들을 코딩한다(S1807).The encoder / decoder codes the CG threads (S1807).
여기서, CG_i(즉, CG_1, CG_2, … ,CG_N)는 앞서 도 7에서 설명한 제 2 내지 제 7 서브 루틴(또는 스레드)를 나타낸다.Here, CG_i (ie, CG_1, CG_2,..., CG_N) represents the second to seventh subroutines (or threads) described above with reference to FIG. 7.
CTU의 하위 계층(또는 기능 블록)에 대한 스레드를 모두 등록하고 수행하면, 구현에 따라 버퍼(buffer)의 요구량과 다른 기능 블록들로 데이터를 전달하기까지의 레이턴시(latency)가 길어질 수 있다. Registering and executing all the threads for the lower layer (or functional block) of the CTU may increase the latency until the data is transferred to other functional blocks according to the implementation of the buffer.
따라서, 다른 기능 블록들에 대한 코딩 시작 시간을 앞당기기 위해(즉, 레이턴시를 줄이기 위해) 인코더/디코더는 생성되는 스레드들을 라운드 로빈(round-robin) 방식으로 비트 스트림에 할당하고, 코딩을 수행할 수 있다.Thus, in order to speed up coding start time for other functional blocks (i.e. reduce latency), the encoder / decoder allocates the generated threads to the bit stream in a round-robin manner and performs coding. Can be.
예를 들어, 4개의 비트 스트림에 스레드들을 라운드 로빈(round-robin) 방식으로 할당하는 경우를 가정하면, 인코더/디코더는 S1802 단계에서 4개의 스레드를 수행한 후, S1803 단계에서 4개의 스레드를 수행하여 움직임 보상을 수행할 수 있다.For example, assuming that threads are allocated to four bit streams in a round-robin manner, the encoder / decoder performs four threads in step S1802 and then performs four threads in step S1803. Motion compensation can be performed.
이와 같은 방법을 적용하여, 움직임 보상(motion compensation) 또는 변환 및 양자화(transform and quantization) 모듈의 인코딩/디코딩 수행 시작까지의 레이턴시를 줄일 수 있다.By applying such a method, latency until the start of encoding / decoding of a motion compensation or a transform and quantization module can be reduced.
본 발명에서 제안하는 실시예들은 독립적으로 적용될 수도 있고, 복수 개의 실시예들이 조합되어 적용될 수도 있다. Embodiments proposed in the present invention may be applied independently, or a plurality of embodiments may be applied in combination.
도 19는 본 발명이 적용될 수 있는 실시예로서, 여러 비트 스트림으로 구성된 비디오 신호에 대해 엔트로피 디코딩을 수행하는 과정을 설명하는 흐름도이다.FIG. 19 is a flowchart to describe a process of performing entropy decoding on a video signal composed of several bit streams as an embodiment to which the present invention may be applied.
디코더는 복수 개의 비트 스트림(bit stream)으로 구성된 비디오 신호를 수신할 수 있다(S1901).The decoder may receive a video signal composed of a plurality of bit streams (S1901).
디코더는 상기 비디오 신호의 각 비트 스트림 별로 신택스 요소(syntax element)의 심볼(symbol)을 복호화할 수 있다(S1902).The decoder may decode a symbol of a syntax element for each bit stream of the video signal (S1902).
앞서 도 7, 도 9, 도 10 내지 12에서 설명한 바와 같이 상기 신택스 요소는 현재 블록 내에서 하나 이상의 신택스 요소가 독립적으로 처리되는 영역을 나타내는 기능 블록 단위(function block unit)로 상기 복수 개의 비트 스트림에 번갈아가며 매핑될 수 있다.As described above with reference to FIGS. 7, 9, and 10 to 12, the syntax element may be a function block unit representing a region in which one or more syntax elements are independently processed in the current block. Can be mapped alternately.
또한, 앞서 도 7, 도 8, 도 13 내지 17에서 설명한 바와 같이, 디코더는 기능 블록 단위 또는 신택스 요소 단위로 복수 개의 비트 스트림간 동기화를 수행할 수 있다. In addition, as described above with reference to FIGS. 7, 8, and 13 to 17, the decoder may perform synchronization between a plurality of bit streams in units of functional blocks or in syntax elements.
전술한 바와 같이, 상기 동기화를 수행하기 위하여 디코더는 현재 비트 스트림에서 현재 신택스 요소의 복호화를 시작하기 위한 락(lock)을 획득하고, 상기 현재 신택스 요소의 복호화가 종료된 경우 상기 획득된 락을 반환할 수 있다. 디코더는 해당 비트 스트림에서 락이 획득된 경우에만 상기 현재 신택스 요소를 복호화할 수 있다.As described above, in order to perform the synchronization, the decoder acquires a lock for starting decoding the current syntax element in the current bit stream, and returns the obtained lock when decoding of the current syntax element is terminated. can do. The decoder may decode the current syntax element only when a lock is obtained in the corresponding bit stream.
또한, 디코더는 현재 비트 스트림 이외의 비트 스트림에서 상기 현재 신택스 요소에 대한 락을 획득하였는지 여부를 나타내는 락 상태 정보(lock state information)를 확인할 수 있다.In addition, the decoder may check lock state information indicating whether a lock on the current syntax element is obtained in a bit stream other than the current bit stream.
예를 들어, 상기 락 상태 정보는 컨텍스트 스토어(context store) 등 별도의 저장 공간에 저장될 수 있다. 현재 비트 스트림에서 현재 신택스 요소의 복호화를 위해 디코더는 락 요청 정보를 상기 컨텍스트 스토어(또는 메모리)에 전송하여 해당 락에 대한 획득을 시도할 수 있다. 또는 디코더는 상기 컨텍스트 스토어로부터 해당 락에 대한 상태 정보를 읽어서 다른 비트 스트림에서의 락의 획득 여부 또는 락의 소유권 정보를 확인할 수도 있다. 이 경우, 신택스 요소에 대한 복호화가 종료된 후 락 해제 정보와 함께 락 해제 요청을 상기 컨텍스트 스토어에 전송하여 다른 비트 스트림에서 해당 락에 관련된 컨텍스트들을 갱신할 수 있도록 허용할 수 있다.For example, the lock state information may be stored in a separate storage space such as a context store. To decode the current syntax element in the current bit stream, the decoder may attempt to acquire the lock by transmitting lock request information to the context store (or memory). Alternatively, the decoder may read state information about the lock from the context store to confirm whether the lock is acquired in another bit stream or ownership information of the lock. In this case, after decryption of the syntax element is completed, the lock release request together with the lock release information may be transmitted to the context store to allow updating of contexts related to the lock in another bit stream.
또한, 전술한 바와 같이, 현재 신택스 요소에 컨텍스트(context)를 참조하는 정규 코딩(regular coding)이 적용되는 경우 디코더는 상기 복수 개의 비트 스트림간 동기화를 수행할 수 있고, 현재 신택스 요소에 바이패스 모드(bypass mode)가 적용되는 경우에는 상기 복수 개의 비트 스트림간 동기화를 수행하지 않을 수 있다.In addition, as described above, when regular coding that refers to a context is applied to a current syntax element, the decoder may perform synchronization between the plurality of bit streams, and a bypass mode may be applied to the current syntax element. When the bypass mode is applied, synchronization between the plurality of bit streams may not be performed.
또한, 앞서 도 9 및 도 12에서 설명한 바와 같이, 디코더는 기능 블록 단위로 신택스 요소의 심볼을 복호화한 후, 현재 비트 스트림을 전환할 수도 있다. In addition, as described above with reference to FIGS. 9 and 12, the decoder may switch the current bit stream after decoding the symbol of the syntax element in functional block units.
또한, 앞서, 도 10 및 도 13, 도 18에서 설명한 바와 같이, 디코더는 기능 블록 단위 마다 독립적으로 처리되는 작업 단위를 나타내는 스레드를 생성하여 상기 스레드의 정보를 저장하는 스레드 큐(thread queue)에 등록할 수 있고, 상기 스레드 큐에 저장된 복수 개의 스레드들을 병렬적으로 복호화할 수 있다.Also, as described above with reference to FIGS. 10, 13, and 18, the decoder generates a thread representing a unit of work that is independently processed for each functional block, and registers the thread in a thread queue that stores information of the thread. The plurality of threads stored in the thread queue may be decrypted in parallel.
디코더는 상기 복호화된 심볼을 이용하여 상기 신택스 요소의 정보를 도출할 수 있다(S1903).The decoder may derive information of the syntax element using the decoded symbol (S1903).
디코더는 앞서 도 4 및 도 6에서 설명한 방법에 의해 디코딩된 이진수 형태의 빈을 입력 받아 신택스 요소의 값을 출력할 수 있다.The decoder may receive a binary-type bin decoded by the method described above with reference to FIGS. 4 and 6 and output a value of a syntax element.
본 발명에서 어떠한 단위로 동기화하여 파이프라이닝을 수행할지 여부는 구현 의존적하다. 예를 들어, 하드웨어 구현에서는 신택스 요소 단위로 정교하게 동기화하는 것이 처리량 측면에서 유리할 수 있다. 그리고, 소프트웨어 구현에서는 OS에서 제공하는 동기화 프리미티브(synchronization primitive)(예를 들어, mutex lock, semaphore 등)의 성능에 따라 달라질 수 있으며, 성능이 더 좋을수록 보다 작은 단위로 동기화하는 것이 타당할 것이다.In the present invention, whether to perform pipelining by synchronizing in units is implementation dependent. For example, in hardware implementations, fine synchronization on a per-syntax basis may be advantageous in terms of throughput. In addition, the software implementation may vary depending on the performance of synchronization primitives (eg, mutex locks, semaphores, etc.) provided by the OS. The better the performance, the more likely it is to synchronize in smaller units.
상기 기술된 것과 같이, 본 발명에서 설명한 실시예들은 프로세서, 마이크로 프로세서, 컨트롤러 또는 칩 상에서 구현되어 수행될 수 있다. 예를 들어, 상기 도 1 내지 4 에서 도시한 기능 유닛들은 컴퓨터, 프로세서, 마이크로 프로세서, 컨트롤러 또는 칩 상에서 구현되어 수행될 수 있다.As described above, the embodiments described herein may be implemented and performed on a processor, microprocessor, controller, or chip. For example, the functional units illustrated in FIGS. 1 to 4 may be implemented and performed on a computer, a processor, a microprocessor, a controller, or a chip.
또한, 본 발명이 적용되는 디코더 및 인코더는 멀티미디어 방송 송수신 장치, 모바일 통신 단말, 홈 시네마 비디오 장치, 디지털 시네마 비디오 장치, 감시용 카메라, 비디오 대화 장치, 비디오 통신과 같은 실시간 통신 장치, 모바일 스트리밍 장치, 저장 매체, 캠코더, 주문형 비디오(VoD) 서비스 제공 장치, 인터넷 스트리밍 서비스 제공 장치, 3차원(3D) 비디오 장치, 화상 전화 비디오 장치, 및 의료용 비디오 장치 등에 포함될 수 있으며, 비디오 신호 및 데이터 신호를 처리하기 위해 사용될 수 있다.In addition, the decoder and encoder to which the present invention is applied include a multimedia broadcasting transmitting and receiving device, a mobile communication terminal, a home cinema video device, a digital cinema video device, a surveillance camera, a video chat device, a real time communication device such as video communication, a mobile streaming device, Storage media, camcorders, video on demand (VoD) service providing devices, internet streaming service providing devices, three-dimensional (3D) video devices, video telephony video devices, and medical video devices, and the like, for processing video and data signals Can be used for
또한, 본 발명이 적용되는 처리 방법은 컴퓨터로 실행되는 프로그램의 형태로 생산될 수 있으며, 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 본 발명에 따른 데이터 구조를 가지는 멀티미디어 데이터도 또한 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 상기 컴퓨터가 판독할 수 있는 기록 매체는 컴퓨터로 읽을 수 있는 데이터가 저장되는 모든 종류의 저장 장치를 포함한다. 상기 컴퓨터가 판독할 수 있는 기록 매체는, 예를 들어, 블루레이 디스크(BD), 범용 직렬 버스(USB), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크 및 광학적 데이터 저장 장치를 포함할 수 있다. 또한, 상기 컴퓨터가 판독할 수 있는 기록 매체는 반송파(예를 들어, 인터넷을 통한 전송)의 형태로 구현된 미디어를 포함한다. 또한, 인코딩 방법으로 생성된 비트 스트림이 컴퓨터가 판독할 수 있는 기록 매체에 저장되거나 유무선 통신 네트워크를 통해 전송될 수 있다.In addition, the processing method to which the present invention is applied can be produced in the form of a program executed by a computer, and can be stored in a computer-readable recording medium. Multimedia data having a data structure according to the present invention can also be stored in a computer-readable recording medium. The computer readable recording medium includes all kinds of storage devices for storing computer readable data. The computer-readable recording medium may include, for example, a Blu-ray disc (BD), a universal serial bus (USB), a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, and an optical data storage device. Can be. The computer-readable recording medium also includes media embodied in the form of a carrier wave (eg, transmission over the Internet). In addition, the bit stream generated by the encoding method may be stored in a computer-readable recording medium or transmitted through a wired or wireless communication network.
이상, 전술한 본 발명의 바람직한 실시예는, 예시의 목적을 위해 개시된 것으로, 당업자라면 이하 첨부된 특허청구범위에 개시된 본 발명의 기술적 사상과 그 기술적 범위 내에서, 다양한 다른 실시예들을 개량, 변경, 대체 또는 부가 등이 가능할 것이다.As mentioned above, preferred embodiments of the present invention are disclosed for purposes of illustration, and those skilled in the art can improve and change various other embodiments within the spirit and technical scope of the present invention disclosed in the appended claims below. , Replacement or addition would be possible.
Claims (18)
- 비디오 신호에 대해 엔트로피 디코딩을 수행하는 방법에 있어서,A method of performing entropy decoding on a video signal,복수 개의 비트 스트림(bit stream)으로 구성된 비디오 신호를 수신하는 단계;Receiving a video signal consisting of a plurality of bit streams;상기 비디오 신호의 각 비트 스트림 별로 신택스 요소(syntax element)의 심볼(symbol)을 복호화하는 단계; 및Decoding a symbol of a syntax element for each bit stream of the video signal; And상기 복호화된 심볼을 이용하여 상기 신택스 요소의 정보를 도출하는 단계를 포함하되,Deriving information of the syntax element by using the decoded symbol,상기 신택스 요소는 현재 블록 내에서 하나 이상의 신택스 요소가 독립적으로 처리되는 영역을 나타내는 기능 블록 단위(function block unit)로 상기 복수 개의 비트 스트림에 번갈아가며 매핑되는 방법.The syntax elements are alternately mapped to the plurality of bit streams in a function block unit representing an area in which one or more syntax elements are independently processed in a current block.
- 제 1항에 있어서,The method of claim 1,상기 신택스 요소의 심볼을 복호화하는 단계는,Decoding the symbol of the syntax element,상기 기능 블록 단위로 상기 복수 개의 비트 스트림간 동기화를 수행하는 단계를 더 포함하는 방법.And performing the synchronization between the plurality of bit streams in units of the functional blocks.
- 제 1항에 있어서,The method of claim 1,상기 신택스 요소의 심볼을 복호화하는 단계는,Decoding the symbol of the syntax element,상기 신택스 요소 단위로 상기 복수 개의 비트 스트림간 동기화를 수행하는 단계를 더 포함하는 방법.Performing synchronization between the plurality of bit streams in units of syntax elements.
- 제 3항에 있어서,The method of claim 3, wherein상기 복수 개의 비트 스트림간 동기화를 수행하는 단계는,The performing of the synchronization between the plurality of bit streams may include:현재 비트 스트림에서 현재 신택스 요소의 복호화를 시작하기 위한 락(lock)을 획득하는 단계를 더 포함하고,Obtaining a lock for starting decoding of the current syntax element in the current bit stream,상기 락을 획득한 경우에만 상기 현재 신택스 요소의 심볼을 복호화하는 방법.And decoding a symbol of the current syntax element only when the lock is obtained.
- 제 4항에 있어서,The method of claim 4, wherein상기 복수 개의 비트 스트림간 동기화를 수행하는 단계는,The performing of the synchronization between the plurality of bit streams may include:상기 현재 신택스 요소의 복호화가 종료된 경우 상기 획득된 락을 반환하는 단계를 더 포함하는 방법.Returning the obtained lock when decoding of the current syntax element is terminated.
- 제 4항에 있어서,The method of claim 4, wherein상기 복수 개의 비트 스트림간 동기화를 수행하는 단계는,The performing of the synchronization between the plurality of bit streams may include:상기 현재 비트 스트림 이외의 비트 스트림에서 상기 현재 신택스 요소에 대한 락을 획득하였는지 여부를 나타내는 락 상태 정보(lock state information)를 확인하는 단계를 더 포함하는 방법.Identifying lock state information indicating whether a lock has been obtained for the current syntax element in a bit stream other than the current bit stream.
- 제 3항에 있어서,The method of claim 3, wherein상기 복수 개의 비트 스트림간 동기화를 수행하는 단계는,The performing of the synchronization between the plurality of bit streams may include:현재 신택스 요소에 컨텍스트(context)를 참조하는 정규 코딩(regular coding)이 적용되는 경우, 상기 복수 개의 비트 스트림간 동기화를 수행하는 방법.The method for performing synchronization between the plurality of bit streams when regular coding that refers to a context is applied to a current syntax element.
- 제 1항에 있어서,The method of claim 1,상기 신택스 요소의 심볼을 복호화하는 단계는,Decoding the symbol of the syntax element,상기 기능 블록 단위로 신택스 요소의 심볼을 복호화한 후 현재 비트 스트림을 전환하는 단계를 더 포함하는 방법.And converting a current bit stream after decoding a symbol of a syntax element on a functional block basis.
- 제 1항에 있어서,The method of claim 1,상기 기능 블록 단위 마다 독립적으로 처리되는 작업 단위를 나타내는 스레드(thread)를 생성하여 상기 스레드의 정보를 저장하는 스레드 큐(thread queue)에 등록하는 단계; 및Generating a thread representing a unit of work independently processed for each functional block unit and registering the thread in a thread queue that stores information of the thread; And상기 스레드 큐에 저장된 복수 개의 스레드들을 병렬적으로 복호화하는 단계를 더 포함하는 방법.Decrypting the plurality of threads stored in the thread queue in parallel.
- 비디오 신호에 대해 엔트로피 디코딩을 수행하는 장치에 있어서,An apparatus for performing entropy decoding on a video signal,복수 개의 비트 스트림(bit stream)으로 구성된 비디오 신호를 수신하는 비디오 신호 수신부;A video signal receiver configured to receive a video signal composed of a plurality of bit streams;상기 비디오 신호의 각 비트 스트림 별로 신택스 요소(syntax element)의 심볼(symbol)을 복호화하는 심볼 복호화부; 및A symbol decoder for decoding a symbol of a syntax element for each bit stream of the video signal; And상기 복호화된 심볼을 이용하여 상기 신택스 요소의 정보를 복호화하는 신택스 요소 복호화부를 포함하되,A syntax element decoding unit for decoding the information of the syntax element using the decoded symbol,상기 신택스 요소는 현재 블록 내에서 하나 이상의 신택스 요소가 독립적으로 처리되는 영역을 나타내는 기능 블록 단위(function block unit)로 상기 복수 개의 비트 스트림에 번갈아가며 매핑되는 장치.Wherein the syntax element is alternately mapped to the plurality of bit streams in a function block unit representing an area in which one or more syntax elements are independently processed in a current block.
- 제 10항에 있어서,The method of claim 10,상기 심볼 복호화부는,The symbol decoding unit,상기 기능 블록 단위로 상기 복수 개의 비트 스트림간 동기화를 수행하는 동기화부를 포함하는 장치.And a synchronization unit configured to perform the synchronization between the plurality of bit streams in the functional block unit.
- 제 10항에 있어서,The method of claim 10,상기 심볼 복호화부는,The symbol decoding unit,상기 신택스 요소 단위로 상기 복수 개의 비트 스트림간 동기화를 수행하는 동기화부를 포함하는 장치.And a synchronization unit configured to perform the synchronization between the plurality of bit streams in units of syntax elements.
- 제 12항에 있어서,The method of claim 12,상기 동기화부는,The synchronization unit,현재 비트 스트림에서 현재 신택스 요소의 복호화를 시작하기 위한 락(lock)을 획득하고,Acquires a lock for starting decoding of the current syntax element in the current bit stream,상기 락이 획득된 경우에만 상기 현재 신택스 요소의 심볼이 복호화되는 장치.And the symbol of the current syntax element is decoded only when the lock is obtained.
- 제 13항에 있어서,The method of claim 13,상기 동기화부는,The synchronization unit,상기 현재 신택스 요소의 복호화가 종료된 경우 상기 획득된 락을 반환하는 장치.And returning the obtained lock when decoding of the current syntax element is terminated.
- 제 13항에 있어서,The method of claim 13,상기 동기화부는,The synchronization unit,상기 현재 비트 스트림 이외의 비트 스트림에서 상기 현재 신택스 요소에 대한 락을 획득하였는지 여부를 나타내는 락 상태 정보(lock state information)를 확인하는 장치.And verifying lock state information indicating whether a lock on the current syntax element is obtained in a bit stream other than the current bit stream.
- 제 12항에 있어서,The method of claim 12,상기 동기화부는,The synchronization unit,현재 신택스 요소에 컨텍스트(context)를 참조하는 정규 코딩(regular coding)이 적용되는 경우, 상기 복수 개의 비트 스트림간 동기화를 수행하는 장치.The apparatus for performing synchronization between the plurality of bit streams when regular coding that refers to a context is applied to a current syntax element.
- 제 10항에 있어서,The method of claim 10,상기 심볼 복호화부는,The symbol decoding unit,상기 기능 블록 단위로 신택스 요소의 심볼을 복호화한 후 현재 비트 스트림을 전환하는 장치.And converting a current bit stream after decoding a symbol of a syntax element in units of the functional blocks.
- 제 10항에 있어서,The method of claim 10,상기 기능 블록 단위 마다 독립적으로 처리되는 작업 단위를 나타내는 스레드(thread)를 생성하여 상기 스레드의 정보를 저장하는 스레드 큐(thread queue)에 등록하는 스레드 생성부; 및A thread generation unit generating a thread representing a work unit independently processed for each functional block unit and registering a thread in a thread queue that stores information of the thread; And상기 스레드 큐에 저장된 복수 개의 스레드들을 병렬적으로 복호화하는 스레드 복호화부를 더 포함하는 장치.And a thread decoder configured to decode a plurality of threads stored in the thread queue in parallel.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/KR2017/004818 WO2018207956A1 (en) | 2017-05-10 | 2017-05-10 | Method and device for entropy-encoding and entropy-decoding video signal |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/KR2017/004818 WO2018207956A1 (en) | 2017-05-10 | 2017-05-10 | Method and device for entropy-encoding and entropy-decoding video signal |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018207956A1 true WO2018207956A1 (en) | 2018-11-15 |
Family
ID=64105338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2017/004818 WO2018207956A1 (en) | 2017-05-10 | 2017-05-10 | Method and device for entropy-encoding and entropy-decoding video signal |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2018207956A1 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113382238A (en) * | 2020-02-25 | 2021-09-10 | 北京君正集成电路股份有限公司 | Method for accelerating calculation speed of partial bit number of residual coefficient |
WO2021213309A1 (en) * | 2020-04-19 | 2021-10-28 | Beijing Bytedance Network Technology Co., Ltd. | Transform skip residual coding |
WO2022206987A1 (en) * | 2021-04-02 | 2022-10-06 | Beijing Bytedance Network Technology Co., Ltd. | Adaptive dependent quantization |
CN115349261A (en) * | 2020-03-31 | 2022-11-15 | 瑞典爱立信有限公司 | Video processing using syntax elements |
US11882271B2 (en) | 2020-06-20 | 2024-01-23 | Beijing Bytedance Network Technology Co., Ltd. | Inter layer prediction with different coding block size |
US11917208B2 (en) | 2020-03-21 | 2024-02-27 | Beijing Bytedance Network Technology Co., Ltd. | Reference picture resampling |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120004319A (en) * | 2010-07-06 | 2012-01-12 | 한국전자통신연구원 | Apparatus and method for performing parallel entropy encoding and decoding |
KR20130096497A (en) * | 2012-02-22 | 2013-08-30 | 한양대학교 산학협력단 | Apparatus and method for video decoding |
KR20160070768A (en) * | 2013-10-14 | 2016-06-20 | 퀄컴 인코포레이티드 | Indication of parallel processing in video coding |
KR101718488B1 (en) * | 2012-01-20 | 2017-03-21 | 지이 비디오 컴프레션, 엘엘씨 | Coding concept allowing parallel processing, transport demultiplexer and video bitstream |
KR101726274B1 (en) * | 2011-02-21 | 2017-04-18 | 한국전자통신연구원 | Method and apparatus for parallel entropy encoding/decoding |
-
2017
- 2017-05-10 WO PCT/KR2017/004818 patent/WO2018207956A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120004319A (en) * | 2010-07-06 | 2012-01-12 | 한국전자통신연구원 | Apparatus and method for performing parallel entropy encoding and decoding |
KR101726274B1 (en) * | 2011-02-21 | 2017-04-18 | 한국전자통신연구원 | Method and apparatus for parallel entropy encoding/decoding |
KR101718488B1 (en) * | 2012-01-20 | 2017-03-21 | 지이 비디오 컴프레션, 엘엘씨 | Coding concept allowing parallel processing, transport demultiplexer and video bitstream |
KR20130096497A (en) * | 2012-02-22 | 2013-08-30 | 한양대학교 산학협력단 | Apparatus and method for video decoding |
KR20160070768A (en) * | 2013-10-14 | 2016-06-20 | 퀄컴 인코포레이티드 | Indication of parallel processing in video coding |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113382238A (en) * | 2020-02-25 | 2021-09-10 | 北京君正集成电路股份有限公司 | Method for accelerating calculation speed of partial bit number of residual coefficient |
US11917208B2 (en) | 2020-03-21 | 2024-02-27 | Beijing Bytedance Network Technology Co., Ltd. | Reference picture resampling |
US11930220B2 (en) | 2020-03-21 | 2024-03-12 | Beijing Bytedance Network Technology Co., Ltd. | Combination of subpictures and scalability |
CN115349261A (en) * | 2020-03-31 | 2022-11-15 | 瑞典爱立信有限公司 | Video processing using syntax elements |
WO2021213309A1 (en) * | 2020-04-19 | 2021-10-28 | Beijing Bytedance Network Technology Co., Ltd. | Transform skip residual coding |
US12010346B2 (en) | 2020-04-19 | 2024-06-11 | Beijing Bytedance Network Technology Co., Ltd. | Transform skip residual coding |
US11882271B2 (en) | 2020-06-20 | 2024-01-23 | Beijing Bytedance Network Technology Co., Ltd. | Inter layer prediction with different coding block size |
WO2022206987A1 (en) * | 2021-04-02 | 2022-10-06 | Beijing Bytedance Network Technology Co., Ltd. | Adaptive dependent quantization |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017086765A2 (en) | Method and apparatus for entropy encoding and decoding video signal | |
WO2020071830A1 (en) | Image coding method using history-based motion information, and device therefor | |
WO2018207956A1 (en) | Method and device for entropy-encoding and entropy-decoding video signal | |
WO2018190594A1 (en) | Method and device for entropy encoding, decoding video signal | |
WO2013002555A2 (en) | Method and apparatus for coding video and method and apparatus for decoding video accompanied with arithmetic coding | |
WO2014163249A1 (en) | Method and apparatus for processing video | |
WO2013066051A1 (en) | Method and apparatus for determining a context model for transform coefficient level entropy encoding and decoding | |
WO2013115572A1 (en) | Method and apparatus for hierarchical data unit-based video encoding and decoding comprising quantization parameter prediction | |
EP2524508A2 (en) | Method and apparatus for encoding and decoding image by using large transform unit | |
WO2021040319A1 (en) | Method and apparatus for deriving rice parameter in video/image coding system | |
WO2016076677A1 (en) | Method and device for entropy encoding or entropy decoding video signal for high-capacity parallel processing | |
WO2020071879A1 (en) | Transform coefficient coding method and device therefor | |
WO2015056941A1 (en) | Multilayer-based image encoding/decoding method and apparatus | |
WO2020197274A1 (en) | Transform-based image coding method and device therefor | |
WO2020167097A1 (en) | Derivation of inter-prediction type for inter prediction in image coding system | |
WO2014007515A1 (en) | Method for decoding image and apparatus using same | |
WO2021040398A1 (en) | Image or video coding based on palette escape coding | |
WO2014051372A1 (en) | Image decoding method and apparatus using same | |
WO2018190595A1 (en) | Method and apparatus for entropy encoding and decoding video signal | |
WO2021066618A1 (en) | Image or video coding based on signaling of transform skip- and palette coding-related information | |
WO2020185039A1 (en) | Residual coding method and device | |
WO2021071187A1 (en) | Method and apparatus for deriving rice parameter in video/image coding system | |
WO2021040407A1 (en) | Method for decoding video using simplified residual data coding in video coding system and device therefor | |
WO2020197222A1 (en) | Residual signal encoding/decoding method and apparatus employing intra sub-partitions (isp), and method for transmitting bitstream | |
WO2021034100A1 (en) | Image decoding method employing lossless coding in image coding system, and apparatus therefor |
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: 17909466 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: 17909466 Country of ref document: EP Kind code of ref document: A1 |