KR102194615B1 - 그래픽 애플리케이션을 위한 타일 기반 압축 및 압축 해제 - Google Patents
그래픽 애플리케이션을 위한 타일 기반 압축 및 압축 해제 Download PDFInfo
- Publication number
- KR102194615B1 KR102194615B1 KR1020140040116A KR20140040116A KR102194615B1 KR 102194615 B1 KR102194615 B1 KR 102194615B1 KR 1020140040116 A KR1020140040116 A KR 1020140040116A KR 20140040116 A KR20140040116 A KR 20140040116A KR 102194615 B1 KR102194615 B1 KR 102194615B1
- Authority
- KR
- South Korea
- Prior art keywords
- error
- symbol
- pixels
- pixel
- segment
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/88—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/02—Handling of images in compressed format, e.g. JPEG, MPEG
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/14—Display of multiple viewports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
타일 기반 압축을 위한 시스템 및 방법이 개시된다. 프레임과 같은 이미지 데이터가 타일로 분할될 수도 있다. 타일은 라인 버퍼의 사이즈에 기초하여 사이즈 조정될 수도 있다. 타일은 개별적으로 압축 및 압축 해제된다. 이미지 프레임의 부분이 업데이트됨에 따라, 대응하는 업데이트된 타일이 압축되어 저장될 수도 있다. 유사하게, 타일이 액세스됨에 따라, 타일이 요구하는 디바이스에 압축 해제되어 스트리밍될 수도 있다. 몇몇 실시예에서는, 타일을 압축 해제하도록 동작 가능한 디코더가 메모리 디바이스와 요구하는 디바이스 사이에 삽입될 수도 있다. 하나 이상의 압축된 타일을 인코딩하는 데이터가 클록 사이클당 4 픽셀의 레이트로 압축 해제를 인에이블시키도록 그룹화될 수도 있다. RGB 및 RGB 구성요소의 양자를 포함하는 이미지 데이터를 압축하기 위한 방법이 개시된다.
Description
본 발명은 이미지 데이터를 압축 및 압축 해제하는 시스템 및 방법에 관한 것이다.
최신 그래픽 엔진은 통상 이미지를 보통 시스템 메모리 또는 DDR인 프레임 버퍼에 렌더링(render) 또는 컴포징(compose)한다. 그러한 많은 시스템에서, 그래픽 하드웨어와 시스템 메모리는 동일한 다이 상에 있지 않다. 그래픽 하드웨어는, 그래픽 데이터에 대한 복수 소스 및 타겟을 취급할 뿐만 아니라 더 높은 해상도 및 복잡한 그래픽을 처리하도록 그 한계 상황에 몰리게 된다.
그 결과로, 점점 더 많은 양의 데이터가 그래픽 및 기타 서브-시스템 주위로 매우 빠르게 이동하게 될 필요가 있다. 막대한 양의 데이터를 매우 고속으로 이동시키는 것은 전력, 열 및 성능 요건에 있어서 도전에 직면하게 한다. 그러므로 시스템 메모리 내외로 데이터를 이동하기 위해 필요한 대역폭을 감소시키는 것이 중요하다. 많은 시스템은 데이터를 압축하고, 그것을 저장하며, 필요한 경우 데이터를 비-압축하도록 동작할 수 있다.
본 명세서에서 기재한 시스템 및 방법은 이미지 데이터의 압축 및 압축 해제를 그래픽 처리 시스템 내에 통합하는 개선된 접근법을 제공한다.
본 발명의 장점을 쉽게 이해할 수 있기 위해, 상기 간략하게 설명한 본 발명의 더 상세한 설명을, 수반하는 도면으로 예시한 구체적인 실시예를 참조하여 제공할 것이다. 이들 도면이 본 발명의 통상적인 실시예만을 도시하며, 그러므로 본 발명의 적용범위를 제한하는 것으로 간주되지는 않음을 이해한다면, 본 발명은 수반하는 도면을 이용하여 더 구체적으로 그리고 상세하게 기재되고 설명될 것이다.
도 1은, 본 발명의 실시예에 따른 방법을 구현하는데 적합한 컴퓨팅 시스템의 개략적인 블록도이다.
도 2는, 본 발명의 실시예에 따른 그래픽 및 디스플레이 처리 시스템의 구성요소의 개략적인 블록도이다.
도 3은, 본 발명의 실시예에 따른 그래픽 데이터의 인-라인 압축 해제 방법의 처리 흐름도이다.
도 4는, 본 발명의 실시예에 따라 그래픽 데이터를 압축하는 방법의 처리 흐름도이다.
도 5는, 본 발명의 실시예에 따라 픽셀 에러에 대한 심벌을 계산하는 방법의 처리 흐름도이다.
도 6은, 본 발명의 실시예에 따라 픽셀 에러에 대한 심벌을 코딩하는 방법의 처리 흐름도이다.
도 7은, 본 발명의 실시예에 따라 픽셀 에러의 최하위 비트를 코딩하는 방법의 처리 흐름도이다.
도 8은, 본 발명의 실시예에 따라 압축된 그래픽 데이터를 디코딩하는 방법의 처리 흐름도이다.
도 9는, 본 발명의 실시예에 따라 압축된 그래픽 데이터로부터 심벌을 추출하는 방법의 처리 흐름도이다.
도 10은, 본 발명의 실시예에 따라 압축된 그래픽 데이터로부터 추출된 인터리빙된 에러를 디코딩하는 방법의 처리 흐름도이다.
도 11은, 압축 해제된 에러 데이터로부터 최종 픽셀 값을 추출하는 방법의 처리 흐름도이다.
도 12는, 본 발명의 실시예에 따라 스트리밍용 압축된 타일 데이터를 포맷하는 방법의 처리 흐름도이다.
도 13은, 본 발명의 실시예에 따라 알파 값을 포함한 그래픽 데이터를 압축하는 방법의 처리 흐름도이다.
도 2는, 본 발명의 실시예에 따른 그래픽 및 디스플레이 처리 시스템의 구성요소의 개략적인 블록도이다.
도 3은, 본 발명의 실시예에 따른 그래픽 데이터의 인-라인 압축 해제 방법의 처리 흐름도이다.
도 4는, 본 발명의 실시예에 따라 그래픽 데이터를 압축하는 방법의 처리 흐름도이다.
도 5는, 본 발명의 실시예에 따라 픽셀 에러에 대한 심벌을 계산하는 방법의 처리 흐름도이다.
도 6은, 본 발명의 실시예에 따라 픽셀 에러에 대한 심벌을 코딩하는 방법의 처리 흐름도이다.
도 7은, 본 발명의 실시예에 따라 픽셀 에러의 최하위 비트를 코딩하는 방법의 처리 흐름도이다.
도 8은, 본 발명의 실시예에 따라 압축된 그래픽 데이터를 디코딩하는 방법의 처리 흐름도이다.
도 9는, 본 발명의 실시예에 따라 압축된 그래픽 데이터로부터 심벌을 추출하는 방법의 처리 흐름도이다.
도 10은, 본 발명의 실시예에 따라 압축된 그래픽 데이터로부터 추출된 인터리빙된 에러를 디코딩하는 방법의 처리 흐름도이다.
도 11은, 압축 해제된 에러 데이터로부터 최종 픽셀 값을 추출하는 방법의 처리 흐름도이다.
도 12는, 본 발명의 실시예에 따라 스트리밍용 압축된 타일 데이터를 포맷하는 방법의 처리 흐름도이다.
도 13은, 본 발명의 실시예에 따라 알파 값을 포함한 그래픽 데이터를 압축하는 방법의 처리 흐름도이다.
본 명세서에서 일반적으로 기재되며 도면에서 예시된 바와 같이, 본 발명의 구성요소는 광범위하게 상이한 구성으로 배치 및 설계될 수 있음을 쉽게 이해하게 될 것이다. 따라서, 도면에 도시된 바와 같은 본 발명의 실시예에 대한 다음의 상세한 설명은 본 발명의 적용범위를 청구된 대로 제한하기보다는, 단지 본 발명에 따라 현재 구상된 실시예의 특정 예를 대표하는 것이고자 한다. 기재된 본 실시예는 도면을 참조하면 가장 잘 이해될 것이며, 도면 전반적으로 유사한 부분은 유사한 참조번호로 표시된다.
본 발명은 현재의 최신 기술에 따라, 그리고 상세하게는, 현재 이용 가능한 장치 및 방법에 의해 아직 완전히 해결되지 않은 종래 기술의 문제 및 필요에 따라 개발되었다. 따라서, 본 발명은, 복수의 타일에서 이미지 프레임을 압축하는 장치 및 방법을 제공하도록 개발되었다. 타일은, 라인 버퍼와 같은, 그래픽 시스템에서의 디바이스의 버퍼 크기와 같은 크기를 가질 수 있다. 타일은, 타일의 데이터가 인-라인 디코더에 의해서와 같이 디바이스 사이에서 스트리밍됨에 따라 타일이 압축 해제될 수 있도록 또한 포맷될 수 있다.
그래픽 렌더링이나 컴포지션의 대부분의 용도에서, 전체 이미지나 프레임의 작은 부분만이 변경 또는 업데이트될 필요가 있다. 많은 종래의 이미지나 비디오 압축은 라인 단위로 또는 프레임 단위로 작용한다. 그러한 압축 기술은, 반복해서 저장 및 재생될 수 있는 비디오 프레임이나 정지 화상 프레임과 같이, 실행될 압축에 대해 이미 풀-프레임이나 풀-라인으로 이미 이용 가능한 이미지에 매우 적합하다. 그러나 많은 경우에, 그래픽 2차원 또는 3차원 프레임은, 각 프레임이 단 한 번 디스플레이를 위해 렌더링 및 전송되므로, 라이브로 생성된다. 예컨대, 그래픽 유저 인터페이스는 사용자에 의한 스크린 터치나 다른 상호작용 이후 다시 생성되어 스크린 상에 다시 디스플레이될 필요가 있을 수 있다.
그래픽 이미지나 프레임은 보통 특정한 액세스 패턴으로 특정한 메모리 위치 상에 매핑된다. 본 명세서에서 개시한 실시예에서, 프레임은, 영향을 받은 특정 타일만이 업데이트될 필요가 있으며 대응하는 메모리 위치가 변경될 필요가 있도록, 타일에 그라이딩될 수 있다(grided). 각각의 타일은 그 후 개별적으로 압축 및 압축 해제될 수 있어서, 융통성 및 고압축률을 모두 제공할 수 있다. 각각의 타일의 크기와 영상비는 메모리 액세스 및 전체 시스템 성능의 효율을 개선하도록 선택할 수 있다. 본 발명자가 행한 실험을 통해, 본 명세서에 개시한 방법이 8개의 테스트 이미지 및 32바이트 버스트에 대해 24비트 픽셀 당 10.05비트의 압축 효율과, 64바이트 버스트의 8개의 테스트 이미지에 대해 픽셀 당 12.19비트의 압축 효율을 달성할 수 있음을 알게 되었다.
본 발명자가 행한 실험을 통해 또한, 타일 크기 선택에 유용한 특정 요인을 알게 되었다. 예컨대, 본 발명자가 행한 실험에 의하면, 16 내지 64개의 픽셀의 폭을 커버하는 타일은 많은 애플리케이션, 특히 그래픽 컴포지션에 적합하다. 많은 시스템에서, 디스플레이 서브-시스템은 주어진 리프레시 율로 실시간으로 라인 단위로 픽셀을 처리할 필요가 있을 것이다. 픽셀 데이터는 통상 라인 버퍼에 저장되며, 이러한 버퍼는 디스플레이 서브-시스템 인근에 국부적으로 상주하는 온-칩 메모리이다. 라인 버퍼는 일반적으로 제한된 크기를 가질 수 있어서, 예컨대 1 또는 2라인과 같이 한 번에 매우 적은 수의 픽셀 라인을 유지할 수 있다. 따라서, 타일의 높이는 유리하게는, 예컨대 라인 버퍼에서의 라인 수와 같이 타일 당 1 내지 2개의 픽셀 높이로 제한될 수 있다. 그러므로 수평 방향으로 8-64개의 픽셀 x 수직 방향으로 1-2개의 픽셀인 타일 크기(예컨대, 라인 버퍼의 폭)는 유리하게는 제한된 용량 치수의 라인 버퍼를 효율적으로 사용할 수 있다.
많은 DDR(Double Data Rate) 메모리 액세스가 정렬된 256바이트로 제한된다면, 타일의 경계는 유리하게는 256바이트 경계 상에 놓이도록 제한될 수 있다. 픽셀이 통상 픽셀 당 32비트(4바이트) 데이터를 포함하므로, 256바이트 메모리 데이터 당 64개의 픽셀이 있을 것이다. 따라서, 이러한 64-픽셀 제한과 매칭하는 것은 유리하게는 64x1 또는 32x2의 치수를 사용하는 것을 포함할 수 있다. 이미지가 타일 크기의 배수가 아닌 치수를 갖는 경우, 행 중의 마지막 픽셀은 타일을 실장하기 위해 반복될 수 있다.
이미지나 프레임의 각각의 타일은 개별적으로 압축 및 압축 해제될 수 있다. 각각의 압축된 타일 데이터는, 후속 타일과 정렬되는 메모리 위치에 전달되어 기록될 수 있다. 이전의 압축 알고리즘에 대해, 대략 본 명세서에서 기재한 타일과 같은 작은 데이터 블록에 대해 상당한 압축률을 얻는 것은 어렵다. 본 명세서에서 기재한 시스템과 방법은 예컨대 대략 64x1, 32x2, 16x4 및 8x8개의 픽셀의 타일에 대해서뿐만 아니라 다른 타일 크기에 대해서 큰 압축률을 제공한다.
일부 실시예에서, 타일 외에, 프레임, 헤더 또는 타일 상태 데이터를 구성하는 타일에 대한 데이터가 프레임과 관련될 수도 있으며 압축 정보를 포함할 수 도 있다. 헤더는 적은 양의 데이터를 포함할 수 있으며 프레임의 타일과 메모리에 저장될 수 있다. 디스플레이 제어기는 메모리로부터 이 타일 상태 데이터를 페치하여 프레임에 대해 압축된 타일을 요청하도록 동작할 수 있다. 타일은 그 후 압축 해제될 수 있어서 디스플레이 제어기로 라인 단위로 복귀될 수 있다.
그래픽 시스템에서 타일을 압축 해제하는 시스템 및 방법을 이하에서 더 상세하게 기재할 것이다.
본 발명에 따른 실시예는 장치, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 발명은 전체적으로 하드웨어 실시예, 전체적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함), 또는 본 명세서에서 모두 일반적으로 "모듈"이나 "시스템"으로 지칭될 수 있는 소프트웨어 및 하드웨어 양상을 조합한 실시예의 형태를 가질 수 있다. 더 나아가, 본 발명은, 컴퓨터로 이용 가능한 프로그램 코드를 매체에 구현하고 있는 임의의 유형의 매체 양식에 구현된 컴퓨터 프로그램 제품의 형태를 가질 수 있다.
하나 이상의 컴퓨터로 이용 가능한 또는 컴퓨터로 판독 가능한 매체의 어떤 조합을 이용할 수 있다. 예컨대, 컴퓨터로 판독 가능한 매체는 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM) 디바이스, 판독 전용 메모리(ROM) 디바이스, 소거 가능한 프로그램 가능 판독 전용 메모리(EEPROM 또는 플래시 메모리) 디바이스, 휴대용 컴팩트 디스크 판독 전용 메모리(CDROM), 광 저장 디바이스 및 자지 저장 디바이스 중 하나 이상을 포함할 수 있다. 선택된 실시예에서, 컴퓨터로 판독 가능한 매체는, 명령 수행 시스템, 장치 또는 디바이스에 의해 또는 이들과 연결되어 사용하기 위해 프로그램을 포함, 저장, 통신, 전파 또는 전송할 수 있는 임의의 비-일시적 매체를 포함할 수 있다.
본 발명의 동작을 실행하는 컴퓨터 프로그램 코드는 자바, 스몰토크(Smalltalk), C++ 등과 같은 객체-지향 프로그래밍 언어와, "C" 프로그래밍 언어나 유사한 프로그래밍 언어와 같은 종래의 절차적 프로그래밍 언어를 포함한 하나 이상의 프로그래밍 언어의 임의의 조합으로 기록할 수 있다. 프로그램 코드는 독립형 소프트웨어 패키지로서 전체적으로 컴퓨터 시스템 상에, 독립형 하드웨어 유닛 상에, 부분적으로, 컴퓨터로부터 일정 거리 이격된 원격 컴퓨터 상에, 또는 전체적으로 원격 컴퓨터나 서버 상에서 수행할 수 있다. 후자인 상황에서, 원격 컴퓨터는 근거리 네트워크(LAN)나 광역 네트워크(WAN)를 포함한 임의의 타입의 네트워크를 통해 컴퓨터에 연결될 수 있거나, (예컨대, 인터넷 서비스 제공자를 사용하여 인터넷을 통해) 외부 컴퓨터에 연결될 수 있다.
본 발명은, 본 발명의 실시예에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도 예시 및/또는 블록도를 참조하여 후술될 것이다. 흐름도 예시 및/또는 블록도의 각 블록과, 흐름도 예시 및/또는 블록도에서의 블록의 조합은 컴퓨터 프로그램 명령 또는 코드에 의해 구현될 수 있음을 이해해야 할 것이다. 이들 컴퓨터 프로그램 명령은 범용 컴퓨터, 특수 용도 컴퓨터, 또는 다른 프로그램 가능한 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성할 수 있어서, 컴퓨터나 다른 프로그램 가능한 데이터 처리 장치의 프로세스를 통해 수행하는 명령은 흐름도 및/또는 블록도의 블록(들)에 명시된 기능/동작을 구현하는 수단을 만든다.
이들 컴퓨터 프로그램 명령은 또한, 컴퓨터나 다른 프로그램 가능한 데이터 처리 장치가 특정 방식으로 기능하도록 지시할 수 있는 비-일시적 컴퓨터로 판독 가능한 매체에 저장될 수 있어서, 이 컴퓨터로 판독 가능한 매체에 저장된 명령은 흐름도 및/또는 블륵도의 블록(들)에 명시된 기능/동작을 구현하는 명령 수단을 포함하는 제조 아티클을 생성하게 된다.
컴퓨터 프로그램 명령은 또한 컴퓨터나 다른 프로그램 가능한 데이터 처리 장치 상에 로드될 수 있어서, 일련의 동작 단계가 컴퓨터나 다른 프로그램 가능한 장치 상에서 실행되게 하여 컴퓨터로 구현된 처리를 생성할 수 있어서, 컴퓨터나 다른 프로그램 가능한 장치 상에서 수행하는 명령이 흐름도 및/또는 블록도의 블록(들)에 명시된 기능/동작을 구현하기 위한 처리를 제공할 수 있다.
도 1은 예시적인 컴퓨팅 디바이스(100)를 예시한 블록도이다. 컴퓨팅 디바이스(100)는 본 명세서에서 논의한 바와 같은 여러 가지 절차를 실행하는데 사용될 수 있다. 컴퓨팅 디바이스(100)는 서버, 클라이언트, 또는 임의의 다른 컴퓨팅 개체로서 기능할 수 있다. 컴퓨팅 디바이스는 본 명세서에서 논의한 바와 같은 여러 가지 모니터링 기능을 실행할 수 있으며, 본 명세서에서 기재한 애플리케이션 프로그램과 같은 하나 이상의 애플리케이션 프로그램을 수행할 수 있다. 컴퓨팅 디바이스(100)는, 데스크탑 컴퓨터, 노트북 컴퓨터, 서버 컴퓨터, 휴대용 컴퓨터, 태블릿 컴퓨터 등과 같은 광범위한 컴퓨팅 디바이스 중 임의의 것일 수 있다.
컴퓨팅 디바이스(100)는 하나 이상의 프로세서(들)(102), 하나 이상의 메모리 디바이스(들)(104), 하나 이상의 인터페이스(들)(106), 하나 이상의 대용량 저장 디바이스(들)(108), 하나 이상의 입출력(I/O) 디바이스(들)(110), 및 디스플레이 디바이스(130)를 포함하며, 이들 모두는 버스(112)에 결합된다. 프로세서(들)(102)는, 메모리 디바이스(들)(104) 및/또는 대용량 저장 디바이스(108)에 저장된 명령을 수행하는 하나 이상의 프로세서나 제어기를 포함한다. 프로세서(들)(102)는 또한 캐시 메모리와 같이 다양한 타입의 컴퓨터로 판독 가능한 매체를 포함할 수 있다.
메모리 디바이스(들)(104)는 휘발성 메모리(예컨대, 랜덤 액세스 메모리(RAM)(114)) 및/또는 비휘발성 메모리(예컨대, 판독 전용 메모리(ROM)(116))와 같은 여러 가지 컴퓨터로 판독 가능한 매체를 포함한다. 메모리 디바이스(들)(104)는 또한 플래시 메모리와 같은 재기록 가능한 ROM을 포함할 수 있다.
대용량 저장 디바이스(들)(108)는, 자기 테이프, 자기 디스크, 광 디스크, 고체 메모리(예컨대, 플래시 메모리) 등과 같은 여러 가지 컴퓨터로 판독 가능한 매체를 포함한다. 도 1에 도시된 바와 같이, 특정한 대용량 저장 디바이스는 하드 디스크 드라이브(124)이다. 여러 가지 드라이브가 또한 대용량 저장 디바이스(들)(108)에 포함될 수 있어서, 여러 가지 컴퓨터로 판독 가능한 매체로부터 판독할 수 있고 및/또는 이들 매체에 기록할 수 있게 할 수 있다. 대용량 저장 디바이스(들)(108)는 탈착 가능한 매체(126) 및/또는 비-탈착 가능한 매체를 포함한다.
I/O 디바이스(들)(110)는, 데이터 및/또는 다른 정보가 컴퓨팅 디바이스(100)에 입력되고 이로부터 검색되게 하는 여러 가지 디바이스를 포함한다. 예시적인 I/O 디바이스(들)(110)는 커서 제어 디바이스, 키보드, 키패드, 마이크, 모니터 또는 다른 디스플레이 디바이스, 스피커, 프린터, 네트워크 인터페이스 카드, 모뎀, 렌즈, CCD 또는 다른 촬상 디바이스 등을 포함한다.
디스플레이 디바이스(130)는, 컴퓨팅 디바이스(100)의 한 명 이상의 사용자에게 정보를 디스플레이할 수 있는 임의의 타입의 디바이스를 포함한다. 디스플레이 디바이스(130)의 예는 모니터, 디스플레이 단말, 비디오 투영 디바이스 등을 포함한다.
인터페이스(들)(106)는, 컴퓨팅 디바이스(100)가 다른 시스템, 디바이스 또는 컴퓨팅 환경과 상호 동작하게 하는 여러 가지 인터페이스를 포함한다 .예시적인 인터페이스(들)(106)는, 근거리 네트워크(LAN), 광역 네트워크(WAN), 무선 네트워크 및 인터넷으로의 인터페이스와 같은 임의의 수의 상이한 네트워크 인터페이스(120)를 포함한다. 다른 인터페이스(들)는 사용자 인터페이스(118)와 주변 디바이스 인터페이스(122)를 포함한다. 인터페이스(들)(106)는 또한 하나 이상의 사용자 인터페이스 요소(118)를 포함할 수 있다. 인터페이스(들)(106)는 또한 프린터, 포인팅 디바이스(마우스, 트랙 패드 등), 키보드 등과 같은 하나 이상의 주변 인터페이스를 포함할 수 있다.
버스(112)는 프로세서(들)(102), 메모리 디바이스(들)(104), 인터페이스(들)(106), 대용량 저장 디바이스(들)(108) 및/또는 I/O 디바이스(들)(110)가 서로분만 아니라 버스(112)에 결합된 다른 디바이스나 구성요소와 통신하게 한다. 버스(112)는 시스템 버스, PCI 버스, IEEE 1394 버스, USB 버스 등과 같은 여러 타입의 버스 구조 중 하나 이상을 나타낸다.
예시용으로, 프로그램 및 다른 수행 가능한 프로그램 구성요소가 본 명세서에서는 별도의 블록으로 도시되어 있지만, 그러한 프로그램이나 구성요소는 컴퓨팅 디바이스(100)의 상이한 저장 구성요소에 여러 번 상주할 수 있으며, 프로세서(들)(102)에 의해 수행되는 것을 이해해야 한다. 택일적으로, 본 명세서에서 기재한 시스템과 절차는 하드웨어로, 또는 하드웨어, 소프트웨어 및/또는 펌웨어의 조합으로 구현될 수 있다. 예컨대, 하나 이상의 주문형 집적 회로(ASICs: Application Specific Integrated Circuits)가 본 명세서에서 기재한 시스템이나 절차 중 하나 이상을 실행하도록 프로그램될 수 있다.
도 2를 참조하면, 컴퓨팅 디바이스(100)와 같은 컴퓨팅 디바이스는, 종래 기술에 알려져 있는 그래픽 처리에 사용되는 임의의 다른 구성요소와 함께 예시한 구성요소 중 일부나 모두를 포함하는 그래픽 시스템(200)을 통합할 수 있다.
그래픽 시스템(200)은 디스플레이(130)에 결합된 디스플레이 제어기(202)를 포함할 수 있다. 종래기술에서 알려져 있는 바와 같이, 디스플레이 제어기(202)는 픽셀의 프레임을 디지털이나 아날로그 비디오 신호로 변환하여 프레임 표현의 디스플레이(130) 상의 디스플레이를 작동시키도록 동작할 수 있다. 디스플레이 제어기(202)는, 디지털 비주얼 인터페이스(DVI: Digital Visual Interface) 프로토콜이나 일부 다른 프로토콜에 따라 픽셀 데이터의 디스플레이(130)로의 동기 송신을 용이하게 하기 위해 픽셀 도메인(206)을 포함할 수 있다.
디스플레이 제어기(202)는, 최신 확장 가능 인터페이스(AXI: Advanced eXtensible Interface) 규격과 같은 캐시 코히어런트 버스 아키텍처와 같은 버스 수단에 의해 하나 이상의 디바이스와 통신할 수 있다. 디스플레이 제어기(202)는, AXI 버스를 통한 동기 통신을 용이하게 하기 위해 AXI 도메인을 포함할 수 있다. AXI 규격으로 인해 시작 어드레스만을 기반으로 한 버스트 기반 트랜잭션이 허용된다. 이하에서 더 상세하게 기재될 바와 같이, 버스트 모드에서의 데이터 스트리밍이 유리하게는 압축된 타일 데이터를 사용하여 실행될 수 있다.
디스플레이 제어기(202)는, 다른 디바이스를 디스플레이 제어기(202)에 그리고 서로 연결할 수 있는 AXI 상호 연결 패브릭(210)에 동작 가능하게 결합될 수 있다. 예컨대, AXI 인터페이스 패브릭(210)은 메모리 제어기(212), 그래픽 코어(214), 및 임의의 다른 클라이언트 디바이스(216)에 연결될 수 있다.
많은 애플리케이션에서, 그래픽 코어(214)는, 이미지 및 비디오 데이터의 압축 및 압축 해제에 사용되는 코덱(218)을 포함할 수 있다. 많은 경우에, 코덱(218)은 디스플레이 제어기(202)와는 상이한 벤더를 형성할 수 있으며, 따라서 디스플레이 제어기(202)에 의해 비디오 데이터의 압축 및 압축 해제를 실행하도록 쉽게 사용되지는 않는다.
이하에서 더 상세하게 기재될 바와 같이, 본 명세서에서 기재한 타일-기반 압축 및 압축 해제 방법은 유리하게는, AXI 상호 연결 패브릭(210), 또는 메모리 디바이스로의 일부 다른 인터페이스와 디스플레이 제어기(202) 사이에 삽입되어 있는 디코더(220)를 사용할 수 있다. 디코더(220)는 도메인 제어기의 AXI 도메인(206)과 통신할 수 있다. 즉, 디코더(220)로부터의 데이터가 AXI 프로토콜에 따른 통신 환경에서 압축 해제된 픽셀을 디스플레이 제어기(202)에 투과적으로(transparently) 송신될 수 있다. 본 명세서에서 또한 기재된 바와 같이, 디코더(220)는 유리하게는, 픽셀 데이터를 저장하는데 필요한 메모리 양을 감소시키면서, 디스플레이 제어기(202)에 투과적인 디스플레이 제어기에 송신된 픽셀 데이터의 스트리밍 압축 해제를 실행할 수 있어서, 픽셀 데이터의 신속한 렌더링을 용이하게 할 수 있다.
예컨대, 도 3은, 메모리 디바이스(114)에 저장된 압축된 픽셀 데이터가 디스플레이 제어기(202)나, 그래픽 코어(212)와 같은 다른 디바이스에 스트리밍되게 하는 상위 레벨의 방법(300)을 예시한다. 방법(300)의 단계에 대한 더 상세한 설명을 후술할 것이다.
디바이스가 특정한 픽셀 위치를 평가할 때, 대응하는 타일이 이때 압축 해제될 수 있다. 예컨대, 도 2의 시스템(200) 환경에서, 방법(300)은 타일 헤더를 페치하는 단계(302)를 포함할 수 있다. 타일 헤더는 각각의 압축된 타일의 크기, 각각의 타일에 대한 시작 어드레스, 프레임의 타일이 저장된 메모리 위치 범위 또는 다른 데이터와 같은 프레임의 타일을 기재하는 정보를 포함할 수 있다. 일부 실시예에서, 각각의 타일은 예컨대 4비트와 같은 타일 상태 값을 갖는다. 타일 상태 값에 대한 1 내지 8의 값은 예컨대 압축된 타일 크기와 같이 타일을 디코딩하기 위해 32-바이트가 얼마나 많이 필요한지를 나타낸다. 컬러 포맷 RGB888의 경우, 6의 타일 상태 값이 타일이 미처리 RGB 데이터를 포함하는 것을 나타낼 수 있다. RGBα8888 데이터, 6의 값이 압축된 데이터를 나타낼 수 있고, 8의 타일 상태 값이 타일이 미처리 RGBα8888 데이터를 포함하는 것을 나타낼 수 있다. 타일 헤더를 페치하는 단계(302)는, 프레임을 디스플레이(130) 상에 렌더링하기 위해 픽셀 데이터를 검색하는 처리에서 디스플레이 제어기(202)와 같은 요청 디바이스에 의해 실행될 수 있다. 타일 헤더에 대한 요청은 AXI 상호 연결 패브릭(210)에 의해 메모리 제어기(212)에 보내질 수 있다.
타일 헤더를 사용하여, 요청 디바이스는 그 후 프레임의 타일 내의 픽셀에 대한 판독 요청을 생성하거나(304) 전체 타일을 요청할 수 있다. 예컨대, 요청 디바이스는 프레임에서 그 다음 타일에 대응하는 바이트 수를 요청할 수 있으며, 여기서, 타일에서의 바이트 수는 타일에 대한 타일 상태 데이터에 의해 나타내진다. 판독 요청은 메모리 제어기(212)에 송신될 수 있다. 메모리 제어기(212)가 판독 요청에 응답함에 따라, 판독 요청에 대응하는 압축된 데이터 스트림이, 실시간으로 데이터 스트림을 디코딩하도록 동작 가능한 디코더(220)를 통해 요청 디바이스에 스트리밍될 수 있다(306). 압축된 데이터 스트림을 디코딩하는 방법을 이하에서 더 상세하게 기재할 것이다. 디코더는 그 후 압축 해제된 데이터를 요청 디바이스에 복귀시킨다(308). 상기 언급된 바와 같이, AXI 인터페이스는 버스트 데이터 전송을 제공하여, 데이터 요청은 시작 어드레스만을 명시할 필요가 있다. 일부 실시예에서, 압축된 타일의 버스트 전송은 디코더를 통해 송신될 수 있으며, 디코드에 의해 압축 해제될 수 있으며, 압축 해제된 데이터는 투과적인 방식으로 요청 디바이스에 송신될 수 있다. 이하에서 더 상세하게 기재될 바와 같이, 압축된 타일은, 타일 내의 개별적인 픽셀의 스트리밍 압축 해제를 허용하는 방식으로 저장 및 송신되는 것 중 하나가 행해지거나 둘 모두가 행해질 수 있다.
도 4는 픽셀의 타일을 압축하는 방법(400)을 예시한다. 특히, 방법(400)은 타일의 개별 픽셀("현재의 픽셀")을 압축하는 방법을 예시하며, 초기 픽셀을 제외하고 타일의 모든 픽셀에 대해 반복될 수 있다. 방법(400)은 그래픽 시스템 내에서나 그래픽 코어(212) 또는 일부 다른 프로세서 내에서와 같은 곳에서 전자 디바이스에 의해 수행될 수 있다.
방법(400)은 예측된 픽셀에 대한 현재 픽셀의 에러를 계산하는 단계(402)를 포함할 수 있다. 예측된 픽셀은 타일에서 선행하는 픽셀을 포함할 수 있다. 타일의 초기 픽셀은 압축 없이 압축된 타일에 포함될 수 있다. 에러를 계산하는 단계는 예측된 픽셀의 대응하는 구성요소에 대한 각 구성요소 마다의 에러(RGB 또는 RGBα)를 계산하는 단계를 포함할 수 있다. 따라서, 에러는 에러 어레이(OrgError[i]=Current[i]-Predicted[i])일 수 있으며, 여기서 i는 RGB에 대해서는 적색, 녹색 및 청색 구성요소에 대응하는 0 내지 2의 값이며, RGBα에 대해서는 0 내지 3의 값이며, 여기서 제4 값은 알파 에러를 나타낸다.
방법(400)은 에러의 컬러 변환(OrgError[i])을 실행하는 단계(404)를 포함할 수 있다. 예컨대, 가역적인 컬러 변환(RCT: Reversible Color Transformation)(Error[i])이 다음과 같이 실행될 수 있다: Error[2]=OrgError[2]-Org[Error[1]; Error[1]=OrgError[1]-OrgError[0]; Error[0]=OrgError[0]. RCT 변환은 픽셀 당 거의 1비트, 즉 자연적인 이미지에 대한 대역폭의 대략 8%를 절약하게 된다.
방법(400)은 색변환 에러에 대해 인터리빙된 에러를 생성하는 단계(406)를 포함할 수 있다. 특히, 인터리빙된 에러를 생성하는 단계(406)는 색변환된 에러의 절대값을 인터리빙하는 단계를 포함할 수 있다. 예컨대, AbsError[i]=Abs(Error[i])이고, Rn...R0이 AbsError[0]의 비트이고, Gn...G0가 AbsError[1]의 비트이며, Bn...B0이 AbsError[2]의 비트인 경우, 인터리빙된 에러는 PackAbsError=RnGnBnRn-1Gn-1Bn-1...ROG0B0으로서 표현될 수 있다. 달리 말하면, PackAbsError의 i번째 비트는 AbsError[i%3]의 (i/3)번째 비트이다. 크기가 또한 인터리빙된 에러에 대해 결정될 수 있다. 크기는 PackAbsErrorSize=LeadingOnePosition(PackAbsError)+1로 표현될 수 있다. 예컨대, 인터리빙된 에러가 10010이라면, PackAbsErrorSize는 5이다. PackAbsError가 0이라면, 그 크기는 또한 0이다.
방법(400)은 인터리빙된 에러에 대해 심벌을 계산하는 단계(408)와 심벌을 코딩하는 단계(410)를 포함할 수 있다. 심벌을 계산하는 방법(408)은 도 5에 대해 이하에서 기재될 것이다. 심벌을 코딩하는 단계(410)는 인터리빙된 에러가 가변 크기를 갖는다는 점을 이용할 수 있는 가변 길이 코딩(VLC: Variable Length Coding) 방법을 사용하는 단계를 포함할 수 있다. 예시한 예에서, 허프만 코딩을 사용한다. 심벌을 코딩하는 방법(410)은 도 6을 참조하여 이하에서 기재될 것이다.
이하에서 더 상세하게 기재될 바와 같이, 심벌 및 심벌의 코딩은 인터리빙된 에러의 비트 모두를 인코딩하지 않을 수 있다. 따라서, 방법(400)은 인터리빙된 에러(예컨대, PackAbsError)의 비-인코딩된 최하위 비트(LBS)를 코딩하는 단계(412)를 포함할 수 있다. 인터리빙된 에러의 LBS를 코딩하는 방법(412)은 도 7에 대해 이하에서 더 상세하게 기재될 것이다.
상기 언급된 바와 같이, 인터리빙된 에러는 상술한 바와 같이 에러 또는 색변환 에러의 인터리빙된 절대값을 포함할 수 있다. 따라서, 방법(400)은 에러의 부호를 코딩하는 단계(414)를 포함할 수 있다. 특정한 에러(예컨대, 색변환된 에러)가 0인지 0이 아닌지가 인터리빙된 에러를 디인터리빙함으로써 쉽게 결정될 수 있으므로, 에러에 대한 부호를 코딩하는 단계(414)는 0이 아닌 에러에 대해 부호 비트를 포함시키는 단계만을 포함할 수 있다. 예컨대, 각각의 0이 아닌 에러에 대한 비트가 부호 스트링에 포함될 수 있으며, 이때 0은 양의 부호를 나타내며, 1은 음의 부호를 나타낸다. 일부 실시예에서, 그 미처리 형태로 포함된 에러에 대해서는 부호 스트링에 부호 비트가 포함되지 않는다. 이후에 더 상세하게 기재될 바와 같이, 인터리빙된 에러가 특정 값을 초과하는 경우에, 미처리 픽셀 데이터가 압축된 타일에서 픽셀을 나타내기 위해 사용된다.
코딩된 심벌, 코딩된 LSB 및 코딩된 부호가 그 후 방법(400)의 대상인 픽셀의 표현으로서 압축 타일에 저장될 수 있다. 타일에 대한 초기 픽셀과, 방법(400)에 따라 압축된 나머지 픽셀이 복수의 타일로 구성된 프레임의 타일과 같은 타일의 압축된 표현을 포함할 수 있다.
도 5는 인터리빙된 에러, 예컨대 X와 같고 크기 S를 갖는 PackAbsError의 비트 중 일부나 모두에 대한 심벌을 코딩하는 방법(500)을 예시한다. 예시한 방법(500)은 컬러의 24비트, 즉 적색, 녹색 및 청색에 대해 각각 8비트씩 포함하는 픽셀에 대한 것이다. 당업자는 예시한 값이 더 큰 또는 더 작은 픽셀에 대해 쉽게 변경될 수 있음을 인식할 것이다.
예컨대, 만약 S가 4 이상이 아닌 것으로 밝혀진다면(502), 심벌(Sym)은 X인 것으로서 계산될 수 있다(504). 그렇지 않고, 만약 S가 7 이상이 아닌 것으로 밝혀진다면(506), Sym은 S*2+(X&1)로서 계산될 수 있다(508). 그렇지 않고, S가 17보다 큰 것으로 밝혀지지 않는다면(510), Sym은 S+7로서 계산될 수 있다(512). 그렇지 않고, S가 17 이상이라면, Sym은 24인 것으로 계산될 수 있다.
도 6을 참조하면, 도 5에 따라 결정된 심벌과 같은 심벌이 허프만 코딩과 같은 가변 길이 코딩(VLC) 방법을 사용하여 코딩될 수 있다. 이때, 허프만 코딩은 25개 이하의 사례(case)를 갖는 허프만 테이블(Huffman table)을 사용한다. 예컨대, 방법(600)은 Sym이 0인지를 평가하는 단계(602)를 포함할 수 있다. 그렇다면, 심벌은 0 또는 2개의 0비트 00인 것으로서 코딩될 수 있다.
그렇지 않고, 방법(600)은 심벌을 VLC 코딩하는 단계를 포함할 수 있다. 예컨대, 심벌은 HuffmanTable[0][Sym]인 제1 부분과 HuffmanTable[1][Sym]인 제2 부분으로 인코딩될 수 있다. 예컨대, 길이 N의 값 코드는 Code[N-1~N-2]=Floor((Sym-1)/8+1) 및 Code[N-3~0]=(Sym-1)%8로서 계산될 수 있다(606). 예시한 방법에서 N은 5이다. 그러나 압축되는 픽셀의 크기에 따라 다른 길이도 사용될 수 있다.
도 7을 참조하면, 상기 언급된 바와 같이, 심벌 및 그 코딩 표현은 인터리빙된 에러 전체를 인코딩하지 않을 수 있다. 따라서, 도 7의 방법(700)은 어느 것도 코딩된 심벌에 의해 인코딩되지 않은 경우, 최하위 비트를 인코드하는 데 사용될 수도 있다. 예를 들면, 심벌(예컨대, 도 5에서 Sym)이 24 미만이 아닌 것으로 밝혀진 경우(702), 원래의 RGB 값이 출력될 수도 있다(704), 예를 들면, 픽셀의 압축된 버전이 간단히 픽셀에 대한 RGB 값이 될 것이다.
이와 달리, Sym이 14 미만이 아닌 것으로 밝혀진 경우(706), 값 X[S-2∼0]이 출력될 수도 있다(710)(예를 들면, 인터리브된 에러의 선두 비트 외의 모두, PackAbsError=X). 이와 달리, Sym이 4 미만이 아닌 것으로 밝혀진 경우(710), 값 X≫1[S-3∼0]이 출력될 수도 있으며(712), 예를 들면, 1비트 만큼 우측으로 시프트된 X의 선두 비트 외의 모두가 출력될 수도 있다. 이와 달리, Sym이 4 미만인 것으로 밝혀진 경우, 인터리브된 에러의 LSB를 인코딩하기 위해 출력되는 비트는 없다(714). 상기 언급된 바와 같이, 인용된 값들은 예시적인 것일 뿐 상이한 사이즈의 픽셀에 대해서는 상이하게 될 것이다.
도 8은 이전의 방법에 따라 압축된 픽셀을 압축 해제하는 프로세스(800)를 예시한다. 일반적으로, 픽셀의 압축 해제는 압축 프로세스의 역이다. 특히, 인코딩된 심벌이 디코딩되고(802) 인터리브된 에러가 심벌로부터 획득된다(804). 어떤 0이 아닌 에러에 대한 심벌 비트가 추출된다(806). 인터리브된 에러가 RCT와 같은 색변환의 결과인 경우, 개별 에러 구성요소(예컨대, OrgError[i], 상기)의 절대값을 획득하기 위해 인터리브된 에러에 대해 역 색변환이 실행된다(808). 개별 에러 구성요소는 그 후 추출된 부호 비트에 따라 부호를 지니고, 그 후 원본 픽셀을 획득하기 위해 예측 픽셀과 결합(810) 예컨대, 예측 픽셀에 가산된다. 상기 언급된 바와 같이, 심벌(Sym)이 그 원래의 형태로 픽셀이 사용되는 것을 나타내는 경우, 그 픽셀에 부호 비트가 포함되지 않는다.
도 9는 비트스트림으로부터 심벌을 타일로부터 그러한 비트의 스트림을 추출하기 위한 방법(900)을 예시한다. 방법(900)의 실행은 비트스트림으로부터 초기 픽셀을 추출한 후에 일어날 수 있다. 그 후, 후속 비트가 방법(900)에 따라 처리될 수도 있다.
방법(900)은 비트스트림의 다음 2 비트(V0)를 추출하는 것(902)을 포함할 수도 있다. V0이 0보다 크지 않은 것으로 밝혀진 경우, Sym의 값은 0으로 설정된다. 값 Sym=0은 0의 인터리브된 에러에 대응한다. 따라서, 압축 해제 중인 픽셀의 압축되지 않은 값이 타일 내의 이전 픽셀의 값이 될 것이다. 처음의 2 비트가 0이 아닌 것으로 밝혀진 경우(904), 방법(900)은 비트스트림으로부터 다음의 3비트(V1)를 판독하는 것(908) 및 Sym=(V0-1)*8+V1+1에 따라서 심벌 Sym을 계산하는 것(910)을 포함할 수도 있다.
도 10은 추출된 심벌 Sym으로부터 인터리브된 에러(예컨대, PackAbsError)를 획득하기 위한 방법(1000)을 예시한다. Sym이 24 미만이 아닌 것으로 밝혀지는 경우(1002), 픽셀(예컨대, 압축 해제된 픽셀)이 간단히 비트스트림 입력[23∼0]의 24 비트와 동일하게 설정될 수도 있고, 실시예에 따라 V0 및 V1의 다음의 비트스트림 내의 S-1 비트이다.
Sym이 14 미만인 것으로 밝혀지고(1006) 4 미만이 아닌 것으로 밝혀지는 경우(1012), 사이즈 S는 Sym/2와 동일하게 설정되고, PackAbsError은 (1≪(S-1)+(Sym&1)+(입력[S-3∼0]≪1)과 동일하게 설정되고(1016), 여기에서 입력[S-3∼0]은 V0 및 V1의 다음의 비트스트림 내의 S-2 비트이다.
단계 1010 및 1016에서, 인터리브된 에러에 가산된 입력[]의 비트는 인터리브된 에러와 관련된 어떤 최하위 비트를 포함한다. Sym이 4 미만인 것으로 밝혀지는 경우(1012), PackAbsError은 Sym과 동일하게 설정된다.
도 11은 방법 900 및 1000에 따라 복구되는 것으로서 PackAbsError과 같은 인터리브된 에러로부터 픽셀 구성요소를 추출하기 위한 방법(1100)을 예시한다. 방법(1100)은 개별 에러 값 예컨대, 압축하는 동안 계산된 AbsErrors[i]을 획득하기 위해 인터리브된 에러를 디인터리빙하는 것을 포함할 수도 있다. 예를 들면, AbsError[i]의 j번째 비트 위치는 PackAbsError의 비트 위치 3*j+1에서의 값과 동일하게 설정될 수도 있다. 예를 들면, PackAbsError가 비트 b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1 및 b0을 포함하는 경우, AbsError[0] = b15, b12, b9, b6, b3, b0; AbsError[1] = b13, b10, b7, b4, b1; 및 AbsError[2] = b14, b11, b8, b5, b2이다.
AbsError[i] 값에 대한 부호는 인터리브된 에러를 인코딩한 비트스트림 내의 비트를 따를 수도 있다. 따라서, 0이 아닌 AbsError[i]의 각각에 대해, 부호 비트가 비트스트림으로부터 예컨대, AbsError[0] 내지 AbsError[2]의 순서로 추출될 수도 있고(1104), Error[i]의 값이 부호 비트로 나타나는 바와 같은 부호를 변경함으로써 예컨대, 대응하는 부호 비트가 1인 경우 AbsError[i]를 무효화함으로써 획득된다. 상기 언급된 바와 같이, 몇몇 픽셀은 그들의 원래의 형태로 인코딩될 수도 있다. 따라서, 그러한 픽셀에 부호 비트가 인코딩 또는 적용되지 않을 수도 있다.
Error[i]에 대해 획득된 값을 사용하여, 역 색변환(RCT)이 예측 픽셀에 대해 압축 해제되고 있는 픽셀에 대한 원본 에러 값을 획득하기 위해 실행될 수도 있다(1106). 예를 들면, OrgError[0] = Error[0]; OrgError[1] = Error[1] + OrgError[0]; 및 OrgError[2] = Error[2] + OrgError[1]이다. 픽셀(Current[i])에 대한 색상 값은 그 후 예측 픽셀에 에러 값을 가산함으로써(1108) 획득될 수도 있다. 예를 들면, 각각 R, G 및 B에 대해 i = 1-3에 대해 Current[i] = OrgError[i] + Predicted[i]를 계산함으로써 획득될 수도 있다.
도 12를 참조하면, 전체에 걸쳐 언급된 바와 같이, 타일은 타일 데이터가 디스플레이 제어기(202)와 같은 요구하는 디바이스에 의해 검색되기 때문에 "온 더 플라이(on the fly)" 디코딩될 수도 있다. 몇몇 실시예에서는, 데이터 인코딩 타일이 압축된 타일 데이터의 비트스트림을 클록 사이클당 4 픽셀의 레이트로 디코딩될 수 있게 하는 방식으로 정렬될 수도 있다.
도 11에 대하여 상술한 디코딩의 프로세스는 5 단계를 포함하는 것으로 특징지을 수 있다:
단계 1: 첫 번째 2비트를 입수한다. 2비트가 0인 경우, 이전의 픽셀 색 채널을 반복한다;
단계 2: 필요한 경우 3비트를 입수하고, Sym을 입수하기 위해 단계 1의 2비트와 팩화(pack)한다(단계 1 결과를 Sym의 MSB로 둔다)
단계 3: Sym으로부터 PackAbsError를 디코드하는 데 필요한 LSB의 수를 획득한다
단계 4: PackAbsError를 디인터리브하고, 0이 아닌 에러를 식별하며, 0이 아닌 에러에 대한 부호 비트를 입수한다.
단계 5: 역 색변환을 실행하고, 현재의 픽셀에 대한 RGB 구성요소값을 획득하기 위해 예측 픽셀(Prediction[i])에 원본 에러(OrgError[i])를 가산한다.
각각의 단계 1-5의 이후에, 후속 단계들이 처리될 필요가 있는지, 및 후속 단계들에서 처리될 비트스트림으로부터 비트의 수가 명백해진다. 단계 5는 비트스트림으로부터 추가의 비트를 필요로 하지 않는다.
4개의 픽셀을 함께 그룹화함으로써, 64개의 픽셀 타일에 대해 16개의 그룹(그룹 1 내지 16)이 존재한다. 각 픽셀의 그룹에 대해, 각각의 단계 1-5에 대응하는 비트가 함께 그룹화될 수도 있다. 따라서, 비트 스트림은 비트 스트링 코드 0-0, 코드 0-1, ..., 코드 i-0, ..., 코드 i-j, ..., 코드 16-5를 포함할 수 있으며, 여기에서 코드 i-j는 i번째 그룹의 j번째 단계 비트를 포함한다. 상기 언급된 바와 같이, 몇몇 픽셀을 나타내는 비트는 단계 1-5의 모드에 대해 코드를 포함하지 않을 수도 있다.
몇몇 실시예에서는, 각 픽셀에 대해 단계 1-5의 어느 하나에 대응하는 비트가 타일의 모든 픽셀에 대해 함께 그룹화될 수도 있다. 따라서, 방법(1200)은 허프만 코딩의 2 비트 예컨대, 제1의 연속 세그먼트 내의 모든 픽셀에 대해 코딩된 Sym의 첫 번째 2 비트를 삽입하는 것(1202)을 포함할 수도 있다. 64개의 픽셀 타일에 대해서는, 그에 따라, 초기 픽셀이 압축되지 않기 때문에 제1의 연속 세그먼트 내에 2x63 비트가 존재할 것이다.
방법(1200)은 그 원래의 형태로 포함되는 픽셀을 제외하고, 어떤 0이 아닌 에러의 부호를 나타내는 비트 스트링의 길이를 삽입하는 것(1204)을 더 포함할 수도 있다. 예시된 실시예에서, 이들 비트는 제1의 연속 세그먼트 이후에 삽입된다. 부호 비트는 단계 4에서 사용되는 부호 비트에 앞서 사용되는 단계 3에 대응하는 비트보다 일반적으로 더 작은(최대 9 비트) 점을 고려하면 제1의 연속 세그먼트 이후에 삽입되는 것이 유리할 수도 있다.
방법(1200)은 제1의 연속 세그먼트 및 부호 비트 스트링의 길이 중 하나 또는 양자의 이후에 그 원래의 압축되지 않은 형태로 초기 픽셀 예를 들면, 타일 내의 제1 픽셀을 삽입하는 것(1206)을 포함할 수도 있다. 초기 픽셀과 다른 타일의 픽셀에 대한 나머지 허프만 코딩은 제2의 연속 세그먼트로 그룹화될 수 있다. 나머지 허프만 코딩은 제1의 연속 세그먼트 내에 포함되는 첫 번째 2 비트와 다른 코딩된 Sym의 어떤 비트를 포함할 수도 있다. 제2의 연속 세그먼트는 가변 길이를 갖는다. 그러나, 제2의 연속 세그먼트의 길이가 제1의 세그먼트를 사용하여 결정될 수 있는 점을 고려하면, 제2의 연소 세그먼트의 길이는 포함될 필요가 없다.
방법(1200)은 어떤 0이 아닌 에러에 대한 부호 비트를 포함하는 비트 스트링을 삽입하는 것(1210)을 포함할 수도 있다. 타일의 픽셀에 대한 어떤 LSB의 인코딩을 포함하는 제3의 연속 세그먼트가 또한 삽입될 수도 있다(1212). 픽셀에 대한 LSB의 수가 0이거나 0이 아닌 값의 가변적인 수일 수도 있는 점을 고려하며, 제3의 연속 세그먼트의 길이는 가변적이다. 제3의 연속 세그먼트의 길이는 제1 및 제2의 연속 세그먼트를 사용하여 결정될 수 있으므로, 그에 따라, 제3의 연속 세그먼트의 길이가 포함될 필요가 없다. 제3의 연속 세그먼트의 시작점은 단계 1204에서 삽입되는 길이를 사용하여 결정될 수도 있다.
여러 가지 세그먼트가 압축된 타일의 비트스트림 내에 또는 저장된 표시 내에 여러 가지 배열을 가질 수도 있다. 일 실시예에서, 압축된 타일은 다음의 순서: 제1의 연속 세그먼트, 부호 비트 스트링의 길이, 초기 픽셀, 제2의 연속 세그먼트, 부호 비트 스트링, 및 제3의 연속 세그먼트의 순서로 배열될 수도 있다.
이 방식으로 배열되는 압축된 픽셀을 나타내는 비트 스트링으로, 클록 사이클당 4 픽셀의 처리량이 쉽게 달성될 수도 있다. 특히, j번째 그룹의 k번째 단계가 디코딩되면, j번째 그룹의 (k+1)번째 단계의 각 단계에 대응하는 비트에 대한 비트스트림 내의 시작점이 알려진다. 유사하게, 각 세그먼트 내의 시작점이 (j+1)번째 그룹의 k번째 단계에 대해 알려진다. 이 방식으로, 타일의 픽셀의 디코딩의 병렬화가 가능하며, 클록 사이클당 4 픽셀의 처리량이 쉽게 달성될 수 있다.
도 4-7에서의 압축 알고리즘의 상세한 설명에서 명백한 바와 같이, 각 픽셀은 압축 해제 단계 15의 각각에 대응하는 데이터를 반드시 포함하지는 않을 것이다. 예를 들면, 코딩된 Sym의 첫 번째 2 비트가 픽셀에 대한 전체 Sym을 인코드하는 경우, 제2의 연속 세그먼트는 그 픽셀에 대한 비트를 포함하지 않을 수도 있다.
상기 언급된 바와 같이, 제3의 연속 세그먼트는 가변 길이를 갖는다. 몇몇 실시예에서는, 제3의 연속 세그먼트가 홀수의 비트를 갖는 경우에, 제3의 연속 세그먼트가 짝수의 비트를 갖거나 바이트 경계, 16 비트 경계, 또는 어떤 다른 경계에서 종료하도록 제3의 연속 세그먼트에 하나 이상의 부호 비트가 가산될 수도 있다. 따라서, 예를 들면, PackAbsError 사이즈가 6을 초과하는 짝수 또는 5(예컨대, 5, 8, 10, 12, 14, 또는 16)인 것으로 밝혀진 경우, 단계 3 비트는 1 부호 비트를 포함하는 것으로 이해될 수도 있고 그 부호 비트가 부호 비트 스트링(예컨대, 단계 4 비트)에서 반복되지 않아야 한다.
또한 상기 언급된 바와 같이, 인터리브된 에러가 큰 경우에, 픽셀에 대한 원래의 RGB 데이터가 그 원래의 형태로 포함될 수도 있다. 그러한 경우에는, 원래의 픽셀 데이터의 16 최상위 비트가 그 픽셀에 대한 단계 3(제3의 연속 세그먼트)에 포함될 수 있고, 나머지 8 LSB가 단계 4(예컨대, 부호 비트와 함께) 포함될 수도 있다. 부호 비트 스트링에 포함되는 비트의 수는 픽셀에 대한 제1의 연속 세그먼트로부터 또는 제1 및 제2의 연속 세그먼트의 양자로부터 추출되는 Sym의 값을 평가함으로써 추출될 수도 있다. 예를 들면, Sym이, 픽셀이 그 원래의 형태로 포함되어 있음을 나타내는 경우에, 16 MSB는 제3의 연속 세그먼트로부터 검색될 수도 있고, 나머지 8 LSB는 부호 비트 스트링 예컨대, 단계 4 비트로부터 검색될 수 있다. 단계 3이 매우 가변적인 길이(0에서 24*4까지)를 갖고, 단계 3 비트의 시작점이 가변적인 점을 감안하면, 상술한 접근법은 유리하게도 그룹 내의 각 픽셀이 균등한 오프셋 점(even offset point)에서 시작하는 것을 보증한다.
상기 언급된 바와 같이, 제3의 연속 세그먼트의 사이즈는 제1 및 제2의 연속 세그먼트로부터의 데이터를 사용하여 결정될 수도 있다. 몇몇 실시예에서는, 단계 3 비트(LSB)의 사이즈가 인코딩될 수도 있다. 예를 들면, 현재의 픽셀에 대해, Error[0] 및 Error[1]이 0인 경우, Error[2]에 대한 단계 3 비트의 사이즈가 Error[0] 및 Error[1]에 대한 부호 비트의 대신에 팩화될 수도 있다. 예를 들면, 여러 가지 픽셀에 대한 단계 3의 사이즈, 즉, Sym 값은 아래 표 1에 나열되어 있다.
Sym | PackAbsErrorSize | 단계 3 비트 길이 |
0~7 | 0~3 | 0 |
8,9 | 4 | 2 |
10,11 | 5 | 4 (1 부호 비트 팩화됨) |
12,13 | 6 | 4 |
14 | 7 | 6 |
15 | 8 | 8 (1 부호 비트 팩화됨) |
16 | 9 | 8 |
17 | 10 | 10 (1 부호 비트 팩화됨) |
18 | 11 | 10 |
19 | 12 | 12 (1 부호 비트 팩화됨) |
20 | 13 | 12 |
21 | 14 | 14 (1 부호 비트 팩화됨) |
22 | 15 | 14 |
23 | 16 | 16 (1 부호 비트 팩화됨) |
24 | ≥ 17 | 16 (원래의 데이터의 MSB 16 비트) |
<표 1 : Sym 값 대 PackAbsErrorSize 및 단계 3 비트 길이>
도 13을 참조하면, 이상에서 설명한 방법은 RGB 구성요소를 포함하는 픽셀에 대한 압축 및 압축 해제 기술을 설명한다. 도 13은 RGB 구성요소를 포함하는 픽셀을 압축하기 위한 방법(1300)을 예시한다.
방법(1300)은 방법(1200)에서와 동일한 방식으로 그러한 비트의 제1의 연속 세그먼트와 같은 허프만 코딩된 심벌의 2 비트를 삽입하는 것(1302)을 포함할 수도 있다. 유사하게, 타일의 픽셀에 대한 0이 아닌 부호 비트의 길이가 방법(1200)에서와 동일한 방식으로 삽입될 수도 있다(1304). 초기 픽셀(그 RGB 값)이 또한 삽입될 수도 있다(1306). 초기 픽셀에 대한 알파 값이 또한 삽입될 수도 있다(1306).
나머지 픽셀에 대한 알파 값은 4 픽셀의 그룹과 같은 그룹 내에 압축될 수도 있다. 픽셀의 그룹의 표시는 3개의 단계를 포함할 수도 있다. 방법(1200)에 대해서 말하자면, 각 단계에 대한 비트들이 함께 그룹화될 수도 있다, 예를 들면, 연속 세그먼트 내의 모든 단계 1 비트, 하나의 연속 세그먼트 내의 모든 단계 2 비트, 및 하나의 연속 세그먼트 내의 모든 단계 3 비트가 함께 그룹화될 수도 있다.
픽셀의 그룹에 대한 단계 1은 픽셀의 그룹의 어떤 픽셀에 대한 에러가 0이 아닌 경우를 나타내는 비트를 포함할 수도 있고, 여기에서 픽셀에 대한 에러는 픽셀에 대한 알파 값과 초기 알파 값 사이의 차이다. 예를 들면, 0과 동일한 단계 1 비트는 그룹 내의 모든 픽셀에 대한 모든 에러가 0과 동일한 것을 나타낸다. 1과 동일한 단계 1 비트는 에러 중 적어도 하나가 0과 동일하지 않은 것을 나타낸다.
픽셀의 그룹에 대한 단계 2는 각 픽셀에 대한 에러의 사이즈를 나타내는 각 픽셀에 대한 3 비트를 포함할 수도 있다. 예를 들면, 에러는 각 픽셀에 대해 0에서 7(b111)까지의 값일 수도 있다. 픽셀에 대한 에러가 7보다 큰 경우에는, 그 픽셀에 대한 단계 2 비트가 7과 동일하게 설정될 수도 있다.
0 및 7과 다른 에러를 갖는 픽셀에 대해, 단계 3 비트는 에러의 부호를 나타내는 부호 비트 및 에러의 최하위 비트(LSB)를 포함할 수도 있다. 0과 동일한 에러를 갖는 픽셀에 대해, 단계 3에 부호가 없거나 LSB가 포함된다. 7보다 큰 에러를 갖는 픽셀에 대해, 단계 3은 원래의 알파 값을 포함할 것이다.
다시 도 13을 참조하면, 방법(1300)은 단계 1 비트를 삽입하는 것(1310), 단계 3 비트의 길이를 삽입하는 것(1312), 단계 2 비트를 삽입하는 것(1314), 및 단계 3 비트를 삽입하는 것(1316)을 포함할 수도 있다. 상기 언급된 바와 같이, 단계에 대한 비트를 삽입하는 것은 타일 내의 모든 픽셀에 대해 그 단계에 대한 모든 비트를 삽입하는 것을 포함할 수도 있다. 단계 2의 길이가 단계 1 비트(예컨대, 1의 단계 2 비트에 대한 9 비트)로부터 쉽게 결정될 수 있다는 점을 고려하면, 단계 2의 길이는 몇몇 실시예에서는 생략될 수도 있다.
방법(1300)은 나머지 허프만 코드(예컨대, Sym의 나머지 비트) 예를 들면, 방법(1200)에 관해서는 제2의 연속 세그먼트를 삽입하는 것(1318)을 포함할 수도 있다. 방법(1300)은 부호 비트의 스트링과 같은 0이 아닌 인터리브된 에러에 대한 부호를 삽입하는 것(1320), 및 방법(1200)에서와 동일한 방식으로 제3의 연속 세그먼트와 같은 인코딩된 최하위 비트(LSB)를 삽입하는 것(1322)을 또한 포함할 수도 있다.
일례로서, 방법(1300)에 따르는 비트 스트림 또는 압축된 타일의 저장된 표시는 아래의 순서로: 제1의 연속 세그먼트, 부호 비트 스트링의 길이, 초기 알파 값, 단계 1 알파 비트, 단계 3 알파 비트의 길이, 단계 2 알파 비트, 및 단계 3 알파 비트, 제2의 연속 세그먼트, 부호 비트 스트링, 및 제3의 연속 세그먼트의 순서로 배열될 수도 있다.
본 발명은 그 사상 또는 본질적인 특성을 벗어남 없이 다른 특정 형태로 구현될 수도 있다. 기재된 실시예들은 모든 점에서 예시적일 뿐 제한하고자 하는 것이 아닌 것으로 고려된다. 발명의 범주는 따라서, 이상의 설명에 의해서 보다는 첨부하는 청구항들에 의해 나타난다. 청구항의 등가물의 의미 및 범위 내에 있는 모든 변경이 그 범주 내에 수용될 것이다.
Claims (23)
- 데이터를 압축하는 방법으로서, 상기 방법은:
복수의 픽셀의 각 픽셀에 대해, 전자 디바이스에 의해:
예측 픽셀의 구성요소에 관해 각 픽셀의 구성요소에 대한 에러를 계산하고;
상기 에러를 인터리빙하여 인터리빙된 에러를 생성하며;
상기 인터리빙된 에러의 적어도 최상위 부분을 인코딩하는 제1 심벌을 생성하고;
상기 제1 심벌이 전체 인터리빙된 에러를 인코드하지 않는 경우, 상기 인터리빙된 에러의 최하위 부분을 인코딩하는 제2 심벌을 생성하되, 상기 인터리빙된 에러의 최하위 부분은 최상위 부분을 초과하는 인터리빙된 에러의 최하위 비트를 포함하고;
제1 세그먼트에 상기 제1 심벌을, 및 제2 세그먼트에 어느 하나의 제2 심벌을, 상기 예측 픽셀과 관련하여 메모리 디바이스에 각 픽셀의 표시로서 저장하는 것을
실행하는 단계를 포함하고,
복수의 픽셀의 제1 심벌은 모두 상기 제1 세그먼트에 연속적으로 저장되고, 복수의 픽셀의 어느 하나의 제2 심벌은 모두 상기 제1 세그먼트와 다른 제2 세그먼트에 연속적으로 저장되는, 데이터 압축 방법. - 제1항에 있어서, 상기 에러를 인터리빙하여 인터리빙된 에러를 생성하는 것은 상기 에러의 절대값을 인터리빙하는 것을 포함하는, 데이터 압축 방법.
- 제2항에 있어서, 상기 제1 심벌과 함께 0과 동일하지 않은 상기 에러 중 어느 하나에 대한 부호 비트를 저장하는 것을 더 포함하는, 데이터 압축 방법.
- 제1항에 있어서, 상기 인터리빙된 에러를 생성하는 것은 상기 에러의 색 변환을 인터리빙하는 것을 포함하는, 데이터 압축 방법.
- 제1항에 있어서, 상기 인터리빙된 에러의 적어도 최상위 부분을 인코딩하는 제1 심벌을 생성하는 것은 25개 이하의 사례(case)를 갖는 허프만 테이블(Huffman table)을 사용하여 허프만 코딩을 실행하는 것을 포함하는, 데이터 압축 방법.
- 제1항에 있어서, 상기 예측 픽셀은 복수의 픽셀 내의 각 픽셀 이전의 픽셀인, 데이터 압축 방법.
- 제1항에 있어서, 상기 복수의 픽셀은 복수의 타일 중 하나의 타일을 정의하고, 상기 복수의 타일은 하나의 프레임을 정의하는, 데이터 압축 방법.
- 제1항에 있어서, 상기 복수의 픽셀 중의 픽셀의 수는 상기 전자 디바이스에 동작 가능하게 결합되는 그래픽 시스템 구성요소의 라인 버퍼 사이즈와 같은, 데이터 압축 방법.
- 삭제
- 제1항에 있어서, 상기 에러를 인터리빙하여 인터리빙된 에러를 생성하는 것은 상기 에러의 절대값을 인터리빙하는 것을 포함하고, 상기 방법은:
상기 에러 중 어느 하나의 0이 아닌 에러에 대한 부호 비트를 제3 세그먼트 내에 저장하는 것을 더 포함하며, 상기 제3 세그먼트는 상기 복수의 픽셀의 모든 픽셀에 대한 에러들 중 어느 하나의 0이 아닌 에러에 대한 부호 비트를 포함하는, 데이터 압축 방법. - 데이터를 압축하는 방법으로서, 상기 방법은:
복수의 픽셀의 적어도 일 부분의 각 픽셀에 대해, 전자 디바이스에 의해:
예측 픽셀의 구성요소에 관해 각 픽셀의 구성요소에 대한 에러를 계산하고;
상기 에러의 절대값을 인터리빙하여 인터리빙된 에러를 생성하며;
상기 인터리빙된 에러를 허프만 코딩하여 제1 심벌 부분 및 제2 심벌 부분을 생성하되, 상기 제1 심벌 부분은 인터리빙된 에러의 최상위 부분을 인코딩하고 고정 길이를 갖고, 상기 제2 심벌 부분은 인터리빙된 에러의 최하위 부분을 인코딩하고 가변 길이를 갖고;
상기 제1 및 제2 심벌 부분이 전체 인터리빙된 에러를 인코드하지 않는 경우, 상기 인터리빙된 에러의 최하위 부분을 인코딩하는 제3 심벌 부분을 생성하며;
상기 제1 및 제2 심벌 부분, 어느 하나의 제3 심벌 부분, 및 0과 동일하지 않은 상기 에러 중 어느 하나의 부호를 스트리밍하는 것을
실행하는 단계를 포함하고,
상기 제1 및 제2 심벌 부분, 어느 하나의 제3 심벌 부분, 및 0과 동일하지 않은 상기 에러 중 어느 하나의 부호를 스트리밍하는 것은:
상기 복수의 픽셀의 제1 심벌 부분을 제1의 연속 세그먼트로서 스트리밍하는 것;
상기 복수의 픽셀의 제2 심벌 부분을 제2의 연속 세그먼트로서 스트리밍하는 것;
상기 복수의 픽셀의 제3 심벌 부분을 제3의 연속 세그먼트로서 스트리밍하는 것; 및
상기 복수의 픽셀의 부호를 제4의 연속 세그먼트로서 스트리밍하는 것을 더 포함하는, 데이터 압축 방법. - 삭제
- 제11항에 있어서, 상기 제1 및 제2의 연속 세그먼트 사이에 상기 제3의 연속 세그먼트의 길이를 삽입하는 것을 더 포함하는, 데이터 압축 방법.
- 제11항에 있어서, 상기 제1 및 제2의 연속 세그먼트 사이에 초기 픽셀을 삽입하는 것을 더 포함하는, 데이터 압축 방법.
- 제11항에 있어서, 상기 제4의 연속 세그먼트는 상기 제2 및 제3의 연속 세그먼트 사이에 삽입되는, 데이터 압축 방법.
- 제11항에 있어서, 상기 복수의 픽셀은 복수의 타일 중의 하나의 타일을 정의하는, 데이터 압축 방법.
- 제16항에 있어서, 상기 복수의 타일은 하나의 프레임을 정의하는, 데이터 압축 방법.
- 제16항에 있어서, 상기 복수의 타일의 각 타일의 사이즈는 그래픽 처리 시스템의 라인 버퍼의 사이즈와 동일한, 데이터 압축 방법.
- 제15항에 있어서, 상기 제1 및 제2 심벌 부분, 어느 하나의 제3 심벌 부분, 및 0과 동일하지 않은 상기 에러 중 어느 하나의 부호를 스트리밍하는 것은:
제2 전자 디바이스로부터의 요구에 응답하여 상기 제1 및 제2 심벌 부분, 어느 하나의 제3 심벌 부분, 및 0과 동일하지 않은 상기 에러 중 어느 하나의 부호를 디코더에 스트리밍하는 것; 및
디코딩된 픽셀을 상기 제2 전자 디바이스에 송신하는 것을 더 포함하는, 데이터 압축 방법. - 제19항에 있어서, 상기 제2 전자 디바이스는 디스플레이 제어기인, 데이터 압축 방법.
- 제11항에 있어서, 상기 인터리빙된 에러를 허프만 코딩하여 제1 심벌 부분 및 제2 심벌 부분을 생성하는 것은 25개 이하의 사례를 갖는 허프만 테이블을 사용하여 인터리빙된 에러를 허프만 코딩하는 것을 포함하는, 데이터 압축 방법.
- 제11항에 있어서, 상기 제1 및 제2 심벌 부분, 어느 하나의 제3 심벌 부분, 및 0과 동일하지 않은 상기 에러 중 어느 하나의 부호를 스트리밍하는 것은:
상기 복수의 픽셀의 제1 심벌 부분을 제1의 연속 세그먼트로서 스트리밍하는 것;
상기 복수의 픽셀의 제2 심벌 부분을 제2의 연속 세그먼트로서 스트리밍하는 것;
어느 하나의 제3 심벌 부분을 포함하는 제3의 연속 세그먼트를 획득하는 것;
상기 제3의 연속 세그먼트의 길이가 홀수인 경우, 상기 제3의 연속 세그먼트의 1 비트를 상기 제2의 연속 세그먼트로 이동시키는 것; 및
상기 복수의 픽셀의 부호를 제4의 연속 세그먼트로서 스트리밍하는 것을 더 포함하는, 데이터 압축 방법. - 데이터를 압축하는 방법으로서, 상기 방법은:
복수의 픽셀의 적어도 일 부분의 각 픽셀에 대해, 전자 디바이스에 의해:
예측 픽셀의 구성요소에 관해 각 픽셀의 구성요소에 대한 에러를 계산하고;
상기 에러의 절대값을 인터리빙하여 인터리빙된 에러를 생성하며;
상기 인터리빙된 에러가 임계값 이하인 경우
상기 인터리빙된 에러를 허프만 코딩하여 제1 심벌 부분 및 제2 심벌 부분을 생성하되, 상기 제1 심벌 부분은 고정 길이를 갖고, 상기 제2 심벌 부분은 가변 길이를 갖고;
상기 제1 및 제2 심벌 부분이 전체 인터리빙된 에러를 인코드하지 않는 경우, 상기 인터리빙된 에러의 최하위 부분을 인코딩하는 제3 심벌 부분을 생성하며;
상기 복수의 픽셀의 제1 심벌 부분을 제1의 연속 세그먼트로서 스트리밍하고, 상기 복수의 픽셀의 제2 심벌 부분을 제2의 연속 세그먼트로서 스트리밍하고, 상기 복수의 픽셀에 대해 어느 하나의 제3 심벌 부분 및 0과 동일하지 않은 상기 에러 중 어느 하나의 부호를 포함하는 제3의 연속 세그먼트를 스트리밍하는 것을
실행하는 단계를 포함하는, 데이터 압축 방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/856,389 US20140300628A1 (en) | 2013-04-03 | 2013-04-03 | Tile-based compression and decompression for graphic applications |
US13/856,389 | 2013-04-03 | ||
US13/919,691 | 2013-06-17 | ||
US13/919,691 US9460525B2 (en) | 2013-04-03 | 2013-06-17 | Tile-based compression and decompression for graphic applications |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140121356A KR20140121356A (ko) | 2014-10-15 |
KR102194615B1 true KR102194615B1 (ko) | 2020-12-24 |
Family
ID=50442368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140040116A KR102194615B1 (ko) | 2013-04-03 | 2014-04-03 | 그래픽 애플리케이션을 위한 타일 기반 압축 및 압축 해제 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9460525B2 (ko) |
EP (2) | EP2787738B1 (ko) |
KR (1) | KR102194615B1 (ko) |
CN (2) | CN104104953B (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150049105A1 (en) * | 2013-08-13 | 2015-02-19 | Mediatek Inc. | Data processing apparatus for transmitting/receiving indication information of pixel data grouping setting via display interface and related data processing method |
KR102124714B1 (ko) * | 2015-09-03 | 2020-06-19 | 미디어텍 인크. | 비디오 코딩에서의 신경망 기반 프로세싱의 방법 및 장치 |
GB2570879B (en) * | 2018-02-06 | 2022-08-17 | Advanced Risc Mach Ltd | Encoding data arrays |
CN111724295B (zh) * | 2019-03-18 | 2024-05-14 | 芯原微电子(成都)有限公司 | 一种外部存储器的协同访问方法及系统、协同访问架构 |
CN111225259B (zh) * | 2020-01-19 | 2021-09-14 | 重庆众鸿科技有限公司 | 一种车载互联视频显示加速装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030179938A1 (en) * | 2001-03-05 | 2003-09-25 | Van Der Vleuten Renatus Josephus | Device and method for compressing a signal |
US20090080788A1 (en) * | 2003-04-17 | 2009-03-26 | Droplet Technology, Inc. | Multiple Technique Entropy Coding System And Method |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7039241B1 (en) | 2000-08-11 | 2006-05-02 | Ati Technologies, Inc. | Method and apparatus for compression and decompression of color data |
US7342590B1 (en) | 2003-05-09 | 2008-03-11 | Nvidia Corporation | Screen compression |
US7570819B2 (en) * | 2005-01-28 | 2009-08-04 | Chih-Ta Star Sung | Method and apparatus for displaying images with compression mechanism |
WO2012105882A1 (en) | 2011-02-04 | 2012-08-09 | Telefonaktiebolaget L M Ericsson (Publ) | Pixel block compression and decompression |
-
2013
- 2013-06-17 US US13/919,691 patent/US9460525B2/en active Active
-
2014
- 2014-04-03 KR KR1020140040116A patent/KR102194615B1/ko active IP Right Grant
- 2014-04-03 CN CN201410134059.XA patent/CN104104953B/zh active Active
- 2014-04-03 EP EP14163416.2A patent/EP2787738B1/en active Active
- 2014-04-03 CN CN201410134285.8A patent/CN104104954A/zh active Pending
- 2014-04-03 EP EP14163414.7A patent/EP2787647A1/en not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030179938A1 (en) * | 2001-03-05 | 2003-09-25 | Van Der Vleuten Renatus Josephus | Device and method for compressing a signal |
US20090080788A1 (en) * | 2003-04-17 | 2009-03-26 | Droplet Technology, Inc. | Multiple Technique Entropy Coding System And Method |
Also Published As
Publication number | Publication date |
---|---|
KR20140121356A (ko) | 2014-10-15 |
EP2787738B1 (en) | 2020-03-25 |
EP2787738A1 (en) | 2014-10-08 |
US9460525B2 (en) | 2016-10-04 |
EP2787647A1 (en) | 2014-10-08 |
CN104104954A (zh) | 2014-10-15 |
CN104104953A (zh) | 2014-10-15 |
CN104104953B (zh) | 2019-04-30 |
US20140301641A1 (en) | 2014-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102194615B1 (ko) | 그래픽 애플리케이션을 위한 타일 기반 압축 및 압축 해제 | |
US10440360B2 (en) | Video processing system | |
US9661321B2 (en) | Remote viewing of large image files | |
JP2016226001A (ja) | デコーダおよび復号方法 | |
JP5935695B2 (ja) | 埋め込みグラフィック符号化:並列復号に向けて並べ替えられたビットストリーム | |
US20150279055A1 (en) | Mipmap compression | |
CN113170140A (zh) | 数据阵列的位平面编码 | |
US20130235231A1 (en) | Vector embedded graphics coding | |
US11263786B2 (en) | Decoding data arrays | |
CN104093027B (zh) | 用于彩色图像的联合标量嵌入式图形编码 | |
JP2008193263A (ja) | 画像処理方法、画像処理装置、画像処理プログラム、および、記録媒体 | |
CN103262123B (zh) | 图块编码和解码 | |
KR101811774B1 (ko) | 그래픽 처리 장치 및 방법 | |
KR20140120858A (ko) | 그래픽 애플리케이션을 위한 타일 기반 압축 및 압축 해제 | |
De Neve et al. | GPU-assisted decoding of video samples represented in the YCoCg-R color space | |
US20200342566A1 (en) | Managing data for transportation | |
JPH08251590A (ja) | ディジタル符号化装置 | |
US11954028B2 (en) | Accessing encoded blocks of data | |
JP2006060490A (ja) | 画像圧縮装置および画像圧縮プログラム | |
JP2010011114A (ja) | 画像処理装置、画像処理方法、画像処理プログラム、及び、画像処理プログラムを記録した記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |