KR20180016556A - 모드 심볼들을 사용하는 인코더, 디코더 및 방법 - Google Patents

모드 심볼들을 사용하는 인코더, 디코더 및 방법 Download PDF

Info

Publication number
KR20180016556A
KR20180016556A KR1020187000752A KR20187000752A KR20180016556A KR 20180016556 A KR20180016556 A KR 20180016556A KR 1020187000752 A KR1020187000752 A KR 1020187000752A KR 20187000752 A KR20187000752 A KR 20187000752A KR 20180016556 A KR20180016556 A KR 20180016556A
Authority
KR
South Korea
Prior art keywords
data
encoding
mode
type
decoding
Prior art date
Application number
KR1020187000752A
Other languages
English (en)
Other versions
KR102393743B1 (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 KR20180016556A publication Critical patent/KR20180016556A/ko
Application granted granted Critical
Publication of KR102393743B1 publication Critical patent/KR102393743B1/ko

Links

Images

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
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • H03M7/48Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind alternating with other codes during the code conversion process, e.g. run-length coding being performed only as long as sufficientlylong runs of digits of the same kind are present
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • 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/4006Conversion to or from arithmetic code
    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • 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/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/607Selection between different types of compressors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

인코더가 제공된다. 인코더는 적어도 하나의 모드 심볼을 식별하기 위하여 입력 데이터(D1)를 분석하도록 동작 가능하다. 인코더는 비-모드 심볼을 포함하는 제1 타입의 데이터 값들 및 적어도 하나의 모드 심볼의 런을 포함하는 제2 타입의 데이터 값들을 생성하도록 동작 가능하다. 또한, 인코더는 비-모드 심볼들의 카운트를 나타내는 정보 및 적어도 하나의 모드 심볼을 나타내는 정보를 생성하도록 동작 가능하다. 또한, 인코더는 인코딩된 데이터(E2)를 생성하기 위하여 적어도 하나의 모드 심볼을 나타내는 정보, 비-모드 심볼들의 카운트를 나타내는 정보, 비-모드 심볼들을 포함하는 제1 타입의 데이터 값들 및 적어도 하나의 모드 심볼의 런을 포함하는 제2 타입의 데이터 값들을 어셈블링 또는 인코딩하도록 동작 가능하다.

Description

모드 심볼들을 사용하는 인코더, 디코더 및 방법
본 개시는 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 인코더, 및 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 대응하는 방법에 관한 것이다. 또한, 본 개시는 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 디코더, 및 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 대응하는 방법에 관한 것이다. 또한, 본 개시는 상기 방법들을 실행하기 위한 프로세싱 하드웨어를 포함하는 컴퓨터화된 디바이스에 의해 실행 가능한 컴퓨터 판독 가능한 명령어들을 저장하는 비-일시적 컴퓨터 판독 가능한 저장 매체를 포함하는 컴퓨터 프로그램 제품들에 관한 것이다. 또한, 본 개시는 적어도 하나의 전술한 인코더 및 적어도 하나의 전술한 디코더를 포함하는 코덱에 관한 것이다.
RLE(Run Length Encoding)는 심볼들의 연속적인 런(run)을 별도로 전달(deliver)함으로써 달성되는, 심볼들의 연관된 카운트를 줄임으로써 데이터를 압축하는 데 사용될 수 있는 인코딩 방법이다(참고 문헌 [1] 참조). 또한 분리(Split) RLE, 즉 SRLE(참고 문헌 [2] 참조)는 심볼들 및 심볼들의 연속 런(consecutive runs)을 개별적으로 전달 및 압축하는 데 사용할 수 있는 RLE 버전이다.
동시적으로 사용 가능한 다수의 상이한 RLE의 구현이 있다. 예로서, 일부 구현 예에서, 연속적인 런은 모든 상이한 심볼에 대해 전달될 수 있다. 다른 구현에서, 연속적인 런은 심볼 스트림에 적어도 2개의 유사한 심볼이 있는 경우에만 전달된다.
또한, ZRLE(참고 문헌 [3] 참조)은 제로가 아닌 값들, 및 제로가 아닌 값들 이전의 제로 값들의 런을 별도로 전달하는 RLE의 하나의 특수 버전이다. ZRLE은 주어진 데이터가 다수의 제로 값들을 포함할 때 효율적인 방법이다. ZRLE는 예를 들어 양자화된 이산 코사인 변환(Discrete Cosine Transform, DCT) 계수가 JPEG(Joint Photographic Experts Group) 압축에서 압축될 때 사용된다.
위에서 언급한 RLE 및 SRLE는 비트, 숫자 또는 심볼에 사용할 수 있지만 ZRLE는 숫자에만 사용할 수 있다.
RLE 및 SRLE는 데이터에 연속적으로 많은 심볼이 있지만 해당 심볼들 중 어느 것도 우세한(dominant) 심볼이 아닌 경우에만 효율적인 방법이다. ZRLE은 "제로(zero)"가 데이터에서 우세한 값일 때만 효율적인 방법이다.
불행하게도, JPEG이 ZRLE 방법을 사용할 때, 특히 원하는 품질이 높고 양자화 비율이 낮은 경우, 제로가 항상 우세한 값은 아니다. 이로 인해 ZRLE 방법은 그러한 상황에서 사용하기에 매우 비효율적이다.
따라서, 예를 들어 전술한 바와 같이, 데이터를 인코딩하는 공지된 방법과 관련된 단점을 다루는 대안적인 인코딩 방법에 대한 필요성이 존재한다. 예를 들어 이러한 단점은 달성할 수 있는 정도의 데이터 압축도와 관련이 있다.
본 개시는 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 개선된 인코더를 제공하고자 한다.
또한, 본 개시는 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 개선된 디코더를 제공하고자 한다.
본 개시의 또 다른 목적은 전술한 바와 같이 종래 기술의 문제점 중 적어도 일부를 적어도 부분적으로 극복하는 것이다.
제1 양태에서, 본 개시의 실시예들은 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 인코더를 제공하며,
(a) 상기 인코더는 그 내부의 적어도 하나의 모드 심볼(mode symbol)을 식별하기 위하여 상기 입력 데이터(D1)를 분석하도록 동작 가능하고;
(b) 상기 인코더는 적어도 제1 타입 및 제2 타입의 데이터 값들을 생성하도록 동작 가능하고, 상기 제1 타입의 데이터 값들은 비-모드(non-mode) 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런(run)을 포함하고, 상기 적어도 하나의 모드 심볼의 런은 상기 입력 데이터(D1) 내의 상기 비-모드 심볼들 전 또는 후에 상기 적어도 하나의 모드 심볼의 발생을 나타내고;
(c) 상기 인코더는 상기 비-모드 심볼들의 카운트를 나타내는 정보 및 상기 적어도 하나의 모드 심볼을 나타내는 정보를 생성하도록 동작 가능하고;
(d) 상기 인코더는 상기 인코딩된 데이터(E2)를 생성하기 위하여 상기 적어도 하나의 모드 심볼을 나타내는 정보, 상기 비-모드 심볼들의 카운트를 나타내는 정보를 어셈블링 또는 인코딩하도록 동작 가능하고, 상기 제1 타입의 데이터 값들은 상기 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하는 것을 특징으로 한다.
본 발명은, 입력 데이터(D1)가 적어도 하나의 우세한 심볼, 즉 적어도 하나의 모드 심볼을 포함할 때, 전술한 인코더가 다른 공지된 종래의 압축 방법과 비교하여 무손실 압축 데이터를 생성하기 위한 더 높은 압축 비율을 달성할 수 있다는 점에서 이점이 있다.
또한, 이렇게 생성된 인코딩된 데이터(E2)는 종래의 엔트로피 코딩 방법과 비교하여 신속하게 디코딩될 수 있다.
전술한 인코더는 예를 들어 숫자, 비트, 영숫자 문자(alphanumeric character), 단어 등을 포함하는 상이한 타입의 심볼에 대해 사용될 수 있다는 것을 유의해야 한다.
하나 이상의 결과 스트림이 엔트로피 코딩될 수 있다는 것을 이해할 것이다. SMRLE가 사용될 때 각 모드 값이 항상 두 개의 스트림을 생성하고, MRLE이 사용될 때 단지 하나의 스트림을 생성하기 때문에, 여러 모드 값들이 발생할 때, 정말 많은 스트림들이 있을 수 있다. 따라서, 본 개시의 실시예들은 또한 예를 들어 M RLE가 사용될 때 단지 하나의 스트림이 생성되는 구현을 포함한다.
선택적으로, 인코더는 (d) 이전에, 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 하나 이상의 데이터 스트림 내에 삽입하도록 동작 가능하다.
본 개시의 일 실시예에 따르면, 하나 이상의 데이터 스트림 내에 삽입할 때, 인코더는 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 개별 데이터 스트림 내에 삽입하도록 동작 가능하다. 선택적으로, 이와 관련하여, 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들은 각각 제1 데이터 스트림 및 제2 데이터 스트림 내에 삽입된다. 선택적으로, 이와 관련하여, 인코더는 (a) 내지 (d)에 따라 제1 타입의 데이터 값들, 즉 비-모드 심볼들을 포함하는 제1 데이터 스트림을 재귀 적으로 처리하도록 동작 가능하다.
본 개시의 또 다른 실시예에 따르면, 하나 이상의 데이터 스트림 내에 삽입할 때, 인코더는 인터리브된(interleaved) 포맷 또는 평면(planar) 포맷으로 된 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 단일 데이터 스트림 내로 삽입하도록 동작 가능하다.
그 대신에 선택적으로 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들이 제1 및 제2 데이터 스트림 내에 삽입되는 경우, 인코더는 제1 및 제2 데이터 스트림을 결합하여 인터리브된 포맷 아니면 평면 포맷으로 된 단일 결과 데이터 스트림(single resultant data stream)을 형성하도록 동작 가능하다.
선택적으로, 인코더는 단일 결과 데이터 스트림을 제공하기 위하여 제1 및 제2 타입의 데이터 값들을 인터리브하도록 동작 가능하다.
선택적으로, 인코더는 단일 결과 데이터 스트림을 제공하기 위하여 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 인터리브된 데이터 블록으로서 인터리브하도록 동작 가능하다.
또한, 평면 포맷에서, 제1 타입의 모든 데이터 값은 단일 결과 데이터 스트림 내에 삽입되고 그 다음에 제2 타입의 모든 데이터 값이 삽입되거나, 또는 그 반대로 삽입된다는 것을 유의해야 한다.
또한, 선택적으로, 인코더는 적어도 하나의 엔트로피 인코딩 방법을 사용하여 하나 이상의 데이터 스트림을 함께 또는 개별적으로 압축하도록 동작 가능하다. 선택적으로, 이와 관련하여, 적어도 하나의 엔트로피 인코딩 방법은 델타(Delta) 인코딩, 오델타(ODelta) 인코딩, RLE 인코딩, SRLE 인코딩, ZRLE 인코딩, MRLE 인코딩, SMRLE 인코딩, 허프만 코딩, VLC 인코딩, 레인지 코딩, 산술 코딩, EM 인코딩, 연속 연산자(Continuum operator) 인코딩, 트루비츠 카피(TrueBits Copy) 코딩 중 적어도 하나를 포함한다. 이러한 적어도 하나의 인코딩 방법은 예를 들어 Wikipedia(위키피디아)(TCP/IP 인터넷을 통해 액세스 가능)와 같은 데이터베이스, 및 출원인이 Gurulogic Microsystems Oy로 되어 있는 공개 특허 문서(유럽 특허청의 Espacenet을 통해 액세스 가능, 발명자는 Ossi Kalevo로 되어 있음)에서 더 자세히 기재되어 있다.
선택적으로, 인코더는 확률 및 인덱스 테이블, 모드 심볼, 모드 심볼의 카운트, 선택된 인코딩 방법의 인덱스, 데이터 값, 상이한 데이터의 최대 인덱스 중 적어도 하나의 전달에 관한 추가 정보를 어셈블링하거나 인코딩하도록 동작 가능하다.
선택적으로 이와 관련하여, 적어도 하나의 모드 심볼이 인코딩된 데이터(E2)에서 전달(communicate)되든 안 되든 간에, 인코더는, 선택된 인코딩 방법, 적어도 하나의 모드 심볼, 모드 심볼들의 카운트 중 적어도 하나를 나타내는 인덱스를 적어도 하나의 디코더에 전달하도록 동작 가능하다.
선택적으로, 인코더는 인코딩된 데이터(E2)의 전달 이전에 사전 정보(prior information)로서 상기 추가 정보를 전달하도록 동작 가능하다. 그 대신에 선택적으로, 인코더는 인코딩된 데이터(E2)의 일부로서 인코딩된 데이터(E2)와 함께 추가 정보를 전달하도록 동작 가능하다.
선택적으로, 인코더는 입력 데이터(D1)에 존재하는 원래 심볼을 분리(split) 또는 결합함으로써 (a) 내지 (d) 이전에 입력 데이터(D1)에서 심볼을 생성하도록 동작 가능하다. 선택적으로, 이와 관련하여 인코더는,
(i)(a) 내지 (d)에 따라 처리하기 위한 하나 이상의 새로운 심볼을 생성하기 위하여 입력 데이터(D1)의 적어도 하나 이상의 부분을 분리하고/하거나;
(ii) (a) 내지 (d)에 따라 처리하기 위한 새로운 결합된 심볼들을 생성하기 위하여 입력 데이터(D1)의 적어도 하나 이상의 부분의 하나 이상의 영숫자 문자를 결합하도록 동작 가능하다.
선택적으로, 인코더는 입력 데이터(D1)의 하나 이상의 부분을 인코딩하기 위한 추가 인코딩 방법을 사용하도록 동작 가능하고, 추가 인코딩 방법은, 델타 인코딩, 오델타 인코딩, RLE 인코딩, SRLE 인코딩, ZRLE 인코딩, MRLE 인코딩, SMRLE 인코딩, 허프만 코딩, VLC 인코딩, 레인지 코딩, 산술 코딩, EM 인코딩, 연속 연산자 인코딩, 트루비츠 카피 코딩 중 적어도 하나를 포함한다. 이러한 적어도 하나의 추가 방법은 예를 들어 Wikipedia(위키피디아)(TCP/IP 인터넷을 통해 액세스 가능)와 같은 데이터베이스, 및 출원인이 Gurulogic Microsystems Oy로 되어 있는 공개 특허 문서(유럽 특허청의 Espacenet을 통해 액세스 가능, 발명자는 Ossi Kalevo로 되어 있음)에서 더 자세히 기재되어 있다.
선택적으로, 인코더는 인코딩된 데이터(E2)에서 향상된 데이터 압축도를 얻기 위하여, 복수의 인코딩 알고리즘 중에서, 입력 데이터(D1)의 하나 이상의 특성에 따라, (a) 내지 (d)에서 사용될 인코딩 알고리즘을 동적으로 선택하도록 동작 가능하다.
제2 양태에서, 본 개시의 실시예들은 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 방법을 제공하며, 상기 방법은:
(a) 내부의 적어도 하나의 모드 심볼을 식별하기 위하여 상기 입력 데이터(D1)를 분석하는 단계;
(b) 적어도 제1 타입 및 제2 타입의 데이터 값들을 생성하는 단계로서, 상기 제1 타입의 데이터 값들은 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하고, 상기 적어도 하나의 모드 심볼의 런은 상기 입력 데이터(D1) 내의 상기 비-모드 심볼들 전 또는 후에 상기 적어도 하나의 모드 심볼의 발생을 나타내는, 상기 데이터 값 생성 단계;
(c) 상기 비-모드 심볼들의 카운트를 나타내는 정보 및 상기 적어도 하나의 모드 심볼을 나타내는 정보를 생성하는 단계; 및
(d) 상기 인코딩된 데이터(E2)를 생성하기 위하여 상기 적어도 하나의 모드 심볼을 나타내는 정보, 상기 비-모드 심볼들의 카운트를 나타내는 정보를 어셈블링 또는 인코딩하는 단계로서, 상기 제1 타입의 데이터 값들은 상기 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하는, 상기 어셈블링 또는 인코딩 단계를 포함하는 것을 특징으로 한다.
선택적으로, 상기 방법은 단계 (d) 전에, 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 하나 이상의 데이터 스트림 내에 삽입하는 단계를 포함한다.
본 개시의 일 실시예에 따르면, 하나 이상의 데이터 스트림 내에 삽입할 때, 상기 방법은 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 개별 데이터 스트림 내에 삽입하는 단계를 포함한다. 선택적으로, 이와 관련하여, 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들은 각각 제1 데이터 스트림 및 제2 데이터 스트림 내에 삽입된다.
선택적으로, 상기 방법은 (a) 내지 (d)에 따라 비-모드 심볼들을 포함하는 제1 데이터 스트림을 재귀적으로 처리하는 단계를 포함한다.
본 개시의 또 다른 실시예에 따르면, 하나 이상의 데이터 스트림 내에 삽입할 때, 상기 방법은 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 인터리브된 포맷 또는 평면 포맷으로 단일 데이터 스트림 내로 삽입하는 단계를 포함한다.
그 대신에 선택적으로, 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들이 제1 및 제2 데이터 스트림 내에 삽입될 때, 상기 방법은 제1 및 제2 데이터 스트림을 결합하여 인터리브된 포맷 또는 평면 포맷으로 단일 결과 데이터 스트림을 형성하는 단계를 제공된다. 또한, 선택적으로, 상기 방법은 적어도 하나의 엔트로피 인코딩 방법을 사용하여 하나 이상의 데이터 스트림을 함께 또는 개별적으로 압축하는 단계를 포함한다. 선택적으로, 이와 관련하여, 적어도 하나의 엔트로피 인코딩 방법은 델타 인코딩, 오델타 인코딩, RLE 인코딩, SRLE 인코딩, ZRLE 인코딩, MRLE 인코딩, SMRLE 인코딩, 허프만 코딩, VLC 인코딩, 레인지 코딩, 산술 코딩, EM 인코딩, 연속 연산자 인코딩, 트루비츠 카피 코딩 중 적어도 하나를 포함한다.
선택적으로, 상기 방법은 확률 및 인덱스 테이블, 모드 심볼, 모드 심볼의 카운트, 선택된 인코딩 방법의 인덱스, 데이터 값, 상이한 데이터의 최대 인덱스 중 적어도 하나의 전달에 관한 추가 정보를 어셈블링 또는 인코딩하는 단계를 포함한다.
선택적으로, 이와 관련하여, 적어도 하나의 모드 심볼이 인코딩된 데이터(E2)에서 전달되든 안 되든 간에, 상기 방법은 적어도 선택된 인코딩 방법, 상기 적어도 하나의 모드 심볼, 모드 심볼들의 카운트 중 적어도 하나를 나타내는 인덱스를 적어도 하나의 디코더에 전달하는 단게를 포함한다.
선택적으로, 상기 방법은 인코딩된 데이터(E2)의 전달 이전에 상기 추가 정보를 사전 정보로서 전달하는 단계를 포함한다. 그 대신에 선택적으로, 상기 방법은 상기 인코딩된 데이터(E2)의 일부로서 상기 인코딩된 데이터(E2)와 함께 상기 추가 정보를 전달하는 단계를 포함한다.
선택적으로, 상기 방법은 입력 데이터(D1)에 존재하는 원래 심볼들을 분리 또는 결합함으로써 상기 (a) 내지 (d) 이전에 입력 데이터(D1)에서 심볼들을 생성하는 단계를 포함한다. 선택적으로, 이와 관련하여, 상기 방법은:
(i)(a) 내지 (d)에 따라 처리하기 위한 하나 이상의 새로운 심볼을 생성하기 위하여 입력 데이터(D1)의 적어도 하나 이상의 부분을 분리하는 단계; 및/또는
(ii) 상기(a) 내지 (d)에 따라 처리하기 위한 새로운 결합된 심볼들을 생성하기 위하여 상기 입력 데이터(D1)의 적어도 하나 이상의 부분의 하나 이상의 영숫자 문자를 결합하는 단계를 포함한다.
선택적으로, 상기 방법은, 입력 데이터(D1)의 하나 이상의 부분을 인코딩하는 추가 인코딩 방법을 사용하는 단계를 포함하고, 상기 추가 방법은 델타 인코딩, 오델타 인코딩, RLE 인코딩, SRLE 인코딩, ZRLE 인코딩, MRLE 인코딩, SMRLE 인코딩, 허프만 코딩, VLC 인코딩, 레인지 코딩, 산술 코딩, EM 인코딩, 연속 연산자 인코딩, 트루비츠 카피 코딩 중 적어도 하나를 포함한다.
선택적으로, 상기 방법은 인코딩된 데이터(E2)에서 향상된 데이터 압축도를 얻기 위하여, 입력 데이터(D1)의 하나 이상의 특성에 따라, 복수의 인코딩 알고리즘 중에서 상기 (a) 내지 (d)에서 사용될 인코딩 알고리즘을 동적으로 선택하는 단계를 포함한다.
제3 양태에서, 본 개시의 실시예들은 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 디코더를 제공하며,
(ⅰ) 상기 디코더는 상기 인코딩된 데이터로부터 적어도 하나의 모드 심볼을 나타내는 정보, 비-모드 심볼들의 카운트를 나타내는 정보, 적어도 제1 타입 및 제2 타입의 데이터 값들을 디코딩하도록 동작 가능하고, 상기 제1 타입의 데이터 값들은 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하며, 상기 적어도 하나의 모드 심볼의 런은 원래 입력 데이터(D1) 내의 비-모드 심볼들 전 또는 후에 상기 적어도 하나의 모드 심볼의 발생을 나타내고;
(ⅱ) 상기 디코더는 상기 디코딩된 데이터(D3)를 생성하기 위하여, 상기 적어도 하나의 모드 심볼의 대응하는 런을 상기 비-모드 심볼들 전 또는 후에 삽입하도록 동작 가능한 것을 특징으로 한다.
선택적으로, 상기 디코더는 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들을 포함하는 하나 이상의 데이터 스트림을 상기 인코딩된 데이터(E2) 내에서 수신하도록 동작 가능하다.
본 개시의 일 실시예에 따르면, 제1 타입의 데이터 값들과 제2 타입의 데이터 값들은 별개의 데이터 스트림들로 수신된다.
본 개시의 다른 실시예에 따르면, 제1 타입의 데이터 값들과 제2 타입의 데이터 값들은 단일 데이터 스트림에서 인터리브된 포맷 또는 평면 포맷으로 수신된다.
선택적으로, 디코더는 대응하는 인코더에서 함께 또는 개별적으로 하나 이상의 데이터 스트림을 압축하는데 사용되는 적어도 하나의 엔트로피 인코딩 방법의 역(inverse)을 사용하도록 동작 가능하다.
선택적으로, 상기 디코더는, 하나보다 많은 모드 심볼이 상기 인코딩된 데이터(E2)에서 사용될 때, 상기 디코딩된 데이터(D3)를 생성하기 위하여 각 모드 심볼에 대해 (i) 내지(ii)를 재귀적으로 처리하도록 동작 가능하다.
일 실시예에 따르면, 상기 디코더는 확률 및 인덱스 테이블, 모드 심볼, 모드 심볼의 카운트, 선택된 인코딩 방법의 인덱스, 데이터 값, 상이한 데이터의 최대 인덱스 중 적어도 하나에 관한 추가 정보를 수신하도록 동작 가능하다.
선택적으로, 이와 관련하여, 상기 디코더는 적어도 하나의 모드 심볼이 상기 인코딩된 데이터(E2)에서 전달되든 안 되든 간에, 선택된 인코딩 방법, 상기 적어도 하나의 모드 심볼, 모드 심볼들의 카운트 중 적어도 하나를 나타내는 인덱스를 대응하는 인코더로부터 수신하도록 동작 가능하다.
선택적으로, 상기 디코더는 인코딩된 데이터(E2)의 수신 전에 상기 추가 정보를 사전 정보로서 수신하도록 동작 가능하다. 그 대신에 선택적으로, 상기 디코더는 인코딩된 데이터(E2)의 일부로서 인코딩된 데이터(E2)와 함께 추가 정보를 수신하도록 동작 가능하다.
선택적으로, 인코딩된 데이터(E2)가 추가 인코딩 방법을 사용하여 인코딩되었을 때, 상기 디코더는 대응하는 인코더에 의해 인코딩된 데이터(E2)를 생성하기 위하여 원래 입력 데이터(D1)의 인코딩 동안에 사용된 처리 단계들의 순서에 역순의 처리 단계들로 인코딩된 데이터(E2)를 디코딩하도록 동작 가능하다. 이와 관련하여, 선택적으로, 상기 디코더는 추가 디코딩 방법을 사용하도록 동작 가능하고, 상기 추가 디코딩 방법은 델타 디코딩, 오델타 디코딩, RLE 디코딩, SRLE 디코딩, ZRLE 디코딩, MRLE 디코딩, SMRLE 디코딩, 허프만 디코딩, VLC 디코딩, 레인지 디코딩, 산술 디코딩, EM(Entropy Modifying) 디코딩, 연속 연산자 디코딩, 트루비츠 카피 디코딩 중 어느 하나를 포함한다. 이러한 추가 방법은 예를 들어 Wikipedia(위키피디아)(TCP/IP 인터넷을 통해 액세스 가능)와 같은 데이터베이스, 및 출원인이 Gurulogic Microsystems Oy로 되어 있는 공개 특허 문서(유럽 특허청의 Espacenet을 통해 액세스 가능, 발명자는 Ossi Kalevo로 되어 있음)에서 더 자세히 기재되어 있다.
제4 양태에서, 본 개시의 실시예들은 대응하는 디코딩된 데이터(D3)를 생성하기 위하여, 인코딩된 데이터(E2)를 디코딩하는 방법을 제공하며, 상기 방법은:
(i) 상기 인코딩된 데이터(E2)로부터 적어도 하나의 모드 심볼을 나타내는 정보, 비-모드 심볼들의 카운트를 나타내는 정보, 제1 타입 및 제2 타입의 데이터 값들을 디코딩하는 단계로서, 상기 제1 타입의 데이터 값들은 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하며, 상기 적어도 하나의 모드 심볼의 런은 원래 입력 데이터(D1) 내의 비-모드 심볼들 전 또는 후에 상기 적어도 하나의 모드 심볼의 발생을 나타내는, 상기 디코딩 단계; 및
(ⅱ) 상기 디코딩된 데이터(D3)를 생성하기 위하여, 상기 적어도 하나의 모드 심볼의 대응하는 런을 상기 비-모드 심볼들 전 또는 후에 삽입하는 단계를 포함하는 것을 특징으로 한다.
선택적으로, 상기 방법은 인코딩된 데이터(E2) 내에서 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 포함하는 하나 이상의 데이터 스트림을 수신하는 단계를 포함한다.
본 개시의 일 실시예에 따르면, 제1 타입의 데이터 값들과 제2 타입의 데이터 값들은 별개의 데이터 스트림들로 수신된다.
본 개시의 다른 실시예에 따르면, 제1 타입의 데이터 값들과 제2 타입의 데이터 값들은 단일 데이터 스트림에서 인터리브된 포맷 또는 평면 포맷으로 수신된다.
선택적으로, 상기 방법은 대응하는 인코더에서 함께 또는 개별적으로 하나 이상의 데이터 스트림을 압축하기 위하여 사용된 적어도 하나의 엔트로피 인코딩 방법의 역(inverse)을 사용하는 단계를 포함한다.
선택적으로, 상기 방법은 하나보다 많은 모드 심볼이 인코딩된 데이터(E2)에서 사용될 때, 디코딩된 데이터(D3)를 생성하기 위하여 각 모드 심볼에 대해 (i) 내지 (ii)를 재귀적으로 처리하는 단계를 포함한다.
일 실시예에 따르면, 상기 방법은 확률 및 인덱스 테이블, 모드 심볼, 모드 심볼의 카운트, 선택된 인코딩 방법의 인덱스, 데이터 값, 상이한 데이터의 최대 인덱스 중 적어도 하나에 관한 추가 정보를 수신하는 단계를 포함한다.
선택적으로, 이와 관련하여, 상기 방법은 상기 적어도 하나의 모드 심볼이 상기 인코딩된 데이터(E2)에서 전달되든 안 되든 간에, 선택된 인코딩 방법, 상기 적어도 하나의 모드 심볼, 모드 심볼들의 카운트 중 적어도 하나를 나타내는 인덱스를, 대응하는 인코더로부터 수신하는 단계를 포함한다.
선택적으로, 상기 방법은 인코딩된 데이터(E2)의 수신 전에 상기 추가 정보를 사전 정보로서 수신하는 단계를 포함한다. 그 대신에 선택적으로, 상기 방법은 인코딩된 데이터(E2)의 일부로서 인코딩된 데이터(E2)와 함께 상기 추가 정보를 수신하는 단계를 포함한다.
선택적으로, 인코딩된 데이터(E2)가 추가 인코딩 방법을 사용하여 인코딩되었을 때, 상기 방법은, 대응하는 인코더에 의해 인코딩된 데이터(E2)를 생성하기 위하여 원래 입력 데이터(D1)의 인코딩 동안에 사용된 처리 단계들의 순서에 역순의 처리 단계들로, 인코딩된 데이터(E2)를 디코딩하는 단계를 포함한다. 이와 관련하여, 선택적으로, 상기 방법은 추가 디코딩 방법을 사용하는 단계를 포함하고, 상기 추가 디코딩 방법은 델타 디코딩, 오델타 디코딩, RLE 디코딩, SRLE 디코딩, ZRLE 디코딩, MRLE 디코딩, SMRLE 디코딩, 허프만 디코딩, VLC 디코딩, 레인지 디코딩, 산술 디코딩, EM 디코딩, 연속 연산자 디코딩, 트루비츠 카피 디코딩 중 적어도 하나를 포함한다. 이러한 추가 방법은 예를 들어 Wikipedia(위키피디아)(TCP/IP 인터넷을 통해 액세스 가능)와 같은 데이터베이스, 및 출원인이 Gurulogic Microsystems Oy로 되어 있는 공개 특허 문서(유럽 특허청의 Espacenet을 통해 액세스 가능, 발명자는 Ossi Kalevo로 되어 있음)에서 더 자세히 기재되어 있다.
제5 양태에서, 본 개시의 실시예들은 코덱을 제공하고, 상기 코덱은 전술한 제1 양태에 따라 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하기 위한 적어도 하나의 인코더, 및 전술한 제3 양태에 따라 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 상기 인코딩된 데이터(E2)를 디코딩하기 위한 적어도 하나의 디코더(120)를 포함한다.
제6 양태에서, 본 개시의 실시예들은 컴퓨터 프로그램 제품을 제공하고, 상기 컴퓨터 프로그램 제품은 컴퓨터 판독 가능한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체를 포함하고, 상기 컴퓨터 판독 가능한 명령어들은 프로세싱 하드웨어를 포함하는 컴퓨터화된 디바이스에 의해 실행 가능하여, 전술한 제2 양태 또는 제4 양태에 따른 전술한 방법들 중 임의의 방법을 실행한다.
본 개시의 추가의 양태, 이점, 특징 및 목적은 이어지는 첨부된 청구범위와 관련하여 해석되는 예시적인 실시예들의 도면 및 상세한 설명으로부터 명백해질 것이다.
본 개시의 특징은 첨부된 청구범위에 의해 한정된 바와 같이 본 개시의 범위를 벗어나지 않고 다양한 조합으로 결합될 수 있음을 이해할 것이다.
위의 요약 및 예시적인 실시예의 다음의 상세한 설명은 첨부된 도면과 함께 읽으면 더 잘 이해된다. 본 개시를 예시할 목적으로, 본 개시의 예시적인 구성이 도면에 도시되어 있다. 그러나, 본 개시는 본 명세서에 개시된 특정 방법 및 장치에 한정되지 않는다. 또한, 당업자는 도면이 일정한 비례가 아니라는 것을 이해할 것이다. 가능한 곳마다, 유사한 요소는 동일한 번호로 표시되었다.
이제, 본 개시의 실시예들에 대해서 예로서만 도면을 참조하여 설명할 것이다.
도 1은 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 인코더 및 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 디코더의 개략도이고, 본 개시의 일 실시예에 따라 상기 인코더 및 상기 디코더는 집합적으로 코덱을 형성하고, 선택적인 엔트로피 인코더는 엔트로피-압축된 인코딩된 데이터(E3)을 생성하기 위하여 인코딩된 데이터(E2)의 엔트로피를 감소시키고, 선택적인 엔트로피 디코더는 엔트로피-압축된 인코딩된 데이터(E3)를 인코딩된 데이터(E2)로 다시 압축해제하여, 디코딩된 데이터(D3)로 디코딩될 수 있게 한다;
도 2는 본 개시의 실시예에 따라, 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 방법의 단계들을 나타내는 흐름도의 개략도이다;
도 3은 본 개시의 실시예에 따라, 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 방법의 단계들을 나타내는 흐름도의 개략도이다.
첨부된 도면에서 밑줄 친 숫자는 밑줄 친 숫자가 위치한 항목 또는 밑줄 친 숫자가 인접한 항목을 나타내기 위하여 사용된다. 밑줄이 없는 번호는 밑줄이 없는 번호와 항목을 연결하는 선에 의해 식별되는 항목에 관련된다.
다음의 상세한 설명은 본 개시의 실시예 및 이들을 구현할 수 있는 방법을 설명한다. 본 개시 내용을 수행하는 일부 모드가 개시되었지만, 당업자라면 본 개시 내용을 수행하거나 실행하기 위한 다른 실시예도 가능하다는 것을 인식할 것이다.
제1 양태에서, 본 개시의 실시예들은 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하기 위한 인코더를 제공하며,
(a) 상기 인코더는 그 내부의 적어도 하나의 모드 심볼을 식별하기 위하여 상기 입력 데이터(D1)를 분석하도록 동작 가능하고;
(b) 상기 인코더는 적어도 제1 타입 및 제2 타입의 데이터 값들을 생성하도록 동작 가능하고, 상기 제1 타입의 데이터 값들은 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하고, 상기 적어도 하나의 모드 심볼의 런은 상기 입력 데이터(D1) 내의 상기 비-모드 심볼들 전 또는 후에 상기 적어도 하나의 모드 심볼의 발생을 나타내고;
(c) 상기 인코더는 상기 비-모드 심볼들의 카운트를 나타내는 정보 및 상기 적어도 하나의 모드 심볼을 나타내는 정보를 생성하도록 동작 가능하고;
(d) 상기 인코더는 상기 인코딩된 데이터(E2)를 생성하기 위하여 상기 적어도 하나의 모드 심볼을 나타내는 정보, 상기 비-모드 심볼들의 카운트를 나타내는 정보를 어셈블링 또는 인코딩하도록 동작 가능하고, 상기 제1 타입의 데이터 값들은 상기 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하는 것을 특징으로 한다.
입력 데이터(D1)는 심볼로 표현될 수 있는 임의의 종류의 데이터일 수 있다. 심볼의 예에는 알파벳 문자, 영숫자 문자, 숫자 문자 및 그 시퀀스가 포함되지만 이에 국한되지는 않는다. 또한, 입력 데이터(D1)는 원래 데이터, 소스 데이터, 다른 인코딩 방법으로 처리된 데이터, 또는 데이터 스트림일 수 있다. 입력 데이터(D1)의 예는 이진 데이터, 텍스트 데이터, 오디오 데이터, 이미지 데이터, 비디오 데이터, 측정 데이터, 센서 데이터, 생체 데이터, 생물학적 유전 데이터, 게놈 데이터, 변환 계수(transform coefficient) 데이터, 변형된 데이터, 처리된 데이터 및 부분 데이터를 포함하지만, 이에 한정되는 것은 아니다.
전술한 변환 계수 데이터 및 전술한 변환된 데이터를 참조하여, 본 개시에 따른 전술한 방법 또는 방법들에 대하여, 관련된 입력 데이터(D1), 사용될 수 있는 계수에 대하여, 관련 변환의 일부 예는:
DCT(Discrete Cosine Transform), DFT/FFT(Discrete/Fast Fourier Transform), 하다마드(Hadamard) 변환, 하르(Haar) 변환, 웨이블릿(wavelets), DST(Discrete Sine Transform), KLT(Karhunen-Loeve Transform), 선형 변환, 아핀(affine) 변환, 반사, 트랜스레이션(translation), 회전, 스케일링, 쉬어(shear), 멀티레벨 코딩, 오델타 코딩, 양자화, 색 공간 변환, 선형 필터(FIR, IIR), 비선형 변환(부분 함수) 및 비선형 필터(메디안(median), 모드)를 포함하지만 이에 한정되지는 않는다. 이러한 전술한 변환은 대응하는 처리된 데이터가 본 개시에 따른 방법 또는 방법들에 의해 사용되기 전에, 입력 데이터(D1)를 처리하기 위하여 선택적으로 사용된다. 이러한 변환은 예를 들어 예를 들어 Wikipedia(위키피디아)(TCP/IP 인터넷을 통해 액세스 가능)와 같은 데이터베이스, 및 출원인이 Gurulogic Microsystems Oy로 되어 있는 공개 특허 문서(유럽 특허청의 Espacenet을 통해 액세스 가능, 발명자는 Ossi Kalevo로 되어 있음)에서 더 자세히 기재되어 있다.
전술한 인코더는 입력 데이터(D1)에 적어도 하나의 우세한(dominant) 심볼이 있을 때 매우 효율적이다. 본 개시에 걸쳐, "모드 심볼(mode symbol)"이라는 용어는 입력 데이터(D1)에서 우세한 심볼을 지칭하는 반면, "비-모드 심볼(non-mode symbol)"이라는 용어는 입력 데이터(D1)에서 우세하지 않은 심볼을 지칭한다. 다시 말해서, 모드 심볼은 입력 데이터(D1)에서 가장 자주 발생하는 심볼인 반면, 비-모드 심볼은 모드 심볼 이외의 심볼이다.
제로(zero)가 주어진 입력 데이터(D1)에서 가장 우세한 값이라면, 때때로 모드 심볼이 값에 있어 제로와 동일할지라도 "모드(mode)"는 "제로"와 동일하지 않다는 것을 알 수 있을 것이다.
여기서, 입력 데이터(D1)에 하나보다 많은 모드 심볼이 있을 수 있고, 본 개시의 실시예들은 하나보다 많은 모드 심볼이 있는 경우에 유사한 방식으로 구현될 수 있음을 주목해야 한다. 선택적으로, 이러한 경우에, 인코더는 각 모드 심볼에 대해 (a) 내지 (d)를 재귀적으로 처리하도록 동작 가능하다.
일 실시예에 따르면, 인코더는 입력 데이터(D1)에 존재하는 원래 심볼들을 분리 또는 결합함으로써 (a) 내지 (d) 이전에 입력 데이터(D1)에서 심볼들을 생성하도록 동작 가능하다. 선택적으로, 이와 관련하여 인코더는,
(i) (a) 내지 (d)에 따라 처리하기 위한 하나 이상의 새로운 심볼을 생성하기 위하여 입력 데이터(D1)의 적어도 하나 이상의 부분을 분리하고/하거나;
(ii) (a) 내지 (d)에 따라 처리하기 위한 새로운 결합된 심볼들을 생성하기 위하여 상기 입력 데이터(D1)의 적어도 하나 이상의 부분의 하나 이상의 영숫자 문자를 결합하도록 동작 가능하다.
입력 데이터(D1)가 (i)에서 어떻게 분리될 수 있는지를 설명하기 위하여, 입력 데이터 스트림(D1)이 다음과 같이 24 비트를 포함하는 비트 스트림인 예가 고려될 것이다:
1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1
비트 스트림은 나중에 (a) 내지 (d)에 따라 압축될 수 있는 N-비트 심볼들로 분리될 수 있다. 본 명세서의 예에서, 비트 스트림의 일부는 다음과 같이 새로운 4-비트 심볼들을 생성하도록 분리될 수 있다 :
(1, 0, 0, 0), (0, 1, 1, 1), (1, 0, 1, 1), (1, 0, 0, 0), (1, 0, 0, 0), (1, 0, 1, 1)
위에서, 새로운 4-비트 심볼은 명확성을 위하여서만 괄호로 분리되어 있다.
다음으로,(ii)에서 영숫자 문자가 어떻게 결합될 수 있는지 설명하기 위하여, 입력 데이터 스트림(Dl)이 다음과 같이 20개의 영숫자 문자를 포함하는 예가 고려될 것이다:
A, B, B, A, A, A, B, B, A, B, A, B, A, B, B, A, B, B, A, A
이 예에서 영숫자 문자의 특정 시퀀스, 즉 'A, B, B', 'A, A' 및 'A, B'가 반복적으로 발생한다. 따라서 이러한 영숫자 문자를 결합하여 다음과 같이 새로운 결합된 심볼을 생성할 수 있다:
ABB, AA, ABB, AB, AB, ABB, ABB, AA
그런 다음 (a) 내지 (d)에 따른 처리가 새로운 심볼에 적용될 수 있다.
선택적으로, 인코더는 (d) 이전에, 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 하나 이상의 데이터 스트림 내에 삽입하도록 동작 가능하다.
본 개시의 일 실시예에 따르면, 하나 이상의 데이터 스트림 내에 삽입할 때, 인코더는 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 개별 데이터 스트림 내에 삽입하도록 동작 가능하다. 선택적으로, 이와 관련하여, 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들은 각각 제1 데이터 스트림 및 제2 데이터 스트림 내에 삽입된다.
선택적으로, 이와 관련하여, 인코더는 (a) 내지 (d)에 따라 제1 타입의 데이터 값들, 즉 비-모드 심볼을 포함하는 제1 데이터 스트림을 재귀적으로 처리하도록 동작 가능하다. 이러한 경우, 재귀(recursion)가 수행될 때마다 주어진 모드 심볼에 대해 두 가지 상이한 타입의 데이터 값들이 생성된다. 결과적으로, 상이한 타입의 데이터 값들의 카운트 및 그에 따른 인코딩된 데이터(E2)로 인코딩된 상이한 데이터 스트림의 카운트는 수행된 재귀 횟수에 1을 더한 것과 동일하다. 특히 재귀의 횟수는 원래 심볼와 상이한 모드 심볼의 카운트와 동일하다. 다시 말해서, 모드 심볼의 카운트는 인코딩 중에 얼마나 많은 재귀가 수행되었는지를 나타낸다. 여기서, 제1 데이터 스트림, 즉 제1 타입의 데이터 값들은 이전의 모드 심볼이 입력 데이터(D1)로부터 제거된 후에 생성된다는 것을 주목해야 한다. 따라서, 제1 데이터 스트림에 포함된 데이터 값들 중 적어도 하나가 모드 심볼로서 뚜렷하게 눈에 띈다면, (a) 내지 (d)에 따라 제1 데이터 스트림이 재귀적으로 처리될 수 있다.
또한, 선택적으로, 인코더는 (a) 내지 (d)에 따라 적어도 하나의 모드 심볼의 런을 포함하는 제2 데이터 스트림을 재귀적으로 처리하도록 동작 가능하다. 이는 특정 런 값이 분명한(distinct) 모드 심볼인 경우 특히 유용하다.
재귀적 처리가 수행되는 방법의 예가 나중에 제공된다.
본 개시의 또 다른 실시예에 따르면, 하나 이상의 데이터 스트림 내에 삽입할 때, 상기 인코더는 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들을 인터리브된 포맷 또는 평면 포맷으로 단일 데이터 스트림 내로 삽입하도록 동작 가능하다.
그 대신에 선택적으로, 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들이 제1 및 제2 데이터 스트림 내에 삽입될 때, 인코더는 제1 및 제2 데이터 스트림을 결합하여 인터리브된 포맷 또는 평면 포맷으로 단일 결과 데이터 스트림을 형성하도록 동작 가능하다.
일 실시예에 따르면, 인코더는 단일 결과 데이터 스트림을 제공하기 위하여 제1 및 제2 타입의 데이터 값들을 인터리브하도록 동작 가능하다. 다른 실시예에 따르면, 인코더는 단일 결과 데이터 스트림을 제공하기 위하여 인터리브된 데이터 블록으로서 제1 및 제2 타입의 데이터 값들을 인터리브하도록 동작 가능하다. 제1 및 제2 타입의 데이터 값들이 어떻게 인터리브될 수 있는지의 예는 나중에 제공될 것이다.
이하, 제1 타입(A)의 데이터 값들과 제2 타입(B)의 데이터 값들이 인터리브된 쌍(A, B)으로서 제공되는 인코딩 방법을 이하 "MRLE(Mode Run-Length Encoding)"로 칭한다.
또한, 평면 포맷에서, 제1 타입의 모든 데이터 값은 단일 결과 데이터 스트림 내에 삽입되고 이어서 제2 타입의 모든 데이터 값이 삽입되거나, 또는 그 반대로 삽입된다는 것을 유의해야 한다.
또한, 선택적으로, 인코더는 적어도 하나의 엔트로피 인코딩 방법을 사용하여 하나 이상의 데이터 스트림을 함께 또는 개별적으로 압축하도록 동작할 수 있다. 선택적으로, 이와 관련하여, 적어도 하나의 엔트로피 인코딩 방법은, 델타 인코딩, 오델타 인코딩, RLE 인코딩, SRLE 인코딩, ZRLE 인코딩, MRLE 인코딩, SMRLE 인코딩, 허프만 코딩, VLC 인코딩, 레인지 코딩, 산술 코딩, EM 인코딩, 연속 연산자 인코딩, 트루비츠 카피 코딩 중 적어도 하나를 포함한다. 이러한 적어도 하나의 인코딩 방법은 예를 들어 Wikipedia(위키피디아)(TCP/IP 인터넷을 통해 액세스 가능)와 같은 데이터베이스, 및 출원인이 Gurulogic Microsystems Oy로 되어 있는 공개 특허 문서(유럽 특허청의 Espacenet을 통해 액세스 가능, 발명자는 Ossi Kalevo로 되어 있음)에서 더 자세히 기재되어 있다.
더욱이, 선택적으로, 적어도 하나의 엔트로피 인코딩 방법은 데이터 값들의 범위 및/또는 시그널링될 심볼들에 대한 대체량을 최소화하기 위하여 페데스탈(Pedestal), 맥스인덱스(MaxIndex) 또는 룩업 테이블(Look-Up Table, LUT) 솔루션을 사용할 수 있다. 이러한 방법들은 예를 들어 Wikipedia(위키피디아)(TCP/IP 인터넷을 통해 액세스 가능)와 같은 데이터베이스, 및 출원인이 Gurulogic Microsystems Oy로 되어 있는 공개 특허 문서(유럽 특허청의 Espacenet을 통해 액세스 가능, 발명자는 Ossi Kalevo로 되어 있음)에서 더 자세히 기재되어 있다.
선택적으로, 비-모드 심볼들의 카운트를 나타내는 정보는 인코딩된 데이터(E2) 내의 하나 이상의 데이터 스트림 전에 전달된다.
일 실시예에 따르면, 상기 인코더는 인코딩된 데이터(E2)를 적어도 하나의 디코더에 전달하도록 동작 가능하다. 일례로서, 인코딩된 데이터(E2)는 인코더에 의해 파일에 기록되고, 그 후 적어도 하나의 디코더에 의해 파일로부터 판독된다. 다른 예로서, 인코딩된 데이터(E2)는 인코더로부터 적어도 하나의 디코더로 스트리밍된다.
선택적으로, 상기 인코더는 확률 및 인덱스 테이블, 모드 심볼, 모드 심볼의 카운트, 선택된 인코딩 방법의 인덱스, 데이터 값, 상이한 데이터의 최대 인덱스 중 적어도 하나의 전달에 관한 추가 정보를 어셈블링하거나 인코딩하도록 동작 가능하다.
선택적으로, 이와 관련하여, 상기 인코더는 상기 적어도 하나의 모드 심볼이 상기 인코딩된 데이터(E2)에서 전달되든 안 되든 간에, 선택된 인코딩 방법, 적어도 하나의 모드 심볼, 모드 심볼들의 카운트 중 적어도 하나를 나타내는 인덱스를 적어도 하나의 디코더에 전달하도록 동작 가능하다.
선택적으로, 상기 인코더는 인코딩된 데이터(E2)의 전달 전에 사전 정보로서 상기 추가 정보를 전달하도록 동작 가능하다.
그 대신에 선택적으로, 상기 인코더는 인코딩된 데이터(E2)의 일부로서 인코딩된 데이터(E2)와 함께 추가 정보를 전달하도록 동작 가능하다.
더욱이, 적어도 하나의 디코더에 제공되는 인덱스가, 예를 들어, MRLE(Mode RLE) 또는 SMRLE(Split mode RLE) 방법과 같이 인코더에 의해 사용된 인코딩 방법을 선택하는 것(즉, 예를 들어, 인코더에 의해 행해진 선택)에 관한 정보를 포함할 때, 인덱스는 방법 선택 인덱스(method selection index)로서 지칭될 수 있다. 그러한 방법 선택 인덱스의 예가 'SMRLE2_X1_X2'이고, 인덱스에서 숫자 '2'는 인코딩된 데이터(E2)에 2개의 모드 심볼이 있음을 나타내고, 인덱스의 각 심볼 'Xn'은 모드 심볼들(n = 1, 2, ... N)은 인코딩된 데이터(E2) 내에서 전달된다는 것을 나타낸다. 다른 예로서, 모드 심볼들의 카운트가 인코딩된 데이터(E2) 내에서 전달될 때, 방법 선택 인덱스 'SMRLEN'이 사용될 수 있는데, 여기서 심볼 'N'은 모드 심볼들의 카운트를 나타내고, 모드 심볼들은 인코딩된 데이터(E2) 내에서 전달된다. 또 다른 예로서, 모드 심볼들이 인코딩된 데이터(E2) 내에서 전달되지 않을 때, 방법 선택 인덱스 'SMRLE2_H_F'가 사용될 수 있으며, 여기서 심볼 'H'및 'F'는 사용된 모드 심볼을 나타낸다. 또 다른 예로서, 하나의 모드 심볼이 사용되고 인코딩된 데이터(E2) 내에서 전달되는 경우, 방법 선택 인덱스 'SMRLE1_X1'이 사용될 수 있다.
이러한 방식으로, 적어도 하나의 모드 심볼 및 모드 심볼들의 카운트는 상기 인덱스를 통해 적어도 하나의 디코더에 전달된다. 인덱스에서, 선택된 방법에 관한 정보는 적어도 하나의 모드 심볼과 모드 심볼들의 카운트 사이에, 그 전에 또는 그 후에 삽입될 수 있다는 것을 알 수 있을 것이다. 또한, 선택적으로, 상기 인덱스는 입력 데이터(D1)의 첫 번째 심볼, 마지막 심볼 또는 첫 번째와 마지막 심볼 둘다가 비-모드 심볼인지 여부를 나타내는데 사용될 수 있다. 예를 들어, 방법 선택 인덱스 'SMRLE1_X1_First'는 입력 데이터(D1)의 첫 번째 심볼이 비-모드 심볼임을 나타내는 반면, 방법 선택 인덱스 'SMRLE1_Xl_Last'는 입력 데이터(D1)의 마지막 심볼이 비-모드 심볼임을 나타낸다. 마찬가지로, 방법 선택 인덱스, 'SMRLE1_Xl_FirstAndLast'는 입력 데이터(D1)의 첫 번째 및 마지막 심볼 모두가 비-모드 심볼임을 나타낸다.
전술한 추가 정보와 관련하여, 확률 테이블 및 인덱스의 전달은 특허허여된 영국 특허 GB2523348에 상세히 설명되어있다.
선택적으로, 모드 심볼들의 전달 및 상이한 모드 심볼들의 카운트들에 관한 추가 정보는 다중 모드 심볼들이 사용되는 경우에 얼마나 많은 재귀 모드 심볼들이 사용되는지를 나타낸다.
선택적으로, 다중 모드 심볼들이 사용되는 경우, 적어도 하나의 모드 심볼을 나타내는 정보는 예를 들어 제1 모드 심볼만을 포함하는 반면, 추가 정보는 다른 모드 심볼(들)의 정보를 포함한다.
선택적으로, 비-모드 심볼들의 카운트는 또한 인덱스에 의해 표시된다.
일 실시예에 따르면, 인코더는 인코딩된 데이터(E2)에서 향상된 데이터 압축도를 얻기 위하여, 복수의 인코딩 알고리즘 중에서 입력 데이터(D1)의 하나 이상의 특성에 따라 (a) 내지 (d)에서 사용될 인코딩 알고리즘을 동적으로 선택하도록 동작 가능하다.
이와 관련하여, 선택적으로, 가장 효율적인 인코딩 알고리즘은 인코딩될 입력 데이터(D1)의 본질(nature) 또는 내용(content)이 변함에 따라 동적으로 변화하는 방식으로 선택된다; 이러한 경우의 "본질"은 입력 데이터(D1)의 구조, 예를 들어 입력 데이터(D1) 내의 값 분포의 스펙트럼, 입력 데이터(D1) 내의 특정 수치의 국부적 집중(localized concentrations), 입력 데이터(D1) 내의 데이터 반복 패턴을 포함하지만, 이에 한정되는 것은 아니다. 전술한 바와 같이, 입력 데이터(D1)의 예는 이진 데이터, 텍스트 데이터, 오디오 데이터, 이미지 데이터, 비디오 데이터, 측정 데이터, 센서 데이터, 생체 데이터, 생물학적 유전 데이터, 게놈 데이터, 변환 계수 데이터, 변형된 데이터, 처리된 데이터 및 부분 데이터를 포함하지만, 이에 한정되는 것은 아니다. 선택적으로, 가장 효율적인 인코딩 알고리즘의 선택은:
(i) 상이한 인코딩 알고리즘으로 상기 입력 데이터(D1)를 압축하는 단계;
(ii) 상기 상이한 인코딩 알고리즘들 각각으로 획득된 압축된 데이터의 엔트로피를 계산하는 단계;
(iii) 상기 상이한 인코딩 알고리즘들 각각에 대해, 확률 및 인덱스 테이블, 모드 심볼, 모드 심볼의 카운트, 선택된 방법의 인덱스, 데이터 값, 상이한 데이터의 최대 인덱스 중 적어도 하나에 관한 상기 추가 정보의 전달에 필요한 데이터의 양을 계산 또는 추정하는 단계; 및
(iv) 상기 압축된 데이터의 엔트로피 및/또는 상기 추가 정보의 전달에 필요한 데이터의 양과 관련하여 상기 상이한 인코딩 알고리즘들을 비교하는 단계에 의해 수행된다.
단계 (i) 및 (ii)는 방법 선택 이전에 이미 상이한 타입의 데이터를 엔트로피-코딩함으로써 또한 대체될 수 있다. 이 접근 방식은 더 많은 처리 리소스를 필요로 하지만, 반면에 실제 데이터 크기를 기반으로 하므로 확실히 더 나은 선택을 제공한다.
일 예로서, 레인지 테이블(range table)의 전달이 효율적으로 실행될 수 있다면, 입력 데이터(D1)의 일부분은 입력 데이터(D1)의 그러한 부분을 직접 레인지 코딩함으로써 압축될 수 있다. 이에 따라, 인코딩 알고리즘 선택 프로세스가 단계 (ii) 및 (iii)에서의 엔트로피 압축에 의해 상이한 데이터 값에 생기는 추가 이점을 고려할 것이기 때문에, 인코딩된 데이터(E2)는 또한 다양한 상이한 엔트로피-코딩 방법(즉, 다양하게 서로 상이한 엔트로피-코딩 방법)을 사용하여 엔트로피-압축될 수 있다. 이는 하나 이상의 스트림으로 코딩된 값과 코딩되지 않은 그러한 값에 모두 적용된다.
일 실시예에 따르면, 인코더는 입력 데이터(D1)의 하나 이상의 부분을 인코딩하는 추가 인코딩 방법을 사용하도록 동작 가능하고, 상기 추가 방법은 델타 인코딩, 오델타 인코딩, RLE 인코딩, SRLE 인코딩, ZRLE 인코딩, MRLE 인코딩, SMRLE 인코딩, 허프만 코딩, VLC 인코딩, 레인지 코딩, 산술 코딩, EM 인코딩, 연속 연산자 인코딩, 트루비츠 카피 코딩 중 적어도 하나를 포함한다. 여기에서, "델타 인코딩(Delta encoding)"이라는 용어는 완전한 데이터 파일보다는 순차적 데이터 사이의 차이 형태로 데이터를 저장 또는 송신하는 방법을 일컫는 반면, 용어 "오델타(ODelta)"는 예를 들어 특허 문헌 GB 1412937.3에 기술된 바와 같은 이진 카운팅 방식에서 랩어라운드(wraparound)에 기반한 차동 형태의 인코딩을 일컫는다. RLE, SRLE 및 ZRLE는 예를 들어 각각 참고 문헌 [1], [2] 및 [3]에 기술된 바와 같이 사용될 수 있다. 재귀 때문에 MRLE 및 SMRLE 코딩 방법이 나열된다는 점에 유의해야 한다. 첫 번째 값 또는 두 번째 값인 데이터 시퀀스가 엔트로피-코딩 블록 내의 정확히 동일한 코딩 시스템에 새로운 입력으로서 공급되는 방식으로 재귀를 수행하는 것이 종종 가장 효율적이다. 엔트로피-코딩 블록은 그 후 MRLE/SMRLE 방법 중 어느 하나를 재귀적으로 선택하거나, 아니면, 예를 들어 레인지 코딩을 선택한다. 연속 연산자 인코딩은 예를 들어 참고 문헌 [4]에 설명된 대로 사용할 수 있다. 적어도 하나의 모드 심볼의 런은 종종 매우 큰 수일 수 있으므로, 예를 들어 연속 연산자 또는 몇몇 다른 이스케이프 값(escape value) 솔루션을 사용함으로써 이스케이프 값이 그러한 큰 수를 나타내기 위하여 사용될 수 있다는 것을 이해할 수 있을 것이다. 이스케이프 값을 사용함으로써, 데이터 값을 표현하기 위하여 부당하게 큰 값 범위를 가질 필요 없이 하나의 큰 데이터 값을 시그널링하기 위한 여러 개의 심볼을 사용할 수 있다. 예를 들어, 참고 문헌 [5]에서 기술된 바와 같이, EM 인코딩이 사용될 수 있다. 여기에서, 카피 코딩(Copy coding)은 직접 카피 또는 소위 "트루 비츠(true bits)" 타입 카피를 지칭할 수 있다. 다시 말해서, 예를 들어 데이터가 원래 8-비트 값이지만 데이터의 값 범위가 5 비트로 표시될 수 있다면, 심볼은 8-비트 심볼 대신, 5-비트 심볼로서 "트루 비츠" 타입 카피 방법으로 시그널링될 수 있다. 트루 비츠 카피 방법은 최종 페데스탈 값이 생략되고 시그널링될 수 있는 방식으로 가능한 가장 작은 값 범위를 사용함으로써 데이터 값을 시그널링하고, 맥스인덱스(MaxIndex) 값 및 필요한 비트 깊이가 또한 시그널링될 수 있다는 것을 이해해야 한다. LUTCopy 방법을 또한 사용할 수도 있는데, 여기서는 처음에 데이터에서 발생하는 값들이 룩업 테이블(Look-Up-Table)로서 시그널링된 다음에, 해당 데이터(data in question)가 LUT의 인덱스를 사용함으로써 코딩된다. 'TrueBitsCopy'는 상표이다.
예를 들어, 방법 선택 인덱스 'ODeltaSMRLEl_XlCoded'는 입력 데이터(D1)가 최초 오델타-코딩된 후, 본 개시의 실시예들에 따라 하나 이상의 인코딩 방법을 사용하여 인코딩됨을 나타낸다; 이 예에서, 하나의 전달된 모드 심볼을 갖는 SMRLE가 모드 심볼 및 제1 및 제2 데이터 스트림을 생성하는데 사용되며, 그 후 제1 및 제2 데이터 스트림은 델타 인코딩, 오델타 인코딩, RLE 인코딩, SRLE 인코딩, ZRLE 인코딩, MRLE 인코딩, SMRLE 인코딩, 허프만 코딩, VLC 인코딩, 레인지 코딩, 산술 코딩, EM 인코딩, 연속 연산자 인코딩, 트루비츠 카피 코딩와 같은 하나 이상의 미리 정의된(또는 선택의 전달과 함께 선택된) 엔트로피 인코딩 방법을 사용하여 인코딩된다. 이러한 방식으로 생성된 인코딩된 데이터(E2)는, 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)의 인코딩 동안에 사용된 처리 단계들의 순서에 역순의 처리 단계들로 적어도 하나의 디코더에서 디코딩된다; 그러한 역순은 트랜스코딩(transcoding)이 적어도 하나의 디코더에서 요구되지 않을 때 사용된다.
또한, 선택적으로, 전술한 인코더는 다른 공지된 인코더와 함께 사용될 수 있다; 예를 들어 참고 문헌 [6]에서 설명된 블록 인코더와 함께 사용된다.
단지 설명의 목적으로, 다음에는 본 개시의 실시예들에 따라 전술한 인코더가 어떻게 구현될 수 있는지에 대한 몇 가지 예를 고려할 것이다. 이제 다음과 같이 표현된 38개의 심볼(영숫자 문자)를 포함하는 입력 데이터 스트림(D1)의 부분이 고려될 것이다:
FHFFFJFFFFHFFFFHFHFFFIFFFFFFHFHIFFFFHF
입력 데이터 스트림(D1)의 부분에서, 상이한 심볼의 카운트는 다음과 같다:
F(28), H(7), I(2), J(1)
심볼 'F'의 카운트가 다른 심볼의 카운트보다 높기 때문에, 심볼 'F'는 입력 데이터 스트림(D1)에서 모드 심볼로 결정된다.
여기에 언급된 "카운트"는 실제로 확률 테이블의 값임을 알 수 있을 것이다. 이 예에서, 단지 약간의 상이한 심볼들이 발생하기 때문에, 전체 확률 테이블을 전달하는 것보다 심볼들 및 그들의 확률, 또는 그 발생 빈도(즉, "카운트")에 대한 인덱스 테이블을 전달하는 것이 잠재적으로 유리하다. 이 예에서, 가능한 다른 상이한 심볼들의 대부분은 발생 빈도가 제로이다. 따라서, 심볼 'F', 'H', 'I' 및 'J '의 인덱스는 예를 들어, 차례로, 즉 인덱스 테이블로서 전달된다. 예를 들어, 심볼 'F', 'H', 'I' 및 'J'는 각각 코딩에서 인덱스 '0', '1', '2' 및 '3'에 대응할 수 있으며, 그 후에 그들의 확률, '28','7','2' 및 '1', 즉 확률 테이블이 선택적으로 발송된다.
본 명세서의 예에서, 입력 데이터(Dl)의 심볼이 정수가 아니고 영숫자 문자이기 때문에 인덱스 'F'는 예를 들어 다음과 같이 선택적으로 계산된다.
index(F) = ascii code(F) - ascii code(A),
즉, 70 - 65 = 5.
입력 데이터(D1)가 전술한 MRLE/SMRLE 방법으로 인코딩되기 때문에, 사용된 모드 심볼들이 개별 값으로서 발송되는지, 아니면, 발송된 확률 및 인덱스 테이블로부터 직접 획득되는지 여부를 선택하는 옵션이 존재한다는 것을 또한 이해할 것이다. 사용된 모드 심볼이 개별 값으로서 발송되면, 선택적으로 그들은 발송된 테이블과 관련하여 더 이상 발송되지 않는다. 만일 사용된 모드 심볼이 발송된 확률 및 인덱스 테이블로부터 직접 획득된다면, 사용된 모드 심볼이 더 이상 별도로 발송될 필요는 없다.
본 개시의 일 실시예에 따르면, 인코더는 모드 심볼, 비-모드 스트림(non-mode stream), 즉 비-모드 심볼이 입력 데이터 스트림(D1)의 일부에서 발생할 때 비-모드 심볼을 포함하는 제1 스트림, 및 런 스트림(runs stream), 즉 각각의 비-모드 심볼 전에 발생하는 모드 심볼의 런을 포함하는 제2 스트림을 전달하도록 동작 가능하다.
따라서, 비-모드 스트림(즉, 제1 스트림)은 다음과 같이 표현될 수 있다:
HJHHHIHHIH
반면에, 런 스트림(즉, 제2 스트림)은 다음과 같이 표현될 수 있다:
1, 3, 4, 4, 1, 3, 6, 1, 0, 4, (1)
도시된 예에서, 입력 데이터 스트림(D1)의 일부에서 마지막 비-모드 심볼 후에 모드 심벌이 한번 발생한다(이하, '모드 심볼의 마지막 런'이라 칭함). 선택적으로, 마지막 비-모드 심볼 후의 모드 심볼의 마지막 런은 심볼의 총 카운트를 전달함으로써 설명될 수 있는데, 본 예에서는 38이다. 그 대신 선택적으로 마지막 비-모드 심볼 후의 모드 심볼의 마지막 런은 위의 괄호와 같이 런 스트림 끝에 값 '1'을 추가함으로써 설명될 수 있다.
값 '1'이 추가되지 않을 때, 런 스트림에서의 모드 심볼의 런의 카운트는 비-모드 스트림에서의 비-모드 심볼의 카운트와 동일하며, 도시된 예에서 10이다. 이러한 경우에, 인코딩된 데이터(E2)로 심볼들의 전체 카운트를 전달하는 것은 인코딩된 데이터(E2)의 후속 디코딩 동안 마지막 비-모드 심볼 후의 모드 심볼의 마지막 런의 결정을 가능하게 한다.
한편, 값 '1'이 추가될 때, 런 스트림에서의 모드 심볼의 런의 카운트는 비-모드 스트림에서의 비-모드 심볼의 카운트보다 1만큼 크다. 이는 마지막 비-모드 심볼 후에 모드 심볼의 마지막 런의 존재를 나타낸다.
선택적으로, 참조 문헌 [4]에서 설명된 바와 같은 연속 연산자는 본 개시의 실시예들에 따라 인코더에 의해 사용될 수 있다. 연속 연산자가 사용된다면, 비-모드 스트림의 비-모드 심볼의 카운트가 동일하게 유지되므로 모드 심볼의 런의 카운트가 증가될 수 있다. 나중에 모드 심볼의 원래 런은 주어진 디코더에서 연속 연산자를 디코딩한 후에 얻어진다.
전술한 예에서, 전달은 "비-모드 심볼의 카운트"의 전달 대신에 "비-모드 심볼의 카운트를 나타내는 정보"에 대한 것이다. 그러나, 본 발명의 실시예들은 인코딩된 데이터(E2)를 생성하기 위하여 코딩할 때 두 접근법 모두를 포함한다는 것을 알 수 있을 것이다.
제1 예에서, 모드 심볼, 비-모드 스트림(즉, 제1 스트림) 및 런 스트림(즉, 제2 스트림)은 아래에 표현된 바와 같이, 인터리브된 데이터 블록으로서 차례대로 전달될 수 있다:
F, 10, H, J, H, H, H, I, H, H, I, H, 1, 3, 4, 4, 1, 3, 6, 1, 0, 4, 1
여기서, 제1 심볼 'F'는 모드 심볼을 나타내고, 제2 심볼 '10'은 비-모드 심볼의 카운트를 나타낸다. 비-모드 심볼의 카운트를 전달하는 것은 주어진 디코더가 주어진 디코더에서 사용되는 디코딩 루프 내의 카운터의 리미터(limiter)로서 비-모드 심볼의 카운트를 사용함으로써 인코딩된 데이터(E2)를 적절히 디코딩할 수 있게 한다. 전술한 바와 같이, 주어진 디코더는 다른 관련 값들을 수신하였고, 수신된 값들로부터 그것이 필요한 정보, 즉 비-모드 심볼들의 카운트를 얻었기 때문에, 비-모드 심볼의 카운트의 전달은 또한 심볼의 총 카운트를 전달함으로써 대체될 수 있고, 여전히 주어진 디코더는 비-모드 심볼의 카운트의 특정 값을 전달받지 않고도 정확하게 동작할 수 있다는 것을 알 것이다. 따라서, "카운트"에 대한 정보는 그 특정 값을 전달하는 것만을 통해서가 아니라 다른 방법으로 선택적으로 얻어진다.
본 개시의 실시예들은 주어진 디코더가 정확한 장소에서 종료할 수 있는 방식으로 이러한 "카운트"에 관한 정보의 전달을 가능하게 한다는 것을 알 것이다. 선택적으로, 주어진 디코더에서 사용되는 디코딩 루프에 대한 카운터의 리미터가 올바르게 계산될 수 있는 한, 어느 "카운트" 또는 "카운트들"의 조합이 전달되는가는 상관 없다.
더욱이, 모드 심볼의 런은 마지막 비-모드 심볼 후에 전달된다. 따라서, 심볼의 총 카운트는 전달될 필요가 없다. 만일 심볼의 총 카운트를 알아야 할 필요가 있다면, 비-모드 심볼의 카운트와 모드 심볼의 런으로부터, 즉 이들을 모두 합산함으로써 계산될 수 있다. 나머지 하나가 알려진다면, 2개의 카운트, 즉 심볼의 총 카운트 및 비-모드 심볼의 카운트 중 임의의 것이 계산될 수 있다는 것을 이해할 것이다. 그 대신에 선택적으로, 최소 요구 사항으로서 이들 2개의 카운트 중 하나가 알려지고, 디코딩이 알려진 카운트의 도움으로 완료될 수 있는 방식으로, 제1 및 제2 스트림은 예를 들어 인터리브의 도움으로 디코딩의 목적으로 분리(split)된다.
제1 예에서, 방법 선택 인덱스인 'SMRLE1_X1'이 인코더로부터 주어진 디코더로 전달된다. 방법 선택 인덱스 'SMRLE1_X1'은 하나의 모드 심볼이 있고, 모드 심볼이 인코딩된 데이터(E2)에 제공되었음을 나타낸다.
전술한 제1 예에서, 단지 23개의 심볼이 인코더로부터 주어진 디코더로 전달되는 것이 요구된다.
제2 예에서, 비-모드 심볼들, 및 비-모드 심볼들 전, 후 및 그 사이에 발생하는 모드 심볼의 런은 아래에 표현된 바와 같이, 전달될 수 있다:
F, 10, 1, H, 3, J, 4, H, 4, H, 1, H, 3, I, 6, H, 1, H, 0, I, 4, H, 1
예를 들어, 비-모드 스트림과 런 스트림을 개별적으로 압축하는 것이 유리하지 않을 때, 비-모드 심볼들 및 모드 심볼의 런은 상기 방식으로 인터리브된다.
제2 예에서 전달된 인코딩된 데이터(E2)는 비교적 이해하기 쉽고 디코딩하기 쉽다. 앞서와 같이, 제1 심볼 "F"는 모드 심볼을 나타내고, 제2 심볼 '10'은 비-모드 심볼의 카운트를 나타낸다. 디코딩하는 동안 모드 심볼의 모든 런(즉, 숫자)은 모드 심볼의 유사한 발생 횟수로 대체된다. 결과적으로, 그 후, 디코딩된 데이터(D3)는 다음과 같이 제공된다:
FHFFFJFFFFHFFFFHFHFFFIFFFFFFHFHIFFFFHF
또한, 위의 예에서, 비-모드 스트림은 심볼 'H'의 다중 반복을 포함하는 것을 알 수 있다. 선택적으로, 이와 관련하여, 비-모드 스트림의 재귀적 처리는 다른 스트림을 전달하기 위하여 (a) 내지 (d)에 따라 수행될 수 있으며 이는 다음과 같이 표현될 수 있다:
H, 3, 1, J, 3, I, 2, I, 1
위에서 심볼 'H'는 제2 모드 심볼을 나타내고, 심볼 '3'은 남아 있는 비-모드 심볼의 카운트를 나타낸다. 그 후, 남아 있는 비-모드 심볼들, 및 남아 있는 비-모드 심볼들 전, 후, 및 그 사이에 발생하는 제2 모드 심볼의 런은 위에 도시된 바와 같이 전달된다.
제3 예에서 전체 인코딩된 데이터(E2)는 다음과 같이 전달될 수 있다.
H, F, 3, 10, J, I, I, 1, 3, 2, 1, 1, 3, 4, 4, 1, 3, 6, 1, 0, 4, 1
제3 예에서, 방법 선택 인덱스 'SMRLE2_X1_X2'가 인코더로부터 주어진 디코더에 전달된다. 방법 선택 인덱스 'SMRLE2_X1_X2'는 2개의 모드 심볼(즉, 심볼 'H'및 'F')이 있고, 이러한 모드 심볼이 인코딩된 데이터(E2)에 제공되었음을 나타낸다.
제4 예에서, 모드 심볼의 카운트는 인코딩된 데이터(E2) 내에서 전달될 수 있으며, 이는 다음과 같이 표현될 수 있다:
2, H, F, 3, 10, J, I, I, 1, 3, 2, 1, 1, 3, 4, 4, 1, 3, 6, 1, 0, 4, 1
제4 예에서, 방법 선택 인덱스 'SMRLEN'은 인코더로부터 주어진 디코더로 전달된다. 방법 선택 인덱스 'SMRLEN'은 모드 심볼들 및 모드 심볼들의 카운트가 인코딩된 데이터(E2)에서 제공되었음을 나타낸다.
제5 예에서, 모드 심볼들 및 모드 심볼들의 카운트는 인코딩된 데이터(E2) 내에서 전달되지 않으며, 이는 다음과 같이 표현될 수 있다:
3, 10, J, I, I, 1, 3, 2, 1, 1, 3, 4, 4, 1, 3, 6, 1, 0, 4, 1
제5 예에서, 방법 선택 인덱스 'SMRLE2_H_F'가 인코더에서 주어진 디코더로 전달된다. 방법 선택 인덱스 'SMRLE2_H_F'는 두 개의 모드 심볼, 즉 모드 심볼 'H' 및 'F'가 있음을 나타낸다.
또한, 선택적으로, 모든 모드 심볼에 대한 런의 스트림은 함께 결합되고 압축될 수 있다.
제6 예에서, 결합된 런 스트림은 다음과 같이 표현될 수 있다:
1, 3, 2, 1, 1, 3, 4, 4, 1, 3, 6, 1, 0, 4, 1
결합된 런 스트림에서, 상이한 런 심볼의 카운트는 다음과 같다:
0(1), 1(6), 2(1), 3(3), 4(3), 6(1)
예를 들어, 결합된 런 스트림은 레인지 코딩 또는 허프만 코딩 방법을 사용하여 압축될 수 있다.
설명의 목적으로만, 전술한 인코더가 본 개시의 실시예에 따라 어떻게 구현될 수 있는지에 대한 또 다른 예가 고려될 것이다. 이제 다음과 같이 표현된 12개의 심볼(숫자)을 포함하는 입력 데이터 스트림의 일부가 고려될 것이다:
2, 2, 3, 0, 2, 2, 2, 0, 2, 2, 1, 4
대응하여, 본 개시의 실시예에 따라 인코더에 의해 전달된 인코딩된 데이터(E2)는 다음과 같이 표현될 수 있다:
2, 5, 3, 0, 0, 1, 4, 2, 0, 3, 2, 0
여기서, 제1 심볼 '2'는 모드 심볼을 나타내고, 제2 심볼 '5'는 비-모드 심볼의 카운트를 나타낸다. 제2 심볼 '5' 다음에는 비-모드 스트림이 뒤따르고, 비-모드 스트림 다음에 런 스트림이 뒤따른다.
도시된 예에서, 원래의 비-모드 스트림은 값 '2', 즉 2'의 모드 값을 포함할 수 없다. 따라서, 선택적으로, '2'보다 큰 모든 값은 수정된 비-모드 스트림을 생성하기 위하여 1씩 감소된다. 이것은 인코딩 도중 또는 인코딩 후에, 압축 전에 구현될 수 있다.
결과적으로, 비-모드 스트림에 대한 최대 인덱스는 '4'에서 '3'으로 감소하고, 수정된 비-모드 스트림은 다음과 같이 표현된다 :
2, 0, 0, 1, 3
후속 디코딩 동안, 주어진 디코더는 모드 값 '2'와 동일하거나 그보다 큰 모든 값을 1만큼 증가시킴으로써 수정된 비-모드 스트림으로부터 원래 비-모드 스트림을 복원한다. 이 복원은 디코딩 전에 또는 디코딩과 관련하여 구현될 수 있다는 것을 이해할 것이다.
간단하고 명확하게 하기 위하여, 입력 데이터(D1)에 단일 모드 심볼이 있는 경우에 대한 예가 제공되었다. 그러나, 본 개시의 실시예들은 입력 데이터(D1)에 하나보다 많은 모드 심볼이 있는 경우에 유사한 방식으로 구현될 수 있다는 것을 유의해야 한다.
제2 양태에서, 본 개시의 실시예들은 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 방법을 제공하며, 상기 방법은,
(a) 내부의 적어도 하나의 모드 심볼을 식별하기 위하여 상기 입력 데이터(D1)를 분석하는 단계;
(b) 적어도 제1 타입 및 제2 타입의 데이터 값들을 생성하는 단계로서, 상기 제1 타입의 데이터 값들은 비-모드(non-mode) 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런(run)을 포함하고, 상기 적어도 하나의 모드 심볼의 런(run)은 상기 입력 데이터(D1) 내의 상기 비-모드 심볼들 전 또는 후에 상기 적어도 하나의 모드 심볼의 발생을 나타내는, 상기 데이터 값 생성 단계;
(c) 상기 비-모드 심볼들의 카운트를 나타내는 정보 및 상기 적어도 하나의 모드 심볼을 나타내는 정보를 생성하는 단계; 및
(d) 상기 인코딩된 데이터(E2)를 생성하기 위하여 상기 적어도 하나의 모드 심볼을 나타내는 정보, 상기 비-모드 심볼들의 카운트를 나타내는 정보를 어셈블링 또는 인코딩하는 단계로서, 상기 제1 타입의 데이터 값들은 상기 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하는, 상기 어셈블링 또는 인코딩 단계를 포함하는 것을 특징으로 한다.
일 실시예에 따르면, 상기 방법은 상기 입력 데이터(D1)에 존재하는 원래 심볼들을 분리 또는 결합함으로써 (a) 내지 (d) 이전에 입력 데이터(D1)에서 심볼들을 생성하는 단계를 포함한다. 선택적으로, 이와 관련하여, 상기 방법은:
(i) (a) 내지 (d)에 따라 처리하기 위한 하나 이상의 새로운 심볼을 생성하기 위하여 입력 데이터(D1)의 적어도 하나 이상의 부분을 분리하는 단계; 및/또는
(ii) (a) 내지 (d)에 따라 처리하기 위한 새로운 결합된 심볼들을 생성하기 위하여 상기 입력 데이터(D1)의 적어도 하나 이상의 부분의 하나 이상의 영숫자 문자를 결합하는 단계를 포함한다.
선택적으로, 상기 방법은 단계 (d) 전에, 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 하나 이상의 데이터 스트림 내에 삽입하는 단계를 포함한다.
본 개시의 일 실시예에 따르면, 하나 이상의 데이터 스트림 내에 삽입할 때, 상기 방법은 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 개별 데이터 스트림 내에 삽입하는 단계를 포함한다. 선택적으로, 이와 관련하여, 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들은 각각 제1 데이터 스트림 및 제2 데이터 스트림 내에 삽입된다.
일 실시예에 따르면, 상기 방법은 재귀적으로 사용되기 쉽다. 선택적으로, 이와 관련하여, 상기 방법은 (a) 내지 (d)에 따라 비-모드 심볼을 포함하는 제1 데이터 스트림을 재귀적으로 처리하는 단계를 포함한다.
본 개시의 또 다른 실시예에 따르면, 하나 이상의 데이터 스트림 내에 삽입할 때, 상기 방법은 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 인터리브된 포맷 또는 평면 포맷으로 단일 데이터 스트림 내로 삽입하는 단계를 포함한다.
그 대신에 선택적으로, 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들이 제1 및 제2 데이터 스트림 내에 삽입될 때, 상기 방법은 제1 및 제2 데이터 스트림을 결합하여, 인터리브된 포맷 또는 평면 포맷으로 단일 결과 데이터 스트림을 형성하는 단계를 포함한다.
일 실시예에 따르면, 상기 방법은 단일 결과 데이터 스트림을 제공하기 위하여 제1 및 제2 타입의 데이터 값들을 인터리브하는 단계를 포함한다. 또 다른 실시예에 따르면, 상기 방법은 단일 결과 데이터 스트림을 제공하기 위하여, 인터리브된 데이터 블록으로서 제1 및 제2 타입의 데이터 값들을 인터리브하는 단계를 포함한다.
또한, 선택적으로, 상기 방법은 적어도 하나의 엔트로피 인코딩 방법을 사용하여 하나 이상의 데이터 스트림을 함께 또는 개별적으로 압축하는 단계를 포함한다. 또한, 2개의 스트림들 중 하나를 엔트로피-코딩하지 않는 옵션을 선택할 수 있는데, 예를 들어 스트림들 중 하나만 엔트로피-코딩되고 스트림들 중 나머지는 엔트로피-코딩되지 않는다. 선택적으로, 이와 관련하여, 적어도 하나의 엔트로피 인코딩 방법은 델타 인코딩, 오델타 인코딩, RLE 인코딩, SRLE 인코딩, ZRLE 인코딩, MRLE 인코딩, SMRLE 인코딩, 허프만 코딩, VLC 인코딩, 레인지 코딩, 산술 코딩, EM 인코딩, 연속 연산자 인코딩, 트루비츠 카피 코딩 중 적어도 하나를 포함한다.
일 실시예에 따르면, 상기 방법은 인코딩된 데이터(E2)를 적어도 하나의 디코더에 전달하는 단계를 포함한다. 일례로서, 인코딩된 데이터(E2)는 주어진 인코더에 의해 파일에 기록되고, 그 후 적어도 하나의 디코더에 의해 파일로부터 판독된다. 다른 예로서, 인코딩된 데이터(E2)는 주어진 인코더로부터 적어도 하나의 디코더로 스트리밍된다.
일 실시예에 따르면, 상기 방법은 확률 및 인덱스 테이블, 모드 심볼, 모드 심볼의 카운트, 선택된 인코딩 방법의 인덱스, 데이터 값, 상이한 데이터의 최대 인덱스 중 적어도 하나의 전달에 관한 추가 정보를 어셈블링하거나 인코딩하는 단계를 포함한다.
선택적으로, 이와 관련하여, 상기 방법은 적어도 하나의 모드 심볼이 인코딩된 데이터(E2)에서 전달되든 안 되든 간에, 선택된 인코딩 방법, 적어도 하나의 모드 심볼, 모드 심볼들의 카운트 중 적어도 하나를 나타내는 인덱스를 적어도 하나의 디코더에 전달하는 단계를 포함한다.
선택적으로, 상기 방법은 인코딩된 데이터(E2)의 전달 이전에 상기 추가 정보를 사전 정보로서 전달하는 단계를 포함한다. 그 대신에 선택적으로, 상기 방법은 인코딩된 데이터(E2)의 일부로서 인코딩된 데이터(E2)와 함께 상기 추가 정보를 전달하는 단계를 포함한다.
일 실시예에 따르면, 상기 방법은, 인코딩된 데이터(E2)에서 향상된 데이터 압축도를 얻기 위하여, 복수의 인코딩 알고리즘 중에서, 입력 데이터(D1)의 하나 이상의 특성에 따라, (a) 내지 (d)에서 사용될 인코딩 알고리즘을 동적으로 선택하는 단계를 포함한다.
일 실시예에 따르면, 상기 방법은 입력 데이터(D1)의 하나 이상의 부분을 인코딩하기 위한 추가 인코딩 방법을 사용하는 단계를 포함하고, 상기 추가 방법은, 델타 인코딩, 오델타 인코딩, RLE 인코딩, SRLE 인코딩, ZRLE 인코딩, MRLE 인코딩, SMRLE 인코딩, 허프만 코딩, VLC 인코딩, 레인지 코딩, 산술 코딩, EM 인코딩, 연속 연산자 인코딩, 트루비츠 카피 코딩 중 적어도 하나를 포함한다. 이러한 추가 방법은 위에서 더 상세히 설명되어 있다.
제3 양태에서, 본 개시의 실시예들은 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하기 위한 디코더를 제공하며,
(ⅰ) 상기 디코더는 상기 인코딩된 데이터(E2)로부터 적어도 하나의 모드 심볼을 나타내는 정보, 비-모드 심볼들의 카운트를 나타내는 정보, 적어도 제1 타입 및 제2 타입의 데이터 값들을 디코딩하도록 동작 가능하고, 상기 제1 타입의 데이터 값들은 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하며, 상기 적어도 하나의 모드 심볼의 런은 원래 입력 데이터(D1) 내의 비-모드 심볼들 전 또는 후에 상기 적어도 하나의 모드 심볼의 발생을 나타내고;
(ⅱ) 상기 디코더는 상기 디코딩된 데이터(D3)를 생성하기 위하여, 상기 적어도 하나의 모드 심볼의 대응하는 런을 상기 비-모드 심볼들 전 또는 후에 삽입하도록 동작 가능한 것을 특징으로 한다.
선택적으로, 디코더는 제1 타입의 데이터 값들과 제2 타입의 데이터 값들을 포함하는 하나 이상의 데이터 스트림을 인코딩된 데이터(E2) 내에서 수신하도록 동작 가능하다.
본 개시의 일 실시예에 따르면, 제1 타입의 데이터 값들과 제2 타입의 데이터 값들은 별개의 데이터 스트림들로 수신된다.
본 개시의 다른 실시예에 따르면, 제1 타입의 데이터 값들과 제2 타입의 데이터 값들은 단일 데이터 스트림에서 인터리브된 포맷 또는 평면 포맷으로 수신된다.
선택적으로, 디코더는 대응하는 인코더에서 함께 또는 개별적으로 하나 이상의 데이터 스트림을 압축하는데 사용되는 적어도 하나의 엔트로피 인코딩 방법의 역(inverse)을 사용하도록 동작 가능하다.
선택적으로, 하나보다 많은 모드 심볼이 인코딩된 데이터(E2)에서 사용될 때, 디코더는 디코딩된 데이터(D3)를 생성하기 위하여 각 모드 심볼에 대해 (i) 내지 (ii)를 재귀적으로 처리하도록 동작 가능하다.
일 실시예에 따르면, 디코더는 확률 및 인덱스 테이블, 모드 심볼, 모드 심볼의 카운트, 선택된 인코딩 방법의 인덱스, 데이터 값, 상이한 데이터의 최대 인덱스 중 적어도 하나에 관한 추가 정보를 수신하도록 동작 가능하다. 선택적으로, 이와 관련하여, 디코더는 인코딩된 데이터(E2)의 적절한 디코딩을 위하여 상기 추가 정보를 사용하도록 동작 가능하다.
선택적으로, 이와 관련하여, 디코더는 상기 적어도 하나의 모드 심볼이 상기 인코딩된 데이터(E2)에서 전달되든 안 되든 간에, 선택된 인코딩 방법, 적어도 하나의 모드 심볼, 모드 심볼들의 카운트 중 적어도 하나를 나타내는 인덱스를 대응하는 인코더로부터 수신하도록 동작 가능하다.
선택적으로, 디코더는 인코딩된 데이터(E2)의 수신 전에 상기 추가 정보를 사전 정보로서 수신하도록 동작 가능하다. 그 대신에 선택적으로, 디코더는 인코딩된 데이터(E2)의 일부로서 인코딩된 데이터(E2)와 함께 상기 추가 정보를 수신하도록 동작 가능하다.
선택적으로, 인코딩된 데이터(E2)가 추가적인 인코딩 방법을 사용하여 인코딩되었을 때, 디코더는 대응하는 인코더에 의해 인코딩된 데이터(E2)를 생성하기 위하여 원래 입력 데이터(D1)의 인코딩 동안에 사용된 처리 단계들의 순서에 역순의 처리 단계들로 인코딩된 데이터(E2)를 디코딩하도록 동작 가능하다. 이와 관련하여, 선택적으로, 디코더는 추가 디코딩 방법을 사용하도록 동작 가능한데, 추가 디코딩 방법은, 델타 디코딩, 오델타 디코딩, RLE 디코딩, SRLE 디코딩, ZRLE 디코딩, MRLE 디코딩, SMRLE 디코딩, 허프만 디코딩, VLC 디코딩, 레인지 디코딩, 산술 디코딩, EM 디코딩, 연속 연산자 디코딩, 트루비츠 카피 디코딩 중 적어도 하나를 포함한다. 따라서, 디코딩 방법은 인코더에서 사용된 코딩 방법의 역 방법이다; 그러나, 트랜스코딩이 디코더에서 구현될 때, 데이터 D1, D3이 서로 상이하지만 종종 실질적으로 유사한 내용을 포함하도록, 추가 또는 대안적인 방법이 디코더에서 사용된다; 예를 들어, 디코더는 모바일 무선 디바이스 상에서 구현되고, 입력 데이터(D1)에 존재하는 비디오 콘텐츠를 리포맷(reformat)하기 위한 트랜스 코딩에 적용되고, 인코딩된 데이터(E2)로 인코딩되어, 콘텐츠가 적절한 방식으로 모바일 무선 디바이스의 소형 픽셀 디스플레이 상에 제시될 수 있다. 이러한 추가적인 또는 대안적인 방법은 예를 들어 위에서 더 상세히 설명되어 있다.
또한, 선택적으로, 전술한 디코더는 다른 공지된 디코더와 함께 사용될 수 있다. 예를 들어, 참고 문헌 [7]에서 설명된 바와 같은 블록 디코더와 함께 사용될 수 있다.
제4 양태에서, 본 개시의 실시예들은 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 방법을 제공하며, 상기 방법은:
(i) 상기 인코딩된 데이터(E2)로부터 적어도 하나의 모드 심볼을 나타내는 정보, 비-모드 심볼들의 카운트를 나타내는 정보, 제1 타입 및 제2 타입의 데이터 값들을 디코딩하는 단계로서, 상기 제1 타입의 데이터 값들은 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하며, 상기 적어도 하나의 모드 심볼의 런은 원래 입력 데이터(D1) 내의 비-모드 심볼들 전 또는 후에 상기 적어도 하나의 모드 심볼의 발생을 나타내는, 상기 디코딩 단계; 및
(ⅱ) 상기 디코딩된 데이터(D3)를 생성하기 위하여, 상기 적어도 하나의 모드 심볼의 대응하는 런을 상기 비-모드 심볼들 전 또는 후에 삽입하는 단계를 포함하는 것을 특징으로 한다.
선택적으로, 상기 방법은 인코딩된 데이터(E2) 내에서 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 포함하는 하나 이상의 데이터 스트림을 수신하는 단계를 포함한다.
본 개시의 일 실시예에 따르면, 제1 타입의 데이터 값들과 제2 타입의 데이터 값들은 별개의 데이터 스트림들로 수신된다.
본 개시의 다른 실시예에 따르면, 제1 타입의 데이터 값들과 제2 타입의 데이터 값들은 단일 데이터 스트림에서 인터리브된 포맷 또는 평면 포맷으로 수신된다.
선택적으로, 상기 방법은 대응하는 인코더에서 함께 또는 개별적으로 하나 이상의 데이터 스트림을 압축하기 위하여 사용되는 적어도 하나의 엔트로피 인코딩 방법의 역을 사용하는 단계를 포함한다.
선택적으로, 하나보다 많은 모드 심볼이 인코딩된 데이터(E2)에 사용될 때, 상기 방법은 디코딩된 데이터(D3)를 생성하기 위하여 각 모드 심볼에 대해 (i) 내지 (ii)를 재귀적으로 처리하는 단계를 포함한다.
일 실시예에 따르면, 방법은 확률 및 인덱스 테이블, 모드 심볼, 모드 심볼의 카운트, 선택된 인코딩 방법의 인덱스, 데이터 값, 상이한 데이터의 최대 인덱스 중 적어도 하나에 관한 추가 정보를 수신하는 단계를 포함한다. 선택적으로, 이와 관련하여, 상기 방법은 인코딩된 데이터(E2)의 적절한 디코딩을 위하여 상기 추가 정보를 사용하는 단계를 포함한다.
선택적으로, 이와 관련하여, 상기 방법은 적어도 하나의 모드 심볼이 상기 인코딩된 데이터(E2)에서 전달되든 안 되든 간에, 선택된 인코딩 방법, 적어도 하나의 모드 심볼, 모드 심볼들의 카운트 중 적어도 하나를 나타내는 인덱스를 대응하는 인코더로부터 수신하는 단계를 포함한다.
선택적으로, 상기 방법은 인코딩된 데이터(E2)의 수신 전에 상기 추가 정보를 사전 정보로서 수신하는 단계를 포함한다. 그 대신에 선택적으로, 상기 방법은 인코딩된 데이터(E2)의 일부로서 인코딩된 데이터(E2)와 함께 상기 추가 정보를 수신하는 단계를 포함한다.
선택적으로, 인코딩된 데이터(E2)가 추가 인코딩 방법을 사용하여 인코딩되었을 때, 상기 방법은 대응하는 인코더에 의해 인코딩된 데이터(E2)를 생성하기 위하여 원래 입력 데이터(D1)의 인코딩 동안에 사용된 처리 단계들의 순서에 역순의 처리 단계들로 인코딩된 데이터(E2)를 디코딩하는 단계를 포함한다. 이와 관련하여, 선택적으로, 상기 방법은 추가 디코딩 방법을 사용하는 단계를 포함하며, 상기 추가 디코딩 방법은 델타 디코딩, 오델타 디코딩, RLE 디코딩, SRLE 디코딩, ZRLE 디코딩, MRLE 디코딩, SMRLE 디코딩, 허프만 디코딩, VLC 디코딩, 레인지 디코딩, 산술 디코딩, EM 디코딩, 연속 연산자 디코딩, 트루비츠 카피 디코딩 중 적어도 하나를 포함한다. 그러한 추가 디코딩 방법은 앞에서 그리고 참고 문헌에서 언급된 문서에 기재되어 있다. (또한, 그러한 방법은 예를 들어 Wikipedia(위키피디아)(TCP/IP 인터넷을 통해 액세스 가능)와 같은 데이터베이스, 및 출원인이 Gurulogic Microsystems Oy로 되어 있는 공개 특허 문서(유럽 특허청의 Espacenet을 통해 액세스 가능, 발명자는 Ossi Kalevo로 되어 있음)에서 기재되어 있다.)
제5 양태에서, 본 개시의 실시예는 코덱을 제공하고, 상기 코덱은 전술한 제1 양태에 따라 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하기 위한 적어도 하나의 인코더, 및 전술한 제3 양태에 따라 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 상기 인코딩된 데이터(E2)를 디코딩하기 위한 적어도 하나의 디코더를 포함한다.
예시적인 코덱은 아래에 더 상세히 설명된 바와 같이 도 1과 관련하여 제공되었다. 코덱은 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 적어도 하나의 인코더(110), 및 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 적어도 하나의 디코더(120)를 포함한다. 인코더(110)는 본 개시의 실시예에 따라 입력 데이터(D1)를 인코딩하기 위하여 사용되는 MRLE/SMRLE 인코더(111)를 포함한다. 인코더(110)는 선택적으로 엔트로피 인코더(112)를 포함하고, 엔트로피 인코더(112)는 엔트로피-압축된 인코딩된 데이터(E3)를 생성하기 위하여 인코딩된 데이터(E2)의 엔트로피 압축에 사용된다. 디코더(120)는 인코딩된 데이터(E2)를 디코딩하는데 사용되는 MRLE/SMRLE 디코더(121)를 포함한다. 디코더(120)는 인코딩된 데이터(E2)를 생성하기 위하여 엔트로피-압축된 인코딩된 데이터(E3)를 엔트로피 압축해제하는 엔트로피 디코더(122)를 포함한다. 집합적으로, 적어도 하나의 인코더(110) 및 적어도 하나의 디코더(120)는 코덱(130)을 구성한다.
입력 데이터(D1) 또는 그 일부는 MRLE/SMRLE 인코더(111) 또는 다른 인코딩 방법으로 인코딩될 수 있다. 인코딩된 데이터(E2)는 선택적으로 엔트로피 인코더(112) 또는 다른 엔트로피 압축기(entropy compressor)로 엔트로피-압축될 수 있다.
인코딩된 데이터(E2)는 MRLE/SMRLE 인코더(111)로 인코딩되었으면 MRLE/SM RLE 디코더(121)로 디코딩될 수 있거나, 사용된 인코딩 방법에 역 카운터파트(inverse counterpart)로 디코딩될 수 있다. 인코딩된 데이터(E2)가 엔트로피-압축된 인코딩된 데이터(E3)로 선택적으로 엔트로피-압축되었다면, 엔트로피 인코더(112)에 의해 사용된 엔트로피 인코딩 방법의 역 카운터파트를 사용하여, 디코딩 전에 다시 인코딩된 데이터(E2)로 엔트로피-압축해제된다. 엔트로피 코딩이 하나 이상의 데이터 섹션 또는 하나 이상의 데이터 섹션의 값에 선택적으로 사용될 때, 사용된 방법에 대한 정보 및 상기 방법이 정확한 디코딩을 가능하게 하기 위하여 필요로 하는 모든 데이터가 인코딩된 데이터 내로 삽입될 필요가 있다.
선택적으로, 디코딩된 데이터(D3)는 무손실(lossless) 동작 모드에서와 같이 입력 데이터(D1)와 동일하다(identical with, namely identical to). 그 대신에 선택적으로, 디코딩된 데이터(D3)는 손실(lossy) 동작 모드에서와 같이 입력 데이터(D1)와 대략 유사하다. 또한, 그 대신에 선택적으로, 디코딩된 데이터(D3)는 예를 들어 트랜스 코딩과 같은 변환을 통하여, 입력 데이터(D1)와 상이하지만, 입력 데이터(D1)에 존재하는 실질적으로 유사한 정보를 보유한다; 예를 들어, 상이한 타입의 통신 플랫폼, 소프트웨어 계층, 통신 디바이스, 디스플레이 디바이스 등과 호환 가능하기 위하여 디코딩된 데이터(D3)의 재포맷(reformatting)이 또한 요구될 때, 디코딩된 데이터(D3)는 유용하게도 입력 데이터(D1)와 상이하게 된다.
적어도 하나의 인코더는 본 개시의 실시예에 따라 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 처리하기 위한 데이터 프로세싱 장치(arrangement)를 포함한다. 선택적으로, 적어도 하나의 인코더의 데이터 프로세싱 장치는 앞서 상세히 설명된 프로그램 명령어들을 실행하도록 동작 가능한 적어도 하나의 RISC(Reduced Instruction Set Computing) 프로세서를 사용함으로써 구현된다.
또한, 선택적으로, 적어도 하나의 인코더(110)는 인코딩된 데이터(E2)를 데이터 서버 및/또는 데이터베이스에 저장하기 위한 데이터 저장 장치(data storage)에 전달하도록 동작 가능하다. 데이터 서버 및/또는 데이터 저장 장치는 인코딩된 데이터(E2)를 나중에 디코딩하기 위하여, 적어도 하나의 인코더(110)와 유리하게 호환 가능한 적어도 하나의 디코더(120)에 액세스 가능하도록 구성(arrange)된다.
일부 예에서, 적어도 하나의 디코더는 데이터 서버 및/또는 데이터 저장 장치로부터 인코딩된 데이터(E2)를 액세스하도록 선택적으로 동작 가능하다.
대안적인 실시예에서, 적어도 하나의 인코더(110)는 통신 네트워크 또는 직접 연결을 통해 인코딩된 데이터(E2)를 적어도 하나의 디코더(120)로 스트리밍하도록 선택적으로 동작 가능하다. 또한, 하드웨어 기반 또는 소프트웨어 기반의 인코더를 갖춘 디바이스는 또한, 하드웨어 기반 또는 소프트웨어 기반의 디코더를 갖춘 다른 디바이스와 직접 통신할 수 있다는 것을 유의해야 한다.
또 다른 대안적인 예에서, 적어도 하나의 디코더(120)는 하드 드라이브 및 SSD(Solid-State Drive)와 같은 비-일시적(non-transitory)(즉 non-transient) 컴퓨터 판독 가능한 저장 매체로부터 인코딩된 데이터(E2)를 검색(retrieve)하도록 선택적으로 구현된다.
적어도 하나의 디코더(120)는 본 개시의 실시예에 따라 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 처리하기 위한 데이터 프로세싱 장치를 포함한다. 선택적으로, 적어도 하나의 디코더(120)의 데이터 처리 장치는 앞서 상세히 설명한 바와 같이 프로그램 명령어들을 실행하도록 동작 가능한 적어도 하나의 RISC 프로세서를 사용함으로써 구현된다; 그러한 RISC 프로세서는 매우 고속으로 비교적 더 간단한 연쇄 연산(concatenated operations)을 수행할 수 있고, 예를 들어 실시간으로 스트리밍된 포맷으로 제공되는 데이터를 디코딩하는데 적합하다.
본 개시의 실시예가 멀티 캐스팅 방식으로 구현되는 경우, 사용되는 그러한 디코더는 복수 존재한다.
선택적으로, 코덱(130)은 단일 디바이스 내에 구현된다. 그 대신에 선택적으로, 코덱(130)은 다수의 디바이스들 사이에서 효과적으로 구현된다. 선택적으로, 코덱(130)은 예를 들어 하나 이상의 ASIC(Application-Specific Integrated Circuits)의 사용을 통해 커스텀-설계 디지털 하드웨어로서 구현된다. 대안적으로 또는 추가적으로, 선택적으로, 코덱(130)은 예를 들어 비-일시적인(non-transient)(non-transitory) 머신 판독 가능한 데이터 캐리어 상에서 컴퓨팅 하드웨어에 제공되는 프로그램 명령어들을 실행하도록 동작 가능한 컴퓨팅 하드웨어를 사용하여 구현된다.
예를 들어, 적어도 하나의 인코더(110) 및/또는 적어도 하나의 디코더(120)는 가전 장치, 무선 통신 장치 및 관련 시스템, 디지털 카메라, 스마트폰, 태블릿 컴퓨터, 퍼스널 컴퓨터, 과학 측정 장치, 통신 장비, 화상 회의 장비, 위성에서 유리하게 사용될 수 있으나, 이에 한정되는 것은 아니다.
제6 양태에서, 본 개시의 실시예는 컴퓨터 프로그램 제품을 제공하고, 상기 컴퓨터 프로그램 제품은 컴퓨터 판독 가능한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체를 포함하고, 상기 컴퓨터 판독 가능한 명령어들은 프로세싱 하드웨어를 포함하는 컴퓨터화된 디바이스에 의해 실행 가능하여, 전술한 제2 양태 또는 제4 양태에 따른 전술한 방법들 중 임의의 방법을 실행한다.
선택적으로, 컴퓨터 판독 가능한 명령어들은 소프트웨어 애플리케이션 스토어, 예를 들어 "App store"로부터 컴퓨터화된 디바이스로 다운로드 가능하다.
다음으로, 본 개시의 실시예가 도면을 참조하여 설명될 것이다.
도 1을 참조하면, 본 발명의 실시예는:
(i) 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 인코더(110), 및 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 대응하는 방법;
(ii) 대응하는 디코딩 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 디코더(120), 및 디코딩 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 대응하는 방법; 및
(iii) 적어도 하나의 인코더 및 적어도 하나의 디코더의 결합, 예를 들어 인코더(110)와 디코더(120)의 결합을 포함하는 코덱(130)에 관한 것이다.
인코더(110)는 MRLE/SMRLE 인코더(111)를 포함하는 반면, 디코더(120)는 MRLE/SMRLE 디코더(121)를 포함한다. 선택적으로, 인코더(110)는 엔트로피-압축된 인코딩된 데이터(E3)를 생성하기 위하여 인코딩된 데이터(E2)의 엔트로피를 감소시키는 엔트로피 인코더(112)를 포함하는 반면, 디코더(120)는 엔트로피-압축된 인코딩된 데이터(E3)를 다시 인코딩된 데이터(E2)로 압축해제하는 엔트로피 디코더(122)를 포함한다.
도 1은 단지 예일 뿐이며, 본 명세서의 청구범위를 부당하게 제한하지 않는다. 코덱(130)에 대한 특정 지정은 일례로서 제공되며, 코덱(130)을 특정 수, 타입 또는 구성의 인코더 및 디코더로 제한하는 것으로 해석되어서는 안 됨을 이해해야 한다. 당업자는 본 개시의 실시예들의 많은 변형, 대안 및 수정을 인식할 것이다.
이제 도 2를 참조하면, 본 개시의 일 실시예에 따라, 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 방법의 단계들을 나타내는 흐름도가 제공된다. 이 방법은 논리적인 흐름도의 단계들의 집합으로서 도시되며, 이는 전술한 바와 같이 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있는 일련의 단계들을 나타낸다.
단계(202)에서, 입력 데이터(D1)는 그 내부의 적어도 하나의 모드 심볼을 식별하기 위하여 분석된다.
단계(204)에서, 적어도 제1 타입 및 제2 타입의 데이터 값들이 생성되고, 제1 타입의 데이터 값들은 비-모드 심볼을 포함하고, 제2 타입의 데이터 값들은 적어도 하나의 모드 심볼의 런을 포함한다. 적어도 하나의 모드 심볼의 런은 입력 데이터(D1) 내의 비-모드 심볼 전 또는 후의 적어도 하나의 모드 심볼의 발생을 표시한다.
단계(206)에서, 비-모드 심볼들의 카운트를 나타내는 정보 및 적어도 하나의 모드 심볼을 나타내는 정보가 생성된다.
단계(208)에서, 단계(206)에서 생성된 적어도 하나의 모드 심볼을 나타내는 정보, 단계(206)에서 생성된 비-모드 심볼의 카운트를 나타내는 정보, 및 단계(204)에서 생성된 제1 타입 및 제2 타입의 데이터 값들이 인코딩되어, 인코딩된 데이터(E2)를 생성한다.
단계들(202 내지 208)은 단지 예시적인 것이며, 본 명세서의 청구범위를 벗어나지 않으면서 하나 이상의 단계가 추가되거나, 하나 이상의 단계가 제거되거나, 하나 이상의 단계가 상이한 순서로 제공되는 경우에 다른 대안들이 또한 제공될 수 있다.
이제 도 3을 참조하면, 본 개시의 일 실시예에 따라, 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 방법의 단계들을 나타내는 흐름도가 제공된다. 상기 방법은 논리적인 흐름도의 단계들의 집합으로서 도시되며, 이는 전술한 바와 같이 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있는 일련의 단계들을 나타낸다.
단계(302)에서, 적어도 하나의 모드 심볼을 나타내는 정보, 비-모드 심볼의 카운트를 나타내는 정보, 비-모드 심볼을 포함하는 제1 타입의 데이터 값들 및 적어도 하나의 모드 심볼의 런을 포함하는 제2 타입의 데이터 값들은 인코딩된 데이터(E2)로부터 디코딩된다.
단계(304)에서, 적어도 하나의 모드 심볼의 대응하는 런은 디코딩된 데이터(D3)를 생성하기 위하여 비-모드 심볼들 전 또는 후에 삽입된다.
단계(302 내지 304)는 단지 예시적인 것이며, 본 명세서의 청구범위를 벗어나지 않고 하나 이상의 단계가 추가되거나, 하나 이상의 단계가 제거되거나, 하나 이상의 단계가 상이한 순서로 제공되는 경우에 다른 대안이 또한 제공될 수 있다 .
전술한 본 발명의 실시예에 대한 수정은 첨부된 청구범위에 의해 한정된 본 발명의 범위를 벗어나지 않고 가능하다. 본 발명을 설명하고 청구하는 데 사용되는 "포함하는(including)", "포함하는(comprising)", "포함하는(incorporating)", "이루어진(consisting of)", "가진다(have)", "이다(is)"와 같은 표현은 비-배타적인 방식으로 해석되는 것, 즉, 항목, 컴포넌트 또는 요소가 명시적으로 기재되지 않고 존재하는 것을 허용하는 것을 의도한다. 단수의 언급은 또한 복수형과 관련되는 것으로 해석되어야 한다. 첨부된 청구범위에서 괄호 내에 포함된 숫자는 청구범위의 이해를 돕기 위한 것이며, 청구범위에 의해 청구되는 내용을 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다.
참고 문헌
[1] Run-length encoding(런-길이 인코딩) - Wikipedia, the free encyclopedia (2015년 3월 25일 액세스);
URL: http://en.wikipedia.org/wiki/Run- length encoding
[2] Data Encoder, Data Decoder and Method(데이터 인코더, 데이터 디코더 및 방법) (2015년 3월 25일 액세스);
URL: http://quruloqic.com/files/US8823560Bl.pdf
[3] Proposal for a new zlib strategy(새로운 zlib 전략에 대한 제안): Z_RLE (2015년 3월 25일 액세스);
URL: http://optipnq.sourceforge.net/pngtech/z rle .html
[4] ENCODER APPARATUS, DECODER APPARATUS AND METHOD(인코더 장치, 디코더 장치 및 방법) (2015년 3월 25일 액세스);
URL: http://quruloqic.com/files/US8933826B2.pdf
[5] Entropy Modifier and Method(엔트로피 변경자 및 방법) (2015년 3월 25일 액세스);
URL: http://quruloqic.com/files/US8754791Bl.pdf
[6] Encoder and Method(인코더 및 방법) (2015년 3월 25일 액세스);
URL: http://quruloqic.com/files/US8675731B2.pdf
[7] Decoder and Method(디코더 및 방법) (2015년 3월 25일 액세스);
URL: http://quruloqic.com/files/US2014044191Al.pdf

Claims (54)

  1. 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 인코더(110)에 있어서,
    (a) 상기 인코더(110)는 그 내부의 적어도 하나의 모드 심볼을 식별하기 위하여 상기 입력 데이터(D1)를 분석하도록 동작 가능하고;
    (b) 상기 인코더(110)는 적어도 제1 타입 및 제2 타입의 데이터 값들을 생성하도록 동작 가능하고, 상기 제1 타입의 데이터 값들은 비-모드(non-mode) 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런(run)을 포함하고, 상기 적어도 하나의 모드 심볼의 런은 상기 입력 데이터(D1) 내의 상기 비-모드 심볼들 전 또는 후에 상기 적어도 하나의 모드 심볼의 발생을 나타내고;
    (c) 상기 인코더(110)는 상기 비-모드 심볼들의 카운트를 나타내는 정보 및 상기 적어도 하나의 모드 심볼을 나타내는 정보를 생성하도록 동작 가능하고;
    (d) 상기 인코더(110)는 상기 인코딩된 데이터(E2)를 생성하기 위하여 상기 적어도 하나의 모드 심볼을 나타내는 정보, 상기 비-모드 심볼들의 카운트를 나타내는 정보를 어셈블링 또는 인코딩하도록 동작 가능하고, 상기 제1 타입의 데이터 값들은 상기 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하는 것을 특징으로 하는 인코더(110).
  2. 제1항에 있어서, 상기 인코더(110)는 (d) 전에 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들을 하나 이상의 데이터 스트림 내로 삽입하도록 동작 가능한 것을 특징으로 하는 인코더(110).
  3. 제2항에 있어서, 상기 하나 이상의 데이터 스트림 내에 삽입할 때, 상기 인코더(110)는 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들을 개별적인 데이터 스트림들 내로 삽입하도록 동작 가능한 것을 특징으로 하는 인코더(110).
  4. 제2항 또는 제3항에 있어서, 상기 인코더(110)는 (a) 내지 (d)에 따라 상기 비-모드 심볼들을 포함하는 주어진 데이터 스트림을 재귀적으로(recursively) 처리하도록 동작 가능한 것을 특징으로 하는 인코더(110).
  5. 제2항에 있어서, 상기 하나 이상의 데이터 스트림 내로 삽입할 때, 상기 인코더(110)는 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들을 인터리브된 포맷 또는 평면 포맷으로 단일 데이터 스트림 내로 삽입하도록 동작 가능한 것을 특징으로 하는 인코더(110).
  6. 제2항 내지 제5항 중 어느 한 항에 있어서, 상기 인코더(110)는 적어도 하나의 엔트로피 인코딩 방법을 사용하여 상기 하나 이상의 데이터 스트림을 함께 또는 개별적으로 압축하도록 동작 가능한 것을 특징으로 하는 인코더(110).
  7. 제6항에 있어서, 상기 적어도 하나의 엔트로피 인코딩 방법은, 델타(Delta) 인코딩, 오델타(ODelta) 인코딩, RLE(Run Length Encoding) 인코딩, SRLE(Split RLE) 인코딩, ZRLE 인코딩, MRLE(Mode RLE) 인코딩, SMRLE(Split mode RLE) 인코딩, 허프만(Huffman) 코딩, VLC(Variable-Length Code) 인코딩, 레인지(Range) 코딩, 산술 코딩, EM(Entropy Modifying) 인코딩, 연속 연산자(Continuum operator) 인코딩, 트루비츠 카피(TrueBits Copy) 코딩 중 적어도 하나를 포함하는 것을 특징으로 하는 인코더(110).
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 인코더(110)는 확률 및 인덱스 테이블들, 모드 심볼들, 모드 심볼들의 카운트들, 선택된 인코딩 방법들의 인덱스들, 데이터 값들, 상이한 데이터의 최대 인덱스들 중 적어도 하나의 전달과 관련된 추가 정보를 어셈블링 또는 인코딩하도록 동작 가능한 것을 특징으로 하는 인코더(110).
  9. 제8항에 있어서, 상기 인코더(110)는 상기 적어도 하나의 모드 심볼이 상기 인코딩된 데이터(E2)에서 전달되든 안 되든 간에, 선택된 인코딩 방법, 상기 적어도 하나의 모드 심볼, 모드 심볼들의 카운트 중 적어도 하나를 나타내는 인덱스를 적어도 하나의 디코더에 전달하도록 동작 가능한 것을 특징으로 하는 인코더(110).
  10. 제8항 또는 제9항에 있어서, 상기 인코더(110)는 상기 인코딩된 데이터(E2)의 전달 전에 상기 추가 정보를 사전 정보로서 전달하도록 동작 가능한 것을 특징으로 하는 인코더(110).
  11. 제8항 또는 제9항에 있어서, 상기 인코더(110)는 상기 인코딩된 데이터(E2)의 일부로서 상기 인코딩된 데이터(E2)와 함께 상기 추가 정보를 전달하도록 동작 가능한 것을 특징으로 하는 인코더(110).
  12. 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 인코더(110)는 상기 입력 데이터(D1)에 존재하는 원래 심볼들을 분리(split) 또는 결합함으로써 (a) 내지 (d) 전에 상기 입력 데이터(D1) 내에 심볼들을 생성하도록 동작 가능한 것을 특징으로 하는 인코더(110).
  13. 제12항에 있어서, 상기 인코더(110)는,
    (i) (a) 내지 (d)에 따라 처리하기 위한 하나 이상의 새로운 심볼을 생성하기 위하여 입력 데이터(D1)의 적어도 하나 이상의 부분을 분리하고/하거나;
    (ii) (a) 내지 (d)에 따라 처리하기 위한 새로운 결합된 심볼들을 생성하기 위하여 상기 입력 데이터(D1)의 적어도 하나 이상의 부분의 하나 이상의 영숫자 문자(alphanumeric character)를 결합하도록 동작 가능한 것을 특징으로 하는 인코더(110).
  14. 제1항 내지 제13항 중 어느 한 항에 있어서, 상기 인코더(110)는 상기 입력 데이터(D1)의 하나 이상의 부분을 인코딩하기 위한 추가 인코딩 방법을 사용하도록 동작 가능하며, 상기 추가 방법은 델타 인코딩, 오델타 인코딩, RLE 인코딩, SRLE 인코딩, ZRLE 인코딩, MRLE 인코딩, SMRLE 인코딩, 허프만 코딩, VLC 인코딩, 레인지 코딩, 산술 코딩, EM 인코딩, 연속 연산자 인코딩, 트루비츠 카피 코딩 중 적어도 하나를 포함하는 것을 특징으로 하는 인코더(110).
  15. 제1항 내지 제14항 중 어느 한 항에 있어서, 상기 인코더(110)는 상기 인코딩된 데이터(E2)에서 향상된 데이터 압축도(degree of data compression)를 얻기 위하여, 상기 입력 데이터(D1)의 하나 이상의 특성에 따라, 복수의 인코딩 알고리즘 중에서 (a) 내지 (d)에서 사용될 인코딩 알고리즘을 동적으로 선택하도록 동작 가능한 것을 특징으로 하는 인코더(110).
  16. 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 방법에 있어서,
    (a) 내부의 적어도 하나의 모드 심볼을 식별하기 위하여 상기 입력 데이터(D1)를 분석하는 단계;
    (b) 적어도 제1 타입 및 제2 타입의 데이터 값들을 생성하는 단계로서, 상기 제1 타입의 데이터 값들은 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하고, 상기 적어도 하나의 모드 심볼의 런(run)은 상기 입력 데이터(D1) 내의 상기 비-모드 심볼들 전 또는 후에 상기 적어도 하나의 모드 심볼의 발생을 나타내는 것인, 상기 데이터 값 생성 단계;
    (c) 상기 비-모드 심볼들의 카운트를 나타내는 정보 및 상기 적어도 하나의 모드 심볼을 나타내는 정보를 생성하는 단계; 및
    (d) 상기 인코딩된 데이터(E2)를 생성하기 위하여 상기 적어도 하나의 모드 심볼을 나타내는 정보, 상기 비-모드 심볼들의 카운트를 나타내는 정보를 어셈블링 또는 인코딩하는 단계로서, 상기 제1 타입의 데이터 값들은 상기 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하는 것인, 상기 어셈블링 또는 인코딩 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  17. 제16항에 있어서, 상기 방법은 단계 (d) 전에, 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들을 하나 이상의 데이터 스트림 내에 삽입하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  18. 제17항에 있어서, 상기 하나 이상의 데이터 스트림 내에 삽입할 때, 상기 방법은 제1 타입의 데이터 값들 및 제2 타입의 데이터 값들을 개별적인 데이터 스트림들 내에 삽입하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  19. 제17항 또는 제18항에 있어서, 상기 방법은 (a) 내지 (d)에 따라 상기 비-모드 심볼들을 포함하는 주어진 데이터 스트림을 재귀적으로 처리하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  20. 제17항에 있어서, 상기 하나 이상의 데이터 스트림 내로 삽입할 때, 상기 방법은 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들을 인터리브된 포맷 또는 평면 포맷으로 단일 데이터 스트림 내로 삽입하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  21. 제17항 내지 제20항 중 어느 한 항에 있어서, 상기 방법은 적어도 하나의 엔트로피 인코딩 방법을 사용하여 상기 하나 이상의 데이터 스트림을 함께 또는 개별적으로 압축하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  22. 제21항에 있어서, 상기 적어도 하나의 엔트로피 인코딩 방법은, 델타 인코딩, 오델타 인코딩, RLE 인코딩, SRLE 인코딩, ZRLE 인코딩, MRLE 인코딩, SMRLE 인코딩, 허프만 코딩, VLC 인코딩, 레인지 코딩, 산술 코딩, EM 인코딩, 연속 연산자 인코딩, 트루비츠 카피 코딩 중 적어도 하나를 포함하는 것을 특징으로 하는 인코딩 방법.
  23. 제16항 내지 제22항 중 어느 한 항에 있어서, 상기 방법은 확률 및 인덱스 테이블들, 모드 심볼들, 모드 심볼들의 카운트들, 선택된 인코딩 방법들의 인덱스들, 데이터 값들, 상이한 데이터의 최대 인덱스들 중 적어도 하나의 전달과 관련된 추가 정보를 어셈블링 또는 인코딩하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  24. 제23항에 있어서, 상기 방법은 상기 적어도 하나의 모드 심볼이 상기 인코딩된 데이터(E2)에서 전달되든 안 되든 간에, 선택된 인코딩 방법, 상기 적어도 하나의 모드 심볼, 모드 심볼들의 카운트 중 적어도 하나를 나타내는 인덱스를 적어도 하나의 디코더에 전달하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  25. 제23항 또는 제24항에 있어서, 상기 방법은 상기 인코딩된 데이터(E2)의 전달 전에 상기 추가 정보를 사전 정보로서 전달하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  26. 제23항 또는 제24항에 있어서, 상기 방법은 상기 인코딩된 데이터(E2)의 일부로서 상기 인코딩된 데이터(E2)와 함께 상기 추가 정보를 전달하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  27. 제16항 내지 제26항 중 어느 한 항에 있어서, 상기 방법은 상기 입력 데이터(D1)에 존재하는 원래 심볼들을 분리 또는 결합함으로써 (a) 내지 (d) 전에 상기 입력 데이터(D1) 내에 심볼들을 생성하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  28. 제27항에 있어서, 상기 방법은:
    (i) (a) 내지 (d)에 따라 처리하기 위한 하나 이상의 새로운 심볼을 생성하기 위하여 입력 데이터(D1)의 적어도 하나 이상의 부분을 분리하는 단계; 및/또는
    (ii) (a) 내지 (d)에 따라 처리하기 위한 새로운 결합된 심볼들을 생성하기 위하여 상기 입력 데이터(D1)의 적어도 하나 이상의 부분의 하나 이상의 영숫자 문자를 결합하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  29. 제16항 내지 제28항 중 어느 한 항에 있어서, 상기 방법은 상기 입력 데이터(D1)의 하나 이상의 부분을 인코딩하기 위한 추가 인코딩 방법을 사용하는 단계를 포함하고, 상기 추가 방법은 델타 인코딩, 오델타 인코딩, RLE 인코딩, SRLE 인코딩, ZRLE 인코딩, MRLE 인코딩, SMRLE 인코딩, 허프만 코딩, VLC 인코딩, 레인지 코딩, 산술 코딩, EM 인코딩, 연속 연산자 인코딩, 트루비츠 카피 코딩 중 적어도 하나를 포함하는 것을 특징으로 하는 인코딩 방법.
  30. 제16항 내지 제29항 중 어느 한 항에 있어서, 상기 방법은 상기 인코딩된 데이터(E2)에서 향상된 데이터 압축도를 얻기 위하여, 상기 입력 데이터(D1)의 하나 이상의 특성에 따라, 복수의 인코딩 알고리즘 중에서 (a) 내지 (d)에서 사용될 인코딩 알고리즘을 동적으로 선택하는 단계를 포함하는 것을 특징으로 하는 인코딩 방법.
  31. 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 디코더(120)에 있어서,
    (ⅰ) 상기 디코더(120)는 상기 인코딩된 데이터(E2)로부터 적어도 하나의 모드 심볼을 나타내는 정보, 비-모드 심볼들의 카운트를 나타내는 정보, 적어도 제1 타입 및 제2 타입의 데이터 값들을 디코딩하도록 동작 가능하고, 상기 제1 타입의 데이터 값들은 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하며, 상기 적어도 하나의 모드 심볼의 런은 원래 입력 데이터(D1) 내의 비-모드 심볼들 전 또는 후에 상기 적어도 하나의 모드 심볼의 발생을 나타내고;
    (ⅱ) 상기 디코더(120)는 상기 디코딩된 데이터(D3)를 생성하기 위하여, 상기 적어도 하나의 모드 심볼의 대응하는 런을 상기 비-모드 심볼들 전 또는 후에 삽입하도록 동작 가능한 것을 특징으로 하는 디코더(120).
  32. 제31항에 있어서, 상기 디코더(120)는 상기 인코딩된 데이터(E2) 내에서 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들을 포함하는 하나 이상의 데이터 스트림을 수신하도록 동작 가능한 것을 특징으로 하는 디코더(120).
  33. 제32항에 있어서, 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들은 별개의 데이터 스트림들로 수신되는 것을 특징으로 하는 디코더(120).
  34. 제32항에 있어서, 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들은 단일 데이터 스트림에서 인터리브된 포맷 또는 평면 포맷으로 수신되는 것을 특징으로 하는 디코더(120).
  35. 제32항, 제33항, 또는 제34항 중 어느 한 항에 있어서, 상기 디코더(120)는 대응하는 인코더에서 함께 또는 개별적으로 상기 하나 이상의 데이터 스트림을 압축하는데 사용되는 적어도 하나의 엔트로피 인코딩 방법의 역(inverse)을 사용하도록 동작 가능한 것을 특징으로 하는 디코더(120).
  36. 제31항 내지 제35항 중 어느 한 항에 있어서, 하나보다 많은 모드 심볼이 상기 인코딩된 데이터(E2)에서 사용될 때, 상기 디코더(120)는 상기 디코딩된 데이터(D3)를 생성하기 위하여 각 모드 심볼에 대해 (i) 내지 (ii)를 재귀적으로 처리하도록 동작 가능한 것을 특징으로 하는 디코더(120).
  37. 제31항 내지 제36항 중 어느 한 항에 있어서, 상기 디코더(120)는 확률 및 인덱스 테이블들, 모드 심볼들, 모드 심볼들의 카운트들, 선택된 인코딩 방법들의 인덱스들, 데이터 값들, 상이한 데이터의 최대 인덱스들 중 적어도 하나와 관련된 추가 정보를 수신하도록 동작 가능한 것을 특징으로 하는 디코더(120).
  38. 제37항에 있어서, 상기 디코더(120)는, 상기 적어도 하나의 모드 심볼이 상기 인코딩된 데이터(E2)에서 전달되든 안 되든 간에, 선택된 인코딩 방법, 상기 적어도 하나의 모드 심볼, 모드 심볼들의 카운트 중 적어도 하나를 나타내는 인덱스를 대응하는 인코더로부터 수신하도록 동작 가능한 것을 특징으로 하는 디코더(120).
  39. 제37항 또는 제38항에 있어서, 상기 디코더(120)는 상기 인코딩된 데이터(E2)의 수신 전에 상기 추가 정보를 사전 정보로서 수신하도록 동작 가능한 것을 특징으로 하는 디코더(120).
  40. 제37항 또는 제38항에 있어서, 상기 디코더(120)는 상기 인코딩된 데이터(E2)의 일부로서 상기 인코딩된 데이터(E2)와 함께 상기 추가 정보를 수신하도록 동작 가능한 것을 특징으로 하는 디코더(120).
  41. 제31항 내지 제40항 중 어느 한 항에 있어서, 상기 디코더(120)는 추가 디코딩 방법들을 사용하도록 동작 가능하고, 상기 추가 디코딩 방법들은 델타 디코딩, 오델타 디코딩, RLE 디코딩, SRLE 디코딩, ZRLE 디코딩, MRLE 디코딩, SMRLE 디코딩, 허프만 디코딩, VLC(Variable-Length Code) 디코딩, 레인지 디코딩, 산술 디코딩, EM(Entropy Modifying) 디코딩, 연속 연산자 디코딩, 트루비츠 카피 디코딩 중 적어도 하나를 포함하는 것을 특징으로 하는 디코더(120).
  42. 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 방법에 있어서,
    (i) 상기 인코딩된 데이터(E2)로부터 적어도 하나의 모드 심볼을 나타내는 정보, 비-모드 심볼들의 카운트를 나타내는 정보, 제1 타입 및 제2 타입의 데이터 값들을 디코딩하는 단계로서, 상기 제1 타입의 데이터 값들은 비-모드 심볼들을 포함하고, 상기 제2 타입의 데이터 값들은 상기 적어도 하나의 모드 심볼의 런을 포함하며, 상기 적어도 하나의 모드 심볼의 런은 원래 입력 데이터(D1) 내의 비-모드 심볼들 전 또는 후에 상기 적어도 하나의 모드 심볼의 발생을 나타내는 것인, 상기 디코딩 단계; 및
    (ⅱ) 상기 디코딩된 데이터(D3)를 생성하기 위하여, 상기 적어도 하나의 모드 심볼의 대응하는 런을 상기 비-모드 심볼들 전 또는 후에 삽입하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  43. 제42항에 있어서, 상기 방법은 상기 인코딩된 데이터(E2) 내에서 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들을 포함하는 하나 이상의 데이터 스트림을 수신하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  44. 제43항에 있어서, 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들은 별개의 데이터 스트림들로 수신되는 것을 특징으로 디코딩 방법.
  45. 제43항에 있어서, 상기 제1 타입의 데이터 값들 및 상기 제2 타입의 데이터 값들은 단일 데이터 스트림에서 인터리브된 포맷 또는 평면 포맷으로 수신되는 것을 특징으로 하는 디코딩 방법.
  46. 제43항, 제44항 또는 제45항 중 어느 한 항에 있어서, 상기 방법은 대응하는 인코더에서 함께 또는 개별적으로 상기 하나 이상의 데이터 스트림을 압축하는데 사용되는 적어도 하나의 엔트로피 인코딩 방법의 역(inverse)을 사용하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  47. 제42항 내지 제46항 중 어느 한 항에 있어서, 상기 방법은 하나보다 많은 모드 심볼이 상기 인코딩된 데이터(E2)에서 사용될 때, 상기 디코딩된 데이터(D3)를 생성하기 위하여 각 모드 심볼에 대해 (i) 내지 (ii)를 재귀적으로 처리하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  48. 제42항 내지 제47항 중 어느 한 항에 있어서, 상기 방법은 확률 및 인덱스 테이블들, 모드 심볼들, 모드 심볼들의 카운트들, 선택된 인코딩 방법들의 인덱스들, 데이터 값들, 상이한 데이터의 최대 인덱스들 중 적어도 하나와 관련된 추가 정보를 수신하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  49. 제48항에 있어서, 상기 방법은, 상기 적어도 하나의 모드 심볼이 상기 인코딩된 데이터(E2)에서 전달되든 안 되든 간에, 선택된 인코딩 방법, 상기 적어도 하나의 모드 심볼, 모드 심볼들의 카운트 중 적어도 하나를 나타내는 인덱스를 대응하는 인코더로부터 수신하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  50. 제48항 또는 제49항에 있어서, 상기 방법은 상기 인코딩된 데이터(E2)의 수신 전에 상기 추가 정보를 사전 정보로서 수신하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  51. 제48항 또는 제49항에 있어서, 상기 방법은 상기 인코딩된 데이터(E2)의 일부로서 상기 인코딩된 데이터(E2)와 함께 상기 추가 정보를 수신하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  52. 제42항 내지 제51항 중 어느 한 항에 있어서, 상기 방법은 추가 디코딩 방법들을 사용하는 단계를 포함하고, 상기 추가 디코딩 방법들은 델타 디코딩, 오델타 디코딩, RLE 디코딩, SRLE 디코딩, ZRLE 디코딩, MRLE 디코딩, SMRLE 디코딩, 허프만 디코딩, VLC(Variable-Length Code) 디코딩, 레인지 디코딩, 산술 디코딩, EM(Entropy Modifying) 디코딩, 연속 연산자 디코딩, 트루비츠 카피 디코딩 중 어느 하나를 포함하는 것을 특징으로 하는 디코딩 방법.
  53. 코덱(130)에 있어서,
    대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하기 위한 제1항 내지 제15항 중 어느 한 항에 기재된 적어도 하나의 인코더(110), 및
    대응하는 디코딩된 데이터(D3)를 생성하기 위하여 상기 인코딩된 데이터(E2)를 디코딩하기 위한 제31항 내지 제41항 중 어느 한 항에 기재된 적어도 하나의 디코더(120)를 포함하는 코덱(130).
  54. 컴퓨터 프로그램 제품에 있어서,
    컴퓨터 판독 가능한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체를 포함하고, 상기 컴퓨터 판독 가능한 명령어들은 프로세싱 하드웨어를 포함하는 컴퓨터화된 디바이스에 의해 실행 가능하여, 제16항 내지 제30항 또는 제42항 내지 제52항 중 어느 한 항에 의한 방법을 실행하는 것인 컴퓨터 프로그램 제품.
KR1020187000752A 2015-06-10 2016-06-10 모드 심볼들을 사용하는 인코더, 디코더 및 방법 KR102393743B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1510127.2 2015-06-10
GB1510127.2A GB2539239B (en) 2015-06-10 2015-06-10 Encoders, decoders and methods utilizing mode symbols
PCT/EP2016/025058 WO2016198169A1 (en) 2015-06-10 2016-06-10 Encoders, decoders and methods utilizing mode symbols

Publications (2)

Publication Number Publication Date
KR20180016556A true KR20180016556A (ko) 2018-02-14
KR102393743B1 KR102393743B1 (ko) 2022-05-02

Family

ID=53785279

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187000752A KR102393743B1 (ko) 2015-06-10 2016-06-10 모드 심볼들을 사용하는 인코더, 디코더 및 방법

Country Status (6)

Country Link
US (1) US10116328B2 (ko)
EP (1) EP3469711B1 (ko)
KR (1) KR102393743B1 (ko)
GB (1) GB2539239B (ko)
RU (1) RU2709656C2 (ko)
WO (1) WO2016198169A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2539239B (en) 2015-06-10 2017-10-04 Gurulogic Microsystems Oy Encoders, decoders and methods utilizing mode symbols
CN117915085A (zh) 2018-10-07 2024-04-19 三星电子株式会社 用于编码或解码视频信号的视频信号处理方法和设备
CN117061740A (zh) 2018-10-12 2023-11-14 三星电子株式会社 通过使用交叉分量线性模型来处理视频信号的方法和设备
US10922026B2 (en) * 2018-11-01 2021-02-16 Fungible, Inc. Data processing unit having hardware-based range encoding and decoding

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100225506A1 (en) * 2009-03-05 2010-09-09 Liang-Chieh Chen Multi-Mode Encoding for Data Compression

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1412937A (en) 1971-10-22 1975-11-05 Atomic Energy Authority Uk Titanium dioxide gels and sols
CA2156889C (en) * 1994-09-30 1999-11-02 Edward L. Schwartz Method and apparatus for encoding and decoding data
US6300888B1 (en) * 1998-12-14 2001-10-09 Microsoft Corporation Entrophy code mode switching for frequency-domain audio coding
US6223162B1 (en) * 1998-12-14 2001-04-24 Microsoft Corporation Multi-level run length coding for frequency-domain audio coding
US7826526B2 (en) * 2003-10-20 2010-11-02 Logitech Europe S.A. Methods and apparatus for encoding and decoding video data
CN100517979C (zh) * 2005-10-10 2009-07-22 中兴通讯股份有限公司 一种数据压缩及解压缩方法
US7778472B2 (en) * 2006-03-27 2010-08-17 Qualcomm Incorporated Methods and systems for significance coefficient coding in video compression
EP2417578B1 (en) * 2009-04-09 2017-08-30 Thomson Licensing Method and device for encoding and decoding of symbol sequences wherein each symbol may have one out of three or more possible symbol values
US20220129126A9 (en) * 2009-12-20 2022-04-28 Benjamin Firooz Ghassabian System for capturing event provided from edge of touch screen
JP2013515295A (ja) * 2009-12-20 2013-05-02 キーレス システムズ リミテッド データ入力システムおよびその方法
EP2559166B1 (en) * 2010-04-13 2017-11-01 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Probability interval partioning encoder and decoder
GB2505169B (en) 2012-08-13 2016-03-16 Gurulogic Microsystems Oy decoder and method
US8675731B2 (en) 2012-08-13 2014-03-18 Gurulogic Microsystems Oy Encoder and method
US8754791B1 (en) 2013-03-01 2014-06-17 Gurulogic Microsystems Oy Entropy modifier and method
GB2507603B (en) 2013-03-01 2014-10-01 Gurulogic Microsystems Oy Data encoder, data decoder and method
US8933826B2 (en) 2013-03-01 2015-01-13 Gurulogic Microsystems Oy Encoder apparatus, decoder apparatus and method
GB2523348B (en) 2014-02-20 2016-03-30 Gurulogic Microsystems Oy Encoder, decoder and method
GB2539239B (en) 2015-06-10 2017-10-04 Gurulogic Microsystems Oy Encoders, decoders and methods utilizing mode symbols

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100225506A1 (en) * 2009-03-05 2010-09-09 Liang-Chieh Chen Multi-Mode Encoding for Data Compression

