KR100339772B1 - 데이터화일들의압축및압축해제방법 - Google Patents

데이터화일들의압축및압축해제방법 Download PDF

Info

Publication number
KR100339772B1
KR100339772B1 KR1019950024084A KR19950024084A KR100339772B1 KR 100339772 B1 KR100339772 B1 KR 100339772B1 KR 1019950024084 A KR1019950024084 A KR 1019950024084A KR 19950024084 A KR19950024084 A KR 19950024084A KR 100339772 B1 KR100339772 B1 KR 100339772B1
Authority
KR
South Korea
Prior art keywords
file
compressed
compressed file
pointer
buffer
Prior art date
Application number
KR1019950024084A
Other languages
English (en)
Other versions
KR960009755A (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 KR960009755A publication Critical patent/KR960009755A/ko
Application granted granted Critical
Publication of KR100339772B1 publication Critical patent/KR100339772B1/ko

Links

Classifications

    • 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
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; 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
    • 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
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • H03M7/425Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
    • 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

Abstract

압축 코드워드들을 포함하는 제 1 부분과 플레인 텍스트를 포함하는 제 2 부분을 갖는 조정된 단조 압축 파일을 임의의 사이즈를 가지며, 플레인 텍스트를 포함하는 압축 해제 파일로 적절하게(in-place) 압축 해제하기 위한 방법이 개시된다. 상기 방법은 다음의 단계들을 포함한다. 먼저, 압축 해제 파일의 사이즈를 갖는 메모리 버퍼(100)가 할당된다. 이어서, 조정된 단조 압축 파일(12O')이 버퍼의 하부(120)에 저장된다. 마지막으로, 조정된 단조 압축 파일의 제 1 부분 내의 압축 코드워드들이 버퍼의 상부(140)의 압축 해제 파일의 대응하는 부분의 플레인 텍스트를 생성하도록 압축 해제되는 단계로 이루어진다. 또한, 소스 파일을 조정된 단조 압축 파일로 압축하기 위한 방법이 개시된다. 상기 방법은 다음의 단계들을 포함한다. 먼저, 소스 파일이 압축 코드워드들을 포함하는 압축 파일로 단조 압축된다. 이어서, 상기 압축 파일(120')이 압축 코드워드들을 포함하는 제 1 부분(124)과 플레인 텍스트를 포함하는 제 2 부분(126)을 갖는 조정된 단조 압축 파일을 생성하도록 조정된다.

Description

데이터 파일들의 압축 및 압축 해제 방법{Method for compressing and decompressing data files}
본 발명은, 압축이 오프-라인(off-line)으로 실행되고, 압축 해제가 실시간(real time)으로 실행되는 시스템 및 오디오 비디오 대화형 시스템(audio video interactive system)과 같은 메모리 제약들(memory constraints)이 있는 시스템에서 데이터 파일들을 압축 및 압축 해제하기 위한 방법에 관한 것이다..
오디오 비디오 대화형(AVI) 시스템은 시청자가 텔레비전 프로그램과 대화할 수 있는 수단을 제공하는 방송 대화형 시스템(broadcast interactive system)이다. 이러한 시스템에서, 각각의 수신 위치는 AVI 신호를 통해 전송 위치로부터 AVI 응용 프로그램을 수신하는 프로세서를 포함하고 있다. AVI 신호는, 표준 텔레비전 신호와 같은 오디오 및 비디오 성분과, 응용 프로그램을 구성하는 코드 및 데이터 모듈들을 탑재하는 대화형 성분을 포함하는 합성 신호(composite signal)이다. 응용 프로그래머는 컴파일러들 등과 같은 표준 프로그래밍 도구들(tools) 등을 이용하여 오프-라인(off-line)으로 코드 및 데이터 모듈들을 발생시킨다. 이어서, 이들 코드 및 데이터 모듈들이 처리되어 대화형 성분이 되고, 이것은 오디오 및 비디오 성분들과 조합되어, AVI 신호를 형성한다..
AVI 합성 신호는 수신 위치로 전송된다. 오디오 및 비디오 성분들은 AVI 합성 신호로부터 추출되고, 통상의 텔레비전 시스템에서와 같이 공시된 방식으로 사운드들 및 이미지들을 발생시키도록 처리된다. 대화형 성분은 추출되고, 코드 및 데이터 모듈들은 수신 위치에서 프로세서의 메모리에 적재된다. 이어서, 프로세서는 코드 모듈들을 실행하고, 데이터 모듈들을 처리하며, AVI 오디오 사운드 및 비디오 이미지상에 각각 오버레이(overlay)되는 사운드들 및 그래픽 이미지들을 발생시킬 수 있게 하며, 텔레비전 프로그래밍과 대화하도록 시청자로부터의 입력에 응답한다.
수신 위치 기기(receiving location equipment)는 비교적 적은 비용으로 제조되어 시판되도록 구성된다. 각각의 프로세서에 포함된 메모리의 량을 최소화하고, SGS/Thomson ST9와 같은 비교적 낮은 계산 능력(computing power)을 가진 마이크로프로세서를 이용함으로써 비용을 낮출 수 있다.
또한, 응용 프로그램은 다수의 비교적 작은 코드 및 데이터 모듈들(통상 32KB 이하)로 분할되도록 더 구성된다. 대화형 성분에서 이용 가능한 대역폭을 최적화하기 위해, 코드 및 데이터 모듈들은 그들이 전송되기 전에 압축될 것이다. 모듈들이 작고, 압축이 오프라인으로 행해지기 때문에, 압축 속도는 최소의 관심사(minimal concern)이다. 한편, 압축 해제 속도는, SGS/Thomson ST9(제한된 비트 이동 능력, 예를 들어, 단지 1 비트 이동들을 가지기 때문에, 압축 해제에 적합치 않은 마이크로프로세서)와 같은 비교적 낮은 계산 능력의 마이크로프로세서에서도 신속해야 한다. 그 외에도, 수신 위치 프로세서에서 응용 프로그램의 저장 및 실행을 위해 제공된 비교적 최소량(minimal amount)의 RAM이 있다. 따라서, 이용된 어떤 압축 해제 방법은 최소의 메모리를 이용하도록 요구된다.
종래의 압축 기술은 Lempel-Ziv '77 패밀리의 압축 알고리즘들을 포함한다. 이들 압축 기술들은 소스 데이터에서 매우 빈번한 반복이 존재한다는 기본적인 개념(basic idea)에 기초한다. 압축은 반복되는 부분을 선행 어커런스(earlier occurrence)에 대한 포인터(백 포인터(back pointer))를 포함한 매치의 사이즈(the size of the match)를 포함할 수 있는 특정한 코드워드(codeword)로 대체함으로써 이루어진다. 예컨대, 소스 문자열(source string) "abcdabcf"는 다음 방식으로 코딩된다.
문자 'a', 'b' 및 'c'를 출력에 복사(copy);
현재의 출 위치 뒤의 4 바이트를 시작으로, 사이즈 3의 매치를 출력에 복사;
문자 'f'를 출력에 복사.
이 기술을 이용하여 압축되는 소스 데이터 파일은, 임의의 백 트래킹(back tracking)을 요구하거나, 이전에 판독된 압축 데이터를 다시 판독하지 않고, 개시부(beginning)부터 종료부(end)까지 압축 파일을 가로지름으로써 압축 해제될 수 있다. 그 외에는, 압축 해제 데이터는 또한, 압축 해제 처리가 이전의 압축 해제 데이터에 대한 액세스를 정상적으로 요구할지라도, 순차적으로 출력된다. 이런 방식으로 압축 해제될 수 있는 압축 기술은 단조(monotone) 압축/압축 해제 기술이라고 한다.
발명자는 또한, 오버래핑 매치들을 이용함으로써 추가적인 압축이 이루어질 수 있다는 것을 깨닳았다. 오버래핑 매치(overlapping match)는 인코딩될 소스 파일 데이터의 다음 부분이 인코딩되고 있는 반복에 포함되는 것이다. 예컨대, 소스 문자열(source string) "abcabcabc"는 다음 방식으로 오버래핑 매치들을 이용하여 인코딩된다.
문자 'a', 'b' 및 'c'를 출력에 복사;
현재의 출력 위치 뒤의 3 바이트를 시작으로, 사이즈 6인 매치를 출력에 복사.
바꿔 말하면, 상기 문자열의 개시부에서 시작하는 6개 문자 문자열은, 즉, 첫번째 'abc'가 인코딩된 후, 두번째 'abc'에서 시작하는 6개 문자 문자열과 매치한다. 오버래핑 매치를 이용함으로써, 압축 파일의 사이즈는 오버래핑 매치들을 이용하지 않은 것보다 작게 만들어질 수 있다. 압축 해제기(decompressor)는 반복의 처음 위치로부터 출력 파일의 다음 위치로 한번에 하나씩 문자들을 복사함으로써 인코딩된 반복을 처리하도록 구성된다.
압축 파일의 사이즈를 최소화하기 위해, 현재의 압축 기술들은, 코드워드들의 사이즈를 변화시킴으로써 문자가 직접 복사되는 것을 지시하는 코드워드들 및 선행 어커런스에 대한 백 포인터들과 매치 사이즈들을 포함하는 특정한 코드워드들의 합성을 최적화한다. 일반적으로, 위에 직접적으로 복사될 문자들 중에서, 어떤 문자들은 다른 것들보다 더 빈번하게 나타나기 쉽다. 또한, 전형적인 데이터를 위해 발생되는 백 포인터들 및 매치 사이즈들의 조사는, 소정 사이즈의 매치들의 수가 2개 내지 약 6개 또는 7개의 사이즈들로부터 거의 지수 함수적으로 감소하며, 이때, 그 감소는 훨씬 덜 급격하다. 유사하게, 반복들의 국부적인 참조(locally of reference)로 인해, 큰 것보다 더 작은 많은 백 포인터들(매치 패턴이 현재 위치에 근접함을 나타내는)이 존재한다. 현대의 압축 기술들은, 코드워드들의 사이즈가 연속적으로 변화되는 엔트로피 코딩을 이용하여, 특정한 코드워드들 및 매치되지 않은 입력 문자열들을 인코딩함으로써 백 포인터들 및 매치 사이즈들의 휘어진 분포(skewed distribution)를 활용한다.
발명자는, 백 포인터들과 매치 포인터들을 포함하는 특정한 코드워드들과 복사 문자 코드워드들(copy character codewords)에 대한 순수한 가변 길이 2 차 압축(true variable length secondary compression)(엔트로피 인코딩)을 이용하는 것이 두 가지 이유들로 인하여 AVI 시스템에서 적합치 않음을 인식하였다. 첫째, 그러한 데이터의 압축 해제는 코드워드들이 바이트 경계들을 고려하지 않기 때문에 비트 이동들(bit shifts)의 과도한 사용을 요구할 것이다. 이는 한번에 하나씩 위치 이동만을 실행하는 ST9와 같은 비교적 낮은 처리 능력의 마이크로 프로세서에 대해서는 병목(bottleneck)이 될 것이다. 다양한 이동들과 회전들을 수행하는데 있어서, 시간 소비를 최소화하도록 압축 해제 루틴 부분에 대해 많은 노력이 필요하다. 둘째, 순수한 가변 길이 코드워드들의 빠른 압축 해제는 압축 해제기에서 룩업테이블들(lookup tables)을 작성하여 유지해야 한다. 압축 해제기는 이들 룩업 테이블들을 작성하도록 계산 시간을 사용해야 하며, 시스템 RAM에서의 스페이스가 룩입 테이블을 저장하도록 할당되어야 한다. AVI 디코더에서는 최소량의 시스템 RAM만이 존재하기 때문에(데이터가 처음 위치에서 압축되어 송신되는 이유중 하나), 충분히 빠른 가변 길이 코드들의 디코딩을 만들도록 충분히 큰 룩업 테이블들을 작성하는 불충분한 시스템 RAM 스페이스가 존재한다.
그러므로, 주요 목표는 최소의 시스템 RAM 스페이스를 요구하는 빠른 압축해제이다. 본 발명의 한 양상에 따르면, 압축된 데이터는 제한된 가변 길이 코드워드들에 의해 표현된다. 즉, 코드워드들은 순수한 가변 길이 코딩을 갖는 대신에 니블(nible)(4 비트)의 배수들인 길이들로 제한된다. 상기 설계(scheme)는 순수한 가변 길이 코드워드들이 요구하는 많은 이동과 회전 동작들 없이도 코드워드들의 길이의 일정한 양의 최적화를 허용한다..
현재의 압축 해제 절차에 있어서, 압축 파일은 제 1 메모리 버퍼 내로 기록된다. 이어서, 제 2 메모리 버퍼는 압축 해제된 소스 파일을 포함하도록 할당된다. 이어서, 제 1 메모리 버퍼의 압축 파일은 트래버스(traverse)되며, 재구성된 소스 데이터 파일은 제 2 메모리 버퍼 내로 기록된다. 상기 기술들은 압축 파일을 압축해제하기 위해 2개의 메모리 버퍼가 할당될 것을 요구한다.
발명자는 압축 파일을 적절하게 압축 해제되도록 허가하는 단조 압축/압축 해제 기술의 원리를 이용하였다. 즉, 압축 파일이 수신될 때, 압축 해제된 소스 파일을 포함하도록 충분한 사이즈의 메모리 내의 단일 버퍼가 할당된다. 압축 파일은 상기 버퍼 내로 기록된다. 이어서, 압축 파일은 단일 메모리 버퍼 내에서 모든 소스파일로 압축 해제된다. 이는 압축 해제를 위한 메모리 요구를 최소화하는, 압축 파일을 보유하는 개별적인 버퍼에 대한 요구를 제거한다.
본 발명의 원리들에 따라, 압축 코드워드들을 포함하는 제 1 부분(First portion)과 플레인 텍스트(plain text)를 포함하는 제 2 부분을 갖는 조정된 단조압축 파일(adjusted monotone compressed file)을 플레인 텍스트를 포함하는 압축 파일로 적절하게 압축 해제하기 위한 방법은 다음의 단계들를 포함한다. 먼저,압축 해제 파일의 사이즈를 갖는 메모리 버퍼가 할당된다. 이어서 조정된 단조 압축 파일은 버퍼의 상부에 저장된다. 마지막으로, 조정된 단조 압축 파일의 제 1 부분의 압축 코드워드들은 버퍼의 상부에서 압축 해제 파일의 대응하는 부분의 플레인 텍스트를 생성하도록 압축 해제된다..
소스 파일을 조정된 단조 압축 파일로 압축하기 위한 방법은 다음의 단계들을 포함한다. 먼저, 소스 파일은 압축 코드워드들을 포함하는 압축 파일로 단조 압축한다. 이어서, 압축 파일은 압축 코드워드들을 포함하는 제 1 부분과 플레인 텍스트를 포함하는 제 2 부분을 갖는 조정된 단조 압축 파일을 생성하도록 조정된다. 본 발명에 따라 압축된 소스 파일은 본래의 압축 파일과 동일한 사이즈를 갖는 조정된 압축 파일로 초래된다.
제 1 도는 본 발명에 따른 AVI 신호 디코더의 블록도이다. 제 1 도에 도시한 디코더는 각 AVI 수신 위치에 설치된다. 제 1 도에서, AVI 신호의 소스(도시 안됨)는 디코더의 입력 단자에 연결되고, 입력 단자(5)는 AVI 신호 수신기(30)의 입력 단자에 연결된다. AVI 신호 수신기(30)의 출력 단자는 처리부(processing unit, 40)의 시스템 버스(416)에 연결된다. 처리부(40)는 SGS/Thomson ST9와 같은 중앙 처리 장치(CPU, 410)와, 시스템 버스(416)를 통해 공지된 방법으로 함께 연결된 기록/판독 메모리(RAM, 412) 및 판독 전용 메모리(ROM, 414)를 포함한다.
시스템 버스(416)에는, 또한, 오디오 신호를 AVI 오디오 출력 단자(25)에 공급하는 오디오 프로세서(418)와, 비디오 신호를 AVI 비디오 출력 단자(15)에 공급하는 비디오 프로세서(420)와, 입력 단자(35)를 통해 사용자로부터 데이터를 수신하는 사용자 I/O 어댑터들(424)이 공지된 방법으로 연결되어 있다. 컴퓨터, 모뎀,수학적 프로세서와의 1/O 포트들인 다른 기기가 공지된 방법으로 시스템 버스(416)에 연결되어 있고, 버스 확장기(bus extender)가 디코더 인클로저(decoder enclosure) 외부의 인클로저의 다른 기기에 연결될 수 있다.
동작에 있어서, 예컨대, 디코더에 직접 RF 위성 링크(direct RF satellite link), 케이블 시스템 피드(cable system feed) 또는 광섬유 링크(fiberoptic link)일 수 있는 AVI 신호 소스는 패킷들의 스트림(stream or packets)의 형태로 AVI 신호를 생성한다. 어떤 패킷들은 AVI 신호의 오디오 성분을 전달하고, 어떤 다른 패킷들은 비디오 성분을, 또 다른 패킷들은 대화형 성분을 전달한다. AVI 신호 수신기(30)는 오디오, 비디오, 및 대화형 성분을 형성하는 패킷을 추출하도록 수신 AVI 신호를 처리하여, 공지된 DMA 기록 기술들을 이용하는 RAM(412)의 메모리 버퍼에 포함된 데이터를 저장한다. 이어서, 오디오 프로세서(418) 및 비디오 프로세서(420)는 공지된 판독 기술을 이용하여 RAM(412)의 메모리 버퍼로부터 데이터를 판독한다. 이어서, 오디오 프로세서(418) 및 비디오 프로세서(420)는 출력 단자(25)에서의 AVI 오디오 신호와, 출력 단자(15)에서의 AVI 비디오 신호를 각각 생성하도록 데이터를 처리한다. 또한, CPU(410)가 그들의 처리에서 비디오 프로세서(420) 및/또는 오디오 프로세서(418)와 협력하는 것은 가능하다. 대화형 성분 패킷들은 코드 및 데이터 모듈들을 운반하며, 하기의 방식으로 CPU(410)의 제어 하에 처리된다.
상술된 바와 같이, 대화형 성분의 대역폭을 최대화하기 위해, 응용 프로그래머는, AVI 신호의 대화형 성분에 포함하기 전에, Lempel-Ziv '77과 같은 단조 압축기술을 이용하여 코드 및/또는 모듈들을 압축하도록 결정할 수 있다. 부가하여, 오버래핑 매치들(overlapping matches)은 모듈들의 부가적인 압축을 제공하는데 사영될 수 있다. 제 2 도는 본 발명의 양호한 실시예에 따라 압축된 파일 내의 소스 데이터를 표현하는 코드워드들의 구조를 도시하는 메모리 레이아웃 도이다. 양호한 실시예에 있어서, 압축된 파일은 코드워드들의 연속적인 블록들의 형태이다. 각각의 블록은 8개의 코드워드들(CW1 내지 CW8)에 의해 수반되는 1 코드-바이트 헤더(HDR)를 포함한다.
제 3 도는 제 2 도의 헤더(HDR)와 코드워드들(CW1 내지 CW8)간의 관계를 도시하는 보다 상세한 메모리 레이아웃 도이다. 하나의 코드-바이트 헤더는 헤더의 제 1 비트부터 제 1 코드워드까지 및 헤더의 제 2 비트로부터 제 2 코드워드까지의 화살표들에 의해 제 3 도에 도시된 각각의 코드워드에 대한 각각의 비트 플래그들(bit flags)을 포함하며, 코드워드들은 연속적이다. 헤더의 임의의 비트가 1이면, 대응하는 코드워드는 압축 해제동안 압축된 파일 위로 복사되는 데이터의 압축 되지 않은 바이트를 표현하는 코드-바이트이다. 헤더의 임의의 비트가 0이면, 대응하는 코드워드는 백 포인터/매치 사이즈 코드워드이다.
제 4a 도 내지 제 4j 도는 백 포인터/매치 사이즈들을 표현하는 코드워드들의 각각의 포맷들을 도시하는 보다 상세한 메모리 레이아웃 도들이다. 상술된 바와같이, 코드워드들은 길이에 있어 가변적이지만, 니블(4 비트)의 배수들로 제한된다. 제 4 도에 있어서, 코드워드의 길이(즉, 니블들의 수), 백 포인터 및 매치 사이즈의 값은 다음과 같이 결정된다. 제 1 비트가 1이면, 코드워드는 2 또는 3 니블코드워드 중 하나이다. 제 2 비트가 0이면, 매치 사이즈는 2이다. 제 3 비트가 0이면(제 4a 도), 2 니블 코드워드이며, 다음 5 비트는 백 포인터(BP) - 1을 표현한다. 제 3비트가 1이라면 (제 4b 도), 그 코드는 3 니블 코드이며, 다음의 5 비트는 최하위 비트(LSB)를 표현하며, 다음의 니블은 백 포인터(BP) -1의 최상위 비트(MSB)를 표현한다.
제 2 및 제 3 비트가 10이면, 매치 사이즈는 3이다. 제 4 비트가 0이면(제 4c 도), 2 니블 코드워드이며, 다음의 4 비트는 백 포인터(BP)-1을 표현한다. 제 4비트가 1이면(제 4d 도), 3 니블 코드워드 이며, 다음의 4 비트는 최하위 비트(LSB)를 표현하며 그 다음의 니블은 백 포인터(BP)-1의 최상위 비트(MSB)를 표현한다. 제 2, 제 3, 제 4 비트가 각각 110이면(제 4e 도), 매치 사이즈는 4이며, 코드워드의 사이즈는 3 니블이다. 다음의 4 비트는 최하위 비트(LSB)를 표현하며, 다음의 니블은 백 포인터(BP)-1의 최상위 비트(MSB)를 표현한다. 제 2, 제 3, 제 4 비트가 각각 111이면(제 4f 도), 그 매치 사이즈는 5이며 코드워드 사이즈는 3 니블이다. 다음의 4 비트는 최하위 비트(LSB)를 표현하며, 다음의 니블은 백 포인터(BP)-1의 최상위 비트(MSB)를 표현한다.
코드워드의 제 1 비트가 0이면, 매치 사이즈는 코드워드 내에서 인코딩된다. 이들 코드워드에 대해, 그 매치 사이즈 및 백 포인터는 다음의 방식으로 결정된다. 제 2, 제 3 및 제 4 비트가 각각 111이 아니면 (제 4g 도), 코드워드의 사이즈는 2 코드-바이트(4 니블)이다. 이 경우, 제 2, 제 3 및 제 4 비트는 값(M)을 나타낸다. 매치 사이즈는 M + 3이다. 남은 12 비트(현재의 코드-바이트로부터의 4 비트 및 그다음의 코드-바이트로부터의 8 비트)는 값(B)을 나타낸다. 백 포인터는 B + 1이다. 제 2, 제 3 및 제 4 비트가 각각 111이면, 코드워드는 적어도 3 코드-바이트이다. 다음의 5 비트가 11111이 아니라면(제 4h 도), 코드워드는 3 코드-바이트로 구성된다. 제 5, 제 6, 제 7, 제 8 및 제 9 비트는 값(M)을 나타낸다. 메치 사이즈는 M + 3이다. 백 포인터(BP)는 마지막 15 비트 + 1이다. 이것은 백 포인터에 대해 최대 허용된 사이즈(즉, 32K)이다.
제 5, 제 6, 제 7, 제 8 및 제 9 비트가 각각 11111이면, 코드는 적어도 4 코드-바이트의 길이이다. 그러한 코드워드에 대해, 백 포인터는 다음의 15 비트 + 1의 값이다(제 4h 도와 동일). 최종 코드-바이트가 255(즉, 11111111)가 아니라면(제 4i 도), 그 최종 코드-바이트는 값(M)을 포함한다. 매치 사이즈는 M + 34이다. 그러나, 이들 바이트가 255 값(즉, 11111111)을 포함하면(제 4j 도), 코드워드는 실제 6 코드-바이트 길이이다. 백 포인터(BP)는 제 4i 도에서와 동일 위치에 포함한다. 최종 두개의 코드-바이트(5 및 6 바이트)는 값(M)을 포함한다. 매치 사이즈는 M + 289이다.
이러한 코딩 방법은 더욱 일반적인 백 포인터/매치 사이즈에 대해 더 작은 코드워드들을 사용하며, 그다지 일반적이지 못한 백 포인터/매치 사이즈에 대해 더욱 큰 코드워드들을 요구한다. 또한, 모든 코드워드들의 길이들은 니블의 배수들이다. 코드워드의 길이를 니블의 배수들로 제한함으로써, 모든 코드워드는 메모리 내 한 바이트 내의 니블 경계(nibble boundary) 또는 메모리의 바이트 경계(byte-boundary)로 시작한다. ST9와 같이 다수의 로우엔드(low-end) 마이크로 프로세서 1바이트 내의 2 니블을 교환하는 명령을 가지므로, 코드워드들은 많은 이동없이 효율적으로 추출될 수 있다. 더욱이, 압축기(compressor)가 메모리에서의 코드워드의 위치를 인식하므로, 압축 해제 마이크로프로세서가 더욱 신속하게 검색할 수 있도록 인코딩한다.
예컨대, 코드-바이트 X = b7.b6...b0이 출력 바이트 Y 내의 니블 경계에서 대체되어진다면, 출력 바이트 Y와 Y + 1 사이에 위치시키는 한 방식은 다음과 같다.
Y = x.x.x.x.b7.b6.b5.b4 Y+1 = b3.b2.b1.bO.x.x.x.x (1)
여기서, x 는 임의의 비트(즉, 0 또는 1)를 나타내며, 코드-바이트 X의 추출은 Y와 Y + 1 위치로부터 16 비트 워드(W)를 판독해야 한다.
W = x.x.x.x.b7.b6.b5.b4.b3.b2.b1.bO.x.x,x.x (2)
또, 4 비트 이동 작업이 왼쪽(또는 오른쪽)으로 수행된다. 그런데 만일, 압축기가 이러한 코드-바이트를 다음과 같이 코딩했다면,
Y = x.x.x.x.b3.b2.b1.bO Y+1 = b7.b6.b5.b4.x.x.x.x. (3)
코드-바이트는 Y 와 Y + 1 위치로부터 16 비트 워드(W)를 판독함으로써 추출될 수 있다. 즉,
W = x.x.x.x.b3.b2.b1.b0.b7.b6.b5.b4.x.x.x.x (4)
이며, 다음의 마스크(M)로 즉,
M = 0.0.0.0.1.1.1.1.1.1.1.1.0.0.0.0 (5)
으로 W를 논리곱하고, 최종 16 비트 워드의 두 바이트를 논리합 또는 가산한다. ST9에서, 이러한 최적화에 의해 절약된 시간은 이전의 방법에서 2 개의 4 비트 이동 동작을 없앤 시간과 동일하다.
본 발명에 따라, 상기 설명된 대로 압축된 압축 파일은 적절하게 압축 해제를 허용하도록 조정된다. 이러한 조정을 실행하기 위해, 원래의 소스 파일 및 그 압축 파일의 사이즈가 주목되며 그 압축 파일은 2 번째 처리된다.
제 5 도 및 제 6 도는 동일 위치 압축 해제를 허용하기 위해 압축 파일에 조정이 이루어짐을 이해하는데 유용한 메모리 다이어그램이다. 제 5 도에서, 메모리 버퍼(100)는 수직 방향의 장방형(oriented rectangle)으로서 도시되어 있다. 버퍼의 총 사이즈는 압축 해제 파일을 포함하기에 충분한 사이즈이다. 압축 파일에 대해 조정하기 위해, 압축 처리는 이전의 압축 파일을 동일 위치에서 압축 해제를 실행하도록 함으로써 이전에 압축 파일을 계속 처리하며, 다음의 방식으로 시도한 결과를 모니터링한다. 압축 파일(120)은 버퍼(100)의 하부에 기록되며, 제 5 도에서 빗금친 장방형으로서 도시되어 있다. 입력 포인터는 압축 파일(120) 내의 제 1 위치에 설정된다. 출력 포인터는 압축 해제 파일이 기록된 메모리 버퍼(100) 내의 제 1 위치에 설정된다. 후술된 바와 같이, 압축 처리의 조정 단계에서, 압축 파일(120) 내의 데이터는 입력 포인터에 의해 설정된 위치로부터 판독된다. 입력 포인터가 진행하며, 데이터는 출력 포인터에 의해 지적된 위치에서 메모리 버퍼(100)의 상부에 기록되며, 출력 포인터는 공지된 방식으로 진행한다.
압축 처리의 조정 위상(adjustment phase)동안, 압축 파일(120) 표준 단조 압축 해제 처리를 하여 압축 해제되며, 입력 및 출력 포인터의 상태가 모니터링된다. 제 6 도는 압축 과정의 압축 해제 처리를 설명하는 메모리 도들의 순서이다.
제 6 도에서, 데이터를 포함하는 메모리 버퍼(100)의 일부가 어둡게 도시되어 있으며, 데이터를 포함하지 않은 부분은 어둡게 도시되어 있지 않다. 제 6a 도는 제 5 도에 대응하며, 조정 압축 해제 처리의 시작 시에 메모리 버퍼(100)의 상태를 설명하고 있으며, 입력 포인터(IP)는 압축 파일(120)(어둡게 됨)의 개시부에 설정되며, 출력 포인터(OP)는 메모리 버퍼(100)의 개시부에 설정된다.
제 6b 도는 압축 해제 처리가 막 시작된 후의 메모리 버퍼(100)의 상태를 도시한다. 제 6b 도에 있어서, 압축 파일(120)의 제 1 부분은 입력 포인터(IP)의 아래 방향으로 이동 표시된 대로 판독된다. 압축 해제 처리동안 단조 압축 파일 내에는 백트랙킹(backtracking)이 없기 때문에, 이미 판독된 메모리 버퍼(100)의 부분은 다시 판독되지 않으며 어둡게 되어있지 않은 영역에서 데이터를 보유하도록 사용될 수 있다. 동시에, 압축 해제 파일(140)의 제 1 부분은 압축 파일(120)의 일부가 이미 판독된 것에 응답하여 생성된다. 압축 해제 파일(140)의 제 1 부분은 출력 포인터(OP)의 이동으로 나타낸 대로 메모리 버퍼(100)의 상부에 기록된다.
제 6c 도는 압축 해제가 더 진행될 때의 메모리 버퍼(100) 상태를 설명한 것이다. 압축 파일(120)은 입력 포인터(IP)의 위치가 나타낸 대로 더 판독되며, 압축 해제된 소스 파일은 출력 포인터(OP)의 위치가 나타낸 대로 더 생성된다. 제 6c 도에 도시된 대로, 출력 포인터(OP)의 위치는 입력 포인터(IP)의 위치에 거의 도달한다.
출력 포인터(OP)가 입력 포인터(IP)를 추월하면, 압축 해제된 소스파일(140)의 새롭게 기록된 부분이 다음 판독될 압축 파일(120) 부분들을 오버래핑할 것이므로, 압축 파일(120)을 더 디코딩할 수 있다. 제 6d 도에서, 다음의 코드워드는 입력 포인터(IP)의 이동에 의해 지시된 바와 같이 압축 파일(120)로부터 판독된다. 이 코드워드는 제 6e 도에서 어두운 장방형(W)으로서 도시되어 있다. 코드워드(CW)는 백 포인터/매치 사이즈 코드워드이며, 제 6e 도에서 어두운 장방형으로 도시된 플레인 텍스트(PT)를 생성한다. 도시된 대로, 플레인 텍스트(PT)의 사이즈는 출력 포인터(OP)의 위치에서 버퍼(100)에 기록될 수 있는 사이즈이며, 판독될 압축 파일(120)의 다음 부분을 오버래핑한다. 출력 포인터(OP)는 압축 해제 파일의 새롭게 기록된 부분의 하단에 설정되며, 입력 포인터(IP)의 값 이하이다. 압축 처리의 조정 과정이 입력 포인터(IP) 및 출력 포인터(OP)를 모니터링하여, 출력 포인터(OP)가 입력 포인터(IP)를 통과함을 나타낸다.
본 발명에 따라, 압축 파일(120)은 다음 방식으로 조정된다. 출력 포인터(OP)의 새로운 위치로부터 압축 파일의 끝까지의 압축 파일(120) 내의 코드워드는 압축되지 않은 소스 파일로부터의 플레인 텍스트로 대체된다. 그 결과의 조정된 압축 파일(120')은 제 6f 도에 도시된다. 제 6f 도에서, 조정된 압축 파일(120')은 압축되지 않은 소스 파일의 대응하는 부분을 나타내는 코드워드를 포함하는 제 1 부분(124)과, 압축되지 않은 소스 파일의 대응하는 부분의 플레인 텍스트를 나타내는 데이터를 포함하는 제 2 부분(126)(어두운 부분)을 포함한다. 코드워드가 중단되고 플레인 텍스트가 시작되는 조정된 압축 파일(120')에서의 위치는 플레인 인덱스(plain index, PI)로 나타낸다. 헤더(HDR)는 압축 해제 파일의 사이즈(DS), 압축 파일의 사이즈(CS), 및 플레인 인덱스(PI)를 나타내는 데이터를 포함하는 조정된 압축 파일(120')의 시작부에 부가된다.
양호한 실시예에 있어서, 상기 설명된 조정 처리는 제 6 도에 도시된 바와 같이, 압축 파일(120)로부터의 소스 파일(140)을 실제로 재조성하지는 않는다. 대신에, 그러한 재조성이 단지 시뮬레이팅된다. 압축 파일(120)은 트래버스(traverse)되며. 입력 포인터(IP) 및 출력 포인터(OP)는 실제 압축 해제가 실행된다면 정확하게 유지되며, 압축 해제 파일(140)은 실제 생성되지 않는다. 압축 파일(120)내에서 조정이 이루어질 필요가 있는 곳이 발견될 때, 압축 파일(120)은 제 1 부분(124) 내의 코드워드 및 제 2 부분(126)의 플레인 텍스트로 상기 설명된 대로 재기록된다. 그후 헤더는 조정된 파일(120')에 부가된다. 조정된 압축 파일(120')의 길이는 원래의 압축 파일(120)(제 6a 내지 6d 도에 점선(dashed line)으로 나타냄)과 정확하게 동일하다. 즉, 이 방법은 압축 파일의 사이즈를 증가시키지 않는다.
압축 해제는 수신된 조정 압축 파일(120')의 헤더(HDR)를 판독하고 RAM(412)내의 압축 해제 파일(140)의 사이즈(DS)를 버퍼(제 6 도의(100))에 할당하며, 버퍼(100)의 하부에 헤더(HDR) 없이 조정 압축 파일(120')을 저장함으로써 동일 위치에서 실행될 수 있다. 조정된 압축 파일(120')에 대한 개시 어드레스는 헤더(HDR)로부터 추출된 압축 사이즈(CS) 및 압축 해제 사이즈(DS)로부터 계산될 수 있다. 입력 포인터(IP)는 버퍼(100) 내의 조정된 압축 파일(120')의 시작부에 설정되며, 출력 포인터(OP)는 버퍼(100)의 시작부에 설정된다. 표준 단조 압축 해제 방법은, 출력 포인터(OP)의 값이 플레인 텍스트(PI)와 같아질 때까지, 제 6 도에 도시된 것과 동일 방식으로 입력(IP) 및 출력(OP) 포인터를 사용하여 조정 압축 파일(120')의 제 1 부분(124) 상에서 실행된다. 이때부터, 플레인 텍스트만이 조정 압축 파일(120') 내에 포함되며, 압축 해제는 더 이상 필요하지 않다. 조정된 압축 파일(120')의 압축 해제가 두 개의 버퍼(즉, 동일 위치가 아님)를 사용하여 실행된다면, 압축 해제 파일(140) 내의 출력 포인터(OP)가 플레인 인덱스(PI)에 도달할 때, 입력 포인터(IP)는 조정된 압축 파일(120')내의 플레인 인덱스(PI)에 설정되며, 조정된 압축 파일(120')의 남은 부분은 변경되지 않고 압축 해제 파일(140)에 복사된다.
제 1 도는 본 발명을 구체화하는 AVI 신호 디코더 부분의 블록도.
제 2 도는 본 발명의 양호한 실시예에 따라 압축된 파일에서 소스 데이터를 표현하는 코드워드들(codewords)의 구조를 도시하는 메모리 레이아웃(memory layout)을 나타내는 도면.
제 3 도는 제 2 도의 헤더(HDR) 및 코드워드들(CW1 내지 CW8)간의 관계를 도시하는 보다 상세한 메모리 레이아웃을 나타내는 도면.
제 4a 도 내지 제 4j 도는 백 포인터/매치 사이즈들을 표현하는 코드워드들의 각각의 포맷들을 도시하는 보다 상세한 메모리 레이아웃을 나타내는 도면.
제 5 도 및 제 6 도는 적절한 압축 해제를 허용하도록 압축 파일에서 이루어진 조정을 이해하는데 유용한 메모리를 나타내는 도면.
♣ 도면의 주요부분에 대한 부호의 설명 ♣
5 : 입력 단자 25 : AVI 출력 단자
30 : AVI 신호 수신기 40 : 처리부
412 : RAM 414 : ROM

Claims (9)

  1. 압축 코드워드들(compression codewords)을 포함하는 제 1 부분과 플레인 텍스트(plain text)를 포함하는 제 2 부분을 갖는 조정된 단조 압축 파일(adjusted monotone compressed file)을, 사이즈를 갖고 플레인 텍스트를 포함하는 압축 해제 파일(decompressed file)로 적절하게 압축 해제시키는 방법에 있어서,
    상기 압축 해제 파일의 사이즈를 갖는 메모리 버퍼를 할당하는 단계;
    상기 조정된 단조 압축 파일을 상기 버퍼의 하부(bottom)에 저장하는 단계와;
    상기 버퍼의 상부(top)에서 상기 압축 해제 파일의 대응하는 부분의 플레인 텍스트를 생성시키도록, 상기 조정된 압축 파일의 제 1 부분 내의 압축 코드워드들을 압축 해제시키는 단계를 포함하는 것을 특징으로 하는 압축 해제 방법.
  2. 제 1 항에 있어서,
    상기 압축 해제 단계는,
    상기 조정된 단조 압축 파일의 개시부(beginning)에 대응하는 상기 버퍼의 한 위치에 입력 포인터를 설정하는 단계;
    상기 버퍼의 개시부에 출력 포인터를 설정하는 단계;
    상기 입력 포인터에 의해 지시된 버퍼 내의 위치로부터 코드위드를 판독하고, 상기 입력 포인터를 진행시키는 단계;
    플레인 텍스트를 생성하도록 상기 코드워드를 디코딩하는 단계;
    상기 출력 포인터에 의해 지시된 버퍼 내의 위치에 상기 플레인 텍스트를 기록하고, 상기 출력 포인터를 진행시키는 단계와;
    상기 출력 포인터가 상기 제 2 부분의 위치에 대응할 때까지, 상기 코드워드를 판독하고, 상기 입력 포인터를 진행시키는 단계, 코드워드를 디코딩하는 단계, 및 상기 플레인 텍스트를 기록하고, 상기 출력 포인터를 진행시키는 단계를 반복하는 단계를 포함하는 것을 특징으로 하는, 압축 해제 방법.
  3. 제 1 항에 있어서,
    상기 조정된 단조 압축 파일은 어떤 사이즈를 더 가지며, 상기 조정된 단조 압축 파일의 사이즈, 상기 압축 해제 파일의 사이즈 및 상기 제 2 부분의 위치를 나타내는 데이터를 포함하는 헤더를 포함하며,
    상기 할당하는 단계는 상기 압축 해제 파일의 사이즈를 결정하도록 상기 헤더를 판독하는 단계를 포함하며,
    상기 저장하는 단계는,
    상기 조정된 단조 압축 파일의 사이즈 및 상기 압축 해제 파일의 사이즈를 결정하도록 상기 헤더를 판독하는 단계;
    상기 조정된 단조 압축 파일 및 상기 압축 해제 파일의 사이즈들로부터 상기 조정된 단조 압축 파일의 개시부에 대한 상기 버퍼 내의 위치를 계산하는 단계와;
    상기 계산된 위치에서 개시하는 상기 버퍼 내에 상기 조정된 단조 압축 파일을 저장하는 단계를 포함하며,
    상기 압축 해제 단계는,
    상기 제 2 부분의 위치를 결정하도록 상기 헤더를 판독하는 단계;
    상기 조정된 단조 압축 파일의 개시부에 대한 상기 버퍼 내의 상기 계산 위치에 입력 포인터를 설정하는 단계;
    상기 버퍼의 개시부에 출력 포인터를 설정하는 단계;
    상기 입력 포인터에 의해 지시된 상기 버퍼 내의 위치로부터 코드워드를 판독하고, 상기 입력 포인터를 진행시키는 단계;
    플레인 텍스트를 생성하도록 상기 코드워드를 디코팅하는 단계;
    상기 출력 포인터에 의해 지시된 상기 버퍼 내의 위치에 상기 플레인 텍스트를 기록하고, 상기 출력 포인터를 진행시키는 단계와;
    상기 출력 포인터가 상기 제 2 부분의 위치에 대응할 때까지, 상기 코드워드를 판독하고, 상기 입력 포인터를 진행시키는 단계, 디코딩하는 단계 및 상기 플레인텍스트를 기록하고, 상기 출력 포인터를 진행시키는 단계를 반복하는 단계를 포함하는 것을 특징으로 하는, 압축 해제 방법.
  4. 제 1 항에 있어서,
    상기 제 1 부분의 압축 코드워드들은 오버래핑 매치들(ovprlapping matches)을 사용하여 반복된 문자열(repeated string) 내의 문자들의 위치 및 수를 나타내는 코드워드를 포함하며;
    상기 압축 해제 단계는, 상기 반복된 문자열의 상기 압축 해제 파일 내의 위치로부터 상기 압축 해제 파일의 대응 부분까지, 상기 반복된 문자열 내의 문자들의 수를 한번에 하나씩 복사함으로써 상기 반복된 문자열을 나타내는 코드워드를 압축 해제하는 단계를 포함하는 것을 특징으로 하는, 압축 해제 방법.
  5. 어떤 사이즈를 갖는 소스 파일(source file)을 조정된 단조 압축 파일로 압축하는 방법에 있어서,
    상기 소스 파일을 압축 코드워드들을 포함하는 압축 파일로 단조 압축하는 단계;
    압축 코드워드들을 포함하는 제 1 부분과 플레인 텍스트를 포함하는 제 2 부분을 갖는 조정된 단조 압축 파일을 생성하도록, 상기 압축 파일을 조정하는 단계를 포함하는 것을 특징으로 하는 소스 파일 압축 방법.
  6. 제 1 항 또는 제 5 항에 있어서,
    상기 압축 코드워드들은 니블(nibble)의 배수들인 각각의 길이들을 갖는 것을 특징으로 하는, 압축 해제 방법 또는 소스 파일 압축 방법.
  7. 제 5 항에 있어서,
    상기 조정 단계는,
    상기 소스 파일의 사이즈를 갖는 메모리 버퍼를 할당하는 단계를 시뮬레이팅하는 단계;
    상기 메모리 버퍼의 하부에 상기 압축 파일을 저장하는 단계를 시듈레이팅하는 단계;
    상기 압축 파일의 개시부를 지시하도록 입력 포인터를 설정하는 단계;
    상기 버퍼의 개시부를 지시하도록 출력 포인터를 설정하는 단계를 시뮬레이팅하는 단계;
    상기 압축 파일의 압축 해제 단계를 시뮬레이팅하는 단계로서,
    상기 입력 포인터에 의해 지시된 압축 파일 내의 위치로부터 코드워드를 판독하고, 상기 입력 포인터를 진행시키는 단계,
    플레인 텍스트를 생성하도록 코드워드를 디코팅하는 단계를 시뮬레이팅 하는 단계,
    상기 출력 포인터를 진행시킴으로써 상기 출력 포인터에 의해 지시된 상기 메모리 버퍼 내의 위치에 상기 플레인 텍스트를 기록하는 단계를 시뮬레이팅하는 단계와,
    디코딩되면, 코드워드의 디코팅 단계를 시뮬레이팅하는 단계가 상기 출력 포인터로 하여금 상기 입력 포인터를 통과하게 할 때까지, 상기 판독 단계, 디코팅 단계의 시뮬레이팅 단계 및 기록 단계의 시뮬레이팅 단계를 반복하는 단계를 실행함으로써, 상기 압축 파일의 압축 해제 단계를 시뮬레이팅하는 단계와;
    코드워드의 디코딩 단계를 시뮬레이팅하는 단계가 상기 출력 포인터로 하여금 상기 입력 포인터를 통과하게 할 때, 상기 조정된 압축 파일을 생성하도록 상기출력 포인터에 의해 지시된 위치에 대응하는 소스 파일 내의 위치로부터 상기 압축파일에 대한 소스 파일의 종료부(end)까지 플레인 텍스트의 복사를 실행하는 단계를 포함하는 것을 특징으로 하는, 소스 파일 압축 방법.
  8. 제 5 항에 있어서,
    상기 소스 파일의 사이즈, 상기 조정된 압축 파일의 사이즈, 및 플레인 텍스트를 포함하는 상기 조정된 압축 파일 내의 위치를 나타내는 데이터를 포함하는 상기 압축 파일에 헤더를 부가하는 단계를 더 포함하는 것을 특징으로 하는 소스 파일 압축 방법.
  9. 제 5 항에 있어서,
    상기 단조 압축하는 단계는 압축 코드워드들을 생성하도록 오버래핑 매치들을 이용하는 것을 특징으로 하는, 소스 파일 압축 방법.
KR1019950024084A 1994-08-01 1995-08-01 데이터화일들의압축및압축해제방법 KR100339772B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US28334694A 1994-08-01 1994-08-01
US283,346 1994-08-01
US283346 1994-08-01

Publications (2)

Publication Number Publication Date
KR960009755A KR960009755A (ko) 1996-03-22
KR100339772B1 true KR100339772B1 (ko) 2002-10-31

Family

ID=23085603

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950024084A KR100339772B1 (ko) 1994-08-01 1995-08-01 데이터화일들의압축및압축해제방법

Country Status (6)

Country Link
US (1) US5841953A (ko)
EP (1) EP0696107B1 (ko)
JP (1) JP3869033B2 (ko)
KR (1) KR100339772B1 (ko)
CN (1) CN1127219C (ko)
DE (1) DE69524999T2 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100313290B1 (ko) * 1996-04-18 2002-02-28 쥬리 페트로비치 밀토 이진코드압축과복원방법병렬압축과복원프로세서
US6567911B1 (en) * 1999-12-06 2003-05-20 Adaptec, Inc. Method of conserving memory resources during execution of system BIOS
JP3540243B2 (ja) 2000-04-24 2004-07-07 Necエレクトロニクス株式会社 半導体記憶装置
US7158255B2 (en) * 2002-06-18 2007-01-02 Lexmark International, Inc. Method for printing shingling print data
FR2878668B1 (fr) * 2004-11-26 2007-07-13 Siemens Vdo Automotive Sas Procede de compression de donnees numeriques
JP6476618B2 (ja) * 2014-07-07 2019-03-06 富士通株式会社 伸長方法、伸長プログラムおよび伸長装置
US10283091B2 (en) * 2014-10-13 2019-05-07 Microsoft Technology Licensing, Llc Buffer optimization
US10374628B2 (en) 2017-04-05 2019-08-06 International Business Machines Corporation In-place data compression with small working memory
CN108197204B (zh) * 2017-12-28 2021-12-21 北京安博通科技股份有限公司 文件处理方法及装置
US10768861B1 (en) * 2019-02-27 2020-09-08 Microsoft Technology Licensing, Llc In-place safe decompression
CN113111040B (zh) * 2021-04-21 2024-04-30 郑旭纯 一种文件解压方法及装置
US20230004533A1 (en) * 2021-07-01 2023-01-05 Microsoft Technology Licensing, Llc Hybrid intermediate stream format

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4494151A (en) * 1979-07-02 1985-01-15 Xerox Corporation 4-Pixel run-length code for data compression
US4597057A (en) * 1981-12-31 1986-06-24 System Development Corporation System for compressed storage of 8-bit ASCII bytes using coded strings of 4 bit nibbles
US4888645A (en) * 1984-01-16 1989-12-19 International Business Machines Corporation Method for encoding and decoding a digital image
US4876541A (en) * 1987-10-15 1989-10-24 Data Compression Corporation Stem for dynamically compressing and decompressing electronic data
US5108207A (en) * 1988-07-20 1992-04-28 Matsushita Electric Industrial Co., Ltd. Printer with variable memory size
US5003307A (en) * 1989-01-13 1991-03-26 Stac, Inc. Data compression apparatus with shift register search means
US5018060A (en) * 1989-01-26 1991-05-21 Ibm Corporation Allocating data storage space of peripheral data storage devices using implied allocation based on user parameters
US5109433A (en) * 1989-10-13 1992-04-28 Microsoft Corporation Compressing and decompressing text files
US5049881A (en) * 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
JPH0753454B2 (ja) * 1990-07-06 1995-06-07 株式会社日立製作所 テキスト情報処理装置
US5212565A (en) * 1990-11-19 1993-05-18 Allied-Signal Inc. Method for reducing amount of stored digital image data without degrading a reconstituted image
US5168356A (en) * 1991-02-27 1992-12-01 General Electric Company Apparatus for segmenting encoded video signal for transmission
US5179378A (en) * 1991-07-30 1993-01-12 University Of South Florida Method and apparatus for the compression and decompression of data using Lempel-Ziv based techniques
JP3233173B2 (ja) * 1992-01-07 2001-11-26 セイコーエプソン株式会社 ラスタイメージシリアルプリンタ
EP0582907A3 (en) * 1992-08-10 1995-05-10 Stac Electronics Inc Device and method for data compression using search by comparison of strings and Huffman coding.
US5394534A (en) * 1992-09-11 1995-02-28 International Business Machines Corporation Data compression/decompression and storage of compressed and uncompressed data on a same removable data storage medium
EP0660614A4 (en) * 1993-07-12 1998-03-18 Sony Corp IMAGE DECODING METHOD AND DEVICE AND IMAGE CODING METHOD AND DEVICE.
DE69420797T2 (de) * 1993-07-30 2000-03-23 Victor Company Of Japan Verfahren und Vorrichtung zur Übertragung von digitalen Daten
JP3509080B2 (ja) * 1993-10-15 2004-03-22 ソニー株式会社 データ再生装置
JP2611637B2 (ja) * 1993-11-22 1997-05-21 日本電気株式会社 画像圧縮伸長装置
JP2760287B2 (ja) * 1994-07-01 1998-05-28 ヤマハ株式会社 ディスク記録再生装置

Also Published As

Publication number Publication date
EP0696107A3 (en) 1997-10-15
EP0696107B1 (en) 2002-01-16
US5841953A (en) 1998-11-24
DE69524999D1 (de) 2002-02-21
DE69524999T2 (de) 2002-07-18
CN1124436A (zh) 1996-06-12
CN1127219C (zh) 2003-11-05
JPH0879719A (ja) 1996-03-22
EP0696107A2 (en) 1996-02-07
JP3869033B2 (ja) 2007-01-17
KR960009755A (ko) 1996-03-22

Similar Documents

Publication Publication Date Title
US6031622A (en) Method and apparatus for font compression and decompression
JP2915568B2 (ja) テープドライブシステムのための適応データ圧縮装置
KR100339772B1 (ko) 데이터화일들의압축및압축해제방법
US6677869B2 (en) Arithmetic coding apparatus and image processing apparatus
EP1832000B1 (en) Device and data method for selective compression and decompression and data format for compressed data
US7817069B2 (en) Alternative encoding for LZSS output
JP3341962B2 (ja) 可変長復号器及び可変長符号値を復号化する方法
JPH06152435A (ja) 可変長符号の伸長装置および圧縮伸長装置
US6094151A (en) Apparatus and method for finite state machine coding of information selecting most probable state subintervals
CN105306067A (zh) 算术编码的方法和设备
US6748520B1 (en) System and method for compressing and decompressing a binary code image
JPH03503707A (ja) 統計的にコード化されたデジタル・データを復号するシステム
EP0658982A2 (en) System for bi-level symbol coding-decoding with saved storage and method for the same
CN107688439B (zh) 基于Deflate的无关联压缩块的生成方法及装置
EP0576131A2 (en) Serial data decoding
US20020006228A1 (en) Data decoding apparatus and method of same
JP2800538B2 (ja) 可変長ビット列処理プロセッサ
JPH10341166A (ja) データ量に適応するデータ圧縮方法
EP0834832B1 (en) Arithmetic image coding
JP2003318739A (ja) データシーケンスを圧縮するシステム、方法、およびコンピュータ読み取り可能媒体
JP3409845B2 (ja) 可変長ビット列処理装置及びこれを用いた可変長ビット列処理方法
JP3332630B2 (ja) 復号装置及びデコードテーブルの生成方法
KR20060123197A (ko) 구조적 문서의 압축 및 압축 해제 방법
CN116582688A (zh) 一种适配云绘制系统的深度图压缩方法和装置
JPH0856164A (ja) データ符号化復号化装置及び方法

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20130516

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20140515

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20150514

Year of fee payment: 14

EXPY Expiration of term