KR102647030B1 - 비디오 신호의 처리 방법 및 장치 - Google Patents

비디오 신호의 처리 방법 및 장치 Download PDF

Info

Publication number
KR102647030B1
KR102647030B1 KR1020217018536A KR20217018536A KR102647030B1 KR 102647030 B1 KR102647030 B1 KR 102647030B1 KR 1020217018536 A KR1020217018536 A KR 1020217018536A KR 20217018536 A KR20217018536 A KR 20217018536A KR 102647030 B1 KR102647030 B1 KR 102647030B1
Authority
KR
South Korea
Prior art keywords
packet
information
packets
entropy
entropy decoder
Prior art date
Application number
KR1020217018536A
Other languages
English (en)
Other versions
KR20210084634A (ko
Inventor
윤다현
김윤정
유종훈
이나라
이상헌
이재혁
이탁건
이혜민
정태일
Original Assignee
엘지전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘지전자 주식회사 filed Critical 엘지전자 주식회사
Publication of KR20210084634A publication Critical patent/KR20210084634A/ko
Application granted granted Critical
Publication of KR102647030B1 publication Critical patent/KR102647030B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/188Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/1883Methods 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/1887Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/434Disassembling 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/4343Extraction or processing of packetized elementary streams [PES]

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]
Figure 112021069261955-pct00001
[수학식 1]
Figure 112021069261955-pct00002
수학식 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]
Figure 112021069261955-pct00003
표 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
유니폼 양자화는 양자화 스텝 사이즈를
Figure 112021069261955-pct00004
로 하여 웨이블릿 계수의 크기 정보를 나눈 후 반올림하는 동작으로 구현될 수 있다. 예를 들어, 유니폼 양자화는 수학식 3에 기반하여 수행될 수 있다. 수학식 3에서 v는 양자화 인덱스 크기를 나타내고, d는 웨이블릿 계수 크기 정보를 나타내고, M은 비트평면 카운트정보를 나타내고, T는 절삭 위치 정보를 나타낸다.
[수학식 3]
Figure 112021069261955-pct00005
양자화를 통해 생성된 양자화 인덱스 크기 정보 및 부호 정보는 엔트로피 인코딩을 통해 비트스트림에 추가될 수 있다.
도 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 정보에 기반하여 양자화 스텝 사이즈
Figure 112021069261955-pct00006
를 구한 다음, 양자화 인덱스 크기 정보에 양자화 스텝 사이즈를 곱하고 부호 정보를 적용하여 웨이블릿 계수를 복원할 수 있다. 예를 들어, 역 유니폼 양자화는 수학식 5에 기반하여 수행될 수 있다. 수학식 5에서 c는 복원된 웨이블릿 계수를 나타내고, s는 부호 정보를 나타내고, v는 양자화 인덱스 크기를 나타내고, T는 절삭 위치 정보를 나타낸다.
[수학식 5]
Figure 112021069261955-pct00007
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)

  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를 포함하며,
    상기 제1 엔트로피 디코더 엔진과 상기 제2 엔트로피 디코더 엔진 각각은 클록 신호에 기반하여 파이프라인 방식으로 하나의 클록마다 하나의 코드 그룹을 출력하고,
    상기 하나의 코드 그룹은 4개의 양자화 인덱스 정보를 포함하되,
    상기 양자화 인덱스 정보는 양자화된 웨이블릿 계수 정보를 나타내는, 장치.
  2. 청구항 1에 있어서,
    상기 병렬적인 엔트로피 디코딩은, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 0 및 1에 대한 엔트로피 디코딩과 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 2 및 3에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것과, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 4에 대한 엔트로피 디코딩과 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 5에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것과, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 6에 대한 엔트로피 디코딩과 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 7에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것과, 상기 제1 엔트로피 디코더 엔진에 의한 상기 패킷 8에 대한 엔트로피 디코딩과 상기 제2 엔트로피 디코더 엔진에 의한 상기 패킷 9에 대한 엔트로피 디코딩을 병렬적으로 수행하는 것을 포함하는, 장치.
  3. 청구항 1에 있어서,
    상기 패킷 0 및 1은 상기 현재 프레싱트의 첫 번째 라인의 왼쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 2 및 3은 상기 현재 프레싱트의 두 번째 라인의 왼쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 4는 상기 현재 프레싱트의 첫 번째 라인의 오른쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 5는 상기 현재 프레싱트의 세 번째 라인의 왼쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 6은 상기 현재 프레싱트의 세 번째 라인의 오른쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 7은 상기 현재 프레싱트의 두 번째 라인의 오른쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 8은 상기 현재 프레싱트의 네 번째 라인의 왼쪽 절반에 해당하는 코드 그룹들을 포함하고, 상기 패킷 9는 상기 현재 프레싱트의 네 번째 라인의 오른쪽 절반에 해당하는 코드 그룹들을 포함하는, 장치.
  4. 삭제
  5. 삭제
  6. 청구항 1에 있어서,
    상기 엔트로피 디코딩은,
    현재 코드 그룹을 포함하는 패킷의 비트평면 카운트 서브 패킷으로부터 잔차(residual) 정보를 획득하는 것과,
    상기 현재 코드 그룹의 상위 라인의 비트평면 카운트 정보에 기반하여 예측값(predictor)을 획득하는 것과,
    상기 잔차 정보 및 상기 예측값에 기반하여 상기 현재 코드 그룹의 비트평면 카운트 정보를 획득하는 것을 포함하는, 장치.
  7. 청구항 6에 있어서,
    상기 잔차 정보는 가변 길이 코드(variable length code)를 포함하는 룩업 테이블(look-up table)에 기반하여 획득되는, 장치.
  8. 청구항 7에 있어서,
    상기 룩업 테이블은 32x1 다중화기(multiplexer, mux)를 포함하는, 장치.
  9. 청구항 6에 있어서,
    상기 엔트로피 디코딩은,
    상기 현재 코드 그룹의 비트평면 카운트 정보에 기반하여 상기 현재 코드 그룹을 포함하는 패킷의 데이터 서브 패킷으로부터 부호 정보 및 양자화 인덱스 크기 정보를 획득하는 것을 더 포함하되,
    상기 부호 정보는 웨이블릿 계수 정보의 부호를 나타내고, 상기 양자화 인덱스 크기 정보는 양자화된 웨이블릿 계수 정보의 절대값을 나타내는, 장치.
  10. 청구항 6에 있어서,
    상기 엔트로피 디코딩은,
    상기 현재 코드 그룹의 비트평면 카운트 정보에 기반하여 상기 현재 코드 그룹을 포함하는 데이터 서브 패킷으로부터 양자화 인덱스 크기 정보를 획득하는 것과,
    상기 양자화 인덱스 크기 정보에 기반하여 상기 현재 코드 그룹을 포함하는 부호 서브 패킷으로부터 부호 정보를 획득하는 것을 더 포함하되,
    상기 부호 정보는 웨이블릿 계수 정보의 부호를 나타내고, 상기 양자화 인덱스 크기 정보는 양자화된 웨이블릿 계수 정보의 절대값을 나타내는, 장치.
  11. 청구항 1에 있어서,
    상기 장치는 엔트로피 디코딩된 데이터에 기반하여 역양자화를 수행하여 웨이블릿 계수 정보를 복원하도록 구성된 역양자화기를 더 포함하는, 장치.
  12. 청구항 11에 있어서,
    상기 장치는 상기 웨이블릿 계수 정보에 기반하여 역 이산 웨이블릿 변환(inverse discrete wavelet transformation)을 수행하여 샘플을 복원하도록 구성된 역변환기를 더 포함하는, 장치.
  13. 적어도 하나의 프레싱트(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 엔트로피 디코더 엔진과 상기 제2 엔트로피 디코더 엔진 각각은 클록 신호에 기반하여 파이프라인 방식으로 하나의 클록마다 하나의 코드 그룹을 출력하고,
    상기 하나의 코드 그룹은 4개의 양자화 인덱스 정보를 포함하되,
    상기 양자화 인덱스 정보는 양자화된 웨이블릿 계수 정보를 나타내는, 방법.
KR1020217018536A 2019-01-23 2019-01-23 비디오 신호의 처리 방법 및 장치 KR102647030B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/KR2019/000942 WO2020153512A1 (ko) 2019-01-23 2019-01-23 비디오 신호의 처리 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20210084634A KR20210084634A (ko) 2021-07-07
KR102647030B1 true KR102647030B1 (ko) 2024-03-14

Family

ID=71736909

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217018536A KR102647030B1 (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)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL3847818T3 (pl) * 2018-09-18 2024-04-29 Huawei Technologies Co., Ltd. Koder wideo, dekoder wideo i odpowiednie sposoby
CN116708787A (zh) * 2022-02-28 2023-09-05 华为技术有限公司 编解码方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170155906A1 (en) * 2015-11-30 2017-06-01 Intel Corporation EFFICIENT AND SCALABLE INTRA VIDEO/IMAGE CODING USING WAVELETS AND AVC, MODIFIED AVC, VPx, MODIFIED VPx, OR MODIFIED HEVC CODING
WO2019006488A1 (en) * 2017-07-07 2019-01-10 Canon Kabushiki Kaisha METHOD, APPARATUS, AND SYSTEM FOR ENCODING AND DECODING VIDEO DATA

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007066710A1 (ja) * 2005-12-07 2007-06-14 Sony Corporation 符号化装置、符号化方法および符号化プログラム、ならびに、復号装置、復号方法および復号プログラム
PL3556097T3 (pl) 2016-12-19 2022-04-25 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Kodowanie obrazu z wykorzystaniem adaptacji predykcji zależnej od podpasma do enkodowania entropijnego gcli
WO2019011484A1 (en) * 2017-07-10 2019-01-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. BINARY PLAN CODING

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170155906A1 (en) * 2015-11-30 2017-06-01 Intel Corporation EFFICIENT AND SCALABLE INTRA VIDEO/IMAGE CODING USING WAVELETS AND AVC, MODIFIED AVC, VPx, MODIFIED VPx, OR MODIFIED HEVC CODING
WO2019006488A1 (en) * 2017-07-07 2019-01-10 Canon Kabushiki Kaisha METHOD, APPARATUS, AND SYSTEM FOR ENCODING AND DECODING VIDEO DATA

Also Published As

Publication number Publication date
US20220109843A1 (en) 2022-04-07
EP3917143A4 (en) 2022-09-07
US11882285B2 (en) 2024-01-23
KR20210084634A (ko) 2021-07-07
EP3917143A1 (en) 2021-12-01
WO2020153512A1 (ko) 2020-07-30

Similar Documents

Publication Publication Date Title
USRE49019E1 (en) Quantization matrix compression in video coding
US8860781B2 (en) Texture compression in a video decoder for efficient 2D-3D rendering
EP2898694B1 (en) Video compression with color space scalability
RU2482616C2 (ru) Видеокодирование коэффициентов фильтра на основе горизонтальной и вертикальной симметрии
WO2018039451A1 (en) Color gamut adaptation with feedback channel
US20140376611A1 (en) Adaptive color transforms for video coding
WO2013058541A1 (ko) 영상 부호화/복호화 방법 및 그 장치
US20170019678A1 (en) Video compression with color space scalability
WO2014162736A1 (en) Video compression with color bit depth scaling
EP3497934B1 (en) Color remapping information sei message signaling for display adaptation
WO2015008464A1 (en) Video parameter set signaling
KR102282260B1 (ko) 멀티-모드 비디오 코딩을 위해 공간 예측 모드로 비디오 코딩하기 위한 방법
WO2019010305A1 (en) REMOVING COLOR FOR VIDEO CONTENT OF FORMAT NO 4: 4: 4
KR20170042292A (ko) 다중-파티션 변환을 위해 변환 구조를 재사용하는 시스템 및 방법
KR102647030B1 (ko) 비디오 신호의 처리 방법 및 장치
WO2019010420A1 (en) PRECISION FOR CALCULATION AND SIGNALING OF DYNAMIC RANGE ADJUSTMENT AND COLOR REMOVAL INFORMATION
US10666984B2 (en) Apparatus and method for vector-based entropy coding for display stream compression
US20160044339A1 (en) System and method for reordering of prefixes and suffixes in variable length coding to increase throughput
GB2509966A (en) Encoding a video data stream using hardware acceleration
US11418788B2 (en) Method and apparatus for processing video signal
Inatsuki et al. An FPGA implementation of low-latency video transmission system using lossless and near-lossless line-based compression
KR102113759B1 (ko) 다채널 부화면 처리장치 및 처리방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right