Also Published As

Publication number Publication date
RU2017146242A3 (ko) 2019-07-17
RU2017146242A (ru) 2019-07-10
RU2709656C2 (ru) 2019-12-19
US10116328B2 (en) 2018-10-30
GB201510127D0 (en) 2015-07-22
US20180167084A1 (en) 2018-06-14
GB2539239B (en) 2017-10-04
GB2539239A (en) 2016-12-14
KR102393743B1 (ko) 2022-05-02
EP3469711A1 (en) 2019-04-17
WO2016198169A1 (en) 2016-12-15
EP3469711B1 (en) 2021-11-10

Similar Documents

Publication Publication Date Title
KR101737294B1 (ko) 심볼 압축을 수반하는 데이터의 소스 코딩 및 디코딩을 위한 방법들 및 디바이스들
RU2417518C2 (ru) Эффективное кодирование и декодирование блоков преобразования
JP2017507590A5 (ko)
EP3108583B1 (en) Devices and methods of source-encoding and decoding of data
KR101610609B1 (ko) 데이터 인코더, 데이터 디코더 및 방법
KR101610610B1 (ko) 인코더, 디코더 및 방법
KR102393743B1 (ko) 모드 심볼들을 사용하는 인코더, 디코더 및 방법
US8933826B2 (en) Encoder apparatus, decoder apparatus and method
WO2016202470A1 (en) Encoder, decoder and method employing palette utilization and compression
WO2019011944A1 (en) METHOD AND DEVICE FOR COMPRESSING DIGITAL DATA
CN105409129B (zh) 编码器设备、解码器设备和方法
JP2006093958A (ja) プログレッシブjpeg復号化システム
US10340946B2 (en) Encoders, decoders, and methods
US20180176585A1 (en) Encoder, decoder and method employing palette compression
JP6821184B2 (ja) 画像復号化装置

Legal Events

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