WO2016076677A1 - 대용량 병렬 처리를 위해 비디오 신호를 엔트로피 인코딩 또는 엔트로피 디코딩하는 방법 및 장치 - Google Patents

대용량 병렬 처리를 위해 비디오 신호를 엔트로피 인코딩 또는 엔트로피 디코딩하는 방법 및 장치 Download PDF

Info

Publication number
WO2016076677A1
WO2016076677A1 PCT/KR2015/012297 KR2015012297W WO2016076677A1 WO 2016076677 A1 WO2016076677 A1 WO 2016076677A1 KR 2015012297 W KR2015012297 W KR 2015012297W WO 2016076677 A1 WO2016076677 A1 WO 2016076677A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
segment
decoding
present
symbols
Prior art date
Application number
PCT/KR2015/012297
Other languages
English (en)
French (fr)
Inventor
새드아미르
Original Assignee
엘지전자(주)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘지전자(주) filed Critical 엘지전자(주)
Priority to US15/526,847 priority Critical patent/US10455244B2/en
Priority to KR1020177013845A priority patent/KR102123620B1/ko
Publication of WO2016076677A1 publication Critical patent/WO2016076677A1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Definitions

  • the present invention relates to a method and apparatus for entropy encoding or entropy decoding a video signal for massively parallel processing. Specifically, the present invention relates to a technique for adapting a segment entropy coding method to a hardware dataflow architecture.
  • Entropy coding is a process for representing data with the smallest average number of bits and is a basic technique in all media compression methods.
  • arithmetic coding is a method of entropy coding that has a higher computational complexity than other coding techniques such as prefix coding (e.g., Huffman, Rice, exp-Golomb code). Compression results are shown, and are used in the latest video coding standards H.265 / HEVC and VP9, and are expected to be used in the future.
  • the definition of a segmented bit format is required, where the data segment is an independent entropy coding FSM that can be processed in parallel at the end of the coding process or at the beginning of the decoding.
  • This approach is suitable for software execution on a typical processor because it avoids thread management or communication overheads, while overhead is not critical and processing elements are temporarily idle. There is a problem that may not be optimal for general hardware that must be.
  • the present invention seeks to provide a method of applying a segment entropy coding approach to a hardware dataflow architecture.
  • the present invention also provides an entropy coding method for optimally compressing a video signal with high data throughput.
  • the present invention seeks to show how the machine states can be untangled by changing the way compressed data is organized using a form of data segmentation.
  • the present invention provides greater flexibility of data processing and enables larger scale parallel processing through segment entropy coding in which compressed data is stored in divided data segments.
  • the present invention seeks to design a system that takes into account cache operations to reduce the memory cost of buffers.
  • the present invention provides a method of applying a segment entropy coding approach to a hardware dataflow architecture, thereby enabling optimal compression of a video signal with data throughput.
  • the present invention seeks to change how compressed data is organized using the form of data segmentation.
  • the present invention provides a parallel processing method that eliminates non-essential data dependencies.
  • the present invention provides a segment entropy coding method in which compressed data is stored in divided data segments.
  • the present invention also provides a method of designing a system that takes into account cache operation to reduce the memory cost of buffers.
  • the present invention also provides a way to solve the excessive data buffer problem by replacing large buffers in the encoder and decoder with much smaller data queues.
  • the present invention also provides a more general system for segment entropy coding by changing the blocks representing data models (MOD) to blocks representing FSMs.
  • MOD data models
  • the present invention provides a method of applying a segment entropy coding approach to a hardware dataflow architecture, thereby enabling optimal compression of a video signal with data throughput.
  • the encoder can run the main decoding process in parallel.
  • the decoder does not have to complete all entropy decoding before the main decoding process begins.
  • the memory cost of the buffers can be reduced by designing a system that takes into account cache behavior.
  • 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.
  • 3 and 4 are schematic block diagrams of an entropy encoding unit and an entropy decoding unit that process video signals according to embodiments of the present invention.
  • FIG. 5 is a diagram for describing a sequential operation of an FSM according to an embodiment to which the present invention is applied.
  • FIG. 6 is a schematic block diagram of an adaptive coding system for independent and identically distributed source symbols (hereinafter, referred to as 'i.i.d.') as an embodiment to which the present invention is applied.
  • FIG. 7 is a schematic block diagram of a coding system that performs compression by applying a different data model to each data type according to an embodiment to which the present invention is applied.
  • FIGS. 8 and 9 illustrate schematic block diagrams of a coding system for describing a data flow for binary arithmetic coding, as an embodiment to which the present invention is applied.
  • FIGS. 10 and 11 are exemplary embodiments to which the present invention is applied and show schematic block diagrams of a multiplexed coding system performing the same compression as in FIGS. 8 and 9.
  • 12 and 13 are schematic block diagrams of an entropy coding system for performing parallel processing according to embodiments of the present invention.
  • FIG. 14 illustrates a structure of a compressed data array divided into independent segments according to an embodiment to which the present invention is applied.
  • 15 and 16 are schematic block diagrams of coding systems for performing parallel processing using data queues as an embodiment to which the present invention is applied.
  • 17 is a flowchart illustrating a method of encoding a video signal using parallel processing as an embodiment to which the present invention is applied.
  • FIG. 18 is a flowchart illustrating a method of decoding a video signal based on parallel processing as an embodiment to which the present invention is applied.
  • a method of encoding a video signal using parallel processing comprising: generating data symbols to be encoded; Encoding a first data symbol within the base segment; Copying a second data symbol in another segment into a buffer; And encoding in parallel the second data symbol in the other segment.
  • the load-balancing algorithm is used to assign segments to different threads.
  • the method further includes generating a compressed data header when all data is compressed, wherein the compressed data header includes an index of each segment.
  • the present invention is characterized in that it further comprises the step of connecting all the segments to create one data array.
  • the non-blocking process is started when allocated to the data segment.
  • the present invention provides a method of decoding a video signal based on parallel processing, comprising: reading each segment in a compressed data header; Decoding all segments except the base segment using a plurality of threads; Storing data symbols in a buffer; And performing media signal processing based on the data symbols.
  • the data symbols in the base segment are decoded.
  • the data symbols are read from the corresponding buffer.
  • the present invention provides an apparatus for encoding a video signal using parallel processing, comprising: a data symbol generator for generating data symbols to be encoded; A serial processor which encodes a first data symbol in the base segment; And a parallel processor which copies a second data symbol in another segment into a buffer and encodes the second data symbol in the other segment in parallel.
  • the present invention further includes a data bit array generator for generating a compressed data header when all data is compressed, wherein the compressed data header includes an index of each segment.
  • the data bit array generator is characterized in that to connect all the segments to generate one data array.
  • the present invention provides an apparatus for decoding a video signal based on parallel processing, reading each segment in the compressed data header, decoding all segments except the base segment using a plurality of threads, A parallel processor for storing data symbols in a buffer; And a decoding unit for decoding the video signal based on the data symbols.
  • 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.
  • signals, data, samples, pictures, frames, blocks, etc. may be appropriately replaced and interpreted in each coding process.
  • partitioning, decomposition, splitting, and division may be appropriately replaced and interpreted 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 an 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 terms are only used for the convenience of description of the present invention, the present invention is not limited to the definition of the terms.
  • the term coding unit is used as a unit used in encoding or decoding a video signal, but the present invention is not limited thereto and may be appropriately interpreted according to the present invention.
  • the encoder 100 may generate a residual signal by subtracting a prediction signal output from the inter predictor 180 or the intra predictor 185 from the input image signal, and generate the residual signal. Is transmitted to the converter 120.
  • the transformer 120 may generate a transform coefficient by applying a transform technique to the residual signal.
  • 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 the quantized coefficients to the entropy encoding unit 190, and the entropy encoding unit 190 may entropy code the quantized signal and output the bitstream. Details of the entropy encoding unit 190 will be described in more detail in the entropy decoding unit of FIG. 2.
  • the quantized signal output from the quantization unit 130 may be used to generate a prediction signal.
  • the quantized signal may restore the residual signal by applying inverse quantization and inverse transformation through the inverse quantization unit 140 and the inverse transform unit 150 in the loop.
  • a reconstructed signal may be generated by adding the reconstructed residual signal to a 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 a reconstructed picture.
  • the reference picture used to perform the prediction is a transformed signal that has been quantized and dequantized in units of blocks at the time of encoding / decoding in the previous time, blocking artifacts or ringing artifacts may exist. have.
  • the inter prediction unit 180 may interpolate the signals between pixels in sub-pixel units by applying a lowpass filter in order to solve performance degradation due to discontinuity or quantization of such signals.
  • the subpixel refers to a virtual pixel generated by applying an interpolation filter
  • the integer pixel refers to an actual pixel existing in the reconstructed picture.
  • the interpolation method linear interpolation, bi-linear interpolation, wiener filter, or the like may be applied.
  • the interpolation filter may be applied to a reconstructed picture to improve the precision of prediction.
  • the inter prediction unit 180 generates an interpolation pixel by applying an interpolation filter to integer pixels, and uses an interpolated block composed of interpolated pixels as a prediction block. You can make predictions.
  • 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.
  • a prediction signal generated through 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 entropy decoding unit 210 parses and decodes the received signal and outputs syntax elements such as prediction modes, image parameters, and residual data.
  • the entropy decoding unit 210 may include Context-based Adaptive Binary Arithmetic Coding (CABAC), and the CABAC is a context-adaptive binary arithmetic decoding method, and syntax element information and parameter information for decoding the same. Calculate the occurrence probability based on the context, and decode the input signal sequentially to output the value of the syntax element.
  • CABAC Context-based Adaptive Binary Arithmetic Coding
  • the decoder 200 may generate a prediction signal based on the prediction vector information. This may be performed by the inter prediction unit 260, but the present invention is not limited thereto.
  • the inverse quantization unit 220 obtains a transform coefficient from the entropy decoded signal using the quantization step size information.
  • the obtained transform coefficients may be applied to various embodiments described in the transform unit 120 of FIG.
  • the inverse transform unit 230 inversely transforms the transform coefficient to obtain a residual signal.
  • a reconstructed signal is generated by adding the obtained residual signal to a prediction signal output from the inter predictor 260 or the intra predictor 265.
  • the filtering unit 240 applies filtering to the reconstructed signal and outputs the filtering to the reproducing apparatus or transmits it to the decoded picture buffer unit 250.
  • 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.
  • 3 and 4 are schematic block diagrams of an entropy encoding unit and an entropy decoding unit that process video signals according to embodiments of the present invention.
  • the entropy encoding unit 190 includes a binarization unit 310, a context modeling unit 320, and a binary arithmetic encoding unit 330.
  • 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 performs probability estimation on entropy-encoding. That is, the context modeling unit 320 may evaluate the probability of the bins.
  • 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 binary symbol may be selected based on at least one of the type of syntax element, the position of the binary symbol within the syntax element (binIdx), luma / chroma, and adjacent information.
  • the binary arithmetic encoding unit 330 performs entropy encoding on the output string and outputs compressed data bits.
  • the binary arithmetic encoding unit 330 performs arithmetic coding on the basis of recursive interval division.
  • An interval (or range) having an initial value of 0 to 1 is divided into two lower intervals based on the probability of a binary symbol.
  • the encoded bits when converted to binary fractions, provide an offset that selects one of two lower intervals representing the value of the decoded binary symbol.
  • the interval can be updated to equalize the selected subsection, and the interval division process itself is repeated.
  • the intervals and offsets have limited bit precision, so renormalization may be needed to prevent overflow each time the interval falls below a certain value. The renormalization may occur after each binary symbol is decoded.
  • Arithmetic coding can be performed using the estimated probability or assuming an equal probability of 0.5. In order to bypass the coded binary symbols, dividing the range into lower intervals may be performed through a shift operation, while a look up table may be needed for context coded binary symbols.
  • the entropy decoding unit 210 includes a binary arithmetic decoding unit 410, a context modeling unit 420, and an inverse binarization unit 430.
  • the binary arithmetic decoding unit 410 decodes the bitstream based on the binary occurrence probability information and outputs a binary bin.
  • the context modeling unit 420 selects probability information necessary to decode the current bitstream from the context memory and provides it to the binary arithmetic decoding unit 410.
  • the context memory includes a context model defined in bin units of syntax elements.
  • the context model represents occurrence probability information of binary MPS and LPS according to the context.
  • the context modeling unit 420 may select the context memory through the syntax element information to be decoded, and then select and output probability information necessary for decoding the current syntax element through bin index information which is a decoding order of bins therein. have.
  • the inverse binarization unit 430 receives a binary coded bin decoded by the binary arithmetic decoding unit 410, collects the bins, and converts the bins into integer syntax elements.
  • FIG. 5 is a diagram for describing a sequential operation of a finite state machine (FSM) according to an embodiment to which the present invention is applied.
  • FSM finite state machine
  • a finite state machine refers to a device that sequentially shows changes in restricted states.
  • those known as Mealy Machines or Mealy Circuits used in a circuit design may be applied.
  • the FSM may be generally defined by 6 tuples, and the tuple may mean a finite ordered list of elements.
  • S represents states of a finite set
  • S0 represents an initial state
  • denotes a finite set of input alphabets
  • denotes a finite set of output alphabets
  • T denotes a state transition function
  • P represents the output function
  • P S ⁇ ⁇ ⁇ ⁇ can be represented.
  • the FSM may be one of the basic elements used for concurrent computation. Since the FSM simply represents a continuous process, the calculations defined by the FSM are difficult to parallelize and require speculative execution to solve this problem.
  • functional units representing a data model may be changed to FSM functional units and applied to an entropy coding system for segment entropy coding.
  • FIG. 6 is a schematic block diagram of an adaptive coding system for independent and identically distributed source symbols (hereinafter, referred to as 'i.i.d.') as an embodiment to which the present invention is applied.
  • Entropy coding is the process of representing information without loss in a way that minimizes the average number of bits used, and is a fundamental part of any form of compression. This can be done by various methods, but basically its computational complexity tends to increase as compression efficiency reaches theoretical limits.
  • the present invention uses a sequence of random data symbols ⁇ d 1 , d 2 , d 3 ,... ⁇ , The source alphabet d k ⁇ ⁇ 0, 1,... , M-1 ⁇ . These are iids, a series of binary symbols (bits) ⁇ b 1 , b 2 , b 3 ,... ⁇ Is coded.
  • This model is useful as an optimal way to code iid sources. As discussed later, real data sources are much more complex, but the present invention can use them as a fundamental element in more complex coding systems.
  • the optimal code is a set of symbol probabilities ⁇ p 0 , p 1 ,... , p M-1 ⁇ .
  • the average number of bits used for coding symbol d k is given by the following equation.
  • the average number of bits used for coding symbol d k is not an integer.
  • prefix codes Huffman, Golomb-Rice, Elias-Teuhola, etc.
  • it is gradually being replaced with arithmetic codes that are more complicated computationally but can be represented by the number of bits of Equation 1 almost exactly on average.
  • an adaptive coding system to which the present invention is applied may include an encoder 610 and a decoder 620.
  • the encoder 610 may include a data modeling unit 611 and an entropy encoding unit 613
  • the decoder 620 may include an entropy decoding unit 621 and a data modeling unit 623.
  • each functional unit of the adaptive coding system may be an FSM for parallelization of entropy coding.
  • the data modeling unit 611 may manage the data model by estimating the symbol probability and dynamically updating the code by receiving the source symbols d 1 , d 2 ,...
  • the entropy encoding unit 613 performs entropy encoding based on the data and code information input from the data modeling unit 611 and calculates the compressed data bit arrays b 1 , b 2 ,...
  • the entropy decoding unit 621 receives the compressed data bit arrays b 1 , b 2 ,... And performs entropy decoding, and transmits the entropy decoded data to the data modeling unit 623.
  • the data modeling unit 623 outputs a source symbol based on the received data, generates a code, and transmits the code to the entropy decoding unit 621.
  • the coding process may be divided into code selection and actual coding even when codes are fixed.
  • a state machine for data modeling is basically designed to count the occurrence of each symbol to estimate its probability. There may be transformations based on the source alphabet size (M), or larger weights may be needed for more recent events, but the state space must always be large enough for efficient compression.
  • M source alphabet size
  • the entropy coding FSM has a state of tracking its position in the compressed data bit array.
  • Arithmetic coders include FSMs with a larger state space because they are used in some sense to represent fractional numbers of pending bits. For example, to code a series of symbols using 1.732 and 0.647 bits, the coder can subtract 1 bit after the first symbol and change its state to represent 0.732 pending bits. Next, after the second symbol, the second state can be subtracted and the internal state representing the 0.379 remaining bits can be updated.
  • entropy coding may multiplex and demultiplex all separated data elements in addition to efficiently representing data.
  • the signal is transformed and decomposed into many sub-elements as it is processed and has its own coding requirements, data alphabets, and statistical properties.
  • the improved encoding method can change the decomposition and transformation forms during the coding process and also adjust the parameters according to the signal characteristics in each segment.
  • FIG. 7 is a schematic block diagram of a coding system that performs compression by applying a different data model to each data type according to an embodiment to which the present invention is applied.
  • the encoder 710 of FIG. 7 includes a sequence compressing unit 720 and an entropy encoding unit 716.
  • the sequence compressing unit 720 includes a first context model selecting unit 711 and a data modeling unit 713. And a second context model selector 715.
  • the decoder 750 includes a sequence canceller 760 and an entropy decoder 751, and the sequence canceller 760 includes a third context model selector 752, a data modeler 754, and the like.
  • a fourth context model selector 756 may be included.
  • the sequence compressor 720 may perform m different sequences ⁇ s t1 , s t2 , s t3 ,...) For the interleaved data symbols. . .., Forming the type t ⁇ ⁇ 1, 2,. . . Organize according to m ,. Data samples are estimated with iid with that particular probability distribution. Each element of these sequences enters the entropy encoding unit 716 according to the original order, but the data type may vary randomly.
  • the entropy encoding unit 716 may perform entropy encoding on input elements and output a compressed data bit array.
  • the first context model selector 711 may select a context model corresponding to the input interleaved symbols based on the coding context.
  • the data modeling unit 713 may include a data modeling unit corresponding to each of the m sequences, and each data modeling unit may perform data modeling corresponding to each sequence based on the selected context model.
  • the second context model selector 715 may select a suitable context model for data corresponding to each sequence based on the coding context.
  • the entropy decoding unit 751 may receive the compressed data bit array to perform entropy decoding.
  • the sequence decompressor 760 may decompress the entropy decoded data bit array.
  • the third context model selector 752, the data modeling unit 754, and the fourth context model selector 756 in the singer sequence release unit 760 are performed by the sequence compressor 720 of the encoder 710. Since the reverse process of the process will be omitted detailed description.
  • Both encoders and decoders share algorithms that define in which sequence different types of data are encoded, according to the compression standard syntax.
  • the algorithm may be modeled as an FSM. Since the order depends on the data being encoded, a strict causal relationship must be required. For example, the encoder may only select execution paths based on the data that is also available at the decoder when the step is reached.
  • the present invention assumes that there is a 1: 1 relationship between the data model and the coding context.
  • the coding context may refer to the context of how data is generated and how it is coded. This is important because it means that data models are completely self-contained and their coding characteristics are defined only by their FSM.
  • the coding characteristic should not be confused with compression efficiency, which may depend on which data model is used.
  • different models may be used for the same type of coded data if different models are created under different contexts. This is because the symbols may have different probability sets. Under this assumption, the context model selectors shown in FIG. 7 represent context switching.
  • FIGS. 8 and 9 illustrate schematic block diagrams of a coding system for describing a data flow for binary arithmetic coding, as an embodiment to which the present invention is applied.
  • FIG. 8 A diagram with the most important entropy coding elements is shown in FIG. 8 above.
  • the encoder 800 includes a data source block 810, a first context model selector 820, a BIN 830, a sequence compressor 840, a second context model selector 850, and a BAC. (Binary Arithmetic Coding) encoding unit 860 may be included.
  • the contents of FIG. 7 may be applied to the sequence compressor 840.
  • the decoder 900 may include a binary arithmetic coding (BAC) decoding unit 910, a third context model selecting unit 920, a sequence release unit 930, a REC 940, and a fourth context model selecting unit. 950 and a data sink block 960.
  • BAC binary arithmetic coding
  • the data source block 810 may correspond to signal decomposition and signal conversion functional units. That is, the data source block 810 is a part for generating control and signal data entering an entropy encoder.
  • the first context model selector 820 may control the multiplexing operation by selecting different entropy coding data models based on the coding context.
  • the data extracted from non-binary alphabets is binarized through BIN 830 and m different sequences ⁇ s t1 , s t2 , s t3,. . . ⁇ Can be formed.
  • the second context model selector 850 may select an appropriate context model for data corresponding to each sequence based on the coding context.
  • the binary arithmetic coding (BAC) encoding unit 860 may output a compressed data bit array by performing binary arithmetic coding based on the selected context model.
  • BAC binary arithmetic coding
  • the binary arithmetic coding (BAC) decoding unit 910 in the decoder 900 may receive the compressed data bit array and perform binary arithmetic decoding.
  • the third context model selector 920, the sequence canceller 930, and the fourth context model selector 950 may include the first context model selector 820, the sequence compressor 840, and the encoder 800. Since the reverse process of the process performed by the second context model selector 850 is performed, a detailed description thereof will be omitted.
  • the REC 940 recovers binarized data through the BIN 830 of the encoder.
  • the data sink block 960 may correspond to inverse transform and signal recovery functional units.
  • the data sink block 960 shares with the encoder the rules and data needed to demultiplex and select the appropriate data model.
  • the data sink block 960 may provide the entropy decoder with information necessary to extract data from the compressed data bit array.
  • BIN blocks BIN 1, BIN 2, ..., BIN n Data extracted from non-binary alphabets must go through a process called binarization. 8 and 9, this is performed by the BIN blocks BIN 1, BIN 2, ..., BIN n, and returned to the original state by the REC blocks.
  • each of the BIN blocks may be different. This is because the BIN blocks BIN 1, BIN 2,..., BIN n are used for different size alphabets and use different binarization strategies.
  • each binary symbol bin the same process as shown in FIG. 6 may be used.
  • each binary symbol may be sent to a data model for probability estimation and code generation.
  • FIGS. 8 and 9 can show logical relationships instead of temporal data flow. For example, each data symbol produces a variable of binary symbols.
  • blocks that appear to be parallel data paths can be multiplexed and always performed continuously.
  • entropy coding includes four layers of inter-related finite state machines (model selection unit, BIN / REC, data modeling unit, BAC encoding unit / decoding unit). You can see that it is defined by).
  • the context model selectors may perform high level multiplexing of data types and coding contexts.
  • the BIN 830 and the REC 940 may each perform binarization and recovery processes applied to all non-binary symbols.
  • the data modeling unit may perform data modeling for estimating the probability of binary symbols.
  • the BAC encoding unit and the BAC decoding unit may perform entropy coding for generation or interpretation of compressed data bits.
  • the present invention may also consider the following facts.
  • the current data throughput is not limited by the high complexity for coding each binary symbol, but by the total number of clock cycles needed to classify or divide the information into the smallest elements. And multiplexed and coded.
  • FIGS. 10 and 11 are exemplary embodiments to which the present invention is applied and show schematic block diagrams of a multiplexed coding system performing the same compression as in FIGS. 8 and 9.
  • One way to perform parallelization processing to which the present invention is applied is to take advantage of the fact that it can be achieved by removing data dependencies when designing a new compression algorithm. However, this can adversely affect compression. Therefore, the present invention proposes a method for finding and removing non-essential dependencies.
  • association and commutativity are used to change the order of operation and create a new form of parallel execution.
  • entropy coding a feature we can use is the fact that optimal compression is achieved as long as each data symbol is represented using the optimal number of bits. Except for some semantic constraints, it does not matter exactly where those bits are placed.
  • the encoder 1000 of FIG. 10 may largely include a context model selector 1010, a MOD 1020, an ENC 1030, and a BUF 1040, and the decoder 1100 of FIG. 11 may include a DEC 1110. , MOD 1120, BUF 1130, and context model selector 1140.
  • the context model selector 1010 may select a context model corresponding to the input interleaved symbols based on the coding context.
  • data modeling may be performed through the MOD 1020, sequence compression may be performed through the ENC 1030, and then stored in the BUF 1040.
  • the compressed data through this process is divided into separate blocks DAT 1, DAT 2,... , DAT m can be stored.
  • the encoder 1000 of FIG. 10 completely removes the dependency between the updates in the data model and the sequences in the data added to one compressed data array.
  • the present invention allows compressed data to be stored in divided data segments so that this approach, called segment entropy coding, provides much more flexibility in defining the order of execution and allows greater scale parallelism. can do.
  • the decoder 1100 of FIG. 11 includes separate blocks DAT 1, DAT 2,.
  • all entropy decoding may be performed using a parallel processor through the DEC 1110 and may store all data symbols in the BUF 1130 via the MOD 1120.
  • context model selector 1140 performs an inverse process of the process performed by the context model selector 1010 of the encoder 1000, a detailed description thereof will be omitted.
  • the decoder 1100 when the decoder 1100 needs to perform full media decompression and access symbols in the appropriate sequence, it does not need to be completely entropy decoded from its binary representation but can read efficiently from the buffer.
  • the invention shows that the encoder can utilize parallelism by buffering data symbols.
  • the present invention may find the same type of trade-off for this approach. There is no compression loss, but at the expense of using more memory, one can find a way to parallelize entropy coding.
  • the present invention therefore seeks to design a system that takes into account cache operations.
  • 12 and 13 are schematic block diagrams of an entropy coding system for performing parallel processing according to embodiments of the present invention.
  • Adaptive parallel processing requires an FSM design with inputs that determine the parallel state and changes in the parallel state.
  • the input that determines the state of parallel processing can be defined as a syntax element to be decoded while generating a branch, and a syntax element consisting of one bin is 1, and a syntax element not generating a branch is 0.
  • the output of the FSM may mean the number of syntax elements to be decoded. For example, it may mean the number of context models to be parallelized.
  • the encoding / decoding sequences of FIGS. 12 and 13 to which the present invention is applied may be rearranged to generate segmented compressed data arrays.
  • the encoder 1200 of FIG. 12 may largely include a context model selector 1210, a serial processor 1220, and a parallel processor 1230.
  • the serial processor 1220 may include a context model selector 1221, an FSM 1222, a context model selector 1223, an ENC 1224, and a BUF 1225, and the parallel processor 1230.
  • the decoder 1300 of FIG. 13 may include a serial processor 1310, a parallel processor 1320, and a context model selector 1330.
  • the serial processor 1310 may include a DEC 1311, a context model selector 1312, an FSM 1313, and a context model selector 1314
  • the parallel processor 1320 may include a DEC 1321. ), FSM 1322, BUF 1323, and context model selector 1324.
  • FIGS. 12 and 13 More general systems for segmented entropy coding are shown in FIGS. 12 and 13. Although similar to the basic system of FIGS. 10 and 11 above, it includes several elements that are more important in practical applications. Thus, the functional units illustrated in FIGS. 12 and 13 will be described with reference to FIGS. 10 and 11, and only other portions will be described below.
  • FIGS. 12 and 13 One important change in FIGS. 12 and 13 is that the blocks representing data models (MOD) have been changed to FSM 1313, 1322 blocks. This is because the technology will work well with any type of self-contained FSM.
  • the blocks may represent the corresponding binary data model as well as the binarization process.
  • the present invention includes a base segment (serial processing units 1220 and 1310), and the data is processed in a serial execution method which is a general method.
  • the decoder Since the decoding elements must use data from other segments, the decoder must know where the data segments start. For example, this can be done using a data format with a header that includes a pointer to the beginning of each data segment, as in FIG. 14.
  • FIG. 14 illustrates a structure of a compressed data array divided into independent segments according to an embodiment to which the present invention is applied.
  • the header of the segment data to which the present invention is applied may include a pointer (index) assigned to each segment.
  • the compressed data byte array may include an index INDEX at the beginning and segment data after the index byte.
  • the segment data includes DAT 1, DAT 2,... , DAT P.
  • 15 and 16 are schematic block diagrams of coding systems for performing parallel processing using data queues as an embodiment to which the present invention is applied.
  • the encoder 1500 of FIG. 15 may largely include a context model selector 1510, a serial processor 1520, and a parallel processor 1530.
  • the serial processor 1520 may include a context model selector 1521, an FSM 1522, a context model selector 1523, an ENC 1524, and a BUF 1525, and the parallel processor 1530.
  • the decoder 1600 of FIG. 16 may include a serial processor 1610, a parallel processor 1620, and a context model selector 1630.
  • the serial processor 1610 may include a DEC 1611, a context model selector 1612, an FSM 1613, and a context model selector 1614, and the parallel processor 1620 includes a DEC 1621. ), FSM 1622, QUE 1623, and context model selector 1624.
  • FIGS. 15 and 16 For the functional units shown in FIGS. 15 and 16, the description of FIGS. 12 and 13 will be applied, and only other parts will be described below.
  • One important change in FIGS. 15 and 16 is that the BUF 1232, 1323 blocks have changed to QUE 1632, 1623 blocks.
  • a thread-based parallelization can be used using a general processor including several cores.
  • the important point here is that thread generation is relatively expensive, so we assume that we can have a smaller number of threads than many data segments. This may be possible through the use of thread pools.
  • the encoder may be performed as follows.
  • the encoder 1500 processes the media and generates a data symbol to be encoded, those in the base segment are encoded immediately, while those in the other segments are only copied into the buffer.
  • the decoder can use multiple threads to encode the buffered data in parallel.
  • a load-balancing algorithm can be used to allocate segments to other threads.
  • the encoder can generate a compressed data header and concatenate all segments to produce one data array.
  • Thread-level parallelization of decoding is performed similarly, but in a different order.
  • the decoder reads the compressed data header and begins to decode all segments except the base segment using a number of threads. Then, the decoding symbols in the buffer are stored.
  • the present invention does not require the same high cost to start or synchronize threads.
  • a data flow approach can be adopted, where the encoder can start non-blocking processing of the data as soon as it is assigned to the data segment, or add a short queue for post processing. have. If the queue is not full, the remaining operations for data generation can continue in parallel.
  • the hardware only begins to decode the data segments, and instead of decoding the entire segment, it will write the decoded symbols to the queue whenever they are not FULL. In this case, if the QUEUE is not empty, execution of other operations will continue.
  • the main algorithm data sources and sinks of Figs. 12 and 13
  • the present invention provides parallel processing. You can expect to have several elements for a while, and you'll almost never run on serial because of FULL at the encoder or empty QUEUE at the decoder.
  • 17 is a flowchart illustrating a method of encoding a video signal using parallel processing as an embodiment to which the present invention is applied.
  • a data symbol generator (not shown) in an encoder may generate data symbols to be encoded (S1710).
  • the encoder may encode the first data symbol in the base segment (S1720).
  • step S1720 may be performed by the serial processor.
  • the encoder may copy a second data symbol in another segment into a buffer (S1730).
  • a load-balancing algorithm can be used to assign segments to different threads.
  • the non-blocking process may begin when assigned to a data segment.
  • the encoder may encode second data symbols in the other segment in parallel (S1740).
  • steps S1730 and S1740 may be performed by the parallel processor.
  • the data bit array generator (not shown) may generate a compressed data header when all data is compressed.
  • the compressed data header may include an index of each segment.
  • the data bit array generator may connect all segments to generate one data array.
  • FIG. 18 is a flowchart illustrating a method of decoding a video signal based on parallel processing as an embodiment to which the present invention is applied.
  • the decoder may read each segment in the compressed data header (S1810). Then, all segments except the base segment are decoded using a plurality of threads (S1820), and data symbols may be stored in a buffer (S1830). The steps may be performed by a parallel processor.
  • the decoder may decode the video signal based on the data symbols (S1840).
  • the data symbols in the base segment may be decoded.
  • the data symbols may be read from the corresponding buffer.
  • 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, 6 to 13, and 15 to 16 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 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)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은, 병렬 처리를 이용하여 비디오 신호를 인코딩하는 방법에 있어서, 인코딩될 데이터 심볼들을 생성하는 단계; 베이스 세그먼트 내에 있는 제 1 데이터 심볼을 인코딩하는 단계; 다른 세그먼트 내에 있는 제 2 데이터 심볼을 버퍼에 카피하는 단계; 및 상기 다른 세그먼트 내에 있는 제 2 데이터 심볼을 병렬적으로 인코딩하는 단계를 포함하는 것을 특징으로 하는 방법을 제공한다.

Description

대용량 병렬 처리를 위해 비디오 신호를 엔트로피 인코딩 또는 엔트로피 디코딩하는 방법 및 장치
본 발명은 대용량 병렬 처리를 위해 비디오 신호를 엔트로피 인코딩 또는 엔트로피 디코딩하는 방법 및 장치에 관한 것이다. 구체적으로, 하드웨어 데이터흐름 구조(hardware dataflow architecture)에 세그먼트 엔트로피 코딩(segment entropy coding) 방법을 적응시키는 기술에 관한 것이다.
엔트로피 코딩은 가장 적은 수의 평균 비트 수를 가지는 데이터를 나타내기 위한 과정이며, 모든 미디어 압축 방법에 있어서 기본적인 기술이다. 그 중에서도 산술 코딩은 프리픽스(prefix) 코딩(예를 들어, 허프만(Huffman), 라이스(Rice), exp-Golomb 코드)과 같은 다른 코딩 기술에 비해 고도의 연산 복잡도를 가지는 엔트로피 코딩 방법이지만, 보다 나은 압축 결과를 보여주고 있어서, 최근의 비디오 코딩 규격인 H.265/HEVC 및 VP9 에서 이용되고 있으며, 향후에도 활용될 것으로 기대되고 있다.
그러나, 비디오 코딩 규격에서는 증가하는 처리량에 대한 병렬 수행 가능성을 제거하는, 유한상태머신(finite-state-machines, 이하 'FSM'이라 한다)의 pseudo-random 선택에 매핑하는 비트 신택스를 정의하고 있기 때문에, 비디오 인코딩/디코딩의 데이터 처리량을 강하게 제한한다.
따라서, 확장된 병렬화를 허여하기 위해서는 세그먼트된 비트 포맷(segmented bit format)의 정의가 필요하며, 여기서 데이터 세그먼트는 코딩 과정의 끝부분 또는 디코딩의 시작 부분에서 병렬로 처리될 수 있는 독립적인 엔트로피 코딩 FSM에 의해 정의된다. 이러한 접근은, 쓰레드 관리(thread management) 또는 통신 오버헤드(communication overheads)를 피할 수 있기 때문에, 일반적인 프로세서에서 소프트웨어의 실행에 적합한 반면, 오버헤드가 중요하지 않고 처리 요소들이 일시적으로 휴면(idle) 상태로 있어야 하는 일반적인 하드웨어에는 최적이 아닐 수 있다는 문제점이 있다.
상기 문제점을 해결하기 위해, 본 발명은 세그먼트 엔트로피 코딩 접근을 하드웨어 데이터흐름 구조(hardware dataflow architecture)에 적용하는 방법을 제공하고자 한다.
또한, 본 발명은, 높은 데이터 처리량과 함께 비디오 신호의 압축을 최적으로 수행하기 위한 엔트로피 코딩 방법을 제공하고자 한다.
또한, 본 발명은, 데이터 세그먼테이션(segmentation)의 형태를 이용하여 압축데이터가 조직되는 방법을 변경함으로써 머신 상태가 어떻게 풀릴 수 있는지(how the machine states can be untangled)를 보여주고자 한다.
또한, 본 발명은, 필수적이지 않은 데이터 의존성을 제거하는 병렬 처리 방법을 제공하고자 한다.
또한, 본 발명은, 압축 데이터가 분할된 데이터 세그먼트들 내에 저장되는 세그먼트 엔트로피 코딩(segment entropy coding)을 통해 보다 데이터 처리의 유연성을 제공하고 보다 큰 스케일의 병렬 처리를 가능하게 한다.
또한, 본 발명은, 버퍼들의 메모리 비용을 감소시키기 위한 캐시 동작을 고려하는 시스템을 디자인하고자 한다.
또한, 본 발명은, 데이터가 데이터 세그먼트에 할당되자마자 데이터의 넌블록킹 처리(non-blocking processing)를 시작하거나, 이후 처리를 위한 숏 큐(short queue)를 추가할 수 있는 인코더를 제공하고자 한다.
본 발명은 세그먼트 엔트로피 코딩 접근을 하드웨어 데이터흐름 구조(hardware dataflow architecture)에 적용하는 방법을 제공함으로써, 데이터 처리량과 함께 비디오 신호의 압축을 최적으로 수행할 수 있다.
또한, 본 발명은, 데이터 세그먼테이션(segmentation)의 형태를 이용하여 압축데이터가 조직되는 방법을 변경하고자 한다.
또한, 본 발명은, 필수적이지 않은 데이터 의존성을 제거하는 병렬 처리 방법을 제공한다.
또한, 본 발명은, 압축 데이터가 분할된 데이터 세그먼트들 내에 저장되는 세그먼트 엔트로피 코딩(segment entropy coding) 방법을 제공한다..
또한, 본 발명은, 버퍼들의 메모리 비용을 감소시키기 위해 캐시 동작을 고려하는 시스템을 디자인하는 방법을 제공한다.
또한, 본 발명은, 인코더 및 디코더 내 큰 버퍼를 훨씬 작은 데이터 큐(data queue)로 대체함으로써 과도한 데이터 버퍼 문제를 해결하는 방법을 제공한다.
또한, 본 발명은, 데이터 모델을 나타내는 블록들(MOD, the blocks representing data models)을 FSM을 나타내는 블록들로 변경함으로써, 세그먼트 엔트로피 코딩을 위한 보다 일반적인 시스템을 제공한다.
본 발명은 세그먼트 엔트로피 코딩 접근을 하드웨어 데이터흐름 구조(hardware dataflow architecture)에 적용하는 방법을 제공함으로써, 데이터 처리량과 함께 비디오 신호의 압축을 최적으로 수행할 수 있다.
또한, 세그먼트 엔트로피 코딩 접근을 하드웨어 데이터흐름 구조(hardware dataflow architecture)에 적용하고 처리 요소들은 엔트로피 인코딩 및 디코딩을 제어하기 위해 큐(queue)를 이용함으로써, 인코더는 메인 디코딩 과정을 병렬적으로 동작할 수 있고, 디코더는 메인 디코딩 과정이 시작하기 전에 모든 엔트로피 디코딩을 끝내지 않아도 된다.
또한, FSM을 이용하고 큰 스케일의 상태 공간(state space)을 이용함으로써 높은 데이터 처리량을 얻고 압축을 최적으로 수행할 수 있다.
또한, 캐시 동작을 고려하는 시스템을 디자인함으로써 버퍼들의 메모리 비용을 감소시킬 수 있다.
또한, 인코더 및 디코더 내 큰 버퍼를 훨씬 작은 데이터 큐(data queue)로 대체함으로써 과도한 데이터 버퍼 문제를 해결할 수 있다.
도 1은 본 발명이 적용되는 실시예로서, 비디오 신호의 인코딩이 수행되는 인코더의 개략적인 블록도를 나타낸다.
도 2는 본 발명이 적용되는 실시예로서, 비디오 신호의 디코딩이 수행되는 디코더의 개략적인 블록도를 나타낸다.
도 3 및 도 4는 본 발명이 적용되는 일실시예들로서, 비디오 신호를 처리하는 엔트로피 인코딩부 및 엔트로피 디코딩부의 개략적인 블록도를 나타낸다.
도 5는 본 발명이 적용되는 일실시예로서, FSM의 연속 동작(sequential operation)을 설명하기 위한 도면이다.
도 6은 본 발명이 적용되는 일실시예로서, 독립적이고 동등하게 분포된(independent and identically distributed, 이하 ‘i.i.d.’라 한다) 소스 심볼들에 대한 적응적인 코딩 시스템의 개략적인 블록도를 나타낸다.
도 7은 본 발명이 적용되는 일실시예로서, 데이터 타입마다 다른 데이터 모델을 적용하여 압축을 수행하는 코딩 시스템의 개략적인 블록도를 나타낸다.
도 8 및 도 9는 본 발명이 적용되는 일실시예들로서, 이진 산술 코딩을 위한 데이터 흐름을 설명하기 위한 코딩 시스템의 개략적인 블록도를 나타낸다.
도 10 및 도 11은 본 발명이 적용되는 일실시예들로서, 도 8 및 도 9와 같이 동일한 압축을 수행하는 다중화된 코딩 시스템의 개략적인 블록도를 나타낸다.
도 12 및 도 13은 본 발명이 적용되는 일실시예들로서, 병렬 처리를 수행하는 엔트로피 코딩 시스템의 개략적인 블록도를 나타낸다.
도 14는 본 발명이 적용되는 일실시예로서, 독립적인 세그먼트들로 분할된 압축 데이터 어레이의 구조를 나타낸다.
도 15 및 도 16은 본 발명이 적용되는 일실시예로서, 데이터 큐를 이용하여 병렬 처리를 수행하는 코딩 시스템의 개략적인 블록도를 나타낸다.
도 17은 본 발명이 적용되는 일실시예로서, 병렬 처리를 이용하여 비디오 신호를 인코딩하는 방법을 나타내는 흐름도이다.
도 18은 본 발명이 적용되는 일실시예로서, 병렬 처리에 기초하여 비디오 신호를 디코딩하는 방법을 나타내는 흐름도이다.
본 발명은, 병렬 처리를 이용하여 비디오 신호를 인코딩하는 방법에 있어서, 인코딩될 데이터 심볼들을 생성하는 단계; 베이스 세그먼트 내에 있는 제 1 데이터 심볼을 인코딩하는 단계; 다른 세그먼트 내에 있는 제 2 데이터 심볼을 버퍼에 카피하는 단계; 및 상기 다른 세그먼트 내에 있는 제 2 데이터 심볼을 병렬적으로 인코딩하는 단계를 포함하는 것을 특징으로 하는 방법을 제공한다.
또한, 본 발명에서, 로드-밸런싱 알고리즘이 세그먼트들을 서로 다른 쓰레드(threads)에 할당하기 위해 이용되는 것을 특징으로 한다.
또한, 본 발명에서, 모든 데이터가 압축되었을 때 압축된 데이터 헤더를 생성하는 단계를 더 포함하되, 상기 압축된 데이터 헤더는 각 세그먼트의 인덱스를 포함하는 것을 특징으로 한다.
또한, 본 발명에서, 하나의 데이터 어레이를 생성하기 위해 모든 세그먼트들을 연결하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 본 발명에서, 넌-블록킹 과정은 데이터 세그먼트에 할당될 때 시작되는 것을 특징으로 한다.
또한, 본 발명은, 병렬 처리에 기초하여 비디오 신호를 디코딩하는 방법에 있어서, 압축된 데이터 헤더 내에 있는 각 세그먼트를 읽는 단계; 다수의 쓰레드(threads)를 이용하여 베이스 세그먼트를 제외한 모든 세그먼트들을 디코딩하는 단계; 데이터 심볼들을 버퍼 내에 저장하는 단계; 및 상기 데이터 심볼들에 기초하여 미디어 신호 처리를 수행하는 단계를 포함하는 것을 특징으로 하는 방법을 제공한다.
또한, 본 발명에서, 상기 데이터 심볼들이 상기 베이스 세그먼트 내에 존재하는 경우, 상기 베이스 세그먼트 내의 데이터 심볼들은 디코딩되는 것을 특징으로 한다.
또한, 본 발명에서, 상기 데이터 심볼들이 상기 베이스 세그먼트 내에 존재하지 않는 경우, 상기 데이터 심볼들은 대응되는 버퍼로부터 읽히는 것을 특징으로 한다.
또한, 본 발명은, 병렬 처리를 이용하여 비디오 신호를 인코딩하는 장치에 있어서, 인코딩될 데이터 심볼들을 생성하는 데이터 심볼 생성부; 베이스 세그먼트 내에 있는 제 1 데이터 심볼을 인코딩하는 직렬 처리부; 다른 세그먼트 내에 있는 제 2 데이터 심볼을 버퍼에 카피하고, 상기 다른 세그먼트 내에 있는 제 2 데이터 심볼을 병렬적으로 인코딩하는 병렬 처리부를 포함하는 것을 특징으로 하는 장치를 제공한다.
또한, 본 발명은, 모든 데이터가 압축되었을 때 압축된 데이터 헤더를 생성하는 데이터 비트 어레이 생성부를 더 포함하되, 상기 압축된 데이터 헤더는 각 세그먼트의 인덱스를 포함하는 것을 특징으로 한다.
또한, 본 발명에서, 상기 데이터 비트 어레이 생성부는 하나의 데이터 어레이를 생성하기 위해 모든 세그먼트들을 연결하는 것을 특징으로 한다.
또한, 본 발명은, 병렬 처리에 기초하여 비디오 신호를 디코딩하는 장치에 있어서, 압축된 데이터 헤더 내에 있는 각 세그먼트를 읽고, 다수의 쓰레드(threads)를 이용하여 베이스 세그먼트를 제외한 모든 세그먼트들을 디코딩하고, 데이터 심볼들을 버퍼 내에 저장하는 병렬 처리부; 및 상기 데이터 심볼들에 기초하여 상기 비디오 신호를 디코딩하는 디코딩부를 포함하는 것을 특징으로 하는 장치를 제공한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예의 구성과 그 작용을 설명하며, 도면에 의해서 설명되는 본 발명의 구성과 작용은 하나의 실시예로서 설명되는 것이며, 이것에 의해서 본 발명의 기술적 사상과 그 핵심 구성 및 작용이 제한되지는 않는다.
아울러, 본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어를 사용하여 설명한다. 그러한 경우에는 해당 부분의 상세 설명에서 그 의미를 명확히 기재하므로, 본 발명의 설명에서 사용된 용어의 명칭만으로 단순 해석되어서는 안 될 것이며 그 해당 용어의 의미까지 파악하여 해석되어야 함을 밝혀두고자 한다.
또한, 본 발명에서 사용되는 용어들은 발명을 설명하기 위해 선택된 일반적인 용어들이나, 유사한 의미를 갖는 다른 용어가 있는 경우 보다 적절한 해석을 위해 대체 가능할 것이다. 예를 들어, 신호, 데이터, 샘플, 픽쳐, 프레임, 블록 등의 경우 각 코딩 과정에서 적절하게 대체되어 해석될 수 있을 것이다. 또한, 파티셔닝(partitioning), 분해(decomposition), 스플리팅 (splitting) 및 분할(division) 등의 경우에도 각 코딩 과정에서 적절하게 대체되어 해석될 수 있을 것이다.
도 1은 본 발명이 적용되는 실시예로서, 비디오 신호의 인코딩이 수행되는 인코더의 개략적인 블록도를 나타낸다.
도 1을 참조하면, 인코더(100)는 영상 분할부(110), 변환부(120), 양자화부(130), 역양자화부(140), 역변환부(150), 필터링부(160), 복호 픽쳐 버퍼(DPB: Decoded Picture Buffer)(170), 인터 예측부(180), 인트라 예측부(185) 및 엔트로피 인코딩부(190)를 포함하여 구성될 수 있다.
영상 분할부(110)는 인코더(100)에 입력된 입력 영상(Input image)(또는, 픽쳐, 프레임)를 하나 이상의 처리 유닛으로 분할할 수 있다. 예를 들어, 상기 처리 유닛은 코딩 트리 유닛(CTU: Coding Tree Unit), 코딩 유닛(CU: Coding Unit), 예측 유닛(PU: Prediction Unit) 또는 변환 유닛(TU: Transform Unit)일 수 있다.
다만, 상기 용어들은 본 발명에 대한 설명의 편의를 위해 사용할 뿐이며, 본 발명은 해당 용어의 정의에 한정되지 않는다. 또한, 본 명세서에서는 설명의 편의를 위해, 비디오 신호를 인코딩 또는 디코딩하는 과정에서 이용되는 단위로써 코딩 유닛이라는 용어를 사용하지만, 본 발명은 그에 한정되지 않으며 발명 내용에 따라 적절하게 해석 가능할 것이다.
인코더(100)는 입력 영상 신호에서 인터 예측부(180) 또는 인트라 예측부(185)로부터 출력된 예측 신호(prediction signal)를 감산하여 잔여 신호(residual signal)를 생성할 수 있고, 생성된 잔여 신호는 변환부(120)로 전송된다.
변환부(120)는 잔여 신호에 변환 기법을 적용하여 변환 계수(transform coefficient)를 생성할 수 있다. 변환 과정은 정사각형의 동일한 크기를 갖는 픽셀 블록에 적용될 수도 있고, 정사각형이 아닌 가변 크기의 블록에도 적용될 수 있다.
양자화부(130)는 변환 계수를 양자화하여 엔트로피 인코딩부(190)로 전송하고, 엔트로피 인코딩부(190)는 양자화된 신호(quantized signal)를 엔트로피 코딩하여 비트스트림으로 출력할 수 있다. 엔트로피 인코딩부(190)의 상세한 내용은 도 2의 엔트로피 디코딩부에서 보다 상세히 설명하도록 한다.
양자화부(130)로부터 출력된 양자화된 신호(quantized signal)는 예측 신호를 생성하기 위해 이용될 수 있다. 예를 들어, 양자화된 신호(quantized signal)는 루프 내의 역양자화부(140) 및 역변환부(150)를 통해 역양자화 및 역변환을 적용함으로써 잔여 신호를 복원할 수 있다. 복원된 잔여 신호를 인터 예측부(180) 또는 인트라 예측부(185)로부터 출력된 예측 신호(prediction signal)에 더함으로써 복원 신호(reconstructed signal)가 생성될 수 있다.
한편, 위와 같은 압축 과정에서 인접한 블록들이 서로 다른 양자화 파라미터에 의해 양자화됨으로써 블록 경계가 보이는 열화가 발생될 수 있다. 이러한 현상을 블록킹 열화(blocking artifacts)라고 하며, 이는 화질을 평가하는 중요한 요소 중의 하나이다. 이러한 열화를 줄이기 위해 필터링 과정을 수행할 수 있다. 이러한 필터링 과정을 통해 블록킹 열화를 제거함과 동시에 현재 픽쳐에 대한 오차를 줄임으로써 화질을 향상시킬 수 있게 된다.
필터링부(160)는 복원 신호에 필터링을 적용하여 이를 재생 장치로 출력하거나 복호 픽쳐 버퍼(170)에 전송한다. 복호 픽쳐 버퍼(170)에 전송된 필터링된 신호는 인터 예측부(180)에서 참조 픽쳐로 사용될 수 있다. 이처럼, 필터링된 픽쳐를 화면간 예측 모드에서 참조 픽쳐로 이용함으로써 화질 뿐만 아니라 부호화 효율도 향상시킬 수 있다.
복호 픽쳐 버퍼(170)는 필터링된 픽쳐를 인터 예측부(180)에서의 참조 픽쳐로 사용하기 위해 저장할 수 있다.
인터 예측부(180)는 복원 픽쳐(reconstructed picture)를 참조하여 시간적 중복성 및/또는 공간적 중복성을 제거하기 위해 시간적 예측 및/또는 공간적 예측을 수행한다. 여기서, 예측을 수행하기 위해 이용되는 참조 픽쳐는 이전 시간에 부호화/복호화 시 블록 단위로 양자화와 역양자화를 거친 변환된 신호이기 때문에, 블로킹 아티팩트(blocking artifact)나 링잉 아티팩트(ringing artifact)가 존재할 수 있다.
따라서, 인터 예측부(180)는 이러한 신호의 불연속이나 양자화로 인한 성능 저하를 해결하기 위해, 로우패스 필터(lowpass filter)를 적용함으로써 픽셀들 사이의 신호를 서브 픽셀 단위로 보간할 수 있다. 여기서, 서브 픽셀은 보간 필터를 적용하여 생성된 가상의 화소를 의미하고, 정수 픽셀은 복원된 픽쳐에 존재하는 실제 화소를 의미한다. 보간 방법으로는 선형 보간, 양선형 보간(bi-linear interpolation), 위너 필터(wiener filter) 등이 적용될 수 있다.
보간 필터는 복원 픽쳐(reconstructed picture)에 적용되어 예측의 정밀도를 향상시킬 수 있다. 예를 들어, 인터 예측부(180)는 정수 픽셀에 보간 필터를 적용하여 보간 픽셀을 생성하고, 보간 픽셀들(interpolated pixels)로 구성된 보간 블록(interpolated block)을 예측 블록(prediction block)으로 사용하여 예측을 수행할 수 있다.
인트라 예측부(185)는 현재 부호화를 진행하려고 하는 블록의 주변에 있는 샘플들을 참조하여 현재 블록을 예측할 수 있다. 상기 인트라 예측부(185)는 인트라 예측을 수행하기 위해 다음과 같은 과정을 수행할 수 있다. 먼저, 예측 신호를 생성하기 위해 필요한 참조 샘플을 준비할 수 있다. 그리고, 준비된 참조 샘플을 이용하여 예측 신호를 생성할 수 있다. 이후, 예측 모드를 부호화하게 된다. 이때, 참조 샘플은 참조 샘플 패딩 및/또는 참조 샘플 필터링을 통해 준비될 수 있다. 참조 샘플은 예측 및 복원 과정을 거쳤기 때문에 양자화 에러가 존재할 수 있다. 따라서, 이러한 에러를 줄이기 위해 인트라 예측에 이용되는 각 예측 모드에 대해 참조 샘플 필터링 과정이 수행될 수 있다.
상기 인터 예측부(180) 또는 상기 인트라 예측부(185)를 통해 생성된 예측 신호(prediction signal)는 복원 신호를 생성하기 위해 이용되거나 잔여 신호를 생성하기 위해 이용될 수 있다.
도 2는 본 발명이 적용되는 실시예로서, 비디오 신호의 디코딩이 수행되는 디코더의 개략적인 블록도를 나타낸다.
도 2를 참조하면, 디코더(200)는 엔트로피 디코딩부(210), 역양자화부(220), 역변환부(230), 필터링부(240), 복호 픽쳐 버퍼(DPB: Decoded Picture Buffer Unit)(250), 인터 예측부(260) 및 인트라 예측부(265)를 포함하여 구성될 수 있다.
그리고, 디코더(200)를 통해 출력된 복원 영상 신호(reconstructed video signal)는 재생 장치를 통해 재생될 수 있다.
디코더(200)는 도 1의 인코더(100)로부터 출력된 신호를 수신할 수 있고, 수신된 신호는 엔트로피 디코딩부(210)를 통해 엔트로피 디코딩될 수 있다.
상기 엔트로피 디코딩부(210)는 수신된 신호를 파싱하고 디코딩하여 예측 모드, 영상 파라미터, 레지듀얼 데이터와 같은 구문 요소(syntax element)를 출력하는 역할을 한다. 예를 들어, 상기 엔트로피 디코딩부(210)는 CABAC(Context-based Adaptive Binary Arithmetic Coding)을 포함할 수 있고, 상기 CABAC은 문맥 적응적 이진 산술 복호화 방식으로, 구문 요소 정보와 이를 디코딩하기 위한 파라미터 정보를 입력받아 문맥 기반의 발생 확률을 계산하고, 입력된 신호를 순차적으로 디코딩하여 구문 요소의 값을 출력한다.
상기 디코더(200)는 상기 예측 벡터 정보에 기초하여 예측 신호를 생성할 수 있다. 이는 인터 예측부(260)에서 수행될 수 있으나, 본 발명은 이에 한정되지 않는다.
역양자화부(220)에서는 양자화 스텝 사이즈 정보를 이용하여 엔트로피 디코딩된 신호로부터 변환 계수(transform coefficient)를 획득한다. 여기서, 획득된 변환 계수는 상기 도 1의 변환부(120)에서 설명한 다양한 실시예들이 적용된 것일 수 있다.
역변환부(230)에서는 변환 계수를 역변환하여 잔여 신호(residual signal)를 획득하게 된다.
획득된 잔여 신호를 인터 예측부(260) 또는 인트라 예측부(265)로부터 출력된 예측 신호(prediction signal)에 더함으로써 복원 신호(reconstructed signal)가 생성된다.
필터링부(240)는 복원 신호(reconstructed signal)에 필터링을 적용하여 이를 재생 장치로 출력하거나 복호 픽쳐 버퍼부(250)에 전송한다. 복호 픽쳐 버퍼부(250)에 전송된 필터링된 신호는 인터 예측부(260)에서 참조 픽쳐로 사용될 수 있다.
본 명세서에서, 인코더(100)의 필터링부(160), 인터 예측부(180) 및 인트라 예측부(185)에서 설명된 실시예들은 각각 디코더의 필터링부(240), 인터 예측부(260) 및 인트라 예측부(265)에도 동일하게 적용될 수 있다.
도 3 및 도 4는 본 발명이 적용되는 일실시예들로서, 비디오 신호를 처리하는 엔트로피 인코딩부 및 엔트로피 디코딩부의 개략적인 블록도를 나타낸다.
도 3을 참조하면, 상기 엔트로피 인코딩부(190)은 이진화부(310), 컨텍스트(context) 모델링부(320) 및 이진 산술 인코딩부(330)을 포함한다.
상기 이진화부(310)은 데이터 심볼들의 시퀀스를 수신하고 이진화를 수행함으로써 0 또는 1의 이진화된 값으로 구성된 이진 심볼(bin) 스트링을 출력할 수 있다. 상기 이진화부(310)은 신택스(syntax) 요소들을 이진 심볼들로 매핑할 수 있다. 서로 다른 여러 이진화 과정들, 예를 들어, 단항(unary: U), 끝이 잘린 단항(truncated unary: TU), k차 Exp-Golomb (EGk), 및 고정 길이(Fixed Length) 과정 등이 이진화를 위해 사용될 수 있다. 상기 이진화 과정은 신택스 요소의 유형을 기반으로 선택될 수 있다.
출력된 이진 심볼 스트링은 컨텍스트 모델링부(320)으로 전송된다. 상기 컨텍스트 모델링부(320)은 엔트로피-인코딩에 대한 확률 평가를 수행한다. 즉, 상기 컨텍스트 모델링부(320)은 상기 bin들의 확률을 평가할 수 있다.
상기 컨텍스트 모델링부(320)은 높은 코딩 효율을 성취하기 위해 필요한 정확한 확률 추정을 제공할 수 있다. 이에 따라, 서로 다른 이진 심볼들에 대해 서로 다른 컨텍스트 모델들이 사용될 수 있고 이러한 컨텍스트 모델의 확률은 이전에 코딩된 이진 심볼의 값들을 기반으로 업데이트될 수 있다.
유사한 분포를 가지는 이진 심볼들은 동일한 컨텍스트 모델을 공유할 수 있다. 이러한 각 이진 심볼에 대한 컨텍스트 모델은 신택스 요소의 유형, 신택스 요소 내에서의 이진 심볼의 위치(binIdx), 휘도/색차(luma/chroma), 인접 정보들 중 최소한 하나를 기반으로 선택될 수 있다.
상기 이진 산술 인코딩부(330)은 출력된 스트링에 대한 엔트로피 인코딩을 수행하고 압축된 데이터 비트들을 출력한다.
상기 이진 산술 인코딩부(330)은 재귀적 구간 분할(recursive interval division)을 기반으로 산술 코딩을 수행한다.
0 내지 1의 초기값을 가지는 구간(또는 범위)이 이진 심볼의 확률을 기반으로 두 개의 하위 구간들로 분할된다. 인코딩된 비트들은 이진 분수로 변환되는 경우 디코딩된 이진 심볼의 값을 나타내는 두 개의 하위 구간 중 하나를 선택하는 오프셋을 제공한다.
디코딩된 모드의 이진 심볼 이후에, 상기 구간은 선택된 하위 구간을 동일하게 하기 위해 업데이트될 수 있으며, 상기 구간 분할 과정 자체가 반복된다. 상기 구간 및 오프셋은 제한된 비트 정밀도를 가지며, 따라서 상기 구간이 특정한 값 아래로 떨어질 때마다 오버플로우를 방지하기 위해 재정규화(renormalization)가 필요할 수 있다. 상기 재정규화(renormalization)는 각각의 이진 심볼이 디코딩된 이후에 발생할 수 있다.
추정된 확률을 사용하거나 0.5의 동일한 확률을 가정하여 산술 코딩이 수행될 수 있다. 코딩된 이진 심볼을 우회하기 위해, 범위를 하위 구간으로 분할하는 단계는 시프트 연산을 통해 수행될 수 있으며, 반면에 컨텍스트 코딩된 이진 심볼들에 대해서는 룩업 테이블(look up table)이 필요할 수도 있다.
한편, 도 4를 참조하면, 상기 엔트로피 디코딩부(210)는 이진 산술 디코딩부(410), 컨텍스트(context) 모델링부(420) 및 역이진화부(430)를 포함한다.
이진 산술 디코딩부(410)는 이진 발생 확률 정보를 토대로 비트스트림을 복호하여 이진 형태의 bin을 출력한다.
컨텍스트(context) 모델링부(420)는 컨텍스트 메모리로부터 현재 비트스트림을 복호하는데 필요한 확률 정보를 선택하여 상기 이진 산술 디코딩부(410)에 제공한다. 상기 컨텍스트 메모리는 구문 요소의 bin 단위로 정의된 컨텍스트 모델을 포함한다. 여기서, 상기 컨텍스트 모델은 문맥에 따른 이진수 MPS와 LPS의 발생 확률 정보를 나타낸다.
상기 컨텍스트(context) 모델링부(420)는 복호할 구문 요소 정보를 통해 컨텍스트 메모리를 선택한 후, 그 안의 bin의 복호 순서인 bin 인덱스 정보를 통해 현재 구문 요소 복호에 필요한 확률 정보를 선택하여 출력할 수 있다.
역이진화부(430)는 상기 이진 산술 디코딩부(410)에서 복호된 이진수 형태의 bin을 입력 받아 이를 모아서 정수 형태의 구문 요소 값으로 변환 출력하는 역할을 한다.
도 5는 본 발명이 적용되는 일실시예로서, FSM(Finite State Machine)의 연속 동작(sequential operation)을 설명하기 위한 도면이다.
FSM(Finite State Machine)이란 제한된 상태들의 변화를 순차적으로 나타내는 장치를 의미하며, 예를 들어, 본 명세서에서는 회로 디자인에서 이용되는 Mealy Machines, 또는 Mealy Circuits 으로 알려진 것들이 적용될 수 있다. 이 경우, FSM은 일반적으로 6 투플(tuple)에 의해 정의될 수 있으며, 투플(tuple)은 요소들의 한정 순서화된 리스트(finite ordered list of elements)를 의미할 수 있다.
상기 도 5를 살펴보면, S는 제한 셋(finite set)의 상태들을 나타내고, S0는 초기 상태를 나타내며 S0 ∈ S 를 만족한다. Σ는 입력 알파벳의 제한 셋(finite set)을 나타내고, Λ는 출력 알파벳의 제한 셋(finite set)을 나타낸다고 하면, T는 상태 전이 함수(state transition function)를 나타내며, T : S × Σ → S 로 표현될 수 있고, P는 출력 함수를 나타내고, P : S × Σ → Λ 로 표현될 수 있다.
상기 도 5는 FSM의 연속된 동작을 나타내며, 여기서 Sk ∈ S, ik ∈ Σ, 그리고 Ok ∈ Λ를 만족한다. 상기 FSM은 동시 계산(concurrent computation)을 위해 이용되는 기본 요소들 중의 하나일 수 있다. 상기 FSM은 단순히 연속 과정을 나타내기 때문에, 상기 FSM에 의해 정의된 계산은 병렬화하기 어려우며, 이를 해결하기 위해서는 추정적 실행(speculative execution)이 필요하다.
본 발명이 적용되는 실시예에서는, 세그먼트 엔트로피 코딩(segment entropy coding)을 위해 데이터 모델을 나타내는 기능 유닛들을 FSM 기능 유닛들로 변경하여 엔트로피 코딩 시스템에 적용할 수 있다.
도 6은 본 발명이 적용되는 일실시예로서, 독립적이고 동등하게 분포된(independent and identically distributed, 이하 ‘i.i.d.’라 한다) 소스 심볼들에 대한 적응적인 코딩 시스템의 개략적인 블록도를 나타낸다.
엔트로피 코딩은, 사용되는 평균 비트수를 최소화하는 방식으로 손실 없이 정보를 표현하는 과정으로, 모든 형태의 압축의 기본적인 부분이다. 이는 다양한 방법에 의해 수행될 수 있지만, 기본적으로 그 계산 복잡도는 압축 효율이 이론적인 한계에 도달하는 만큼 증가하는 경향이 있다.
도 6은 엔트로피 코딩을 소개하는 기본적인 다이어그램을 나타낸다. 본 발명은 일련의 랜덤 데이터 심볼을 {d1, d2, d3, …}라 하고, 소스 알파벳 dk ∈ {0, 1, …, M-1}를 가정한다. 이들은, i.i.d.이며, 일련의 이진 심볼(비트) {b1, b2, b3, …}로 코딩된다. 이러한 모델은, i.i.d. 소스를 코딩하기 위한 최적의 방법으로 유용하다. 이후 논의하는 것처럼, 실제 데이터 소스들은 훨씬 더 복잡하지만, 본 발명은 더 복잡한 코딩 시스템에서 기본 요소로써 이들을 이용할 수 있다.
최적의 코드는 심볼 확률들의 셋 {p0, p1,…, pM-1}에 의해 결정된다. 최상의 압축을 위해, 코딩 심볼 dk 에 이용되는 평균 비트수는 다음 수학식 1과 같다.
수학식 1
Figure PCTKR2015012297-appb-M000001
일반적으로 코딩 심볼 dk 에 이용되는 평균 비트수는 정수가 아니다. 과거에는 각 심볼을 코딩하기 위해 정수 비트수를 이용함으로써 수행하기가 더욱 수월했기 때문에 실제 압축 응용에서 프리픽스 코드들(허프만, Golomb-Rice, Elias-Teuhola 등)이 이용되었다. 하지만, 점차 계산적으로는 더 복잡하지만 평균적으로 거의 정확하게 상기 수학식 1의 비트수로 표현할 수 있는 산술 코드들로 대체되고 있다.
도 6을 살펴보면, 본 발명이 적용되는 적응적인 코딩 시스템은 인코더(610)와 디코더(620)를 포함할 수 있다. 상기 인코더(610)는 데이터 모델링부(611) 및 엔트로피 인코딩부(613)를 포함하고, 상기 디코더(620)는 엔트로피 디코딩부(621) 및 데이터 모델링부(623)를 포함할 수 있다. 이때, 엔트로피 코딩의 병렬화를 위해 상기 적응적인 코딩 시스템의 각 기능 유닛들은 FSM일 수 있다.
상기 데이터 모델링부(611)는 소스 심볼(d1, d2, …)을 입력 받아 심볼 확률을 추정하고 동적으로 코드를 업데이트함으로써 데이터 모델을 관리할 수 있다.
상기 엔트로피 인코딩부(613)는 상기 데이터 모델링부(611)로부터 입력 받은 데이터와 코드 정보에 기초하여 엔트로피 인코딩을 수행하고, 압축된 데이터 비트 어레이(b1,b2,…)를 산출한다.
상기 엔트로피 디코딩부(621)는 상기 압축된 데이터 비트 어레이(b1,b2,…)를 입력 받아 엔트로피 디코딩을 수행하고, 엔트로피 디코딩된 데이터를 상기 데이터 모델링부(623)로 전송한다.
상기 데이터 모델링부(623)는 입력 받은 데이터에 기초하여 소스 심볼을 출력하고, 코드를 생성하여 상기 엔트로피 디코딩부(621)로 전송한다.
본 발명이 적용되는 다른 실시예에서는 코드들이 고정되어 있을 경우에도 코딩 과정을 코드 선택과 실제 코딩으로 분할할 수 있다.
본 발명의 일실시예에서, 비교적 간단하고 작은 상태 공간(state space)에 있는 FSM을 큰 스케일로 병렬화하는 것이 가능할 수 있는 반면, 높은 데이터 처리량을 얻고 압축을 최적으로 하기 위해서는, 매우 큰 스케일의 상태 공간(state space)에 있는 꽤 복잡한 FSM을 이용하여야 한다.
데이터 모델링을 위한 상태 장치(state machine)는 기본적으로 그 확률을 추정하기 위해 각 심볼들의 발생을 카운트하도록 되어 있다. 소스 알파벳 사이즈(M)에 기초하는 변환들이 존재하거나, 더 최근의 이벤트들에 대해 더 큰 가중치를 줄 필요가 있으나, 효율적인 압축을 위해서는 언제나 상태 공간(state space)이 충분히 커야 한다.
심볼당 정수 비트수로 코드를 이용하는 시스템에서, 엔트로피 코딩 FSM은 압축된 데이터 비트 어레이에서의 위치를 추적하는 상태를 갖는다. 산술 코더는, 어떤 의미에서 분수의 펜딩 비트들(fractional numbers of pending bits)을 나타내기 위해 이용되기 때문에 보다 큰 상태 공간(state space)을 갖는 FSM을 포함한다. 예를 들어, 1.732 및 0.647 비트들을 이용하는 일련의 심볼들을 코딩하기 위해, 코더는 첫번째 심볼 뒤에 1비트를 빼고 그 상태를 0.732 펜딩 비트를 나타내는 것으로 변경할 수 있다. 다음, 두번째 심볼 뒤에, 두번째 비트를 빼고 0.379 나머지 비트들을 나타내는 내부 상태(internal state)를 업데이트할 수 있다.
상기 도 6과 같은 단순한 시스템들이 더 복잡한 압축 시스템의 기본 블록들을 나타내는 반면, 실제 미디어 압축에서 많은 수의 FSM들 간의 상호 관계들(inter-relationship)이 존재한다. 따라서, 실질적인 목적을 위해, 본 발명은 FSM 상태 공간(state space)이 크고, 각 상태는 이미 인코딩된 또는 디코딩된 모든 심볼들에 의존한다고 가정하기로 한다.
본 발명이 적용되는 일실시예로서, 엔트로피 코딩은 효율적으로 데이터를 표현하는 것 외에 모든 구분된 데이터 요소들을 다중화 및 역다중화할 수 있다.
통상적으로, 신호가 처리될 때 많은 서브 요소들로 변환되고 분해되며, 자신의 코딩 필요 조건과 데이터 알파벳들 및 통계적 특성을 갖는다. 향상된 인코딩 방법은, 코딩 과정 중에 분해 및 변환 형태를 변경할 수 있고, 또한 각 세그먼트 내 신호 특성에 따라 파라미터들을 조정할 수 있다.
그리고, 압축을 최적화하기 위해, 압축된 데이터 비트 어레이에 추가되는 모든 정보는, 비록 사소한 것이라 할지라도, 엔트로피 코딩이 적용되어야 한다.
도 7은 본 발명이 적용되는 일실시예로서, 데이터 타입마다 다른 데이터 모델을 적용하여 압축을 수행하는 코딩 시스템의 개략적인 블록도를 나타낸다.
도 7의 인코더(710)는 크게 시퀀스 압축부(720) 및 엔트로피 인코딩부(716)를 포함하고, 상기 시퀀스 압축부(720)는 제1컨텍스트 모델 선택부(711), 데이터 모델링부(713) 및 제2컨텍스트 모델 선택부(715)를 포함할 수 있다.
그리고, 디코더(750)는 크게 시퀀스 해제부(760) 및 엔트로피 디코딩부(751)를 포함하고, 상기 시퀀스 해제부(760)는 제3컨텍스트 모델 선택부(752), 데이터 모델링부(754) 및 제4컨텍스트 모델 선택부(756)를 포함할 수 있다.
상기 도 7은 본 발명이 멀티플렉싱 과정을 어떻게 표현하는지를 나타낸다.
먼저, 인코더(710)의 수행 과정을 살펴보면, 시퀀스 압축부(720)는 인터리브드된 데이터 심볼들에 대해 m개의 다른 시퀀스{st1, st2, st3, . . .}를 형성하면서, 그 타입 t ∈ {1, 2, . . . , m}에 따라 조직화한다. 데이터 샘플들은 그 특정 확률 분포를 갖는 i.i.d.로 추정된다. 이러한 시퀀스들의 각각의 요소들은 원래의 순서(original order)에 따라 엔트로피 인코딩부(716)로 들어가나, 데이터 타입은 랜덤하게 변화할 수 있다. 상기 엔트로피 인코딩부(716)는 입력된 요소들에 대해 엔트로피 인코딩을 수행하여 압축된 데이터 비트 어레이를 출력할 수 있다.
한편, 제1컨텍스트 모델 선택부(711)는 코딩 컨텍스트에 기초하여 입력된 인터리브드 심볼들에 대해 대응되는 컨텍스트 모델을 선택할 수 있다.
데이터 모델링부(713)는 m개의 시퀀스 각각에 대응되는 데이터 모델링부를 포함할 수 있으며, 각각의 데이터 모델링부에서는 선택된 컨텍스트 모델에 기초하여 각 시퀀스에 대응되는 데이터 모델링을 수행할 수 있다.
제2컨텍스트 모델 선택부(715)는 코딩 컨텍스트에 기초하여 각 시퀀스마다 대응되는 데이터에 대해 적합한 컨텍스트 모델을 선택할 수 있다.
디코더(750)의 수행 과정을 살펴보면, 엔트로피 디코딩부(751)는 압축된 데이터 비트 어레이를 수신하여 엔트로피 디코딩을 수행할 수 있다.
시퀀스 해제부(760)는 엔트로피 디코딩된 데이터 비트 어레이의 압축을 해제할 수 있다. 싱기 시퀀스 해제부(760) 내의 제3컨텍스트 모델 선택부(752), 데이터 모델링부(754) 및 제4컨텍스트 모델 선택부(756)는 상기 인코더(710)의 시퀀스 압축부(720)에서 수행한 과정의 역과정을 수행하므로 상세한 설명은 생략하기로 한다.
인코더와 디코더 모두 압축 표준 신택스에 따라, 데이터 다른 타입들이 어떤 시퀀스 내에서 인코딩되는지를 정의하는 알고리즘을 공유한다. 여기서, 상기 알고리즘은 FSM으로 모델링될 수 있다. 그 순서가 인코딩되는 데이터에 의존적이기 때문에, 엄격한 인과 관계가 요구되어야 한다. 예를 들어, 인코더는 단지, 그 단계에 도달했을 때 디코더에서 또한 이용가능한 데이터에 기초하여 실행 통로(execution paths)를 선택할 수 있다.
본 발명은 데이터 모델과 코딩 컨텍스트 간의 1:1 관계가 있음을 가정한다. 예를 들어, 상기 코딩 컨텍스트는 데이터가 어떻게 생성되었는지 그리고 어떻게 코딩되는지에 대한 컨텍스트를 의미할 수 있다. 이는, 데이터 모델이 완전히 자기 포함적(self-contained)이고, 그 코딩 특성이 그들의 FSM 에 의해서만 정의된다는 것을 의미하기 때문에 중요하다. 여기서, 상기 코딩 특성은 압축 효율과 혼동되어서는 안되며, 이는 어떤 데이터 모델이 사용되는지에 의존할 수 있다.
본 발명의 일실시예에서는, 향상된 압축을 위해, 만약 다른 모델들이 서로 다른 컨텍스트 하에서 생성된다면 다른 모델들이 같은 타입의 코딩 데이터를 위해 이용될 수 있다. 이는, 심볼들이 다른 확률 셋을 가질 수 있기 때문이다. 이러한 가정하에, 도 7에 보여진 컨텍스트 모델 선택부들은 컨텍스트 스위칭(context switching)을 나타낸다.
도 8 및 도 9는 본 발명이 적용되는 일실시예들로서, 이진 산술 코딩을 위한 데이터 흐름을 설명하기 위한 코딩 시스템의 개략적인 블록도를 나타낸다.
현재 비디오 압축 표준 상의 엔트로피 코딩 구조를 분석하기 위해 이미 존재하는 것을 이용할 수 있다. 그것은 가장 중요하고 요구되는 타입을 나타낸다.
가장 중요한 엔트로피 코딩 요소들을 가진 다이어그램이 상기 도 8에서 보여진다.
도 8을 살펴보면, 인코더(800)는 데이터 소스 블록(810), 제1컨텍스트 모델 선택부(820), BIN(830), 시퀀스 압축부(840), 제2컨텍스트 모델 선택부(850) 및 BAC(Binary Arithmetic Coding) 인코딩부(860)를 포함할 수 있다. 여기서, 상기 시퀀스 압축부(840)는 도 7의 내용이 적용될 수 있다.
도9를 살펴보면, 디코더(900)는 BAC(Binary Arithmetic Coding) 디코딩부(910), 제3컨텍스트 모델 선택부(920), 시퀀스 해제부(930), REC(940), 제4컨텍스트 모델 선택부(950) 및 데이터 싱크(data sink) 블록(960)를 포함할 수 있다. 여기서, 상기 시퀀스 해제부(930)는 도 7의 내용이 적용될 수 있다.
먼저, 데이터 소스(data source) 블록(810)은 신호 분해 및 신호 변환 기능 유닛들에 대응될 수 있다. 즉, 상기 데이터 소스(data source) 블록(810)은 엔트로피 인코더에 들어가는 제어 및 신호 데이터를 생성하는 부분이다.
제1컨텍스트 모델 선택부(820)는 코딩 컨텍스트에 기초하여 다른 엔트로피 코딩 데이터 모델(coding contexts)을 선택함으로써 다중화 동작을 제어할수 있다.
비이진 알파벳(non-binary alphabets)으로부터 추출된 데이터는 BIN(830)을 통해 이진화 과정을 거치고, 시퀀스 압축부(840)를 통해 m개의 다른 시퀀스{st1, st2, st3, . . .}를 형성할 수 있다.
그리고, 제2컨텍스트 모델 선택부(850)에서는 코딩 컨텍스트에 기초하여 각 시퀀스마다 대응되는 데이터에 대해 적합한 컨텍스트 모델을 선택할 수 있다.
BAC(Binary Arithmetic Coding) 인코딩부(860)는 선택된 컨텍스트 모델에 기초하여 이진 산술 코딩을 수행함으로써 압축된 데이터 비트 어레이를 출력할 수 있다.
한편, 디코더(900) 내 BAC(Binary Arithmetic Coding) 디코딩부(910)는 압축된 데이터 비트 어레이를 수신하여 이진 산술 디코딩을 수행할 수 있다.
제3컨텍스트 모델 선택부(920), 시퀀스 해제부(930) 및 제4컨텍스트 모델 선택부(950)는 상기 인코더(800)의 제1컨텍스트 모델 선택부(820), 시퀀스 압축부(840) 및 제2컨텍스트 모델 선택부(850)에서 수행한 과정의 역과정을 수행하므로 상세한 설명은 생략하기로 한다.
또한, REC(940)에서는 인코더의 BIN(830)을 통해 이진화(binarization)된 데이터들을 복원하게 된다.
데이터 싱크(data sink) 블록(960)은 역변환 및 신호 복원 기능 유닛들에 대응될 수 있다. 상기 데이터 싱크(data sink) 블록(960)은 역다중화 및 적절한 데이터 모델을 선택하기 위해 필요한 규칙(rule)과 데이터를 인코더와 공유한다. 그리고, 상기 데이터 싱크(data sink) 블록(960)은 압축된 데이터 비트 어레이로부터 데이터를 추출하기 위해 필요한 정보를 엔트로피 디코더에 제공할 수 있다.
상기 도 8 및 도 9의 다이어그램은 다른 데이터 요소들이 어떻게 다중화 되는지를 보여준다.
비이진 알파벳(non-binary alphabets)으로부터 추출된 데이터는 이진화(binarization)라 불리는 과정을 거쳐야만 한다. 상기 도 8 및 도 9에서, 이는 BIN 블록들(BIN 1, BIN 2, … , BIN n)에 의해 수행되고, REC 블록들에 의해 원상태로 돌아온다. 여기서, 상기 각 BIN 블록은 다를 수 있다. 이는 상기 BIN 블록들(BIN 1, BIN 2, … , BIN n)이 다른 크기의 알파벳들에 대해 이용되고, 다른 이진화 전략을 이용하기 때문이다.
이후, 각 이진 심볼(bin)은, 도 6에서 보여진 동일한 과정이 이용될 수 있다. 예를 들어, 이진 산술 코더 전에, 확률 추정 및 코드 생성을 위해 각 이진 심볼(bin)은 데이터 모델로 전송될 수 있다.
한가지 중요한 부분은, 상기 도 8 및 도 9가, 시간적 데이터 흐름(temporal data flow) 대신에 논리적 관계를 보여줄 수 있다는 점이다. 예를 들어, 각 데이터 심볼은 이진 심볼의 변수를 생성한다. 게다가, 병렬 데이터 통로(parallel data path)로 보여지는 블록들은 다중화되고, 항상 연속적으로 수행될 수 있다.
본 발명은, 상기 도 8 및 도 9에서, 엔트로피 코딩이 인터 관련 FSM(inter-related finite state machines)의 4개 레이어들(모델 선택부, BIN/REC, 데이터 모델링부, BAC 인코딩부/디코딩부)에 의해 정의된다는 점을 확인할 수 있다.
상기 도 8 및 도 9에서, 컨텍스트 모델 선택부들은 데이터 타입과 코딩 컨텍스트의 하이레벨 다중화(High level multiplexing of data types and coding contexts) 를 수행할 수 있다.
BIN(830)과 REC(940)는 각각 모든 비이진 심볼들에 적용되는 이진화 및 복원(recovery) 과정들을 수행할 수 있다.
그리고, 데이터 모델링부는 이진 심볼들의 확률을 추정하는 데이터 모델링을 수행할 수 있다.
BAC 인코딩부 및 BAC 디코딩부는 압축된 데이터 비트들의 생성 또는 해석(interpretation)을 위한 엔트로피 코딩을 수행할 수 있다.
상기 도 8 및 도 9의 다이어그램은 다소 복잡한 것처럼 보이나, 이는 수많은 실행 디테일을 포함하고 압축 코딩 시스템에서 적용되는 아주 단순화된 버전이다.
계산 복잡도와 병렬화 옵션을 고려하여, 본 발명은 다음 사실들 또한 고려할 수 있다.
첫째, 과거의 복잡성 고려로 인해, 최근 표준에서는, 1이상의 연속 과정을 추가하면서, 데이터가 항상 이진 심볼들로 분할(split)된다. 이는 계산을 단순화하고 프로세서의 클록 주파수를 증가시키는 것이 더 저렴하였을 때 의미가 있었지만 본 발명에서는 그렇지 않을 수 있다.
둘째, 현재 데이터 처리량은 각 이진 심볼을 코딩하기 위한 고복잡도에 의해 제한되는 것이 아니라, 정보를 가장 작은 요소들로 분류 또는 분할하기 위해 필요한 전체 클록 사이클 수에 의해 제한된다. 그리고, 다중화되고 코딩된다.
셋째, FSM이 업데이트되는 Pseudo-random 방법은 어떤 요소들이 독립적인 실행을 할 수 있는지를 식별하기 어렵게 만든다. 다중화 순서가 압축된 데이터 포맷(신택스)에 의해 강제되기 때문에 이는 변경될 수 없다.
넷째, 작은 FSM 블록들 내에서 병렬화하는 것이다. 그러나, 작은 FSM 블록들은 개별적으로 비싼 비용을 소비하지 않아, 실질적인 성능 게인을 얻기 더 어려울 수 있다.
본 발명은 미디어 데이터를 독립적인 부분들로 분할하는 경우, 데이터 모델의 상태를 알지 못한다면 동일한 타입의 엔트로피 코딩을 수행할 수 없다. 대신 만약 데이터 모델을 리셋한다면, 데이터 모델들은 필요한 정보를 잃고, 결과적으로 압축 성능은 감소한다. 앞서 언급한 것처럼, 대안책은 추측 실행(speculative execution)을 하는 것이다. 그러나 이는 큰 상태 공간(state space)을 필요로 하고, 가치 있는 리소스(전력, cores, silicon 등)를 희생하게 된다는 문제가 있다.
도 10 및 도 11은 본 발명이 적용되는 일실시예들로서, 도 8 및 도 9와 같이 동일한 압축을 수행하는 다중화된 코딩 시스템의 개략적인 블록도를 나타낸다.
본 발명이 적용되는 병렬화 처리를 수행하기 위한 한가지 방법은, 새로운 압축 알고리즘을 디자인할 때 데이터 의존성을 제거함으로써 성취될 수 있다는 점을 이용하는 것이다. 그러나, 이는 압축에 불리한 영향을 줄 수 있다. 따라서, 본 발명에서는 필수적이지 않은 의존성을 찾아서 제거하는 방법을 제안한다.
다른 계산적 문제들에 있어서, 연대(associativity) 및 대체(commutativity)와 같은 특성들은 동작 순서를 변경하고 새로운 형태의 병렬적 실행을 생성하기 위해 이용된다. 엔트로피 코딩에서, 우리가 이용할 수 있는 특징은, 각 데이터 심볼이 최적의 비트수를 이용해서 표현되는 한, 최적의 압축이 이루어진다는 사실이다. 몇 가지 시맨틱 제한을 제외하고는, 정확히 그러한 비트들이 어디에 놓이는지는 중요하지 않다.
상기 도 10의 인코더(1000)는 크게 컨텍스트 모델 선택부(1010), MOD(1020), ENC(1030) 및 BUF(1040)을 포함할 수 있고, 도 11의 디코더(1100)는 DEC(1110), MOD(1120), BUF(1130) 및 컨텍스트 모델 선택부(1140)를 포함할 수 있다.
컨텍스트 모델 선택부(1010)는 코딩 컨텍스트에 기초하여 입력된 인터리브드 심볼들에 대해 대응되는 컨텍스트 모델을 선택할 수 있다.
선택된 컨텍스트 모델에 기초하여 형성된 각 시퀀스마다 MOD(1020)를 통해 데이터 모델링을 수행하고, ENC(1030)를 통해 시퀀스 압축을 수행한 후, BUF(1040)에 저장할 수 있다. 이와 같은 과정을 통해 압축된 데이터는 별개의 블록들 DAT 1, DAT 2, …, DAT m에 저장될 수 있다.
예를 들어, 도 7의 다중화된 압축이 도 10에서처럼 수행된다면, 모든 인코더에 의해 이용되는 비트들의 합은 하나의 인코더가 이용되는 것과 정확히 같다. 실질적으로 데이터 조직으로 인한 오버헤드 또는 풀 바이트(full bytes)로 파일을 생성하여야 하는 것과 같은 디테일때문에, 약간의 차이는 있지만 그러한 차이점들은 만약 압축된 데이터 블록들이 충분히 크다면 상대적으로 중요하지 않을 수 있다.
상기 도 10의 인코더(1000)는 하나의 압축된 데이터 어레이에 추가된 데이터 내 시퀀스와 데이터 모델 내 업데이트들 간의 의존성을 완전히 제거하였다.
본 발명은, 압축데이터가 분할된 데이터 세그먼트들 내에 저장되어 있어 이를 세그먼트 엔트로피 코딩(segment entropy coding)이라 부르는, 이러한 접근이 실행 순서를 정의하는데 훨씬더 유연성을 제공하고 보다 큰 스케일의 병렬화를 가능하게 할 수 있다.
예를 들어, 도 11의 디코더(1100)는 별개의 블록들 DAT 1, DAT 2, …, DAT m에 대해 DEC(1110)를 통해 각각 병렬 프로세서를 이용하여 모든 엔트로피 디코딩을 수행할 수 있고 MOD(1120)를 거쳐 BUF(1130)에 모든 데이터 심볼을 저장할 수 있다.
그리고, 컨텍스트 모델 선택부(1140)는 상기 인코더(1000)의 컨텍스트 모델 선택부(1010)에서 수행한 과정의 역과정을 수행하므로 상세한 설명은 생략하기로 한다.
이후, 디코더(1100)가 전체 미디어 압축해제를 수행하고 적절한 시퀀스 내 심볼들에 접근해야 할 때, 그 이진 표현으로부터 완전히 엔트로피 디코딩될 필요는 없지만 버퍼로부터 효율적으로 읽을 수 있다.
이후 본 발명은, 인코더가 데이터 심볼들을 버퍼링함으로써 병렬처리를 이용할 수 있음을 보여준다. 2가지 케이스 모두에서, 본 발명은 이러한 접근에 대한 동일한 형태의 트레이드 오프(trade-off)를 발견할 수 있다. 어떠한 압축 손실은 없지만 더 많은 메모리를 이용하는 비용으로, 엔트로피 코딩을 병렬화하는 방법을 찾을 수 있다.
향후 데이터 처리를 위한 지연은 점차 중요한 문제가 될 수 있기 때문에, 따라서, 본 발명은 캐시 동작을 고려하는 시스템을 디자인하고자 한다.
도 12 및 도 13은 본 발명이 적용되는 일실시예들로서, 병렬 처리를 수행하는 엔트로피 코딩 시스템의 개략적인 블록도를 나타낸다.
적응적 병렬 처리를 위해서는 병렬 상태를 결정하는 입력과 병렬 상태의 변화를 통한 FSM 설계가 필요하다. 병렬 처리의 상태를 결정하는 입력은 복호할 구문 요소로 분기를 발생시키면서 하나의 bin으로 구성된 구문 요소는 1, 분기를 발생시키지 않는 구문 요소는 0으로 정의할 수 있다. FSM의 출력은 복호할 구문 요소의 개수를 의미할 수 있다. 예를 들어, 병렬 연산될 컨텍스트 모델의 개수를 의미할 수 있다.
본 발명이 적용되는 상기 도 12 및 도 13의 인코딩/디코딩 시퀀스들은 세그먼트된 압축 데이터 어레이들을 생성하기 위해 재배열될 수 있다.
도 12의 인코더(1200)는 크게 컨텍스트 모델 선택부(1210), 직렬 처리부(1220) 및 병렬 처리부(1230)를 포함할 수 있다. 여기서, 상기 직렬 처리부(1220)는 컨텍스트 모델 선택부(1221), FSM(1222), 컨텍스트 모델 선택부(1223), ENC(1224) 및 BUF(1225)를 포함할 수 있고, 상기 병렬 처리부(1230)는 컨텍스트 모델 선택부(1231), BUF(1232), FSM(1233), ENC(1234) 및 BUF(1235)를 포함할 수 있다.
도 13의 디코더(1300)는 직렬 처리부(1310), 병렬 처리부(1320) 및 컨텍스트 모델 선택부(1330)를 포함할 수 있다. 여기서, 상기 직렬 처리부(1310)는 DEC(1311), 컨텍스트 모델 선택부(1312), FSM(1313), 컨텍스트 모델 선택부(1314)를 포함할 수 있고, 상기 병렬 처리부(1320)는 DEC(1321), FSM(1322), BUF(1323) 및 컨텍스트 모델 선택부(1324)를 포함할 수 있다.
세그먼트된 엔트로피 코딩을 위한 더 일반적인 시스템은 도 12 및 도 13에 도시된다. 상기 도 10 및 도 11의 기본 시스템과 유사하지만, 실질적인 응용에서 더 중요한 몇가지 요소들을 포함하고 있다. 따라서, 도 12 및 도 13에 도시된 기능 유닛들은 상기 도 10 및 도 11의 설명이 적용될 것이며, 이하에서는 다른 부분들만 기재하기로 한다.
도 12 및 도 13에서의 한가지 중요한 변경은, 데이터 모델링을 나타내는 블록들(MOD, the blocks representing data models)을 FSM(1313, 1322) 블록들로 변경했다는 점이다. 이는 해당 기술이 self-contained FSM의 어떤 타입에서도 잘 작동할 것이기 때문이다. 예를 들어, 상기 블록들은 이진화 과정뿐만 아니라 대응하는 이진 데이터 모델도 나타낼 수 있다.
병렬화를 필요로 하지 않는 너무 작은 세그먼트들을 피하기 위해, 본 발명은 베이스 세그먼트(직렬 처리부(1220, 1310))를 포함하고, 그 데이터는 일반적인 방법인 직렬 처리 방법(serial execution)으로 처리된다고 가정한다.
디코딩 요소들이 다른 세그먼트들로부터 데이터를 이용하여야 하므로, 디코더는 데이터 세그먼트들이 시작하는 위치들을 알아야 한다. 예를 들어, 이는 도 14에서처럼, 각 데이터 세그먼트의 시작에 대한 포인터를 포함하는 헤더를 가진 데이터 포맷을 이용하여 수행될 수 있다.
도 14는 본 발명이 적용되는 일실시예로서, 독립적인 세그먼트들로 분할된 압축 데이터 어레이의 구조를 나타낸다.
본 발명이 적용되는 세그먼트 데이터의 헤더는 각 세그먼트에 할당된 포인터(인덱스)를 포함할 수 있다.
상기 도 14를 살펴보면, 압축된 데이터 바이트 어레이는 맨 앞에 인덱스(INDEX)를 포함하고, 그 뒤로 세그먼트 데이터를 포함할 수 있다. 예를 들어, 상기 세그먼트 데이터는 DAT 1, DAT 2, … , DAT P로 표현될 수 있다.
즉, 각각의 ENC 블록을 통해 코딩되고 각각 BUF 블록에 저장되고, 이로부터 압축된 바이트 어레이를 생성할 수 있게 된다.
도 15 및 도 16은 본 발명이 적용되는 일실시예로서, 데이터 큐를 이용하여 병렬 처리를 수행하는 코딩 시스템의 개략적인 블록도를 나타낸다.
도 15의 인코더(1500)는 크게 컨텍스트 모델 선택부(1510), 직렬 처리부(1520) 및 병렬 처리부(1530)를 포함할 수 있다. 여기서, 상기 직렬 처리부(1520)는 컨텍스트 모델 선택부(1521), FSM(1522), 컨텍스트 모델 선택부(1523), ENC(1524) 및 BUF(1525)를 포함할 수 있고, 상기 병렬 처리부(1530)는 컨텍스트 모델 선택부(1531), QUE(1532), FSM(1533), ENC(1534) 및 BUF(1535)를 포함할 수 있다.
도 16의 디코더(1600)는 직렬 처리부(1610), 병렬 처리부(1620) 및 컨텍스트 모델 선택부(1630)를 포함할 수 있다. 여기서, 상기 직렬 처리부(1610)는 DEC(1611), 컨텍스트 모델 선택부(1612), FSM(1613), 컨텍스트 모델 선택부(1614)를 포함할 수 있고, 상기 병렬 처리부(1620)는 DEC(1621), FSM(1622), QUE(1623) 및 컨텍스트 모델 선택부(1624)를 포함할 수 있다.
도 15 및 도 16에 도시된 기능 유닛들은 상기 도 12 및 도 13의 설명이 적용될 것이며, 이하에서는 다른 부분들만 기재하기로 한다. 도 15 및 도 16에서의 한가지 중요한 변경은, BUF(1232, 1323) 블록들이 QUE(1632, 1623) 블록들로 변경했다는 점이다.
소프트웨어 내에서 수행되는 인코더/디코더의 경우, 몇 가지 코어를 포함하는 일반적인 프로세서를 이용하여, 쓰레드 기반 병렬화(thread-based parallelization)를 이용할 수 있다. 여기서, 중요한 점은, 쓰레드 생성(thread generation)이 비교적 비싸다는 점이고, 그래서 우리는 많은 데이터 세그먼트들보다 더 작은 쓰레드(threads) 수를 가질 수 있음을 가정한다. 이는 쓰레드 풀(thread pools)의 이용으로 가능할 수 있다.
예를 들어, 인코더에서는 다음과 같이 수행될 수 있다.
첫째, 인코더(1500)가 미디어를 처리하고, 인코딩될 데이터 심볼을 생성할 때, 베이스 세그먼트 내에 있는 것들은 즉시 인코딩되는 반면, 다른 세그먼트들 내에 있는 것들은 버퍼로 카피되기만 한다.
둘째, 미디어 처리가 끝난 후, 디코더는 버퍼된 데이터를 병렬적으로 인코딩하기 위해 다수의 쓰레드(thread)를 이용할 수 있다. 로드 밸런싱 알고리즘(load- balancing algorithm)이 세그먼트들을 다른 쓰레드(threads)에 할당하기 위해 이용될 수 있다.
셋째, 모든 데이터가 압축되었을 때, 인코더는 압축된 데이터 헤더를 생성하고, 하나의 데이터 어레이를 생성하기 위해 모든 세그먼트들을 연결할 수 있다.
디코딩의 쓰레드 레벨 병렬화(Thread-level parallelization)는 유사하게 수행되지만, 다른 순서에 따른다.
먼저, 디코더는 압축된 데이터 헤더를 읽고, 다수의 쓰레드(threads)를 이용하여 베이스 세그먼트를 제외한 모든 세그먼트들을 디코딩하기 시작한다. 그리고, 버퍼에 있는 디코딩 심볼들을 저장한다.
그리고 나서, 미디어 처리 및 압축 해제를 수행한다. 만약 필요한 데이터 심볼들이 베이스 세그먼트 내에 있다면, 그 순간 디코딩되고, 그렇지 않은 경우에는 대응되는 버퍼로부터 단순히 읽힌다.
이러한 접근의 한가지 문제는, 도 12 및 도 13에서와 같이, 병렬 처리부(1230) 내 버퍼들(BUF 1 내지 BUF m)을 병렬 통로(parallel path)로 결합하기 위해서는, 병렬로 처리될 모든 비압축 데이터를 저장하여야 한다. 이 데이터가 압축되지 않는다면, 압축된 데이터를 일시적으로 저장하기 위한 버퍼보다 더 많은 메모리를 필요로 한다.
상기 도 15 및 도 16을 살펴보면, 본 발명이 어떻게 과도한 데이터 버퍼링 문제를 해결할 수 있는지를 보여준다. 예를 들어, 큰 버퍼를 더 작은 데이터 큐(data queues)(QUE(1532))로 변경함으로써 수행될 수 있다.
인코딩/디코딩을 위해 디자인된 하드웨어에서, 본 발명은 쓰레드(threads)를 시작하거나 동기화하기 위한 동일한 높은 비용을 필요로 하지 않는다. 따라서, 데이터 플로우 접근을 채택할 수 있고, 여기서 인코더는 데이터 세그먼트에 할당되자마자 데이터의 넌 블록킹 처리(non-blocking processing)를 시작할 수 있거나, 후처리를 위한 숏 큐(short queue)를 추가할 수 있다. 만약 큐(queue)가 완전히 채워져(FULL) 있지 않으면, 데이터 생성을 위한 나머지 동작들은 병렬적으로 계속될 수 있다.
유사하게, 디코더(1600)에서, 하드웨어는 단지 데이터 세그먼트들을 디코딩하도록 시작되고, 전체 세그먼트를 디코딩하는 대신, 그것들이 FULL이 아닐때면 언제든지 디코딩된 심볼들을 큐(QUEUE)에 기입할 것이다. 이 경우, 큐(QUEUE)가 비어있지 않다면, 다른 동작들의 실행은 계속될 것이다.
메인 알고리즘(도 12 및 도 13의 데이터 소스 및 싱크)은 다른 데이터 세그먼트들(다른 코딩 컨텍스트로 인해, 동일한 타입의 데이터 조차도)로 가는 시퀀스들 내 데이터를 생성하거나 소비하기 때문에, 본 발명은 병렬 처리 동안 몇 개의 요소들을 갖는 것을 기대할 수 있고, 인코더에서는 FULL 때문에 또는 디코더에서는 빈 큐(QUEUE) 때문에 거의 직렬(serial)에 의지하는 실행을 하지 않을 수 있다.
도 17은 본 발명이 적용되는 일실시예로서, 병렬 처리를 이용하여 비디오 신호를 인코딩하는 방법을 나타내는 흐름도이다.
먼저, 인코더 내 데이터 심볼 생성부(미도시)는 인코딩될 데이터 심볼들을 생성할 수 있다(S1710).
상기 인코더는 베이스 세그먼트 내에 있는 제 1 데이터 심볼을 인코딩할 수 있다(S1720). 여기서, S1720단계는 직렬 처리부에 의해 수행될 수 있다.
상기 인코더는 다른 세그먼트 내에 있는 제 2 데이터 심볼을 버퍼에 카피할 수 있다(S1730). 여기서, 로드-밸런싱 알고리즘이 세그먼트들을 서로 다른 쓰레드(threads)에 할당하기 위해 이용될 수 있다. 다른 실시예로, 넌-블록킹 과정은 데이터 세그먼트에 할당될 때 시작될 수 있다.
상기 인코더는 상기 다른 세그먼트 내에 있는 제 2 데이터 심볼을 병렬적으로 인코딩할 수 있다(S1740). 여기서, S1730 및 S1740 단계는 병렬 처리부에 의해 수행될 수 있다.
이후, 데이터 비트 어레이 생성부(미도시)는 모든 데이터가 압축되었을 때 압축된 데이터 헤더를 생성할 수 있다. 이때, 상기 압축된 데이터 헤더는 각 세그먼트의 인덱스를 포함할 수 있다.
또한, 상기 데이터 비트 어레이 생성부는 하나의 데이터 어레이를 생성하기 위해 모든 세그먼트들을 연결할 수 있다.
도 18은 본 발명이 적용되는 일실시예로서, 병렬 처리에 기초하여 비디오 신호를 디코딩하는 방법을 나타내는 흐름도이다.
먼저, 디코더는 압축된 데이터 헤더 내에 있는 각 세그먼트를 읽을 수 있다(S1810). 그리고, 다수의 쓰레드(threads)를 이용하여 베이스 세그먼트를 제외한 모든 세그먼트들을 디코딩하고(S1820), 데이터 심볼들을 버퍼 내에 저장할 수 있다(S1830). 상기 단계들은 병렬 처리부에 의해 수행될 수 있다.
상기 디코더는 상기 데이터 심볼들에 기초하여 상기 비디오 신호를 디코딩할 수 있다(S1840).
이때, 만약 상기 데이터 심볼들이 상기 베이스 세그먼트 내에 존재하는 경우, 상기 베이스 세그먼트 내의 데이터 심볼들은 디코딩될 수 있다.
반면, 상기 데이터 심볼들이 상기 베이스 세그먼트 내에 존재하지 않는 경우에는 상기 데이터 심볼들은 대응되는 버퍼로부터 읽힐 수 있다.
상기 기술된 것과 같이, 본 발명에서 설명한 실시예들은 프로세서, 마이크로 프로세서, 컨트롤러 또는 칩 상에서 구현되어 수행될 수 있다. 예를 들어, 상기 도 1 내지 4, 도 6 내지 13 및 도 15 내지 16에서 도시한 기능 유닛들은 컴퓨터, 프로세서, 마이크로 프로세서, 컨트롤러 또는 칩 상에서 구현되어 수행될 수 있다.
또한, 본 발명이 적용되는 디코더 및 인코더는 멀티미디어 방송 송수신 장치, 모바일 통신 단말, 홈 시네마 비디오 장치, 디지털 시네마 비디오 장치, 감시용 카메라, 비디오 대화 장치, 비디오 통신과 같은 실시간 통신 장치, 모바일 스트리밍 장치, 저장 매체, 캠코더, 주문형 비디오(VoD) 서비스 제공 장치, 인터넷 스트리밍 서비스 제공 장치, 3차원(3D) 비디오 장치, 화상 전화 비디오 장치, 및 의료용 비디오 장치 등에 포함될 수 있으며, 비디오 신호 및 데이터 신호를 처리하기 위해 사용될 수 있다.
또한, 본 발명이 적용되는 처리 방법은 컴퓨터로 실행되는 프로그램의 형태로 생산될 수 있으며, 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 본 발명에 따른 데이터 구조를 가지는 멀티미디어 데이터도 또한 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 상기 컴퓨터가 판독할 수 있는 기록 매체는 컴퓨터로 읽을 수 있는 데이터가 저장되는 모든 종류의 저장 장치를 포함한다. 상기 컴퓨터가 판독할 수 있는 기록 매체는, 예를 들어, 블루레이 디스크(BD), 범용 직렬 버스(USB), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크 및 광학적 데이터 저장 장치를 포함할 수 있다. 또한, 상기 컴퓨터가 판독할 수 있는 기록 매체는 반송파(예를 들어, 인터넷을 통한 전송)의 형태로 구현된 미디어를 포함한다. 또한, 인코딩 방법으로 생성된 비트 스트림이 컴퓨터가 판독할 수 있는 기록 매체에 저장되거나 유무선 통신 네트워크를 통해 전송될 수 있다.
이상, 전술한 본 발명의 바람직한 실시예는, 예시의 목적을 위해 개시된 것으로, 당업자라면 이하 첨부된 특허청구범위에 개시된 본 발명의 기술적 사상과 그 기술적 범위 내에서, 다양한 다른 실시예들을 개량, 변경, 대체 또는 부가 등이 가능할 것이다.

Claims (16)

  1. 병렬 처리를 이용하여 비디오 신호를 인코딩하는 방법에 있어서,
    인코딩될 데이터 심볼들을 생성하는 단계;
    베이스 세그먼트 내에 있는 제 1 데이터 심볼을 인코딩하는 단계;
    다른 세그먼트 내에 있는 제 2 데이터 심볼을 버퍼에 카피하는 단계; 및
    상기 다른 세그먼트 내에 있는 제 2 데이터 심볼을 병렬적으로 인코딩하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    로드-밸런싱 알고리즘이 세그먼트들을 서로 다른 쓰레드(threads)에 할당하기 위해 이용되는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    모든 데이터가 압축되었을 때 압축된 데이터 헤더를 생성하는 단계를 더 포함하되,
    상기 압축된 데이터 헤더는 각 세그먼트의 인덱스를 포함하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    하나의 데이터 어레이를 생성하기 위해 모든 세그먼트들을 연결하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    넌-블록킹 과정은 데이터 세그먼트에 할당될 때 시작되는 것을 특징으로 하는 방법.
  6. 병렬 처리에 기초하여 비디오 신호를 디코딩하는 방법에 있어서,
    압축된 데이터 헤더 내에 있는 각 세그먼트를 읽는 단계;
    다수의 쓰레드(threads)를 이용하여 베이스 세그먼트를 제외한 모든 세그먼트들을 디코딩하는 단계;
    데이터 심볼들을 버퍼 내에 저장하는 단계; 및
    상기 데이터 심볼들에 기초하여 상기 비디오 신호를 디코딩하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  7. 제6항에 있어서,
    상기 데이터 심볼들이 상기 베이스 세그먼트 내에 존재하는 경우, 상기 베이스 세그먼트 내의 데이터 심볼들은 디코딩되는 것을 특징으로 하는 방법.
  8. 제6항에 있어서,
    상기 데이터 심볼들이 상기 베이스 세그먼트 내에 존재하지 않는 경우, 상기 데이터 심볼들은 대응되는 버퍼로부터 읽히는 것을 특징으로 하는 방법.
  9. 병렬 처리를 이용하여 비디오 신호를 인코딩하는 장치에 있어서,
    인코딩될 데이터 심볼들을 생성하는 데이터 심볼 생성부;
    베이스 세그먼트 내에 있는 제 1 데이터 심볼을 인코딩하는 직렬 처리부;
    다른 세그먼트 내에 있는 제 2 데이터 심볼을 버퍼에 카피하고, 상기 다른 세그먼트 내에 있는 제 2 데이터 심볼을 병렬적으로 인코딩하는 병렬 처리부
    를 포함하는 것을 특징으로 하는 장치.
  10. 제9항에 있어서,
    로드-밸런싱 알고리즘이 세그먼트들을 서로 다른 쓰레드(threads)에 할당하기 위해 이용되는 것을 특징으로 하는 장치.
  11. 제9항에 있어서,
    모든 데이터가 압축되었을 때 압축된 데이터 헤더를 생성하는 데이터 비트 어레이 생성부를 더 포함하되,
    상기 압축된 데이터 헤더는 각 세그먼트의 인덱스를 포함하는 것을 특징으로 하는 장치.
  12. 제11항에 있어서,
    상기 데이터 비트 어레이 생성부는 하나의 데이터 어레이를 생성하기 위해 모든 세그먼트들을 연결하는 것을 특징으로 하는 장치.
  13. 제9항에 있어서,
    넌-블록킹 과정은 데이터 세그먼트에 할당될 때 시작되는 것을 특징으로 하는 장치.
  14. 병렬 처리에 기초하여 비디오 신호를 디코딩하는 장치에 있어서,
    압축된 데이터 헤더 내에 있는 각 세그먼트를 읽고, 다수의 쓰레드(threads)를 이용하여 베이스 세그먼트를 제외한 모든 세그먼트들을 디코딩하고, 데이터 심볼들을 버퍼 내에 저장하는 병렬 처리부; 및
    상기 데이터 심볼들에 기초하여 상기 비디오 신호를 디코딩하는 디코딩부
    를 포함하는 것을 특징으로 하는 장치.
  15. 제14항에 있어서,
    상기 데이터 심볼들이 상기 베이스 세그먼트 내에 존재하는 경우, 상기 베이스 세그먼트 내의 데이터 심볼들은 디코딩되는 것을 특징으로 하는 장치.
  16. 제14항에 있어서,
    상기 데이터 심볼들이 상기 베이스 세그먼트 내에 존재하지 않는 경우, 상기 데이터 심볼들은 대응되는 버퍼로부터 읽히는 것을 특징으로 하는 장치.
PCT/KR2015/012297 2014-11-14 2015-11-16 대용량 병렬 처리를 위해 비디오 신호를 엔트로피 인코딩 또는 엔트로피 디코딩하는 방법 및 장치 WO2016076677A1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/526,847 US10455244B2 (en) 2014-11-14 2015-11-16 Method and device for entropy encoding or entropy decoding video signal for high-capacity parallel processing
KR1020177013845A KR102123620B1 (ko) 2014-11-14 2015-11-16 대용량 병렬 처리를 위해 비디오 신호를 엔트로피 인코딩 또는 엔트로피 디코딩하는 방법 및 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201462079564P 2014-11-14 2014-11-14
US62/079,564 2014-11-14

Publications (1)

Publication Number Publication Date
WO2016076677A1 true WO2016076677A1 (ko) 2016-05-19

Family

ID=55954678

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2015/012297 WO2016076677A1 (ko) 2014-11-14 2015-11-16 대용량 병렬 처리를 위해 비디오 신호를 엔트로피 인코딩 또는 엔트로피 디코딩하는 방법 및 장치

Country Status (3)

Country Link
US (1) US10455244B2 (ko)
KR (1) KR102123620B1 (ko)
WO (1) WO2016076677A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018182183A1 (ko) * 2017-03-31 2018-10-04 주식회사 칩스앤미디어 향상된 산술부호화를 제공하는 영상 처리 방법, 그를 이용한 영상 복호화, 부호화 방법 및 그 장치
CN113767641A (zh) * 2019-09-28 2021-12-07 腾讯美国有限责任公司 分段数据流处理的先进先出功能
CN114928747A (zh) * 2022-07-20 2022-08-19 阿里巴巴(中国)有限公司 基于av1熵编码的上下文概率处理电路、方法及相关装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10097833B2 (en) * 2014-12-26 2018-10-09 Intel Corporation Method and system of entropy coding using look-up table based probability updating for video coding
JP7067095B2 (ja) * 2018-02-07 2022-05-16 京セラドキュメントソリューションズ株式会社 画像形成装置及び画像形成プログラム
US10587284B2 (en) * 2018-04-09 2020-03-10 International Business Machines Corporation Multi-mode compression acceleration
WO2023138687A1 (en) * 2022-01-21 2023-07-27 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for data processing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006525731A (ja) * 2003-05-02 2006-11-09 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 新標準への移行をサポートする多階層符号化
JP2007214998A (ja) * 2006-02-10 2007-08-23 Fuji Xerox Co Ltd 符号化装置、復号化装置、符号化方法、復号化方法、及びプログラム
KR20110004770A (ko) * 2009-07-08 2011-01-14 삼성에스디아이 주식회사 이차전지 및 그 이차전지의 제조방법
KR20130085389A (ko) * 2012-01-19 2013-07-29 삼성전자주식회사 서브영역별로 엔트로피 부호화의 병렬 처리가 가능한 비디오 부호화 방법 및 장치, 서브영역별로 엔트로피 복호화의 병렬 처리가 가능한 비디오 복호화 방법 및 장치
KR20130086004A (ko) * 2012-01-20 2013-07-30 삼성전자주식회사 병렬 처리가 가능한 엔트로피 부호화 방법 및 장치, 병렬 처리가 가능한 엔트로피 복호화 방법 및 장치

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141446A (en) * 1994-09-21 2000-10-31 Ricoh Company, Ltd. Compression and decompression system with reversible wavelets and lossy reconstruction
JP3807342B2 (ja) * 2002-04-25 2006-08-09 三菱電機株式会社 デジタル信号符号化装置、デジタル信号復号装置、デジタル信号算術符号化方法、およびデジタル信号算術復号方法
KR100746007B1 (ko) * 2005-04-19 2007-08-06 삼성전자주식회사 엔트로피 코딩의 컨텍스트 모델을 적응적으로 선택하는방법 및 비디오 디코더
US7245241B2 (en) * 2005-11-25 2007-07-17 Microsoft Corporation Image coding with scalable context quantization
US8542748B2 (en) * 2008-03-28 2013-09-24 Sharp Laboratories Of America, Inc. Methods and systems for parallel video encoding and decoding
US8494059B1 (en) 2008-07-29 2013-07-23 Marvell International Ltd. Buffer controller
US7932843B2 (en) * 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
KR101038531B1 (ko) * 2009-06-25 2011-06-02 한양대학교 산학협력단 복호화시 병렬처리가 가능한 영상 부호화 장치 및 방법, 그리고 병렬처리가 가능한 영상 복호화 장치 및 방법
US8379718B2 (en) * 2009-09-02 2013-02-19 Sony Computer Entertainment Inc. Parallel digital picture encoding
KR101631944B1 (ko) 2009-10-30 2016-06-20 삼성전자주식회사 복호화 가속화를 위한 엔트로피 부호화 방법과 그 장치 및 엔트로피 복호화 방법과 그 장치
KR20110066523A (ko) 2009-12-11 2011-06-17 한국전자통신연구원 스케일러블 비디오 디코딩 장치 및 방법
KR20120004319A (ko) 2010-07-06 2012-01-12 한국전자통신연구원 병렬적으로 엔트로피 부호화 및 복호화를 수행하는 장치 및 방법
US8761240B2 (en) * 2010-07-13 2014-06-24 Blackberry Limited Methods and devices for data compression using context-based coding order
US8344917B2 (en) * 2010-09-30 2013-01-01 Sharp Laboratories Of America, Inc. Methods and systems for context initialization in video coding and decoding
US9215473B2 (en) * 2011-01-26 2015-12-15 Qualcomm Incorporated Sub-slices in video coding
CN105871766B (zh) * 2015-01-23 2021-02-23 北京三星通信技术研究有限公司 干扰删除方法、干扰删除辅助方法、以及干扰删除装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006525731A (ja) * 2003-05-02 2006-11-09 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 新標準への移行をサポートする多階層符号化
JP2007214998A (ja) * 2006-02-10 2007-08-23 Fuji Xerox Co Ltd 符号化装置、復号化装置、符号化方法、復号化方法、及びプログラム
KR20110004770A (ko) * 2009-07-08 2011-01-14 삼성에스디아이 주식회사 이차전지 및 그 이차전지의 제조방법
KR20130085389A (ko) * 2012-01-19 2013-07-29 삼성전자주식회사 서브영역별로 엔트로피 부호화의 병렬 처리가 가능한 비디오 부호화 방법 및 장치, 서브영역별로 엔트로피 복호화의 병렬 처리가 가능한 비디오 복호화 방법 및 장치
KR20130086004A (ko) * 2012-01-20 2013-07-30 삼성전자주식회사 병렬 처리가 가능한 엔트로피 부호화 방법 및 장치, 병렬 처리가 가능한 엔트로피 복호화 방법 및 장치

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018182183A1 (ko) * 2017-03-31 2018-10-04 주식회사 칩스앤미디어 향상된 산술부호화를 제공하는 영상 처리 방법, 그를 이용한 영상 복호화, 부호화 방법 및 그 장치
US11109032B2 (en) 2017-03-31 2021-08-31 Electronics And Telecommunications Research Institute Method for processing image providing improved arithmetic encoding, method for decoding and encoding image using same, and apparatus for same
CN114363616A (zh) * 2017-03-31 2022-04-15 明达半导体股份有限公司 图像解码/编码方法和存储介质
CN114422786A (zh) * 2017-03-31 2022-04-29 明达半导体股份有限公司 图像解码/编码方法和存储介质
CN114422785A (zh) * 2017-03-31 2022-04-29 明达半导体股份有限公司 图像解码/编码方法和存储介质
US11706418B2 (en) 2017-03-31 2023-07-18 Electronics And Telecommunications Research Institute Method for processing image providing improved arithmetic encoding, method for decoding and encoding image using same, and apparatus for same
CN113767641A (zh) * 2019-09-28 2021-12-07 腾讯美国有限责任公司 分段数据流处理的先进先出功能
CN114928747A (zh) * 2022-07-20 2022-08-19 阿里巴巴(中国)有限公司 基于av1熵编码的上下文概率处理电路、方法及相关装置
CN114928747B (zh) * 2022-07-20 2022-12-16 阿里巴巴(中国)有限公司 基于av1熵编码的上下文概率处理电路、方法及相关装置

Also Published As

Publication number Publication date
US10455244B2 (en) 2019-10-22
KR102123620B1 (ko) 2020-06-26
US20170359591A1 (en) 2017-12-14
KR20170075759A (ko) 2017-07-03

Similar Documents

Publication Publication Date Title
WO2016076677A1 (ko) 대용량 병렬 처리를 위해 비디오 신호를 엔트로피 인코딩 또는 엔트로피 디코딩하는 방법 및 장치
WO2017086765A2 (ko) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
WO2018128322A1 (ko) 영상 처리 방법 및 이를 위한 장치
WO2020071873A1 (ko) Mpm 리스트를 사용하는 인트라 예측 기반 영상 코딩 방법 및 그 장치
WO2014163248A1 (ko) 동영상 처리 방법 및 장치
WO2018190594A1 (ko) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
WO2020009556A1 (ko) 변환에 기반한 영상 코딩 방법 및 그 장치
WO2019221472A1 (ko) 참조 샘플을 이용하는 비디오 신호 처리 방법 및 장치
WO2017065592A1 (ko) 비디오 신호의 인코딩, 디코딩 방법 및 그 장치
WO2013162249A1 (ko) 비디오 인코딩 방법, 비디오 디코딩 방법 및 이를 이용하는 장치
WO2020076064A1 (ko) Mpm 리스트를 사용하는 인트라 예측 기반 영상 코딩 방법 및 그 장치
WO2018207956A1 (ko) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
WO2020071879A1 (ko) 변환 계수 코딩 방법 및 그 장치
WO2021040319A1 (ko) 비디오/영상 코딩 시스템에서 라이스 파라미터 도출 방법 및 장치
WO2019240539A1 (ko) Cabac에 기반한 엔트로피 코딩 방법 및 그 장치
WO2018190595A1 (ko) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
WO2020185039A1 (ko) 레지듀얼 코딩 방법 및 장치
WO2016056709A1 (ko) 이미지 재부호화 방법 및 그 장치
WO2021040488A1 (ko) 팔레트 모드에서의 이스케이프 이진화 기반 영상 또는 비디오 코딩
WO2021071187A1 (ko) 비디오/영상 코딩 시스템에서 라이스 파라미터 도출 방법 및 장치
WO2020180044A1 (ko) Lmcs에 기반한 영상 코딩 방법 및 그 장치
WO2020145798A1 (ko) 변환 스킵 플래그를 이용한 영상 코딩 방법 및 장치
WO2020071856A1 (ko) 변환 계수 코딩 방법 및 장치
WO2020071672A1 (ko) 움직임 벡터를 압축하는 방법 및 그 장치
WO2018186510A1 (ko) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 15526847

Country of ref document: US

ENP Entry into the national phase

Ref document number: 20177013845

Country of ref document: KR

Kind code of ref document: A

122 Ep: pct application non-entry in european phase

Ref document number: 15858957

Country of ref document: EP

Kind code of ref document: A1