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

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

Info

Publication number
KR102123620B1
KR102123620B1 KR1020177013845A KR20177013845A KR102123620B1 KR 102123620 B1 KR102123620 B1 KR 102123620B1 KR 1020177013845 A KR1020177013845 A KR 1020177013845A KR 20177013845 A KR20177013845 A KR 20177013845A KR 102123620 B1 KR102123620 B1 KR 102123620B1
Authority
KR
South Korea
Prior art keywords
data
data symbol
unit
segment
parallel processing
Prior art date
Application number
KR1020177013845A
Other languages
English (en)
Other versions
KR20170075759A (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 KR20170075759A publication Critical patent/KR20170075759A/ko
Application granted granted Critical
Publication of KR102123620B1 publication Critical patent/KR102123620B1/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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

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

Description

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

Claims (16)

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

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
KR20170075759A KR20170075759A (ko) 2017-07-03
KR102123620B1 true KR102123620B1 (ko) 2020-06-26

Family

ID=55954678

Family Applications (1)

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

Country Status (3)

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

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10097833B2 (en) * 2014-12-26 2018-10-09 Intel Corporation Method and system of entropy coding using look-up table based probability updating for video coding
KR102414164B1 (ko) * 2017-03-31 2022-06-29 한국전자통신연구원 향상된 산술부호화를 제공하는 영상 처리 방법, 그를 이용한 영상 복호화, 부호화 방법 및 그 장치
JP7067095B2 (ja) * 2018-02-07 2022-05-16 京セラドキュメントソリューションズ株式会社 画像形成装置及び画像形成プログラム
US10587284B2 (en) * 2018-04-09 2020-03-10 International Business Machines Corporation Multi-mode compression acceleration
US11516152B2 (en) * 2019-09-28 2022-11-29 Tencent America LLC First-in first-out function for segmented data stream processing
WO2023138687A1 (en) * 2022-01-21 2023-07-27 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for data processing
CN114928747B (zh) * 2022-07-20 2022-12-16 阿里巴巴(中国)有限公司 基于av1熵编码的上下文概率处理电路、方法及相关装置

Family Cites Families (21)

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

Also Published As

Publication number Publication date
KR20170075759A (ko) 2017-07-03
US20170359591A1 (en) 2017-12-14
WO2016076677A1 (ko) 2016-05-19
US10455244B2 (en) 2019-10-22

Similar Documents

Publication Publication Date Title
JP7100836B2 (ja) エントロピー符号化におけるコンテキスト初期化
KR102123620B1 (ko) 대용량 병렬 처리를 위해 비디오 신호를 엔트로피 인코딩 또는 엔트로피 디코딩하는 방법 및 장치
TWI753356B (zh) 用於編碼或解碼轉換塊的方法與裝置
US8018996B2 (en) Arithmetic decoding apparatus and method
CN108259900B (zh) 针对视频的上下文自适应二进制熵编码的变换系数编码
JP5676744B2 (ja) エントロピー符号化
US6014095A (en) Variable length encoding system
CA2788754C (en) Parallel entropy coding and decoding methods and devices
CN113424541B (zh) 视频编解码的方法和装置
CN111988619B (zh) 视频编解码方法、装置、计算机设备和存储介质
US20140286417A1 (en) Data encoding and decoding
EP2561680B1 (en) Methods and devices for reordered parallel entropy coding
US20110200104A1 (en) Parallel entropy coding and decoding methods and devices
TW201711467A (zh) 使用一全文自適應二進位算術寫碼設計來寫碼資料
KR102600727B1 (ko) 파라미터화된 확률 추정 유한 상태 머신들을 이용한 이진 산술 코딩
US20130177070A1 (en) Significance map support for parallel transform coefficient processing in video coding
TW202002636A (zh) 網格寫碼之量化係數寫碼
CN110944173B (zh) 视频解码方法、装置、电子设备以及存储介质
JP2010178319A (ja) 画像符号化装置及び画像符号化方法
JP2007074648A (ja) Cabac復号化装置
CN117203961A (zh) 利用来自空间邻居的信息的cabac上下文建模

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant