WO2020153512A1 - 비디오 신호의 처리 방법 및 장치 - Google Patents
비디오 신호의 처리 방법 및 장치 Download PDFInfo
- Publication number
- WO2020153512A1 WO2020153512A1 PCT/KR2019/000942 KR2019000942W WO2020153512A1 WO 2020153512 A1 WO2020153512 A1 WO 2020153512A1 KR 2019000942 W KR2019000942 W KR 2019000942W WO 2020153512 A1 WO2020153512 A1 WO 2020153512A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- packet
- information
- packets
- entropy
- entropy decoder
- Prior art date
- Legal status (The legal status 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 status listed.)
- Ceased
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/188—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/1883—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/1887—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a variable length codeword
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/436—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/434—Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
- H04N21/4343—Extraction or processing of packetized elementary streams [PES]
Definitions
- the present invention relates to a video signal processing method and apparatus, and more particularly, to a method and apparatus for parallel processing of a video signal using a plurality of entropy decoder engines.
- HDR high dynamic range
- UHD Ultra High Definition
- 3840x2160 or 4096x2160 3840x2160 or 4096x2160
- 8K UHD resolution 8K UHD resolution
- wireless communication systems e.g., 3GPP Long Term Evolution (LTE), LTE Advanced (LTE-A), LTE-A Pro, 5G or NR (New Radio), WiFi (IEEE 802.11), etc.
- wired communication systems e.g.
- VVC Versatile Video Coding
- H.265/HEVC High Efficiency Video Coding
- H.264/AVC Advanced Video Coding
- JPEG-Extra Speed and Extra Small ISO/IEC 21122
- JPEG-XS Joint Photographic Experts Group
- ISO/IEC 21122 Joint Photographic Experts Group
- the JPEG-XS standard is a video compression technology optimized for real-time video streaming over wireless (eg, 5G, NR, WiFi systems) or wired (eg, Ethernet). It efficiently encodes/decodes video signals based on the JPEG-XS standard. Discussion of methods and devices for the following has been actively conducted.
- An object of the present invention is to provide a method and apparatus for improving the entropy decoding performance.
- Another object of the present invention is to provide a packet demultiplexing method and an apparatus therefor which are advantageous for parallel processing.
- Another object of the present invention is to provide an entropy decoding method and an apparatus therefor that can efficiently parallel-process bitplane count information encoded based on a vertical prediction mode.
- an apparatus for decoding a bitstream for a video signal comprising at least one precision comprising: a first entropy decoder engine; A second entropy decoder engine; And demultiplexing the packets of the current pressing among the at least one presenting into first plurality of packets and second plurality of packets, transmitting the first plurality of packets to the first entropy decoder engine, and A demultiplexer configured to transmit a second plurality of packets to the second entropy decoder engine, wherein the first plurality of packets and the second plurality of packets are respectively the first entropy decoder engine and the first Entropy decoded in parallel by a 2 entropy decoder engine, the first plurality of packets include packet 0, packet 1, packet 4, packet 6, packet 8, and the second plurality of packets are packet 2, packet 3 , Packet 5, packet 7, packet 9.
- a method for decoding a bitstream for a video signal comprising at least one precision comprising a first entropy decoder engine and a second entropy decoder engine Demultiplexing the packets of the current present among the at least one presenting into a first plurality of packets and a second plurality of packets; And entropy decoding the first plurality of packets and the second plurality of packets in parallel, wherein the first plurality of packets and the second plurality of packets are respectively the first entropy decoder engine and Entropy decoded in parallel by the second entropy decoder engine, the first plurality of packets includes packet 0, packet 1, packet 4, packet 6, packet 8, and the second plurality of packets is packet 2, It may include packet 3, packet 5, packet 7, packet 9.
- the parallel entropy decoding in parallel, entropy decoding for the packets 0 and 1 by the first entropy decoder engine and entropy decoding for the packets 2 and 3 by the second entropy decoder engine in parallel.
- entropy decoding for the packet 4 by the first entropy decoder engine and entropy decoding for the packet 5 by the second entropy decoder engine in parallel and to the first entropy decoder engine.
- Entropy decoding for the packet 6 by and entropy decoding for the packet 7 by the second entropy decoder engine in parallel, and entropy decoding for the packet 8 by the first entropy decoder engine and the second It may include performing entropy decoding for the packet 9 in parallel by the 2 entropy decoder engine.
- an apparatus for decoding a bitstream for a video signal including at least one precision comprising: a first entropy decoder engine; A second entropy decoder engine; A third entropy engine; A fourth entropy engine; And demultiplexing the packets of the current present among the at least one presenting into a first plurality of packets, a second plurality of packets, a third plurality of packets, and a fourth plurality of packets, and the first plurality.
- a method for decoding a bitstream for a video signal comprising at least one precision comprising a first entropy decoder engine, a second entropy decoder engine, It is performed by a decoding apparatus including a 3 entropy engine and a 4th entropy engine, and among the at least one presenting, packets of the current presenting are first plurality of packets, second plurality of packets, and third plurality of Demultiplexing the packets into a fourth plurality of packets; And entropy decoding the first plurality of packets, the second plurality of packets, the third plurality of packets, and the fourth plurality of packets in parallel, wherein the first plurality of packets are included.
- the second plurality of packets, the third plurality of packets, and the fourth plurality of packets are respectively the first entropy decoder engine, the second entropy decoder engine, the third entropy engine, and the fourth entropy.
- the first plurality of packets includes packet 0, packet 1, packet 6, the second plurality of packets includes packet 2, packet 3, packet 7, and the first 3
- the plurality of packets may include packet 4 and packet 8
- the fourth plurality of packets may include packet 5 and packet 9.
- the parallel entropy decoding includes: entropy decoding for the packets 0 and 1 by the first entropy decoder engine, entropy decoding for the packets 2 and 3 by the second entropy decoder engine, and the third Entropy decoding for the packet 4 by the entropy decoder engine, entropy decoding for the packet 5 by the fourth entropy decoder engine, and entropy for the packet 6 by the first entropy decoder engine.
- Decoding entropy decoding for the packet 7 by the second entropy decoder engine, entropy decoding for the packet 8 by the third entropy decoder engine, and entropy decoding for the packet 9 by the fourth entropy decoder engine. It may include performing in parallel.
- the packets 0 and 1 include code groups corresponding to the left half of the first line of the current pressing, and the packets 2 and 3 correspond to the left half of the second line of the current pressing.
- the code group includes code groups
- the packet 4 includes code groups corresponding to the right half of the first line of the current pressing, and the packet 5 code group corresponding to the left half of the third line of the current pressing.
- the packet 6 includes code groups corresponding to the right half of the third line of the current pressing
- the packet 7 includes code groups corresponding to the right half of the second line of the current pressing.
- the packet 8 may include code groups corresponding to the left half of the fourth line of the current pressing
- the packet 9 may include code groups corresponding to the right half of the fourth line of the current pressing. have.
- each entropy decoder engine may be configured to output one code group for each clock in a pipelined manner based on a clock signal.
- the one code group includes four quantization index information, but the quantization index information may represent quantized wavelet coefficient information.
- the entropy decoding obtains residual information from a bit plane count subpacket of a packet including a current code group, and a predicted value based on bit plane count information of an upper line of the current code group ( obtaining a predictor) and obtaining bit plane count information of the current code group based on the residual information and the predicted value.
- the residual information may be obtained based on a look-up table including a variable length code.
- the look-up table may include a 32x1 multiplexer.
- the entropy decoding further comprises acquiring code information and quantization index size information from a data subpacket of a packet including the current code group based on the bit plane count information of the current code group.
- the sign information indicates the sign of the wavelet coefficient information
- the quantization index size information can indicate the absolute value of the quantized wavelet coefficient information.
- the entropy decoding obtains quantization index size information from a data subpacket including the current code group based on bit plane count information of the current code group, and based on the quantization index size information.
- the method may further include acquiring code information from a code subpacket including a current code group, wherein the code information indicates a code of wavelet coefficient information, and the quantization index size information can represent an absolute value of quantized wavelet coefficient information. .
- the apparatus may further include an inverse quantizer configured to restore wavelet coefficient information by performing inverse quantization based on entropy decoded data.
- an inverse quantizer configured to restore wavelet coefficient information by performing inverse quantization based on entropy decoded data.
- the apparatus may further include an inverse transformer configured to reconstruct an sample by performing inverse discrete wavelet transformation based on the wavelet coefficient information.
- an inverse transformer configured to reconstruct an sample by performing inverse discrete wavelet transformation based on the wavelet coefficient information.
- entropy decoding performance can be improved by the number of entropy decoder engines.
- the amount of data processed by each entropy decoder engine can be matched to a similar level, which can be more advantageous for parallel processing.
- the vertical prediction mode is used. Based on the encoded bit plane count information, it can be efficiently processed in parallel.
- FIG. 1 illustrates a chroma subsampling format
- FIG. 2 illustrates a band generated by applying a wavelet transform.
- FIG. 6 illustrates a bitstream according to the JPEG-XS standard.
- FIG. 7 illustrates a flowchart of a method for decoding a bitstream for a video signal.
- FIG. 8 illustrates a flowchart of an entropy decoding method.
- FIG. 14 illustrates a block diagram of a decoding apparatus according to the present invention.
- a video signal refers to a sequence of pictures or pictures that are perceptible to the eye, but a video signal may be used herein to refer to a sequence of bits representing a coded picture.
- a sequence of bits representing a coded picture may be referred to as a bitstream for a video signal, and may be referred to as a bitstream or video signal for short. Bitstreams can be mixed with codestreams.
- a picture may refer to an array of samples, and may be used interchangeably with terms such as a frame and an image. More specifically, a picture may refer to a two-dimensional array or two-dimensional sample array of samples. In this specification, pictures and images may be mixed.
- the sample may refer to a minimum unit constituting a picture, and may be referred to as a pixel, picture element, or pel.
- the picture may include a luminance component and/or a color difference component.
- the luminance component may be used interchangeably with terms such as luma component or luma signal or luma
- the chrominance component may include a chrominance component or a chroma component or a chrominance signal or a chroma signal or chroma. It can be used interchangeably with the term.
- coding may be used to refer to encoding, or encoding/decoding may be referred to collectively.
- a hexadecimal number is expressed by adding a prefix of “0x” to distinguish it from a decimal number.
- 0xFF represents a 1-byte hexadecimal number having a value of FF.
- the present invention is described based on the JPEG-XS standard, the principles of the present invention are not limited to the JPEG-XS standard, and can be applied to other video compression technologies that are the same/similar to the JPEG-XS standard.
- the present invention is mainly described with respect to the decoding process, the encoding process may be performed in the reverse order of the decoding process described herein, and the encoding process corresponds to steps constituting the decoding process described herein. It will be understood that it may include.
- FIG. 1 illustrates a chroma subsampling format.
- 1(a) illustrates the 444 format
- FIG. 1(b) illustrates the 422 format.
- the picture may have an RGB color format and a YCbCr color format.
- a picture having an RGB color format includes an R (Red) component, a G (Green) component, and a B (Blue) component, and can be converted into a YCbCr color format for encoding/decoding.
- a picture having a YCbCr color format includes a luma component and two chroma components (Cb, Cr).
- the conversion method between the RGB format and the YCbCr format is widely known in the field of image processing technology, and thus detailed description thereof will be omitted.
- Each component (luma component, chroma component) of a picture having a YCbCr format may be represented by a two-dimensional array of samples arranged along a rectangular sampling grid.
- the chroma component may have the same dimensions as the luma component, but since the human eye is less sensitive to the luma component than the chroma component, the samples of the chroma component can be subsampled to reduce the information amount of the chroma signal.
- a luma sample and a chroma sample may be sampled on the same sampling grid, and in this case, the luma component and the chroma component of the picture may have the same dimension.
- This chroma subsampling format may be referred to as a 444 chroma subsampling format or 444 format, or may be referred to as a 4:4:4 chroma subsampling format or a 4:4:4 format.
- the luma samples are sampled in the same manner as in FIG. 1(a), but a 2:1 subsampling may be applied in a horizontal direction to samples of a chroma component.
- luma samples are sampled on two sample grids 120, but chroma samples can only be sampled on the left grid of the two sample grids 120.
- This chroma subsampling format may be referred to as a 422 chroma subsampling format or 422 format, or may be referred to as a 4:2:2 chroma subsampling format or a 4:2:2 format.
- the horizontal dimension of the chroma component of the picture is half the horizontal size of the luma component, but the vertical dimension of the chroma component is the same as the vertical size of the luma component.
- FIG. 2 illustrates a band generated by applying a wavelet transform.
- Discrete wavelet transform applies an image to at least one high frequency band and at least one high frequency band by applying a lowpass filter and/or a highpass filter in the horizontal and/or vertical direction to samples of the image. It refers to a process of decomposition into a low frequency band, and may be referred to as a wavelet transform or transform in this specification.
- the low-band and/or high-pass filter applied for wavelet transformation may be referred to as a wavelet filter.
- the result generated by performing wavelet transform on samples constituting the image in the spatial domain is referred to as wavelet coefficient information, and may be used interchangeably with terms such as transform coefficient information, wavelet coefficient, and transform coefficient in this specification. .
- Inverse discrete wavelet transform refers to a process of restoring image samples or applying a wavelet filter to interpolate at least one high-frequency band and at least one low-frequency band, and then combining the image samples into one band. It may be referred to simply as inverse wavelet transform or inverse transform. The same wavelet filter can be used for transform and inverse transform.
- images can be horizontally decomposed into 2 to 6 bands by applying wavelet transformations 1 to 5 in the horizontal direction, and wavelet transformations 0 to 2 in the vertical direction are applied. Images can be vertically decomposition into one to three bands. The frequency of decomposition into bands by applying a wavelet filter in the horizontal or vertical direction is referred to as a decomposition level or decomposition depth.
- H refers to a high frequency band generated by applying a wavelet filter
- L refers to a low frequency band generated by excluding a high frequency band
- subscripts indicate a resolution level.
- the preceding character indicates the horizontal direction, and the latter character indicates the vertical direction.
- a vertical wavelet transform is applied to an original image to decompose the original image into LH 0,1 band and LL 0,1 band, and then a horizontal wavelet transform is applied to the LL 0,1 band.
- the LL band of LL 0,1 1,1 1,1 band and HL band decomposition in, and the LH 0,1 band by applying the wavelet transform in the horizontal band LH LH 0,1 1,1 1,1 band and HH It can be disassembled into bands.
- horizontal wavelet transform is applied to the LL 3,2 band to be decomposed into HL 4,2 band and LL 4,2 band
- horizontal wavelet transform is applied to the LL 4,2 band to apply the HL 5,2 band and the LL. It can be resolved into 5 or 2 bands.
- samples in the spatial domain can be reconstructed from wavelet coefficients in the frequency domain by synthesizing the bands in the reverse order of the above-described process.
- the size of the band generated by applying the wavelet transform may be half the size of the original image or the previous band. Accordingly, the dimension (ie, the number of wavelet coefficients constituting the width and height of the entire bands) formed by concatenating each band in the frequency domain is the size of the image in the spatial domain (ie, the width and the width of the image). It may be the same as the number of samples constituting the height.
- one row of wavelet coefficients in LL 5,2 band, HL 5,2 band, HL 4,2 band, HL 3,2 band, HL 2,2 band, LH 2,2 band, HH 2,2 band Can correspond to four rows of samples in the spatial domain, and two rows of wavelet coefficients in the HL 1,1 band, LH 1,1 band, and HH 1,1 band correspond to the same two rows of samples in the spatial domain. Can be countered.
- two rows of wavelet coefficients in the HL 1,1 band, the LH 1,1 band, and the HH 1,1 band may contribute to restoring the same spatial region.
- Spatial region refers to the region of samples having a specific size in the spatial domain.
- wavelet coefficient information generated through wavelet transformation may be grouped in a frequency unit in a precision unit. Precious refers to a collection of wavelet coefficients of all bands contributing to a specific spatial region (reconstruction) of an image.
- the width of the pressing may be set equal to the width of the image, or may be set to a multiple of 8.
- Information indicating the width of the prefix may be included in the picture header of the bitstream (for example, see FIG. 6 ), and the decoder may identify the width of the prefix by parsing the picture header.
- the thick line represents the boundary of the pressing
- the thin line represents the boundary of the band constituting the pressing.
- the width of the pressing is set equal to the width Wf of the image, but the present invention is not limited thereto.
- Wavelet filter type ⁇ may be allocated to each band, and an index of each band may be given based on the wavelet filter type ⁇ .
- Table 1 illustrates the value of the wavelet filter type for the bands illustrated in FIG. 2, and the index of each band may be given based on Equation (1).
- Equation 1 b represents a band index
- Nc represents the number of components in the image
- i represents a component index.
- the band for the Y component can have an index of 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, and the band for the Cb component is 1, 4, 7, 10, 13, It may have an index of 16, 19, 22, 25, 28, and a band for a Cr component may have an index of 2, 5, 8, 11, 14, 17, 20, 23, 26, 29.
- the pressing 320 may include one row of wavelet coefficients from each of bands 0, 3, 6, 8, 12, 15, and 18, and two rows of wavelet coefficients from each of bands 21, 24, and 27.
- Wavelet coefficients of each pressing may be entropy-encoded on a packet-by-packet basis through quantization. More specifically, the entropy-encoded data from the pressing may be grouped into one or more packets for each band and line of the pressing. For example, Table 2 illustrates the relationship between packets and lines and bands.
- data (entropy encoded) for one pressing 340 is included in 10 packets, that is, packets 0 to 9. More specifically, (entropy encoded) data for bands 0, 3, 6, and 9 (refer to shaded portions) constituting one pressing 340 is included in one packet (packet 0). Also, the data for band 12 (entropy encoded) is included in one packet, i.e. packet 1, and the data for band 15 (entropy encoded) is included in one packet, i.e. packet 2, for band 18 The data (entropy encoded) is contained in one packet, packet 3.
- (entropy encoded) data for band 21 is included in two packets per line, i.e., packet 4 and packet 7, and (entropy encoded) data for band 24 is two packets per line, i.e. packet 5 and 8, and (entropy encoded) data for band 27 may be included in two packets per line, that is, packets 6 and 9.
- (entropy coded) data for the chroma component band may also be included in the corresponding packet.
- a plurality of consecutive wavelet coefficients can be grouped so that quantization and entropy coding can be performed on a group basis.
- This group of wavelet coefficients is referred to as a code group.
- Quantized wavelet coefficients may be generated by performing quantization on each wavelet coefficient of a code group. Quantized wavelet coefficients are referred to as a quantization index, and in this specification, quantization index information and quantized wavelet coefficient information , Quantized transform coefficient information, and the like.
- a group of quantization indexes to which quantization is applied may also be referred to as a code group.
- one code group may include four wavelet coefficient information or quantization index information.
- wavelet coefficients included in one line of a specific band are illustrated.
- a plurality of (eg, four) consecutive wavelet coefficients can be grouped from the beginning of the line to form a code group.
- one line included in a specific band may include wavelet coefficients -32, 274, 0, 6, ... consecutively from the beginning, and these four wavelet coefficients are one. It can be grouped into groups to perform quantization and entropy encoding.
- Wavelet coefficient information may be represented by sign information and magnitude information.
- the sign information indicates the sign of wavelet coefficient information. As a non-limiting example, when the sign information has a value of 1, a negative sign may be represented, and when the sign information has a value of 0, a positive sign may be represented.
- the magnitude information represents the absolute value of the wavelet coefficient.
- bitplane An array of bits at the same bit position in a code group is referred to as a bitplane, and information indicating the number of bitplanes from the lowest bitplane to the most significant non-zero bitplane is known as a bitplane count. It is referred to as information (referred to as “M information” for convenience), and may be referred to as a bit plane count briefly.
- FIG. 5 a bit plane for wavelet coefficients included in the code group illustrated in FIG. 4 is illustrated.
- the size information of the wavelet coefficient is represented by 16 bits
- the sign information of the wavelet coefficient is represented by 1 bit
- the least significant 2 bits are removed by quantization, but this is for illustration only. Is not limited to this. Since one code group contains four wavelet coefficients -32, 274, 0, and 6, all from bit plane 9 to bit plane 15 are 0, and the non-zero most significant bit plane is the ninth bit position (i.e., bit plane 8). Therefore, in the example of FIG. 5, the value of M information may be set to 9.
- T information information indicating the number of least significant bit planes removed from wavelet coefficients by quantization is referred to as truncation position information (for convenience, referred to as “T information”).
- T information may be set to a value of 0 to 15. In the example of FIG. 5, since it is assumed that the least significant 2 bits are removed by quantization, bits 0 and 1 can be removed, and the value of T information can be set to 2.
- T information includes band priority information (for convenience, referred to as “P information”) transmitted through a weight table (for example, see FIG. 6) and presence quantization transmitted through a prefix header (for example, see FIG. 6). It may be encoded based on information (referred to as “Q information” for convenience) and freshness refinement threshold information (referred to as “R information” for convenience).
- a plurality of contiguous code groups may be grouped into one signature group.
- information indicating whether the signature group includes a non-zero code group may be signaled through a bitstream, and this information is used for signature flag information (for convenience. (Referred to as “Z information”).
- Z information For example, if the Z information has a value of 0, the corresponding signature group may include at least one non-zero code group, and if the Z information has a value of 1, all code groups within the corresponding signature group 0.
- one signature group may include eight code groups.
- the quantization index can be expressed as sign information and magnitude information.
- the sign information is set equal to the sign information of the wavelet coefficient.
- the magnitude information represents the absolute value of the quantized wavelet coefficient and can be expressed in up to 16 bits, and may be referred to as quantization index magnitude information or quantization index size.
- the JPEG-XS standard supports two types of quantization: deadzone quantization and uniform quantization.
- information indicating the type of quantization (for encoding) (for convenience, referred to as “Qpih information”) may be included in the picture header (eg, see FIG. 6 ).
- dead zone quantization may be implemented by an operation of representing wavelet coefficients as sign information and magnitude information, and right shifting size information by a value of T information.
- dead zone quantization may be performed based on Equation (2).
- Equation 2 v denotes a quantization index size
- d denotes wavelet coefficient size information
- T denotes cutting position information.
- Uniform quantization uses the quantization step size By dividing the size information of the wavelet coefficient, it can be implemented as an operation to round. For example, uniform quantization may be performed based on Equation (3).
- Equation 3 v represents quantization index size
- d represents wavelet coefficient size information
- M represents bit plane count information
- T represents cutting position information.
- Quantization index size information and sign information generated through quantization may be added to the bitstream through entropy encoding.
- FIG. 6 illustrates a bitstream according to the JPEG-XS standard.
- the generated bitstream may include syntax information (610, 620, 630, 640) illustrated in FIG. 6. Since the video signal may include a plurality of images, when each image is encoded according to the JPEG-XS standard, a bit stream in which the bit stream illustrated in FIG. 6 is concatenated may be generated.
- syntax information separated by a line may be arranged in units of bytes. Therefore, when the corresponding syntax information is not aligned in units of bytes during encoding, padding bits or filler bits may be added for byte alignment. For example, 0 as a padding bit or a filler bit may be added to the end of the syntax information.
- the SOC (start of codestream) marker is syntax information for identifying that the bitstream is a bitstream according to the JEPG-XS standard, and means the start of the bitstream for one picture.
- the SOC marker may have a length of 2 bytes and a value of 0xFF10.
- the EOC marker is information for identifying the end of the bitstream, and means the end of the bitstream for one picture.
- the EOC marker may have a length of 2 bytes and a value of 0xFF11.
- the decoder can identify the start and end of the bitstream for one picture based on the SOC marker and the EOC marker.
- the capability marker (or CAP marker) is information for identifying capability necessary for decoding a bitstream according to JPEG-XS.
- the current standard does not define the stats, and the stats marker may include 2 bytes of 0xFF50.
- the picture header includes information about a dimension of an image, information about a component of the image, and information for configuring a decoder.
- the picture header is a marker for identifying that it is a picture header (eg, 2 bytes long 0xFF12), information indicating the width of the image (in the number of samples), and the height of the image (in the number of samples) ) May include information indicating, information indicating the number of components in the image, and the like.
- the picture header includes information indicating the width of the pressing, information indicating the quantization type (or Qpih information), and information indicating whether code information is encoded together with a data sub packet or separately as a code sub packet ( For convenience, referred to as “Fs information”), information indicating whether to perform inverse multiple component conversion (for convenience, referred to as “Cpih information”), information indicating the number of bits for bit plane count information (or M information) (for convenience, “Br”) Information”).
- Fs information information indicating whether to perform inverse multiple component conversion
- Cpih information information indicating the number of bits for bit plane count information
- M information for convenience, “Br” Information
- a component table contains specific information about components constituting an image. Specifically, the component table indicates a marker (eg, 0xFF13) for identifying the start of the component table, information indicating the bit precision of each component, and a horizontal subsample factor of each component. Information (for convenience, referred to as “Sx”), information indicating the vertical subsampling factor of each component (for convenience, referred to as “Sy”), and the like. Bit precision refers to the number of bits required to represent one sample. As an example of not limiting the present invention, 1:1 subsampling is indicated when Sx and Sy have a value of 1, and 2:1 subsampling is indicated when Sx and Sy have a value of 2.
- Sx and Sy may have a value of 1 for all components.
- Sy may have a value of 1 for all components, but Sx may have a value of 1 for luma components and 2 for chroma components. have.
- the weights table includes parameters necessary to set the gain of each band in relation to quantization and inverse quantization of a precision.
- the weight table includes a marker (eg, 0xFF14) for identifying the start of the weight table, information indicating the gain of each band, information indicating the priority of each band (or P information), and the like. can do.
- the parameters included in the weight table are used to perform quantization and inverse quantization of wavelet coefficients of each band together with parameters (eg, Q information and R information) of the fresh header.
- the extension marker may include generic metadata or vendor-specific metadata along with a marker (eg, 0xFF15) for identifying the start of the definite marker.
- a marker eg, 0xFF15
- a slice may refer to a unit capable of coding independently of other parts of the image, and includes a wavelet coefficient required for reconstructing a horizontal stripe in the image.
- the horizontal stripe refers to an area including one or more rows in an image.
- a slice can include one or more pressings.
- a slice may be represented by a slice header and an integer number of pieces (620).
- the slice header is a marker for identifying the start of the slice (eg, 0xFF20), information indicating the size (eg, number of bytes) of the slice header (for convenience, referred to as “Lslh information”), and the index of the slice in the image It may contain information indicating.
- the index of the slice indicates the order of the slices constituting the image, and the index value may be allocated in ascending order from 0 while progressing from the top of the image to the bottom of the image.
- Precious refers to a collection of wavelet coefficients of all bands contributing to a specific spatial region of an image, and (entropy encoded) data for the precious may be included in one or more packets (eg , See FIG. 3 and related descriptions).
- the presenting may be represented by a fresh header and an integer number of packets (630).
- the prefix header includes information indicating the size (eg, number of bytes) of data (entropy-encoded) included in the pressing 630 (for convenience, referred to as “Lprc information”), and cutting position information of the pressing 630 ( Or, information required to obtain T information (see FIG. 5 and related description) (eg, Q information and R information), information indicating a coding mode of a bitplane count for each band (for convenience, referred to as “D information”) It may include.
- the Lprc information indicates the size of data (entropy encoded) from the end of the forward header to the next forward header or slice header or EOC marker in bytes.
- the D information is composed of 2 bits, and the higher bit of the 2 bits indicates whether signature coding is used, and the lower bit of the 2 bits indicates the bitplane count coding mode.
- Significance coding groups multiple (eg, 8) code groups to form a significance group and generates Z information (or significance flag information, see FIG. 5 and related descriptions) for each significance group. It refers to adding to the bitstream through the signature subpacket. For example, when the upper bit of the D information is 1, it indicates that the significance coding is used, and each packet in the bitstream includes a significance subpacket. On the other hand, when the upper bit of the D information is 0, it indicates that the signature coding is not used, and each packet in the bitstream does not include the signature subpacket.
- the bit plane count coding mode refers to a mode for coding M information (or bit plane count information, see FIG. 5 and related descriptions), a raw mode, a no prediction mode, and a vertical prediction mode ( vertical prediction mode).
- M information or bit plane count information, see FIG. 5 and related descriptions
- the vertical prediction mode the residual between the M information of the current code group and the predicted value is used by using the M information of the upper line of the line containing the current code group as the predictor (or predicted value) in the current prediction.
- the information is encoded in a bit plane count sub packet.
- residual information may be encoded using a variable length code.
- residual information of M information of the current code group is obtained by using T information as a predicted value instead of M information of an upper line, and the residual information is encoded into a bit plane count sub packet.
- T information as a predicted value instead of M information of an upper line
- the residual information is encoded into a bit plane count sub packet.
- the lower bit of D information is 0, a non-prediction mode may be indicated, and when the lower bit of D information is 1, a vertical prediction mode may be indicated.
- residual information may be encoded using a variable length code.
- M information may be encoded in a fixed number of bits in an image, and information indicating the number of bits (referred to as “Br information” for convenience) may be included in a picture header (eg, see FIG. 6 ). .
- the raw mode may be determined according to the override flag information (or Dr information below) signaled through the packet header. For example, when the Dr information is 1, the primitive mode is applied, and when the Dr information is 0, the bit plane count coding mode may be determined according to the D information.
- the packet includes data quantized and entropy-encoded wavelet coefficients included in one line in one or more bands within the priority (see, for example, priority 340 and packets 0 to 9 in FIG. 3).
- the packet may be represented by a packet header and a plurality of sub-packets in the bitstream, and the sub-packet may include at least one of a signature sub-packet, a bit plane count sub-packet, a data sub-packet, and a code sub-packet. It can be (640).
- the packet header is an override flag information (for convenience, referred to as “Dr information”) that additionally indicates a coding mode of bit plane count information, and information for indicating the size (eg, number of bytes) of a data sub packet (for convenience, referred to as “Ldat information”). ), information indicating the size (eg, number of bytes) of the bit plane count sub packet (for convenience, referred to as “Lcnt information”), information indicating the size (eg, number of bytes) of the code sub packet (for convenience, “Lsgn information”) (Referred to as).
- Dr information indicates whether raw mode is applied to M information of a code group included in a packet.
- the Lsgn information is included in the packet header regardless of the Fs information described below, but the Lsgn information may be ignored depending on the value of the Fs information.
- information indicating the size of the signature subpacket is not included in the packet header, and the size information of the signature subpacket is inferred from the size of the bands and lines constituting the packet. Can be obtained.
- the significance subpacket may be included in the packet when significance coding is used.
- the signature subpacket may include Z information (or signature flag information) for each signature group of packets.
- the bit plane count sub-packet may include M information for each code group (or bit plane count information, see FIG. 5 and related descriptions). As described above, the bit plane count sub-packet includes a variable length code representing residual information for each M information according to the bit plane count coding mode (vertical prediction mode or non-prediction mode), or a fixed length code representing M information. (Raw mode).
- the data sub-packet may include code information for a corresponding code group and quantization index magnitude information.
- Quantization index size information is encoded in a data subpacket.
- the code information may be encoded in a data subpacket with quantization index size information, or may be encoded in a code subpacket separately from the quantization index size information.
- Information (or Fs information) indicating whether code information is encoded together with a data sub packet or separately as a code sub packet may be included in a bitstream (eg, picture header). For example, if the value of Fs information is 0, it indicates that the sign information is encoded in the data sub packet, and the sign sub packet is not included in the bitstream. On the other hand, if the value of the Fs information is 1, it indicates that the code information is not encoded in the data sub packet, but is separately encoded in the code sub packet, and the code sub packet is included in the bitstream.
- the code information may be encoded based on quantization index size information of the data sub packet. For example, when the quantization index size information has a value other than 0, one code bit is encoded in the code sub packet, and when the quantization index size information has a value of 0, the code bit is not encoded in the code sub packet.
- FIG. 7 illustrates a flowchart of a method for decoding a bitstream for a video signal.
- the method of FIG. 7 may be performed by the decoding apparatus 10 (eg, see FIG. 14).
- a bitstream for a video signal can be simply referred to as a bitstream or video signal, and the bitstream can be mixed with a codestream.
- the bitstream for a video signal may include, for example, at least one bitstream described with reference to FIG. 6.
- the decoding device receives the bitstream and parses the bitstream to obtain syntax information.
- the decoding apparatus may parse the bitstream to obtain syntax information and data (610, 620, 630, 640) described with reference to FIG. 6.
- the decoding apparatus may identify the start of the bitstream based on the SOC marker (eg, 0xFF10), and the start of each slice within the bitstream based on the marker (eg, 0xFF20) included in the slice header. Can be identified.
- the decoding apparatus may obtain Lslh information (eg, see FIG. 6 and related descriptions) from the slice header to identify the end of the slice header and the beginning of the pressing. After identifying the start of the pressing, the decoding device may acquire the Lprc information (eg, see FIG. 6 and related description) in the pressing header to identify the end of the pressing and the beginning of the next pressing. Since the syntax information of the pressing header has a certain size, information indicating the size of the pressing header is not separately included in the bitstream. Accordingly, the decoding apparatus may determine (or infer) the size of the pressing header based on the number of bands constituting the pressing. Based on the determined size of the fresh header, the decoding device may identify the start of a packet in the bitstream.
- Lslh information eg, see FIG. 6 and related descriptions
- the decoding device may parse the packet header to obtain Dr information, Ldat information, Lcnt information, and Lsgn information (for example, see FIG. 6 and related descriptions).
- the information indicating the size of the packet header is not separately included in the bitstream, and since the length of each syntax information in the packet header is predefined, based on this, the decoding device can identify the start of the sub packet.
- the signature sub-packet is included in the bitstream when the signature coding is applied (for example, see FIG. 6 and related description). Specifically, the decoding apparatus obtains a signature sub packet from the bitstream when the signature coding is applied, and skips decoding the signature sub packet when the signature coding is not applied.
- the size information of the signature subpacket is not separately included in the bitstream, and the decoding apparatus may determine (or infer) the size of the signature subpacket from the number of bands and the line size. Based on the determined size of the signature sub-packet, the decoding apparatus may acquire the signature sub-packet (if the signature sub-packet is present) and identify the start of the bit plane count sub packet.
- the decoding device can obtain the bit plane sub packet from the bit stream and identify the start of the data sub packet.
- the decoding device may obtain a data sub-packet from the bitstream (if a code sub-packet is present) and identify the start of the code sub-packet.
- the decoding device obtains the code sub-packet from the bitstream .
- the next packet can be parsed in the same manner as described above at the byte boundary.
- the number of packets included in one pressing may be predefined based on the vertical decomposition level. For example, as described with reference to FIG. 3, when two-level vertical decomposition is applied, one pressing may be encoded into 10 packets, and may include 10 packets following the pressing header in the bitstream. Can. As another example, when 1-level vertical decomposition is applied, one presence may be encoded into 4 packets, and may include 4 packets following the presence header in the bitstream. Accordingly, the decoding apparatus can parse the forward header and then acquire packets as many as the predefined number of packets from the bitstream. After acquiring a predetermined number of packets, the decoding apparatus may parse the next priority, parse the next slice, or parse the EOC marker (eg, 0xFF11).
- EOC marker eg, 0xFF11
- the decoding device may end syntax parsing for the current image.
- the decoding apparatus may perform entropy decoding based on the (entropy coded) data obtained in step S710. Specifically, the decoding apparatus may perform entropy decoding on (entropy coded) data (eg, packets) to obtain entropy decoded data (eg, a code group constituting the pressing).
- entropy decoding process will be described in detail with reference to FIG. 8.
- the decoding apparatus may restore wavelet coefficient information by performing inverse quantization based on the entropy-decoded data (eg, code group) in operation S720. Specifically, the decoding apparatus acquires Qpih information (eg, see FIG. 6 and related description) from a bitstream (eg, picture header), determines an inverse quantization type, and then performs dequantization of the determined type (eg, Equation 2) And 3 related descriptions) to restore wavelet coefficients from quantization index size information and code information.
- Qpih information eg, see FIG. 6 and related description
- inverse deadzone quantization is applied based on Qpih information
- the decoding apparatus shifts the quantization index magnitude information of the code group by the value of T information (or cutting position information) to the left. And restore to the midpoint of the quantization step size, then apply the code information to restore the wavelet coefficients.
- inverse dead zone quantization may be performed based on Equation (4).
- Equation 4 c denotes the reconstructed wavelet coefficient, s denotes sign information, v denotes the quantization index size, and T denotes cutting position information.
- the decoding apparatus quantizes the step size based on M information (or bit plane count information) and T information for a code group. After obtaining, the wavelet coefficient can be restored by multiplying the quantization index size information by the quantization step size and applying sign information. For example, inverse uniform quantization may be performed based on Equation (5).
- Equation 5 c denotes the reconstructed wavelet coefficient, s denotes sign information, v denotes a quantization index size, and T denotes cutting position information.
- the decoding apparatus may perform inverse discrete wavelet transformation (inverse DWT) based on the reconstructed wavelet coefficient.
- Inverse discrete wavelet transform refers to a process of reconstructing or composing image samples into one band by applying a wavelet filter after interleaving at least one high-frequency band and at least one low-frequency band. It can also be referred to as transform or inverse transform.
- the decoding apparatus may restore the image based on the wavelet coefficients restored in step S730, restore the band based on the prediction, and then perform inverse discrete wavelet transformation based on the band to restore image samples.
- the decoding apparatus may recover a band from the preset in the reverse of the method of constructing the present in the encoder (for example, see FIG. 3 and related description), and the method of performing discrete wavelet transform in the encoder (for example, FIG. 2 and related description) Conversely, samples of the image may be reconstructed from the band.
- the decoding apparatus may use the same wavelet filter used by the encoder for inverse wavelet transformation.
- the decoding apparatus may perform inverse multiple component transformation based on the reconstructed image.
- Inverse multi-component conversion refers to an operation of converting a color format.
- inverse multi-component conversion may include an operation of converting the YCbCr color format to the RGB color format.
- the encoder side can change the color format to YCbCr to encode and encode Cpih information into a bitstream (eg, picture header) (eg, see FIG. 6 and related descriptions). For example, when Cpih information has a value of 0, it may indicate that inverse multi-component transformation is not performed, and when Cpih information has a value of 1, it may indicate that inverse multi-component transformation is performed.
- the decoding apparatus may obtain Cpih information from a bitstream (eg, picture header), and then determine whether to perform inverse multi-component conversion according to the Cpih information. If the Cpih information indicates that inverse multi-component transform is performed, the decoding apparatus performs step S750, and when the Cpih information indicates that inverse multi-component transform is not performed, the decoding apparatus may skip step S750. .
- the decoding apparatus may perform DC (Direct Current) offset, scaling, and clamping for each sample of the image.
- DC offset refers to an operation of shifting the DC level of image samples
- scaling refers to an operation of scaling a range of values of DC level shifted samples
- clamping refers to a range of values of scaled samples of valid values Refers to an operation limited to a range.
- steps S710 to S760 may be repeated for the next image.
- FIG. 8 illustrates a flowchart of an entropy decoding method.
- the method illustrated in FIG. 8 may be performed in step S720 of FIG. 7, and the entropy decoder engines 900, 1020, 1030, 1120, 1130, 1140, and 1150 included in the decoding apparatus 10 (eg, see FIG. 14) ).
- the method illustrated in FIG. 8 may be performed for each packet (eg, see FIG. 6 and related descriptions) constituting the pressing.
- the decoding apparatus can decode the significance subpacket (S810). Specifically, the decoding apparatus may obtain Z information (or significance flag information) from the significance subpacket and restore wavelet coefficients constituting the significance group based on the Z information.
- the decoding apparatus restores the wavelet coefficient corresponding to the signature group to 0, and skips steps S820 to S840 (skip). can do.
- the decoding device performs steps S820 to S840 for the code groups included in the signature group to calculate wavelet coefficients. Can be restored.
- step S810 the decoding apparatus skips step S810 and proceeds to step S820.
- Whether to apply the significance coding can be determined through the upper bits of D information of the pressing header (for example, see FIG. 6 and related description).
- the decoding apparatus may decode the bit plane count sub packet. Specifically, the decoding apparatus determines the bit plane count coding mode based on the D information obtained from the bitstream (eg, the forward header) and the Dr information obtained from the bitstream (eg, the packet header) (eg, FIG. 6) And related description), the bit plane count sub-packet may be decoded based on the determined bit plane count coding mode.
- the decoding apparatus when the raw mode is applied (eg, when Dr information indicates that the raw mode is applied), the decoding apparatus performs a bit plane count sub packet based on Br information obtained from a bitstream (eg, packet header). Decoding and M information (or bit plane count information) may be obtained.
- the decoding apparatus decodes a variable length code from a bit plane count sub packet to obtain residual information and based thereon M information can be obtained.
- the decoding device when a vertical prediction mode is applied (eg, when a lower bit of D information indicates a vertical prediction mode), the decoding device is based on M information of an upper (or previous) line of a line including the current code group.
- M information of an upper (or previous) line of a line including the current code group To obtain a prediction value, obtain residual information from a bit plane count subpacket of a packet including the current code group, and obtain M information of the current code group based on the prediction value and the residual information.
- the decoding apparatus may acquire M information based on the Z information obtained in step S810. Specifically, when the Z information indicates that all code groups of the signature group are 0, the decoding apparatus may omit obtaining M information for all code groups of the corresponding signature group. On the other hand, when the Z information indicates that the non-zero code group is included in the signature group, the decoding apparatus decodes the bit plane count sub packet to obtain M information for the code group of the corresponding signature group. Can.
- the decoding apparatus may sequentially decode/acquire M information for all code groups of the packet.
- the decoding device may decode the data sub packet.
- the sign information of the quantization index may be encoded together with the data sub packet or may be encoded in the sign sub packet separately from the data sub packet, which may be indicated through Fs information (eg, FIG. 6 and related descriptions). Reference).
- the decoding device decodes the data sub-packet and the code information is equal to the number of quantization indexes (eg, 4) included in the code group. And sequentially obtain the quantization index size information by the number of quantization indexes (eg, 4) included in the code group.
- each quantization index size information is composed of (MT) bits, and is packed in order from the most significant bit (MSB) to the least significant bit (LSB) (M is the value of M information for the code group.
- MSB most significant bit
- LSB least significant bit
- T denotes the value of T information for the corresponding code group). Accordingly, the decoding apparatus may acquire (M-T) bits from the data subpacket and then place the MSB to obtain quantization index size information.
- the decoding apparatus omits parsing of code information (eg, 4 code bits) for each code group.
- quantization index size information can be obtained by the number of quantization indexes (eg, 4) included in the code group in the same manner as described above.
- the decoding device may decode the code subpacket.
- Step S840 may be performed when a code sub-packet exists (eg, when the value of Fs information is 1).
- the code information can be encoded only when the quantization index size is not 0.
- the sign information is 1, 0, 0, 0.
- Acquisition and size information can be obtained 8, 68, 0, 1.
- the code information 1, 0, and 0 are encoded into a code sub packet only for a quantization index having size information of 8, 68, and 1, and then into a quantization index having size information of 0.
- the sign information encoding for is skipped.
- the decoding apparatus acquires code information from the code subpacket based on the quantization index size information obtained in step S830. Specifically, in step S840, the decoding apparatus obtains code information when the corresponding quantization index size information is not 0, and parses the code information when the corresponding quantization index size information is 0.
- FIG 9 illustrates the structure of the entropy decoder engine 900.
- the entropy decoder engine 900 may be configured to receive the bitstream 905 and perform entropy decoding to output the code group 960.
- the entropy decoder engine 900 may be configured to perform an operation corresponding to the method described with reference to FIG. 8.
- the bitstream 905 may include information described with reference to FIG. 6, for example.
- the entropy decoder engine 900 may be configured to perform entropy decoding on a packet-by-packet basis constituting the presence in the bitstream.
- the entropy decoder engine 900 may be configured to sequentially perform the significance decoding 910, the bit plane count decoding 920, the data decoding 930, and the code decoding 940.
- the entropy decoder engine 900 may perform the operation described in S810 of FIG. 8 for the signature decoding 910, and perform the operation described in S820 of FIG. 8 for the bit plane count decoding 920. It is possible to perform the operation described in S830 of FIG. 8 for data decoding 930, and the operation described in S840 of FIG. 8 can be performed for code decoding 940.
- the entire description of FIG. 8 is incorporated by reference.
- the entropy decoder engine 900 may be configured in a pipeline manner to output one code group per clock based on the clock signal 970.
- the operation clock 970 may be set to 480 MHz, and in this case, the entropy decoder engine 900 may output up to 4.8 million code groups per second.
- the JPEG-XS standard supports various resolutions such as 2K (e.g. 1920x1080 or 2048x1080), 4K (e.g. 3840x2160 or 4096x2160), 8K (e.g. 7680x4320 or 8192x4320), and various frames such as 30Hz, 60Hz, 120Hz Frame rate is supported.
- the wavelet transform (for example, refer to FIG. 2 and related description) is applied, the wavelet coefficients are generated and grouped into a code group as many as the picture resolution, so that the entropy decoder engine 900 determines the resolution of the video signal included in the bitstream. It needs to be designed to satisfy the decoding performance according to the frame rate.
- the entropy decoder engine 900 can output up to 4.8 million code groups per second, and thus the entropy decoder engine 900 ) May cause a technical problem that cannot decode a bitstream including a video signal of YCbCr 444 format having a 3840x2160 resolution and a frame rate of 120Hz in real time.
- bit plane count decoding 920 may be configured to decode the bit plane count information based on a look-up table including the variable length code in order to improve the performance of decoding the variable length code. Since the bit plane count information can be allocated from a minimum of 1 bit to a maximum of 32 bits, the lookup table may include 32 variable length codes, and may be implemented by a 32x1 multiplexer (mux).
- a method of increasing the clock signal 970 may be considered in order to solve the above technical problem, but when the clock signal 970 is increased, a problem that a timing condition is not satisfied when implementing hardware may occur. Also, since the encoding/decoding technique according to the JPEG-XS standard can be widely used on a mobile terminal such as a smart phone, simply raising the operation clock 970 may not be desirable in terms of power consumption.
- the present invention proposes an entropy decoding method and apparatus based on parallel processing of packets. Specifically, the present invention proposes a method and apparatus for dividing a packet included in one pressing into packets corresponding to half of the width of the pressing and processing in parallel.
- the presence refers to a collection of wavelet coefficient information of all bands contributing to a specific spatial region (reconstruction of) of each picture constituting a video signal (for example, see FIG. 3 and related description). Or, it may refer to a part of a bitstream including packets including these wavelet coefficient information (or a corresponding code group) (eg, see 630 in FIG. 6).
- the entropy decoder is configured to decode a bitstream (or simply a bitstream or a video signal) for a video signal including at least one pressing, and a plurality of entropy decoder engines for performing entropy decoding in parallel And a demultiplexer (demultiplexer or demux).
- a demultiplexer demultiplexer or demux
- the demultiplexer according to the present invention may be configured to demultiplex the packets of the priority (eg, packets 0 to 9) in units corresponding to half of one line in the pressing and transmit them to a plurality of entropy decoder engines.
- Half of one line is half the width of the pressing. For example, when the width of one pressing is set equal to the width of the picture, half of one line corresponds to half of the width of the picture.
- One half of a line may consist of one packet (eg, packets 4 through 9) or two packets (eg, packets 0 and 1, packets 2 and 3) (eg, FIGS. 3 and 3). See related description).
- Each entropy decoder engine entropy decodes packets transmitted from the demultiplexer in units of packets, and a plurality of entropy decoder engines can entropy decode packets transmitted from the demultiplexer in parallel.
- Each entropy decoder engine may have the structure 900 illustrated in FIG. 9 and may perform an operation described with reference to FIG. 9 (eg, an operation corresponding to the method of FIG. 8 ).
- each entropy decoder engine may be configured in a pipelined manner to output one code group for each clock based on the clock signal 970.
- a plurality of entropy decoder engines may be configured to transmit and receive M information (or bit plane count information) for a code group to each other so that the vertical prediction mode can be efficiently parallelized.
- entropy decoding performance may be improved by the number of entropy decoder engines.
- the amount of data processed by each entropy decoder engine can be matched to a similar level, which can be more advantageous for parallel processing.
- the vertical prediction mode is used since the entropy decoding of the bit plane count information of the upper (or previous) line can be completed before the entropy decoding of the bit plane count information of the current line in each entropy decoder engine, the vertical prediction mode is used. It is also possible to efficiently parallel-process the encoded bit-plane count information (for example, see the description of S820 in FIG. 8).
- the present invention is configured to include 10 packets of packets 0 to 9 (eg, 340 of FIG. 3, 630 of FIG. 6), but The principle is not limited to this.
- packet 0 and packet 1 contain wavelet count information or a code group corresponding to the left half of the first line (or line 0) of the pressing
- packets 2 and 3 are the second line of the pressing (or
- the packet contains wavelet count information or code group corresponding to the left half of line 1)
- the packet 4 contains wavelet count information or code group corresponding to the right half of the first line (or line 0) of the pressing packet.
- Packet count contains wavelet count information or code group corresponding to the right half of the second (or line 1) of the prefix
- packet 8 contains count information or code group
- packet 9 may include wavelet count information or code group corresponding to the right half of the fourth line (or line 3) of the pressing ( Yes, see Figure 3 and related descriptions).
- the entropy decoder 1000 may include a demultiplexer 1010, an entropy decoder engine 0 1020, and an entropy decoder engine 1 1030.
- entropy decoder engine 0 1020 is referred to as a first entropy decoder engine
- entropy decoder engine 1 1030 is referred to as a second entropy decoder engine.
- the demultiplexer 1010 includes the first plurality of packets (eg, packets 0 to 9) and the first plurality of packets (eg, packet 0, packet 1, packet 4, packet 6, packet 8) and the second plurality. Demultiplexed into packets (eg, packet 2, packet 3, packet 5, packet 7, packet 9), transmits the first plurality of packets to the first entropy decoder engine 1020, and the second plurality of packets It may be configured to transmit to the second entropy decoder engine 1030.
- Each of the first entropy decoder engine 1020 and the second entropy decoder engine 1030 corresponds to the entropy decoder engine 900. Accordingly, each of the first entropy decoder engine 1020 and the second entropy decoder engine 1030 entropy decodes packets transmitted from the demultiplexer 1010 in units of packets, and for each clock based on the clock signal 970 It may be configured in a pipelined manner to output 1040, 1050 one code group.
- the first entropy decoder engine 1020 and the second entropy decoder engine 1030 each include a full description of the entropy decoder engine 900 with reference to specific operations (incorporation by reference).
- the first entropy decoder engine 1020 and the second entropy decoder engine 1030 respectively parallel the first plurality of packets and the second plurality of packets received from the demultiplexer 1010. Entropy decoding is possible.
- entropy decoding for packets 0 and 1 by the first entropy decoder engine 1020 and entropy decoding for packets 2 and 3 by the second entropy decoder engine 1030 may be performed in parallel
- Entropy decoding for packet 4 by the first entropy decoder engine 1020 and entropy decoding for packet 5 by the second entropy decoder engine 1030 may be performed in parallel
- the first entropy decoder engine 1020 Entropy decoding for packet 6 by and entropy decoding for packet 7 by second entropy decoder engine 1030 may be performed in parallel
- entropy decoding for packet 9 by the second entropy decoder engine 1030 may be performed in parallel.
- the entropy decoder 1100 includes a demultiplexer 1110, entropy decoder engine 0 1120, entropy decoder engine 1 1130, entropy decoder engine 2 1140, and entropy. Decoder engine 3 1150.
- entropy decoder engine 0 1020 is referred to as a first entropy decoder engine
- entropy decoder engine 1 1030 is referred to as a second entropy decoder engine
- entropy decoder engine 2 1140 is a third entropy decoder.
- Engine, and entropy decoder engine 3 1150 is referred to as a fourth entropy decoder engine.
- the demultiplexer 1110 includes the first plurality of packets (eg, packet 0 to packet 9) of the first plurality of packets (eg, packet 0, packet 1, packet 6), and the second plurality of packets (eg, Packet 2, packet 3, packet 7), the third plurality of packets (e.g., packet 4, packet 8), the fourth plurality of packets (e.g., packet 5, packet 9) demultiplexed, the first plurality The packets are transmitted to the first entropy decoder engine 1120, the second plurality of packets are transmitted to the second entropy decoder engine 1130, the third plurality of packets are transmitted to the third entropy decoder engine 1140, The fourth plurality of packets may be configured to be transmitted to the fourth entropy decoder engine 1150.
- Each entropy decoder engine 1120, 1130, 1140, 1150 corresponds to the entropy decoder engine 900. Accordingly, each entropy decoder engine 1120, 1130, 1140, 1150 entropy decodes packets transmitted from the demultiplexer 1110 in units of packets, and one code group per clock based on the clock signal 970 It can be configured in a pipeline manner to output (1160, 1170, 1180, 1190). Description of the specific operation of each entropy decoder engine 1120, 1130, 1140, 1150 includes the entire description of the entropy decoder engine 900 as a reference.
- the first entropy decoder engine 1120, the second entropy decoder engine 1130, the third entropy decoder engine 1140, and the fourth entropy decoder engine 1150 are demultiplexers 1110, respectively.
- the second plurality of packets, the third plurality of packets, and the fourth plurality of packets may be entropy decoded in parallel.
- Entropy decoding for packet 4 by and entropy decoding for packet 5 by second entropy decoder engine 1150 may be performed in parallel.
- Entropy decoding, entropy decoding for packet 9 by the second entropy decoder engine 1150 may be performed in parallel.
- 8K resolution e.g., 8192x4320
- frame rate of 60Hz e.g., 60Hz
- YCbCr 444 format video signals requiring decoding performance of about 15.9 million codes per second ( 8182x4320x60x3/4).
- 12 and 13 illustrate a flowchart of an entropy decoding method according to the present invention.
- 12 illustrates a flowchart of a method performed by entropy decoder 1000
- FIG. 13 illustrates a flowchart of a method performed by entropy decoder 1100.
- the entropy decoder 1000 may demultiplex the current fresh packets into a first plurality of packets and a second plurality of packets (S1210).
- the first plurality of packets may be provided to the first entropy decoder engine 1020, and the second plurality of packets may be provided to the second entropy decoder engine 1030.
- the first plurality of packets may include packet 0, packet 1, packet 4, packet 6, packet 8, and the second plurality of packets may include packet 2, packet 3, packet 5, packet 7, packet 9 have.
- the entropy decoder 1000 may entropy decode the first plurality of packets and the second plurality of packets in parallel (S1220).
- the specific operation of the parallel entropy decoding may include the operation described with reference to FIG. 10, and includes the entire description related to FIG. 10 as reference (incorporation by reference).
- the method of FIG. 12 may be performed in step S720 of FIG. 7.
- the decoding apparatus 10 (for example, see FIG. 14) performs image decoding including steps S710 to S760, but step S720 may be performed in the entropy decoder 1000 based on the method of FIG. 12.
- the entropy decoding method for each packet may correspond to the method described with reference to FIG. 8. Therefore, the detailed description of the method of FIG. 12 includes the description related to FIG. 8 and the entire description related to FIG. 10 as a reference.
- the entropy decoder 1100 may demultiplex packets of the current pressing into first plurality of packets, second plurality of packets, third plurality of packets, and fourth plurality of packets.
- the first plurality of packets are provided to the first entropy decoder engine 1120
- the second plurality of packets are provided to the second entropy decoder engine 1130
- the third plurality of packets may be provided to the third entropy decoder engine 1140
- the fourth plurality of packets may be provided to the fourth entropy decoder engine 1150.
- the first plurality of packets includes packet 0, packet 1, and packet 6,
- the second plurality of packets includes packet 2, packet 3, and packet 7, and the third plurality of packets includes packet 4 and packet 8 Included
- the fourth plurality of packets may include packet 5, packet 9.
- the entropy decoder 1100 may entropy decode the first plurality of packets, the second plurality of packets, the third plurality of packets, and the fourth plurality of packets in parallel (S1320).
- the specific operation of parallel entropy decoding may include the operation described with reference to FIG. 11, and the entire description related to FIG. 11 is incorporated by reference (incorporation by reference).
- the method of FIG. 13 may be performed in step S720 of FIG. 7.
- the decoding apparatus 10 (for example, see FIG. 14) performs image decoding including steps S710 to S760, but step S720 may be performed in the entropy decoder 1100 based on the method of FIG. 13.
- the entropy decoding method for each packet may correspond to the method described with reference to FIG. 8. Therefore, a detailed description of the method of FIG. 13 includes the description related to FIG. 8 and the entire description related to FIG. 11 as a reference.
- the present invention has been mainly described in the case where one pressing includes 10 packets based on the 5 level horizontal decomposition and the 2 level vertical decomposition, but the example of the pressing is only for understanding, and the present invention Is not limited to these pressings.
- the present invention can be applied to the same/similarity even when one pressing includes a different number of packets. For example, when the wavelet transform according to the 5th level horizontal decomposition and the 1st level vertical decomposition is applied, one pressing may consist of 4 packets of packets 0 to 3, and the packet 0 is the first of the pressing.
- the wavelet count information or code group corresponding to the left half of the line (or line 0) is included, and the packet 1 contains wavelet count information or code group corresponding to the right half of the first line (or line 0) of the pressing.
- Packet 2 contains wavelet count information or a code group corresponding to the left half of the second line (or line 1) of the pressing, and packet 3 is in the right half of the second line (or line 1) of the pressing.
- packets 0 and 1 are entropy decoded in parallel by the first entropy decoder engine 1020 and the second entropy decoder engine 1030, respectively, and packets 2 and 3 are Entropy decoding may be performed in parallel by the first entropy decoder engine 1020 and the second entropy decoder engine 1030, respectively.
- packet 0 is demultiplexed to the first entropy decoder engine 1120
- packet 1 is the second entropy.
- packet 2 is demultiplexed to the third entropy decoder engine 1140
- packet 3 is demultiplexed to the fourth entropy decoder engine 1150
- packets 0 to 3 are each demultiplexed. It can be decoded in parallel by the first entropy decoder engine to the fourth entropy decoder engine 1120 to 1150.
- the decoding device 10 may be included in a mobile terminal such as a smartphone, a portable device such as a laptop computer, a home appliance such as a digital TV, a digital video player, and the like.
- the decoding device 10 may be included as part of an Application Specific Integrated Circuit (ASIC), and may be implemented in the form of a System On Chip (SoC).
- ASIC Application Specific Integrated Circuit
- SoC System On Chip
- the memory 12 may store programs for processing and control of the processor 11 and may store encoded bitstreams, reconstructed images, and control information. Also, the memory 12 can be used as a buffer for bitstreams and images.
- the memory 12 includes ROM (Read Only Memory), RAM (Random Access Memory), EPROM (Erasable Programmable Read Only Memory), EEPROM (Electrically Erasable Programmable Read-Only Memory), flash memory, and static RAM (SRAM) , HDD (Hard Disk Drive), may be implemented as a storage device such as a solid state drive (SSD).
- SSD solid state drive
- the processor 11 controls the operation of each module in the decoding device 10.
- the processor 11 may perform some functions and/or control functions for performing the decoding method according to the present invention (for example, refer to FIGS. 7, 8, 12, and 13).
- the processor 11 may also be referred to as a controller, a microcontroller, a microprocessor, or a microcomputer.
- the processor 11 may be implemented by hardware or firmware, software, or a combination thereof.
- an application specific integrated circuit (ASIC) or digital signal processor (DSP), digital signal processing device (DSPD), programmable logic device (PLD), FPGA ( Field programmable gate array) may be provided in the processor 11.
- ASIC application specific integrated circuit
- DSP digital signal processor
- DSPD digital signal processing device
- PLD programmable logic device
- FPGA Field programmable gate array
- firmware or software when implementing the present invention using firmware or software, firmware or software may be configured to include a module, procedure, or function that performs functions or operations of the present invention, and configured to perform the present invention.
- the firmware or software may be provided in the processor 11 or stored in the memory 12 to be driven by the processor 11.
- the decoding apparatus 10 may include an entropy decoder 1000 or 1100 according to the present invention. Further, the decoding apparatus 10 may optionally include a parser 13, an inverse quantizer 14, and an inverse transformer 15.
- the parser 13 may be configured to perform the operation described in step S710 of FIG. 7, implemented as dedicated hardware, or implemented as part of the demultiplexers 1010 and 1110, or the processor 11 functioning as the parser 13 It can be configured to replace.
- the parser 13 includes one or more of the processor 11, the memory 12, the entropy decoders 1000, 1100, the inverse quantizer 14, and the inverse converter 15. In operation, it is connected to provide syntax information and (entropy coded) data (eg, packets) obtained by parsing a bitstream.
- the inverse quantizer 14 may be configured to perform the operation described in S730 of FIG. 7, and the inverse transformer 15 may be configured to perform the operation described in S750 of FIG. 7.
- the inverse quantizer 14 and/or the inverse converter 15 may be implemented with dedicated hardware or a general purpose processor, or the processor 11 may be configured to take over functions.
- the decoding apparatus 10 may include dedicated hardware or a general purpose processor (not shown) for performing operations corresponding to steps S750 and S760. Alternatively, these operations may be performed by the processor 11.
- the decoding apparatus 10 may optionally include a network interface module (NIM) (not shown).
- the network interface module is operatively connected to the processor 11, and the processor 11 controls the network interface module to wirelessly and/or wirelessly carry information and/or data, signals, and messages through a wireless/wired network. Signals can be transmitted or received.
- the network interface module supports various communication standards such as IEEE 802, 3GPP LTE (-A), Wi-Fi, Advanced Television System Committee (ATSC), Digital Video Broadcasting (DVB), etc. Control information and/or video signals such as coded bitstreams may be transmitted and received.
- the network interface module may not be included in the device if necessary.
- the device 10 may optionally include an input/output interface (not shown).
- the input/output interface is operatively connected with the processor 11, and the processor 11 may control the input/output interface to receive or output control signals and/or data signals.
- the input/output interface is USB (Universal Serial Bus), Bluetooth, Near Field Communication (NFC), serial/parallel interface, DVI, so that it can be connected to input devices such as keyboards, mice, touchpads, cameras, and output devices such as displays.
- Standards such as (Digital Visual Interface) and HDMI (High Definition Multimedia Interface) can be supported.
- one embodiment of the present invention is one or more application specific integrated circuit (ASIC), digital signal processor (DSP), digital signal processing device (DSPD), programmable logic device (PLD), FPGA ( field programmable gate array), processors, controllers, microcontrollers, microprocessors, and the like.
- ASIC application specific integrated circuit
- DSP digital signal processor
- DSPD digital signal processing device
- PLD programmable logic device
- FPGA field programmable gate array
- the present invention may be implemented as software code or instructions including a module, procedure, function, or the like that performs the functions or operations described above.
- the software code or instructions may be stored in a computer readable medium and driven by a processor, and when executed by a processor, perform operations according to the present invention.
- the computer-readable medium may be located inside or outside the processor, or may be remotely connected to the processor through a network and exchange data with the processor.
- the present invention can be used in an image processing apparatus such as a decoding apparatus and an encoding apparatus.
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
본 발명은 적어도 하나의 프레싱트(precinct)를 포함하는 비디오 신호를 위한 비트스트림을 디코딩하기 위한 방법 및 이를 위한 장치에 관한 것으로서, 보다 구체적으로 상기 적어도 하나의 프레싱트 중에서 현재 프레싱트의 패킷들을 제1 복수의 패킷들 및 제2 복수의 패킷들로 역다중화하는 단계; 및 상기 제1 복수의 패킷들 및 상기 제2 복수의 패킷들을 병렬적으로 엔트로피 디코딩하는 단계를 포함하되, 상기 제1 복수의 패킷들 및 상기 제2 복수의 패킷들은 각각 제1 엔트로피 디코더 엔진 및 제2 엔트로피 디코더 엔진에 의해 병렬적으로 엔트로피 디코딩되며, 상기 제1 복수의 패킷들은 패킷 0, 패킷 1, 패킷 4, 패킷 6, 패킷 8을 포함하고, 상기 제2 복수의 패킷들은 패킷 2, 패킷 3, 패킷 5, 패킷 7, 패킷 9를 포함하는 방법 및 이를 위한 장치에 관한 것이다.
Description
본 발명은 비디오 신호 처리 방법 및 장치에 관한 것으로서, 보다 구체적으로는 복수의 엔트로피 디코더 엔진을 이용한 비디오 신호의 병렬 처리 방법 및 이를 위한 장치에 관한 것이다.
디지털 멀티미디어, 인터넷 방송 등과 같은 고화질 멀티미디어 콘텐츠에 기반한 서비스가 활성화되면서 고해상도 비디오 신호를 위한 고압축(high compression) 및 고속(high speed)의 비디오 처리 기술들이 요구되고 있다.
구체적으로, 샘플당 10비트 이상의 HDR(High Dynamic Range)을 지원하고, 120 FPS(Frame Per Second) 또는 60 FPS와 같은 높은 프레임 레이트를 지원하며, 4K UHD(Ultra High Definition) 해상도(예, 3840x2160 또는 4096x2160)를 넘어 8K UHD 해상도(예, 7680x4320 또는 8192x4320)를 지원하는 비디오 콘텐츠가 증가함에 따라 데이터 양이 급격히 증가하고 있다. 또한, 무선 통신 시스템(예, 3GPP LTE(Long Term Evolution), LTE-A(LTE Advanced), LTE-A Pro, 5G 또는 NR(New Radio), WiFi(IEEE 802.11) 등) 또는 유선 통신 시스템(예, 이더넷(IEEE 802.3))을 통해 이러한 비디오 콘텐츠를 송수신하는 서비스 및 애플리케이션이 증가하고 있다. 이에 따라, VVC(Versatile Video Coding), H.265/HEVC(High Efficiency Video Coding), H.264/AVC(Advanced Video Coding)와 같은 비디오 압축 표준에 대한 논의가 활발히 진행되고 있다.
하지만, VVC, HEVC, AVC와 같은 비디오 압축 표준들은 저지연(low latency) 및 저복잡도(low complexity)의 비디오 인코딩/디코딩을 위해 설계된 것이 아니라 고압축을 위해 설계된 것이기 때문에, 최근 들어 저지연(low latency) 및 저복잡도(low complexity)의 비디오 인코딩/디코딩 기능을 제공하면서도 시각적으로 무손실(visually lossless) 압축을 가능하게 하는 JPEG(Joint Photographic Experts Group)-XS(Extra Speed and Extra Small)(ISO/IEC 21122) 표준에 대한 논의가 진행되고 있다. JPEG-XS 표준은 무선(예, 5G, NR, WiFi 시스템) 또는 유선(예, 이더넷)을 통한 비디오 실시간 스트리밍에 최적화된 비디오 압축 기술로서 JPEG-XS 표준에 기반하여 효율적으로 비디오 신호를 인코딩/디코딩하기 위한 방법 및 장치에 대한 논의가 활발히 진행되고 있다.
본 발명의 목적은 엔트로피 디코딩 성능을 향상시킬 수 있는 방법 및 이를 위한 장치를 제공하는 데 있다.
본 발명의 다른 목적은 병렬 처리에 유리한 패킷 역다중화 방법 및 이를 위한 장치를 제공하는 데 있다.
본 발명의 또 다른 목적은 수직 예측 모드에 기반하여 인코딩된 비트평면 카운트 정보를 효율적으로 병렬 처리할 수 있는 엔트로피 디코딩 방법 및 이를 위한 장치를 제공하는 데 있다.
본 발명에서 이루고자 하는 기술적 과제들은 상기 기술적 과제로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 제1 양상으로, 적어도 하나의 프레싱트(precinct)를 포함하는 비디오 신호를 위한 비트스트림을 디코딩하기 위한 장치가 제공되며, 상기 장치는 제1 엔트로피 디코더 엔진; 제2 엔트로피 디코더 엔진; 및 상기 적어도 하나의 프레싱트 중에서 현재 프레싱트의 패킷들을 제1 복수의 패킷들과 제2 복수의 패킷들로 역다중화하고, 상기 제1 복수의 패킷들을 상기 제1 엔트로피 디코더 엔진으로 전송하고, 상기 제2 복수의 패킷들을 상기 제2 엔트로피 디코더 엔진으로 전송하도록 구성된 역다중화기(demultiplexer)를 포함하되, 상기 제1 복수의 패킷들 및 상기 제2 복수의 패킷들은 각각 상기 제1 엔트로피 디코더 엔진 및 상기 제2 엔트로피 디코더 엔진에 의해 병렬적으로 엔트로피 디코딩되며, 상기 제1 복수의 패킷들은 패킷 0, 패킷 1, 패킷 4, 패킷 6, 패킷 8을 포함하고, 상기 제2 복수의 패킷들은 패킷 2, 패킷 3, 패킷 5, 패킷 7, 패킷 9를 포함할 수 있다.
본 발명의 제2 양상으로, 적어도 하나의 프레싱트(precinct)를 포함하는 비디오 신호를 위한 비트스트림을 디코딩하기 위한 방법이 제공되며, 상기 방법은 제1 엔트로피 디코더 엔진 및 제2 엔트로피 디코더 엔진을 포함하는 디코딩 장치에 의해 수행되며, 상기 적어도 하나의 프레싱트 중에서 현재 프레싱트의 패킷들을 제1 복수의 패킷들 및 제2 복수의 패킷들로 역다중화(demultiplex)하는 단계; 및 상기 제1 복수의 패킷들 및 상기 제2 복수의 패킷들을 병렬적으로 엔트로피 디코딩하는 단계를 포함하되, 상기 제1 복수의 패킷들 및 상기 제2 복수의 패킷들은 각각 상기 제1 엔트로피 디코더 엔진 및 상기 제2 엔트로피 디코더 엔진에 의해 병렬적으로 엔트로피 디코딩되며, 상기 제1 복수의 패킷들은 패킷 0, 패킷 1, 패킷 4, 패킷 6, 패킷 8을 포함하고, 상기 제2 복수의 패킷들은 패킷 2, 패킷 3, 패킷 5, 패킷 7, 패킷 9를 포함할 수 있다.
바람직하게는, 상기 병렬적인 엔트로피 디코딩은, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 0 및 1에 대한 엔트로피 디코딩과 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 2 및 3에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것과, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 4에 대한 엔트로피 디코딩과 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 5에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것과, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 6에 대한 엔트로피 디코딩과 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 7에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것과, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 8에 대한 엔트로피 디코딩과 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 9에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것을 포함할 수 있다.
본 발명의 제3 양상으로, 적어도 하나의 프레싱트(precinct)를 포함하는 비디오 신호를 위한 비트스트림을 디코딩하기 위한 장치가 제공되며, 상기 장치는 제1 엔트로피 디코더 엔진; 제2 엔트로피 디코더 엔진; 제3 엔트로피 엔진; 제4 엔트로피 엔진; 및 상기 적어도 하나의 프레싱트 중에서 현재 프레싱트의 패킷들을 제1 복수의 패킷들, 제2 복수의 패킷들, 제3 복수의 패킷들, 제4 복수의 패킷들로 역다중화하고, 상기 제1 복수의 패킷들을 상기 제1 엔트로피 디코더 엔진으로 전송하고, 상기 제2 복수의 패킷들을 상기 제2 엔트로피 디코더 엔진으로 전송하고, 상기 제3 복수의 패킷들을 상기 제3 엔트로피 디코더 엔진으로 전송하고, 상기 제4 복수의 패킷들을 상기 제4 엔트로피 디코더 엔진으로 전송하도록 구성된 역다중화기(demultiplexer)를 포함하되, 상기 제1 복수의 패킷들, 상기 제2 복수의 패킷들, 상기 제3 복수의 패킷들, 상기 제4 복수의 패킷들은 각각 상기 제1 엔트로피 디코더 엔진, 상기 제2 엔트로피 디코더 엔진, 상기 제3 엔트로피 엔진, 상기 제4 엔트로피 엔진에 의해 병렬적으로 엔트로피 디코딩되며, 상기 제1 복수의 패킷들은 패킷 0, 패킷 1, 패킷 6을 포함하고, 상기 제2 복수의 패킷들은 패킷 2, 패킷 3, 패킷 7을 포함하고, 상기 제3 복수의 패킷들은 패킷 4, 패킷 8을 포함하고, 상기 제4 복수의 패킷들은 패킷 5, 패킷 9를 포함할 수 있다.
본 발명의 제4 양상으로, 적어도 하나의 프레싱트(precinct)를 포함하는 비디오 신호를 위한 비트스트림을 디코딩하기 위한 방법이 제공되며, 상기 방법은 제1 엔트로피 디코더 엔진, 제2 엔트로피 디코더 엔진, 제3 엔트로피 엔진, 및 제4 엔트로피 엔진을 포함하는 디코딩 장치에 의해 수행되며, 상기 적어도 하나의 프레싱트 중에서 현재 프레싱트의 패킷들을 제1 복수의 패킷들, 제2 복수의 패킷들, 제3 복수의 패킷들, 제4 복수의 패킷들로 역다중화하는 단계; 및 상기 제1 복수의 패킷들, 상기 제2 복수의 패킷들, 상기 제3 복수의 패킷들, 상기 제4 복수의 패킷들을 병렬적으로 엔트로피 디코딩하는 단계를 포함하되, 상기 제1 복수의 패킷들, 상기 제2 복수의 패킷들, 상기 제3 복수의 패킷들, 상기 제4 복수의 패킷들은 각각 상기 제1 엔트로피 디코더 엔진, 상기 제2 엔트로피 디코더 엔진, 상기 제3 엔트로피 엔진, 및 상기 제4 엔트로피 엔진에 의해 병렬적으로 엔트로피 디코딩되며, 상기 제1 복수의 패킷들은 패킷 0, 패킷 1, 패킷 6을 포함하고, 상기 제2 복수의 패킷들은 패킷 2, 패킷 3, 패킷 7을 포함하고, 상기 제3 복수의 패킷들은 패킷 4, 패킷 8을 포함하고, 상기 제4 복수의 패킷들은 패킷 5, 패킷 9를 포함할 수 있다.
바람직하게는, 상기 병렬적인 엔트로피 디코딩은, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 0 및 1에 대한 엔트로피 디코딩, 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 2 및 3에 대한 엔트로피 디코딩, 상기 제3 엔트로피 디코더 엔진에 의한 상기 패킷 4에 대한 엔트로피 디코딩, 상기 제4 엔트로피 디코더 엔진에 의한 상기 패킷 5에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것과, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 6에 대한 엔트로피 디코딩, 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 7에 대한 엔트로피 디코딩, 상기 제3 엔트로피 디코더 엔진에 의한 상기 패킷 8에 대한 엔트로피 디코딩, 상기 제4 엔트로피 디코더 엔진에 의한 상기 패킷 9에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것을 포함할 수 있다.
바람직하게는, 상기 패킷 0 및 1은 상기 현재 프레싱트의 첫 번째 라인의 왼쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 2 및 3은 상기 현재 프레싱트의 두 번째 라인의 왼쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 4는 상기 현재 프레싱트의 첫 번째 라인의 오른쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 5는 상기 현재 프레싱트의 세 번째 라인의 왼쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 6은 상기 현재 프레싱트의 세 번째 라인의 오른쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 7은 상기 현재 프레싱트의 두 번째 라인의 오른쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 8은 상기 현재 프레싱트의 네 번째 라인의 왼쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 9는 상기 현재 프레싱트의 네 번째 라인의 오른쪽 절반에 해당하는 코드 그룹들을 포함할 수 있다.
바람직하게는, 각각의 엔트로피 디코더 엔진은 클록 신호에 기반하여 파이프라인 방식으로 하나의 클록마다 하나의 코드 그룹을 출력하도록 구성될 수 있다.
바람직하게는, 상기 하나의 코드 그룹은 4개의 양자화 인덱스 정보를 포함하되, 상기 양자화 인덱스 정보는 양자화된 웨이블릿 계수 정보를 나타낼 수 있다.
바람직하게는, 상기 엔트로피 디코딩은, 현재 코드 그룹을 포함하는 패킷의 비트평면 카운트 서브 패킷으로부터 잔차(residual) 정보를 획득하는 것과, 상기 현재 코드 그룹의 상위 라인의 비트평면 카운트 정보에 기반하여 예측값(predictor)을 획득하는 것과, 상기 잔차 정보 및 상기 예측값에 기반하여 상기 현재 코드 그룹의 비트평면 카운트 정보를 획득하는 것을 포함할 수 있다.
바람직하게는, 상기 잔차 정보는 가변 길이 코드(variable length code)를 포함하는 룩업 테이블(look-up table)에 기반하여 획득될 수 있다.
바람직하게는, 상기 룩업 테이블은 32x1 다중화기(multiplexer)를 포함할 수 있다.
바람직하게는, 상기 엔트로피 디코딩은, 상기 현재 코드 그룹의 비트평면 카운트 정보에 기반하여 상기 현재 코드 그룹을 포함하는 패킷의 데이터 서브 패킷으로부터 부호 정보 및 양자화 인덱스 크기 정보를 획득하는 것을 더 포함하되, 상기 부호 정보는 웨이블릿 계수 정보의 부호를 나타내고, 상기 양자화 인덱스 크기 정보는 양자화된 웨이블릿 계수 정보의 절대값을 나타낼 수 있다.
바람직하게는, 상기 엔트로피 디코딩은, 상기 현재 코드 그룹의 비트평면 카운트 정보에 기반하여 상기 현재 코드 그룹을 포함하는 데이터 서브 패킷으로부터 양자화 인덱스 크기 정보를 획득하는 것과, 상기 양자화 인덱스 크기 정보에 기반하여 상기 현재 코드 그룹을 포함하는 부호 서브 패킷으로부터 부호 정보를 획득하는 것을 더 포함하되, 상기 부호 정보는 웨이블릿 계수 정보의 부호를 나타내고, 상기 양자화 인덱스 크기 정보는 양자화된 웨이블릿 계수 정보의 절대값을 나타낼 수 있다.
바람직하게는, 상기 장치는 엔트로피 디코딩된 데이터에 기반하여 역양자화를 수행하여 웨이블릿 계수 정보를 복원하도록 구성된 역양자화기를 더 포함할 수 있다.
바람직하게는, 상기 장치는 상기 웨이블릿 계수 정보에 기반하여 역 이산 웨이블릿 변환(inverse discrete wavelet transformation)을 수행하여 샘플을 복원하도록 구성된 역변환기를 더 포함할 수 있다.
본 발명에 따르면, 엔트로피 디코더 엔진의 개수만큼 엔트로피 디코딩 성능을 향상시킬 수 있다.
또한, 본 발명에 따르면, 각각의 엔트로피 디코더 엔진에서 처리하는 데이터 양을 비슷한 수준으로 맞출 수 있어 병렬 처리에 더욱 유리할 수 있다.
또한, 본 발명에 따르면, 현재 라인의 비트평면 카운트 정보를 각 엔트로피 디코더 엔진에서 엔트로피 디코딩하기 전에 상위(또는 이전) 라인의 비트평면 카운트 정보에 대한 엔트로피 디코딩이 완료될 수 있기 때문에, 수직 예측 모드에 기반하여 인코딩된 비트평면 카운트 정보도 효율적으로 병렬 처리할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
첨부 도면은 본 발명에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되며, 본 발명에 대한 실시예를 제공하고, 상세한 설명과 함께 본 발명의 기술적 사상을 설명한다.
도 1은 크로마 서브샘플링 포맷을 예시한다.
도 2는 웨이블릿 변환을 적용하여 생성되는 밴드를 예시한다.
도 3은 프레싱트를 예시한다.
도 4는 코드 그룹을 예시한다.
도 5는 비트평면을 예시한다.
도 6은 JPEG-XS 표준에 따른 비트스트림을 예시한다.
도 7은 비디오 신호를 위한 비트스트림을 디코딩하는 방법의 순서도를 예시한다.
도 8은 엔트로피 디코딩 방법의 순서도를 예시한다.
도 9는 엔트로피 디코더 엔진의 구조를 예시한다.
도 10과 도 11은 본 발명에 따른 엔트로피 디코더의 구조를 예시한다.
도 12와 도 13은 본 발명에 따른 엔트로피 디코딩 방법의 순서도를 예시한다.
도 14는 본 발명에 따른 디코딩 장치의 블록도를 예시한다.
이하의 기술은 비디오 신호(video signal)를 인코딩(encoding) 및/또는 디코딩(decoding)하도록 구성된 비디오 신호 처리 장치에서 사용될 수 있다. 일반적으로 비디오 신호는 눈으로 인지가능한 영상(image)들 또는 픽처(picture)들의 시퀀스를 지칭하지만, 본 명세서에서 비디오 신호는 코딩된 픽처를 나타내는 비트들의 시퀀스(sequence)를 지칭하는데 사용될 수도 있다. 또한, 본 명세서에서, 코딩된 픽처를 나타내는 비트들의 시퀀스는 비디오 신호를 위한 비트스트림으로 지칭될 수 있으며, 간략히 비트스트림 또는 비디오 신호라고 지칭될 수 있다. 비트스트림은 코드스트림과 혼용될 수 있다.
픽처(picture)는 샘플들의 배열을 지칭할 수 있으며, 프레임(frame), 영상(image) 등의 용어와 혼용될 수 있다. 보다 구체적으로, 픽처는 샘플들의 이차원 배열 또는 이차원 샘플 배열을 지칭할 수 있다. 본 명세서에서, 픽처와 영상은 혼용될 수 있다. 샘플은 픽처를 구성하는 최소 단위를 지칭할 수 있고, 픽셀(pixel), 화소(picture element), 펠(pel) 등으로 지칭될 수 있다. 픽처는 휘도(luminance) 성분 및/또는 색차(color difference) 성분을 포함할 수 있다. 본 명세서에서, 휘도 성분은 루마(luma) 성분 또는 루마 신호 또는 루마 등의 용어와 혼용될 수 있고, 색차 성분은 크로미넌스(chrominance) 성분 또는 크로마 성분 또는 크로미넌스 신호 또는 크로마 신호 또는 크로마 등의 용어와 혼용될 수 있다. 본 명세서에서, 코딩은 인코딩을 지칭하는 데 사용될 수도 있고, 혹은 인코딩/디코딩을 통칭할 수 있다.
또한, 본 명세서에서 16진수(hexadecimal number)는 10진수와의 구별을 위해 “0x”의 접두어를 붙여 값을 표현한다. 예를 들어, 0xFF는 FF의 값을 가지는 1바이트 16진수를 나타낸다.
본 발명은 JPEG-XS 표준에 기반하여 설명되지만 본 발명의 원리는 JPEG-XS 표준에 제한되는 것은 아니며 JPEG-XS 표준과 동일/유사한 다른 비디오 압축 기술에도 적용될 수 있다. 또한, 디코딩 과정을 중심으로 본 발명을 설명하지만, 본 명세서에서 설명된 디코딩 과정의 역순으로 인코딩 과정이 수행될 수 있으며, 인코딩 과정은 본 명세서에서 설명된 디코딩 과정을 구성하는 단계들에 대응하는 단계들을 포함할 수 있음은 이해될 것이다.
도 1은 크로마 서브샘플링 포맷을 예시한다. 도 1(a)는 444 포맷을 예시하고, 도 1(b)는 422 포맷을 예시한다.
픽처는 RGB 컬러 포맷과 YCbCr 컬러 포맷을 가질 수 있다. RGB 컬러 포맷을 가지는 픽처는 R(Red) 성분(component), G(Green) 성분, B(Blue) 성분을 포함하며, 인코딩/디코딩을 위해 YCbCr 컬러 포맷으로 변환될 수 있다. YCbCr 컬러 포맷을 가지는 픽처는 루마 성분과 2개의 크로마 성분(Cb, Cr)을 포함한다. RGB 포맷과 YCbCr 포맷 간의 변환 방법은 영상 처리 기술 분야에서 널리 알려져 있으므로 본 명세서에서는 자세한 설명을 생략하도록 한다.
YCbCr 포맷을 가지는 픽처의 각 성분(루마 성분, 크로마 성분)은 직사각형의 샘플링 그리드를 따라 정렬되는 샘플들의 이차원 배열로 표현될 수 있다. 크로마 성분은 루마 성분과 동일한 크기(dimension)를 가질 수 있으나, 사람의 눈은 크로마 성분보다 루마 성분에 덜 민감하기 때문에 크로마 신호의 정보량을 줄이기 위해 크로마 성분의 샘플들을 서브샘플링하여 나타낼 수 있다.
도 1(a)를 참조하면, 루마 샘플과 크로마 샘플이 동일한 샘플링 그리드 상에서 샘플링될 수 있으며, 이 경우 픽처의 루마 성분과 크로마 성분은 동일한 크기(dimension)를 가질 수 있다. 이러한 크로마 서브샘플링 포맷을 444 크로마 서브샘플링 포맷 또는 444 포맷이라고 지칭하며, 또는 4:4:4 크로마 서브샘플링 포맷 또는 4:4:4 포맷으로 지칭할 수 있다.
도 1(b)를 참조하면, 루마 샘플들은 도 1(a)와 동일하게 샘플링되지만, 크로마 성분의 샘플들에 대해서는 수평 방향으로 2:1 서브샘플링이 적용될 수 있다. 예를 들어, 루마 샘플들은 2개의 샘플 그리드(120) 상에서 샘플링되지만, 크로마 샘플들은 2개의 샘플 그리드(120) 중 왼쪽 그리드 상에서만 샘플링될 수 있다. 이러한 크로마 서브샘플링 포맷을 422 크로마 서브샘플링 포맷 또는 422 포맷이라고 지칭하며, 또는 4:2:2 크로마 서브샘플링 포맷 또는 4:2:2 포맷으로 지칭할 수 있다. 422 포맷이 적용되는 경우, 픽처의 크로마 성분의 수평 크기(horizontal dimension)는 루마 성분의 수평 크기의 절반이지만, 크로마 성분의 수직 크기(vertical dimension)는 루마 성분의 수직 크기와 동일하다.
도 2는 웨이블릿 변환을 적용하여 생성되는 밴드를 예시한다.
JPEG-XS 표준에서는 인코딩을 위해 이산 웨이블릿 변환(discrete wavelet transformation, DWT)이 사용되고 디코딩을 위해 역 이산 웨이블릿 변환(inverse DWT)이 사용된다. 이산 웨이블릿 변환은 영상의 샘플들에 수평 방향 및/또는 수직 방향으로 저대역 통과 필터(lowpass filter) 및/또는 고대역 통과 필터(highpass filter)를 적용하여 영상을 적어도 하나의 고주파 밴드와 적어도 하나의 저주파 밴드로 분해(decomposition)하는 과정을 지칭하며, 본 명세서에서는 간략히 웨이블릿 변환 또는 변환이라고 지칭될 수 있다. 웨이블릿 변환을 위해 적용되는 저대역 및/또는 고대역 통과 필터를 웨이블릿 필터라고 지칭할 수 있다. 공간 도메인에서 영상을 구성하는 샘플들에 웨이블릿 변환을 수행하여 생성되는 결과를 웨이블릿 계수(wavelet coefficient) 정보라고 지칭하며, 본 명세서에서는 변환 계수 정보, 웨이블릿 계수, 변환 계수 등의 용어와 혼용될 수 있다.
역 이산 웨이블릿 변환은 적어도 하나의 고주파 밴드와 적어도 하나의 저주파 밴드를 인터리빙(interleave)한 후 웨이블릿 필터를 적용하여 영상 샘플들을 복원하거나 하나의 밴드로 합성(composition)하는 과정을 지칭하며, 본 명세서에서는 간략히 역 웨이블릿 변환 또는 역변환이라고 지칭될 수 있다. 동일한 웨이블릿 필터가 변환 및 역변환에 사용될 수 있다.
JPEG-XS 표준에서는 수평 방향으로 1번 내지 5번 웨이블릿 변환을 적용하여 영상을 2개 내지 6개의 밴드로 수평 분해(horizontal decomposition)할 수 있고, 수직 방향으로 0번 내지 2번 웨이블릿 변환을 적용하여 영상을 1개 내지 3개의 밴드로 수직 분해(vertical decomposition)할 수 있다. 수평 방향 또는 수직 방향으로 웨이블릿 필터를 적용하여 밴드들로 분해하는 횟수를 분해 레벨(decomposition level) 또는 분해 깊이(decomposition depth)라고 지칭한다.
도 2를 참조하면, 웨이블릿 변환을 통해 영상을 5 레벨 수평 분해 및 2 레벨 수직 분해한 결과를 예시한다. 도 2의 예에서, H는 웨이블릿 필터를 적용하여 생성된 고주파 밴드를 지칭하고, L은 고주파 밴드를 제외시켜 생성되는 저주파 밴드를 지칭하고, 아래 첨자는 분해 레벨을 지칭한다. 앞의 문자는 수평 방향을 나타내고, 뒤의 문자는 수직 방향을 나타낸다.
예를 들어, 인코더에서는, 원 영상(original image)에 수직 웨이블릿 변환을 적용하여 원 영상을 LH
0,1 밴드와 LL
0,1 밴드로 분해한 다음, LL
0,1 밴드에 수평 웨이블릿 변환을 적용하여 LL
0,1 밴드를 LL
1,1 밴드와 HL
1,1 밴드로 분해하고, LH
0,1 밴드에 수평 웨이블릿 변환을 적용하여 LH
0,1 밴드를 LH
1,1 밴드와 HH
1,1 밴드로 분해할 수 있다. 마찬가지로, LL
1,1 밴드에 수직 웨이블릿 변환을 적용하여 LL
1,1 밴드를 LH
1,2 밴드와 LL
1,2 밴드로 분해한 다음, LL
1,2 밴드에 수평 웨이블릿 변환을 적용하여 LL
1,2 밴드를 LL
2,2 밴드와 HL
2,2 밴드로 분해하고, LH
1,2 밴드에 수평 웨이블릿 변환을 적용하여 LH
1,2 밴드를 LH
2,2 밴드와 HH
2,2 밴드로 분해할 수 있다. LL
2,2 밴드에 수평 웨이블릿 변환을 적용하여 HL
3,2 밴드와 LL
3,2 밴드로 분해할 수 있다. 마찬가지로, LL
3,2 밴드에 수평 웨이블릿 변환을 적용하여 HL
4,2 밴드와 LL
4,2 밴드로 분해할 수 있고, LL
4,2 밴드에 수평 웨이블릿 변환을 적용하여 HL
5,2 밴드와 LL
5,2 밴드로 분해할 수 있다.
디코더에서는 상기 설명한 과정의 역순으로 밴드들을 합성하여 주파수 도메인의 웨이블릿 계수들로부터 공간 도메인의 샘플들을 복원할 수 있다.
도 2에 예시된 바와 같이, 웨이블릿 변환을 적용하여 생성되는 밴드의 크기는 원 영상 또는 이전 밴드의 크기의 절반이 될 수 있다. 따라서, 주파수 도메인에서 각 밴드를 연접하여 형성되는 전체 밴드들의 크기(dimension)(즉, 전체 밴드들의 폭과 높이를 구성하는 웨이블릿 계수들의 개수)는 공간 도메인에서 영상의 크기(즉, 영상의 폭과 높이를 구성하는 샘플들의 개수)와 동일할 수 있다.
또한, LL
5,2 밴드, HL
5,2 밴드, HL
4,2 밴드, HL
3,2 밴드, HL
2,2 밴드, LH
2,2 밴드, HH
2,2 밴드에서 웨이블릿 계수의 하나의 행은 공간 도메인에서 샘플들의 4개 행에 대응될 수 있고, HL
1,1 밴드, LH
1,1 밴드, HH
1,1 밴드에서 웨이블릿 계수의 2개 행은 공간 도메인에서 샘플들의 동일한 2개 행에 대응될 수 있다. 즉, LL
5,2 밴드, HL
5,2 밴드, HL
4,2 밴드, HL
3,2 밴드, HL
2,2 밴드, LH
2,2 밴드, HH
2,2 밴드에서 웨이블릿 계수의 1개 행과 HL
1,1 밴드, LH
1,1 밴드, HH
1,1 밴드에서 웨이블릿 계수의 2개 행은 동일한 공간 영역(spatial region)을 복원하는데 기여할 수 있다. 공간 영역은 공간 도메인에서의 특정한 크기를 가지는 샘플들의 영역을 지칭한다.
도 3은 프레싱트를 예시한다.
앞서 설명한 바와 같이, 웨이블릿 변환을 거쳐 생성된 웨이블릿 계수 정보는 주파수 도메인에서 프레싱트(precinct) 단위로 그룹화될 수 있다. 프레싱트는 영상의 특정 공간 영역(의 복원)에 기여하는 모든 밴드들의 웨이블릿 계수들의 모음(collection)을 지칭한다. 프레싱트의 폭은 영상의 폭과 동일하게 설정되거나, 혹은 8의 배수로 설정될 수 있다. 프레싱트의 폭을 지시하는 정보는 비트스트림의 픽처 헤더(예, 도 6 참조)에 포함될 수 있으며, 디코더는 픽처 헤더를 파싱하여 프레싱트의 폭을 식별할 수 있다.
도 3을 참조하면, 굵은 선은 프레싱트의 경계를 나타내고, 얇은 선은 프레싱트를 구성하는 밴드의 경계를 나타낸다. 도 3의 예에서는 프레싱트의 폭이 영상의 폭(Wf)과 동일하게 설정된다고 가정하지만, 본 발명은 이에 제한되지 않는다.
먼저, 설명의 편의를 위해 밴드 인덱스를 정의한다. 각 밴드들에 대해 웨이블릿 필터 타입 β가 할당될 수 있고, 웨이블릿 필터 타입 β에 기반하여 각 밴드들의 인덱스가 주어질 수 있다. 예를 들어, 표 1은 도 2에 예시된 밴드들에 대한 웨이블릿 필터 타입의 값을 예시하며, 각 밴드들의 인덱스는 수학식 1에 기반하여 주어질 수 있다.
[표 1]
[수학식 1]
수학식 1에서는 b는 밴드 인덱스를 나타내고, Nc는 영상의 성분 개수를 나타내고, i는 성분 인덱스를 나타낸다. 예를 들어, 영상이 YCbCr 포맷을 가지는 경우, Nc는 3이고, Y 성분의 인덱스는 0이고, Cb 성분의 인덱스는 1이고, Cr 성분의 인덱스는 2일 수 있다. 따라서, Y 성분에 대한 밴드는 0, 3, 6, 9, 12, 15, 18, 21, 24, 27의 인덱스를 가질 수 있고, Cb 성분에 대한 밴드는 1, 4, 7, 10, 13, 16, 19, 22, 25, 28의 인덱스를 가질 수 있고, Cr 성분에 대한 밴드는 2, 5, 8, 11, 14, 17, 20, 23, 26, 29의 인덱스를 가질 수 있다.
앞서 설명한 바와 같이, LL
5,2 밴드, HL
5,2 밴드, HL
4,2 밴드, HL
3,2 밴드, HL
2,2 밴드, LH
2,2 밴드, HH
2,2 밴드에서 변환 개수의 1개 행과 HL
1,1 밴드, LH
1,1 밴드, HH
1,1 밴드에서 변환 계수의 2개 행이 동일한 공간 영역(spatial region)을 복원하는데 기여할 수 있으므로, 도 3의 예에서 하나의 프레싱트(320)는 밴드 0, 3, 6, 8, 12, 15, 18 각각으로부터 웨이블릿 계수 1개 행과 밴드 21, 24, 27 각각으로부터 웨이블릿 계수 2개 행을 포함할 수 있다.
각 프레싱트의 웨이블릿 계수들은 양자화(quantization)를 거쳐 패킷 단위로 엔트로피 인코딩될 수 있다. 보다 구체적으로, 프레싱트로부터 엔트로피 인코딩된 데이터는 프레싱트의 밴드 및 라인 별로 하나 또는 그 이상의 패킷으로 그룹화될 수 있다. 예를 들어, 표 2는 패킷과 라인 및 밴드의 관계를 예시한다.
[표 2]
표 2에 기반하여 도 3을 참조하면, 하나의 프레싱트(340)에 대한 (엔트로피 인코딩된) 데이터는 10개의 패킷, 즉 패킷 0 내지 패킷 9에 포함된다. 보다 구체적으로, 하나의 프레싱트(340)를 구성하는 밴드 0, 3, 6, 9(빗금친 부분 참조)에 대한 (엔트로피 인코딩된) 데이터는 하나의 패킷(패킷 0)에 포함된다. 또한, 밴드 12에 대한 (엔트로피 인코딩된) 데이터는 하나의 패킷, 즉 패킷 1에 포함되고, 밴드 15에 대한 (엔트로피 인코딩된) 데이터는 하나의 패킷, 즉 패킷 2에 포함되고, 밴드 18에 대한 (엔트로피 인코딩된) 데이터는 하나의 패킷, 즉 패킷 3에 포함된다. 또한, 밴드 21에 대한 (엔트로피 인코딩된) 데이터는 라인 별로 2개의 패킷, 즉 패킷 4와 패킷 7에 포함되고, 밴드 24에 대한 (엔트로피 인코딩된) 데이터는 라인 별로 2개의 패킷, 즉 패킷 5와 8에 포함되고, 밴드 27에 대한 (엔트로피 인코딩된) 데이터는 라인 별로 2개의 패킷, 즉 패킷 6과 9에 포함될 수 있다.
또한, 표 2에 기반하여, 크로마 성분 밴드에 대한 (엔트로피 코딩된) 데이터도 해당 패킷에 포함될 수 있다.
도 4는 코드 그룹을 예시한다.
프레싱트의 하나의 라인에서 복수의 연속적인 웨이블릿 계수들은 그룹화되어 그룹 단위로 양자화 및 엔트로피 코딩이 수행될 수 있다. 이러한 웨이블릿 계수들의 그룹을 코드 그룹(code group)이라고 지칭한다. 코드 그룹의 각 웨이블릿 계수들에 대해 양자화를 수행하여 양자화된 웨이블릿 계수들이 생성될 수 있는데, 양자화된 웨이블릿 계수들을 양자화 인덱스(quantization index)라고 지칭하고, 본 명세서에서 양자화 인덱스 정보, 양자화된 웨이블릿 계수 정보, 양자화된 변환 계수 정보 등으로 지칭될 수 있다. 양자화가 적용된 양자화 인덱스들의 그룹도 코드 그룹으로 지칭될 수 있다. 제한적이지 않은 예로, 하나의 코드 그룹은 4개의 웨이블릿 계수 정보 또는 양자화 인덱스 정보를 포함할 수 있다.
예를 들어, 도 4를 참조하면, 특정 밴드의 하나의 라인에 포함된 웨이블릿 계수들이 예시되어 있다. 상기 라인의 처음부터 복수(예, 4개)의 연속적인 웨이블릿 계수들을 그룹화하여 코드 그룹을 형성할 수 있다. 구체적으로, 도 4의 예에서, 특정 밴드에 포함된 하나의 라인은 처음부터 연속적으로 웨이블릿 계수 -32, 274, 0, 6, ...을 포함할 수 있으며, 이들 4개의 웨이블릿 계수를 하나의 그룹으로 그룹화하여 양자화 및 엔트로피 인코딩을 수행할 수 있다.
도 5는 비트평면을 예시한다.
웨이블릿 계수 정보는 부호(sign) 정보와 크기(magnitude) 정보로 표현될 수 있다. 부호 정보는 웨이블릿 계수 정보의 부호를 나타낸다. 제한적이지 않은 예로, 부호 정보가 1의 값을 가지는 경우 음의 부호를 나타내고, 부호 정보가 0의 값을 가지는 경우 양의 부호를 나타낼 수 있다. 크기(magnitude) 정보는 웨이블릿 계수의 절대값을 나타낸다.
코드 그룹 내에서 모두 동일한 비트 위치에 있는 비트들의 배열을 비트평면(bitplane)이라고 지칭하고, 최하위 비트평면으로부터 0이 아닌 최상위 비트평면까지의 비트평면의 개수를 나타내는 정보를 비트평면 카운트(bitplane count) 정보(편의상 “M 정보”로 지칭)라고 지칭하며, 간략히 비트평면 카운트라고 지칭할 수 있다.
도 5를 참조하면, 도 4에 예시된 코드 그룹에 포함된 웨이블릿 계수들에 대한 비트평면을 예시한다. 도 5의 예에서, 웨이블릿 계수의 크기 정보는 16비트로 표현되고, 웨이블릿 계수의 부호 정보는 1비트로 표현되며, 양자화에 의해 최하위 2개 비트가 제거된다고 가정하지만, 이는 오로지 예시를 위한 것일 뿐 본 발명은 이에 제한되지 않는다. 하나의 코드 그룹은 4개의 웨이블릿 계수 -32, 274, 0, 6을 포함하고 있으므로, 비트평면 9부터 비트평면 15까지 모두 0이고, 0이 아닌 최상위 비트평면은 9번째 비트 위치(즉, 비트 평면 8)에 있다. 따라서, 도 5의 예에서, M 정보의 값은 9로 설정될 수 있다.
또한, 양자화에 의해 웨이블릿 계수로부터 제거되는 최하위 비트평면의 개수를 나타내는 정보를 절삭 위치(truncation position) 정보(편의상 “T 정보”로 지칭)라고 지칭한다. 일 예로, T 정보는 0 내지 15의 값으로 설정될 수 있다. 도 5의 예에서, 양자화에 의해 최하위 2개 비트가 제거된다고 가정하므로, 비트 0과 비트 1이 제거될 수 있고, T 정보의 값은 2로 설정될 수 있다. T 정보는 가중치 테이블(예, 도 6 참조)을 통해 전송되는 밴드 우선순위(priority) 정보(편의상 “P 정보”로 지칭)와 프레싱트 헤더(예, 도 6 참조)를 통해 전송되는 프레싱트 양자화 정보(편의상 “Q 정보”로 지칭) 및 프레싱트 개량 임계치(refinement threshold) 정보(편의상 “R 정보”로 지칭)에 기반하여 인코딩될 수 있다.
복수의 연속된 코드 그룹들은 하나의 시그니피컨스 그룹(significance group)으로 그룹화될 수 있다. 각각의 시그니피컨스 그룹에 대해 시그니피컨스 그룹이 0이 아닌(non-zero) 코드 그룹을 포함하는지 여부를 나타내는 정보를 비트스트림을 통해 시그널링될 수 있으며, 이 정보를 시그니피컨스 플래그 정보(편의상 “Z 정보”로 지칭)라고 지칭한다. 예를 들어, Z 정보가 0의 값을 가지면 해당 시그니피컨스 그룹이 적어도 하나의 0이 아닌 코드 그룹을 포함할 수 있고, Z 정보가 1의 값을 가지면 해당 시그니피컨스 그룹 내의 모든 코드 그룹은 0임을 나타낸다. 제한적이지 않은 예로, 하나의 시그니피컨스 그룹은 8개의 코드 그룹을 포함할 수 있다.
웨이블릿 계수와 마찬가지로, 양자화 인덱스는 부호(sign) 정보와 크기(magnitude) 정보로 표현될 수 있다. 부호 정보는 웨이블릿 계수의 부호 정보와 동일하게 설정된다. 제한적이지 않은 예로, 부호 정보가 1의 값을 가지는 경우 음의 부호를 나타내고, 부호 정보가 0의 값을 가지는 경우 양의 부호를 나타낼 수 있다. 크기(magnitude) 정보는 양자화된 웨이블릿 계수의 절대값을 나타내며 최대 16 비트로 표현될 수 있으며, 양자화 인덱스 크기(quantization index magnitude) 정보 또는 양자화 인덱스 크기라고 지칭될 수 있다.
JPEG-XS 표준에서는 데드존(deadzone) 양자화와 유니폼(uniform) 양자화의 2가지 타입의 양자화를 지원한다. 이를 위해, 데드존 양자화와 유니폼 양자화 중에서 (인코딩에) 사용된 양자화 타입을 지시하는 정보(편의상 “Qpih 정보”로 지칭)가 픽처 헤더(예, 도 6 참조)에 포함될 수 있다. 예를 들어, 데드존 양자화는 웨이블릿 계수를 부호 정보와 크기(magnitude) 정보로 나타내고, 크기 정보를 T 정보의 값만큼 우측 시프트(right shift)시키는 동작으로 구현될 수 있다. 예를 들어, 데드존 양자화는 수학식 2에 기반하여 수행될 수 있다. 수학식 2에서 v는 양자화 인덱스 크기를 나타내고, d는 웨이블릿 계수 크기 정보를 나타내고, T는 절삭 위치 정보를 나타낸다.
[수학식 2]
v = d >> T
유니폼 양자화는 양자화 스텝 사이즈를
로 하여 웨이블릿 계수의 크기 정보를 나눈 후 반올림하는 동작으로 구현될 수 있다. 예를 들어, 유니폼 양자화는 수학식 3에 기반하여 수행될 수 있다. 수학식 3에서 v는 양자화 인덱스 크기를 나타내고, d는 웨이블릿 계수 크기 정보를 나타내고, M은 비트평면 카운트정보를 나타내고, T는 절삭 위치 정보를 나타낸다.
[수학식 3]
양자화를 통해 생성된 양자화 인덱스 크기 정보 및 부호 정보는 엔트로피 인코딩을 통해 비트스트림에 추가될 수 있다.
도 6은 JPEG-XS 표준에 따른 비트스트림을 예시한다.
하나의 영상을 JPEG-XS 표준에 따라 인코딩할 경우 생성된 비트스트림은 도 6에 예시된 신택스 정보들(610, 620, 630, 640)을 포함할 수 있다. 비디오 신호는 복수의 영상을 포함할 수 있으므로, 각 영상을 JPEG-XS 표준에 따라 인코딩할 경우 도 6에 예시된 비트스트림이 연접(concatenate)된 형태의 비트스트림이 생성될 수 있다. 도 6에서 선으로 구분된 신택스 정보는 바이트 단위로 정렬될 수 있다. 따라서, 인코딩시 해당 신택스 정보가 바이트 단위로 정렬되지 않는 경우 바이트 정렬을 위해 패딩 비트 또는 필러 비트가 추가될 수 있다. 예를 들어, 패딩 비트 또는 필러 비트로서 0이 해당 신택스 정보의 마지막에 추가될 수 있다.
SOC(start of codestream) 마커(marker)는 비트스트림이 JEPG-XS 표준에 따른 비트스트림임을 식별하기 위한 신택스 정보이고, 하나의 픽처에 대한 비트스트림의 시작을 의미한다. 예를 들어, SOC 마커는 2바이트의 길이를 가질 수 있고, 0xFF10의 값을 가질 수 있다. EOC 마커는 비트스트림의 끝을 식별하기 위한 정보이고, 하나의 픽처에 대한 비트스트림의 끝을 의미한다. 예를 들어, EOC 마커는 2바이트의 길이를 가질 수 있고, 0xFF11의 값을 가질 수 있다. 디코더에서는 SOC 마커와 EOC 마커에 기반하여 하나의 픽처에 대한 비트스트림의 시작과 끝을 식별할 수 있다.
능력치 마커(capabilities marker, 또는 CAP marker)는 JPEG-XS에 따른 비트스트림을 디코딩하기 위해 필요한 능력치(capability)를 식별하기 위한 정보이다. 현재 표준에서는 능력치를 정의하고 있지 않으며, 능력치 마커는 2바이트의 0xFF50의 값을 포함할 수 있다.
픽처 헤더는 영상의 크기(dimension)에 관한 정보, 영상의 성분(component)에 관한 정보, 디코더의 설정(configuration)을 위한 정보를 포함한다. 구체적으로, 픽처 헤더는 픽처 헤더임을 식별하기 위한 마커(예, 2바이트 길이의 0xFF12), 영상의 폭(width)을 (샘플 개수로) 지시하는 정보, 영상의 높이(height)를 (샘플 개수로) 지시하는 정보, 영상에서 성분들의 개수를 지시하는 정보 등을 포함할 수 있다. 또한, 픽처 헤더는 프레싱트의 폭을 지시하는 정보, 양자화 타입을 지시하는 정보(또는 Qpih 정보), 부호 정보가 데이터 서브 패킷과 함께 인코딩되는지 아니면 별도로 부호 서브 패킷으로 인코딩되는지 여부를 지시하는 정보(편의상 “Fs 정보”로 지칭), 역 다중 성분 변환 수행 여부를 지시하는 정보(편의상 “Cpih 정보”로 지칭), 비트평면 카운트 정보(또는 M 정보)를 위한 비트 개수를 지시하는 정보(편의상 “Br 정보”로 지칭)를 포함할 수 있다.
성분 테이블(component table 또는 CDT)은 영상을 구성하는 성분들에 대한 구체적인 정보를 포함한다. 구체적으로, 성분 테이블은 성분 테이블의 시작을 식별하기 위한 마커(예, 0xFF13), 각 성분의 비트 정밀도(bit precision)를 지시하는 정보, 각 성분의 수평 방향 서브샘플링 인자(horizontal subsample factor)를 지시하는 정보(편의상 “Sx”라 지칭), 각 성분의 수직 방향 서브샘플링 인자를 지시하는 정보(편의상 “Sy”라 지칭) 등을 포함할 수 있다. 비트 정밀도는 하나의 샘플을 나타내는데 필요한 비트 개수를 지칭한다. 본 발명을 제한하지 않는 예로서, Sx와 Sy가 1의 값을 가지는 경우 1:1 서브샘플링을 지시하고, Sx와 Sy가 2의 값을 가지는 경우 2:1 서브샘플링을 지시한다. 따라서, 444 포맷(예, 도 1(a) 참조)의 경우, Sx와 Sy는 모든 성분에 대해 1의 값을 가질 수 있다. 422 포맷(예, 도 1(b) 참조)의 경우, Sy는 모든 성분에 대해 1의 값을 가질 수 있지만, Sx는 루마 성분에 대해 1의 값을 가지고 크로마 성분에 대해 2의 값을 가질 수 있다.
가중치 테이블(weights table 또는 WDT)은 프레싱트(precinct)의 양자화 및 역양자화와 관련하여 각 밴드의 이득(gain)을 설정하는데 필요한 파라미터들을 포함한다. 구체적으로, 가중치 테이블은 가중치 테이블의 시작을 식별하기 위한 마커(예, 0xFF14), 각 밴드의 이득을 지시하는 정보, 각 밴드의 우선 순위(priority)를 지시하는 정보(또는 P 정보) 등을 포함할 수 있다. 가중치 테이블에 포함된 파라미터들은 프레싱트 헤더의 파라미터들(예, Q 정보 및 R 정보)과 함께 각 밴드의 웨이블릿 계수(wavelet coefficient)의 양자화 및 역양자화를 수행하는데 이용된다.
확장 마커(extension marker)는 확정 마커의 시작을 식별하기 위한 마커(예, 0xFF15)와 함께 일반 메타데이터(generic metadata) 또는 벤더 특정(vendor-specific) 메타데이터를 포함할 수 있다.
슬라이스는 영상의 다른 부분과 독립적으로 코딩을 수행할 수 있는 단위를 지칭할 수 있으며, 영상에서 수평 스트라이프(horizontal stripe)를 복원(reconstruct)하는데 필요한 웨이블릿 계수(wavelet coefficient)를 포함한다. 수평 스트라이프는 영상에서 하나 또는 그 이상의 행(row)을 포함하는 영역을 지칭한다. 슬라이스는 하나 이상의 프레싱트를 포함할 수 있다. 비트스트림 내에서 슬라이스는 슬라이스 헤더와 정수 개의 프레싱트로 표현될 수 있다(620).
슬라이스 헤더는 해당 슬라이스의 시작을 식별하기 위한 마커(예, 0xFF20), 슬라이스 헤더의 사이즈(예, 바이트 개수)를 지시하는 정보(편의상 “Lslh 정보”로 지칭), 영상 내에서 해당 슬라이스의 인덱스를 지시하는 정보를 포함할 수 있다. 슬라이스의 인덱스는 영상을 구성하는 슬라이스의 순서를 나타내며, 인덱스 값은 영상의 상단에서부터 영상의 하단으로 진행하면서 0부터 오름차순으로 할당될 수 있다.
프레싱트는 영상의 특정 공간 영역(spatial region)에 기여하는 모든 밴드들의 웨이블릿 계수들의 모음(collection)을 지칭하며, 프레싱트에 대한 (엔트로피 인코딩된) 데이터는 하나 또는 그 이상의 패킷에 포함될 수 있다(예, 도 3 및 관련 설명 참조). 비트스트림 내에서 프레싱트는 프레싱트 헤더와 정수 개의 패킷들로 표현될 수 있다(630).
프레싱트 헤더는 프레싱트(630)에 포함된 (엔트로피 인코딩된) 데이터의 사이즈(예, 바이트 개수)를 지시하는 정보(편의상 “Lprc 정보”로 지칭), 프레싱트(630)의 절삭 위치 정보(또는 T 정보, 도 5 및 관련 설명 참조)를 획득하는데 필요한 정보(예, Q 정보 및 R 정보), 각 밴드들에 대한 비트플레인 카운트의 코딩 모드를 지시하는 정보(편의상 “D 정보”로 지칭)를 포함할 수 있다. Lprc 정보는 프레싱트 헤더의 끝에서부터 다음 프레싱트 헤더 또는 슬라이스 헤더 또는 EOC 마커 전까지의 (엔트로피 인코딩된) 데이터의 사이즈를 바이트 개수로 나타낸다. D 정보는 2개 비트로 구성되며, 2개 비트 중 상위 비트는 시그니피컨스 코딩이 사용되는지 여부를 지시하고, 2개 비트 중 하위 비트는 비트플레인 카운트 코딩 모드를 지시한다.
시그니피컨스 코딩은 복수(예, 8)의 코드 그룹을 그룹화하여 시그니피컨스 그룹을 형성하고 각 시그니피컨스 그룹에 대해 Z 정보(또는 시그니피컨스 플래그 정보, 도 5 및 관련 설명 참조)를 생성하여 시그니피컨스 서브 패킷을 통해 비트스트림에 추가하는 것을 지칭한다. 예를 들어, D 정보의 상위 비트가 1인 경우 시그니피컨스 코딩이 사용됨을 지시하고, 비트스트림 내에서 각 패킷은 시그니피컨스 서브 패킷을 포함한다. 반면, D 정보의 상위 비트가 0인 경우 시그니피컨스 코딩이 사용되지 않음을 지시하고, 비트스트림 내에서 각 패킷은 시그니피컨스 서브 패킷을 포함하지 않는다.
비트평면 카운트 코딩 모드는 M 정보(또는 비트평면 카운트 정보, 도 5 및 관련 설명 참조)를 코딩하는 모드를 의미하며, 원시 모드(raw mode), 비예측 모드(no prediction mode), 수직 예측 모드(vertical prediction mode)를 포함할 수 있다. 수직 예측 모드의 경우, 현재 프레싱트 내에서 현재 코드 그룹을 포함하는 라인의 상위 라인의 M 정보를 예측값(predictor)(또는 predicted value)으로 사용하여 현재 코드 그룹의 M 정보와 예측값 간의 잔차(residual) 정보를 비트평면 카운트 서브 패킷에 인코딩한다. 수직 예측 모드의 경우, 잔차 정보는 가변 길이 코드를 이용하여 인코딩될 수 있다.
비예측 모드의 경우, 상위 라인의 M 정보 대신 T 정보를 예측값으로 하여 현재 코드 그룹의 M 정보의 잔차 정보를 구하고 잔차 정보를 비트평면 카운트 서브 패킷에 인코딩한다. 제한적이지 않은 예로, D 정보의 하위 비트가 0인 경우 비예측 모드를 지시하고, D 정보의 하위 비트가 1인 경우 수직 예측 모드를 지시할 수 있다. 비예측 모드의 경우, 잔차 정보는 가변 길이 코드를 이용하여 인코딩될 수 있다.
원시 모드의 경우, 영상 내에서 M 정보는 고정된 비트 개수로 인코딩될 수 있으며, 비트 개수를 지시하는 정보(편의상 “Br 정보”로 지칭)는 픽처 헤더(예, 도 6 참조)에 포함될 수 있다. 원시 모드는 패킷 헤더를 통해 시그널링되는 오버라이드 플래그 정보(또는 아래 Dr 정보)에 따라 결정될 수 있다. 예를 들어, Dr 정보가 1인 경우 원시 모드가 적용되고, Dr 정보가 0인 경우 D 정보에 따라 비트평면 카운트 코딩 모드가 결정될 수 있다.
패킷은 프레싱트 내에서 하나 또는 그 이상의 밴드에서 하나의 라인에 포함된 웨이블릿 계수들을 양자화 및 엔트로피 인코딩한 데이터를 포함한다(예, 도 3의 프레싱트 340 및 패킷 0~9 참조). 패킷은 비트스트림 내에서 패킷 헤더와 복수의 서브 패킷으로 표현될 수 있으며, 서브 패킷(subpacket)은 시그니피컨스 서브 패킷, 비트평면 카운트 서브 패킷, 데이터 서브 패킷, 부호 서브 패킷 중 적어도 하나를 포함할 수 있다(640).
패킷 헤더는 비트평면 카운트 정보의 코딩 모드를 추가적으로 지시하는 오버라이드 플래그 정보(편의상 “Dr 정보”로 지칭), 데이터 서브 패킷의 사이즈(예, 바이트 개수)를 지시하는 정보(편의상 “Ldat 정보”로 지칭), 비트평면 카운트 서브 패킷의 사이즈(예, 바이트 개수)를 지시하는 정보(편의상 “Lcnt 정보”로 지칭), 부호 서브 패킷의 사이즈(예, 바이트 개수)를 지시하는 정보(편의상 “Lsgn 정보”로 지칭)를 포함할 수 있다. Dr 정보는 패킷에 포함된 코드 그룹의 M 정보에 대해 원시 모드(raw mode)가 적용되었는지 여부를 지시한다. Lsgn 정보는 아래에서 설명되는 Fs 정보와 관계없이 패킷 헤더에 포함되지만, Fs 정보의 값에 따라 Lsgn 정보는 무시될 수 있다. 하지만, 시그니피컨스 코딩이 사용되는 경우에도 시그니피컨스 서브 패킷의 사이즈를 나타내는 정보는 패킷 헤더에 포함되지 않으며, 시그니피컨스 서브 패킷의 사이즈 정보는 패킷을 구성하는 밴드와 라인의 사이즈로부터 유추하여 획득할 수 있다.
앞서 설명한 바와 같이, 시그니피컨스 서브 패킷은 시그니피컨스 코딩이 사용되는 경우 패킷에 포함될 수 있다. 시그니피컨스 서브 패킷은 패킷의 각 시그니피컨스 그룹에 대한 Z 정보(또는 시그니피컨스 플래그 정보)를 포함할 수 있다.
비트평면 카운트 서브 패킷은 각 코드 그룹에 대한 M 정보(또는 비트평면 카운트 정보, 도 5 및 관련 설명 참조)를 포함할 수 있다. 앞서 설명한 바와 같이, 비트평면 카운트 서브 패킷은 비트평면 카운트 코딩 모드에 따라 각 M 정보에 대해 잔차 정보를 나타내는 가변 길이 코드를 포함하거나(수직 예측 모드 또는 비예측 모드) 또는 M 정보를 나타내는 고정 길이 코드(원시 모드)를 포함할 수 있다.
데이터 서브 패킷은 해당 코드 그룹에 대한 부호 정보 및 양자화 인덱스 크기(magnitude) 정보를 포함할 수 있다. 양자화 인덱스 크기 정보는 데이터 서브 패킷에 인코딩된다. 부호 정보는 양자화 인덱스 크기 정보와 함께 데이터 서브 패킷에 인코딩되거나 혹은 양자화 인덱스 크기 정보와 별도로 부호 서브 패킷에 인코딩될 수 있다. 부호 정보가 데이터 서브 패킷과 함께 인코딩되는지 아니면 별도로 부호 서브 패킷으로 인코딩되는지 여부를 지시하는 정보(또는 Fs 정보)가 비트스트림(예, 픽처 헤더) 내에 포함될 수 있다. 예를 들어, Fs 정보의 값이 0이면 부호 정보가 데이터 서브 패킷에 인코딩됨을 지시하고, 부호 서브 패킷은 비트스트림 내에 포함되지 않는다. 반면, Fs 정보의 값이 1이면 부호 정보가 데이터 서브 패킷에 인코딩되지 않고 별도로 부호 서브 패킷에 인코딩됨을 지시하고, 부호 서브 패킷은 비트스트림 내에 포함된다.
만일 부호 정보가 별도로 부호 서브 패킷에 인코딩되는 경우, 부호 정보는 데이터 서브 패킷의 양자화 인덱스 크기 정보에 기반하여 인코딩될 수 있다. 예를 들어, 양자화 인덱스 크기 정보가 0이 아닌 값을 가지는 경우 1개 부호 비트가 부호 서브 패킷에 인코딩되고, 양자화 인덱스 크기 정보가 0의 값을 가지는 경우 부호 비트는 부호 서브 패킷에 인코딩되지 않는다.
도 7은 비디오 신호를 위한 비트스트림을 디코딩하는 방법의 순서도를 예시한다. 도 7의 방법은 디코딩 장치(10)(예, 도 14 참조)에 의해 수행될 수 있다. 앞서 언급한 바와 같이, 비디오 신호를 위한 비트스트림은 간략히 비트스트림 또는 비디오 신호로 지칭될 수 있고, 비트스트림은 코드스트림과 혼용될 수 있다. 비디오 신호를 위한 비트스트림은 예를 들어 도 6을 참조하여 설명된 비트스트림을 적어도 하나 포함할 수 있다.
S710 단계에서, 디코딩 장치는 비트스트림을 수신하고 비트스트림을 파싱하여 신택스 정보를 획득한다. 예를 들어, 디코딩 장치는 비트스트림을 파싱하여 도 6을 참조하여 설명한 신택스 정보 및 (엔트로피 코딩된) 데이터(610, 620, 630, 640)를 획득할 수 있다. 앞서 설명한 바와 같이, 디코딩 장치는 SOC 마커(예, 0xFF10)에 기반하여 비트스트림의 시작을 식별할 수 있고, 슬라이스 헤더에 포함된 마커(예, 0xFF20)에 기반하여 비트스트림 내에서 각 슬라이스의 시작을 식별할 수 있다.
또한, 디코딩 장치는 슬라이스 헤더에서 Lslh 정보(예, 도 6 및 관련 설명 참조)를 획득하여 슬라이스 헤더의 끝과 프레싱트의 시작을 식별할 수 있다. 프레싱트의 시작을 식별한 다음, 디코딩 장치는 프레싱트 헤더에서 Lprc 정보(예, 도 6 및 관련 설명 참조)를 획득하여 프레싱트의 끝과 다음 프레싱트의 시작을 식별할 수 있다. 프레싱트 헤더의 신택스 정보들은 일정한 사이즈를 가지므로 프레싱트 헤더의 사이즈를 지시하는 정보는 별도로 비트스트림에 포함되지 않는다. 따라서, 디코딩 장치는 프레싱트를 구성하는 밴드의 개수에 기반하여 프레싱트 헤더의 사이즈를 결정(또는 유추)할 수 있다. 결정된 프레싱트 헤더의 사이즈에 기반하여 디코딩 장치는 비트스트림 내에서 패킷의 시작을 식별할 수 있다.
패킷의 시작을 식별한 다음, 디코딩 장치는 패킷 헤더를 파싱하여 Dr 정보, Ldat 정보, Lcnt 정보, Lsgn 정보를 획득할 수 있다(예, 도 6 및 관련 설명 참조). 패킷 헤더의 사이즈를 지시하는 정보 역시 별도로 비트스트림 내에 포함되지 않으며, 패킷 헤더의 각 신택스 정보의 길이가 미리 정의되어 있으므로 이에 기반하여 디코딩 장치는 서브 패킷의 시작을 식별할 수 있다.
앞서 설명한 바와 같이, 시그니피컨스 서브 패킷은 시그니피컨스 코딩이 적용되는 경우 비트스트림에 포함된다(예, 도 6 및 관련 설명 참조). 구체적으로, 디코딩 장치는 시그니피컨스 코딩이 적용되는 경우 비트스트림으로부터 시그니피컨스 서브 패킷을 획득하고, 시그니피컨스 코딩이 적용되지 않는 경우 시그니피컨스 서브 패킷의 디코딩을 생략(skip)한다. 시그니피컨스 서브 패킷의 사이즈 정보는 비트스트림에 별도로 포함되지 않으며, 디코딩 장치에서 밴드 개수 및 라인 사이즈로부터 시그니피컨스 서브 패킷의 사이즈를 결정(또는 유추)할 수 있다. 결정된 시그니피컨스 서브 패킷의 사이즈에 기반하여, 디코딩 장치는 (시그니피컨스 서브 패킷이 존재하는 경우) 시그니피컨스 서브 패킷을 획득하고, 비트평면 카운트 서브 패킷의 시작을 식별할 수 있다.
식별된 비트평면 카운트 서브 패킷의 시작으로부터 Lcnt 정보에 기반하여, 디코딩 장치는 비트스트림으로부터 비트평면 서브 패킷을 획득하고 데이터 서브 패킷의 시작을 식별할 수 있다.
식별된 데이터 서브 패킷이 시작으로부터 Ldat 정보에 기반하여, 디코딩 장치는 비트스트림으로부터 데이터 서브 패킷을 획득하고 (부호 서브 패킷이 존재하는 경우) 부호 서브 패킷의 시작을 식별할 수 있다.
Fs 정보에 따라 부호 서브 패킷이 존재하는 경우(예, Fs 정보의 값이 1인 경우), 식별된 부호 서브 패킷의 시작으로부터 Lsgn 정보에 기반하여, 디코딩 장치는 비트스트림으로부터 부호 서브 패킷을 획득한다.
하나의 패킷을 모두 파싱한 다음, 바이트 경계에서 앞서 설명한 바와 동일한 방식으로 다음 패킷을 파싱할 수 있다. 하나의 프레싱트에 포함되는 패킷 개수는 수직 분해 레벨에 기반하여 미리 정의될 수 있다. 예를 들어, 도 3을 참조하여 설명한 바와 같이, 2 레벨 수직 분해가 적용되는 경우, 하나의 프레싱트는 10개의 패킷으로 인코딩될 수 있으며, 비트스트림 내에서 프레싱트 헤더에 이어서 10개의 패킷을 포함할 수 있다. 다른 예로, 1 레벨 수직 분해가 적용되는 경우, 하나의 프레싱트는 4개의 패킷으로 인코딩될 수 있으며, 비트스트림 내에서 프레싱트 헤더에 이어서 4개의 패킷을 포함할 수 있다. 따라서, 디코딩 장치는 프레싱트 헤더를 파싱한 다음 비트스트림으로부터 미리 정의된 패킷 개수 만큼 패킷을 획득할 수 있다. 미리 정의된 개수 만큼 패킷을 획득한 후, 디코딩 장치는 다음 프레싱트를 파싱하거나 또는 다음 슬라이스를 파싱하거나 또는 EOC 마커(예, 0xFF11)를 파싱할 수 있다.
비트스트림으로부터 EOC 마커를 획득하면, 디코딩 장치는 현재 영상에 대한 신택스 파싱을 종료할 수 있다.
S720 단계에서, 디코딩 장치는 S710 단계에서 획득한 (엔트로피 코딩된) 데이터에 기반하여 엔트로피 디코딩을 수행할 수 있다. 구체적으로, 디코딩 장치는 (엔트로피 코딩된) 데이터(예, 패킷들)에 대해 엔트로피 디코딩을 수행하여 엔트로피 디코딩된 데이터(예, 프레싱트를 구성하는 코드 그룹)을 획득할 수 있다. 엔트로피 디코딩 과정은 도 8을 참조하여 자세히 설명한다.
S730 단계에서, 디코딩 장치는 S720 단계에서 엔트로피 디코딩된 데이터(예, 코드 그룹)에 기반하여 역양자화를 수행하여 웨이블릿 계수 정보를 복원할 수 있다. 구체적으로, 디코딩 장치는 비트스트림(예, 픽처 헤더)으로부터 Qpih 정보(예, 도 6 및 관련 설명 참조)를 획득하고 역양자화 타입을 결정한 다음, 결정된 타입의 역양자화를 수행(예, 수학식 2 및 3 관련 설명 참조)하여 양자화 인덱스 크기 정보 및 부호 정보로부터 웨이블릿 계수를 복구(restore)할 수 있다.
만일 Qpih 정보에 기반하여 데드존 양자화(inverse deadzone quantization)가 적용되는 경우, 디코딩 장치는 코드 그룹의 양자화 인덱스 크기(magnitude) 정보를 T 정보(또는 절삭 위치 정보)의 값 만큼 좌측 시프트(left shift)시키고, 양자화 스텝 사이즈의 중간 지점으로 복원한 다음, 부호 정보를 적용하여 웨이블릿 계수를 복원할 수 있다. 예를 들어, 역 데드존 양자화는 수학식 4에 기반하여 수행될 수 있다. 수학식 4에서 c는 복원된 웨이블릿 계수를 나타내고, s는 부호 정보를 나타내고, v는 양자화 인덱스 크기를 나타내고, T는 절삭 위치 정보를 나타낸다.
[수학식 4]
c = (1-2s)x((v << T) + r), r = (1 << T) >> 1
만일 Qpih 정보에 기반하여 역 유니폼 양자화(inverse uniform quantization)가 적용되는 경우, 디코딩 장치는 코드 그룹에 대한 M 정보(또는 비트평면 카운트 정보) 및 T 정보에 기반하여 양자화 스텝 사이즈
를 구한 다음, 양자화 인덱스 크기 정보에 양자화 스텝 사이즈를 곱하고 부호 정보를 적용하여 웨이블릿 계수를 복원할 수 있다. 예를 들어, 역 유니폼 양자화는 수학식 5에 기반하여 수행될 수 있다. 수학식 5에서 c는 복원된 웨이블릿 계수를 나타내고, s는 부호 정보를 나타내고, v는 양자화 인덱스 크기를 나타내고, T는 절삭 위치 정보를 나타낸다.
[수학식 5]
S740 단계에서, 디코딩 장치는 복원된 웨이블릿 계수에 기반하여 역 이산 웨이블릿 변환(inverse discrete wavelet transformation, inverse DWT)을 수행할 수 있다. 역 이산 웨이블릿 변환은 적어도 하나의 고주파 밴드와 적어도 하나의 저주파 밴드를 인터리빙한 후 웨이블릿 필터를 적용하여 영상 샘플들을 복원하거나 하나의 밴드로 합성(compose)하는 과정을 지칭하며, 본 명세서에서는 간략히 역 웨이블릿 변환 또는 역변환이라고 지칭될 수 있다.
구체적으로, 디코딩 장치는 S730 단계에서 복원한 웨이블릿 계수에 기반하여 프레싱트를 복원하고, 프레싱트에 기반하여 밴드를 복원한 다음, 밴드에 기반하여 역 이산 웨이블릿 변환을 수행하여 영상 샘플들을 복원할 수 있다. 디코딩 장치는 인코더에서 프레싱트를 구성한 방법(예, 도 3 및 관련 설명 참조)의 역으로 프레싱트로부터 밴드를 복원할 수 있고, 인코더에서 이산 웨이블릿 변환을 수행한 방법(예, 도 2 및 관련 설명 참조)의 역으로 밴드로부터 영상의 샘플들을 복원할 수 있다. 디코딩 장치는 역 웨이블릿 변환을 위해 인코더 측에서 사용한 것과 동일한 웨이블릿 필터를 사용할 수 있다.
S750 단계에서, 디코딩 장치는 복원된 영상에 기반하여 역 다중 성분 변환(inverse multiple component transformation)을 수행할 수 있다. 역 다중 성분 변환은 컬러 포맷을 변환하는 동작을 지칭한다. 예를 들어, 역 다중 성분 변환은 YCbCr 컬러 포맷을 RGB 컬러 포맷으로 변환하는 동작을 포함할 수 있다. 원 영상이 RGB 컬러 포맷을 가질 경우, 인코더 측에서는 YCbCr로 컬러 포맷을 변경하여 인코딩하고 Cpih 정보를 비트스트림(예, 픽처 헤더)에 인코딩할 수 있다(예, 도 6 및 관련 설명 참조). 예를 들어, Cpih 정보가 0의 값을 가지는 경우 역 다중 성분 변환이 수행되지 않음을 지시할 수 있고, Cpih 정보가 1의 값을 가지는 경우 역 다중 성분 변환이 수행됨을 지시할 수 있다.
디코딩 장치는 비트스트림(예, 픽처 헤더)으로부터 Cpih 정보를 획득한 후, Cpih 정보에 따라 역 다중 성분 변환 수행 여부를 결정할 수 있다. Cpih 정보가 역 다중 성분 변환이 수행됨을 지시하는 경우 디코딩 장치는 S750 단계를 수행하고, Cpih 정보가 역 다중 성분 변환이 수행되지 않음을 지시하는 경우 디코딩 장치는 S750 단계를 생략(skip)할 수 있다.
S760 단계에서, 디코딩 장치는 영상의 각 샘플들에 대해 DC(Direct Current) 오프셋, 스케일링, 클램핑을 수행할 수 있다. DC 오프셋은 영상 샘플들의 DC 레벨을 시프팅하는 동작을 지칭하고, 스케일링은 DC 레벨 시프팅된 샘플들의 값의 범위를 스케일링하는 동작을 지칭하며, 클램핑은 스케일링된 샘플들의 값의 범위를 유효한 값의 범위로 제한하는 동작을 지칭한다.
다음 영상에 대한 SOC 마커를 획득하는 경우 다음 영상에 대해 S710 단계 내지 S760 단계를 반복할 수 있다.
도 8은 엔트로피 디코딩 방법의 순서도를 예시한다. 도 8에 예시된 방법은 도 7의 S720 단계에서 수행될 수 있고, 디코딩 장치(10)(예, 도 14 참조)에 포함된 엔트로피 디코더 엔진(900, 1020, 1030, 1120, 1130, 1140, 1150)에 의해 수행될 수 있다. 또한, 도 8에 예시된 방법은 프레싱트를 구성하는 각 패킷(예, 도 6 및 관련 설명 참조)에 대해 수행될 수 있다.
시그니피컨스 코딩이 적용된 경우, 비트스트림 내에 시그니피컨스 서브 패킷이 존재하며, 디코딩 장치는 시그니피컨스 서브 패킷을 디코딩할 수 있다(S810). 구체적으로, 디코딩 장치는 시그니피컨스 서브 패킷으로부터 Z 정보(또는 시그니피컨스 플래그 정보)를 획득하고, Z 정보에 기반하여 시그니피컨스 그룹을 구성하는 웨이블릿 계수들을 복원할 수 있다.
예를 들어, Z 정보가 시그니피컨스 그룹의 모든 코드 그룹이 0임을 지시하는 경우, 디코딩 장치는 시그니피컨스 그룹에 해당하는 웨이블릿 계수를 0으로 복원하고, S820 단계 내지 S840 단계를 생략(skip)할 수 있다. 반면, Z 정보가 시그니피컨스 그룹에 0이 아닌 코드 그룹이 포함되어 있음을 지시하는 경우, 디코딩 장치는 해당 시그니피컨스 그룹에 포함되는 코드 그룹에 대해 S820 단계 내지 S840 단계를 수행하여 웨이블릿 계수를 복원할 수 있다.
만일 시그니피컨스 코딩이 적용되지 않은 경우, 디코딩 장치는 S810 단계를 생략하고 S820 단계로 진행한다. 시그니피컨스 코딩 적용 여부는 프레싱트 헤더의 D 정보의 상위 비트를 통해 판별할 수 있다(예, 도 6 및 관련 설명 참조).
S820 단계에서, 디코딩 장치는 비트평면 카운트 서브 패킷을 디코딩할 수 있다. 구체적으로, 디코딩 장치는 비트스트림(예, 프레싱트 헤더)으로부터 획득한 D 정보와 비트스트림(예, 패킷 헤더)으로부터 획득한 Dr 정보에 기반하여 비트평면 카운트 코딩 모드를 결정하고(예, 도 6 및 관련 설명 참조), 결정된 비트평면 카운트 코딩 모드에 기반하여 비트평면 카운트 서브 패킷을 디코딩할 수 있다.
예를 들어, 원시 모드가 적용되는 경우(예, Dr 정보가 원시 모드 적용을 지시하는 경우), 디코딩 장치는 비트스트림(예, 패킷 헤더)으로부터 획득한 Br 정보에 기반하여 비트평면 카운트 서브 패킷을 디코딩하고 M 정보(또는 비트평면 카운트 정보)를 획득할 수 있다.
다른 예로, 비예측 모드가 적용되는 경우(예, D 정보의 하위 비트가 비예측 모드를 지시하는 경우), 디코딩 장치는 비트평면 카운트 서브 패킷으로부터 가변 길이 코드를 디코딩하여 잔차 정보를 획득하고 이에 기반하여 M 정보를 획득할 수 있다.
다른 예로, 수직 예측 모드가 적용되는 경우(예, D 정보의 하위 비트가 수직 예측 모드를 지시하는 경우), 디코딩 장치는 현재 코드 그룹을 포함하는 라인의 상위(또는 이전) 라인의 M 정보에 기반하여 예측값을 획득하고, 현재 코드 그룹을 포함하는 패킷의 비트평면 카운트 서브 패킷으로부터 잔차 정보를 획득하고, 예측값과 잔차 정보에 기반하여 현재 코드 그룹의 M 정보를 획득할 수 있다.
또한, 시그니피컨스 코딩이 적용되는 경우, 디코딩 장치는 S810 단계에서 획득한 Z 정보에 기반하여 M 정보를 획득할 수 있다. 구체적으로, Z 정보가 시그니피컨스 그룹의 모든 코드 그룹이 0임을 지시하는 경우, 디코딩 장치는 해당 시그니피컨스 그룹의 모든 코드 그룹에 대한 M 정보의 획득을 생략할 수 있다. 반면, Z 정보가 시그니피컨스 그룹에 0이 아닌 코드 그룹이 포함되어 있음을 지시하는 경우, 디코딩 장치는 비트평면 카운트 서브 패킷을 디코딩하여 해당 시그니피컨스 그룹의 코드 그룹에 대한 M 정보를 획득할 수 있다.
시그니피컨스 코딩이 적용되지 않는 경우, 디코딩 장치는 패킷의 모든 코드 그룹에 대한 M 정보를 순차적으로 디코딩/획득할 수 있다.
S830 단계에서, 디코딩 장치는 데이터 서브 패킷을 디코딩할 수 있다. 앞서 설명한 바와 같이, 양자화 인덱스의 부호 정보는 데이터 서브 패킷과 함께 인코딩되거나 또는 데이터 서브 패킷과 별도로 부호 서브 패킷에 인코딩될 수 있고, 이는 Fs 정보를 통해 지시될 수 있다(예, 도 6 및 관련 설명 참조).
만일 부호 정보가 데이터 서브 패킷과 함께 인코딩되는 경우(예, Fs 정보의 값이 0인 경우), 디코딩 장치는 데이터 서브 패킷을 디코딩하여 코드 그룹에 포함된 양자화 인덱스 개수(예, 4)만큼 부호 정보를 순차적으로 획득하고, 그런 다음 코드 그룹에 포함된 양자화 인덱스 개수(예, 4)만큼 양자화 인덱스 크기 정보를 획득할 수 있다. 비트스트림 내에서 각 양자화 인덱스 크기 정보는 (M-T)개의 비트로 구성되며 MSB(most significant bit)부터 LSB(least significant bit) 순으로 패킹(packing)되어 있다(M은 해당 코드 그룹에 대한 M 정보의 값, T는 해당 코드 그룹에 대한 T 정보의 값을 지칭). 따라서, 디코딩 장치는 데이터 서브 패킷으로부터 (M-T)개의 비트를 획득한 후 MSB부터 배치하여 양자화 인덱스 크기 정보를 획득할 수 있다.
만일 양자화 인덱스의 부호 정보가 별도로 부호 서브 패킷에 인코딩된 경우(예, Fs 정보의 값이 1인 경우), 디코딩 장치는 각 코드 그룹에 대한 부호 정보(예, 4개 부호 비트)의 파싱을 생략하고, 앞서 설명한 바와 동일한 방식으로 코드 그룹에 포함된 양자화 인덱스 개수(예, 4)만큼 양자화 인덱스 크기 정보를 획득할 수 있다.
S840 단계에서, 디코딩 장치는 부호 서브 패킷을 디코딩할 수 있다. S840 단계는 부호 서브 패킷이 존재하는 경우(예, Fs 정보의 값이 1인 경우) 수행될 수 있다. 양자화 인덱스의 부호 정보가 부호 서브 패킷에 인코딩되는 경우, 양자화 인덱스 크기가 0이 아닌 경우에만 부호 정보가 인코딩될 수 있다. 예를 들어, 도 5의 예를 참조하면 -32, 274, 0, 6의 웨이블릿 계수에 대해 T=2를 가정하여 수학식 2에 기반한 양자화를 수행하면 부호 정보는 1, 0, 0, 0을 획득하고 크기 정보는 8, 68, 0, 1을 획득할 수 있다. 이 예에서 부호 정보를 부호 서브 패킷에 인코딩하는 경우, 크기 정보가 8, 68, 1인 양자화 인덱스에 대해서만 부호 정보 1, 0, 0를 부호 서브 패킷에 인코딩하고, 크기 정보가 0인 양자화 인덱스에 대한 부호 정보 인코딩은 생략(skip)된다.
따라서, 디코딩 장치는 S830 단계에서 획득한 양자화 인덱스 크기 정보에 기반하여 부호 서브 패킷으로부터 부호 정보를 획득한다. 구체적으로, S840 단계에서, 디코딩 장치는 해당 양자화 인덱스 크기 정보가 0이 아닌 경우 부호 정보를 획득하고, 해당 양자화 인덱스 크기 정보가 0인 경우 부호 정보의 파싱을 생략할 수 있다.
도 9는 엔트로피 디코더 엔진(900)의 구조를 예시한다.
도 9를 참조하면, 엔트로피 디코더 엔진(900)은 비트스트림(905)을 수신하고 엔트로피 디코딩을 수행하여 코드 그룹(960)을 출력하도록 구성될 수 있다. 일 예로, 엔트로피 디코더 엔진(900)은 도 8을 참조하여 설명한 방법에 대응되는 동작을 수행하도록 구성될 수 있다. 비트스트림(905)은 예를 들어 도 6을 참조하여 설명한 정보들을 포함할 수 있다.
엔트로피 디코더 엔진(900)은 비트스트림 내에서 프레싱트를 구성하는 패킷 단위로 엔트로피 디코딩을 수행하도록 구성될 수 있다. 엔트로피 디코더 엔진(900)은 시그니피컨스 디코딩(910), 비트평면 카운트 디코딩(920), 데이터 디코딩(930), 부호 디코딩(940)을 순차적으로 수행하도록 구성될 수 있다. 일 예로, 엔트로피 디코더 엔진(900)은, 시그니피컨스 디코딩(910)을 위해 도 8의 S810에서 설명한 동작을 수행할 수 있고, 비트평면 카운트 디코딩(920)을 위해 도 8의 S820에서 설명한 동작을 수행할 수 있고, 데이터 디코딩(930)을 위해 도 8의 S830에서 설명한 동작을 수행할 수 있고, 부호 디코딩(940)을 위해 도 8의 S840에서 설명한 동작을 수행할 수 있다. 설명을 간명하게 하기 위해, 도 8에 대한 설명 전체를 참조로 포함한다(incorporation by reference).
또한, 엔트로피 디코더 엔진(900)은 클록 신호(970)에 기반하여 클록마다 하나의 코드 그룹을 출력할 수 있도록 파이프라인 방식으로 구성될 수 있다. 예를 들어, 동작 클록(970)은 480 MHz로 설정될 수 있으며, 이 경우 엔트로피 디코더 엔진(900)은 1초에 최대 480만개의 코드 그룹을 출력할 수 있다.
한편, JPEG-XS 표준은 2K(예, 1920x1080 또는 2048x1080), 4K(예, 3840x2160 또는 4096x2160), 8K(예, 7680x4320 또는 8192x4320) 등의 다양한 해상도를 지원하고, 30Hz, 60Hz, 120Hz와 같은 다양한 프레임 레이트(frame rate)를 지원한다. 웨이블릿 변환(예, 도 2 및 관련 설명 참조)을 적용할 경우 픽처 해상도와 동일한 개수만큼 웨이블릿 계수가 생성되어 코드 그룹으로 그룹화되므로, 엔트로피 디코더 엔진(900)은 비트스트림에 포함된 비디오 신호의 해상도와 프레임 레이트에 따른 디코딩 성능을 만족하도록 설계될 필요가 있다.
예를 들어, 3840x2160 해상도와 120Hz의 프레임 레이트를 가지는 YCbCr 444 포맷의 비디오 신호를 포함하는 비트스트림을 엔트로피 디코딩하는 경우, 엔트로피 디코더 엔진(900)은 초당 약 750만개(=3840x2160x120x3/4)의 코드 그룹을 출력할 수 있는 하드웨어 성능이 요구될 수 있다. 이 예에서, 엔트로피 디코더 엔진(900)이 480 MHz 클록(970)에 기반하여 동작한다고 가정하면, 엔트로피 디코더 엔진(900)은 초당 최대 480만개의 코드 그룹을 출력할 수 있으므로, 엔트로피 디코더 엔진(900)은 3840x2160 해상도와 120Hz의 프레임 레이트를 가지는 YCbCr 444 포맷의 비디오 신호를 포함하는 비트스트림을 실시간으로 디코딩하지 못하는 기술적 문제가 발생할 수 있다.
엔트로피 디코더 엔진(900)을 하드웨어로 구현함에 있어서 가장 복잡도가 높은 부분은 비트평면 카운트 디코딩(920)이며 엔트로피 디코더 엔진(900)은 파이프라인 방식으로 동작하므로 가장 복잡도가 높은 부분의 성능이 전체 성능에 영향을 줄 수 있다. 따라서, 비트평면 카운트 디코딩(920)에서 가변 길이 코드 디코딩 성능을 향상시키기 위해 가변 길이 코드를 포함하는 룩업 테이블(look-up table)에 기반하여 비트평면 카운트 정보를 디코딩하도록 구성할 수 있다. 비트평면 카운트 정보는 최소 1 비트에서 최대 32 비트까지 할당될 수 있기 때문에, 룩업 테이블은 32개의 가변 길이 코드를 포함할 수 있고, 32x1 다중화기(multiplexer, mux)로 구현될 수 있다. 이에 기반하여, 2개 코드 그룹에 대한 비트평면 카운트 정보를 룩업 테이블에 기반하여 한번에 디코딩함으로써 엔트로피 디코딩 성능을 2배 증가시키는 방안을 고려해 볼 수 있다. 하지만, 2개 코드 그룹에 대한 비트평면 카운트 정보를 룩업 테이블로 구성했을 때 1024개(=32x32)개의 가변 길이 코드 조합이 발생하므로 1024x1 다중화기가 필요할 수 있다. 이 경우 엔트로피 디코더 엔진 구현에 필요한 하드웨어 면적이 엄청나게 증가하게 되므로 이러한 방안은 바람직하지 않을 수 있다.
또한, 상기 기술적 문제를 해결하기 위하여 클록 신호(970)를 증가시키는 방안을 고려해 볼 수 있으나, 클록 신호(970)를 증가시킬 경우 하드웨어 구현시 타이밍 조건을 만족하지 못하는 문제가 발생할 수 있다. 또한, JPEG-XS 표준에 따른 인코딩/디코딩 기술은 스마트 폰과 같은 이동 단말 상에서 널리 사용될 수 있기 때문에 단순히 동작 클록(970)을 올리는 것은 전력 소모 측면에서 바람직하지 못할 수 있다.
본 발명에서는 패킷들의 병렬 처리에 기반한 엔트로피 디코딩 방법 및 장치를 제안한다. 구체적으로, 본 발명에서는 하나의 프레싱트에 포함된 패킷들을 해당 프레싱트의 폭의 절반에 대응하는 패킷들로 나누어 병렬 처리하는 방법 및 장치를 제안한다. 앞서 설명된 바와 같이, 본 발명에서 프레싱트는 비디오 신호를 구성하는 각 픽처의 특정 공간 영역(의 복원)에 기여하는 모든 밴드들의 웨이블릿 계수 정보의 모음을 지칭하거나(예, 도 3 및 관련 설명 참조), 또는 이들 웨이블릿 계수 정보(또는 대응하는 코드 그룹)를 포함하는 패킷들을 포함하는 비트스트림의 일부를 지칭할 수 있다(예, 도 6의 630 참조).
본 발명에 따른 엔트로피 디코더는 적어도 하나의 프레싱트를 포함하는 비디오 신호를 위한 비트스트림(또는 간략히 비트스트림 또는 비디오 신호)을 디코딩하도록 구성되며, 병렬적으로 엔트로피 디코딩을 수행하기 위해 복수의 엔트로피 디코더 엔진과 역다중화기(demultiplexer 또는 demux)를 포함할 수 있다. 복수의 엔트로피 디코더 엔진 각각은 역다중화기와 동작시 연결될(operatively connected) 수 있다.
본 발명에 따른 역다중화기는 프레싱트 내에서 하나의 라인의 절반에 해당하는 단위로 프레싱트의 패킷들(예, 패킷 0 내지 패킷 9)을 역다중화하여 복수의 엔트로피 디코더 엔진으로 전송하도록 구성될 수 있다. 하나의 라인의 절반은 프레싱트의 폭의 절반에 해당한다. 예를 들어, 하나의 프레싱트의 폭이 픽처의 폭과 동일하게 설정될 경우, 하나의 라인의 절반은 픽처의 폭의 절반에 해당한다. 하나의 라인의 절반은 1개의 패킷(예, 패킷 4 내지 패킷 9)으로 구성될 수도 있고 2개의 패킷(예, 패킷 0 및 1, 패킷 2 및 3)으로 구성될 수도 있다(예, 도 3 및 관련 설명 참조).
각각의 엔트로피 디코더 엔진은 역다중화기로부터 전송된 패킷들을 패킷 단위로 엔트로피 디코딩하며, 복수의 엔트로피 디코더 엔진은 역다중화기로부터 전송된 패킷들을 병렬적으로 엔트로피 디코딩할 수 있다. 각각의 엔트로피 디코더 엔진은 도 9에 예시된 구조(900)를 가질 수 있으며 도 9를 참조하여 설명한 동작(예, 도 8의 방법에 대응하는 동작)을 수행할 수 있다. 또한, 각각의 엔트로피 디코더 엔진은 클록 신호(970)에 기반하여 하나의 클록마다 하나의 코드 그룹을 출력하도록 파이프라인 방식으로 구성될 수 있다.
또한, 복수의 엔트로피 디코더 엔진은 수직 예측 모드를 효율적으로 병렬 처리할 수 있도록 코드 그룹에 대한 M 정보(또는 비트 평면 카운트 정보)를 서로 송수신하도록 구성될 수 있다.
본 발명에 따라 병렬적으로 엔트로피 디코딩을 수행할 경우, 기술적으로 유리한 효과를 기대할 수 있다. 구체적으로, 본 발명에 따르면, 엔트로피 디코더 엔진의 개수만큼 엔트로피 디코딩 성능을 향상시킬 수 있다. 또한, 본 발명에 따르면, 각각의 엔트로피 디코더 엔진에서 처리하는 데이터 양을 비슷한 수준으로 맞출 수 있어 병렬 처리에 더욱 유리할 수 있다. 또한, 본 발명에 따르면, 현재 라인의 비트평면 카운트 정보를 각 엔트로피 디코더 엔진에서 엔트로피 디코딩하기 전에 상위(또는 이전) 라인의 비트평면 카운트 정보에 대한 엔트로피 디코딩이 완료될 수 있기 때문에, 수직 예측 모드에 기반하여 인코딩된 비트평면 카운트 정보도 효율적으로 병렬 처리할 수 있다(예, 도 8의 S820 관련 설명 참조).
도 10과 도 11은 본 발명에 따른 엔트로피 디코더의 구조를 예시한다.
도 10과 도 11의 예에서, 본 발명이 적용되는 프레싱트는 패킷 0 내지 패킷 9의 10개 패킷을 포함하여 구성될 수 있지만(예, 도 3의 340, 도 6의 630 참조), 본 발명의 원리는 이에 제한되지 않는다. 이 경우, 패킷 0과 패킷 1은 프레싱트의 첫 번째 라인(또는 라인 0)의 왼쪽 절반에 해당하는 웨이블릿 계수 정보 또는 코드 그룹을 포함하고, 패킷 2와 패킷 3은 프레싱트의 두 번째 라인(또는 라인 1)의 왼쪽 절반에 해당하는 웨이블릿 계수 정보 또는 코드 그룹을 포함하고, 패킷 4는 프레싱트의 첫 번째 라인(또는 라인 0)의 오른쪽 절반에 해당하는 웨이블릿 계수 정보 또는 코드 그룹을 포함하고, 패킷 5는 프레싱트의 세 번째 라인(또는 라인 2)의 왼쪽 절반에 해당하는 웨이블릿 계수 정보 또는 코드 그룹을 포함하고, 패킷 6은 프레싱트의 세 번째 라인(또는 라인 2)의 오른쪽 절반에 해당하는 웨이블릿 계수 정보 또는 코드 그룹을 포함하고, 패킷 7은 프레싱트의 두 번째(또는 라인 1)의 오른쪽 절반에 해당하는 웨이블릿 계수 정보 또는 코드 그룹을 포함하고, 패킷 8은 프레싱트의 네 번째 라인(또는 라인 3)의 왼쪽 절반에 해당하는 웨이블릿 계수 정보 또는 코드 그룹을 포함하고, 패킷 9는 프레싱트의 네 번째 라인(또는 라인 3)의 오른쪽 절반에 해당하는 웨이블릿 계수 정보 또는 코드 그룹을 포함할 수 있다(예, 도 3 및 관련 설명 참조).
도 10(a)를 참조하면, 본 발명에 따른 엔트로피 디코더(1000)는 역다중화기(1010), 엔트로피 디코더 엔진 0(1020), 엔트로피 디코더 엔진 1(1030)을 포함할 수 있다. 본 명세서에서, 엔트로피 디코더 엔진 0(1020)은 제1 엔트로피 디코더 엔진으로 지칭하고, 엔트로피 디코더 엔진 1(1030)은 제2 엔트로피 디코더 엔진으로 지칭한다.
역다중화기(1010)는 현재 프레싱트의 패킷들(예, 패킷 0 내지 패킷 9)을 제1 복수의 패킷들(예, 패킷 0, 패킷 1, 패킷 4, 패킷 6, 패킷 8)과 제2 복수의 패킷들(예, 패킷 2, 패킷 3, 패킷 5, 패킷 7, 패킷 9)로 역다중화하고, 제1 복수의 패킷들을 제1 엔트로피 디코더 엔진(1020)으로 전송하고, 제2 복수의 패킷들을 제2 엔트로피 디코더 엔진(1030)으로 전송하도록 구성될 수 있다.
제1 엔트로피 디코더 엔진(1020)과 제2 엔트로피 디코더 엔진(1030) 각각은 엔트로피 디코더 엔진(900)에 대응한다. 따라서, 제1 엔트로피 디코더 엔진(1020)과 제2 엔트로피 디코더 엔진(1030) 각각은 역다중화기(1010)로부터 전송된 패킷들을 패킷 단위로 엔트로피 디코딩하고, 클록 신호(970)에 기반하여 하나의 클록마다 하나의 코드 그룹을 출력(1040, 1050)하도록 파이프라인 방식으로 구성될 수 있다. 제1 엔트로피 디코더 엔진(1020)과 제2 엔트로피 디코더 엔진(1030) 각각의 구체적인 동작과 관련하여 엔트로피 디코더 엔진(900)에 대한 전체 설명을 참조로 포함한다(incorporation by reference).
도 10(b)를 참조하면, 제1 엔트로피 디코더 엔진(1020)과 제2 엔트로피 디코더 엔진(1030)은 각각 역다중화기(1010)로부터 수신된 제1 복수의 패킷들과 제2 복수의 패킷들을 병렬적으로 엔트로피 디코딩할 수 있다. 예를 들어, 제1 엔트로피 디코더 엔진(1020)에 의한 패킷 0 및 1에 대한 엔트로피 디코딩과 제2 엔트로피 디코더 엔진(1030)에 의한 패킷 2 및 3에 대한 엔트로피 디코딩이 병렬적으로 수행될 수 있고, 제1 엔트로피 디코더 엔진(1020)에 의한 패킷 4에 대한 엔트로피 디코딩과 제2 엔트로피 디코더 엔진(1030)에 의한 패킷 5에 대한 엔트로피 디코딩이 병렬적으로 수행될 수 있고, 제1 엔트로피 디코더 엔진(1020)에 의한 패킷 6에 대한 엔트로피 디코딩과 제2 엔트로피 디코더 엔진(1030)에 의한 패킷 7에 대한 엔트로피 디코딩이 병렬적으로 수행될 수 있고, 제1 엔트로피 디코더 엔진(1020)에 의한 패킷 8에 대한 엔트로피 디코딩과 제2 엔트로피 디코더 엔진(1030)에 의한 패킷 9에 대한 엔트로피 디코딩이 병렬적으로 수행될 수 있다.
도 10의 예에서, 클록 신호(970)가 480 MHz로 설정되고 하나의 코드 그룹이 4개의 양자화 인덱스 정보 또는 웨이블릿 계수 정보를 포함한다고 가정하면, 각 엔트로피 디코더 엔진(1020, 1030)이 초당 최대 480만개의 코드 그룹을 디코딩할 수 있으므로, 본 발명에 따른 엔트로피 디코더(1000)는 초당 최대 960만개의 코드 그룹을 디코딩할 수 있다. 따라서, 본 발명에 따른 엔트로피 디코더(1000)는 초당 약 800만개(=4096x2160x3x120/4)의 코드 그룹 디코딩 성능이 요구되는 4K 해상도(예, 4096x2160), 120Hz의 프레임 레이트, YCbCr 444 포맷 비디오 신호를 실시간으로 엔트로피 디코딩할 수 있고, 8K 해상도(예, 8192x4320), 30Hz의 프레임 레이트, YCbCr 444 포맷 비디오 신호도 실시간으로 엔트로피 디코딩할 수 있다.
도 11(a)를 참조하면, 본 발명에 따른 엔트로피 디코더(1100)는 역다중화기(1110), 엔트로피 디코더 엔진 0(1120), 엔트로피 디코더 엔진 1(1130), 엔트로피 디코더 엔진 2(1140), 엔트로피 디코더 엔진 3(1150)을 포함할 수 있다. 본 명세서에서, 엔트로피 디코더 엔진 0(1020)은 제1 엔트로피 디코더 엔진으로 지칭하고, 엔트로피 디코더 엔진 1(1030)은 제2 엔트로피 디코더 엔진으로 지칭하고, 엔트로피 디코더 엔진 2(1140)는 제3 엔트로피 디코더 엔진으로 지칭하고, 엔트로피 디코더 엔진 3(1150)은 제4 엔트로피 디코더 엔진으로 지칭한다.
역다중화기(1110)는 현재 프레싱트의 패킷들(예, 패킷 0 내지 패킷 9)을 제1 복수의 패킷들(예, 패킷 0, 패킷 1, 패킷 6), 제2 복수의 패킷들(예, 패킷 2, 패킷 3, 패킷 7), 제3 복수의 패킷들(예, 패킷 4, 패킷 8), 제4 복수의 패킷들(예, 패킷 5, 패킷 9)으로 역다중화하고, 제1 복수의 패킷들을 제1 엔트로피 디코더 엔진(1120)으로 전송하고, 제2 복수의 패킷들을 제2 엔트로피 디코더 엔진(1130)으로 전송하고, 제3 복수의 패킷들을 제3 엔트로피 디코더 엔진(1140)으로 전송하고, 제4 복수의 패킷들을 제4 엔트로피 디코더 엔진(1150)으로 전송하도록 구성될 수 있다.
각각의 엔트로피 디코더 엔진(1120, 1130, 1140, 1150)은 엔트로피 디코더 엔진(900)에 해당한다. 따라서, 각각의 엔트로피 디코더 엔진(1120, 1130, 1140, 1150)은 역다중화기(1110)로부터 전송된 패킷들을 패킷 단위로 엔트로피 디코딩하고, 클록 신호(970)에 기반하여 하나의 클록마다 하나의 코드 그룹을 출력(1160, 1170, 1180, 1190)하도록 파이프라인 방식으로 구성될 수 있다. 각각의 엔트로피 디코더 엔진(1120, 1130, 1140, 1150)의 구체적인 동작에 대한 설명은 엔트로피 디코더 엔진(900)에 대한 설명 전체를 참조로 포함한다.
도 11(b)를 참조하면, 제1 엔트로피 디코더 엔진(1120), 제2 엔트로피 디코더 엔진(1130), 제3 엔트로피 디코더 엔진(1140), 제4 엔트로피 디코더 엔진(1150)은 각각 역다중화기(1110)로부터 수신된 제1 복수의 패킷들. 제2 복수의 패킷들, 제3 복수의 패킷들, 제4 복수의 패킷들을 병렬적으로 엔트로피 디코딩할 수 있다. 예를 들어, 제1 엔트로피 디코더 엔진(1120)에 의한 패킷 0 및 1에 대한 엔트로피 디코딩, 제2 엔트로피 디코더 엔진(1130)에 의한 패킷 2 및 3에 대한 엔트로피 디코딩, 제3 엔트로피 디코더 엔진(1140)에 의한 패킷 4에 대한 엔트로피 디코딩, 제2 엔트로피 디코더 엔진(1150)에 의한 패킷 5에 대한 엔트로피 디코딩이 병렬적으로 수행될 수 있다. 또한, 제1 엔트로피 디코더 엔진(1120)에 의한 패킷 6에 대한 엔트로피 디코딩, 제2 엔트로피 디코더 엔진(1130)에 의한 패킷 7에 대한 엔트로피 디코딩, 제3 엔트로피 디코더 엔진(1140)에 의한 패킷 8에 대한 엔트로피 디코딩, 제2 엔트로피 디코더 엔진(1150)에 의한 패킷 9에 대한 엔트로피 디코딩이 병렬적으로 수행될 수 있다.
도 11의 예에서, 클록 신호(970)가 480 MHz로 설정되고 하나의 코드 그룹이 4개의 양자화 인덱스 정보 또는 웨이블릿 계수 정보를 포함한다고 가정하면, 각 엔트로피 디코더 엔진(1120, 1130, 1140, 1150)이 초당 최대 480만개의 코드 그룹을 디코딩할 수 있으므로, 본 발명에 따른 엔트로피 디코더(1100)는 초당 최대 1920만개의 코드 그룹을 디코딩할 수 있다. 따라서, 본 발명에 따른 엔트로피 디코더는 초당 약 1590만개(=8182x4320x60x3/4)의 코드 그룹 디코딩 성능이 요구되는 8K 해상도(예, 8192x4320), 60Hz의 프레임 레이트, YCbCr 444 포맷 비디오 신호를 실시간으로 엔트로피 디코딩할 수 있다.
도 12 및 도 13은 본 발명에 따른 엔트로피 디코딩 방법의 순서도를 예시한다. 도 12는 엔트로피 디코더(1000)에 의해 수행되는 방법의 순서도를 예시하고, 도 13은 엔트로피 디코더(1100)에 의해 수행되는 방법의 순서도를 예시한다.
도 12를 참조하면, 엔트로피 디코더(1000)는 현재 프레싱트의 패킷들을 제1 복수의 패킷들과 제2 복수의 패킷들로 역다중화할 수 있다(S1210). 도 10을 참조하여 설명한 바와 같이, 제1 복수의 패킷들은 제1 엔트로피 디코더 엔진(1020)으로 제공되고, 제2 복수의 패킷들은 제2 엔트로피 디코더 엔진(1030)으로 제공될 수 있다. 또한, 제1 복수의 패킷들은 패킷 0, 패킷 1, 패킷 4, 패킷 6, 패킷 8을 포함하고, 제2 복수의 패킷들은 패킷 2, 패킷 3, 패킷 5, 패킷 7, 패킷 9를 포함할 수 있다.
엔트로피 디코더(1000)는 제1 복수의 패킷들과 제2 복수의 패킷들을 병렬적으로 엔트로피 디코딩할 수 있다(S1220). 병렬적인 엔트로피 디코딩의 구체적인 동작은 도 10을 참조하여 설명한 동작을 포함할 수 있으며, 도 10과 관련한 전체 설명을 참조로 포함한다(incorporation by reference).
예를 들어, 도 12의 방법은 도 7의 S720 단계에서 수행될 수 있다. 따라서, 디코딩 장치(10)(예, 도 14 참조)가 S710 단계 내지 S760 단계를 포함하는 영상 디코딩을 수행하되, S720 단계는 도 12의 방법에 기반하여 엔트로피 디코더(1000)에서 수행될 수 있다. 또한, 각 패킷에 대한 엔트로피 디코딩 방법은 도 8과 관련하여 설명한 방법에 대응될 수 있다. 따라서, 도 12의 방법에 대한 자세한 설명은 도 8과 관련한 설명 및 도 10과 관련된 설명 전체를 참조로 포함한다.
도 13을 참조하면, 엔트로피 디코더(1100)는 현재 프레싱트의 패킷들을 제1 복수의 패킷들, 제2 복수의 패킷들, 제3 복수의 패킷들, 제4 복수의 패킷들로 역다중화할 수 있다(S1310). 도 11을 참조하여 설명한 바와 같이, 제1 복수의 패킷들은 제1 엔트로피 디코더 엔진(1120)으로 제공되고, 제2 복수의 패킷들은 제2 엔트로피 디코더 엔진(1130)으로 제공되고, 제3 복수의 패킷들은 제3 엔트로피 디코더 엔진(1140)으로 제공되고, 제4 복수의 패킷들은 제4 엔트로피 디코더 엔진(1150)으로 제공될 수 있다. 또한, 제1 복수의 패킷들은 패킷 0, 패킷 1, 패킷 6을 포함하고, 제2 복수의 패킷들은 패킷 2, 패킷 3, 패킷 7을 포함하고, 제3 복수의 패킷들은 패킷 4, 패킷 8을 포함하고, 제4 복수의 패킷들은 패킷 5, 패킷 9를 포함할 수 있다.
엔트로피 디코더(1100)는 제1 복수의 패킷들, 제2 복수의 패킷들, 제3 복수의 패킷들, 제4 복수의 패킷들을 병렬적으로 엔트로피 디코딩할 수 있다(S1320). 병렬적인 엔트로피 디코딩의 구체적인 동작은 도 11을 참조하여 설명한 동작을 포함할 수 있으며, 도 11과 관련한 설명 전체를 참조로 포함한다(incorporation by reference).
예를 들어, 도 13의 방법은 도 7의 S720 단계에서 수행될 수 있다. 따라서, 디코딩 장치(10)(예, 도 14 참조)가 S710 단계 내지 S760 단계를 포함하는 영상 디코딩을 수행하되, S720 단계는 도 13의 방법에 기반하여 엔트로피 디코더(1100)에서 수행될 수 있다. 또한, 각 패킷에 대한 엔트로피 디코딩 방법은 도 8과 관련하여 설명한 방법에 대응될 수 있다. 따라서, 도 13의 방법에 대한 자세한 설명은 도 8과 관련한 설명 및 도 11과 관련된 설명 전체를 참조로 포함한다.
이상에서, 5 레벨 수평 분해 및 2 레벨 수직 분해에 기반하여 하나의 프레싱트가 10개 패킷을 포함하는 경우를 중심으로 본 발명을 설명하였지만, 프레싱트의 예는 오로지 이해를 돕기 위한 것이며, 본 발명은 이러한 프레싱트에만 제한되어 적용되는 것은 아니다. 본 발명은 하나의 프레싱트가 다른 개수의 패킷을 포함하여 구성되는 경우에도 동일/유사하게 적용될 수 있다. 예를 들어, 5 레벨 수평 분해 및 1 레벨 수직 분해에 따른 웨이블릿 변환이 적용된 경우, 하나의 프레싱트는 패킷 0 내지 패킷 3의 4개 패킷을 포함하여 구성될 수 있으며, 패킷 0은 프레싱트의 첫 번째 라인(또는 라인 0)의 왼쪽 절반에 해당하는 웨이블릿 계수 정보 또는 코드 그룹을 포함하고, 패킷 1은 프레싱트의 첫 번째 라인(또는 라인 0)의 오른쪽 절반에 해당하는 웨이블릿 계수 정보 또는 코드 그룹을 포함하고, 패킷 2는 프레싱트의 두 번째 라인(또는 라인 1)의 왼쪽 절반에 해당하는 웨이블릿 계수 정보 또는 코드 그룹을 포함하고, 패킷 3은 프레싱트의 두 번째 라인(또는 라인 1)의 오른쪽 절반에 해당하는 웨이블릿 계수 정보 또는 코드 그룹을 포함한다. 이 경우, 본 발명에 따라 2개의 엔트로피 디코더 엔진(1020, 1030)에 기반하여 병렬 처리하는 경우, 패킷 0, 2는 제1 엔트로피 디코더 엔진(1020)으로 역다중화되고, 패킷 1, 3은 제2 엔트로피 디코더 엔진(1030)으로 역다중화되며, 패킷 0과 패킷 1은 각각 제1 엔트로피 디코더 엔진(1020)과 제2 엔트로피 디코더 엔진(1030)에 의해 병렬적으로 엔트로피 디코딩되고, 패킷 2와 패킷 3은 각각 제1 엔트로피 디코더 엔진(1020)과 제2 엔트로피 디코더 엔진(1030)에 의해 병렬적으로 엔트로피 디코딩될 수 있다. 또는, 본 발명에 따라 4개의 엔트로피 디코더 엔진(1120, 1130, 1140, 1150)에 기반하여 병렬 처리하는 경우, 패킷 0은 제1 엔트로피 디코더 엔진(1120)으로 역다중화되고, 패킷 1은 제2 엔트로피 디코더 엔진(1130)으로 역다중화되고, 패킷 2는 제3 엔트로피 디코더 엔진(1140)으로 역다중화되고, 패킷 3은 제4 엔트로피 디코더 엔진(1150)으로 역다중화되며, 패킷 0 내지 패킷 3은 각각 제1 엔트로피 디코더 엔진 내지 제4 엔트로피 디코더 엔진(1120 내지 1150)에 의해 병렬적으로 디코딩될 수 있다.
도 14는 본 발명에 따른 디코딩 장치(10)의 블록도를 예시한다. 예를 들어, 디코딩 장치(10)는 스마트폰 등과 같은 이동 단말, 랩톱 컴퓨터 등과 같은 휴대용 기기, 디지털 TV, 디지털 비디오 플레이어 등과 같은 가전 제품 등에 포함될 수 있다. 다른 예로, 디코딩 장치(10)는 ASIC(Application Specific Integrated Circuit)의 일부로 포함될 수 있으며, SoC(System On Chip) 형태로 구현될 수 있다.
메모리(12)는 프로세서(11)의 처리 및 제어를 위한 프로그램을 저장할 수 있고, 부호화된 비트스트림, 복원된 영상, 제어 정보 등을 저장할 수 있다. 또한, 메모리(12)는 비트스트림 및 영상을 위한 버퍼로서 활용될 수 있다. 메모리(12)는 ROM(Read Only Memory), RAM(Random Access Memory), EPROM(Erasable Programmable Read Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래쉬(flash) 메모리, SRAM(Static RAM), HDD(Hard Disk Drive), SSD(Solid State Drive) 등과 같은 저장 장치로서 구현될 수 있다.
프로세서(11)는 디코딩 장치(10) 내 각 모듈의 동작을 제어한다. 특히, 프로세서(11)는 본 발명에 따른 디코딩 방법(예, 도 7, 8, 12, 13 참조)을 수행하기 위한 일부 기능 및/또는 제어 기능을 수행할 수 있다. 프로세서(11)는 컨트롤러(controller), 마이크로 컨트롤러(microcontroller), 마이크로 프로세서(microprocessor), 마이크로 컴퓨터(microcomputer) 등으로도 불릴 수 있다. 프로세서(11)는 하드웨어(hardware) 또는 펌웨어(firmware), 소프트웨어, 또는 이들의 결합에 의해 구현될 수 있다. 하드웨어를 이용하여 본 발명을 구현하는 경우에는, 본 발명을 수행하도록 구성된 ASIC(application specific integrated circuit) 또는 DSP(digital signal processor), DSPD(digital signal processing device), PLD(programmable logic device), FPGA(field programmable gate array) 등이 프로세서(11)에 구비될 수 있다. 한편, 펌웨어나 소프트웨어를 이용하여 본 발명을 구현하는 경우에는 본 발명의 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등을 포함하도록 펌웨어나 소프트웨어가 구성될 수 있으며, 본 발명을 수행할 수 있도록 구성된 펌웨어 또는 소프트웨어는 프로세서(11) 내에 구비되거나 메모리(12)에 저장되어 프로세서(11)에 의해 구동될 수 있다.
또한, 디코딩 장치(10)는 본 발명에 따른 엔트로피 디코더(1000 또는 1100)를 포함할 수 있다. 또한, 디코딩 장치(10)는 선택적으로(optionally) 파서(13), 역양자화기(14), 역변환기(15)를 포함할 수 있다. 파서(13)는 도 7의 S710 단계에서 설명한 동작을 수행하도록 구성될 수 있으며, 전용 하드웨어로 구현되거나 또는 역다중화기(1010, 1110)의 일부로 구현되거나 혹은 프로세서(11)가 파서(13)의 기능을 대신하도록 구성될 수 있다. 파서(13)가 전용 하드웨어로 구현되는 경우, 파서(13)는 프로세서(11), 메모리(12), 엔트로피 디코더(1000, 1100), 역양자화기(14), 역변환기(15) 중 하나 이상과 동작시 연결되고 비트스트림을 파싱하여 획득한 신택스 정보 및 (엔트로피 코딩된) 데이터(예, 패킷들)을 제공할 수 있다.
역양자화기(14)는 도 7의 S730에서 설명한 동작을 수행하도록 구성될 수 있고, 역변환기(15)는 도 7의 S750에서 설명한 동작을 수행하도록 구성될 수 있다. 역양자화기(14) 및/또는 역변환기(15)는 전용 하드웨어로 구현되거나 또는 범용 프로세서로 구현되거나 또는 프로세서(11)가 기능을 대신하도록 구성될 수 있다.
이외에도, 디코딩 장치(10)는 S750, S760 단계에 대응하는 동작을 수행하기 위한 전용 하드웨어 또는 범용 프로세서(미도시)를 포함할 수 있다. 또는, 이들 동작은 프로세서(11)에 의해 수행될 수도 있다.
또한, 디코딩 장치(10)는 네트워크 인터페이스 모듈(network interface module, NIM)(미도시)을 선택적으로(optionally) 포함할 수 있다. 네트워크 인터페이스 모듈은 프로세서(11)와 동작시 연결(operatively connected)되며, 프로세서(11)는 네트워크 인터페이스 모듈을 제어하여 무선/유선 네트워크를 통해 정보 및/또는 데이터, 신호, 메시지 등을 나르는 무선/유선 신호를 전송 또는 수신할 수 있다. 네트워크 인터페이스 모듈은 예를 들어 IEEE 802 계열, 3GPP LTE(-A), Wi-Fi, ATSC(Advanced Television System Committee), DVB(Digital Video Broadcasting) 등과 같은 다양한 통신 규격을 지원하며, 해당 통신 규격에 따라 제어 정보 및/또는 부호화된 비트스트림과 같은 영상 신호를 송수신할 수 있다. 네트워크 인터페이스 모듈은 필요에 따라 장치에 포함되지 않을 수 있다.
또한, 장치(10)는 입출력 인터페이스(미도시)를 선택적으로(optionally) 포함할 수 있다. 입출력 인터페이스는 프로세서(11)와 동작시 연결(operatively connected)되며, 프로세서(11)는 입출력 인터페이스를 제어하여 제어 신호 및/또는 데이터 신호를 입력받거나 출력할 수 있다. 입출력 인터페이스는 예를 들어 키보드, 마우스, 터치패드, 카메라 등과 같은 입력 장치와 디스플레이 등과 같은 출력 장치와 연결될 수 있도록 USB(Universal Serial Bus), Bluetooth, NFC(Near Field Communication), 직렬/병렬 인터페이스, DVI(Digital Visual Interface), HDMI(High Definition Multimedia Interface) 등과 같은 규격을 지원할 수 있다.
이상에서 설명된 방법들 및 실시예들은 본 발명의 구성요소들과 특징들이 소정 형태로 결합된 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려되어야 한다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 본 발명의 실시예를 구성하는 것도 가능하다. 본 발명의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다. 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있음은 자명하다.
본 발명에 따른 방법 및 실시예는 다양한 수단, 예를 들어, 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 본 발명의 일 실시예는 하나 또는 그 이상의 ASIC(application specific integrated circuit), DSP(digital signal processor), DSPD(digital signal processing device), PLD(programmable logic device), FPGA(field programmable gate array), 프로세서, 콘트롤러, 마이크로 콘트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차, 함수 등의 형태를 포함하는 소프트웨어 코드 또는 명령어(instruction)로 구현될 수 있다. 소프트웨어 코드 또는 명령어는 컴퓨터 판독가능한 매체에 저장되어 프로세서에 의해 구동될 수 있으며 프로세서에 의해 구동될 때 본 발명에 따른 동작들을 수행할 수 있다. 상기 컴퓨터 판독가능한 매체는 상기 프로세서 내부 또는 외부에 위치하거나 원격으로 네트워크를 통해 상기 프로세서와 연결될 수 있으며, 상기 프로세서와 데이터를 주고 받을 수 있다.
본 발명은 본 발명의 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 당업자에게 자명하다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
본 발명은 디코딩 장치, 인코딩 장치와 같은 영상 처리 장치에 이용될 수 있다.
Claims (13)
- 적어도 하나의 프레싱트(precinct)를 포함하는 비디오 신호를 위한 비트스트림을 디코딩하기 위한 장치에 있어서,제1 엔트로피 디코더 엔진;제2 엔트로피 디코더 엔진; 및상기 적어도 하나의 프레싱트 중에서 현재 프레싱트의 패킷들을 제1 복수의 패킷들과 제2 복수의 패킷들로 역다중화하고, 상기 제1 복수의 패킷들을 상기 제1 엔트로피 디코더 엔진으로 전송하고, 상기 제2 복수의 패킷들을 상기 제2 엔트로피 디코더 엔진으로 전송하도록 구성된 역다중화기(demultiplexer)를 포함하되,상기 제1 복수의 패킷들 및 상기 제2 복수의 패킷들은 각각 상기 제1 엔트로피 디코더 엔진 및 상기 제2 엔트로피 디코더 엔진에 의해 병렬적으로 엔트로피 디코딩되며,상기 제1 복수의 패킷들은 패킷 0, 패킷 1, 패킷 4, 패킷 6, 패킷 8을 포함하고, 상기 제2 복수의 패킷들은 패킷 2, 패킷 3, 패킷 5, 패킷 7, 패킷 9를 포함하는, 장치.
- 청구항 1에 있어서,상기 병렬적인 엔트로피 디코딩은, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 0 및 1에 대한 엔트로피 디코딩과 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 2 및 3에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것과, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 4에 대한 엔트로피 디코딩과 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 5에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것과, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 6에 대한 엔트로피 디코딩과 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 7에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것과, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 8에 대한 엔트로피 디코딩과 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 9에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것을 포함하는, 장치.
- 청구항 1에 있어서,상기 패킷 0 및 1은 상기 현재 프레싱트의 첫 번째 라인의 왼쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 2 및 3은 상기 현재 프레싱트의 두 번째 라인의 왼쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 4는 상기 현재 프레싱트의 첫 번째 라인의 오른쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 5는 상기 현재 프레싱트의 세 번째 라인의 왼쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 6은 상기 현재 프레싱트의 세 번째 라인의 오른쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 7은 상기 현재 프레싱트의 두 번째 라인의 오른쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 8은 상기 현재 프레싱트의 네 번째 라인의 왼쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 9는 상기 현재 프레싱트의 네 번째 라인의 오른쪽 절반에 해당하는 코드 그룹들을 포함하는, 장치.
- 청구항 1에 있어서,상기 제1 엔트로피 디코더 엔진과 상기 제2 엔트로피 디코더 엔진 각각은 클록 신호에 기반하여 파이프라인 방식으로 하나의 클록마다 하나의 코드 그룹을 출력하도록 구성되는, 장치.
- 청구항 4에 있어서,상기 하나의 코드 그룹은 4개의 양자화 인덱스 정보를 포함하되,상기 양자화 인덱스 정보는 양자화된 웨이블릿 계수 정보를 나타내는, 장치.
- 청구항 1에 있어서,상기 엔트로피 디코딩은,현재 코드 그룹을 포함하는 패킷의 비트평면 카운트 서브 패킷으로부터 잔차(residual) 정보를 획득하는 것과,상기 현재 코드 그룹의 상위 라인의 비트평면 카운트 정보에 기반하여 예측값(predictor)을 획득하는 것과,상기 잔차 정보 및 상기 예측값에 기반하여 상기 현재 코드 그룹의 비트평면 카운트 정보를 획득하는 것을 포함하는, 장치.
- 청구항 6에 있어서,상기 잔차 정보는 가변 길이 코드(variable length code)를 포함하는 룩업 테이블(look-up table)에 기반하여 획득되는, 장치.
- 청구항 7에 있어서,상기 룩업 테이블은 32x1 다중화기(multiplexer, mux)를 포함하는, 장치.
- 청구항 6에 있어서,상기 엔트로피 디코딩은,상기 현재 코드 그룹의 비트평면 카운트 정보에 기반하여 상기 현재 코드 그룹을 포함하는 패킷의 데이터 서브 패킷으로부터 부호 정보 및 양자화 인덱스 크기 정보를 획득하는 것을 더 포함하되,상기 부호 정보는 웨이블릿 계수 정보의 부호를 나타내고, 상기 양자화 인덱스 크기 정보는 양자화된 웨이블릿 계수 정보의 절대값을 나타내는, 장치.
- 청구항 6에 있어서,상기 엔트로피 디코딩은,상기 현재 코드 그룹의 비트평면 카운트 정보에 기반하여 상기 현재 코드 그룹을 포함하는 데이터 서브 패킷으로부터 양자화 인덱스 크기 정보를 획득하는 것과,상기 양자화 인덱스 크기 정보에 기반하여 상기 현재 코드 그룹을 포함하는 부호 서브 패킷으로부터 부호 정보를 획득하는 것을 더 포함하되,상기 부호 정보는 웨이블릿 계수 정보의 부호를 나타내고, 상기 양자화 인덱스 크기 정보는 양자화된 웨이블릿 계수 정보의 절대값을 나타내는, 장치.
- 청구항 1에 있어서,상기 장치는 엔트로피 디코딩된 데이터에 기반하여 역양자화를 수행하여 웨이블릿 계수 정보를 복원하도록 구성된 역양자화기를 더 포함하는, 장치.
- 청구항 12에 있어서,상기 장치는 상기 웨이블릿 계수 정보에 기반하여 역 이산 웨이블릿 변환(inverse discrete wavelet transformation)을 수행하여 샘플을 복원하도록 구성된 역변환기를 더 포함하는, 장치.
- 적어도 하나의 프레싱트(precinct)를 포함하는 비디오 신호를 위한 비트스트림을 디코딩하기 위한 방법에 있어서, 상기 방법은 제1 엔트로피 디코더 엔진 및 제2 엔트로피 디코더 엔진을 포함하는 디코딩 장치에 의해 수행되며,상기 적어도 하나의 프레싱트 중에서 현재 프레싱트의 패킷들을 제1 복수의 패킷들 및 제2 복수의 패킷들로 역다중화(demultiplex)하는 단계; 및상기 제1 복수의 패킷들 및 상기 제2 복수의 패킷들을 병렬적으로 엔트로피 디코딩하는 단계를 포함하되,상기 제1 복수의 패킷들 및 상기 제2 복수의 패킷들은 각각 상기 제1 엔트로피 디코더 엔진 및 상기 제2 엔트로피 디코더 엔진에 의해 병렬적으로 엔트로피 디코딩되며,상기 제1 복수의 패킷들은 패킷 0, 패킷 1, 패킷 4, 패킷 6, 패킷 8을 포함하고, 상기 제2 복수의 패킷들은 패킷 2, 패킷 3, 패킷 5, 패킷 7, 패킷 9를 포함하는, 방법.
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020217018536A KR102647030B1 (ko) | 2019-01-23 | 2019-01-23 | 비디오 신호의 처리 방법 및 장치 |
| US17/424,146 US11882285B2 (en) | 2019-01-23 | 2019-01-23 | Video signal processing method and device |
| EP19911500.7A EP3917143A4 (en) | 2019-01-23 | 2019-01-23 | Video signal processing method and device |
| PCT/KR2019/000942 WO2020153512A1 (ko) | 2019-01-23 | 2019-01-23 | 비디오 신호의 처리 방법 및 장치 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/KR2019/000942 WO2020153512A1 (ko) | 2019-01-23 | 2019-01-23 | 비디오 신호의 처리 방법 및 장치 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2020153512A1 true WO2020153512A1 (ko) | 2020-07-30 |
Family
ID=71736909
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/KR2019/000942 Ceased WO2020153512A1 (ko) | 2019-01-23 | 2019-01-23 | 비디오 신호의 처리 방법 및 장치 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US11882285B2 (ko) |
| EP (1) | EP3917143A4 (ko) |
| KR (1) | KR102647030B1 (ko) |
| WO (1) | WO2020153512A1 (ko) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2023160470A1 (zh) * | 2022-02-28 | 2023-08-31 | 华为技术有限公司 | 编解码方法和装置 |
| US12542566B2 (en) | 2021-04-26 | 2026-02-03 | Huawei Technologies Co., Ltd. | Parallel entropy coding |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102660119B1 (ko) * | 2018-09-18 | 2024-04-22 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 비디오 인코더, 비디오 디코더 및 방법 |
| US12230001B2 (en) * | 2022-01-14 | 2025-02-18 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Encoder, decoder and related methods |
| US12532029B2 (en) * | 2023-07-13 | 2026-01-20 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Wavelet-based encoding of a video sequence and wavelet-based decoding of a bit stream |
| CN121367778A (zh) * | 2023-10-23 | 2026-01-20 | 华为技术有限公司 | 熵编/解码方法和装置 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090092326A1 (en) * | 2005-12-07 | 2009-04-09 | Sony Corporation | Encoding device, encoding method, encoding program, decoding device, decoding method, and decoding program |
| US9955176B2 (en) * | 2015-11-30 | 2018-04-24 | Intel Corporation | Efficient and scalable intra video/image coding using wavelets and AVC, modified AVC, VPx, modified VPx, or modified HEVC coding |
| WO2018114813A1 (en) * | 2016-12-19 | 2018-06-28 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Apparatus and method for encoding or decoding using a subband dependent prediction adaption for gcli entropy coding |
| WO2019011484A1 (en) * | 2017-07-10 | 2019-01-17 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | BINARY PLAN CODING |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| AU2017204643B2 (en) * | 2017-07-07 | 2020-05-14 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding video data |
-
2019
- 2019-01-23 KR KR1020217018536A patent/KR102647030B1/ko active Active
- 2019-01-23 WO PCT/KR2019/000942 patent/WO2020153512A1/ko not_active Ceased
- 2019-01-23 EP EP19911500.7A patent/EP3917143A4/en active Pending
- 2019-01-23 US US17/424,146 patent/US11882285B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090092326A1 (en) * | 2005-12-07 | 2009-04-09 | Sony Corporation | Encoding device, encoding method, encoding program, decoding device, decoding method, and decoding program |
| US9955176B2 (en) * | 2015-11-30 | 2018-04-24 | Intel Corporation | Efficient and scalable intra video/image coding using wavelets and AVC, modified AVC, VPx, modified VPx, or modified HEVC coding |
| WO2018114813A1 (en) * | 2016-12-19 | 2018-06-28 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Apparatus and method for encoding or decoding using a subband dependent prediction adaption for gcli entropy coding |
| WO2019011484A1 (en) * | 2017-07-10 | 2019-01-17 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | BINARY PLAN CODING |
Non-Patent Citations (2)
| Title |
|---|
| BRUNS, VOLKER ET AL.: "Decoding JPEG XS on a GPU", 2018 PICTURE CODING SYMPOSIUM (PCS, 27 June 2018 (2018-06-27), pages 111 - 115, XP033398633, DOI: 10.1109/PCS.2018.8456310 * |
| See also references of EP3917143A4 * |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12542566B2 (en) | 2021-04-26 | 2026-02-03 | Huawei Technologies Co., Ltd. | Parallel entropy coding |
| WO2023160470A1 (zh) * | 2022-02-28 | 2023-08-31 | 华为技术有限公司 | 编解码方法和装置 |
| CN116708787A (zh) * | 2022-02-28 | 2023-09-05 | 华为技术有限公司 | 编解码方法和装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20210084634A (ko) | 2021-07-07 |
| US20220109843A1 (en) | 2022-04-07 |
| KR102647030B1 (ko) | 2024-03-14 |
| EP3917143A1 (en) | 2021-12-01 |
| US11882285B2 (en) | 2024-01-23 |
| EP3917143A4 (en) | 2022-09-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2020153512A1 (ko) | 비디오 신호의 처리 방법 및 장치 | |
| CA2952629C (en) | Method for palette mode coding | |
| WO2020197236A1 (ko) | 서브 픽처 핸들링 구조 기반 영상 또는 비디오 코딩 | |
| WO2014098456A2 (ko) | 영상 인코딩/디코딩 방법 및 이를 이용하는 장치 | |
| WO2020101321A1 (ko) | 고주파 제로잉을 기반으로 변환 계수를 코딩하는 방법 및 그 장치 | |
| WO2021201515A1 (ko) | Hls를 시그널링하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 컴퓨터 판독 가능한 기록 매체 | |
| AU2017308831B2 (en) | Color remapping information sei message signaling for display adaptation | |
| WO2021040319A1 (ko) | 비디오/영상 코딩 시스템에서 라이스 파라미터 도출 방법 및 장치 | |
| EP3497931A1 (en) | Video coding tools for in-loop sample processing | |
| WO2021118295A1 (ko) | 루프 필터링을 제어하기 위한 영상 코딩 장치 및 방법 | |
| WO2016153251A1 (ko) | 비디오 신호의 처리 방법 및 이를 위한 장치 | |
| WO2021034115A1 (ko) | 크로마 양자화 파라미터 오프셋 관련 정보를 코딩하는 영상 디코딩 방법 및 그 장치 | |
| WO2021118293A1 (ko) | 필터링 기반 영상 코딩 장치 및 방법 | |
| WO2021071187A1 (ko) | 비디오/영상 코딩 시스템에서 라이스 파라미터 도출 방법 및 장치 | |
| WO2020141856A1 (ko) | 영상 코딩 시스템에서 레지듀얼 정보를 사용하는 영상 디코딩 방법 및 그 장치 | |
| WO2020153506A1 (ko) | 비디오 신호의 처리 방법 및 장치 | |
| WO2021071188A1 (ko) | 비디오/영상 코딩 시스템에서 엔트로피 코딩 방법 및 장치 | |
| WO2020130514A1 (ko) | 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 | |
| WO2021246791A1 (ko) | 영상/비디오 코딩 시스템에서 상위 레벨 신택스를 처리하는 방법 및 장치 | |
| WO2021235895A1 (ko) | 영상 코딩 방법 및 그 장치 | |
| WO2021118297A1 (ko) | 필터링을 위한 정보의 시그널링 기반 영상 코딩 장치 및 방법 | |
| WO2020185039A1 (ko) | 레지듀얼 코딩 방법 및 장치 | |
| WO2021137588A1 (ko) | 픽처 헤더를 포함하는 영상 정보를 코딩하는 영상 디코딩 방법 및 그 장치 | |
| WO2021246790A1 (ko) | 영상/비디오 코딩 시스템에서 일반 제한 정보를 처리하는 방법 및 장치 | |
| WO2021107634A1 (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: 19911500 Country of ref document: EP Kind code of ref document: A1 |
|
| ENP | Entry into the national phase |
Ref document number: 20217018536 Country of ref document: KR Kind code of ref document: A |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| ENP | Entry into the national phase |
Ref document number: 2019911500 Country of ref document: EP Effective date: 20210823 |


