KR20140056281A - 계수 압축을 사용하여 디코딩을 하기 위한 장치 및 방법 - Google Patents

계수 압축을 사용하여 디코딩을 하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20140056281A
KR20140056281A KR1020147004310A KR20147004310A KR20140056281A KR 20140056281 A KR20140056281 A KR 20140056281A KR 1020147004310 A KR1020147004310 A KR 1020147004310A KR 20147004310 A KR20147004310 A KR 20147004310A KR 20140056281 A KR20140056281 A KR 20140056281A
Authority
KR
South Korea
Prior art keywords
coefficient
data
compressed
processing unit
packet
Prior art date
Application number
KR1020147004310A
Other languages
English (en)
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 KR20140056281A publication Critical patent/KR20140056281A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

그래픽 디코딩에서 계수 압축을 사용하는 방법 및 장치가 제공된다. 일례에서, 컴퓨터 처리 유닛(CPU)은 그래픽 처리 유닛(GPU)과 인터페이스하며, 여기서 CPU는 계수를 추출하고 바람직하게는 균등한 크기의 데이터 패킷의 압축된 계수 데이터를 디코딩 및 계수 처리를 위해 GPU로 전달한다. 바람직하게는, 추출된 계수는 역변환(iT) 계수이며, CPU는 iT 계수의 데이터 컨텐츠에 기초하여 iT 계수 데이터 압축을 수행하기 위한 계수 인코딩 공정을 적응적으로 선택하도록 구성된 인코더 제어 성분을 포함하되, 상기 데이터 패킷에 포함된 압축된 iT 계수 데이터를 인코딩하는데 사용된 선택된 계수 인코딩 공정을 식별하는 데이터를 포함하는 데이터 패킷이 생성된다. 이 경우에, GPU는 이 데이터 패킷을 수신하고 상기 패킷 내에 식별된 선택된 계수 인코딩 공정과 상보적인 계수 디코딩 방법을 사용하여 각 패킷 내 iT 계수 데이터를 디코딩하도록 구성된다. GPU는 바람직하게는 이 데이터 패킷에 대해 초 병렬 계수 디코딩을 사용한다.

Description

계수 압축을 사용하여 디코딩을 하기 위한 장치 및 방법{APPARATUS AND METHOD FOR DECODING USING COEFFICIENT COMPRESSION}
관련 출원에 관한 교차 참조
본 출원은 미국 가출원 제13/186,007호(출원일: 2011년 7월 19일)의 혜택을 주장하며, 이 기초 출원의 내용은 본 명세서에 참조로 병합된다.
발명의 기술분야
본 발명은 일반적으로 그래픽/비디오를 디코딩하는 것에 관한 것으로, 보다 상세하게는 중앙 처리 유닛(CPU)과 그래픽 처리 유닛(GPU)과 같은 그래픽의 디코딩을 공유하는 집적 회로 및 이와 관련된 방법에 관한 것이다.
그래픽 처리 유닛(GPU)은 컴퓨터로 생성된 이미지 및 비디오의 편리한 디스플레이를 지원하기 위해 개발되었다. 일반적으로, 컴퓨터의 중앙 처리 유닛(CPU)과 연관된 2차원(2D) 및/또는 3차원(3D) 엔진은 시스템 메모리의 프레임 버퍼에 저장된 데이터로 이미지와 비디오를 렌더링할 수 있다. GPU는 원하는 유형의 비디오 신호 출력을 제공하기 위해 선택된 방식으로 데이터를 처리하기 위해 CPU를 지원할 수 있다.
여러 CPU/GPU 작업 공유 시스템은 인코딩된 비디오를 디코딩하고 DAC(디지털 대 아날로그 컨버터), DVI(디지털 비주얼 인터페이스) 또는 HDMI(고선명 멀티미디어 인터페이스) 신호와 같은 디스플레이 디바이스를 구동하는데 적합한 신호를 생성하기 위해 개발되었다. 컴퓨팅 디바이스가 DVD-비디오를 디코딩하는데 먼저 사용되었을 때 시작하여, CPU가 MPEG-2 스트림과 같은 비디오 스트림의 일부 부분을 디코딩하고, GPU가 디스플레이 디바이스에 적합한 포맷된 출력을 제공하기 위해 나머지 처리를 수행하는 것으로 그래픽 처리 기능이 분할되어 있었다. 초기에 GPU는 주로 컬러 공간 변환(YUV에서 RGB로) 기능과 원래의 디코딩된 사이즈를 디스플레이를 위해 원하는 윈도우나 풀 스크린에 맞게 스케일링하는 기능을 처리해 왔다. 이후, GPU는 이들 기능이 메모리 대역폭을 많이 사용하여서 움직임 보상(MC) 기능을 처리하기 시작하였다. 확장된 성능을 가지는 GPU의 초기 예는 1997년에 개발되어 ATI 테크놀로지즈사에서 시판하는 RagePro GPU였다.
그래픽/비디오를 인코딩하는 하나의 일반적인 방법은 이산 코사인 변환(DCT) 처리를 사용하여 인코딩하는 것을 수반하며 여기서 인코딩된 비디오 컨텐츠는 DCT 계수로 변환된다. 이러한 인코딩된 비디오를 플레이백하고/디코딩하기 위하여, 역이산 코사인 변환(iDCT) 처리를 사용하는 것이 요구되는 단계들 중 하나이다.
비디오를 MPEG-2 인코딩하기 위해, 비디오는 YUV 값으로 표시된 픽셀로 먼저 한정된 후, DCT 처리가 YUV 픽셀 데이터의 블록에 수행되어 DCT 계수의 블록을 생성하며 이 DCT 계수의 블록은 양자화되고 이후 가변 길이 코드(VLC)를 사용하여 엔트로피 코딩되며 이는 일반적으로 움직임 벡터와 오디오 데이터를 또한 더 포함하는 MPEG-2 인코딩된 비트 스트림의 비디오 데이터를 많이 생성한다. MPEG-2 비트 스트림의 비디오를 디코딩하기 위하여, VLC 인코딩된 데이터에 대하여 처리하는 것은 역전되어야 하나, 인코딩 양자화 처리가 완전히 가역적이지 않기 때문에 일부 데이터 품질의 손실이 발생한다.
전형적으로, MPEG-2 비트 스트림의 다른 성분을 처리하는 것에 부가해서, 컴퓨터의 CPU는 가변 길이 코드 디코딩(VLD)과 역 양자화를 수행하여 iDCT 처리되어야 하는 원래의 DCT 계수에 근접하게 대응하는 역이산 코사인 변환(iDCT) 계수를 유도한다. 비디오를 디코딩할 때 CPU 처리 부하를 더 감소시키기 위하여, GPU로 iDCT 계산의 수행이 이동되었다. 1998년 내지 1999년에, 마이크로소프트사는 DXVA(DirectX Video Acceleration)로 알려진 인터페이스를 가지는 윈도우 PC에서 DVD 플레이백에 대해 고품질의 MPEG-2 디코딩을 제공하는 것이 매우 바람직하다는 것으로 인해 CPU-GPU 인터페이스를 표준화하였다. 이 인터페이스는 DirectX라고 불리우는 일반적인 그래픽 칩 애플리케이션 프로그래밍 인터페이스(API)의 일부이다. DXVA 인터페이스에 관한 정보는 http://msdn.microsoft.com/en-us/library/ff568238(v=vs.85).aspx에 있는 마이크로소프트의 웹사이트에서 이용가능하며, 여기에는 다음과 같이 적혀 있다:
DirectX VA 인터페이스는 낮은 레벨의 역 이산 코사인 변환(iDCT)을 처리하는 여러 방식을 지원한다. 여기에는 2가지 기본 동작 유형이 있다:
1. 오프 호스트(off-host) iDCT: 변환 계수의 매크로블록을 외부 iDCT, 화상 재구성, 및 재구성 클립핑을 위해 가속기로 전달한다.
2. 호스트 기반 iDCT: 호스트에서 iDCT를 수행하고 공간 영역 결과의 블록을 외부 화상 재구성 및 재구성 클립핑을 위해 가속기로 전달한다.
두 경우에, 기본 역양자화 공정, 프리-iDCT 범위 포화, MPEG-2 미스매치 제어(필요한 경우) 및 인트라-DC 오프셋(필요한 경우)이 호스트에서 수행된다. 두 경우에, 최종 화상 재구성과 재구성 클립핑은 가속기에서 수행된다.
도 1은 GPU가 iDCT 처리를 수행하는 표준 DXVA 인터페이스를 통해 GPU에 연결된 CPU의 예를 제공한다. 도 1에 도시된 바와 같이, CPU는 iDCT 계수를 추출하기 위해 MPEG-2 인코딩된 비디오를 처리하며 iDCT 계수의 매크로블록을 퍼스널 컴퓨터 마더보드에 연결된 데이터 버스와 같은 iDCT 계수 데이터 인터페이스(100)를 통해 iDCT 처리를 위한 GPU에 전달한다. CPU는 디스플레이 순서 논리 및 연관된 오디오와 관련된 움직임 벡터 리스트 및 여러 다른 데이터 항목을 더 전달한다. 그러나, iDCT 계수는 iDCT 계수가 비디오의 각 프레임의 각 픽셀의 디스플레이 특성을 한정하는 정보를 포함하므로, 비디오 처리를 위해 GPU로 전달된 데이터에 압도적인 부분을 구성한다.
DXVA(및 DXVA-유사) 인터페이스는 CPU가 GPU에 대한 작업의 일부분을 덜어주는 것으로 비디오의 실시간 플레이백을 디코드 처리하는 것을 사용하는 개념을 중심으로 설계된다. DXVA 인터페이스는 2급(second rate)에 따르는 일반적으로 30개의 프레임으로 디스플레이하기 위해 처리된 상대적으로 낮은 해상도의 비디오에서 잘 작동하였다. 수년에 걸쳐, 해상도 인수는 DVD 해상도(720×480 픽셀)로부터 HDTV(1920×1080 픽셀)로 증가하였다. 현재, GPU는 심지어 듀얼 스트림이나 PIP(picture in picture) 성능을 더 가질 수 있는 블루레이 무비 플레이백을 지원하기 위해 여러 코덱을 위한 1920×1080으로 풀 비트 스트림의 디코딩을 취급하도록 요구될 수 있다.
더 높은 해상도에 의해 생성된 처리 요구를 충족하는 것에 더하여, 더 높은 프레임 속도, 예컨대, 실시간보다 10배 이상 더 높은 프레임 속도로 디코딩할 필요가 또한 있다. 예를 들어, 더 높은 프레임 속도는 하나의 포맷으로부터 다른 포맷으로 트랜스코딩하는 것, 평활한 초고속 전진 디스플레이, 평활한 고속 전진을 위한 전송 순서 및 디스플레이 순서 변환, 120Hz 및 240Hz 디스플레이에서 평활한 고속 전진, 비디오 편집(특히, 복수의 비디오 스트림이 하나의 최종 스트림으로 병합되는 것) 및 얼굴이나 물체의 검출을 위한 것과 같은 비디오 검색 알고리즘을 위해 사용될 수 있다.
GPU는 셰이더(shader)로 알려진 처리 구성요소(processing component)를 포함하는 SIMD 처리 엔진을 사용하는 구성을 통해 확장된 처리 기능을 가지는 것으로 개발되었다. 예를 들어, 도 2는 종래 기술의 GPU, 즉 ATI Radeon HD 5800 시리즈 GPU를 예시한다. Radeon HD 5800 시리즈 GPU는 처리 능력이 약 2.72 테라FLOPS을 가지고 있다. 이 GPU는 각각이 16개의 프로세서(셰이더)를 가지는, 즉 총 320개의 셰이더를 가지는 20개의 SIMD 엔진을 특징으로 한다. Radeon HD 5800 시리즈 GPU는 80개의 텍스처 유닛, 즉 SIMD 엔진당 4개를 또한 지원하며, 피크 대역폭의 약 150+GB/sec를 제공하는 GDDR(Graphics Double Data Rate) 메모리 인터페이스를 지원한다.
종래의 DXVA 인터페이스에서 iDCT 계수는 계수당 32비트를 사용하여 일반적으로 송신된다. 본 발명자들은 예를 들어 실시간 디스플레이 속도의 10배 또는 100배 이상의 인수만큼 프레임 속도를 증가시키는 것이 심각한 메모리 대역폭 병목현상을 야기할 수 있다는 것을 인식하였다.
그래픽 디코딩에서 계수 압축을 사용하는 방법 및 장치가 제공된다. 하나의 예에서, 컴퓨터 처리 유닛(CPU)은 비디오 또는 다른 그래픽을 디코딩하기 위해 그래픽 처리 유닛(GPU)과 인터페이스되며, 여기서 CPU는 추출된 계수를 압축하고 압축된 계수 데이터를 압축 해제 및 처리를 위해 GPU에 전달한다. 바람직하게는 역 변환(iT) 계수가 초 병렬 계수 디코딩(massively parallel coefficient decoding)을 용이하게 하기 위해 패킷마다에 기초하여 디코딩될 수 있는 균등한 크기의 데이터 패킷으로 압축 인코딩된다.
예시적인 CPU는 선택된 iT 계수 인코딩 처리가 iT 계수 인코딩을 위해 적응적으로 사용되도록 iT 계수의 데이터 컨텐츠에 기초하여 iT 압축을 수행하기 위한 인코딩 공정을 적응적으로 선택하도록 구성된 인코더 제어 구성요소를 포함할 수 있다. 이러한 경우에, GPU는 압축된 iT 계수 데이터와 함께 선택된 iT 계수 인코딩 공정을 식별하는 데이터를 수신하도록 구성되고 선택된 계수 인코딩 공정과 상보적인 계수 디코딩 방법을 사용하여 iT 계수 데이터를 디코딩하도록 구성된 디코더를 구비한다.
본 발명에 따라 제조된 구성요소 프로세서는 분산된 그래픽 디코딩 장치를 제공하기 위해 연결될 수 있다. 이 장치는 예를 들어 CPU와 같은 제1 처리 유닛과, GPU와 같은 제2 처리 유닛을 포함할 수 있다. 제1 처리 유닛은 바람직하게는 이미지 데이터를 한정하는 역 변환(iT) 계수를 추출하고 iT 계수를 압축된 iT 계수 데이터로 인코딩하도록 구성된다. 인터페이스는 압축된 iT 계수 데이터를 제2 처리 유닛으로 전달하도록 구성되게 제공된다. 제2 처리 유닛은 바람직하게는 압축된 iT 계수 데이터를 이미지 데이터를 한정하는 iT 계수로 디코딩하고 iT 계수의 iT 처리를 전달하도록 구성된다.
이러한 분산된 그래픽 디코딩 장치는 선택된 인코딩 공정이 계수 인코딩을 위해 사용되도록 iT 계수의 데이터 컨텐츠에 기초하여 iT 계수 인코딩을 수행하기 위한 인코딩 공정을 적응적으로 선택하도록 구성된 구성요소를 포함할 수 있다. 바람직하게는, 제1 처리 유닛은 선택된 계수 인코딩 공정을 적응적으로 선택하고 압축된 iT 계수 데이터로 선택된 계수 인코딩 공정을 식별하는 데이터를 포함하도록 구성된 구성요소를 포함한다. 바람직하게는, 계수 인코딩 공정은 제2 처리 유닛에서 초 병렬 계수 디코딩을 용이하게 하기 위해 독립적으로 디코딩가능한 균등한 크기의 데이터 패킷을 한정한다.
다른 예에서, 컴퓨터 판독가능한 저장 매체가 개시되며, 이 컴퓨터 판독가능한 저장 매체에는 이미지 데이터를 한정하는 역이산 코사인 변환(iT) 계수를 생성하도록 구성된 처리 구성요소와 iT 처리를 완성하기 위해 다른 집적 회로로 출력하기 위해 iT 계수를 압축된 iT 계수로 인코딩하도록 구성된 인코더를 구비하는 선택적으로 구성된 처리 유닛을 용이하게 제조하기 위해 하나 이상의 프로세서에 의해 실행하기 위한 명령 세트가 저장된다.
다른 예에서, 컴퓨터 판독가능한 저장 매체가 개시되며, 이 컴퓨터 판독가능한 저장 매체에는 이미지 데이터를 한정하는 인코딩된 iDCT 계수를 나타내는 압축된 역이산 코사인 변환(iDCT) 계수를 수신하도록 구성된 입력과, 이미지 데이터를 한정하는 iDCT 계수로 압축된 iDCT 계수 데이터를 디코딩하도록 구성된 디코더, 및 iDCT 계수를 iDCT 처리하도록 구성된 처리 구성요소를 포함하는 선택적으로 구성된 처리 유닛을 용이하게 제조하기 위해 하나 이상의 프로세서에 의해 실행하기 위한 명령 세트가 저장된다.
명령 세트는 각 CPU와 GPU를 용이하게 제조하기 위해 제공될 수 있다. 컴퓨터 판독가능한 저장 매체는 집적 회로와 같은 디바이스를 제조하는데 사용되는 하드웨어 설명 언어(hardware description language: HDL) 명령으로 기록된 명령을 구비할 수 있다.
도 1은 종래의 컴퓨터 처리 유닛(CPU)이 iDCT 처리를 위해 iDCT 계수를 종래의 그래픽 처리 유닛(GPU)에 전달하는 상기 GPU와 인터페이스하는 상기 CPU를 구비하는 종래의 분산된 그래픽 디코딩 장치의 일례의 블록도;
도 2는 예시적인 종래 기술의 GPU의 블록도;
도 3은 본 발명의 일 실시예에 따라 분산된 그래픽 디코딩 장치의 예시적인 설계의 블록도;
도 4는 본 발명의 일 실시예에 따라 압축된 iDCT 계수 데이터를 위한 데이터 패킷 포맷의 일례를 도시한 도면;
도 5a 및 도 5b는 종래의 MPEG-2 DCT 계수 블록 스캔 순서 인코딩을 도시한 도면;
도 6a 및 도 6b는 본 발명의 일 실시예에 따라 iDCT 계수 블록 스캔 순서 인코딩을 도시하는 예시적인 도면;
도 6c 및 도 6d는 도 6a 및 도 6b에 도시된 iDCT 계수 블록 스캔 순서 인코딩 도면의 1/4(quadrant)에 대해 iDCT 계수 스캔 순서 인코딩 도면의 다른 대안적인 예를 도시한 도면;
도 7a는 일련의 iDCT 계수 내에 있는 비제로(non-zero)인 iDCT 계수의 일례를 도시한 도면;
도 7b는 본 발명의 일 실시예에 따라 도 7a의 비제로인 iDCT 계수를 포함하는 일련의 iDCT 계수의 대안적인 iDCT 계수 인코딩의 일례를 도시한 도면;
도 7c는 도 7b의 일례의 계수 인코딩을 위해 압축된 iDCT 계수 데이터를 위한 데이터 패킷 포맷의 일례를 도시한 도면;
도 8은 본 발명의 일 실시예에 따라 iDCT 계수 서브 블록 스캔 순서 인코딩을 도시하는 일시적인 도면.
도 3을 참조하면, 분산된 그래픽 디코딩 장치(30)의 일례가 도시된다. 예시적인 장치(30)는, 도 1에 도시된 iDCT 계수 데이터 인터페이스(100)와 같은 iDCT 계수 데이터 인터페이스(300)를 포함하는, 컴퓨터 처리 유닛(CPU)과 같은 제1 처리 유닛(31)과, 그래픽 처리 유닛(GPU)과 같은 제2 처리 유닛(32)을 포함한다. 이 기술 분야에 통상의 지식을 가진 자라면 이해할 수 있는 바와 같이, 처리 유닛(31)과 처리 유닛(32)의 기능은 (종래의 통신 패브릭을 통해 연결되는 것에 더하여) 단일 패키지 내 또는 심지어 동일한 다이 위에 물리적으로 있을 수 있다. 제1 처리 유닛(31)은 이미지 데이터를 한정하는 역이산 코사인 변환(iDCT) 계수를 추출하고 디스플레이 순서 논리 및 오디오 시간 동기화를 위한 데이터와 움직임 벡터를 생성하는 것과 같은 다른 종래의 기능을 수행하도록 구성된 그래픽/비디오 비트 스트림 디코딩 처리 구성요소(33)를 포함한다. iDCT 계수의 추출은 도 1의 종래 기술의 CPU에 의해 수행되는 것과 같은 종래의 방식으로 수행될 수 있다.
도 1에 도시된 종래 기술의 CPU와 달리, 예시적인 제1 처리 유닛(31)은 처리 구성요소(33)로 생성된 iDCT 계수를 압축된 iDCT 계수 데이터의 균등한 크기의 패킷으로 압축 인코딩하도록 구성된 iDCT 계수 패킷 인코더(35)를 포함한다. 인코더(35)는 예를 들어 컴퓨터 마더보드에 있는 종래의 데이터 버스와 같은 인터페이스(300)를 통해 압축된 iDCT 계수 데이터를 출력한다. 이 기술 분야에 통상의 지식을 가진 자라면 이해할 수 있는 바와 같이, 컴퓨터 마더보드는 서버, 노트북, 이동 디바이스(예를 들어, 스마트 폰), 캠코더, 태블릿 등을 포함하나 이로 제한되지 않는 여러 형태의 폭넓은 다양한 컴퓨팅 디바이스로 존재할 수 있다.
도 1에 도시된 종래 기술의 GPU와 달리, 예시적인 제2 처리 유닛(32)은 인터페이스(300)를 통해 제1 처리 유닛(31)의 패킷 인코더(35)에 의해 생성된 압축된 iDCT 계수 데이터의 패킷을 수신하도록 구성된 입력을 구비하는 iDCT 계수 패킷 디코더(36)를 포함한다. 디코더(36)는 이미지 데이터를 한정하는 iDCT 계수를 재구성하기 위해 압축된 iDCT 계수 데이터의 패킷을 디코딩한다. 디코더는 이후 디코딩된 iDCT 계수를 iDCT 계수의 iDCT 처리를 수행하는 iDCT 처리 구성요소(38)에 이용가능하게 한다. iDCT 처리 구성요소(38)에 의해 수행되는 iDCT 처리는 도 1의 GPU에 의해 수행되는 종래의 iDCT 처리와 동일한 방식으로 수행될 수 있다.
아래에 보다 충분히 설명되는 바와 같이, iDCT 계수 패킷 인코더(35)는 여러 계수 인코딩 방법을 사용하여 iDCT 계수를 압축 인코딩하도록 구성될 수 있다. 바람직하게는, 생성되는 패킷은 개별적으로 식별된 iDCT 계수로 디코딩가능하며 제2 처리 유닛(32)에 의해 초 병렬 계수 디코딩 압축 해제를 가능하게 한다. 예를 들어, 제2 처리 유닛(32)은 도 2에 도시된 GPU와 유사한 GPU일 수 있다. 이 경우에, 디코더(36)는 바람직하게는 iDCT 계수를 재구성하기 위해 압축된 iDCT 계수 데이터의 수신된 패킷에 초 병렬 계수 디코딩 압축 해제를 수행하도록 GPU 셰이더를 사용하도록 구성된다. 균등한 크기로 개별적으로 디코딩가능한 패킷을 제공하는 것에 의해 개별적인 패킷은 병렬 계수 디코딩을 위해 개별적인 셰이더 쓰레드(shader threads)에 할당될 수 있다.
GPU 처리 능력과 데이터 전송 버스(300)를 충분히 이용하기 위하여, 디코딩 장치(30)는 제1 처리 유닛(31)과 유사한 다수의 처리 유닛을 포함할 수 있다. 예를 들어, 각 이러한 처리 유닛은 멀티코어 CPU의 처리 코어일 수 있다. 이 예에서, 다수의 CPU 코어는 예를 들어 동일한 비디오 스트림의 상이한 부분 또는 상이한 비디오 스트림에 계수 인코딩을 수행할 수 있고, 인터페이스(300)를 통해 GPU(32)에 압축된 계수 데이터를 각각 송신하도록 구성될 수 있다.
선택된 계수 인코딩 공정이 계수 인코딩에 사용되도록 iDCT 계수의 데이터 컨텐츠에 기초하여 계수 인코딩을 수행하기 위한 인코딩 공정을 적응적으로 선택하도록 구성된 구성요소가 제공될 수 있다. 바람직하게는, 제1 처리 유닛(31)은 선택된 계수 인코딩 공정을 적응적으로 선택하는 구성요소를 포함한다. 예를 들어, 처리 구성요소(33)는 이 기능을 수행하도록 구성될 수 있다. 처리 구성요소(33)는 선택된 계수 인코딩 공정을 식별하는 데이터를 인코더(35)에 제공할 수 있고, 이 데이터는 이어서 선택된 계수 인코딩 공정을 사용하여 인코딩하는 압축된 iDCT 계수 데이터를 가지는 패킷 내 선택된 계수 인코딩 공정을 식별하는 데이터를 포함할 수 있다.
이미지/비디오 데이터는 연속적인 이미지/비디오 프레임에 대하여 종래 방식으로 생성된다. 압축 방법 통계값이 각 프레임에 대해 iDCT 계수를 생성하는 것과 연관하여 처리 구성요소(33)에 의해 수집될 수 있다. 데이터 압축은 바람직하게는 프레임에 대한 iDCT 계수의 전체 크기보다 상당히 더 짧은, 전체 프레임에 대한 iDCT 계수를 인코딩하는 일련의 데이터 패킷을 한정한다.
각 프레임에 대한 패킷 마다에 기초하여 계수 인코딩 방법을 적응적으로 선택하기 위해 프레임에 대해 수집된 통계값을 사용하는 것이 가능할 수 있더라도, 이 프레임에 대한 데이터를 처리하는데 필요한 시간의 양을 제한하기 위해서는, 바람직하게는 이 통계값이 후속하는 프레임의 iDCT 계수에 대한 압축 방법을 동적으로 적응시키며 변경시키는데 사용된다. 원하는 경우, 적응적 방법 변경은, 방법들 사이에 및/또는 상이한 방법의 필요성을 나타내는 유사한 통계값이 선택된 일련의 프레임에 대해 수집된 후에 플립플롭을 방지하기 위하여 다수의 프레임에 대해 추론될 수 있다.
계수 인코딩 및 계수 디코딩 공정은 바람직하게는 주어진 일련의 프레임에서 일련의 프레임 동안 인코더(35)에 의해 iDCT 계수를 계수 인코딩하는데 필요한 시간(Tenc) 플러스 제1 처리 유닛(31)으로부터 제2 처리 유닛(32)으로 압축된 iDCT 계수 데이터를 전달하는데 필요한 인터페이스 시간(Tic) 플러스 디코더(36)에 의해 iDCT 계수를 계수 인코딩하고 재구성하는데 필요한 시간(Tdec)이 인터페이스(300)를 통해 제1 처리 유닛(31)으로부터 제2 처리 유닛(32)으로 압축되지 않은 iDCT 계수를 전달하는데 필요한 인터페이스 시간(Tiu)과 같거나 이보다 더 작게 되도록 선택된다.
Tenc + Tic + TdecTiu (수식 1)
일반적으로, 적응적 방법 선택은 각 프레임에 대해 최선은 아니지만 압축되지 않은 iDCT 계수를 단지 전달하는 종래의 방법에 비해 적절한 시간 절감을 달성하도록 구성된다. 수집된 통계값이 처리 시간 절감이 이루어지지 않는 것을 나타내는 경우 또는 압축되지 않은 iDCT 계수들의 전달에 더 적은 시간이 드는 것을 나타내는 경우, 처리 구성요소(33)는 인코더(35)를 계수 인코딩보다 앞서게 하고 압축되지 않은 iDCT 계수를 제2 처리 유닛(32)으로 단순히 전달하도록 구성될 수 있다. 이 경우에, 디코더(36)는 iDCT 처리 구성요소(38)에 의해 처리하기 위해 압축되지 않은 iDCT 계수를 단순히 수신하고 저장할 수 있다.
DXVA 인터페이스에서, 압축되지 않은 iDCT 계수의 매크로블록은 일반적으로 계수당 32비트를 사용하여 송신된다. 종래의 인터페이스는 정상 속도의 비디오 디스플레이를 위한 일반적인 속도인 초당 30개의 프레임의 프레임 속도로 계수당 32비트의 통신을 수용하도록 설계될 수 있다. 그러나, 초당 300개의 프레임과 같은 상당히 더 높은 프레임 속도로 비디오 이미지를 처리하는 것이 바람직하게 된다면, 계수당 32비트의 수는 주어진 시간 기간 동안 10의 인수만큼 증가하고, 인터페이스는 이 인터페이스로 인한 메모리 대역폭 병목현상으로 인해 그래픽 처리를 위해 달성가능한 전체 속도를 제한할 수 있다. 그러나, 본 발명은 동일한 인터 프로세서 인터페이스에 대해 전체 처리 속도의 제한을 상당히 상승시킬 수 있다.
iDCT 계수의 압축 인코딩은 압축되지 않은 iDCT 계수를 인터 프로세서 인터페이스를 통해 송신되는 계수 데이터 세그먼트당 32비트로 포맷하는데 사용되는 시간에 비해 매우 적은 추가적인 시간이 걸린다. 전술된 바와 같이, 종래의 GPU에서 발견된 바와 같은 셰이더는 매우 효율적인 초 병렬 압축 해제를 수행하는 것에 의해 iDCT 계수를 신속히 재구성하기 위해 처리의 계수 디코딩을 수행하는데 유리하게 사용될 수 있다.
제2 처리 유닛(32)에 대해 종래의 GPU 설계를 사용할 때, 디코더(36)를 구현하는 시간 절감(또는 비용)은 설계에 따라 다르고; 더 적은 셰이더 프로세서를 가지는 설계는 기준선(baseline) 성능을 달성할 수 있고, 더 많은 셰이더 프로세서를 가지는 설계는 더 높은 성능을 달성할 수 있다.
인코더(35)에 의해 수행되는 계수 인코딩의 제1 예에서, 압축된 스트림은 프레임의 각 iDCT 계수에 따라 프레임마다에 기초하여 그 수가 변할 수 있는 고정된 크기의 패킷으로 구성된다. 64바이트, 128바이트 등과 같은 고정된 크기를 가지는 것은 초 병렬 압축 해제를 가능하게 한다. 그리하여, 디코더(36)는 iDCT 계수 재구성을 위해 각 수신된 패킷을 제2 처리 유닛(32) 내 임의의 이용가능한 셰이더에 할당하도록 구성될 수 있다. 제2 처리 유닛(32)이 시간 슬라이스 방식으로 다수의 쓰레드를 동시에 처리할 수 있는 320개의 셰이더를 구비하는 도 2에 도시된 GPU와 유사하게 구성된 경우, 각 셰이더가 한번에 8개의 쓰레드를 동시에 처리하도록 구성된 경우 최대 2560개의 패킷이 동시에 디코딩될 수 있다.
바람직하게는, 제2 처리 유닛(32)은 하나 이상의 디스플레이 디바이스를 구동하도록 구성가능한 다수의 출력을 가지게 구성된다. 현재 표준 유형의 출력은 아날로그 비디오 그래픽 어레이(VGA) 케이블을 통해 많은 상업적으로 이용가능한 유형의 음극선관(CRT) 모니터/패널/프로젝터를 구동하는데 사용되는 디지털-아날로그 컨버터(DAC) 출력, 평판 패널 디스플레이와 같은 많은 상업적으로 이용가능한 디지털 디스플레이 디바이스에 매우 높은 비디오 품질을 제공하는데 사용되는 디지털 비디오 인터페이스(DVI) 출력, 및 많은 고선명 텔레비전 등을 위해 압축되지 않은 디지털 데이터를 위한 콤팩트한 오디오/비디오 인터페이스로 사용되는 고선명 멀티미디어 인터페이스(HDMI) 출력을 포함한다. 대안적으로 또는 추가적으로, 제2 처리 유닛(32)은 디스플레이를 구비하는 디바이스에 포함되고 디바이스의 디스플레이를 구동하기 위해 직접 연결될 수 있다. 일단 제2 처리 유닛(32)이 iDCT 계수를 재구성하면, 이들 계수들은 종래의 방식으로 처리되어 디코딩된 계수를 반영한 이미지를 디스플레이하는 원하는 디스플레이 디바이스를 구동하는 선택적으로 포맷된 신호를 제공한다.
도 4는 가변적인 개수의 iDCT 계수가 디코딩될 수 있는 데이터 패킷을 채우기 위하여 헤더로부터 시작하여 이후 제1 계수 세그먼트가 오고 그 다음에 다수의 후속하는 계수 세그먼트가 오는 예시적인 패킷 포맷을 도시한다. 데이터 패킷 크기가 64개의 8비트 바이트인 것으로 선택되면, 헤더는 4바이트를 나타내고 압축된 iDCT 계수 데이터에 대해서는 60바이트가 있다. 도 4의 예에서, 각 계수 세그먼트는 2바이트를 나타내며 그래서 여기에는 64개의 8비트 바이트 패킷에 대해 제1 계수 세그먼트가 있고 이후에 58개의 후속하는 계수 세그먼트가 있을 수 있다.
디코딩될 수 있는 가변적인 개수의 iDCT 계수를 가지는 고정된 패킷 길이는 일반적으로 데이터가 직렬로 압축되어야 하지만 초 병렬 계수 압축 해제를 가능하게 하여야 하는 것을 의미한다. DCT 계수를 인코딩하는 것과 같이, iDCT 계수 인코딩은 바람직하게는 많은 계수가 제로(0) 값을 가지는 것을 이용한다.
도 4의 예시적인 포맷의 헤더는 임의의 매크로블록(MB), MB 내의 임의의 블록, 이 블록 내의 임의의 iDCT 계수를 계수 처리하는 것을 랜덤하게 시작하는데 충분한 정보를 포함한다. 일반적으로, 8X8 블록의 픽셀에 대한 비디오 데이터를 포함하는 8X8 블록 내 64개의 iDCT 계수들이 있다. 따라서, 예시적인 헤더 포맷은 식별된 블록 내 제1 비제로(non-zero)인 iDCT 계수를 식별하는데 사용되는 6개의 비트를 제공한다. 일반적으로, MB 내에는 6 내지 8개의 블록이 있는데, 4:2:0 YUV 컬러 공간에서는 휘도에 대해 0 내지 3으로 넘버링(numbered)되고, 색차에 대해 4와 5로 넘버링되며, 4:2:2 YUV 컬러 공간에서는 휘도에 대해 0 내지 3으로 넘버링되고 색차에 대해서는 4 내지 7로 넘버링된다. 따라서, 예시적인 헤더 포맷은 YUV 포맷에 대해 식별된 MB 내 특정한 블록을 식별하는데 사용되는 3개의 비트를 제공한다. MB를 식별하는 예시적 패킷 포맷에서 16개의 블록을 제공하는 것에 의해 최대 65535개의 ID들이 제공될 수 있으며 이는 4000×4000 픽셀 디스플레이 또는 이보다 휠씬 더 높은 해상도 디스플레이에 있는 모든 MB를 식별하는 것보다 충분히 더 많다.
도 4의 예시적인 헤더는 또 패킷 내 iDCT 계수 데이터를 압축하는데 어느 압축 모드가 사용되었는지를 나타내기 위한 5비트를 포함한다. 압축을 위해 선택된 최대 32개의 유형의 압축이 있을 수 있다. 데이터 패킷의 계수 세그먼트를 위한 포맷은 선택된 압축의 유형에 따라 다를 수 있다. 도 4는 일반적인 12개 비트 전체의 iDCT 계수에 대한 데이터가 데이터 패킷으로 인코딩되는 제1 예를 도시한다. 대안적인 예는 도 7a 내지 도 7c를 참조하여 아래에서 설명된다.
도 4의 예시적인 패킷 포맷의 헤더는 이 헤더가 전체 수의 바이트로 균등하게 분할가능한 비트 크기를 포함하도록 2개의 스패어 비트(spare bit)를 가지고 종료한다.
도 4의 예의 계수 세그먼트는 iDCT 계수의 "런(run)"에서 iDCT 계수의 수를 나타내는 4비트와 12비트 iDCT 계수 값을 위한 12비트를 포함한다. 이 상황에서, "런"은 일련의 제로 값의 iDCT 계수에 이어 오는 비제로(non-zero) 값의 iDCT 계수이다. 제1 계수 세그먼트에서, 처음 4비트는 스패어이며 그 이유는 제1 iDCT 계수는 헤더에 의해 식별된 시작 계수이기 때문이다. 후속하는 계수 세그먼트에서, 처음 4개의 비트는 그 다음 비제로 값의 iDCT 계수를 포함하는 런에 있는 iDCT 계수의 수를 식별한다. 런에서 제로값의 iDCT 계수들이 14개 이하로 있는 경우, 세그먼트에 마지막 12비트는 런 내 비제로 값의 iDCT 계수에서 12비트 iDCT 계수 값을 포함한다. 런에서 제로값의 iDCT 계수들이 15개 이상 있는 경우, 처음 4개의 비트에 있는 0000과 같은 탈출 값(escape value)이 그 다음 비제로 값의 iDCT 계수 전에 제로값의 iDCT 계수의 수를 세그먼트에 마지막 12개 비트가 식별하는 것을 나타내는데 사용된다.
압축 계수 인코딩을 위한 계수의 8X8 블록 내 iDCT 계수를 넘버링하는 순서는 보다 효과적인 압축을 제공하기 위해 통계적 분석에 기초하여 선택될 수 있다. MPEG-2 DCT 게수 인코딩을 위해서 런랭쓰 인코딩 효과를 개선하는데 사용되는 도 5a에 도시된 지그재그 스캔 순서가 있다. 또 도 5b에 도시된 인터레이스된 비디오에서 선호되는 대안적인 MPEG-2 DCT 계수 지그재그 스캔 순서가 있다. 그러나, 다른 인코딩 순서가 바람직하게 하는 iDCT 및 DCT 계수를 인코딩할 때에는 차이가 있다.
도 6a 및 도 6b는 본 발명의 일 실시예에 따라 iDCT 계수 블록 스캔 순서 인코딩을 도시하는 예이다. 도 6a에서, 스캔/인코딩 시퀀스는 4개의 2×2 구획으로 더 분할되는 4개의 4×4 서브 블록으로 8X8 블록에 걸쳐 타일링(tiled)된다. 시퀀싱은 2×2 구획, 4×4 서브 블록 내 2×2 구획 및 블록 내 4×4 서브 블록 내 계수에 대하여 상부 행에서 시작하여 하부 행으로 가며 좌측에서 우측으로 진행한다. 도 6에서, 스캔/인코딩 시퀀스는 4개의 4×4 서브 블록으로 8X8 블록에 걸쳐 타일링된다. 시퀀싱은 4×4 서브 블록과 블록 내 4×4 서브 블록 내 계수에 대하여 상부 행에서 시작하여 하부 행으로 가면 좌측에서 우측으로 진행한다. 도 6c 및 도 6d는 도 6a 및 도 6b에 각각 도시된 iDCT 계수 블록 스캔 순서 인코딩 도면의 1/4에 대해 iDCT 계수 스캔 순서 인코딩 도면의 다른 대안적인 예이다.
계수 인코딩 공정의 iDCT 계수 블록 스캔 순서 구성요소는 프레임이 프로그래시브 유형으로 인코딩되었는지 또는 인터레이스 유형으로 인코딩되었는지를 고려하여 비디오의 이전 프레임의 블록으로부터 수집된 통계값에 기초하여 선택될 수 있다. 처리 동안 다수의 방법이 데이터의 샘플에 시도되어 어느 방법이 최상의 결과를 제공하였는지를 보게 할 수 있다. 프레임의 종단에서 전체 통계값이 예를 들어 특정 임계값을 사용하여 (즉, 히스테리시스를 추가하여) 더 나은 계수 인코딩 대안을 결정하기 위해 컴파일될 수 있다. 더 나은 계수 인코딩 공정이 나타난 경우, 그 다음 프레임에 대해 그 대안적인 계수 인코딩 공정이 이루어지게 스위칭될 수 있다.
추가적으로, 프레임의 매크로블록(MB)이 일반적으로 상부 행에서 시작하여 하부 행으로 가며 좌측에서 우측으로 진행하며 MPEG 유형 인코딩에서 종래의 래스터 스캔 순서로 처리된다. 유사한 MB 디코딩 공정이 선호되지만, 일정량의 병렬 압축이 입력 MB를 행이나 슬라이스와 같은 그룹으로 분할하는 것에 의해 획득될 수 있으나, 이는 인접한 메모리 버퍼의 일부 단편이 사용되지 않은 것으로 인해 또는 다수의 독립적인 메모리 버퍼에 대한 필요성으로 인해 약간 더 낮은 압축 비를 야기할 수 있다.
iDCT 계수 인코딩의 다른 예는 기본 스트림(base stream)이 각 계수의 최하위 비트를 단지 몇 개 제공하고 두 번째 및/또는 후속하는 스트림(컬럼)이 나머지 비트를 제공하도록 iDCT 계수 데이터를 2개 이상의 스트림으로 분할하는 것이다. 이러한 대안은 매우 적은 계수들이 표현하는데 12비트를 요구하는 값을 가지기 때문에 더 높은 압축 비를 가능하게 한다.
특정 예는 iDCT 계수 데이터가 계수 인코딩/디코딩을 위해 3개의 스트림으로 분할되는 도 7a 내지 도 7c에 도시된다.
도 7a는 MB "22" 중 블록 "1"에서 시작하는 85 iDCT 계수의 시퀀스에서 8개의 비제로인 iDCT 계수의 일례이다. 이 샘플 데이터에서, 8개의 비제로인 12비트 이진 값 중 6개가 단 4개 비트를 사용하여 인코딩될 수 있고, 하나는 7개의 비트를 요구하고 하나는 11개의 비트를 요구한다. 이러한 통계적 사실은 iDCT 계수 데이터를 계수 인코딩을 위한 3개의 스트림, 즉 각 비제로인 iDCT 계수 값 중 4개의 최하위 비트(LSB), 4개의 중간 비트 및 4개의 최상위 비트(MSB)로 분할하도록 고려하는데 사용될 수 있다.
도 7c는 이러한 계수 인코딩을 위한 예시적인 패킷 포맷을 도시한다. 도 4에 있는 예시적인 헤더에서와 같이, 도 7c의 예시적인 헤더는 MB를 식별하는 16개의 비트, 식별된 MB 내 특정 블록을 식별하는 3개의 비트, 패킷 내 iDCT 계수 데이터를 압축하는데 어느 압축 모드가 사용되었는지를 나타내는 5개의 비트, 식별된 블록 내 제1 비제로인 iDCT 계수를 식별하는 6개의 비트, 및 헤더가 전체 바이트 수로 균등하게 분할될 수 있는 비트 크기를 포함하게 하는 2개의 스패어 비트를 포함한다. 예를 들어, 이 헤더는 64개의 8비트 바이트 패킷 중 처음 4개의 바이트를 구성할 수 있다.
도 7a 내지 도 7c의 예에 있는 계수 세그먼트는 iDCT 계수 데이터의 "런"에서 iDCT 계수 부분의 수를 나타내는 4비트를 포함하고, 12비트 iDCT 계수 값의 3개의 분할 중 하나에 대해 단 4비트만을 포함한다. 따라서, 각 이러한 세그먼트는 예시적인 64개의 8비트 바이트 패킷 중 1바이트일 수 있다. 이 상황에서, "런"은 일련의 제로 값의 iDCT 계수 부분에 이어 오는 각 파티션의 비제로값의 iDCT 계수 부분이다.
도 4의 예에서와 같이, 제1 계수 세그먼트에서, 처음 4개의 비트는 스패어이며 그 이유는 처음 iDCT 계수는 헤더에 의해 식별된 시작 계수이기 때문이다. 후속하는 계수 세그먼트에서, 처음 4개의 비트는 그 다음 비제로 값의 iDCT 계수 부분을 포함하는 런 내 iDCT 계수 부분의 수를 식별한다. 런 내에 제로값인 DCT 계수 부분이 14개 이하로 있는 경우, 세그먼트에 대해 마지막 4개의 비트는 런에서 비제로값의 iDCT 계수 부분에 대해 4비트 iDCT 계수 값 부분을 포함한다. 런 내에 제로 값인 iDCT 계수 부분이 15개 이상이 있는 경우, 처음 4개의 비트에 0000과 같은 탈출 값이 그 다음 비제로 값인 iDCT 계수 전에 제로값인 iDCT 계수 부분이 적어도 15개 있는 것을 세그먼트 내 마지막 4개의 비트가 식별하는 것을 나타내는데 사용된다. 탈출 값을 포함하는 다수의 계수 세그먼트는 런에서 비제로 값 전에 15개의 일련의 제로 값의 다수의 세트를 나타내는데 사용된다.
도 7b는 버퍼 1에 LSB 스트림으로, 버퍼 2에 중간 비트 스트림으로, 그리고 버퍼 3에 MSB 스트림으로 iDCT 계수 데이터를 버퍼링하는 것을 도시하며, 도 7a의 8개의 비제로 값을 가지는 85개의 iDCT 계수 세트로부터 유도된 각 스트림 데이터 패킷에 대한 데이터를 도시한다. 각 데이터 패킷은 패킷에 대해 선택된 바이트 크기를 채우기 위해 추가적인 데이터를 포함할 수 있다.
도 7b에 도시된 바와 같이, LSB 스트림에 대한 패킷은 패킷 내 계수 데이터가 MB 22의 블록 1의 iDCT 계수로 시작하는 것을 나타내는 헤더를 포함한다. 계수 인코딩 구조 "x"는 iDCT 계수 데이터의 3방식(way) 분할 계수 인코딩의 LSB 스트림으로 나타난다. "0"은 일련의 각 처음 LSB 계수 부분에서 처음 비제로 값이 발생하는 것을 나타내는데 사용되고, "s"는 스패어 헤더 비트를 나타낸다. 이것은 예시적인 64바이트 패킷의 4바이트를 나타낸다.
버퍼 1 패킷의 제1 계수 세그먼트에서, "s"는 처음 4개의 스패어 비트를 나타내며, 마지막 4개의 비트는 비제로 값 "a"의 LSB 부분에 대응하는 값 10을 포함한다. 버퍼 1 패킷의 그 다음 계수 세그먼트에서, 처음 4개의 비트에 있는 "1"은 1의 런을 나타내며, 마지막 4개의 비트는 비제로 값 "b"의 LSB 부분에 대응하는 값 11을 포함한다. 버퍼 1 패킷의 그 다음 계수 세그먼트에서, 처음 4개의 비트에서 "4"는 4개의 런을 나타내며, 마지막 4개의 비트는 비제로 값 "c"의 LSB 부분에 대응하는 값 5를 포함한다. 버퍼 1 패킷의 그 다음 계수 세그먼트에서, 처음 4개의 비트에서 "0"은 마지막 4개의 비트가 런에 처음 15개의 제로값을 포함하고 이어서 비제로 값 "c"을 포함하는 것을 나타낸다. 버퍼 1 패킷의 그 다음 계수 세그먼트에서, 처음 4개의 비트에서 "2"는 이전 세그먼트와 조합하여 17의 런을 나타내고, 마지막 4개의 비트는 비제로 값 "d"의 LSB 부분에 대응하는 값 4를 포함한다. 버퍼 1 패킷의 그 다음 계수 세그먼트에서, 처음 4개의 비트에서 "3"은 3개의 런을 나타내며, 마지막 4개의 비트는 비제로 값 "e"의 LSB 부분에 대응하는 값 4를 포함한다.
버퍼 1 패킷의 그 다음 계수 세그먼트에서, 처음 4개의 비트에서 "0"은 마지막 4개의 비트가 런에 처음 15개의 제로 값을 포함하고 이어서 비제로 값 "e"을 포함하는 것을 나타낸다. 버퍼 1 패킷의 그 다음 계수 세그먼트에서, 처음 4개의 비트에서 "6"은 이전 세그먼트와 조합하여 21의 런을 나타내고, 마지막 4개의 비트는 비제로 값 "f"의 LSB 부분에 대응하는 값 4를 포함한다. 버퍼 1 패킷의 그 다음 계수 세그먼트에서, 처음 4개의 비트에서 "1"은 1의 런을 나타내고, 마지막 4개의 비트는 비제로 값 "g"의 LSB 부분에 대응하는 값 4를 포함한다.
버퍼 1 패킷의 그 다음 2개의 계수 세그먼트에서, 처음 4개의 비트에서 "0"은 마지막 4개의 비트가 런에 15개의 제로 값에 이어 비제로 값 "g"의 제1 및 제2 세트를 포함하는 것을 나타낸다. 버퍼 1 패킷의 그 다음 계수 세그먼트에서, 처음 4개의 비트에서 "7"은 2개의 이전 세그먼트와 조합하여 37의 런을 나타내고, 마지막 4개의 비트는 비제로 값 "h"의 LSB 부분에 대응하는 값 6을 포함한다.
상기는 64개의 8비트 바이트 패킷에 대해 처음 16바이트의 계수 인코딩을 나타낸다. 나머지 패킷은 iDCT 계수 데이터의 다른 LSB 부분으로 충진될 수 있다.
도 7b에 더 도시된 바와 같이, 중간 비트 스트림에 대한 패킷은 패킷 내 계수 데이터가 MB 22의 블록 1의 iDCT 계수로 시작하는 것을 나타내는 헤더를 포함한다. 계수 인코딩 구조 "y"는 iDCT 계수 데이터의 3방식 분할 계수 인코딩의 중간 비트 스트림으로 나타난다. "46"은 처음 비제로 값이 일련의 각 47번째 중간 계수 부분에 발생하는 것을 나타내는데 사용되고, "s"는 스패어 헤더 비트를 나타낸다. 이것은 예시적인 64바이트 패킷의 4바이트를 나타낸다.
버퍼 2 패킷의 처음 계수 세그먼트에서, "s"는 처음 4개의 스패어 비트를 나타내고, 마지막 4개의 비트는 비제로 값 "f"의 중간 비트 부분에 대응하는 값(4)을 포함한다. 버퍼 2 패킷의 그 다음 계수 세그먼트에서, 처음 4개의 비트에서 "1"은 1의 런을 나타내고, 마지막 4개의 비트는 비제로 값 "g"의 중간 비트 부분에 대응하는 값 6을 포함한다.
상기는 64개의 8비트 바이트 패킷에 대해 처음 6개의 바이트의 계수 인코딩을 나타낸다. 나머지 패킷은 iDCT 계수 데이터의 다른 중간 비트 부분으로 충진될 수 있다.
도 7b에 더 도시된 바와 같이, MSB 스트림에 대한 패킷은 패킷 내 계수 데이터가 MB 22의 블록 1의 iDCT 계수로 시작하는 것을 나타내는 헤더를 포함한다. 계수 인코딩 구조 "z"는 iDCT 계수 데이터의 3방식 분할 계수 인코딩의 MSB 스트림으로 나타난다. "47"은 일련의 각 48번째 MSB 부분에서 제1 비제로 값이 발생하는 것을 나타내는데 사용되며, "s"는 스패어 헤더 비트를 나타낸다. 버퍼 2 패킷의 처음 계수 세그먼트에서, "s"는 처음 4개의 스패어 비트를 나타내며, 마지막 4개의 비트는 비제로 값 "g"의 중간 비트 부분에 대응하는 값(4)을 포함한다. 상기는 64개의 8비트 바이트 패킷에 대해 처음 5개의 바이트의 계수 인코딩을 나타낸다. 나머지 패킷은 iDCT 계수 데이터의 다른 중간 비트 부분으로 충진될 수 있다.
도 7b에 도시된 바와 같이, iDCT 계수 데이터의 주어진 시리즈/프레임에서 iDCT 계수 데이터의 3방식 분할에서 데이터의 중간 및 MSB 스트림을 인코딩하는데 필요한 패킷의 수는 LSB 스트림을 인코딩하는데 필요한 패킷의 수와 비교하여 상대적으로 작다. 제2 처리 유닛(32)에서, 패킷 디코더(34)는 대다수의 데이터를 구비하는 기본 LSB 스트림을 먼저 압축 해제하도록 적절히 구성될 수 있다. 중간 비트와 MSB 데이터의 더 적은 양이 압축 해제될 수 있고 매우 짧은 경향이 있는 후속하는 계수 디코딩 전달에서 iDCT 계수 메모리에 추가될 수 있다.
비트 스트림 비트 속도가 양자화의 변화로 인해 상당한 양만큼 증가하거나 감소하는 경우, 비트 분할에 사용된 비트 수는 변경될 수 있으며 또는 다중 스트림 분할을 사용하는데 있어 개선이 계산되지 않은 경우 압축은 단일 스트림으로 대체(fallback)될 수 있다.
인코딩된 데이터 스트림의 비트 속도 및 상이한 해상도를 위한 통계적 데이터에 기초하여, 런 렝스(run length) 및 비제로 계수 데이터를 나타내는데 사용된 비트의 수의 상이한 조합이 개선된 데이터 압축을 제공하기 위해 사용될 수 있다.
예를 들어, 2방식 분할을 위해, 12비트 iDCT 계수 데이터가 2비트 LSB 스트림과 10비트 MSB 스트림으로 분할될 수 있다. 이 경우에, 도 4 및 도 7b의 동일한 유형의 데이터 패킷 헤더를 사용하여, LSB 스트림에 대한 계수 세그먼트는 iDCT 계수 데이터의 "런"에서 iDCT 계수 부분의 수를 나타내는 6개의 비트와, 1바이트 세그먼트를 한정하기 위해 iDCT 계수 데이터의 LSB 부분에 대한 2비트만을 포함할 수 있다. MSB 스트림에 대한 계수 세그먼트는 iDCT 계수 데이터의 "런"에서 iDCT 계수 부분의 수를 나타내는 6개의 비트와, 2바이트 세그먼트를 한정하기 위해 iDCT 계수 데이터의 MSB 부분에 대한 10비트를 포함할 수 있다.
3방식 분할의 다른 예에서, 12비트 iDCT 계수 데이터는 2비트 LSB 스트림, 2비트 중간 스트림 및 8비트 MSB 스트림으로 분할될 수 있다. 이 경우에, 도 4 및 도 7b의 동일한 유형의 데이터 패킷 헤더를 사용하여, LSB 스트림에 대한 계수 세그먼트는 iDCT 계수 데이터의 "런"에서 iDCT 계수 부분의 수를 나타내는 6개의 비트와, 1바이트 세그먼트를 한정하기 위해 iDCT 계수 데이터의 LSB 부분에 대한 2비트를 포함할 수 있다. 중간 비트 스트림에 대한 계수 세그먼트는 iDCT 계수 데이터의 "런"에서 iDCT 계수 부분의 수를 나타내는 6개의 비트와, 1바이트 세그먼트를 한정하기 위해 iDCT 계수 데이터의 부분에 대한 2비트를 더 포함할 수 있다. MSB 스트림에 대한 계수 세그먼트는 iDCT 계수 데이터의 "런"에서 수를 나타내는 8개의 비트와, 2바이트 세그먼트를 한정하기 위해 iDCT 계수 데이터의 MSB 부분에 대한 8비트를 포함할 수 있다. 바람직하게는 사용된 분할의 유형은 헤더 비트에 의해 표시된다.
하나를 초과하는 버퍼가 압축 해제를 위한 패킷 디코더에서 시리즈 전달에서 처리되는 경우, 처음 것 이후 각 버퍼는 이보다 앞서 얼마나 많은 비트들이 지나갔는지를 나타내는 하나의 값을 포함할 수 있다.
이 기술 분야에 통상의 지식을 가진 자라면 인식할 수 있는 바와 같이, 사용될 수 있는 압축 분할 구조에는 여러 다양한 방식들이 있다. 계수와 런에 모두 작은 수의 비트들이 필요한 경우, 2r-2c-2r-2c(2-비트 런, 2-비트 계수, 2-비트 런, 2-비트 계수) 또는 2r-2c-2c-2c(2-비트 런, 2-비트 계수, 2-비트 계수, 2-비트 계수) 또는 4r-2c-2c(4-비트 런, 2-비트 계수, 2-비트 계수), 6r-2c-2c-2c-2c(6-비트 런, 2-비트 계수, 2-비트 계수, 2-비트 계수, 2-비트 계수) 등과 같은 추가적인 구조들이 사용될 수 있다. 비제로가 높은 밀도로 있을 때에는 런 비트의 세트 이후에 다수의 세트의 계수 비트들이 있는 구조들이 바람직하게 사용되지만, 일부 경우에는 만들어진 하나 이상의 세트의 계수 비트들이 제로 계수를 한정한다.
계수 세그먼트를 한정하는 비트의 수(런 값 비트 플러스 계수 값 비트)는 8의 배수일 때까지 추가될 필요는 없으나, 제1 및/또는 제2 처리 유닛(31, 32)에서 성능이 짝수 바이트 카운트를 가지게 향상될 수 있다.
모든 패킷은 비순응 패킷에 대해 특별한 처리를 수행할 필요성을 방지하기 위해 전체 고정된 길이에 대해 적절한 값(legal values)을 포함한다. 패킷의 끝을 모두 제로로 채우는 것은 이것을 달성하기 위해 사용될 수 있다. 이것은 잠재적으로 다수의 제로(0) 계수 값으로 또는 하나 이상의 탈출 코드(사용되는 비트를 초과하는 런에 대해)로 해석될 수 있다. 패킷의 끝에서 사실상 탈출하는 것은 디코더에서 취소될 수 있다. 제로로 채우는 것은 임의의 수의 시간이나 버퍼 분할의 최종 패킷에 사용되어, 예를 들어 MB의 그룹이 병렬 처리되는 행이나 슬라이스의 끝에서 인코딩 측에서 병렬 처리를 가능하게 할 수 있다.
계수의 수가 드물고(sparse) "런"을 인코딩하는데 필요한 비트의 수가 큰 경우, 다른 대안적인 압축이 비트마스크(bitmask) 그룹에 기초하여 유리하게 사용될 수 있다. 이 대안적인 구조에서, 런에서 제로 값, 즉 iDCT 계수 블록의 전체 부분에 대해 제로 값을 나타내는 대신에, 헤더는 계수 없는 제로와 비제로 계수인 1을 포함하는 비트마스크이다. 도 8은 도 6a에 도시된 시퀀스에서 인코딩된 iDCT 계수의 상이한 크기의 타일 부분의 일 비트 마스크 식별을 도시한다. 비트 마스크 값은 0 내지 6으로 넘버링된 타일 세그먼트 중 어느 것에 임의의 비제로 iDCT 계수가 있는지 없는지를 식별하는데 사용될 수 있다. 비트 마스크가 비제로인 iDCT 계수가 있는 것을 나타내는 경우, 이들 계수에 대한 데이터는 비트 마스크 값을 따른다. 데이터는 각 비트 마스크 타일 영역에서 iDCT 계수의 전부의 형태로 있거나 또는 전술된 바와 같이 런 값과 계수 값의 형태로 있을 수 있다. 통계값이 압축 이득을 보여주는 경우 비트 마스크에 대해 8, 16, 32 또는 64비트를 사용하는 변형이 사용될 수 있다.
iDCT 계수 블록에 대한 비트 마스크 값과 그 관련된 계수 데이터가 패킷 경계의 끝을 지나 오버플로우하는 경우에, 패킷 경계를 넘는 계수에 대한 마스크 내 비트는 제로로 설정될 수 있고, 동일한 블록 비트 마스크는 제로로 설정된 이전에 압축된 계수 마스크로 그 다음 패킷에서 반복될 수 있고, 나머지 계수에 대한 비트는 요구되는 대로 1로 설정된다.
상기 예에 기술된 특징과 요소들이 iDCT 계수를 처리하기 위한 압축 상황에서 이 계수의 통계적 특성에 맞게 기술되었으나, 이들 예들은 본 발명을 제한하는 것으로 의도된 것이 전혀 아니다. 본 방법과 장치는 비제로 요소당 일반적으로 수 개의 상위 정보 비트를 가지는 스파스 데이터(즉, 많은 제로 데이터 요소와 산재된 상대적으로 적은 수의 비제로 데이터 요소들)의 버퍼링/압축에 용이하게 적용될 수 있다.
또 iDCT 계수는 일반적으로 MPEG 및 JPEG 코덱에 포함된 특정 변환에 사용된다. 다른 코덱은 iDCT와 유사하나 상이한 변환을 사용한다. 일반적으로, 계수의 일부 유형의 역변환(iT)이 iDCT이거나 iDCT이지 않을 수 있는 비디오/그래픽 데이터의 디코딩에 대하여 사용된다. 또 개시된 방법과 장치가 적용가능한 iT 계수를 기술적으로 특징으로 하지 않는 상대적으로 균등한 데이터들이 있을 수 있다.
본 발명을 사용하는 것에 의해, 예를 들어 테블릿, 스마트 폰, DTV 등과 같은 디바이스들은 본 발명에 의하지 않은 경우 복잡하고 비용이 비싼 메모리와 메모리 인터페이스를 요구할 수 있는 것에 비해 감소된 구성요소 비용과 감소된 설계 노력으로 생산될 수 있다.
특정 조합으로 상기 특징과 요소들이 기술되었으나, 각 특징이나 요소는 다른 특징과 요소 없이 단독으로 또는 다른 특징과 요소와 조합하여 또는 다른 특징과 요소 없이 조합하여 사용될 수 있다. 본 명세서에 기술된 장치는 범용 컴퓨터 또는 프로세서에 의해 실행하기 위한 컴퓨터 판독가능한 저장 매체에 포함된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어를 사용하는 것에 의해 제조될 수 있다. 컴퓨터 판독가능한 저장 매체의 예로는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시(cache) 메모리, 반도체 메모리 디바이스, 내부 하드 디스크와 제거가능한 디스크와 같은 자기 매체, 자기 광학 매체, 및 CD-ROM 디스크와 같은 광학 매체, 및 DVD(digital versatile disk)를 포함한다.
본 발명의 실시예는 컴퓨터 판독가능한 저장 매체에 저장된 명령과 데이터로 표현될 수 있다. 예를 들어, 본 발명의 측면은 하드웨어 설명 언어(HDL)인 베릴로그(Verilog)를 사용하여 구현될 수 있다. 처리될 때, 베릴로그 데이터 명령은 반도체 제조 시설에서 구현된 제조 공정을 수행하도록 사용될 수 있는 다른 중간 데이터{예를 들어, 네트리스트(netlist), GDS 데이터 등}을 생성할 수 있다. 제조 공정은 본 발명의 여러 측면을 구현하는 반도체 디바이스(예를 들어, 프로세서)를 제조하도록 적응될 수 있다.
적절한 프로세서는 예를 들어, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, 그래픽 처리 유닛(GPU), DSP 코어, 제어기, 마이크로제어기, 애플리케이션 특정 집적 회로(ASIC), 전계 프로그래밍가능한 게이트 어레이(FPGA), 임의의 다른 유형의 집적 회로(IC) 및/또는 상태 기계 또는 이들의 조합을 포함한다.

Claims (24)

  1. 그래픽 디코딩을 용이하게 하기 위해 계수 압축을 사용하는 방법으로서,
    이미지를 나타내는데 사용되는 계수를 제1 처리 유닛에서 압축된 계수 데이터로 인코딩하는 단계;
    상기 압축된 계수 데이터를 제2 처리 유닛으로 전달하는 단계; 및
    상기 제2 처리 유닛에서 상기 압축된 계수 데이터를 상기 이미지를 나타내는 상기 계수로 디코딩하는 단계를 포함하는 계수 압축 사용 방법.
  2. 제1항에 있어서, 상기 계수는 역변환(iT) 계수이며,
    상기 제1 처리 유닛에서 상기 iT 계수를 추출하는 단계;
    상기 iT 계수의 상기 데이터 컨텐츠에 기초하여 상기 인코딩을 수행하기 위한 계수 인코딩 공정을 적응적으로 선택하는 단계; 및
    상기 제2 처리 유닛에서 상기 디코딩된 계수를 처리하는 단계를 더 포함하되,
    상기 계수 인코딩 공정은 상기 iT 계수를 균등한 크기의 데이터 패킷으로 인코딩하는 계수 인코딩 공정들의 세트 중에서 선택되는 것인 계수 압축 사용 방법.
  3. 제2항에 있어서, 상기 제1 처리 유닛은 상기 계수 인코딩 공정을 선택하여 데이터 패킷을 상기 제2 처리 유닛으로 전달하되, 각 데이터 패킷이 상기 패킷 내에 상기 압축된 iT 계수 데이터를 인코딩하는데 사용된 선택된 계수 인코딩 공정을 식별하는 데이터를 포함하는 것인 계수 압축 사용 방법.
  4. 제2항에 있어서, 상기 제2 처리 유닛은 상기 디코딩된 계수를 처리하여, 상기 이미지를 반영한 이미지를 디스플레이하는 원하는 디스플레이 디바이스를 구동하는 선택적으로 포맷된 신호를 제공하는 것인 계수 압축 사용 방법.
  5. 분산된 그래픽 디코딩 장치로서,
    이미지 데이터를 한정하는 계수를 추출하도록 구성된 제1 처리 유닛을 포함하되;
    상기 제1 처리 유닛은 상기 계수를 압축된 계수 데이터로 인코딩하고 해당 인코딩된 계수를 제2 처리 유닛으로 전달하도록 구성되고;
    상기 제2 처리 유닛은 상기 압축된 계수 데이터를 상기 이미지 데이터를 한정하는 계수로 디코딩하도록 구성된 것인, 분산된 그래픽 디코딩 장치.
  6. 제5항에 있어서, 상기 제1 처리 유닛은 역변환(iT) 계수를 추출하도록 구성되고, 상기 제2 처리 유닛은 상기 디코딩된 계수를 처리하여 원하는 유형의 디스플레이 디바이스를 구동하는 선택적으로 포맷된 출력을 제공하도록 구성되고, 상기 장치는 상기 iT 계수의 데이터 컨텐츠에 기초하여 인코딩을 수행하기 위한 계수 인코딩 공정을 적응적으로 선택하도록 구성된 구성요소(component)를 더 포함하되, 상기 계수 인코딩 공정은 상기 iT 계수를 균등한 크기의 데이터 패킷으로 인코딩하는 계수 인코딩 공정의 세트 중에서 선택되는 것인, 분산된 그래픽 디코딩 장치.
  7. 제6항에 있어서, 상기 제1 처리 유닛은 상기 선택된 계수 인코딩 공정을 적응적으로 선택하는 구성요소를 포함하며, 상기 제1 처리 유닛은 상기 iT 계수를 데이터 패킷으로 인코딩하도록 구성되되, 각 데이터 패킷은 해당 패킷 내에 압축된 iT 계수 데이터를 인코딩하는데 사용된 상기 선택된 계수 인코딩 공정을 식별하는 데이터를 포함하는 것인, 분산된 그래픽 디코딩 장치.
  8. 그래픽 디코딩을 용이하게 하는 계수 압축을 사용하는 방법으로서,
    이미지 데이터를 한정하는 계수를 제1 처리 유닛에서 추출하는 단계; 및
    상기 제1 처리 유닛에서 상기 계수를 압축된 계수 데이터로 인코딩하는 단계를 포함하는 계수 압축 사용 방법.
  9. 제8항에 있어서, 상기 추출된 계수는 역변환(iT) 계수이며,
    상기 iT 계수의 데이터 컨텐츠에 기초하여 상기 계수 인코딩을 수행하기 위한 계수 인코딩 공정을 적응적으로 선택하는 단계; 및
    다른 처리 유닛에서 계수 처리를 완료하기 위해 상기 데이터 패킷을 출력하는 단계를 포함하되,
    상기 계수 인코딩 공정은 상기 iT 계수를 균등한 크기의 데이터 패킷으로 인코딩하는 계수 인코딩 공정들의 세트 중에서 선택된 것인 계수 압축 사용 방법.
  10. 제9항에 있어서, 상기 제1 처리 유닛은 선택된 상기 계수 인코딩 공정을 선택하고 데이터 패킷을 출력하되, 각 데이터 패킷은 해당 패킷 내에 압축된 iT 계수 데이터를 인코딩하는데 사용된 선택된 인코딩 공정을 식별하는 데이터를 포함하는 것인 계수 압축 사용 방법.
  11. 분산된 그래픽 디코딩을 용이하게 하는 집적 회로로서,
    이미지 데이터를 한정하는 계수를 추출하도록 구성된 처리 구성요소; 및
    다른 집적 회로로 출력하여 상기 계수 처리를 완료하기 위해 상기 계수를 압축된 계수 데이터로 인코딩하도록 구성된 인코더를 포함하는 집적 회로.
  12. 제11항에 있어서, 상기 추출된 계수는 역 변환(iT) 계수이며,
    상기 iT 계수의 데이터 컨텐츠에 기초하여 인코딩을 수행하기 위한 계수 인코딩 공정을 적응적으로 선택하도록 구성된 인코더 제어 구성요소를 더 포함하되, 계수 선택된 인코딩 공정은 상기 계수 인코딩을 위해 사용되고, 상기 계수 인코딩 공정은 상기 iT 계수를 균등한 크기의 데이터 패킷으로 인코딩하는 계수 인코딩 공정 세트 중에서 선택되는 것인 집적 회로.
  13. 제12항에 있어서, 상기 인코더는 데이터 패킷을 출력하도록 구성되되, 각 데이터 패킷은 해당 패킷 내에 압축된 iT 계수 데이터를 인코딩하는데 사용된 선택된 계수 인코딩 공정을 식별하는 데이터를 포함하는 것인 집적 회로.
  14. 분산된 그래픽 디코딩을 용이하게 하는 집적 회로의 제조를 용이하게 하기 위해 하나 이상의 프로세서에 의해 실행하기 위한 명령 세트를 저장하는 컴퓨터 판독가능한 저장 매체로서,
    상기 집적 회로는,
    이미지 데이터를 한정하는 계수를 추출하도록 구성된 처리 구성요소; 및
    다른 집적 회로로 출력하여 계수 처리를 완성하기 위해 상기 계수를 압축된 계수 데이터로 인코딩하도록 구성된 인코더를 포함하는 것인 컴퓨터 판독가능한 저장 매체.
  15. 제14항에 있어서, 상기 명령은 디바이스의 제조에 사용되는 하드웨어 설명 언어(hardware description language: HDL) 명령인 것인 컴퓨터 판독가능한 저장 매체.
  16. 디코딩을 용이하게 하는 계수 압축을 사용하는 방법으로서,
    이미지 데이터를 한정하는 인코딩된 iT 계수를 나타내는 처리 유닛에 의해 압축된 역변환(iT) 계수 데이터를 수신하는 단계; 및
    상기 처리 유닛에서 상기 압축된 iT 계수 데이터를 상기 이미지 데이터를 한정하는 iT 계수로 디코딩하는 단계를 포함하는 계수 압축 사용 방법.
  17. 제16항에 있어서, 상기 처리 유닛은 각 데이터 패킷에 포함된 압축된 iT 계수 데이터에 사용되는 선택된 계수 인코딩 공정을 식별하는 데이터를 포함하는 균등한 크기의 데이터 패킷으로 압축된 iT 계수 데이터를 수신하며, 상기 처리 유닛은 상기 패킷 내에 식별된 상기 선택된 계수 인코딩 공정과 상보적인 계수 디코딩 방법을 사용하여 각 데이터 패킷 내에 상기 압축된 iT 계수 데이터를 디코딩하는 것인 계수 압축 사용 방법.
  18. 제16항에 있어서, 상기 CPU는 균등한 크기의 독립적으로 디코딩가능한 데이터 패킷으로 상기 압축된 iT 계수 데이터를 수신하며, 상기 수신된 데이터 패킷의 초 병렬 계수 디코딩(massively parallel coefficient decoding)을 사용하여 상기 압축된 iT 계수 데이터를 디코딩하는 것인 계수 압축 사용 방법.
  19. 제16항에 있어서, 상기 디코딩된 iT 계수를 처리하여 상기 이미지 데이터를 반영한 이미지를 디스플레이하는 원하는 디스플레이 디바이스를 구동하는 선택적으로 포맷된 신호를 제공하는 단계를 더 포함하는 계수 압축 사용 방법.
  20. 분산된 그래픽 디코딩을 용이하게 하는 집적 회로로서,
    이미지 데이터를 한정하는 인코딩된 iT 계수를 나타내는 압축된 역변환(iT) 계수 데이터를 수신하도록 구성된 입력;
    상기 이미지 데이터를 한정하는 iT 계수들로 상기 압축된 iT 계수 데이터를 디코딩하도록 구성된 디코더; 및
    상기 디코딩된 iT 계수를 iT 처리하도록 구성된 처리 구성요소를 포함하는 집적 회로.
  21. 제20항에 있어서, 상기 입력은 각 데이터 패킷에 포함된 압축된 iT 계수 데이터에 사용되는 선택된 계수 인코딩 공정을 식별하는 데이터를 포함하는 균등한 크기의 데이터 패킷으로 압축된 iT 계수 데이터를 수신하도록 구성되고, 상기 디코더는 상기 패킷 내에 식별된 선택된 계수 인코딩 공정과는 상보적인 계수 디코딩 방법을 사용하여 각 데이터 패킷 내 압축된 iT 계수 데이터를 디코딩하도록 구성된 것인 집적 회로.
  22. 제20항에 있어서, 상기 입력은 균등한 크기의 독립적으로 디코딩가능한 데이터 패킷으로 압축된 iT 계수 데이터를 수신하도록 구성되고, 상기 디코더는 수신된 데이터 패킷의 초 병렬 계수 디코딩을 사용하여 압축된 iT 계수 데이터를 디코딩하도록 구성된 것인 집적 회로.
  23. 집적 회로의 제조를 용이하게 하는 하나 이상의 프로세서에 의해 실행하기 위한 명령 세트를 저장하는 컴퓨터 판독가능한 저장 매체로서,
    상기 집적 회로는,
    이미지 데이터를 한정하는 인코딩된 iT 계수를 나타내는 압축된 역변환(iT) 계수 데이터를 수신하도록 구성된 입력;
    상기 이미지 데이터를 한정하는 iT 계수로 상기 압축된 iT 계수 데이터를 디코딩하도록 구성된 디코더; 및
    상기 iT 계수를 iT 처리하도록 구성된 처리 구성요소를 포함하는 것인 컴퓨터 판독가능한 저장 매체.
  24. 제23항에 있어서, 상기 명령은 디바이스의 제조에 사용된 하드웨어 설명 언어(HDL) 명령인 것인 컴퓨터 판독가능한 저장 매체.
