KR100968675B1 - Jpeg 어플리케이션의 가변 길이 코드 디코딩 - Google Patents

Jpeg 어플리케이션의 가변 길이 코드 디코딩 Download PDF

Info

Publication number
KR100968675B1
KR100968675B1 KR1020080091154A KR20080091154A KR100968675B1 KR 100968675 B1 KR100968675 B1 KR 100968675B1 KR 1020080091154 A KR1020080091154 A KR 1020080091154A KR 20080091154 A KR20080091154 A KR 20080091154A KR 100968675 B1 KR100968675 B1 KR 100968675B1
Authority
KR
South Korea
Prior art keywords
huffman
group
bitstream
symbol
jpeg
Prior art date
Application number
KR1020080091154A
Other languages
English (en)
Other versions
KR20090029173A (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 KR20090029173A publication Critical patent/KR20090029173A/ko
Application granted granted Critical
Publication of KR100968675B1 publication Critical patent/KR100968675B1/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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods 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/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

JPEG 이미지들에서 허프만 심볼들을 디코딩하는 접근법이 설명된다. 하나의 접근법은 JPEG 이미지 파일에서 허프만 코드들을 디코딩하는 방법을 포함한다. 이 방법은, JPEG 이미지 파일과 연관된 비트스트림으로부터 비트스트림 샘플을 얻는 단계를 포함한다. 비트스트림 샘플은 임계값에 대하여 비교되어 허프만 그룹 번호를 식별한다. 허프만 그룹과 연관된 정보를 검색하고 이용하여 비트스트림으로부터 현재 허프만 심볼을 추출한다. 그 후 현재 허프만 심볼 및 그룹 정보를 이용하여 대응하는 심볼값이 얻어질 수 있다.
JPEG 이미지, 허프만 심볼, 비트스트림, 임계값

Description

JPEG 어플리케이션의 가변 길이 코드 디코딩{DECODING VARIABLE LENGTH CODES IN JPEG APPLICATIONS}
본 발명의 실시예들은 JPEG(Joint Photographic Experts Group) 이미지 파일들에서 사용되는 가변 길이 코드(variable length code)들을 디코딩하는 것에 관련된다.
컴퓨팅 어플리케이션들에서, VLC(variable length coding) 인코딩 기법들은 무손실 데이터 압축(lossless data compression)을 허용한다. 일반적으로, VLC 인코딩 기법들은 더 적게 나오는 심볼(less common symbol)들보다 더 많이 나오는 심볼(more common symbol)들을 표현하는 데 더 적은 비트를 필요로 하는 통계산술적 방식(probabilistic approach)을 이용한다. VLC 인코딩은 컴퓨팅 전체에 걸쳐 광범위하게 사용되고, 특히 압축되지 않은 정보가 압축된 버전보다 훨씬 많은 저장 공간을 필요로 하는 이미지들, 음악, 및 비디오와 같은 미디어 어플리케이션들에 사용된다.
하나의 VLC 인코딩 기법은 허프만 코딩(Huffman coding)이다. 허프만 코딩은 데이터를 압축하는 매우 효과적인 수단이며, 특히, 허프만 트리에서 각 심볼값 이 어디에 나타나야 할지를 결정하기 위해 소스 자료 내의 값들의 출현을 이용함으로써 압축될 항목(item)이 대응하는 허프만 트리(Huffman tree)를 생성하는 것을 돕도록 사용될 때 효과적이다. 허프만 코딩은 또한 때때로 프리픽스 코드(prefix code)라고 불리는 프리픽스 프리 코드(prefix free code)들을 생성한다; 즉, 허프만 트리에 의해 생성된 어떤 심볼도 허프만 트리에 의해 생성된 임의의 다른 심볼의 프리픽스에 대응하지 않을 것이라는 점에서 이점을 제공한다.
허프만 코딩은 미디어 어플리케이션들 전체에 걸쳐 광범위하게 사용되고, 특히 JPEG 이미지 파일 포맷에서 광범위하게 사용된다. 모든 JPEG는 데이터를 압축하기 위해 허프만 코딩을 사용하고, 그에 상응하여, 모든 JPEG 뷰어는 이미지를 압축해제하기 위해서 허프만 코딩을 처리(process)해야 한다. JPEG 뷰어가 허프만 코딩을 효과적으로 처리할 수 있을수록, 디코딩 처리가 빠르다.
JPEG 표준은 모든 이미지에 대하여 상이한 허프만 테이블(Huffman table)들을 허용한다. 이미지의 모든 값의 출현의 빈도(frequency)가 결정되고, 그러한 빈도들은 그 이미지에 대한 고유한 허프만 테이블들을 생성하는 데 사용된다. 이렇게, 뷰어가 JPEG 이미지를 디코딩하기 위해, 허프만 테이블들을 재구성하는 데 필요한 정보는 파일 헤더의 부분으로서 파일 자체에 포함된다.
이하의 실시예에서, JPEG 이미지 뷰잉 어플리케이션들에서, VLC(variable length coding), 구체적으로, 허프만 코딩(huffman coding)을 효율적으로 처리하기 위한 접근법이 기술된다. 일 실시예에서, JPEG 이미지의 허프만 코드들을 처리하기 위한 방법이 기술되고, 이 방법은 JPEG 비트스트림으로부터 VLC 심볼을 효율적으로 추출하는 단계, 및 VLC 심볼을 그의 대응하는 심볼값과 매칭하는 단계를 포함한다.
JPEG 이미지들에서 허프만 심볼들을 디코딩하는 것에 대한 접근법이 설명된다. 하나의 접근법은 JPEG 이미지 파일에서 허프만 코드들을 디코딩하는 방법을 수반한다. 이 방법은 JPEG 이미지 파일과 관련된 비트스트림(bitstream)으로부터 비트스트림 샘플을 획득하는 것을 수반한다. 비트스트림 샘플은 허프만 그룹 번호(Huffman group number)를 식별하기 위하여 임계값과 비교된다. 허프만 그룹과 관련된 정보가 검색되고, 비트스트림으로부터 현재의 허프만 심볼(current Huffman symbol)을 추출하는 데 사용된다. 그 후, 현재의 허프만 심볼 및 그룹 정보를 이용하여, 대응하는 심볼값이 획득될 수 있다.
JPEG 이미지 파일에서 허프만 코드들을 디코딩하는 시스템이 사용되는 또 다른 접근법이 설명된다. 시스템은 JPEG 이미지 파일 상에서 동작(operation)들을 수행하기 위한 컨트롤러 모듈을 포함한다. 허프만 테이블 생성기는 JPEG 이미지 파일에 포함된 정보로부터 기본 테이블 및 보조 테이블을 생성하기 위해 사용된다. 그 후 비트스트림 버퍼가 JPEG 이미지 파일에 포함된 이미지 데이터로부터의 데이터 발췌(data excerpt)를 저장하기 위해 사용될 수 있고, 현재의 허프만 심볼에 대응하는 허프만 그룹을 식별하기 위해 다수의 임계값 비교기가 사용된다. 컨트롤러 모듈은 허프만 그룹과 관련된 그룹 정보를 획득할 수 있고, 현재의 허프만 심볼에 대응하는 심볼값을 획득하는데 그 그룹 정보를 사용할 수 있다.
또 다른 접근법은 JPEG 이미지 파일에서 허프만 가변 길이 코드들을 디코딩하는 방법을 설명한다. 이 방법은 JPEG 이미지 파일과 연관된 비트스트림으로부터 비트스트림 버퍼로 16 비트를 스캐닝하는 것을 수반한다. 현재의 허프만 심볼에 대응하는 허프만 그룹이 식별되고, 그 허프만 그룹과 연관된 그룹 정보가 기본 테이블로부터 검색된다. 현재의 허프만 심볼에 대한 심볼값이 그룹 정보를 참조하여 보조 테이블로부터 획득된다.
본원에 기술된 여러 실시예들은 JPEG 파일 포맷의 여러 특징들 및 그에 상응하는 허프만 테이블의 이용의 이점을 취한다. 우선, JPEG 이미지에 대해 허여된 최대 길이 허프만 코드는 16비트이다. 둘째, JPEG 이미지에 사용된 모든 허프만 테이블은 16개 허프만 그룹들을 정의하고, 여기서, 그룹은, 예를 들어, 제1 그룹은 1비트 길이의 심볼들로 구성되고, 제2 그룹은 2비트 길이의 심볼들로 구성되는 등, 16비트 길이의 심볼들로 구성되는 제16 그룹까지, 그 그룹 내의 심볼들의 길이에 의해 정의된다. 셋째, 이전에 언급된 바와 같이, 허프만 코드들은 프리픽스 프리 코드(prefix free code)들이다. 넷째, 각각의 허프만 그룹 내의 코드값들은 연속적(consecutive)이다. 이러한 특징들의 활용은 허프만 코딩을 처리하기 위한 효율적인 접근법을 가능하게 한다.
본 명세서에 포함되고 본 명세서의 일부를 이루는 첨부도면들은 본 발명의 실시예들을 도시하며, 발명의 상세한 설명과 함께 본 발명의 원리들을 설명한다.
본 발명의 몇몇 실시예들이 자세하게 참조될 것이다. 본 발명이 대안적인 실시예(들)과 함께 기술될 것이지만, 그들은 본 발명을 이러한 실시예들로 제한하도록 의도되지 않는다는 것이 이해될 것이다. 반대로, 본 발명은 첨부된 청구범위에 의해 정의되는 본 발명의 사상 및 범주 내에 포함될 수 있는 대안, 수정들 및 등가물들을 포괄하도록 의도된다.
게다가, 이하의 상세한 설명에서, 다수의 특정한 세부사항이 본 발명의 철저한 이해를 제공하기 위해 개시된다. 그러나, 본 기술 분야의 통상의 기술자는 실시예들이 이러한 특정한 세부사항들 없이 실시될 수 있거나 또는 그들의 등가물들을 이용하여 실시될 수 있다는 것을 인식할 것이다. 다른 예들에서, 잘 알려진 방법들, 절차들, 컴포넌트들 및 회로들은 본 발명의 태양들 및 특징들을 불필요하게 모호하게 하지 않기 위해서 자세하게 설명되지 않았다.
이하의 상세한 설명의 부분들은 방법에 관하여 제시되고 논의된다. 본 명세서에서 이 방법의 동작들을 설명하는 도면들(예를 들면, 도 5)에 단계들 및 그 순서가 개시되지만, 그러한 단계들 및 순서는 예시적이다. 실시예들은 본 명세서의 도면의 흐름도에 나열된 다양한 다른 단계들 또는 단계들의 변형들을, 본 명세서에서 묘사되고 설명된 순서 이외의 순서로 수행하기에 적합하다.
상세한 설명의 일부 부분은 절차들, 단계들, 논리 블록들, 처리 및 컴퓨터 메모리 상에서 수행될 수 있는 데이터 비트들에 대한 동작들의 다른 상징적인 표현 들에 관해서 제시된다. 이러한 설명들 및 표현들은 데이터 처리 기술 분야의 통상의 기술자가 그들의 연구 내용을 본 기술 분야의 다른 통상의 기술자에게 가장 효과적으로 전달하기 위해 사용하는 수단이다. 절차, 컴퓨터 실행 단계, 논리 블록, 처리 등이 여기서, 그리고 일반적으로, 원하는 결과를 이끌어내는 단계들 또는 명령어들의 일관성있는 순서가 되도록 고안된다. 그러한 단계들은 물리량들의 물리적인 조작들을 필요로 하는 것들이다. 보통, 반드시는 아니지만, 이러한 양들은 컴퓨터 시스템에서 저장되고, 전송되고, 결합되고, 비교되고 아니면 조작될 수 있는 전기적 또는 자기적 신호들의 형태를 취한다. 주로 일반적인 사용상의 이유로, 이러한 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 번호들 등으로 부르는 것이 때때로 편리하다고 증명되었다.
그러나 이러한 용어들 및 유사한 용어들 모두가 적절한 물리량들과 연관되어야 하며, 단지 이러한 양들에 적용되는 편리한 부호들이라는 것을 염두에 두어야 한다. 이하의 논의들로부터 명백하듯이, 달리 특별하게 언급되지 않는다면, 전반에 걸쳐 "액세스", "기입", "포함", "저장", "송신", "트래버스(traversing)", "연관(associating)", "식별" 등과 같은 용어들을 사용하는 논의들은, 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적(전자적) 양들로서 표현된 데이터를, 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 그러한 정보 저장, 송신 및 표시 장치들 내의 물리적 양들로서 유사하게 표현되는 다른 데이터로 조작 및 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 작용 및 프로세스들을 참조하는 것이 이해된다.
통상적으로 컴퓨팅 장치들은 컴퓨터 판독가능 매체(computer readable media)의 적어도 일부의 형태를 포함한다. 컴퓨터 판독가능 매체는 컴퓨팅 장치에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한이 아닌 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터와 같은 정보의 임의의 저장 방법 또는 기술로 구현된 휘발성 및 불휘발성, 착탈식 및 비착탈식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile discs) 또는 다른 광 저장소, 자기 카세트들, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 장치들, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨팅 장치에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 거기에 제한되지는 않는다. 통상적으로 통신 매체는 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터를 반송파 또는 다른 전송 기구(mechanism)와 같은 변조된 데이터 신호들로 구현하고, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호의 정보를 인코딩하는 방식으로 그 특성들 중 하나 이상을 설정 또는 변경한 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크(wired network) 또는 직접-유선 접속(direct-wired connection)과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 위의 것들 중 임의의 조합들 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
하나 이상의 컴퓨터 또는 다른 장치들에 의해 실행되는 프로그램 모듈들과 같은 컴퓨터 실행가능 명령어(computer-executable instruction)들의 일반적인 문맥에서 소정의 실시예가 설명될 수 있다. 일반적으로, 프로그램 모듈들은 특정한 임무들을 수행하거나 특정한 추상 데이터 유형(abstract data type)들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. 통상적으로 프로그램 모듈들의 기능은 다양한 실시예에서 원하는 대로 조합되거나 분배될 수 있다.
본 명세서에서 설명된 실시예들이 컴퓨터 시스템의 개별적인 컴포넌트로들서 CPU 및 GPU를 참조할 수 있지만, 본 기술분야의 통상의 기술자들은 CPU와 GPU가 단일 장치로 통합될 수 있으며, CPU와 GPU는 명령어 로직, 버퍼들, 기능 유닛들 등과 같은 다양한 자원을 공유할 수 있거나; 그래픽 및 범용 연산들을 위해 개별적인 자원들이 제공될 수 있음을 인식할 것이다. 따라서, 본 명세서에서 GPU와 관련된 것으로서 설명된 회로들 및/또는 기능 중 임의의 것 또는 전부는 적합하게 구성된 CPU에 의해 구현되고 수행될 수도 있다.
또한, 본 명세서에서 설명된 실시예들이 GPU를 참조할 수 있지만, 본 명세서에서 설명된 회로들 및/또는 기능은 범용 또는 다른 특수 코프로세서들과 같은 다른 유형들의 프로세서로, 또는 CPU 내에서 구현될 수도 있다는 것이 이해되어야 한다.
기본 컴퓨팅 시스템
이제 도 1을 참조하면, 예시적인 컴퓨터 시스템(112)의 블록도가 도시된다. 본 명세서에서 설명된 컴퓨터 시스템(112)은 실시예들이 유리하게 구현될 수 있는 운영 플랫폼(operational platform)의 예시적인 구성을 설명한다는 것이 이해된다. 그럼에도 불구하고, 구성들을 달리하는 다른 컴퓨터 시스템들이 본 발명의 범위 내에서 컴퓨터 시스템(112) 대신 사용될 수도 있다. 즉, 컴퓨터 시스템(112)는 도 1과 함께 설명된 요소들 외의 요소들을 포함할 수 있다. 더욱이, 단지 컴퓨터 시스템(112)과 유사한 컴퓨터 시스템들뿐만 아니라, 실시예들을 가능하게 하도록 구성될 수 있는 임의의 시스템 상에서 실시예들이 실시될 수 있다. 실시예들이 다수의 상이한 유형의 컴퓨터 시스템(112) 상에서 실시될 수 있다는 것이 이해된다. 시스템(112)은 예를 들면, 전용 그래픽 렌더링 GPU와 연결된 강력한 범용 CPU를 갖는 데스크탑 컴퓨터 시스템 또는 서버 컴퓨터 시스템으로서 구현될 수 있다. 그러한 실시예에서는, 주변 장치 버스(peripheral bus)들, 특수 오디오/비디오 컴포넌트들, IO 장치들 등을 추가하는 컴포넌트들이 그러한 실시예에 포함될 수 있다.
유사하게, 시스템(112)은, 핸드헬드 장치(예를 들면, 휴대폰(cellphone) 등) 또는 예를 들면, 워싱턴주, 레드몬드의 마이크로소프트사로부터 입수가능한 Xbox®, 또는 일본 도쿄의 소니 컴퓨터 엔터테인먼트사(Sony Computer Entertainment Corporation)로부터 입수가능한 플레이스테이션3®와 같은 셋톱 비디오 게임 콘솔 장치로서 구현될 수 있다. 시스템(112)은, 컴퓨팅 장치의 전자기기(electronics)(예를 들면, 컴포넌트들(101, 103, 105, 106 등)가 모두 단일 집적 회로 다이 내에 포함되는 "시스템 온 칩(system on a chip)"으로서 구현될 수도 있다. 예들은 디스플레이를 갖춘 핸드헬드 도구, 차량 네비게이션 시스템(car navigation system), 휴대용 오락 시스템 등을 포함한다.
컴퓨터 시스템(112)은 정보를 전달하기 위한 어드레스/데이터 버스(100), 정보 및 명령어들을 처리하기 위해 버스(100)와 연결된 중앙 프로세서(101); 중앙 프로세서(101)를 위한 정보 및 명령어들을 저장하기 위해 버스(100)와 연결된 휘발성 메모리 유닛(102)(예를 들면, RAM(random access memory), 정적 RAM, 동적 RAM 등); 및 프로세서(101)를 위한 정적 정보 및 명령어들을 저장하기 위해 버스(100)와 연결된 불휘발성 메모리 유닛(103)(예를 들면, ROM(read only memory), 프로그램가능 ROM, 플래시 메모리 등)를 포함한다. 더욱이, 컴퓨터 시스템(112)은 정보 및 명령어들을 저장하기 위한 데이터 저장 장치(104)(예를 들면, 하드 디스크 드라이브)도 포함한다.
컴퓨터 시스템(112)은 선택적인 그래픽 서브시스템(105), 선택적인 문자-숫자 입력 장치(106), 선택적인 커서 제어 또는 지시 장치(107), 및 신호 통신 인터페이스(입출력 장치)(108)도 포함한다. 선택적인 문자-숫자 입력 장치(106)는 정보 및 명령 선택들을 중앙 프로세서(101)에 전달할 수 있다. 선택적인 커서 제어 또는 지시 장치(107)는 사용자 입력 정보 및 명령 선택들을 중앙 프로세서(101)에 전달하기 위해 버스(100)에 연결된다. 버스(100)에도 연결된 신호 통신 인터페이스(입출력 장치)(108)는 직렬 포트일 수 있다. 통신 인터페이스(108)는 무선 통신 기구들을 포함할 수도 있다. 통신 인터페이스(108)를 이용하여, 컴퓨터 시스템(112)은 인터넷 또는 인트라넷(예를 들어, LAN(local area network))과 같은 통신 네트워크를 통해 다른 컴퓨터 시스템들에 통신적으로 연결될 수 있거나, 또는 데이터(예를 들어, 디지털 텔레비전 신호)를 수신할 수 있다. 컴퓨터 시스템(112)은, 예를 들어, 비디오 케이블(111)에 의해 접속된, 부착된 표시 장치(110) 상에 정보를 표시함으로써, 컴퓨터 사용자에게 정보를 제시하기 위한 그래픽 서브시스템(105)을 포함할 수도 있다. 일부 실시예들에서, 그래픽 서브시스템(105)은 중앙 프로세서(101)에 포함된다. 다른 실시예들에서, 그래픽 서브시스템(105)은 분리되고, 개별적인 컴포넌트이다. 다른 실시예들에서, 그래픽 서브시스템(105)은 다른 컴포넌트에 포함된다. 다른 실시예들에서, 그래픽 서브시스템(105)은 다른 방법들로 시스템(112)에 포함된다.
JPEG 어플리케이션들에서의 효율적인 VLC 처리
이하의 실시예에서, JPEG 이미지 뷰잉 어플리케이션들에서, VLC(variable length coding), 구체적으로, 허프만 코딩(huffman coding)을 효율적으로 처리하기 위한 접근법이 기술된다. 일 실시예에서, JPEG 이미지의 허프만 코드들을 처리하기 위한 방법이 기술되고, 이 방법은 JPEG 비트스트림으로부터 VLC 심볼을 효율적으로 추출하는 단계, 및 VLC 심볼을 그의 대응하는 심볼값과 매칭하는 단계를 포함한다.
본원에 기술된 여러 실시예들은 JPEG 파일 포맷의 여러 특징들 및 그에 상응하는 허프만 테이블의 이용의 이점을 취한다. 우선, JPEG 이미지에 대해 허여된 최대 길이 허프만 코드는 16비트이다. 둘째, JPEG 이미지에 사용된 모든 허프만 테이블은 16개 허프만 그룹들을 정의하고, 여기서, 그룹은, 예를 들어, 제1 그룹은 1비트 길이의 심볼들로 구성되고, 제2 그룹은 2비트 길이의 심볼들로 구성되는 등, 16비트 길이의 심볼들로 구성되는 제16 그룹까지, 그 그룹 내의 심볼들의 길이에 의해 정의된다. 셋째, 이전에 언급된 바와 같이, 허프만 코드들은 프리픽스 프리 코드(prefix free code)들이다. 넷째, 각각의 허프만 그룹 내의 코드값들은 연속적(consecutive)이다. 이러한 특징들의 활용은 허프만 코딩을 처리하기 위한 효율적인 접근법을 가능하게 한다.
예시적인 허프만 코드들
JPEG 표준은 모든 이미지가 그 자신의 고유하게 계산된(uniquely calculated) 허프만 테이블들을 갖도록 하지만, JPEG 위원회(committee)에 의해 여러 "전형적인(typical)" 테이블들이 제공된다. 하나의 그러한 전형적인 테이블은 표 1로서, 아래 도시된 어레이들에 의해 특정된 DC luminance 테이블이다.
Figure 112008065469068-pat00001
제1 어레이인 dc_luminance_bits[]는, JPEG에 의해 사용된 16개의 허프만 그룹들 각각에 얼마나 많은 심볼들이 존재하는지를 나타냄으로써, 허프만 코드들이 대응하는 테이블에 할당되는 방법을 특정한다. 이러한 테이블에서, 2비트와 9비트 사이의 길이의 심볼들에 대응하는 그룹들 2 내지 9만이 엔트리들을 갖는다. 3비트 길이의 심볼들로 구성된 그룹 3은 5개의 심볼들을 갖고; 나머지는 각각 1개의 심볼들을 갖는다. 그룹 1 및 10-16은 각각, 엔트리들을 갖지 않는 것으로서 정의된다.
제2 어레이인 dc_luminance_val[]는, 그들이 할당되는 순서대로, 심볼들과 연관되는 값들을 제공한다. 이러한 테이블에서, 0은 제1 심볼, 1은 제2 심볼, 등과 연관된다.
도 2를 참조하면, 예시적인 허프만 테이블(200)이 제공된다. 도시된 바와 같이 허프만 테이블(200)은 테이블 1에 의해 정의된 DC luminance 테이블에 대응한다. 좌측 컬럼은 dc_luminance_bits[] 어레이에 의해 특정된 허프만 심볼들인 심볼들(201, 203, 205, 207, 209, 213, 215, 217, 219, 221 및 223)로 구성된다. 우측 컬럼은 dc_luminance_val[] 어레이에 의해 심볼들과 연관된 값들인 심볼값들(202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222 및 224)로 구성된다. 이전에 언급된 바와 같이, 허프만 코드들은 프리픽스 프리 코드들이고; 도 2에 도시된 바와 같이, 좌로 자리맞춤되어(left justified) 도시될 때, 어떠한 심볼도 다른 심볼의 프리픽스와 동일하지 않고; 예를 들어, 심볼(201)이 00이면, 어떠한 다른 심볼도 00으로 시작하지 않는다는 것을 쉽게 알 수 있다.
JPEG 파일 포맷
이제 도 3을 참조하면, 일 실시예에 따른, JPEG 이미지 파일(300)에 대한 그림이 도시된다. 도시된 바와 같이, JPEG 이미지 파일(300)은 2개의 섹션들; 헤더(310) 및 이미지 데이터(320)로 구성된다. 헤더(310)는 JPEG 이미지 파일(300)에 포함된 이미지를 디코딩하는데 필수적인 정보를 포함하는 한편, 이미지 데이터(320)는 실제 압축된 이미지 데이터를 포함한다. 예를 들어, 헤더(310)는, JPEG 이미지 파일인 JPEG 이미지 파일(300)을 식별하는 초기 시퀀스뿐만 아니라, 표 1에 나타낸 어레이들과 같은, JPEG 이미지 파일(300)에 대한 허프만 데이블 정보를 포함하는 섹션을 포함할 수 있다.
도시된 바와 같이, 이미지 데이터(320)는 압축된 심볼 데이터의 비트스트림으로 구성된다. 이러한 비트스트림 데이터의 예시적인 발췌(excerpt)는 비트스트림 발췌(325)로서 도시된다. 도시된 실시예에서, 비트스트림 발췌(325)는 함께 배열된(strung) 다수의 VLC 심볼들, 예를 들어, 심볼들(331, 333 및 335)로 구성된다. 심볼들은 길이가 가변이기 때문에, JPEG 뷰어는, 길이에 관계없이 각각의 완전한(complete) 심볼을 인식(recognize)할 필요가 있다.
종래의 접근법들
JPEG 이미지 파일들에서 허프만 코드들을 처리하는 것에 대한 일반적인 종래 기술 접근법은 비트스트림으로부터 다수의(several) 비트들, 종종 3개를 판독(reading)하고, 그러한 비트들을 메모리에 저장된 테이블과 비교하는 것을 포함한다. 그러한 비트들이 완전한 심볼로 구성된다면, 테이블은 그렇게 나타내고 심볼들과 연관된 값들을 제공할 것이다. 그러한 비트들이 완전한 심볼이 아니라면, 테이블은 마찬가지로 그렇게 나타내고 다른 테이블에 대한 참조(reference)를 포함할 것이다. 제2 테이블을 참조하여, 동일한 잠재 결과들을 갖는 추가의 비트들이 비트스트림으로부터 판독될 것이다. 이러한 반복된 루프 사이클은, 처리 시간, 반복된 메모리 액세스들 및 가장 사소한 경우들을 제외한 다수의 테이블들을 저장하는 메모리의 사용의 관점에서 비효율적이다.
기본 테이블 및 보조 테이블
다음의 실시예들은 JPEG 이미지들에 대한 보다 효율적인 허프만 디코딩의 접근법을 설명한다. 이러한 접근법의 하나의 특징은, 메모리 테이블들의 사용을 제한함에 의한, 메모리의 보다 효율적인 활용이다. 가장 사소한 경우들을 제외하고, 기본 및 보조 테이블들의 사용은 메모리 사용의 관점에서 실질적인 향상을 나타낸다.
도 4를 참조하면, 일 실시예에 따른 기본 테이블(400)이 도시된다. 기본 테이블(400)은 표 1에서 상기 도시된 DC luminance "전형적인" 테이블 정보에서 비롯된다. 기본 테이블(400)은 JPEG 표준에 의해 정의된 16개의 허프만 그룹들에 대응하는, 16개 그룹들로 분리된다. 각각의 그룹은 3가지 종류의 정보: 특정 그룹에서의 비트들의 엔트리들의 길이에 대응하는 n비트들; 도시된 실시예에서 해당 그룹에서의 엔트리의 최저값에 대응하는 임계값(theshold); 및 해당 그룹에서의 엔트리들에 대한 심볼값들이 저장되는 보조 테이블에서의 위치에 대한 메모리 포인터(pointer)인 오프셋을 포함한다. 상술된 바와 같이, 단지 그룹들 2 내지 9만이 DC luminance 전형적인 테이블에서 엔트리들을 갖는다.
기본 테이블(400)에 도시된 임계값들은, 그들을 16비트 길이까지 늘리기 위해, 0들로 "메워"(padded)진다. 일부 실시예들에서, 보다 상세히 아래 기술된 바와 같이, 임계값들은, 예를 들어, 가장 긴 가능한 허프만 코드만큼 동일하게 긴 것이 바람직하다.
도 5를 참조하면, 일 실시예에 따라, 보조 테이블(500)이 도시된다. 도시된 실시예에서, 보조 테이블(500)은 표 1에서 상기 도시된 DC luminance "전형적인" 테이블 정보에서 유래된다. 보조 테이블(500)은 JPEG 비트스트림으로 인코딩된 허프만 심볼들에 대응하는 심볼값들의 리스트이다. 일부 실시예들에서, 이러한 값들은, 임의의 특정 엔트리가 검색될 수 있도록, 오프셋값과 인덱스의 조합으로 메모리에 순차적으로 저장된다. 예를 들어, 보조 테이블(500)이 메모리 어드레스 <table 2 address>에서 시작한다면, 나타낸 바와 같이, 오프셋으로서 <table 2 address> 및 인덱스로서 <2*value_length>(여기서, value_length는 보조 테이블에서의 엔트리의 바이트들의 길이에 대응함)를 사용하여 보조 테이블(500)에 저장된 제3 심볼값을 검색할 것이다.
JPEG 이미지들에 대한 허프만 값들의 디코딩
도 6을 참조하면, 일 실시예에 따라, JPEG 이미지 파일들에서의 허프만 코드들을 디코딩하는 방법에 대한 흐름도(600)가 도시된다. 특정 단계들이 흐름도(600)에 기재되었지만, 그러한 단계들은 예시적이다. 즉, 본 발명의 실시예들은 흐름도(600)에 언급된 단계들의 변경들 또는 다양한 다른 (추가적인) 단계들을 수행하기에 매우 적합하다. 흐름도(600)의 단계들은 제시된 것과 순서가 상이하게 수행될 수 있고, 흐름도(600)의 단계들 모두가 수행되지 않을 수 있다는 것이 이해된다.
도시된 바와 같이, 단계(610)는 비트스트림으로부터 16비트 스캐닝하는 단계를 포함한다. 이러한 실시예에서, VLC 코드의 최대 가능한 길이는 16비트이다. 따라서, 이러한 단일 스캔 동작이 비트스트림으로부터 완전한 심볼을 검색하는 것은 확실하다. 일부 실시예에서, 이러한 비트들은 비트스트림 버퍼에 위치된다.
도시된 실시예에서, 단계(620)는 비트스트림 버퍼에서 제1 심볼들에 대한 적절한 허프만 그룹을 결정하는 단계를 포함한다. 이전에 설명된 바와 같이, 허프만 코드들은 프리픽스 프리 코드들이다. 그와 같이, 특정 허프만 심볼이 속한 그룹을 식별하는 단계는 또한 심볼의 길이가 몇 비트인지를 나타낼 것이다. 하나의 접근법에서, 비트스트림 버퍼는 16개의 상이한 임계값들에 대하여 비교되고, 임계값들 각각은 JPEG 인코딩에 사용된 16개의 가능한 허프만 그룹들 중 하나와 연관된다. 이러한 비교는 동시에 그리고 매우 빨리 발생할 수 있어, 적절한 그룹을 결정하고, 그후 심볼 자체를 간단하게 할 수 있다.
단계(630)를 참조하면, 기본 테이블이 액세스되고, 심볼 정보가 검색된다. 일부 실시예들에서, 허프만 심볼들을 디코딩하는데 2개의 테이블이 이용된다. 제1 테이블, 즉 기본 테이블은 JPEG 인코딩에 사용된 16개의 허프만 그룹들에 대한 정보를 포함한다. 하나의 그러한 실시예에서, 이러한 16개의 그룹들 각각에 대해 "기본 트리플렛(triplet)"이 사용된다. 트리플렛은 해당 그룹에서의 엔트리들의 길이, 예를 들어, 비트들의 수; 단계(620)에서 수행되는 비교를 위해 사용될 수 있는, 해당 그룹에 대한 임계값; 및 해당 그룹에 대한 엔트리들이 시작할 수 있는 보조 메모리 테이블의 일부를 지적하는 메모리 오프셋을 포함한다. 제2 테이블은 비트스트림에서 인코딩된 다양한 허프만 심볼들에 대한 심볼값들을 포함한다.
이제 단계(640)를 참조하면, 대응하는 심볼값이 검색된다. 일부 실시예들에서, 기본 테이블은 보조 테이블을 액세스하기 위해 적절한 오프셋 정보를 제공한다. 그 후, 심볼 자체는, 오프셋과 조합하여, 보조 테이블에서 그것의 위치로부터 특정 심볼값을 검색하도록 하는 인덱스를 제공하는데 사용될 수 있다.
도 7을 참조하면, 일 실시예에 따른, VLC(variable length code) 심볼을 디코딩하는 방법에 대한 흐름도(700)가 도시된다. 특정 단계들이 흐름도(700)에 개시되지만, 그러한 단계들은 예시적이다. 즉, 본 발명의 실시예들은 흐름도(700)에 언급된 단계들의 변경들 또는 다양한 다른 (추가적인) 단계들을 수행하기에 매우 적합하다. 흐름도(700)의 단계들은 제시된 것과 순서가 상이하게 수행될 수 있고, 흐름도(700)의 단계들이 전혀 수행되지 않을 수 있다는 것이 이해된다.
단계(710)를 참조하면, 인코딩 동안 사용된 VLC 그룹들에 대한 임계값 정보가 검색된다. 일부 실시예들에서, 이러한 임계값 정보는, 도 4를 참조하여 상기 설명된 바와 같은, 기본 테이블로부터 획득된다. 일부 실시예들에서, 주어진 그룹에 대한 임계값 정보는 해당 그룹에서의 엔트리의 최저값으로 구성된다. 또한, 일부 실시예들에서, 특정 그룹에 대한 임계값은, 모든 임계값들이 동일한 길이를 갖도록, "채워지거나" 또는 "메워질" 수 있다.
단계(720)를 참조하면, 비트스트림이 액세스되고, 다수의 비트들은 비트스트림으로부터 획득된다. JPEG 비트스트림들에 대해, 최대 가능한 VLC 심볼 길이는 16비트이고; 따라서, 단계(720) 동안, 16비트가 비트스트림으로부터 획득되어 비트스트림 버퍼에 저장된다. 상이한 실시예들에서, 비트들을 획득하기 위한 상이한 접근법들이 이용된다. 예를 들어, 일 실시예에서, 비트스트림은 이러한 16비트들을 획득하기 위해 초기에 스캔되고, 한편 다른 실시예에서, 비트들은 비트스트림으로부터 판독될 수 있다.
단계(730)를 참조하면, 비트스트림 버퍼는, 현재의 심볼이 속하는 VLC 그룹이 어떤것인지 결정하기 위해 임계값 정보와 비교된다. 상이한 실시예들에서, 이러한 단계는 상이한 방법들로 수행된다. 일 실시예에서, 예를 들어, 비트스트림 버퍼에 저장된 값은 각각의 그룹에 대한 임계값과 비교된다; 비트스트림 버퍼가 특정 그룹에 대한 임계값보다 크다면, 비교는 "참"을 반환한다. 참 결과들의 번호를 증가시켜, 현재 심볼에 대한 그룹 번호를 제공할 것이다. 일부 실시예들에서, 제1 VLC 그룹에 대한 임계값은 비트스트림 버퍼와 비교될 필요는 없다; 그러한 실시예에서, 비트스트림 버퍼의 모든 가능한 값은 제1 VLC 그룹에 대한 임계값과 동등하거나 또는 임계값보다 더 클 것이다.
단계(740)를 참조하면, 그룹 정보를 검색하기 위해 그룹 번호가 사용된다. 일부 실시예들에서, 그룹 번호는 기본 테이블에 대한 인덱스의 역할을 한다. 차례로, 기본 테이블은, 특정 그룹에서 심볼 길이가 될 비트수, 그 특정 그룹의 가장 작은 엔트리에 대응하는 임계값, 및 그 그룹의 엔트리들에 대한 심볼 값들이 저장되는 보조 테이블에서의 위치에 대한 메모리 오프셋에 대한 정보를 포함한다.
단계(750)를 참조하면, 현재 심볼은 비트스트림으로부터 추출된다. 일부 실시예들에서, 이러한 단계는 비트스트림으로부터 기본 테이블에 의해 지시된 비트들의 수를 판독함으로써 수행된다. 다른 실시예들에서, 예를 들어, 단계(720)가 "스캔" 동작 대신 "판독" 동작을 포함하는 경우, 이러한 단계는 비트스트림 버퍼로부터 기본 테이블에 의해 지시된 다수의 비트들을 판독함으로써 수행된다.
단계(760)를 참조하면, 현재 심볼에 대응하는 심볼값이 획득된다. 일부 실시예들에서, 심볼값들은 보조 테이블에 저장된다. 하나의 그러한 실시예에서, 보조 테이블에 대한 인덱스는 현재 심볼, 그들의 그룹에 대한 임계값 및 그룹에 대한 오프셋 값을 사용함으로써 계산된다. 그러한 계산의 예가 아래 표 2에 도시된다.
Figure 112008065469068-pat00002
예시적인 VLC 디코딩
도 8a 내지 8d를 참조하면, 일 실시예에 따른, 예시적인 VLC 디코딩 프로세스가 도시된다. 도 8a 내지 8d는 흐름도(700)의 방법에 따른, 비트스트림(825)에 대한 동작들을 도시한다.
도 8a에 도시된 바와 같이, 비트스트림(825)은 함께 배열된 다수의 다양한 길이의 심볼로 구성된다. 비트스트림(825)의 처음 16비트가 버퍼(845)로 스캔된다. 도시된 실시예에서, 스캔 동작이 사용되었기 때문에, 비트스트림 메모리 포인터(827)는 움직이지 않는다. 다른 실시예에서, 예를 들어, 판독 동작이 사용되는 경우, 비트스트림 메모리 포인터(827)는 비트스트림의 액세스된 부분의 끝까지 움직일 수 있다.
그 후 버퍼(845)의 내용은 다수의 임계값, 즉 기본 테이블(400)에 도시된 임계값들: 임계값(432 내지 439)과 비교된다. 버퍼(845)가 임계값보다 크거나 값은 모든 비교는 1(참)로 리턴한다. 전술된 바와 같이, 도시된 실시예에서는, 그룹 1에 대한 임계값에 대하여 버퍼를 비교할 필요가 없고, 본 실시예에서는, 버퍼(845)의 모든 가능한 값이 그룹 1에 대한 임계값보다 크므로 이러한 비교는 자동적으로 1로 간주되는 것을 주의해야 한다.
이러한 참인 결과들의 합은 현재 심볼에 대한 VLC 그룹을 지시한다. 도 8a에 도시된 실시예에서는, 버퍼(845)는 임계값(432, 433)보다 크지만 임계값(434)보다 작고, 이에 따라 현재 심볼은 VLC 그룹 3 내에 있다.
VLC 그룹은 기본 테이블, 즉 기본 테이블(400)의 어드레스를 지정하고, 적절한 기본 트리플렛을 검색하는데 이용되며, 도시된 실시예에서는, 기본 트리플렛은 n비트 값(423), 임계값(433) 및 오프셋(443)으로 이루어진다.
도 8b에 도시된 바와 같이, 현재 심볼은 비트스트림(825)으로부터 판독되어 심볼 레지스터(855)에 저장된다. 기본 트리플렛, 특별히 n비트 값(423)은 현재 심볼인 심볼(831)이 3비트 길이였다는 것을 지시하였다. 따라서, 비트스트림(825)의 처음 3개의 비트는 메모리로 판독된다. 도시된 실시예는 판독 동작을 포함하기 때문에, 비트스트림 포인터(827)는 판독 동작의 말단에 있는 위치로 진행한다. 다른 실시예에서, 심볼(831)은 비트스트림(825)보다는 버퍼(845)로부터 검색될 수 있다. 하나의 이러한 실시예에서는, 플러시(flush) 동작을 이용하여 비트스트림 포인터(827)를 이동시킨다.
심볼(831)은 임계값(433) 및 오프셋(443)과 조합하여, 보조 테이블(500)의 어드레스 지정에 이용된다. 오프셋(443)은 그룹 3의 엔트리들에 대한 보조 테이블(500) 내의 시작 위치를 지시하며, 심볼(831)은 임계값(433)과 조합하여 인덱스값을 제공한다. 도시된 실시예에서, 심볼(831)은 그룹 3 내의 제1 엔트리에 대응하고, 그 심볼값은 메모리 위치 <T2addr+1>에 저장된다. 심볼(831)에 대한 심볼값은 1이다.
도 8c에 도시된 바와 같이, 비트스트림(825) 내의 다음 VLC 심볼인 심볼(833)을 디코딩할 경우, 유사한 프로세스가 이어진다: 비트스트림(825)의 처음 16 비트는 버퍼(845)로 판독되고 기본 테이블(400)에 도시된 바와 같이 임계값들에 대하여 비교된다. 이러한 비교는 현재 심볼이 그룹 6의 멤버이고 길이가 6 비트라인 것을 지시한다. 그후 처음 6 비트는 도 8d에 도시된 바와 같이 심볼 레지스터(855)로 판독되고 비트스트림 포인터(827)는 심볼(833)의 말단으로 진행한다. 그룹 6과 관련된 기본 트리플렛, 즉 n비트 값(426), 임계값(436) 및 오프셋(446)을 이용하여 보조 테이블(500)에 대한 인덱스가 계산되고 대응하는 심볼값인 8이 검색된다.
JPEG 디코딩을 위한 시스템
이제 도 9를 참조하여, 일 실시예에 따른 JPEG 디코딩을 위한 시스템(900)이 도시된다. 시스템(900)은 특정의 열거된 특징들 및 요소들을 포함하는 것으로 도시되지만, 다른 실시예들은 추가적이거나, 적거나 상이한 특징들, 요소들 또는 구성들을 포함하는 응용들에 적합하다는 것을 이해해야 한다. 또한, 시스템(900)은 예를 들어 전용의 전자 컴포넌트들의 이용을 통해서 하드웨어로, 또는 예를 들어 프로그램 모듈들의 집합인 소프트웨어를 통해서, 또는 이들의 조합으로서 구현될 수 있음을 이해해야 한다.
시스템(900)은 저장 요소(910)를 포함하는 것으로 도시되어 있다. 저장 요소(910)는 상이한 실시예들에서 상이한 형태를 취할 수 있다. 예를 들어, 일 실시예에서, 저장 요소(910)는 자기 하드 드스크 드라이브이다. 도시된 실시예에서, 저장 요소(910)는 JPEG 파일(915)을 저장하는 것으로 도시되어 있다. JPEG 파일(915)은, 도시된 바와 같이 헤더(916) 및 비트스트림(918) 모두를 포함한다.
시스템(900)은 또한 메모리(920)를 포함하는 것으로 도시된다. 상이한 실시예들에서, 메모리(920)는 상이한 형태들을 취할 수 있다. 도시된 실시예에서, 메모리(920)를 사용하여 기본 테이블(922) 및 보조 테이블(924)을 저장한다.
시스템(900)은 또한 JPEG 디코딩 엔진(950)을 포함하는 것으로 도시되어 있다. 도시된 실시예에서, JPEG 디코딩 엔진(950)은 JPEG 컨트롤러 모듈(951), 허프만 테이블 생성기(952), 비트스트림 버퍼(954), 복수의 임계값 비교기(956), 심볼 버퍼(958) 및 심볼값 버퍼(959)를 포함한다.
도시된 실시예에 따르면, 시스템(900)의 동작은 JPEG 파일(915)을 JPEG 디코딩 엔진(950)에 전달하는 것을 포함하는데, 여기서 JPEG 컨트롤러 모듈(951)에 의해 JPEG 파일(915)이 수신된다. 헤더(916)는 허프만 테이블 생성기(952)로 전달되며, 허프만 테이블 생성기(952)는 헤더(916)에 포함된 정보, 예를 들어 JPEG 파일(915)의 일부로서 인코딩된 허프만 테이블 정보를 이용하여 기본 테이블(922) 및 보조 테이블(924)을 생성한다. JPEG 컨트롤러 모듈(951)은 기본 테이블(922)에 액세스하여 본원에 기재된 각 허프만 그룹에 대한 임계값 정보를 획득한다. 이러한 임계값 정보는 복수의 임계값 비교기(956)로 로딩된다.
비트스트림(918)의 일부, 예를 들어 처음 16비트가 비트스트림 버퍼(954)로 로딩된다. 그후 비트스트림 버퍼(954)의 내용이 각 임계값 비교기(956)로 비교되고, 이들 비교 결과들이 현재 심볼의 허프만 그룹을 식별할 것이다. 적절한 허프만 그룹이 결정되면, 기본 테이블(922)로부터 그룹 정보가 획득될 수 있다. 이러한 그룹 정보는, 다시 비트스트림(918)로부터 현재 심볼을 추출할 수 있게 하고, 그 심볼은 심볼 버퍼(958)에 저장된다.
그룹 정보와 심볼의 조합을 이용하여 보조 테이블(924)을 액세스하고 현재 심볼에 대한 심볼값을 추출한 후 심볼값을 심볼값 버퍼(959)에 저장할 수 있다.
이와 같이 본 발명의 실시예들을 설명하였다. 본 발명은 특정 실시예들로 설명되었지만, 본 발명은 그러한 실시예들에 의해 제한적으로 해석되어서는 안되고 이하의 청구범위에 따라 해석되어야 함을 이해해야 한다.
도 1은 본 발명의 실시예들이 구현될 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
도 2는 일 실시예에 따른 예시적인 허프만 테이블을 도시한다.
도 3은 일 실시예에 따른 JPEG 이미지 파일을 도시한다.
도 4는 일 실시예에 따른 기본 테이블을 도시한다.
도 5는 일 실시예에 따른 보조 테이블을 도시한다.
도 6은 일 실시예에 따른 JPEG 이미지 파일에서 허프만 코드들을 디코딩하는 방법의 흐름도이다.
도 7은 일 실시예에 따른 VLC(variable length code) 심볼을 디코딩하는 방법의 흐름도이다.
도 8a, 8b, 8c 및 8d는 일 실시예에 따른 비트스트림 상에서의 예시적인 VLC 디코딩 처리를 도시한다.
도 9는 일 실시예에 따른 JPEG 디코딩을 위한 시스템의 블록도이다.
<도면의 주요 부분에 대한 부호의 설명>
951: JPEG 컨트롤러
952: 테이블 생성기
954: 비트스트림 버퍼
958: 심볼 버퍼
959: 심볼값 버퍼

Claims (20)

  1. JPEG(Joint Photographic Expert Group) 이미지 파일에서 허프만 코드들을 디코딩하는 방법으로서,
    상기 JPEG 이미지 파일과 연관된 비트스트림으로부터 비트스트림 샘플을 얻는 단계;
    임계값을 액세스하는 단계;
    상기 비스트스림 샘플을 상기 임계값에 대하여 비교하여 허프만 그룹 번호를 얻는 단계;
    상기 허프만 그룹 번호를 이용하여, 허프만 그룹과 연관된 정보를 검색하는 단계;
    상기 허프만 그룹 정보를 이용하여, 상기 비트스트림으로부터 현재 허프만 심볼을 추출하는 단계; 및
    상기 현재 허프만 심볼 및 상기 허프만 그룹 정보를 이용하여 심볼값을 얻는 단계
    를 포함하는 디코딩 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 허프만 그룹 정보는,
    상기 허프만 그룹의 엔트리들의 비트들의 길이를 나타내는 비트 길이 정보; 및
    메모리 내의 위치로부터 상기 심볼값을 얻는데 이용하기 위한 메모리 오프셋
    을 포함하며,
    상기 임계값은 상기 허프만 그룹에서 최소 허프만 심볼을 식별하는 것인 디코딩 방법.
  4. 제3항에 있어서,
    상기 임계값은 상기 비트스트림으로부터의 상기 비트스트림 샘플과 길이가 같게 하기 위하여 제로들로 채워지는 디코딩 방법.
  5. 제3항에 있어서,
    상기 비트스트림 샘플을 얻는 단계는,
    상기 비트스트림에 스캔 동작을 수행하여 상기 비트스트림 샘플을 얻는 단계; 및
    상기 비트스트림 샘플을 메모리 버퍼로 로딩하는 단계
    를 포함하는 디코딩 방법.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. JPEG 이미지 파일에서 허프만 코드들을 디코딩하는 시스템으로서,
    상기 JPEG 이미지 파일에 대해 연산들을 수행하는 컨트롤러 모듈;
    상기 컨트롤러 모듈에 연결되어 상기 JPEG 이미지 파일에 포함된 허프만 테이블 정보로부터 기본 테이블 및 보조 테이블을 생성하는 허프만 테이블 생성기;
    상기 컨트롤러 모듈에 연결되어, 상기 JPEG 이미지 파일에 포함된 이미지 데이터로부터 데이터 발췌(data excerpt)를 저장하는 비트스트림 버퍼; 및
    상기 컨트롤러 모듈에 연결되어 현재 허프만 심볼에 대응하는 허프만 그룹을 식별하는 복수의 임계값 비교기
    를 포함하고,
    상기 기본 테이블은 복수의 허프만 그룹에 대응하는 복수의 허프만 그룹 정보를 포함하며,
    상기 컨트롤러 모듈은 상기 기본 테이블로부터 상기 허프만 그룹과 연관된 그룹 정보를 얻고 상기 그룹 정보를 이용하여 상기 현재 허프만 심볼에 대응하는 심볼값을 얻는 디코딩 시스템.
  12. 삭제
  13. 제11항에 있어서,
    상기 복수의 허프만 그룹은 16개의 허프만 그룹을 포함하는 디코딩 시스템.
  14. 제11항에 있어서,
    상기 복수의 허프만 그룹 정보의 각각은,
    상기 대응하는 허프만 그룹 내의 각 엔트리에 대한 비트 길이 정보;
    상기 대응하는 허프만 그룹 내의 최하위 심볼에 대응하는 임계값; 및
    상기 보조 테이블 내의 위치에 대응하는 오프셋
    을 포함하는 디코딩 시스템.
  15. 제14항에 있어서,
    상기 복수의 임계값은 상기 복수의 임계값 비교기로 로딩되어 상기 비트스트림 버퍼 내에 저장된 상기 데이터 발췌에 대하여 비교되는 디코딩 시스템.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020080091154A 2007-09-17 2008-09-17 Jpeg 어플리케이션의 가변 길이 코드 디코딩 KR100968675B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/901,605 US8849051B2 (en) 2007-09-17 2007-09-17 Decoding variable length codes in JPEG applications
US11/901,605 2007-09-17

Publications (2)

Publication Number Publication Date
KR20090029173A KR20090029173A (ko) 2009-03-20
KR100968675B1 true KR100968675B1 (ko) 2010-07-06

Family

ID=40454525

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080091154A KR100968675B1 (ko) 2007-09-17 2008-09-17 Jpeg 어플리케이션의 가변 길이 코드 디코딩

Country Status (5)

Country Link
US (1) US8849051B2 (ko)
JP (1) JP4693072B2 (ko)
KR (1) KR100968675B1 (ko)
CN (1) CN101394564A (ko)
TW (1) TWI380603B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9307267B2 (en) 2008-12-11 2016-04-05 Nvidia Corporation Techniques for scalable dynamic data encoding and decoding
CN102545910B (zh) * 2010-12-30 2015-10-28 无锡华润矽科微电子有限公司 一种jpeg霍夫曼解码电路及其解码方法
KR101270633B1 (ko) 2011-04-18 2013-06-03 명지대학교 산학협력단 복수 호프만 테이블을 적용하여 고속 처리가 가능한 멀티미디어용 호프만 디코딩 방법 및 장치
US9166620B2 (en) * 2012-09-26 2015-10-20 Qualcomm Incorporated Method and apparatus for a memory based packet compression encoding
US9059731B2 (en) * 2013-10-21 2015-06-16 International Business Machines Corporation Boosting decompression in the presence of reoccurring Huffman trees

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030016859A (ko) * 2001-08-22 2003-03-03 한국전자통신연구원 허프만 부호의 복호화 방법
KR20040001013A (ko) * 2002-06-26 2004-01-07 삼성전자주식회사 이진 검색 기법을 이용한 jpeg 허프만 테이블 디코더및 그 방법
KR20070062393A (ko) * 2005-12-12 2007-06-15 삼성전자주식회사 비디오 신호를 그룹별로 인코딩 및 디코딩하는 방법 및장치
KR20070068397A (ko) * 2004-09-22 2007-06-29 드로플렛 테크놀로지 인코포레이티드 다중 기술 엔트로피 코딩 시스템 및 방법

Family Cites Families (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163136A (en) * 1989-11-13 1992-11-10 Archive Corporation System for assembling playback data frames using indexed frame buffer group according to logical frame numbers in valid subcode or frame header
US5189671A (en) * 1991-12-20 1993-02-23 Raynet Corporation Apparatus and method for formatting variable length data packets for a transmission network
US5440344A (en) * 1992-04-28 1995-08-08 Mitsubishi Denki Kabushiki Kaisha Video encoder using adjacent pixel difference for quantizer control
US5289548A (en) * 1992-06-30 1994-02-22 Loral Aerospace Corp. Compression and reconstruction of radiological images
US7095783B1 (en) * 1992-06-30 2006-08-22 Discovision Associates Multistandard video decoder and decompression system for processing encoded bit streams including start codes and methods relating thereto
KR0134166B1 (ko) * 1992-11-24 1998-04-22 모리시타 요이찌 영상신호기록장치
JP3005385B2 (ja) 1993-03-22 2000-01-31 鐘紡株式会社 ハフマン復号化回路
JP3811183B2 (ja) * 1993-11-30 2006-08-16 ジーイー・テクノロジイ・ディベロップメント,インコーポレイテッド データストリームを処理する装置及び方法
US5881176A (en) * 1994-09-21 1999-03-09 Ricoh Corporation Compression and decompression with wavelet style and binary style including quantization by device-dependent parser
US6757437B1 (en) * 1994-09-21 2004-06-29 Ricoh Co., Ltd. Compression/decompression using reversible embedded wavelets
US6047357A (en) * 1995-01-27 2000-04-04 Digital Equipment Corporation High speed method for maintaining cache coherency in a multi-level, set associative cache hierarchy
WO1996033558A1 (en) * 1995-04-18 1996-10-24 Advanced Micro Devices, Inc. Method and apparatus for hybrid vlc bitstream decoding
US5774206A (en) * 1995-05-10 1998-06-30 Cagent Technologies, Inc. Process for controlling an MPEG decoder
JPH09261647A (ja) 1996-03-21 1997-10-03 Matsushita Electric Ind Co Ltd 動画再生制御方法および動画再生制御装置
US5969750A (en) * 1996-09-04 1999-10-19 Winbcnd Electronics Corporation Moving picture camera with universal serial bus interface
US6041403A (en) * 1996-09-27 2000-03-21 Intel Corporation Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction
US5821886A (en) * 1996-10-18 1998-10-13 Samsung Electronics Company, Ltd. Variable length code detection in a signal processing system
JPH10243402A (ja) * 1997-02-27 1998-09-11 Toshiba Corp 画像処理装置及び画像処理方法
US6298370B1 (en) * 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
WO1999016196A1 (en) * 1997-09-25 1999-04-01 Sony Corporation Device and method for generating encoded stream, system and method for transmitting data, and system and method for edition
US6246347B1 (en) * 1997-10-27 2001-06-12 Philips Electronics North America Corporation Controller for a variable length decoder
US5990812A (en) * 1997-10-27 1999-11-23 Philips Electronics North America Corporation Universally programmable variable length decoder
KR100252866B1 (ko) * 1997-12-13 2000-04-15 김영환 반도체소자 및 이의 제조방법
CN1183778C (zh) * 1998-02-13 2005-01-05 松下电器产业株式会社 图象解码装置及记录媒体
US6008745A (en) * 1998-02-17 1999-12-28 Sun Microsystems, Inc. Variable length decoding using lookup tables
JP3014997B2 (ja) * 1998-02-26 2000-02-28 鐘紡株式会社 可変長符号復号装置
US6859496B1 (en) * 1998-05-29 2005-02-22 International Business Machines Corporation Adaptively encoding multiple streams of video data in parallel for multiplexing onto a constant bit rate channel
KR20010083063A (ko) * 1998-06-25 2001-08-31 벤자민 에프 커틀러 가변 길이 코딩 및 디코딩 처리 회로, 및 그 방법
JP2000049621A (ja) 1998-07-31 2000-02-18 Hitachi Ltd ハフマン復号化方法及びデータ処理装置
JP2000059234A (ja) * 1998-08-10 2000-02-25 Mitsubishi Electric Corp 可変長符号処理装置
US6456340B1 (en) * 1998-08-12 2002-09-24 Pixonics, Llc Apparatus and method for performing image transforms in a digital display system
JP3711762B2 (ja) * 1998-09-16 2005-11-02 富士ゼロックス株式会社 画像符号化装置および方法
US6560674B1 (en) * 1998-10-14 2003-05-06 Hitachi, Ltd. Data cache system
US6434649B1 (en) * 1998-10-14 2002-08-13 Hitachi, Ltd. Data streamer
US6654539B1 (en) * 1998-10-26 2003-11-25 Sony Corporation Trick playback of digital video data
EP1021048A3 (en) * 1999-01-14 2002-10-02 Kabushiki Kaisha Toshiba Digital video recording system and its recording medium
US7327791B1 (en) * 1999-02-22 2008-02-05 Mitsubishi Denki Kabushiki Kaisha Video decoding method performing selective error concealment and resynchronization
US6480489B1 (en) * 1999-03-01 2002-11-12 Sun Microsystems, Inc. Method and apparatus for data re-assembly with a high performance network interface
US6339658B1 (en) * 1999-03-09 2002-01-15 Rockwell Science Center, Llc Error resilient still image packetization method and packet structure
JP3493574B2 (ja) * 1999-03-11 2004-02-03 Necエレクトロニクス株式会社 逆量子化装置及び逆量子化方法
US20020063807A1 (en) * 1999-04-19 2002-05-30 Neal Margulis Method for Performing Image Transforms in a Digital Display System
US6161531A (en) * 1999-09-15 2000-12-19 Ford Motor Company Engine control system with adaptive cold-start air/fuel ratio control
EP1089473A1 (en) 1999-09-28 2001-04-04 TELEFONAKTIEBOLAGET L M ERICSSON (publ) Apparatus and method for time-aligning data frames of a plurality of channels in a telecommunication system
US6507614B1 (en) * 1999-10-19 2003-01-14 Sony Corporation Efficient de-quantization in a digital video decoding process using a dynamic quantization matrix for parallel computations
US20020135683A1 (en) * 1999-12-20 2002-09-26 Hideo Tamama Digital still camera system and method
US7495669B2 (en) * 2002-12-26 2009-02-24 Canon Kabushiki Kaisha Image processing apparatus and image processing method
US6850566B2 (en) * 2000-02-22 2005-02-01 Intervideo, Inc. Implementation of quantization for SIMD architecture
US6552673B2 (en) * 2000-02-25 2003-04-22 Texas Instruments Incorporated Efficient table access for reversible variable length code decoding using a hash function
JP2001285861A (ja) * 2000-03-29 2001-10-12 Mitsubishi Electric Corp 画像信号符号化装置
US7113546B1 (en) * 2000-05-02 2006-09-26 Ati Technologies, Inc. System for handling compressed video data and method thereof
US7119813B1 (en) * 2000-06-02 2006-10-10 Nintendo Co., Ltd. Variable bit field encoding
JP3662171B2 (ja) * 2000-06-05 2005-06-22 三菱電機株式会社 符号化装置及び符号化方法
US6560690B2 (en) * 2000-12-29 2003-05-06 Intel Corporation System and method for employing a global bit for page sharing in a linear-addressed cache
US6738522B1 (en) * 2001-02-01 2004-05-18 Advanced Micro Devices, Inc. Efficient SIMD quantization method
US6543023B2 (en) * 2001-02-05 2003-04-01 Agere Systems Inc. Parity-check coding for efficient processing of decoder error events in data storage, communication and other systems
US6587057B2 (en) * 2001-07-25 2003-07-01 Quicksilver Technology, Inc. High performance memory efficient variable-length coding decoder
US6981073B2 (en) * 2001-07-31 2005-12-27 Wis Technologies, Inc. Multiple channel data bus control for video processing
US6963612B2 (en) * 2001-08-31 2005-11-08 Stmicroelectronic, Inc. System for detecting start codes in MPEG video streams and method of operating the same
US6696992B1 (en) * 2001-10-02 2004-02-24 Allan Chu Efficient data encoding and decoding processes
US6563440B1 (en) * 2001-10-19 2003-05-13 Nokia Corporation Apparatus and method for decoding Huffman codes using leading one/zero string length detection
US6650996B1 (en) * 2001-12-20 2003-11-18 Garmin Ltd. System and method for compressing data
US6847369B2 (en) * 2002-01-30 2005-01-25 Sun Microsystems, Inc. Optimized packing of loose data in a graphics queue
US7286543B2 (en) * 2002-02-27 2007-10-23 International Business Machines Corporation Memory system with apparatus and method to enable balanced bandwidth utilization
US6891976B2 (en) * 2002-03-12 2005-05-10 Intel Corporation Method to decode variable length codes with regular bit pattern prefixes
US7680043B2 (en) * 2002-03-20 2010-03-16 International Business Machines Corporation Network processor having fast flow queue disable process
US7065546B2 (en) * 2002-04-09 2006-06-20 Sony Electronics Inc. Method of performing quantization within a multimedia bitstream utilizing division-free instructions
US7158539B2 (en) * 2002-04-16 2007-01-02 Microsoft Corporation Error resilient windows media audio coding
JP4448334B2 (ja) * 2002-04-19 2010-04-07 マイクロソフト コーポレーション バイト整列されていない(non−byte−alignedpositions)のポジション、および/またはビット・シフトされたポジション(bit−siftedpositions)を含む位置におけるスタート・コード・エミュレーションを防ぐための方法およびシステム
US6563441B1 (en) * 2002-05-10 2003-05-13 Seiko Epson Corporation Automatic generation of program logic to decode variable-length codes
JP3671025B2 (ja) * 2002-05-22 2005-07-13 株式会社リコー 光走査装置及び画像形成装置
US7016547B1 (en) * 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
US7707154B2 (en) * 2002-07-15 2010-04-27 Siemens Aktiengesellschaft Method and devices for encoding/decoding structured documents, particularly XML documents
KR100504471B1 (ko) * 2002-08-08 2005-08-03 엘지전자 주식회사 비디오 디코딩 시스템
US6825782B2 (en) * 2002-09-20 2004-11-30 Ntt Docomo, Inc. Method and apparatus for arithmetic coding and termination
US6906647B2 (en) * 2002-09-20 2005-06-14 Ntt Docomo, Inc. Method and apparatus for arithmetic coding, including probability estimation state table creation
WO2004047062A2 (en) * 2002-11-14 2004-06-03 Opentv, Inc. Positioning of images in a data stream
US7069407B1 (en) * 2002-12-20 2006-06-27 Cypress Semiconductor Corporation Method and apparatus for a multi-channel high speed framer
CN1692654A (zh) * 2003-01-17 2005-11-02 松下电器产业株式会社 动态图像编码方法和动态图像解码方法
US7627042B2 (en) * 2003-01-23 2009-12-01 Ittiam Systems (P) Ltd. System, method, and apparatus for error recovery in coded video signals
KR100539923B1 (ko) * 2003-02-10 2005-12-28 삼성전자주식회사 화상통화시 화자의 영상을 구분하여 차등적 부호화할 수있는 비디오 엔코더 및 이를 이용한 비디오신호의 압축방법
CN101668215A (zh) 2003-02-18 2010-03-10 诺基亚有限公司 图像解码方法
SG140441A1 (en) 2003-03-17 2008-03-28 St Microelectronics Asia Decoder and method of decoding using pseudo two pass decoding and one pass encoding
US7660352B2 (en) 2003-04-04 2010-02-09 Sony Corporation Apparatus and method of parallel processing an MPEG-4 data stream
KR100584579B1 (ko) * 2003-04-21 2006-05-30 삼성전자주식회사 광주사 장치
JP2004364211A (ja) * 2003-06-09 2004-12-24 Matsushita Electric Ind Co Ltd 動画像復号化装置
US7496234B2 (en) 2003-06-20 2009-02-24 Microsoft Corporation System and method for seamless multiplexing of embedded bitstreams
US7724827B2 (en) * 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US7924921B2 (en) * 2003-09-07 2011-04-12 Microsoft Corporation Signaling coding and display options in entry point headers
US7606313B2 (en) 2004-01-15 2009-10-20 Ittiam Systems (P) Ltd. System, method, and apparatus for error concealment in coded video signals
EP1578131A1 (en) * 2004-03-18 2005-09-21 STMicroelectronics S.r.l. Encoding/decoding methods and systems, computer program products therefor
DE502004006570D1 (de) 2004-04-15 2008-04-30 Tektronix Int Sales Gmbh Verfahren zur Konfiguration einer Filtervorrichtung für einen in Frames organisierten Datenstrom, und Protokolltester
US7113115B2 (en) * 2004-06-30 2006-09-26 Intel Corporation Variable length code table look ups
US7074153B2 (en) * 2004-08-18 2006-07-11 General Motors Corporation Planetary transmissions having three gear sets and input clutches
US7132963B2 (en) * 2004-09-13 2006-11-07 Ati Technologies Inc. Methods and apparatus for processing variable length coded data
JP2006093958A (ja) * 2004-09-22 2006-04-06 Matsushita Electric Ind Co Ltd プログレッシブjpeg復号化システム
TWI245548B (en) * 2004-10-20 2005-12-11 Inst Information Industry Method and device for video decoding
US7933336B2 (en) * 2004-11-30 2011-04-26 Humax Co., Ltd. Image down-sampling transcoding method and device
US20060176960A1 (en) * 2005-02-07 2006-08-10 Paul Lu Method and system for decoding variable length code (VLC) in a microprocessor
JP2006270737A (ja) * 2005-03-25 2006-10-05 Fuji Xerox Co Ltd 復号化装置、分布推定方法、復号化方法及びこれらのプログラム
US7404645B2 (en) 2005-06-20 2008-07-29 Digital Display Innovations, Llc Image and light source modulation for a digital display system
US7817900B2 (en) * 2005-06-30 2010-10-19 Microsoft Corporation GPU timeline with render-ahead queue
US7432835B2 (en) 2005-07-05 2008-10-07 Matsushita Electric Industrial Co., Ltd. Variable length decoding method and device
US7119723B1 (en) * 2005-07-28 2006-10-10 Texas Instruments Incorporated Decoding variable length codes while using optimal resources
US7129862B1 (en) * 2005-07-29 2006-10-31 Texas Instruments Incorporated Decoding bit streams encoded according to variable length codes
WO2007032123A1 (ja) 2005-09-14 2007-03-22 Matsushita Electric Industrial Co., Ltd. マルチストリーム復号装置
US7372378B2 (en) 2005-12-01 2008-05-13 Nvidia Corporation Efficient decoding of n-tuple variable bit length symbols
US7372379B1 (en) 2006-03-28 2008-05-13 Nvidia Corporation Method and system for decoding N-tuple variable length code
US7324026B2 (en) * 2006-05-19 2008-01-29 Nvidia Corporation Optimization of decoder memory usage for VLC tables
US7881582B2 (en) * 2006-06-12 2011-02-01 International Business Machines Corporation Slowing display of digital video
US7975120B2 (en) 2006-12-27 2011-07-05 Freescale Semiconductor, Inc. Dynamic allocation of message buffers
CN101017574A (zh) 2007-02-16 2007-08-15 上海广电集成电路有限公司 一种适于jpeg码流的哈夫曼解码方法
US8477852B2 (en) 2007-06-20 2013-07-02 Nvidia Corporation Uniform video decoding and display
US8502709B2 (en) * 2007-09-17 2013-08-06 Nvidia Corporation Decoding variable length codes in media applications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030016859A (ko) * 2001-08-22 2003-03-03 한국전자통신연구원 허프만 부호의 복호화 방법
KR20040001013A (ko) * 2002-06-26 2004-01-07 삼성전자주식회사 이진 검색 기법을 이용한 jpeg 허프만 테이블 디코더및 그 방법
KR20070068397A (ko) * 2004-09-22 2007-06-29 드로플렛 테크놀로지 인코포레이티드 다중 기술 엔트로피 코딩 시스템 및 방법
KR20070062393A (ko) * 2005-12-12 2007-06-15 삼성전자주식회사 비디오 신호를 그룹별로 인코딩 및 디코딩하는 방법 및장치

Also Published As

Publication number Publication date
KR20090029173A (ko) 2009-03-20
JP2009118464A (ja) 2009-05-28
JP4693072B2 (ja) 2011-06-01
TWI380603B (en) 2012-12-21
CN101394564A (zh) 2009-03-25
TW200917672A (en) 2009-04-16
US8849051B2 (en) 2014-09-30
US20090074314A1 (en) 2009-03-19

Similar Documents

Publication Publication Date Title
US8502709B2 (en) Decoding variable length codes in media applications
US6285790B1 (en) Data compression for indexed color image data
US20070076971A1 (en) Compression of images for computer graphics
KR20160001701A (ko) 주파수 압축과 텍스처 파이프라인
CN102017634A (zh) 重新排序的变换系数的多级表示
KR100968675B1 (ko) Jpeg 어플리케이션의 가변 길이 코드 디코딩
JPH06152435A (ja) 可変長符号の伸長装置および圧縮伸長装置
JP2009542092A (ja) データ圧縮の方法
US8300988B2 (en) System for pipelined processing
JP2003218703A (ja) データ符号化装置及びデータ復号装置
RU2265879C2 (ru) Устройство и способ для извлечения данных из буфера и загрузки их в буфер
US6363176B1 (en) Picture data decompression apparatus
US8300704B2 (en) Picture processing via a shared decoded picture pool
JP2000048036A (ja) 画像処理装置およびその方法
US11568572B2 (en) Texture compression
US8427348B2 (en) Parallel processing of sequentially dependent digital data
US7123656B1 (en) Systems and methods for video compression
Ooi et al. The Dali multimedia software library
US20020081038A1 (en) Graphic image coding
US20220199202A1 (en) Method and apparatus for compressing fastq data through character frequency-based sequence reordering
US20080175312A1 (en) Method and system of compressing and decompressing data
WO2007099327A2 (en) Data compression
JP2000261324A (ja) ハフマン復号化回路
US20070154102A1 (en) Image decompression system, method and program
CN112579607B (zh) 数据访问方法和装置、存储介质、电子设备

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
FPAY Annual fee payment

Payment date: 20130604

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140609

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150602

Year of fee payment: 6