KR1020147004310A 2011-07-19 2012-06-27 계수 압축을 사용하여 디코딩을 하기 위한 장치 및 방법 KR20140056281A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/186,007 US20130021350A1 (en) 2011-07-19 2011-07-19 Apparatus and method for decoding using coefficient compression
US13/186,007 2011-07-19
PCT/US2012/044374 WO2013012527A1 (en) 2011-07-19 2012-06-27 Apparatus and method for decoding using coefficient compression

Publications (1)

Publication Number Publication Date
KR20140056281A true KR20140056281A (ko) 2014-05-09

Family

ID=46506628

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147004310A KR20140056281A (ko) 2011-07-19 2012-06-27 계수 압축을 사용하여 디코딩을 하기 위한 장치 및 방법

Country Status (6)

Country Link
US (1) US20130021350A1 (ko)
EP (1) EP2735147A1 (ko)
JP (2) JP2014525194A (ko)
KR (1) KR20140056281A (ko)
CN (1) CN103814573A (ko)
WO (1) WO2013012527A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2972588A1 (fr) 2011-03-07 2012-09-14 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
FR2977111A1 (fr) 2011-06-24 2012-12-28 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
CA2797986C (en) * 2011-12-06 2017-08-22 Aastra Technologies Limited Collaboration system and method
US9311721B1 (en) * 2013-04-04 2016-04-12 Sandia Corporation Graphics processing unit-assisted lossless decompression
EP2985995B1 (en) * 2013-04-12 2021-06-16 Square Enix Holdings Co., Ltd. Information processing device, control method, program, and recording medium
US9075945B1 (en) * 2014-06-27 2015-07-07 Google Inc. Method for implementing efficient entropy decoder by using high level synthesis
CN105469354A (zh) * 2014-08-25 2016-04-06 超威半导体公司 图形处理方法、系统和设备
US9674540B2 (en) 2014-09-25 2017-06-06 Microsoft Technology Licensing, Llc Processing parameters for operations on blocks while decoding images
US10542233B2 (en) * 2014-10-22 2020-01-21 Genetec Inc. System to dispatch video decoding to dedicated hardware resources
CN104469488B (zh) * 2014-12-29 2018-02-09 北京奇艺世纪科技有限公司 视频解码方法及系统
KR102302674B1 (ko) * 2015-05-13 2021-09-16 삼성전자주식회사 영상신호 제공장치 및 영상신호 제공방법
US10237566B2 (en) 2016-04-01 2019-03-19 Microsoft Technology Licensing, Llc Video decoding using point sprites
JP6377222B2 (ja) * 2017-07-31 2018-08-22 株式会社スクウェア・エニックス・ホールディングス 情報処理装置、制御方法、プログラム、及び記録媒体
CN116843775B (zh) * 2023-09-01 2023-12-22 腾讯科技(深圳)有限公司 一种基于反离散余弦变换的解码方法和装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2824994B2 (ja) * 1989-02-06 1998-11-18 キヤノン株式会社 カラー画像処理装置
US5784631A (en) * 1992-06-30 1998-07-21 Discovision Associates Huffman decoder
US5379070A (en) * 1992-10-02 1995-01-03 Zoran Corporation Parallel encoding/decoding of DCT compression/decompression algorithms
KR960010199B1 (ko) * 1993-07-16 1996-07-26 배순훈 디지탈 신호처리 칩 제어장치
US5867601A (en) * 1995-10-20 1999-02-02 Matsushita Electric Corporation Of America Inverse discrete cosine transform processor using parallel processing
US6823016B1 (en) * 1998-02-20 2004-11-23 Intel Corporation Method and system for data management in a video decoder
US6636222B1 (en) * 1999-11-09 2003-10-21 Broadcom Corporation Video and graphics system with an MPEG video decoder for concurrent multi-row decoding
KR100750092B1 (ko) * 2000-01-28 2007-08-21 삼성전자주식회사 가변장 코딩방법 및 장치
US8924506B2 (en) * 2000-12-27 2014-12-30 Bradium Technologies Llc Optimized image delivery over limited bandwidth communication channels
US7609899B2 (en) * 2004-05-28 2009-10-27 Ricoh Company, Ltd. Image processing apparatus, image processing method, and recording medium thereof to smooth tile boundaries
KR100681252B1 (ko) * 2004-10-02 2007-02-09 삼성전자주식회사 트랜스코딩을 위해 출력 매크로블록 모드와 출력움직임벡터를 추정하는 방법 및 이를 이용한 트랜스코더
JP2007027813A (ja) * 2005-07-12 2007-02-01 Sharp Corp 通信システム
US7529416B2 (en) * 2006-08-18 2009-05-05 Terayon Communication Systems, Inc. Method and apparatus for transferring digital data between circuits
JP4691011B2 (ja) * 2006-12-25 2011-06-01 日本電信電話株式会社 符号化伝送方法、その装置、そのプログラム、およびその記録媒体
US20100104006A1 (en) * 2008-10-28 2010-04-29 Pixel8 Networks, Inc. Real-time network video processing
EP2192780A1 (en) * 2008-11-28 2010-06-02 Thomson Licensing Method for video decoding supported by Graphics Processing Unit
US8320448B2 (en) * 2008-11-28 2012-11-27 Microsoft Corporation Encoder with multiple re-entry and exit points
US20120208580A1 (en) * 2011-02-11 2012-08-16 Qualcomm Incorporated Forward error correction scheduling for an improved radio link protocol

Also Published As

Publication number Publication date
WO2013012527A1 (en) 2013-01-24
JP2017184250A (ja) 2017-10-05
EP2735147A1 (en) 2014-05-28
CN103814573A (zh) 2014-05-21
US20130021350A1 (en) 2013-01-24
JP2014525194A (ja) 2014-09-25

Similar Documents

Publication Publication Date Title
KR20140056281A (ko) 계수 압축을 사용하여 디코딩을 하기 위한 장치 및 방법
US8218641B2 (en) Picture encoding using same-picture reference for pixel reconstruction
US8218640B2 (en) Picture decoding using same-picture reference for pixel reconstruction
CN101924945B (zh) 具有可变压缩比和用于存储及检索参考帧数据的缓冲器的视频解码器
US11197010B2 (en) Browser-based video decoder using multiple CPU threads
US8639049B1 (en) Systems and methods for image coding and processing
US8457396B2 (en) Digital image compression and decompression
CN103945223A (zh) 具有帧缓冲压缩的视频处理器及其使用方法
KR20030024804A (ko) 비디오 이미지들의 해상도 축소
US11445160B2 (en) Image processing device and method for operating image processing device
TW201540045A (zh) 具有減少色彩解析度的視訊流之自適應處理
US11677932B2 (en) Image processing device
US11991347B2 (en) Image processing device
KR102267792B1 (ko) 이미지 블록에 관한 픽셀-도메인 전처리 동작들에 기초한 이미지 블록 코딩
EP2471253A2 (en) Joint scalar embedded graphics coding for color images
TWI820063B (zh) 影像處理裝置及影像處理裝置的操作方法
JPH11155143A (ja) 画像圧縮符号化・復号化方法、画像圧縮符号化・復号化装置、画像圧縮符号化伝送方法、画像圧縮符号化伝送システムおよび画像圧縮符号化・復号化プログラムを記録した記録媒体
JP2010276686A (ja) 画像制御装置
TW201941599A (zh) 用於執行資料解壓縮的影像處理裝置及用於執行資料壓縮的影像處理裝置
JP2009177833A (ja) Mpegビデオ復号・表示システムのためのビデオメモリ管理
KR20190091181A (ko) 이미지 처리 장치

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application