KR101781776B1 - 인코더 및 디코더 - Google Patents

인코더 및 디코더 Download PDF

Info

Publication number
KR101781776B1
KR101781776B1 KR1020167036600A KR20167036600A KR101781776B1 KR 101781776 B1 KR101781776 B1 KR 101781776B1 KR 1020167036600 A KR1020167036600 A KR 1020167036600A KR 20167036600 A KR20167036600 A KR 20167036600A KR 101781776 B1 KR101781776 B1 KR 101781776B1
Authority
KR
South Korea
Prior art keywords
data
elements
encoded
blocks
packets
Prior art date
Application number
KR1020167036600A
Other languages
English (en)
Other versions
KR20170010008A (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 KR20170010008A publication Critical patent/KR20170010008A/ko
Application granted granted Critical
Publication of KR101781776B1 publication Critical patent/KR101781776B1/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
    • 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/3091Data deduplication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F17/30
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • 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/6005Decoder aspects
    • 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/6011Encoder aspects
    • 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
    • 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/6047Power optimization with respect to the encoder, decoder, storage or transmission
    • 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/6058Saving memory space in the encoder or decoder
    • 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/6082Selection strategies
    • H04L29/06
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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
    • 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/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하기 위한 인코더가 제공된다. 인코더는 입력 데이터(D1)의 적어도 부분 내에서 데이터 블록들 및/또는 데이터 패킷들의 실질적인 재발생들을 식별한다. 다음으로, 인코더는 개별적인 엘리먼트들에 관하여, 엘리먼트들이 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경되지 않고 및/또는 변경되는 경우를 식별한다. 추후에, 인코더는 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 엘리먼트들에 대한 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는, 적어도 하나의 대응하는 심볼, 또는 적어도 하나의 대응하는 비트, 예를 들어, 단일 비트를 사용함으로써 인코딩된 데이터(E2)에서의 변경되지 않은 엘리먼트들을 인코딩한다. 또한, 인코더는 인코딩된 데이터(E2)에서 변경된 엘리먼트들을 인코딩한다.

Description

인코더 및 디코더{ENCODER AND DECODER}
본 개시내용은 일반적으로 데이터 압축에 관한 것으로, 더욱 구체적으로, 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하기 위한 인코더들과, 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하기 위한 디코더들에 관한 것이다. 또한, 본 개시내용은 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 방법들과, 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 방법들에 관한 것이다. 또한, 본 개시내용은 또한, 컴퓨터-판독가능 명령들을 저장한 비-일시적(즉, 비-순시적) 컴퓨터-판독가능 저장 매체를 포함하는 컴퓨터 프로그램 제품들에 관한 것으로, 컴퓨터-판독가능 명령들은 상기한 방법들을 실행하기 위하여 프로세싱 하드웨어를 포함하는 컴퓨터화된 디바이스에 의해 실행가능하다. 본 개시내용은 또한, 적어도 하나의 상기 언급된 인코더 및 적어도 상기 언급된 디코더를 포함하는 코덱(codec)들에 관한 것이다.
예를 들어, 데이터 저장 및 데이터 통신 동안에 자원들의 사용을 감소시키기 위하여 데이터를 압축하는 것은 관례적인 당대의 관행이 되었다. 데이터 통신 동안, 데이터 블록들 또는 데이터 패킷들의 시퀀스(sequence)는 하나의 디바이스로부터 또 다른 디바이스로 통신된다. 시퀀스로 더 이후에 통신된 데이터 블록들 또는 데이터 패킷들은 더 이전에 통신되었던 데이터 블록들 또는 데이터 패킷들과 비교하여 종종 변경된다. 그러나, 이 변경된 데이터 블록들 또는 데이터 패킷들 내부의 개별적인 엘리먼트(element)들에서의 변경들은 데이터 블록들 또는 데이터 패킷들의 원래의 내용보다 상당히 더 작다. 다시 말해서, 변경된 블록들 내부의 엘리먼트들의 대부분은 더 이전의 데이터 블록들 또는 데이터 패킷들과 비교하여 변경되지 않는다. 데이터 블록들 또는 데이터 패킷들의 이러한 시퀀스가 기존의 인코더들을 이용하여 압축될 때, 종종 작은 압축률만이 달성된다.
하나의 기존의 인코더-디코더(이하, "코덱"으로서 지칭됨)는 "Processing of Image"라는 명칭의 미국 특허 문서 제20120219065 A1호에서 설명되었다. 기존의 코덱은 이미지 또는 데이터 시퀀스의 전체 데이터 블록들을 프로세싱하고, 전체 데이터 블록들을 이전의 데이터 블록들과 비교한다. 기존의 코덱은 변경되지 않은 데이터 블록을 미리 정의된 컬러 값 또는 데이터 값으로 인코딩하고, 또한, 변경된 데이터 블록을 그대로 인코딩한다. 이것은 변경된 데이터 블록에서의 모든 원래의 데이터 값들이 코딩된다는 것을 의미하고, 따라서, 기존의 인코더-디코더에 의해 제공된 압축 효율 성능이 잠재적으로 달성가능한 것만큼 크지 않다.
특허 문서 US2013/0315307A1 (Karkkainen 등)에서는, 예를 들어, 이미지 프레임 내부의 대응하는 데이터 블록이 변경되었는지 아닌지 여부를 표현하기 위하여 변경된/변경되지 않은 비트들을 사용하는 인코더가 설명된다. 이러한 접근법은 양호하게 기능하지만, 그 성능을 상당히 증대시키는 것이 실현가능하다.
또한, 또 다른 기존의 코덱(http://en.wikipedia.org/wiki/Delta_encoding)은 데이터를 프로세싱하기 위한 델타 코딩을 사용한다. 델타 코딩에서는, 현재의 데이터 엘리먼트와 이전의 데이터 엘리먼트 사이의 차이(즉, 델타 값)가 기록되거나 송신된다. 그러나, 이러한 델타 값들은, 델타에서 잠재적으로 존재하지 않거나 이와 다르게, 데이터 값들의 동역학(dynamic)을 확대시키는 새로운 데이터 값들을 종종 생성하고, 그러므로, 데이터의 증가 엔트로피가 이에 따라 잠재적으로 발생한다.
그러므로, 기존의 코덱들과 비교하여 더욱 효율적인 데이터를 압축하기 위한 이러한 코덱에 대한 필요성이 존재한다.
본 개시내용은 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하기 위한 개선된 인코더를 제공하는 것을 추구한다.
본 개시내용은 또한, 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하기 위한 개선된 디코더를 제공하는 것을 추구한다.
또한, 본 개시내용은 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 개선된 방법을 제공하는 것을 추구한다.
또한, 본 개시내용은 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 개선된 방법을 제공하는 것을 추구한다.
제 1 양태에서, 본 개시내용의 실시형태들은 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하기 위한 프로세싱 하드웨어를 포함하는 인코더를 제공하고, 여기서, 프로세싱 하드웨어는 입력 데이터(D1)를 데이터 블록들 및/또는 데이터 패킷들로서 프로세싱하도록 동작가능하고, 프로세싱 하드웨어는,
(i) 입력 데이터(D1)의 적어도 부분 내에서 데이터 블록들 및/또는 데이터 패킷들 - 데이터 블록들 및/또는 데이터 패킷들은 대응하는 복수의 엘리먼트들을 포함하고, 엘리먼트들은 복수의 비트들을 포함함 - 의 실질적인 재발생들을 식별하고,
(ii) 엘리먼트들이 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경되지 않는 경우와, 및/또는 엘리먼트들이 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경되는 경우를 식별하고,
(iii) 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 엘리먼트들에 대한 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는 적어도 하나의 대응하는 심볼 또는 적어도 하나의 대응하는 비트를 사용함으로써 인코딩된 데이터(E2)에서의 변경되지 않은 엘리먼트들을 인코딩하고,
(iv) 인코딩된 데이터(E2)에서 변경된 엘레먼트들을 인코딩하도록 동작가능한 것을 특징으로 한다.
선택적으로(optionally), 입력 데이터(D1)는 텍스트 데이터, 이미지 데이터, 비디오 데이터, 오디오 데이터, 2진 데이터, 센서 데이터, 측정 데이터, 그래픽 데이터, 다차원 데이터 및/또는 단일-차원(uni-dimensional) 데이터 중의 적어도 하나의 형태로 이루어져 있지만, 그것으로 제한되지는 않는다.
본 발명은 데이터 블록들 및/또는 데이터 패킷들 내에서의 부분적인 변경들을 식별하고 인코딩함으로써 인코딩 성능이 상당히 증대된다는 점에서 장점이 있다.
엘리먼트는 선택적으로 다음: 바이트(byte), 워드(word), 인티저(integer), 문자, 픽셀 값, 모노 또는 스테레오인 오디오 샘플 진폭 중의 하나일 수도 있지만, 그것으로 제한되지는 않는다. 다시 말해서, 엘리먼트는 통상적으로 단일 값이지만, 때때로, 그것은 예를 들어, 픽셀, 즉, 오디오 데이터의 경우에 스테레오와 유사하게, 상호간에 상이한 것들을 의미하는 약간의 데이터 값들을 또한 포함할 수도 있는 일 타입의 픽처 데이터 엘리먼트일 수 있다. 또한, 본 개시내용에 따른 엘리먼트는 값이거나, 또는 그것은 약간의 값들을 포함하고, 변경이 검출될 때, 그 값들이 함께 또는 별도로 프로세싱될 수 있는 것이 여하튼 요구된다. 실제로는, 픽셀 값, 예를 들어, 그 R(적색), G(녹색), 및 B(청색) 값들은 변경되었거나 변경되지 않았을 수 있지만, 픽셀의 R 값만이 변경되었거나 변경되지 않았던 것이 또한 가능하다. 그러나, 엘리먼트는 2 개의 R(적색) 값들, 즉, 이미지에 대한 Rs1 및 Rs2(여기서, "s"는 상이한 공간적 로케이션(spatial location)의 의미를 가짐), 또는 오디오에서의 At1 및 At2("t"는 상이한 타이밍을 의미함)와 같은, 동일한 소스로부터의 2 개의 대응하는 값들을 포함할 수 없다. 이에 따라, 엘리먼트는 공간적으로 그리고 시간적으로 정의되어야 하지만, 그것은 소스, 예를 들어, 컬러 R(적색)에 대한 센서, 컬러 B(청색)에 대한 센서, 또는 오디오 값 Am1에 대한 제 1 마이크로폰 및 오디오 값 Am2에 대한 제 2 마이크로폰, 또는 제 1 및 제 2 카메라로 구속되지 않을 수도 있다. 다시 말해서, 시간 포인트는 다양한 상이한 것들에 대하여 동일하고, 공간적 로케이션은 그 다양한 상이한 것들에 대하여 동일하지만, 그 소스는 변경될 수도 있고; 하나는 동일한 시간 포인트에서의 많은 상이한 로케이션들로부터의 입력, 그리고 많은 상이한 시간 포인트들에서의 바로 동일한 로케이션으로의 입력을 수신하지 않는다.
픽셀들에 추가하여, 엘리먼트는 또한, 예를 들어, 복셀(voxel), 즉, 3차원에서의 픽셀일 수 있고, 이들은 물론 2 개의 카메라들로 측정될 수 있다는 것이 인식될 것이다. 또한, 텍셀(texel)은 픽셀과 유사하지만, 그것은 텍스처 엘리먼트(texture element) 또는 텍스처 픽셀을 지칭하고; 그것은 그래픽 프로세서 유닛(Graphics Processor Unit; GPU)을 이용하여 2D 또는 3D에서의 이미지들을 디스플레이 상으로 드로잉(drawing)할 시에 컴퓨터 그래픽에서 이용된 텍스처 공간의 기본적인 단위이다. 또한, 엘리먼트는 예를 들어, 레셀(resel), 이미지 분석에서 이용된 개념일 수 있다. 그것은 이미지에서의 실제적인 공간적 이미지 해상도, 또는 용적(volume)을 설명한다. 또한, 오디오 신호들과 같은 많은 신호들은 데이터의 몇몇 채널들 등등을 가질 수도 있다. 엘리먼트들의 다른 예들은 예를 들어, 게놈 데이터에서의 DNA 또는 RNA의 기본 쌍들을 포함할 수 있다.
선택적으로, 참조 데이터 블록 및/또는 참조 데이터 패킷은 이전의 데이터 블록 또는 데이터 패킷; 이전의 프레임, 뷰, 또는 채널에서의 유사한 로케이션에서의 데이터 블록 또는 패킷; 모션 벡터(즉, 모션 보상)에 의해 기술된 데이터 블록 또는 데이터 패킷; 심볼(즉, 중복제거(deduplication))에 의해 기술된 데이터 블록 또는 데이터 패킷; (예를 들어, DC 인코딩, 멀티레벨 인코딩, 슬라이드 인코딩, 라인 인코딩, 이산 코사인 변환(discrete cosine transform; DCT) 인코딩, 데이터베이스 인코딩, 벡터 양자화 인코딩, 팔레트 인코딩(palette encoding), 보간 인코딩(interpolation encoding), 외삽 인코딩(extrapolation encoding)과 같은 코딩 방법들을 이용하는) 일부 코딩 방법으로 인코딩된 데이터 블록 또는 데이터 패킷이다.
선택적으로, 적어도 하나의 대응하는 심볼은 미리 결정된 데이터 값에 의해 표현된다. 선택적으로, 미리 결정된 데이터 값은 제로 데이터 값(zero data value)으로서 구현된다. 선택적으로, 예를 들어, 비트의 값이 0 일 때의 변경되지 않은 값과, 예를 들어, 비트의 값이 1 일 때의 변경된 값은 별도의 데이터 스트림에서의 비트들에 의해 기술되고, 변경된 입력 데이터 값들만이 데이터 스트림으로 인코딩된다.
임의적으로, 프로세싱 하드웨어는 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol; HTTP) 및/또는 실시간 메시징 프로토콜(Real-Time Messaging Protocol; RTMP)을 위한 청크 전송 인코딩(chunked transfer encoding)을 구현하도록 동작가능하다. 더욱 선택적으로, HTTP 및/또는 RTMP는 요청들 및 응답들 내부에서 고정된-크기 데이터 블록들 및/또는 데이터 패킷들을 사용한다.
선택적으로, 프로세싱 하드웨어는 인코딩된 데이터(E2)에서 양자화된 방식으로 변경된 엘리먼트들의 적어도 부분을 인코딩하도록 동작가능하다. 동작의 이러한 양자화된 방식은 증대된 데이터 압축도를 제공할 수 있다.
주어진 데이터 블록 또는 데이터 패킷에서의 모든 엘리먼트들이 참조 데이터 블록 또는 데이터 패킷과 비교하여 변경되지 않을 때, 그 다음으로, 선택적으로, 데이터 블록 또는 패킷은 변경되지 않은 것으로 설정되고, 그 다음으로, 그 데이터 블록 또는 데이터 패킷에 대한 임의의 다른 정보를 전달할 필요성이 없다. 선택적으로, 모든 값들이 변경된 데이터 블록들 및 데이터 패킷들은 또한, 부분적으로 변경된 데이터 블록들 또는 데이터 패킷들로부터 분리된다.
이 개시내용에서 설명된 방법은 부분적으로 변경된 데이터 블록들 또는 패킷들 내의 하나 이상의 엘리먼트들에 대해 변경들이 발생한 인코딩을 통해, 부분적으로 변경된 데이터 블록들 또는 패킷들을 인코딩하기 위하여 유익하게 이용된다. 부분적으로 변경된 데이터 블록들 또는 패킷들은 변경된, 그리고 변경되지 않은 데이터 값들의 양자를 포함한다. 선택적으로, 방법은 또한, 변경된 데이터 블록들 또는 패킷들을 인코딩하도록 동작가능하다. 선택적으로, 방법은 또한, 변경되지 않은 데이터 블록들 또는 패킷들을 인코딩하도록 동작가능하다.
또한, 선택적으로, 프로세싱 하드웨어는 인코딩된 출력 데이터(E2) 내로 포함되는 압축된 데이터(C4)를 생성하기 위하여 인코딩된 데이터(E2)를 압축하기 위하여, 인코딩된 데이터(E2)를 압축하기 위한 압축 알고리즘, 예를 들어, 범위 코딩(Range coding), (예를 들어, 특허 GB2507603B1 및 또한, 특허 출원 PCT/EP2014/000530에서 설명된 바와 같은) SRLE(split run length encoding; 분할 실행 길이 인코딩), 델타 코딩(Delta coding), (예를 들어, 특허 GB2511355B 및 또한, 특허 출원 PCT/EP2014/00510에서 설명된 바와 같은) ODelta 코딩, (예를 들어, 특허 출원 GB2511493A 및 또한, 특허 출원 PCT/EP2014/000529에서 설명된 바와 같은) EM(entropy modifying encoding; 엔트로피 수정 인코딩), 산술 코딩(Arithmetic coding), 허프만 코딩(Huffman coding)을 적용하도록 동작가능하지만, 이것으로 제한되지는 않는다. 압축 알고리즘에 의해 제공된 이러한 추가적인 압축은 입력 데이터(D1)에 대하여 인코딩된 데이터(E2)를 추가로 압축할 수 있다.
제 2 양태에서, 본 개시내용의 실시형태들은 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하기 위한 프로세싱 하드웨어를 포함하는 디코더를 제공하고, 여기서 상기 프로세싱 하드웨어는 인코딩된 데이터(E2)를 데이터 블록들 및/또는 데이터 패킷들로서 프로세싱하도록 동작가능하고, 프로세싱 하드웨어는,
(i) 변경된 엘리먼트들 - 상기 변경된 엘리먼트들은 인코딩된 데이터(E2) 내의 데이터 블록들 및/또는 데이터 패킷들의 실질적인 재발생들 내에서 변경되는 엘리먼트들임 - 에 대한 데이터를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하고,
(ii) 변경되지 않은 엘리먼트들 - 상기 변경되지 않은 엘리먼트들은 인코딩된 데이터(E2) 내의 데이터 블록들 및/또는 데이터 패킷들의 실질적인 재발생들 내에서 변경되지 않는 엘리먼트들임 - 에 대한 데이터를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하고 - 상기 변경되지 않은 엘리먼트들은 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 엘리먼트들에 대한 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는 적어도 하나의 대응하는 심볼 또는 적어도 하나의 대응하는 비트에 의해 표현됨 -,
(iii) 상기 디코딩된 데이터(D3)를 생성하기 위하여 (i) 및 (ii)에서의 상기 변경된 그리고 변경되지 않은 엘리먼트에 대하여 생성된 데이터를, 데이터 블록들 및/또는 데이터 패킷들 - 상기 데이터 블록들 및/또는 데이터 패킷들은 대응하는 복수의 엘리먼트들을 포함하고, 상기 엘리먼트들은 복수의 비트들을 포함함 - 로 조립하도록 동작가능한 것을 특징으로 한다.
선택적으로, 적어도 하나의 대응하는 심볼은 미리 결정된 데이터 값에 의해 표현된다. 더욱 선택적으로, 미리 결정된 데이터 값은 제로 데이터 값으로서 구현된다.
선택적으로, 프로세싱 하드웨어는 하이퍼텍스트 전송 프로토콜(HTTP) 및/또는 실시간 메시징 프로토콜(RTMP)을 위한 청크 전송 인코딩을 구현하도록 동작가능하다. 더욱 선택적으로, HTTP 및/또는 RTMP는 요청들 및 응답들 내부에서 고정된-크기 데이터 블록들 및/또는 데이터 패킷들을 채용한다.
선택적으로, 프로세싱 하드웨어는 디코딩된 데이터(D3)에서 양자화된 방식으로 변경된 엘리먼트들의 적어도 부분을 디코딩하도록 동작가능하다.
삭제
선택적으로, 프로세싱 하드웨어는 변경된, 그리고 변경되지 않은 엘리먼트들에 대한 데이터를 생성하기 위해 인코딩된 데이터(E2)를 디코딩하기 위하여, 인코딩된 데이터(E2)를 생성하기 위하여 압축된 데이터(C4)를 압축해제(decompress)하기 위한 압축해제 알고리즘을 적용하도록 동작가능하다.
삭제
선택적으로, 디코딩된 데이터(D3)는 텍스트 데이터, 이미지 데이터, 비디오 데이터, 오디오 데이터, 2진 데이터, 센서 데이터, 측정 데이터, 그래픽 데이터, 다차원 데이터 및/또는 단일 차원 데이터 중의 적어도 하나의 형태로 이루어져 있지만, 그것으로 제한되지는 않는다.
제 3 양태에서, 본 개시내용의 실시형태들은 상기 언급된 인코더 및 상기 언급된 디코더를 포함하는 코덱을 제공한다. 선택적으로, 코덱은 비디오 코덱, 오디오 코덱, 이미지 코덱 및/또는 데이터 코덱 중의 적어도 하나의 형태로 되어 있지만, 그것으로 제한되지는 않는다.
삭제
제 4 양태에서, 본 개시내용의 실시형태들은 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 방법을 제공하고, 여기서, 방법은 입력 데이터(D1)를 데이터 블록들 및/또는 데이터 패킷들로서 프로세싱하는 것을 포함하고, 방법은,
(i) 입력 데이터(D1)의 적어도 부분 내에서 데이터 블록들 및/또는 데이터 패킷들 - 상기 데이터 블록들 및/또는 데이터 패킷들은 대응하는 복수의 엘리먼트들을 포함하고, 상기 엘리먼트들은 복수의 비트들을 포함함 - 의 실질적인 재발생들을 식별하는 단계와,
(ii) 엘리먼트들이 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경되지 않는 경우와, 및/또는 엘리먼트들이 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경되는 경우를 식별하는 단계와,
(iii) 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 엘리먼트들에 대한 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는 적어도 하나의 대응하는 심볼 또는 적어도 하나의 대응하는 비트를 사용함으로써 인코딩된 데이터(E2)에서의 변경되지 않은 엘리먼트들을 인코딩하는 단계와,
(iv) 인코딩된 데이터(E2)에서 변경된 세그먼트들을 인코딩하는 단계를 포함하는 것을 특징으로 한다.
선택적으로, 방법은 텍스트 데이터, 이미지 데이터, 비디오 데이터, 오디오 데이터, 2진 데이터, 센서 데이터, 측정 데이터, 그래픽 데이터, 다차원 데이터, 단일-차원 데이터 중의 적어도 하나의 형태로 수신된 입력 데이터(D1)를 인코딩하는 단계를 포함한다.
선택적으로, 방법은 미리 결정된 데이터 값에 의해 적어도 하나의 대응하는 심볼을 표현하는 단계를 포함한다. 더욱 선택적으로, 미리 결정된 데이터 값은 제로 데이터 값으로서 구현된다.
선택적으로, 방법은 하이퍼텍스트 전송 프로토콜(HTTP) 및/또는 실시간 메시징 프로토콜(RTMP)을 위한 청크 전송 인코딩을 구현하는 단계를 포함한다. 더욱 선택적으로, HTTP 및/또는 RTMP는 요청들 및 응답들 내부에서 고정된-크기 데이터 블록들 및/또는 데이터 패킷들을 사용한다.
선택적으로, 방법은 인코딩된 데이터(E2)에서 양자화된 방식으로 변경된 엘리먼트들의 적어도 부분을 인코딩하는 단계를 포함한다.
선택적으로, 방법은 대응하는 압축된 데이터(C4)를 생성하기 위하여 인코딩된 데이터(E2)를 압축하기 위한 압축 알고리즘을 적용하는 단계를 포함한다.
제 5 양태에서, 본 개시내용의 실시형태들은 컴퓨터-판독가능 명령들을 저장한 비-일시적(즉, 비-순시적) 컴퓨터-판독가능 저장 매체를 포함하는 컴퓨터 프로그램 제품을 제공하고, 컴퓨터-판독가능 명령들은 상기 언급된 방법을 실행하기 위하여 프로세싱 하드웨어를 포함하는 컴퓨터화된 디바이스에 의해 실행가능하다.
제 6 양태에서, 본 개시내용의 실시형태들은 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 방법을 제공하고, 방법은 인코딩된 데이터(E2)를 데이터 블록들 및/또는 데이터 패킷들로서 프로세싱하는 것을 포함하고, 방법은,
(i) 변경된 엘리먼트들 - 상기 변경된 엘리먼트들은 인코딩된 데이터(E2) 내의 데이터 블록들 및/또는 데이터 패킷들의 실질적인 재발생들 내에서 변경되는 엘리먼트들임 - 에 대한 데이터를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 단계와,
(ii) 변경되지 않은 엘리먼트들 - 상기 변경되지 않은 엘리먼트들은 인코딩된 데이터(E2) 내의 데이터 블록들 및/또는 데이터 패킷들의 실질적인 재발생들 내에서 변경되지 않는 엘리먼트들임 - 에 대한 데이터를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 단계로서, - 변경되지 않은 엘리먼트들은 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 엘리먼트들에 대한 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는 적어도 하나의 대응하는 심볼 또는 적어도 하나의 대응하는 비트에 의해 표현되는 것인, 인코딩된 데이터(E2)를 디코딩하는 단계와,
(iii) 디코딩된 데이터(D3)를 생성하기 위하여 단계들 (i) 및 (ii)에서의 변경된, 그리고 변경되지 않은 엘리먼트에 대하여 생성된 데이터를 데이터 블록들 및/또는 데이터 패킷들 - 상기 데이터 블록들 및/또는 데이터 패킷들은 대응하는 복수의 엘리먼트들을 포함하고, 엘리먼트들은 복수의 비트들을 포함함 - 로 조립하는 단계를 포함하는 것을 특징으로 한다.
선택적으로, 방법은 텍스트 데이터, 이미지 데이터, 비디오 데이터, 오디오 데이터, 2진 데이터, 센서 데이터, 측정 데이터, 그래픽 데이터, 다차원 데이터, 단일-차원 데이터 중의 적어도 하나의 형태로 디코딩된 데이터(D3)를 생성하는 단계를 포함한다.
선택적으로, 적어도 하나의 대응하는 심볼은 미리 결정된 데이터 값에 의해 표현된다. 더욱 선택적으로, 미리 결정된 데이터 값은 제로 데이터 값으로서 구현된다.
선택적으로, 방법은 하이퍼텍스트 전송 프로토콜(HTTP) 및/또는 실시간 메시징 프로토콜(RTMP)을 위한 청크 전송 인코딩을 구현하는 단계를 포함한다. 더욱 선택적으로, HTTP 및/또는 RTMP는 요청들 및 응답들 내부에서 고정된-크기 데이터 블록들 및/또는 데이터 패킷들을 사용한다.
선택적으로, 방법은 상기 디코딩된 데이터(D3)에서 양자화된 방식으로 변경된 엘리먼트들의 적어도 부분을 디코딩하는 단계를 포함한다.
선택적으로, 방법은 변경된 그리고 변경되지 않은 엘리먼트들에 대한 데이터를 생성하도록 인코딩된 데이터(E2)를 디코딩하기 위하여, 상기 인코딩된 데이터(E2)를 생성하도록 압축된 데이터(C4)를 압축해제하기 위한 압축해제 알고리즘을 적용하는 단계를 포함한다.
제 7 양태에서, 본 개시내용의 실시형태들은 컴퓨터-판독가능 명령들을 저장한 비-일시적(즉, 비-순시적) 컴퓨터-판독가능 저장 매체를 포함하는 컴퓨터 프로그램 제품을 제공하고, 컴퓨터-판독가능 명령들은 상기 언급된 방법을 실행하기 위하여 프로세싱 하드웨어를 포함하는 컴퓨터화된 디바이스에 의해 실행가능하다.
본 개시내용의 실시형태들은 종래 기술에서의 상기 언급된 문제들을 실질적으로 제거하거나, 또는 적어도 부분적으로 해결하고, 1차원 이미지 데이터 또는 다차원 이미지 데이터, 비디오 데이터, 오디오 데이터, 및 높은 압축률을 갖는 임의의 다른 타입의 데이터의 무손실 또는 무손실-근접 데이터 압축을 가능하게 한다.
본 개시내용의 추가적인 양태들, 장점들, 특징들, 및 목적들은 후행하는 첨부된 청구항들과 함께 해석된 예시적인 실시형태들의 도면들 및 상세한 설명에서 분명하게 된다.
본 개시내용의 특징들은 첨부된 청구항들에 의해 정의된 바와 같은 본 개시내용의 범위로부터 이탈하지 않으면서, 다양한 조합들로 조합될 수 있다는 것이 인식될 것이다.
상기 개요뿐만 아니라, 예시적인 실시형태들의 다음의 상세한 설명은 첨부된 도면들과 함께 판독될 때에 더욱 양호하게 이해된다. 본 개시내용을 예시할 목적을 위하여, 개시내용의 예시적인 구성들은 도면들에서 도시되어 있다. 그러나, 본 개시내용은 본원에서 개시된 특정 방법들 및 장치로 제한되지는 않는다. 또한, 당해 분야의 당업자들은 도면들이 비례에 맞지 않다는 것을 이해할 것이다. 가능한 모든 경우에, 유사한 구성요소들은 동일한 번호들에 의해 표시되었다.
본 개시내용의 실시형태들은 다음의 도면들을 참조하여 오직 예로서 지금부터 설명될 것이다.
도 1은 본 개시내용의 실시형태들을 실시하기 위하여 적당한 일 예의 네트워크 환경의 개략적인 예시도이다.
도 2는 본 개시내용의 실시형태에 따른, 일 예의 데이터 흐름의 예시도이다.
도 3은 본 개시내용의 실시형태에 따른, 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 방법의 단계들의 예시도이다.
도 4a 및 도 4b는 집합적으로, 본 개시내용의 실시형태에 따른, 인코딩 프로세싱의 단계들의 예시도이다.
도 5는 본 개시내용의 실시형태에 따른, 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 방법의 단계들의 예시도이다.
도 6a 및 도 6b는 집합적으로, 본 개시내용의 실시형태에 따른, 디코딩 프로세싱의 단계들의 예시도이다.
동반된 도면들에서, 밑줄표시된 번호는 밑줄표시된 번호가 그 상부에 위치되는 항목, 또는 밑줄표시된 번호가 인접하는 항목을 표현하기 위하여 사용된다. 밑줄표시되지 않은 번호는 밀줄표시되지 않은 번호를 항목에 연결하는 라인에 의해 식별된 항목에 관한 것이다. 번호가 밑줄표시되지 않거나 연관된 화살표에 의해 동반될 때, 밀줄표시되지 않은 번호는 화살표가 지시하고 있는 일반적인 항목을 식별하기 위하여 이용된다.
다음의 상세한 설명은 본 개시내용의 실시형태들과, 이들이 구현될 수 있는 방법들을 예시한다. 본 개시내용을 수행하는 최상의 형태가 개시되었지만, 당해 분야의 당업자들은 본 개시내용을 수행하거나 실시하기 위한 다른 실시형태들이 또한 가능하다는 것을 인식할 것이다.
본 개시내용의 실시형태들은 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하기 위한 프로세싱 하드웨어를 포함하는 인코더를 제공한다. 프로세싱 하드웨어는 입력 데이터(D1)를 데이터 블록들 및/또는 데이터 패킷들로서 프로세싱하도록 동작가능하다. 선택적으로, 입력 데이터(D1)는 텍스트 데이터, 이미지 데이터, 비디오 데이터, 오디오 데이터, 2진 데이터, 센서 데이터, 측정 데이터, 그래픽 데이터, 게놈 데이터, 다차원 데이터 및/또는 1차원 데이터 중의 적어도 하나의 형태로 되어 있지만, 그것으로 제한되지는 않는다.
프로세싱 하드웨어는 입력 데이터(D1) 내에서 데이터 블록들 및/또는 데이터 패킷들의 실질적인 재발생들을 식별하도록 동작가능하다. 다음으로, 프로세싱 하드웨어는 엘리먼트들이 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경되지 않는 경우와, 및/또는 엘리먼트들이 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경되는 경우를 식별하도록 동작가능하다.
추후에, 프로세싱 하드웨어는 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 엘리먼트들에 대한 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는, 적어도 하나의 대응하는 심볼, 또는 적어도 하나의 대응하는 비트, 예를 들어, 단일 비트를 사용함으로써 인코딩된 데이터(E2)에서의 변경되지 않은 엘리먼트들을 인코딩하도록 동작가능하다. 선택적으로, 적어도 하나의 대응하는 심볼은 미리 결정된 데이터 값에 의해 표현된다. 선택적으로, 미리 결정된 데이터 값은 제로 데이터 값으로서 구현된다. 선택적으로, 예를 들어, 비트 값이 0 일 때의 변경되지 않은 값과, 예를 들어, 비트 값이 1 일 때의 변경된 값은 별도의 비트 스트림에서의 비트들에 의해 기술되고, 변경된 입력 데이터 값들만이 데이터 스트림으로 인코딩된다. "채널"은 인코딩된 데이터(E2)의 채널-정의된 부분, 데이터의 채널-정의된 별도의 스트림, 채널-정의된 별도의 데이터 파일 중의 적어도 하나를 의미한다.
또한, 프로세싱 하드웨어는 인코딩된 데이터(E2)에서 변경된 엘리먼트들을 인코딩하도록 동작가능하다. 선택적으로, 프로세싱 하드웨어는 인코딩된 데이터(E2)에서 양자화된 방식으로 변경된 엘리먼트들의 적어도 부분을 인코딩하도록 동작가능하다.
또한, 선택적으로, 프로세싱 하드웨어는 인코딩된 출력 데이터(E2) 내로 포함되는 압축된 데이터(C4)를 생성하기 위하여 인코딩된 데이터(E2)를 압축하기 위한 압축 알고리즘, 예를 들어, 범위 코딩, SRLE, 델타 코딩, ODelta 코딩, EM(엔트로피 수정) 코딩, 산술 코딩, 허프만 코딩을 적용하도록 동작가능하지만, 그것으로 제한되지는 않는다.
또한, 본 개시내용의 실시형태들은 또한, 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하기 위한 프로세싱 하드웨어를 포함하는 디코더를 제공한다. 프로세싱 하드웨어는 인코딩된 데이터(E2)를 데이터 블록들 및/또는 데이터 패킷들로서 프로세싱하도록 동작가능하다.
프로세싱 하드웨어는 인코딩된 데이터(E2) 내의 데이터 블록들 및/또는 데이터 패킷들의 실질적인 재발생들 내에서 변경되는 엘리먼트들(이하, "변경된 엘리먼트들"로서 지칭됨)에 대한 데이터를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하도록 동작가능하다. 선택적으로, 프로세싱 하드웨어는 디코딩된 데이터(D3)에서 양자화된 방식으로 변경된 엘리먼트들의 적어도 부분을 디코딩하도록 동작가능하다. "양자화된 방식"은 변경된 엘리먼트가 데이터로 디코딩되는 것을 의미하고, 여기서, 디코딩된 데이터는 데이터에 대한 유한한 수의 가능한 값들로부터 선택되고, 즉, 디코딩된 데이터는 비-연속적인 방식으로 변경된다.
프로세싱 하드웨어는 인코딩된 데이터(E2) 내의 데이터 블록들 및/또는 데이터 패킷들의 실질적인 재발생들 내에서 변경되지 않는 엘리먼트들(이하, "변경되지 않은 엘리먼트들"로서 지칭됨)에 대한 데이터를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하도록 동작가능하다. 인코딩된 데이터(E2)에서, 변경되지 않은 엘리먼트들은 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 엘리먼트들에 대한 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는, 적어도 하나의 대응하는 심볼, 또는 적어도 하나의 대응하는 비트, 예를 들어, 단일 비트에 의해 표현된다.
선택적으로, 프로세싱 하드웨어는 변경된, 그리고 변경되지 않은 엘리먼트들에 대한 데이터를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩함에 있어서 이용하기 위한 인코딩된 데이터(E2)에서 존재하는 압축된 데이터(C4)를 압축해제하기 위한 압축해제 알고리즘을 적용하도록 동작가능하다.
또한, 프로세싱 하드웨어는 디코딩된 데이터(D3)를 생성하기 위하여, 변경된, 그리고 변경되지 않은 엘리먼트들에 대하여 생성된 데이터를 데이터 블록들 및/또는 데이터 패킷들로 조립하도록 동작가능하다.
선택적으로, 디코딩된 데이터(D3)는 텍스트 데이터, 이미지 데이터, 비디오 데이터, 오디오 데이터, 2진 데이터, 센서 데이터, 측정 데이터, 그래픽 데이터, 게놈 데이터, 다차원 데이터 및/또는 1차원 데이터 중의 적어도 하나의 형태로 되어 있지만, 그것으로 제한되지는 않는다.
또한, 본 개시내용의 실시형태들은 또한, 상기 언급된 인코더 및 상기 언급된 디코더를 포함하는 코덱을 제공한다. 선택적으로, 코덱은 비디오 코덱, 오디오 코덱, 이미지 코덱 및/또는 데이터 코덱 중의 적어도 하나의 형태로 되어 있지만, 그것으로 제한되지는 않는다.
또한, 선택적으로, 인코더 및 디코더는 하이퍼텍스트 전송 프로토콜(HTTP) 및/또는 실시간 메시징 프로토콜(RTMP)을 위한 청크 전송 인코딩을 구현하도록 동작가능하다. 선택적으로, HTTP 및/또는 RTMP는 요청들 및 요청들에 대한 응답들 내부에서 고정된-크기 데이터 블록들 및/또는 데이터 패킷들을 사용한다.
특히, 그 참조 번호들에 의해 지금부터 도면들을 참조하면, 도 1은 본 개시내용의 실시형태들을 실시하기 위하여 적당한 일 예의 네트워크 환경(100)의 개략적인 예시도이다. 네트워크 환경(100)은 인코더(102)와, 도 1에서 전자 디바이스(104)로서 도시된 하나 이상의 전자 디바이스들을 포함한다. 네트워크 환경(100)은 또한, 통신 네트워크(106)와, 도 1에서 데이터 서버 및/또는 데이터 저장장치(108) 및 데이터베이스(110)로서 도시된 하나 이상의 데이터 서버들 및/또는 데이터 저장장치들 및 하나 이상의 데이터베이스들을 포함한다. 추가적으로, 네트워크 환경(100)은 디코더(112)와, 도 1에서 컴퓨터화된 디바이스(114)로서 도시된 하나 이상의 컴퓨터화된 디바이스들을 포함한다. 선택적으로, 네트워크 환경(100)은 하나 이상의 데이터베이스들, 및/또는 네트워크 환경(100)의 디바이스들에 대해 공간적으로 로컬 영역에 있는 하나 이상의 로컬 데이터 메모리들(116, 118)을 포함한다.
네트워크 환경(100)은 다양한 가능한 시나리오들에 따라, 다양한 방법들로 선택적으로 구현된다. 하나의 예의 시나리오에서, 네트워크 환경(100)은 예를 들어, 도 1 에서 도시된 바와 같이, 직접 접속을 통해 상호간에 통신하도록 결합된 데이터 서버 및/또는 데이터 저장장치(108) 및 데이터베이스(110)의 공간적으로 병치된(collocated) 배열을 통해 선택적으로 구현된다. 또 다른 예의 시나리오에서, 네트워크 환경(100)은 통신 네트워크(106)와 같은 통신 네트워크를 통해 상호간에 통신하도록 결합된 데이터 서버 및/또는 데이터 저장장치(108) 및 데이터베이스(110)의 공간적으로 분산된 배열을 통해 선택적으로 구현된다. 또 다른 예의 시나리오에서, 데이터 서버 및/또는 데이터 저장장치(108) 및 데이터베이스(110)는 클라우드 컴퓨팅 서비스들을 통해 선택적으로 구현된다. 선택적으로, 네트워크 환경(100)은 분산된 피어-투-피어(peer-to-peer; P2P) 방식으로 구현된다.
데이터 서버 및/또는 데이터 저장장치(108)는 통신 네트워크(106)를 통해 또는 직접 접속을 통해, 인코더(102) 및 디코더(112)와 통신하도록 결합된다. 또한, 인코더(102)는 통신 네트워크(106)를 통해 또는 집적 접속을 통해, 디코더(112)와 통신하도록 결합된다.
통신 네트워크(106)는 선택적으로, 서로 상호접속되고 단일의 대형 네트워크로서 기능하는 개별적인 네트워크들의 집합이다. 이러한 개별적인 네트워크들은 선택적으로 유선, 무선, 또는 그 조합이다. 이러한 개별적인 네트워크들의 예들은 로컬 영역 네트워크(Local Area Network; LAN)들, 광역 네트워크(Wide Area Network; WAN)들, 도시 영역 네트워크(Metropolitan Area Network; MAN)들, 무선 LAN(Wireless LAN; WLAN)들, 무선 WAN(Wireless WAN; WWAN)들, 무선 MAN(Wireless MAN; WMAN)들, 인터넷, 2세대(second generation; 2G) 전기통신 네트워크들, 3세대(third generation; 3G) 전기통신 네트워크들, 4세대(fourth generation; 4G) 전기통신 네트워크들, 및 마이크로파 액세스를 위한 전세계 상호운용성(Worldwide Interoperability for Microwave Access; WiMAX) 네트워크들을 포함하지만, 그것으로 제한되지는 않는다.
전자 디바이스(104)는 그것에 대한 입력으로서 입력 데이터(D1)를 가지는 인코더(102)를 직접적으로, 또는 통신 네트워크(106)를 통해 제공한다. 선택적으로, 입력 데이터(D1)는 텍스트 데이터, 이미지 데이터, 비디오 데이터, 오디오 데이터, 2진 데이터, 센서 데이터, 측정 데이터, 그래픽 데이터, 게놈 데이터, 다차원 데이터 및/또는 1차원 데이터 중의 적어도 하나의 형태로 되어 있지만, 그것으로 제한되지는 않는다. 입력 데이터(D1)는 선택적으로 수정된 데이터, 전체 데이터 시퀀스의 일부, 또는 다양한 타입들의 데이터의 조합이다. 선택적으로, 입력 데이터(D1)는 스트림으로서 또는 파일로서 수신된다.
인코더(102)는 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하기 위한 비-일시적(즉, 비-순시적) 컴퓨터-판독가능 저장 매체 상에 저장된 컴퓨터-판독가능 명령들을 실행하도록 동작가능한 프로세싱 하드웨어를 포함한다. 대안적으로 또는 추가적으로, 프로세싱 하드웨어는 하드와이어드(hardwired) 되고, 예를 들어, 애플리케이션-특정 집적 회로(application-specific integrated circuit; ASIC), 상태-가변 머신 또는 유사한 것을 통해 구현된다.
선택적으로, 인코더(102)는 전자 디바이스(104)의 일부로서 구현된다. 이 경우, 인코더(102)의 프로세싱 하드웨어는 전자 디바이스(104) 내에 포함된다. 예에서, 전자 디바이스(104)는 동작 시에 다량의 이미지 및/또는 비디오 데이터를 생성하는 이미지 및/또는 비디오 캡처 디바이스이고, 여기서, 데이터 저장 목적들을 위하여 관리가능한 이미지 및/또는 비디오 데이터의 분량들을 렌더링하면서, 이미지 및/또는 비디오 데이터에서의 미세한 정보를 보존하기 위하여 무손실 압축이 희망된다. 이러한 이미지 및/또는 비디오 캡처 디바이스들의 예들은 감시 카메라들, 비디오 레코더들, X-선 디바이스들, 자기 공명 이미징(Magnetic Resonance Imaging; MRI) 스캐너들, 및 초음파 스캐너들을 포함하지만, 그것으로 제한되지는 않는다. 전자 디바이스(104)는 동시에 매우 에너지 효율적이면서, 매우 효율적인 방식으로 본 개시내용의 방법들과 연관된 데이터 조작들을 수행할 수 있는 축소 명령 세트 컴퓨팅(Reduced Instruction Set Computing; RISC) 프로세서들을 이용하여 유익하게 구현된다.
대안적으로, 선택적으로는, 인코더(102)가 예를 들어, 인코더(102)의 프로세싱 하드웨어를 포함하는 컴퓨터화된 디바이스를 이용하여 독립적으로 구현된다.
입력 데이터(D1)를 수신할 시에, 인코더(102)의 프로세싱 하드웨어는 입력 데이터(D1)를 데이터 블록들 및/또는 데이터 패킷들로서 프로세싱하도록 동작가능하다. 선택적으로, 이 데이터 블록들 및/또는 데이터 패킷들은 고정된 크기를 가진다. 대안적으로, 데이터 블록들 및/또는 데이터 패킷들은 가변적인 크기를 가지고; 선택적으로, 가변적인 크기는 입력 데이터(D1)의 내용 및/또는 포맷의 함수로서 결정된다. 선택적으로, 내용은 데이터 블록들 및/또는 데이터 패킷들의 가변적인 크기를 결정하기 위한 하나 이상의 파라미터들을 컴퓨팅하기 위한 공간적 퓨리에(Fourier) 분석 및 시간적 퓨리에 분석의 조합을 사용함으로써 자동으로 분석된다. 퓨리에 변환들, 예를 들어, 고속 퓨리에 변환(Fast Fourier Transform; FFT)은 당해 분야의 당업자에게 알려져 있고, 예를 들어, 하나 이상의 RISC 프로세서들을 이용하여 재귀적 방식으로 선택적으로 구현된다.
인코더(102)의 프로세싱 하드웨어는 입력 데이터(D1) 내의 데이터 블록들 및/또는 데이터 패킷들의 실질적인 재발생들, 즉, 입력 데이터(D1) 내의 실질적으로 유사한 데이터 블록들 및/또는 데이터 패킷들을 식별하도록 동작가능하다. 다음으로, 인코더(102)의 프로세싱 하드웨어는 엘리먼트들이 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경되지 않는 경우와, 및/또는 엘리먼트들이 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경되는 경우를 식별하도록 동작가능하다.
추후에, 인코더(102)의 프로세싱 하드웨어는 인코딩된 데이터(E2)에서, 대응하는 참조 데이터 블록 및/또는 데이터 패킷 내의 대응하는 엘리먼트들에 대한 데이터 블록 및/또는 데이터 패킷 내의 변경되지 않은 엘리먼트들에 있어서의 변경의 부재를 표시하는, 적어도 하나의 대응하는 심볼 또는 하나 이상의 대응하는 비트들, 예를 들어, 단일 비트를 사용함으로써 각각의 데이터 블록 및/또는 데이터 패킷 내의 변경되지 않은 엘리먼트들을 인코딩하도록 동작가능하다. 이와 관련하여, "MemoryCompare" 기능성은 주어진 데이터 블록 및/또는 데이터 패킷의 엘리먼트들을 참조 데이터 블록 및/또는 데이터 패킷의 엘리먼트들과 비교하기 위하여 선택적으로 이용된다.
선택적으로, 참조 데이터 블록 및/또는 데이터 패킷은 고정된다. 예에서, 참조 데이터 블록 및/또는 데이터 패킷은 입력 데이터(D1)의 데이터 블록들 및/또는 데이터 패킷들의 전부에 대하여 유사하다. 또 다른 예에서, 참조 데이터 블록 및/또는 데이터 패킷은 입력 데이터(D1)의 데이터 블록들 및/또는 데이터 패킷들의 적어도 서브세트에 대하여 유사하다.
대안적으로, 선택적으로는, 참조 데이터 블록 및/또는 데이터 패킷은 이하에서 상세히 설명되는 바와 같이, 어떤 기준들에 기초하여 변경된다. 예에서, 소정의 데이터 블록 및/또는 데이터 패킷 및 또 다른 블록 및/또는 데이터 패킷 내의 변경된 엘리먼트들의 수가 미리 정의된 문턱 수 미만일 때, 주어진 데이터 블록 및/또는 데이터 패킷은 입력 데이터(D1)에서의 임의의 데이터 블록 및/또는 데이터 패킷에 대한 참조 데이터 블록 및/또는 데이터 패킷으로서 취해질 수 있다. 또 다른 예에서, 이전의 데이터 블록 및/또는 데이터 패킷은 입력 데이터(D1)에서의 현재의 데이터 블록 및/또는 데이터 패킷에 대한 참조 데이터 블록 및/또는 데이터 패킷으로서 취해진다. 선택적으로, 이전의 데이터 블록 및/또는 데이터 패킷은 현재의 데이터 블록이 연속적으로 그 후에 후행하였던 데이터 블록 및/또는 데이터 패킷이다. 대안적으로, 선택적으로는, 이전의 데이터 블록 및/또는 데이터 패킷은 이전의 프레임, 뷰, 또는 채널에서 발생하였던 데이터 블록 및/또는 데이터 패킷이다. 또한 대안적으로, 선택적으로는, 이전의 데이터 블록 및/또는 데이터 패킷은 사전에 알려지거나 선택되었던 데이터 블록 및/또는 데이터 패킷이다. 또한 대안적으로, 선택적으로는, 선택된 이전의 데이터 블록 및/또는 데이터 패킷의 정보는 그것을 기술하는 심볼 또는 참조 번호와 함께, 또는 예를 들어, 선택된 데이터 블록 및/또는 데이터 패킷을 기술하는 모션 벡터와 함께 전달된다.
선택적으로, 적어도 하나의 대응하는 심볼은 미리 결정된 데이터 값에 의해 표현된다. 선택적으로, 미리 결정된 데이터 값은 입력 데이터(D1)의 데이터 블록들 및/또는 데이터 패킷들의 변경된 엘리먼트들의 데이터 값들의 분석에 기초하여 결정되고; 이러한 분석은 예를 들어, 입력 데이터(D1)에서 존재하는 데이터 블록들 내의 엘리먼트 값들의 통계적 분석을 수행함으로써 수행되고; 이러한 분석은 본 개시내용에 따른 "식별"을 제공한다. 선택적으로, 미리 결정된 데이터 값은 제로 데이터 값으로서 구현된다. 대안적으로, 선택적으로는, 비트들이 데이터 블록 또는 패킷에서의 변경된, 그리고 변경되지 않은 데이터 값들을 기술하기 위하여 이용되고, 또 다른 스트림으로 전송되고, 이러한 경우, 변경된 데이터 값들만이 데이터 스트림으로 선택적으로 인코딩된다.
또한, 인코더(102)의 프로세싱 하드웨어는 인코딩된 데이터(E2)에서 변경된 엘리먼트들을 인코딩하도록 동작가능하다. 선택적으로, 무손실 동작에 대하여, 인코더(102)의 프로세싱 하드웨어는 인코딩된 데이터(E2)에서 그 원래의 형태로 변경된 엘리먼트들을 인코딩하도록 동작가능하다. 대안적으로, 선택적으로는, 손실 동작에 대하여, 인코더(102)의 프로세싱 하드웨어는 인코딩된 데이터(E2)에서 양자화된 방식으로 변경된 엘리먼트들의 적어도 부분을 인코딩하도록 동작가능하다.
또한 대안적으로, 선택적으로는, 무손실-근접 동작에 대하여, 인코더(102)의 프로세싱 하드웨어는 인코딩된 데이터(E2)에서 양자화된 방식으로 변경된 엘리먼트들의 적어도 일부 부분을 인코딩하도록 동작가능하다. 이 목적을 위하여, 인코더(102)의 프로세싱 하드웨어는 입력 데이터(D1)의 내용, 타입, 및/또는 구조(composition)의 분석에 기초하여 변경된 엘리먼트들의 일부 부분들만을 양자화하도록 선택적으로 동작가능하고; 이러한 분석은 예를 들어, 관심 있는 다른 영역들보다 더욱 양호하거나 더욱 열악한 품질로 유익하게 인코딩되는 입력 데이터(D1)에서의 관심 있는 영역들의 발생을 결정하도록 동작가능하다. 선택적으로, 입력 데이터가 의료용, 군용, 2진, 텍스트, 또는 유사한 데이터일 경우, 그것은 유익하게 무손실로 코딩되어야 하지만, 입력 데이터가 오디오, 비디오, 스틸 이미지들 등등일 경우, 손실 코딩이 유익하게 마찬가지로 허용된다. 물론, 관심 있는 다른 영역들보다 더욱 양호하거나 더욱 열악한 품질로 유익하게 인코딩되는 입력 데이터(D1)에서의 관심 있는 영역들이 잠재적으로 발생한다. 결과적으로, 인코더(102)는 입력 데이터(D1)와 인코딩된 데이터(E2) 사이의 양자화를 변경함으로써 손실 있게 인코딩된 데이터의 압축률을 적응적으로 변동시킬 수 있다.
또한, 선택적으로, 인코더(102)의 프로세싱 하드웨어는 압축된 데이터(C4)를 생성하기 위하여 인코딩된 데이터(E2)를 압축하기 위한 압축 알고리즘을 적용하도록 동작가능하다. 이와 관련하여, 인코더(102)는 임의의 당대의 엔트로피 인코더들; 예를 들어, 범위 코딩, SRLE, 델타 코딩, ODelta 코딩, EM, 산술 코딩, 허프만 코딩을 사용하는 인코더들과 함께 유익하게 이용가능하다.
또한, 인코더(102)는 데이터베이스(110)에서의 저장을 위하여, 인코딩된 데이터(E2)를 데이터 서버 및/또는 데이터 저장장치(108)로 통신하도록 동작가능하다. 데이터 서버 및/또는 데이터 저장장치(108)는 인코딩된 데이터(E2)를 추후에 디코딩하기 위하여, 인코더(102)와 유익하게 호환가능한, 통신 네트워크를 통해 또는 직접 접속을 통해, 디코더(112)에 의해 액세스가능하도록 배열된다. 압축 알고리즘이 압축된 데이터(C4)를 생성하기 위하여 인코딩된 데이터(E2)를 압축하도록 적용되는 예에서, 인코더(102)는 데이터베이스(110)에서 저장하기 위하여, 통신 네트워크를 통해 또는 직접 접속을 통해, 인코딩된 데이터(E2)에서의 압축된 데이터(C4)를 데이터 서버 및/또는 데이터 저장장치(108)로 통신한다.
일부 예들에서, 디코더(112)는 데이터 서버 및/또는 데이터 저장장치(108)로부터의 인코딩된 데이터(E2) 또는 압축된 데이터(C4)를 액세스하도록 선택적으로 동작가능하다. 대안적인 예들에서, 인코더(102)는 통신 네트워크(106)를 통해 또는 직접 접속을 통해, 인코딩된 데이터(E2) 또는 압축된 데이터(C4)를 디코더(112)로 스트리밍하도록 선택적으로 동작가능하다. 선택적으로, 게다가, 데이터 파일은 인코더(102)의 출력으로 생성될 수 있고, 디코더(112)를 위한 입력으로서 이용될 수 있다. 또한, 하드웨어 또는 소프트웨어 인코더를 구비한 디바이스는 또한, 하드웨어 또는 소프트웨어 디코더를 구비한 또 다른 디바이스와 직접적으로 통신할 수 있다는 것이 인식될 것이다. 또 다른 대안적인 예들에서, 디코더(112)는 하드 드라이브 및 솔리드-스테이트 드라이브(Solid-State Drive; SSD)와 같은 비-일시적(즉, 비-순시적) 컴퓨터-판독가능 저장 매체로부터 인코딩된 데이터(E2) 또는 압축된 데이터(C4)를 취출(retrieve)하기 위하여 선택적으로 구현된다.
디코더(112)는 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하기 위한 비-일시적(즉, 비-순시적) 컴퓨터-판독가능 저장 매체 상에 저장된 컴퓨터-판독가능 명령들을 실행하도록 동작가능한 프로세싱 하드웨어를 포함한다.
선택적으로, 디코더(112)는 컴퓨터화된 디바이스(114)의 일부로서 구현된다. 이 경우, 디코더(112)의 프로세싱 하드웨어는 컴퓨터화된 디바이스(114) 내에 포함된다. 컴퓨터화된 디바이스(114)의 예들은 이동 전화, 스마트 전화, 이동 인터넷 디바이스(Mobile Internet Device; MID), 태블릿 컴퓨터(tablet computer), 울트라-이동 개인용 컴퓨터(Ultra-Mobile Personal Computer; UMPC), 패블릿 컴퓨터(phablet computer), 개인 정보 단말(Personal Digital Assistant; PDA), 웹 패드(web pad), 개인용 컴퓨터(Personal Computer; PC), 핸드헬드 PC(handheld PC), 랩톱 컴퓨터(laptop computer), 데스크톱 컴퓨터, 내장된 PC를 갖는 대형-크기 터치 스크린, 및 대화형 엔터테인먼트 디바이스, 예컨대, 게임 콘솔(game console), 비디오 플레이어, 텔레비전(TV) 세트, 및 셋톱 박스(Set-Top Box; STB)를 포함하지만, 그것으로 제한되지는 않는다.
대안적으로, 선택적으로는, 디코더(112)가 예를 들어, 디코더(112)의 프로세싱 하드웨어를 포함하는 또 다른 컴퓨터화된 디바이스를 이용하여 독립적으로 구현된다.
요구될 때, 디코더(112)의 프로세싱 하드웨어는 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하도록 동작가능하다. 이와 관련하여, 디코더(112)의 프로세싱 하드웨어는 인코딩된 데이터(E2)를 데이터 블록들 및/또는 데이터 패킷들로서 프로세싱하도록 동작가능하다.
디코더(112)의 프로세싱 하드웨어는 인코딩된 데이터(E2) 내의 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경된 엘리먼트들에 대한 데이터를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하도록 동작가능하다. 선택적으로, 무손실 동작에 대하여, 디코더(112)의 프로세싱 하드웨어는 디코딩된 데이터(D3)에서 그 원래의 형태로 변경된 엘리먼트들을 디코딩하도록 동작가능하다. 대안적으로, 선택적으로는, 손실 동작에 대하여, 디코더(112)의 프로세싱 하드웨어는 디코딩된 데이터(D3)에서 양자화된 방식으로 변경된 엘리먼트들의 적어도 부분을 디코딩하도록 동작가능하고; 선택적으로, 디코딩의 양자화된 방식은 예를 들어, 인코딩된 데이터(E2)에서 존재하는 데이터의 포맷 또는 타입에 따라 가변적인 양자화를 사용하고, 여기서, 이러한 가변적인 양자화는 디코더들에서의 전력 소비를 감소시킬 수 있고, 이것은 저-전력 휴대용 디바이스들, 예를 들어, 배터리-급전식 디바이스들을 위하여 중요하다. 또한 대안적으로, 선택적으로는, 무손실-근접 동작에 대하여, 디코더(112)의 프로세싱 하드웨어는 디코딩된 데이터(D3)에서 양자화된 방식으로 변경된 엘리먼트들의 적어도 일부 부분을 디코딩하도록 동작가능하다.
또한, 디코더(112)의 프로세싱 하드웨어는 인코딩된 데이터(E2) 내의 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경되지 않은 엘리먼트들에 대한 데이터를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하도록 동작가능하다. 인코딩된 데이터(E2)에서, 변경되지 않은 엘리먼트들은 더 이전에 설명된 바와 같이, 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 엘리먼트들에 대한 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는, 적어도 하나의 대응하는 심볼, 또는 적어도 하나의 대응하는 비트, 예를 들어, 단일 비트에 의해 표현된다. 따라서, 선택적으로, 디코더(112)의 프로세싱 하드웨어는 적어도 하나의 대응하는 심볼, 또는 적어도 하나의 대응하는 비트, 예를 들어, 단일 비트가 인코딩된 데이터(E2)의 주어진 데이터 블록 및/또는 데이터 패킷 내에서 발생한 경우를 식별하고, 적어도 하나의 대응하는 심볼을 대체하거나, 또는 대안적으로, 적어도 하나의 데이터 값을, 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 엘리먼트들을 갖는 데이터 블록 및/또는 데이터 패킷에서의 대응하는 비트의 위치로 설정하도록 동작가능하다.
디코더(112)에 압축된 데이터(C4)가 제공되는 예에서, 디코더(112)의 프로세싱 하드웨어는 변경된, 그리고 변경되지 않은 엘리먼트들에 대한 데이터를 생성하기 위해 인코딩된 데이터(E2)를 디코딩하기 위하여, 인코딩된 데이터(E2)를 생성하기 위하여 압축된 데이터(C4)를 압축해제하기 위한 압축해제 알고리즘을 적용하도록 동작가능하다.
또한, 디코더(112)의 프로세싱 하드웨어는 디코딩된 데이터(D3)를 생성하기 위하여, 변경된, 그리고 변경되지 않은 엘리먼트들에 대하여 생성된 데이터를 데이터 블록들 및/또는 데이터 패킷들로 조립하도록 동작가능하다. 선택적으로, 그렇게 생성된 디코딩된 데이터(D3)는 텍스트 데이터, 이미지 데이터, 비디오 데이터, 오디오 데이터, 2진 데이터, 센서 데이터, 측정 데이터, 그래픽 데이터, 게놈 데이터, 다차원 데이터 및/또는 1차원 데이터 중의 적어도 하나의 형태로 되어 있지만, 그것으로 제한되지는 않는다.
추후에, 선택적으로, 디코더(112)는 디코딩된 데이터(D3)를 컴퓨터화된 디바이스(114)로 전송하도록 동작가능하다.
또한, 선택적으로, 인코더(102) 및 디코더(112)는 코덱으로 구현되도록 배열된다. 선택적으로, 코덱은 비디오 코덱, 오디오 코덱, 이미지 코덱 및/또는 데이터 코덱 중의 적어도 하나의 형태로 되어 있지만, 그것으로 제한되지는 않는다. 코덱은 선택적으로, 디지털 카메라들, 이동 전화들, 스마트폰들, 감시 장비, 및 그러한 것들과 같은 휴대용 전자 디바이스들에서 이용된다.
또한, 선택적으로, 인코더(102) 및 디코더(112)는 하이퍼텍스트 전송 프로토콜(HTTP) 및/또는 실시간 메시징 프로토콜(RTMP)을 위한 청크 전송 인코딩을 구현하도록 동작가능하다. 선택적으로, HTTP 및/또는 RTMP는 요청들 및 요청들에 대한 응답들 내부에서 고정된-크기 데이터 블록들 및/또는 데이터 패킷들을 사용한다. 전형적으로, RTMP는 응답 시간 및 통신 네트워크의 용량에 기초하여, 통신 세션 동안에 주기적으로 데이터 블록 및/또는 데이터 패킷들의 크기를 재설정한다.
도 1은 단지 예이고, 이것은 본원에서의 청구항들의 범위를 과도하게 제한하지 않아야 한다. 네트워크 환경(100)에 대한 특정 명칭은 예로서 제공되고, 네트워크 환경(100)을 인코더들, 전자 디바이스들, 디코더들, 컴퓨터화된 디바이스들, 데이터 서버들 및/또는 데이터 저장장치들, 데이터베이스들, 및 통신 네트워크들의 특정 수들, 타입들, 또는 배열들로 제한하는 것으로 해석되지 않아야 한다는 것을 이해해야 한다. 당해 분야의 당업자는 본 개시내용의 실시형태들의 많은 변형들, 대안들, 및 수정들을 인식할 것이다.
도 2는 본 개시내용의 실시형태에 따른, 일 예의 데이터 흐름의 예시도이다. 예시의 목적들을 위하여, 예가 설명될 것이고, 여기서, 전자 디바이스(104)는 예를 들어, 침입자들을 검출하기 위한, 및/또는 화재, 홍수 등등과 같은 위험한 사건들을 검출하기 위한 원격 감시 시스템을 구현하기 위한 설비에서 사용되었던 인터넷 프로토콜(Internet Protocol; IP) 카메라이다.
IP 카메라는 IP 카메라 내에 포함된 하나 이상의 이미지 센서들에 의해 센싱된 바와 같은 센서 데이터를 인코더(102)에 제공하도록 동작가능하다. 이 예에서, 센서 데이터는 1차원 이미지 데이터 또는 다차원 이미지 데이터 및/또는 비디오 데이터 및/또는 다른 타입들의 데이터를 포함한다.
또한, 동작 시에, 전자 디바이스(104)에 의해 캡처된 비디오는 그와 연관된 사용자에 의해 시청되도록 하기 위하여 컴퓨터화된 디바이스(114)로 스트리밍된다.
일 예의 데이터 흐름에서, 입력 데이터(D1)는 IP 카메라에 의해 캡처된 원래의 비디오이다. 입력 데이터(D1)는 전형적으로 크기에 있어서 크고; 그러므로, 그것을 데이터베이스(110) 내에 저장하기 위한 큰 데이터 저장 공간과, 통신 네트워크(106)를 통해 또는 직접 접속을 통해 그것을 전송하기 위한 큰 네트워크 대역폭을 요구한다.
입력 데이터(D1)를 인코딩된 데이터(E2)로 인코딩하기 위하여, 인코더(102)의 프로세싱 하드웨어는 입력 데이터(D1)의 내용, 타입, 및/또는 구조를 분석하도록 동작가능하다. 분석에 기초하여, 인코더(102)의 프로세싱 하드웨어는 비디오의 이미지 프레임들, 뷰들, 또는 채널들을 복수의 데이터 블록들로 분할하도록 동작가능하다. 분석은 유익하게도, 예를 들어, 입력 데이터(D1)에서 발생하는 변경들의 스펙트럼, 예를 들어, 입력 데이터(D1)에서의 변경의 시간적 레이트들의 스펙트럼을 컴퓨팅하는 것과, 또한, 이미지들의 시간적 시퀀스들의 공간적 부분들 및 입력 데이터(D1)에서의 변경의 그 연관된 레이트들의 분석을 수반한다. 유익하게도, 분석은 데이터에서의 주기성(periodicity)들, 즉, 데이터의 재귀(recur)하는 구성들을 구하도록 동작가능하고, 이러한 주기성이 구해질 경우, 이러한 주기성에 기초하여 블록들 또는 패킷들로의 데이터의 분할을 행하는 것이 유리하다.
선택적으로, 각각의 이미지 프레임, 뷰, 또는 채널은 유사한 방식으로 데이터 블록들로 분할된다. 이것은 특히, 이전의 이미지 프레임들, 뷰들, 또는 채널들에서의 참조 데이터 블록들의 선택을 가능하게 하기 위하여 유익하다.
이 방법은 선택적으로, 중복제거 방법, 또는 재발생들, 즉, 적당한 참조 블록을 선택하는 것을 검출하고, 참조 데이터 블록들 및/또는 데이터 패킷들을 저장하고 업데이트하도록 동작가능한, (예를 들어, 특허 GB2503295B에서 설명된 바와 같은) 블록 인코더 및 (예를 들어, 특허 출원 GB1214400.2에서 설명된 바와 같은) 대응하는 블록 디코더와 함께 이용된다. 이 방법들은 또한, 데이터를 적당한 데이터 블록들 및/또는 데이터 패킷들로 분할하고, 디코딩된 데이터(D3)를 생성하기 위하여 데이터 블록들 및/또는 데이터 패킷들을 다시 합성하도록 동작가능하다. 선택적으로, 블록 인코더는 예를 들어, 상기한 것에서 설명된 바와 같이, 중복제거 방법으로 그 후에 인코딩되는 데이터 스트림들을 생성하기 위하여 이용된다.
선택적으로, 데이터 블록들은 이 데이터 블록들, 예를 들어, 64 x 64 엘리먼트들, 32 x 16 엘리먼트들, 4 x 20 엘리먼트들, 10 x 4 엘리먼트들, 1 x 4 엘리먼트들, 3 x 1 엘리먼트들, 8 x 8 엘리먼트들, 1 x 1 엘리먼트 등에 의해 표현된 데이터 프레임들의 영역들과 관련하여 직선형이다. 그러나, 데이터 블록들의 다른 형상들은 예를 들어, 삼각형, 다각형, 타원형, 및 원형과 같이 대안적으로 사용될 수 있다는 것이 여기에서 인식될 것이다. 하나의 예에서, 입력 데이터(D1)는, 직선형 데이터 블록들에 의해 비효율적으로 표현되지만, 타원형 및 원형 데이터 블록들에 효율적으로 맵핑되는 다수의 굴곡된 이미지 성분들을 포함하는 피어오르는 연기 또는 화염들, 또는 난류성 물 흐름의 이미지에 대응함으로써, 잠재적으로 더 높은 데이터 압축도를 제공한다. 또한, 용어 '데이터 블록'은 선택적으로, 본 개시내용의 전반에 걸쳐, 데이터 블록뿐만 아니라, 데이터 블록 내에 포함된 데이터 세그먼트들을 지칭한다.
선택적으로, 데이터 블록들은 미리 정의된 크기를 가진다. 미리 정의된 크기는 선택적으로, 디폴트에 의해 사용자-정의되거나 시스템-정의된다. 선택적으로, 미리 정의된 크기는 상기한 것에서 설명된 바와 같이, 입력 데이터(D1)의 내용, 타입, 및/또는 구조의 분석에 기초하여 인코더(102)에 의해 정의된다. 선택적으로, 데이터 블록들은 고정된 크기를 가진다. 그러므로, 데이터 블록들의 크기는 디코더(112)에 알려져 있거나, 또는 디코더(112)로 한 번만 송신된다. 데이터 블록들이 고정된 크기를 가질 때, 데이터 블록들의 크기를 기술하는 헤더 정보는 기록되거나 송신되도록 요구되지 않음으로서, 더 큰 데이터 압축이 달성되는 것을 가능하게 한다.
또한, 선택적으로, 인코더(102)의 프로세싱 하드웨어는 비디오의 제 1 이미지 프레임의 데이터 블록들, 또는 비디오의 데이터 블록 또는 데이터 패킷에 대응하는 참조 프레임의 참조 데이터 블록들을 정의하도록 동작가능하다. 이 목적을 위하여, 인코더(102)의 프로세싱 하드웨어는 참조 데이터 블록들 또는 데이터 패킷들의 엘리먼트들의 데이터 값들을 미리 결정된 데이터 값으로 재설정하도록 동작가능하다. 선택적으로, 미리 결정된 데이터 값은 제로 데이터 값으로서 구현된다.
대안적으로, 선택적으로는, 인코더(102)의 프로세싱 하드웨어가 제 1 이미지 프레임, 또는 데이터 블록 또는 데이터 패킷을 그대로 기록하거나 송신하고, 제 1 이미지 프레임의 데이터 블록들을 다음 이미지 프레임에 대한 참조 데이터 블록들로서 정의하도록 동작가능하다. 예에서, 현재의 이미지 프레임에서의 주어진 데이터 블록에 대하여, 참조 데이터 블록은 현재의 이미지 프레임에서의 주어진 데이터 블록의 위치와 유사한 이전의 이미지 프레임에서의 위치에 있는 데이터 블록인 것으로 선택된다. 이 예에서, 이전의 이미지 프레임의 데이터 값들은 참조 데이터 블록의 데이터 값들 대신에, 메모리 내에 저장되도록 요구된다.
주어진 데이터 블록에 대하여, 인코더(102)의 프로세싱 하드웨어는 주어진 데이터 블록의 모든 엘리먼트들의 데이터 값들을 통해 프로세싱하고, 주어진 데이터 블록의 엘리먼트들의 데이터 값들을, 그 대응하는 참조 데이터 블록의 대응하는 엘리먼트들의 데이터 값들과 비교하도록 동작가능하다.
선택적으로, 무손실 동작에 대하여, 데이터 값들은 양자화 없이 판독된다. 주어진 데이터 블록의 특정한 엘리먼트의 데이터 값이 참조 데이터 블록의 대응하는 엘리먼트의 데이터 값과는 상이할 경우, 그 특정한 엘리먼트는 변경된 엘리먼트로 고려된다. 이와 다르게, 주어진 데이터 블록의 특정한 엘리먼트의 데이터 값이 참조 데이터 블록의 대응하는 엘리먼트의 데이터 값과 동일하거나, 또는 선택적으로 실질적으로 동일할 경우, 그 특정한 엘리먼트는 변경되지 않은 엘리먼트로 고려된다.
대안적으로, 선택적으로는, 손실 동작에 대하여, 데이터 값들은 비교가 행해지기 전에 양자화된다. 주어진 데이터 블록의 특정한 엘리먼트의 양자화된 데이터 값과, 참조 데이터 블록의 대응하는 엘리먼트의 양자화된 데이터 값과의 사이의 차이가 미리 정의된 문턱 값보다 더 클 경우, 그 특정한 엘리먼트는 변경된 엘리먼트로 고려된다. 이와 다르게, 양자화된 데이터 값들 사이의 차이가 미리 정의된 문턱 값 이하일 경우, 그 특정한 엘리먼트는 변경되지 않은 엘리먼트로 고려된다. 선택적으로, 미리 정의된 문턱 값은 손실 동작에 대한 품질 레벨 세트에 기초한다. 요구되는 품질이 더욱 양호할수록, 이용되는 문턱 값은 더 작다. 미리 정의된 문턱은 무손실 동작에 대하여 제로이다.
추후에, 인코더(102)의 프로세싱 하드웨어는 더 이전에 설명된 바와 같이, 인코딩된 데이터(E2)에서, 적어도 하나의 대응하는 심볼, 또는 적어도 하나의 대응하는 비트, 예를 들어, 단일 비트를 이용하여 주어진 데이터 블록의 변경되지 않은 엘리먼트들을 인코딩하도록 동작가능하다. 추가적으로, 인코더(102)의 프로세싱 하드웨어는 더 이전에 설명된 바와 같이, 인코딩된 데이터(E2)에서 변경된 엘리먼트들을 인코딩하도록 동작가능하다.
추가적으로, 선택적으로는, 인코더(102)의 프로세싱 하드웨어가 변경된 엘리먼트들의 데이터 값들을 현재의 또는 새로운 참조 데이터 블록의 변경된 엘리먼트들에 기록하도록 동작가능하다. 이에 따라, 참조 데이터 블록은 선택적으로, 다음 데이터 블록, 또는 다음 데이터 블록들을 위하여 또한 이용된다.
이러한 방식으로, 인코더(102)의 프로세싱 하드웨어는 인코딩된 데이터(E2)에서 입력 데이터(D1)의 데이터 블록들을 인코딩하도록 동작가능하다. 다음으로, 인코더(102)는 도 2에서 도시된 바와 같이, 인코딩된 데이터(E2)를 디코더(112)로 통신한다.
다음으로, 대응하는 디코딩된 데이터(D3)를 생성하기 위해 인코딩된 데이터(E2)를 디코딩하기 위하여, 디코더(112)의 프로세싱 하드웨어는 인코딩된 데이터(E2) 내의 주어진 데이터 블록 내에서 적어도 하나의 대응하는 심볼 또는 하나의 대응하는 비트의 발생들을 식별하고, 적어도 하나의 대응하는 심볼을 대체하거나 참조 데이터 블록에서의 대응하는 엘리먼트들을 갖는 데이터 블록 및/또는 데이터 패킷에서의 대응하는 비트의 위치에서 데이터 값을 설정하도록 동작가능하다.
추후에, 디코더(112)의 프로세싱 하드웨어는 디코딩된 데이터(D3)를 생성하기 위하여, 변경된, 그리고 변경되지 않은 엘리먼트들에 대하여 생성된 데이터를 조립하도록 동작가능하다.
추후에, 디코더(112)는 디코딩된 데이터(D3)를 컴퓨터화된 디바이스(114)로 전송한다. 입력 데이터(D1)가 원래의 비디오인 데이터 흐름의 상기 언급된 예로부터 계속하면, 사용자는 컴퓨터화된 디바이스(114)의 디스플레이 스크린 상에서 비디오를 제시받는다.
또한, 인코더(102)는 선택적으로, 입력 데이터(D1)를 실시간으로 동시에 인코딩하면서, 인코딩된 데이터(E2)를 디코더(112)로 스트리밍한다. 이것은 특히, 소스 데이터가 사용자들로의 스트리밍, 예를 들어, 인터넷-전달된 멀티미디어 서비스들을 위하여 멀티미디어 서버에서 실시간으로 인코딩되는 상황에서 유익하다.
도 2는 단지 예이고, 이것은 본원에서의 청구항들의 범위를 과도하게 제한하지 않아야 한다. 당해 분야의 당업자는 본 개시내용의 실시형태들의 많은 변형들, 대안들, 및 수정들을 인식할 것이다.
또 다른 예에서, 인코더(102) 및/또는 디코더(112)는 오디오 데이터를 인코딩하기 위한 것과 유사한 방식으로 구현되고, 여기서, 오디오 데이터는 복수의 데이터 패킷들 및/또는 데이터 섹션들로 분할될 수도 있다. 용어 '데이터 패킷 및/또는 데이터 섹션'은 용어 '데이터 블록 및/또는 데이터 패킷'과 동의어이지만, 이미지 및/또는 비디오 데이터가 아니라, 오디오 데이터에 속한다. 선택적으로, 인코더(102)의 프로세싱 하드웨어는 이미지 및/또는 비디오 데이터와 함께 오디오 데이터를 동시에 인코딩하도록 동작가능하다. 오디오 신호들이 오디오 신호의 많은 사이클들에 걸쳐 지속되는 톤들을 포함하고, 및/또는 음악이 실질적으로 반복적인 리듬 패턴들로 성질에 있어서 리듬이 있을 대, 이러한 오디오 신호들은 본 개시내용의 인코딩 방법들을 이용하여 효율적으로 압축된다. 대부분의 당대의 인기 있는 음악은 성질에 있어서 반복적으로 리듬이 있는 경향이 있다.
그러나, 인코더(102)는 예를 들어, 경제 데이터, 측정 데이터, 지진계 데이터(seismographic data), 아날로그-대-디지털 변환된 데이터, 생체의학 신호 데이터, 텍스처 데이터, 달력 데이터, 수학 데이터, 게놈 데이터, 및 2진 데이터 중의 적어도 하나를 포함하는 다른 타입들의 데이터를 유사한 방식으로 인코딩하기 위하여 이용될 수 있지만, 그것으로 제한되지는 않는다.
인코더(102) 및 디코더(112)는 다양한 타입들의 데이터를 위하여 적당하며, 이것은 프로세싱되거나 인코딩되는 데이터의 대부분이 머신들에 의해 머신 언어로 생성되었고, 그러므로, 데이터 블록들 및/또는 데이터 패킷들로 분할가능하기 때문이다.
또한, 통신 네트워크들에서의 주요 트래픽은 송신 요청들과, 요청들에 대한 응답들을 포함한다. 이것은 데이터 바이트들이 전후로 전송되는 것을 의미한다. 이 데이터 바이트들은 부분적으로 또는 전체적으로 유사한 IP 패킷 데이터를 주로 포함한다. 그러므로, 인코더(102) 및 디코더(112)는 데이터 패킷들을 전달함에 있어서 이용된 통신 프로토콜들을 위하여 양호하게 적합하다.
오직 예시의 목적들을 위하여, 입력 데이터(D1)가 다음과 같이 표현된 5 개의 송신 제어 프로토콜/인터넷 프로토콜(Transmission Control Protocol/Internet Protocol; TCP/IP) 프레임들을 포함하는 예가 다음으로 고려될 것이다:
00 0c 29 9d b4 1d 00 10 f3 2a 2a ac 08 00 45 00
00 28 78 fa 40 00 76 06 ce 63 3e f1 c1 34 ac 10
11 3c 22 c9 c0 dc bd 1f b7 03 1f fe c0 92 50 10
00 fe b9 09 00 00
00 0c 29 9d b4 1d 00 10 f3 2a 2a ac 08 00 45 00
00 28 79 0d 40 00 76 06 ce 50 3e f1 c1 34 ac 10
11 3c 22 c9 c0 dc bd 1f b7 03 1f fe c9 cc 50 10
01 02 af cc 00 00
00 0c 29 9d b4 1d 00 10 f3 2a 2a ac 08 00 45 00
00 28 79 11 40 00 76 06 ce 4c 3e f1 c1 34 ac 10
11 3c 22 c9 c0 dc bd 1f b7 03 1f fe d1 41 50 10
01 02 a8 57 00 00
00 0c 29 9d b4 1d 00 10 f3 2a 2a ac 08 00 45 00
00 28 79 19 40 00 76 06 ce 44 3e f1 c1 34 ac 10
11 3c 22 c9 c0 dc bd 1f b7 03 1f fe dd a4 50 10
01 02 9b f4 00 00
00 0c 29 9d b4 1d 00 10 f3 2a 2a ac 08 00 45 00
00 28 79 43 40 00 76 06 ce 1a 3e f1 c1 34 ac 10
11 3c 22 c9 c0 dc bd 1f b7 03 1f fe e9 95 50 10
01 02 90 03 00 00
예에서, 5 개의 TCP/IP 프레임들은 수들 #185 내지 #198로부터 무작위적으로 선택되었다. 이 TCP/IP 프레임들은 통신 네트워크 상에서 통신하기 위한 총 270 바이트들(=2160 비트들)을 요구한다.
동작 시에, 인코더(102)의 프로세싱 하드웨어는 TCP/IP 프레임들을 개별적인 데이터 블록들로서 프로세싱하고, 다음과 같이 표현된 인코딩된 데이터(E2)에서 이들을 인코딩한다:
00 0c 29 9d b4 1d 00 10 f3 2a 2a ac 08 00 45 00
00 28 78 fa 40 00 76 06 ce 63 3e f1 c1 34 ac 10
11 3c 22 c9 c0 dc bd 1f b7 03 1f fe c0 92 50 10
00 fe b9 09 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 79 0d 00 00 00 00 00 50 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 c9 cc 00 00
01 02 af cc 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 11 00 00 00 00 00 4c 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 d1 41 00 00
00 00 a8 57 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 19 00 00 00 00 00 44 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 dd a4 00 00
00 00 9b f4 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 43 00 00 00 00 00 1a 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 e9 95 00 00
00 00 90 03 00 00
이 예에서, 데이터 값 '00'은 참조 데이터 블록에서의 대응하는 엘리먼트들에 대한 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는 적어도 하나의 대응하는 심볼을 표현한다. 데이터 값 '00'이 또한 입력 데이터(D1)에서 존재하지만, 그것은 이 예에서 어떤 문제들을 야기시키지 않으며, 이것은 변경된 데이터 값이 '00'에 의해 표현되지 않기 때문이다. 종종, 입력 데이터(D1)에서 존재하지 않는 변경되지 않은 데이터 엘리먼트들에 대한 심볼을 이용하기 위한 필요성이 있다. 선택적으로, 변경되지 않은/변경된 판단 비트들은 변경되지 않은 데이터 및 변경된 데이터 값들에 대한 미리 정의된 심볼들을 전달하는 대신에, 변경된 데이터 값들과 함께 전달될 수 있다.
인코딩 데이터(E2)는 입력 데이터(D1)와 비교하여 낮은 엔트로피를 가진다는 것이 명백하다. 인코딩된 데이터(E2)가 산술 압축에 기초하는 진보된 범위 코딩 방법으로 엔트로피-코딩될 때, 그렇게 생성되는 압축된 데이터(C4)는 통신 네트워크 상에서 통신하기 위하여 113 바이트들(=904 비트들)을 오직 요구한다. 이에 대응하여, 입력 데이터(D1)가 유사한 방식으로 엔트로피-코딩될 때, 그렇게 생성되는 압축된 입력 데이터는 253 바이트들(=2024 비트들)을 요구한다. 이에 따라, 통신 네트워크 상에서 통신되어야 할 데이터의 양은 140 바이트들(253-113)만큼, 즉, 55.3 %만큼 감소된다. 임의의 압축을 갖지 않는 입력 데이터(D1)의 원래의 양은 270 바이트들이다.
또 다른 예에서, 양자화와, 변경되지 않은/변경된 판단을 기술하는 비트들을 이용함으로써, 이전의 예의 2 개의 제 1 프레임들이 프로세싱된다. 양자화는 제수 값(divider value) '2'를 이용함으로써 적용되고, 역양자화는 승수 값(multiplier value) '2'를 이용함으로써 적용된다. 변경된 값들에 대한 문턱은 '1'이고, 변경된 값들은 비트 값 '1'로 표현되고, 변경되지 않은 값들은 비트 '0'으로 표현된다. 원래의 데이터 프레임들은 다음과 같다:
00 0c 29 9d b4 1d 00 10 f3 2a 2a ac 08 00 45 00
00 28 78 fa 40 00 76 06 ce 63 3e f1 c1 34 ac 10
11 3c 22 c9 c0 dc bd 1f b7 03 1f fe c0 92 50 10
00 fe b9 09 00 00
00 0c 29 9d b4 1d 00 10 f3 2a 2a ac 08 00 45 00
00 28 79 0d 40 00 76 06 ce 50 3e f1 c1 34 ac 10
11 3c 22 c9 c0 dc bd 1f b7 03 1f fe c9 cc 50 10
01 02 af cc 00 00
양자화는 다음에서 설명된 바와 같이, 방법 전에, 즉, 재발생 검출 시에 적용된다.
양자화 후의 제 1 프레임 값들은 다음과 같다:
00 06 14 4e 5a 0e 00 08 79 15 15 56 04 00 22 00
00 14 3c 7d 20 00 3b 03 67 31 1f 78 60 1a 56 08
08 1e 11 64 60 6e 5e 0f 5b 01 0f 7f 60 49 28 08
00 7f 5c 04 00 00
이 값들은 제 1 프레임에 대하여 전달되고, 이들은 다음 프레임의 예측 목적들을 위하여 이전의 버퍼로서 설정된다.
양자화 후의 제 2 프레임에 대한 입력 데이터 값들은 다음과 같다:
00 06 14 4e 5a 0e 00 08 79 15 15 56 04 00 22 00
00 14 3c 06 20 00 3b 03 67 28 1f 78 60 1a 56 08
08 1e 11 64 60 6e 5e 0f 5b 01 0f 7f 64 66 28 08
00 01 57 66 00 00
지금, 변경된/변경되지 않은 비트 스트림이 생성될 수 있고, 그것은 다음과 같다:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0
그것은 54 비트들(7 개의 1들 및 47 개의 0들)을 포함하고, 그것은 엔트로피 인코더에 의해 더 이후에 효율적으로 압축될 수 있다. 예를 들어, RLE는 데이터 19, 1, 5, 1, 18, 2, 3, 3, 2의 스트림을 생성하고, 이것은 예를 들어, 9 개의 5 비트들 값들(= 9 * 5 비트들 = 45 비트들)과 함께 전달될 수 있다. 확률들 0.13 및 0.87을 갖는 범위 코딩이 비트들을 전달하기 위하여 또한 이용가능하다.
다음으로, 제 2 프레임에 대한 7 개의 변경된 값들은 다음과 같다:
06 28 64 66 01 57 66
이 7 개의 변경된 값들은 예를 들어, 범위 코딩을 이용함으로써 제 1 프레임 값들(54)로 선택적으로 압축된다. 엔트로피 인코딩이 없다면, 이들은 61 * 7 비트들 = 428 비트들을 요구한다. 프레임들이 디코딩될 때, 그 다음으로, 역양자화 후에, 2 개의 프레임들에 대한 값들은 다음과 같다:
00 0c 28 9c b4 1c 00 10 f2 2a 2a ac 08 00 44 00
00 28 78 fa 40 00 76 06 ce 62 3e f0 c0 34 ac 10
10 3c 22 c8 c0 dc bc 1e b6 02 1e fe c0 92 50 10
00 fe b8 08 00 00
00 0c 28 9c b4 1c 00 10 f2 2a 2a ac 08 00 44 00
00 28 78 0c 40 00 76 06 ce 50 3e f0 c0 34 ac 10
10 3c 22 c8 c0 dc bc 1e b6 02 1e fe c8 cc 50 10
01 02 ae cc 00 00
도 3은 본 개시내용의 실시형태에 따른, 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 방법의 단계들의 예시도이다. 방법은 하드웨어, 소프트웨어, 또는 그 조합으로 구현될 수 있는 단계들의 시퀀스를 표현하는 논리적 흐름도에서의 단계들의 집합으로서 도시된다.
선택적으로, 단계(302)에서는, 입력 데이터(D1) 내의 데이터 블록들 및/또는 데이터 패킷들의 실질적인 재발생들, 즉, 반복들이 식별된다. 선택적으로, 이 단계(302)는 중복제거 방법으로, 또는 블록 인코더로 구현된다. 통상, 단계(302)는 또한, 입력 데이터(D1)를 새로운 데이터 블록들 또는 데이터 패킷들로 분할하는 동작을 포함한다. 대안적으로, 데이터 분할은 단계(302) 전에 이미 수행되었다. 유익하게도, 부분적으로 변경된 데이터 블록들 및/또는 데이터 패킷들만이 인코딩하기 위한 단계(304)로 추가로 전달되고, 여기서, 변경된 데이터 블록들 및/또는 데이터 패킷들 또는 변경되지 않은 데이터 블록들 및/또는 데이터 패킷들은 상기 언급된 바와 같이, 상이한 방법들로 인코딩된다. 선택적으로, 변경된 데이터 블록들 및/또는 데이터 패킷들 및/또는 변경되지 않은 데이터 블록들 및/또는 데이터 패킷들은 또한, 이들을 인코딩하기 위한 단계(304)로 전달된다.
어떤 주어진 참조 데이터 블록 및/또는 데이터 패킷이 이용될 경우, 그것은 여분의 데이터가 송신되도록 하지 않는다는 것이 인식될 것이다. 그러나, 일부 상황들에서는, 디코더(112)가 참조 데이터 블록 및/또는 데이터 패킷을 인지하고 이를 이용하도록, 참조 데이터 블록 및/또는 데이터 패킷의 선택에 대한 정보가 송신될 필요가 있다. 이에 대응하여, 부분적으로 변경된 데이터 블록들 및/또는 데이터 패킷들이 인코딩될 때, 데이터 블록들 및/또는 데이터 패킷들의 부분이 방법에 부여되지 않을 경우, 네트워크 환경(100)은 디코더(112)로 또한 전달될 필요가 있는 약간의 종류의 방법 선택 정보를 이용가능하게 할 필요가 있다. 선택적으로, 위에서 언급된 바와 같이, 이 정보의 조각을 전달하는 것에 주의하는 것은 블록 인코더 또는 중복제거 알고리즘이고, 이와 다르게, 모든 데이터 블록들 및/또는 데이터 패킷들은 개시내용에 따른 방법으로 프로세싱된다.
단계(304)에서는, 엘리먼트들이 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경되지 않는 경우와, 및/또는 엘리먼트들이 실질적으로 재발생하는 데이터 블록들 및/또는 데이터 패킷들 내에서 변경되는 경우가 식별된다.
다음으로, 단계(306)에서, 변경된, 그리고 변경되지 않은 엘리먼트들은 인코딩된 데이터(E2)에서 하나의 데이터 스트림으로서 인코딩된다. 선택적으로, 2 개의 데이터 스트림들이 프로세싱되고, 여기서, 하나의 데이터 스트림은 변경되지 않은/변경된 판단 비트들을 포함하고, 다른 데이터 스트림은 이용되어야 하는 변경된 데이터 값들을 포함한다.
단계(306)에 따르면, 변경되지 않은 엘리먼트들은 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 엘리먼트들에 대한 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는, 적어도 하나의 대응하는 심볼, 또는 적어도 하나의 대응하는 비트, 예를 들어, 단일 비트를 사용함으로써 인코딩된 데이터(E2)에서 인코딩된다. 선택적으로, 적어도 하나의 대응하는 심볼은 제로 데이터 값으로서 선택적으로 구현되는 미리 결정된 데이터 값에 의해 표현된다.
선택적으로, 무손실 동작에 대하여, 변경된 엘리먼트들은 인코딩된 데이터(E2)에서 그 원래의 형태로 인코딩된다. 대안적으로, 선택적으로는, 손실 동작에 대하여, 변경된 엘리먼트들의 적어도 부분이 인코딩된 데이터(E2)에서 양자화된 방식으로 인코딩된다. 또한 대안적으로, 선택적으로는, 무손실-근접 동작에 대하여, 변경된 엘리먼트들의 적어도 부분이 인코딩된 데이터(E2)에서 양자화된 방식으로 인코딩된다.
단계들(304 및 306)은 부분적으로 변경된 데이터 블록들 및/또는 데이터 패킷들에 대하여 유익하게 수행된다. 선택적으로, 단계들(304 및 306)은 입력 데이터(D1)의 각각의 데이터 블록 및/또는 데이터 패킷에 대하여 수행된다. 단계들(304 및 306)의 인코딩 프로세싱은 도 4a 및 도 4b와 함께 설명되었다.
선택적으로, 방법은 압축 알고리즘이 압축된 데이터(C4)를 생성하기 위하여 인코딩된 데이터(E2)를 압축하도록 적용되는 추가적인 단계(308)를 포함한다. 압축된 데이터(C4)는 입력 데이터(D1)와 비교하여 크기에 있어서 상대적으로 작고; 그러므로, 데이터 저장을 위한 작은 공간과, 통신 네트워크 상에서 또는 직접 접속 상에서의 데이터 전송을 위한 작은 네트워크 대역폭을 요구한다. 단계(308)에서는, 전형적으로, 범위 코딩, SRLE, EM, ODelta 코딩 등과 같은 엔트로피 인코딩 방법들이 거기에서 이용되는 것이 유익하다. 단계(308)는 전형적으로, 중복제거 방법으로, 또는 블록 인코더로 실행된다.
압축은 임의적이지만, 그것이 수행될 경우, 어떤 압축 방법이 항상 이용되거나, 또는 대안적으로, 선택된 압축 방법을 전달하는 정보는 인코더(102)로부터 디코더(112)로 전달될 필요가 있다는 것이 인식될 것이다. 전형적으로, 압축 방법의 선택은 블록 인코더 또는 중복제거 방법의 책임으로서 남겨졌지만, 필요한 경우, 본 개시내용에 따른 방법은 선택된 압축 방법에 관한 정보를 전달하는 정보를 표현할 수 있고 전달할 수 있고, 이와 다르게, 어떤 압축 방법, 예를 들어, 디폴트 압축 방법은 항상 이용된다.
또한, 이용된 참조 데이터 블록 및/또는 데이터 패킷은 업데이트될 필요가 있거나, 새로운 참조 데이터 블록 및/또는 참조 데이터 패킷이 생성될 필요가 있다. 이러한 단계는 또한, 중복제거 방법으로 또는 블록 인코더로 전형적으로 구현되지만, 선택적으로, 참조 데이터 블록 및/또는 데이터 패킷의 업데이트는 데이터 복사의 양을 감소시키기 위한 단계들(304 및 306)로 수행된다.
또한, 인코딩 프로세싱을 위하여 할당된 백그라운드 메모리의 양은 상이한 참조 데이터 블록들 및/또는 데이터 패킷들의 양의 배수인, 현재의 데이터 블록 및/또는 데이터 패킷에서의 엘리먼트들의 양만큼 클뿐일 필요가 있다. 오직 하나의 참조 데이터 블록 및/또는 데이터 패킷이 이용될 경우, 필요한 백그라운드 메모리의 양은 데이터 블록 및/또는 패킷의 크기와 동일하다. 또한, 인코딩 프로세싱의 결과, 즉, 인코딩된 데이터(E2)는 선택적으로 원래의 메모리 내에 기록되거나 원래의 메모리 내로 직접적으로 송신된다. 이것은 별도의 전송 메모리들이 요구되지 않는다는 것을 의미한다. 그러므로, 방법은 적소(인 시튜(in situ) 동작으로서 기능할 수 있고, 비용-효과적이다.
단계들(302 내지 308)은 오직 예시적이고, 다른 대안들이 또한 제공될 수 있고, 여기서, 본원에서 청구항들의 범위로부터 이탈하지 않으면서, 하나 이상의 단계들이 추가되거나, 하나 이상의 단계들이 제거되거나, 또는 하나 이상의 단계들이 상이한 시퀀스로 제공된다.
도 4a 및 도 4b는 집합적으로, 본 개시내용의 실시형태에 따른, 인코딩 프로세싱의 단계들의 예시도이다. 단계(402)에서는, 데이터 블록 및/또는 데이터 패킷이 판독되고, 참조 데이터 블록 및/또는 데이터 패킷이 또한 판독된다.
단계(404)에서는, 입력 데이터(D1)의 주어진 데이터 블록 및/또는 데이터 패킷의 엘리먼트의 데이터 값이 판독되고, 주어진 참조 데이터 블록 및/또는 패킷의 엘리먼트의 데이터 값이 또한 판독된다.
다음으로, 단계(406)에서는, 엘리먼트의 데이터 값이 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 패킷의 데이터 값에 대하여 변경되었는지 아닌지 여부가 결정된다. 유익하게도, 이러한 결정은 값들 사이의 절대차가 문턱 값보다 더 높을 때에 값이 변경되었다는 것을 검출한다. 선택적으로, 다른 방법들은 데이터 값들의 변경들을 결정하기 위하여 이용될 수 있다.
단계(406)에서, 엘리먼트의 데이터 값이 변경되지 않은 것으로 결정될 경우, 단계(408)가 수행된다. 단계(408)에서는, 미리 결정된 데이터 값이 변경의 부재를 표시하기 위하여 인코딩된 데이터(E2)에 기록되고, 이와 다르게, 엘리먼트의 데이터 값이 변경되지 않았다는 것을 표시하는 판단 비트는 별도의 스트림에 기록된다.
그러나, 엘리먼트의 데이터 값이 변경된 것으로 결정될 경우, 단계(410)가 수행된다. 단계(410)에서는, 엘리먼트의 데이터 값이 임의적인 양자화 없이, 또는 임의적인 양자화와 함께, 인코딩된 데이터(E2)에 기록되고, 추가적으로, 선택적으로는, 엘리먼트의 데이터 값이 변경되었다는 것을 표시하는 판단 비트가 별도의 스트림에 기록된다. 임의적인 양자화는 또한 재발생 검출 동안에 수행된다.
선택적으로, 단계들(406 및 408)에서는, 엘리먼트의 데이터 값이 또한, 새로운 참조 데이터 블록 및/또는 데이터 패킷에 기록된다. 대안적으로, 선택적으로는, 단계(408)에서의 변경된 데이터 값이 무손실 프로세싱을 갖는 원래의 변경된 값과, 손실 프로세싱을 갖는 바람직하게 디코딩된 변경된 값을 이용함으로써 현재의 참조 데이터 블록 및/또는 패킷으로 또한 업데이트된다. 대안적으로, 참조 값들은 중복제거 방법으로, 또는 블록 인코더로 생성되거나 업데이트된다. 업데이트된 참조 블록 및/또는 패킷 값들은 다음 데이터 블록들 및/또는 데이터 패킷들을 위하여 선택적으로 이용된다.
다음으로, 단계(412)에서는, 다음 엘리먼트가 주어진 데이터 블록 및/또는 데이터 패킷에서 존재하는지 아닌지의 여부가 결정된다. 다음 엘리먼트가 존재하는 것으로 결정될 경우, 인코딩 프로세싱은 단계(404)에서 재시작한다. 이와 다르게, 다음 엘리먼트가 주어진 데이터 블록 및/또는 데이터 패킷에서 존재하지 않는 것으로 결정될 경우, 단계(414)가 수행된다.
단계(414)에서는, 다음 데이터 블록 및/또는 데이터 패킷이 입력 데이터(D1)에서 존재하는지 아닌지의 여부가 결정된다. 다음 데이터 블록 및/또는 데이터 패킷이 존재하는 것으로 결정될 경우, 인코딩 프로세싱은 단계(402)에서 재시작한다. 이와 다르게, 다음 데이터 블록 및/또는 데이터 패킷이 입력 데이터(D1)에서 존재하지 않는 것으로 결정될 경우, 인코딩 프로세싱은 종료된다.
단계들(402 내지 414)은 오직 예시적이고, 다른 대안들이 또한 제공될 수 있고, 여기서, 본원에서 청구항들의 범위로부터 이탈하지 않으면서, 하나 이상의 단계들이 추가되거나, 하나 이상의 단계들이 제거되거나, 또는 하나 이상의 단계들이 상이한 시퀀스로 제공된다.
본 개시내용의 실시형태들은 컴퓨터-판독가능 명령들을 저장한 비-일시적(즉, 비-순시적) 컴퓨터-판독가능 저장 매체를 포함하는 컴퓨터 프로그램 제품을 제공하고, 컴퓨터-판독가능 명령들은 도 3 및 도 4a 내지 도 4b와 함께 설명된 바와 같은 방법을 실행하기 위하여 프로세싱 하드웨어를 포함하는 컴퓨터화된 디바이스에 의해 실행가능하다. 컴퓨터-판독가능 명령들은 선택적으로, 소프트웨어 애플리케이션 저장소로부터, 예를 들어, "앱 스토어(App store)"로부터 컴퓨터화된 디바이스로 다운로딩가능하다.
도 5는 본 개시내용의 실시형태에 따른, 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 방법의 단계들의 예시도이다. 방법은 하드웨어, 소프트웨어, 또는 그 조합으로 구현될 수 있는 단계들의 시퀀스를 표현하는 논리적 흐름도에서의 단계들의 집합으로서 도시된다.
선택적으로, 단계(502)에서는, 인코딩된 데이터(E2)를 생성하기 위한 압축된 데이터(C4)로부터의 엔트로피-인코딩된 데이터 스트림들의 디코딩이 적용된다. 단계(502)는 선택적으로, 범위 코딩, SRLE, EM, ODelta 코딩 등과 같은 엔트로피 디코딩 방법들을 전형적으로 사용한다. 단계(502)는 전형적으로, 중복제거 방법을 사용함으로써, 또는 블록 디코더를 사용함으로써 전형적으로 실행된다.
단계(504)에서, 인코딩된 데이터(E2)는 인코딩된 데이터(E2) 내의 데이터 블록들 및/또는 데이터 패킷들의 실질적인 재발생들 내에서 변경된, 그리고 변경되지 않은 엘리먼트들을 식별하기 위하여 검색된다.
단계(506)에서, 인코딩된 데이터(E2)는 인코딩된 데이터(E2) 내의 데이터 블록들 및/또는 데이터 패킷들의 실질적인 재발생들 내에서 변경된, 그리고 변경되지 않은 엘리먼트들에 대한 데이터를 생성하기 위하여 디코딩된다. 단계(504)에 따르면, 변경의 부재를 표시하는 적어도 하나의 대응하는 심볼 또는 하나의 대응하는 비트의 발생들이 식별되고, 대응하는 심볼로 대체되거나, 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 엘리먼트들을 갖는 대응하는 비트의 위치에 대한 데이터 값으로 설정된다. 변경된 블록들에 대하여, 변경의 부재는 검출되지 않고, 인코딩된 값이 이용된다. 선택적으로, 무손실 동작에 대하여, 변경된 엘리먼트들은 디코딩된 데이터(D3)에서 그 원래의 형태로 디코딩된다. 대안적으로, 선택적으로는, 손실 동작에 대하여, 변경된 엘리먼트들의 적어도 부분이 디코딩된 데이터(D3)에서 양자화된 방식으로 디코딩되고, 즉, 역양자화가 수행된다. 또한 대안적으로, 선택적으로는, 무손실-근접 동작에 대하여, 변경된 엘리먼트들의 일부가 디코딩된 데이터(D3)에서 양자화된 방식으로 디코딩된다.
단계들(504 및 506)은 부분적으로 변경된 데이터 블록들 및/또는 데이터 패킷들에 대하여 수행된다. 선택적으로, 단계들(504 및 506)은 인코딩된 데이터(E2)의 각각의 데이터 블록 및/또는 데이터 패킷에 대하여 수행된다. 단계들(504 및 506)의 디코딩 프로세싱은 도 6a 및 도 6b와 함께 설명되었다.
선택적으로, 단계(508)에서는, 변경된, 그리고 변경되지 않은 엘리먼트들에 대해 생성된 데이터가 디코딩된 데이터(D3)를 생성하기 위하여 데이터 블록들 및/또는 데이터 패킷들로부터 조립된다. 단계(508)는 전형적으로, 중복제거 방법 또는 블록 디코더를 사용한다.
또한, 이용된 참조 데이터 블록 및/또는 패킷은 업데이트될 필요가 있거나, 새로운 참조 데이터 블록 및/또는 패킷이 생성될 필요가 있다. 이러한 단계는 또한, 중복제거 방법으로 또는 블록 디코더로 전형적으로 수행되지만, 선택적으로, 참조 데이터 블록 및/또는 데이터 패킷의 업데이트는 디코딩 동작들 동안에 발생하는 데이터 복사의 양을 감소시키기 위한 단계들(504 및 506) 내에서 수행된다.
단계들(502 내지 508)은 오직 예시적이고, 다른 대안들이 또한 제공될 수 있고, 여기서, 본원에서 청구항들의 범위로부터 이탈하지 않으면서, 하나 이상의 단계들이 추가되거나, 하나 이상의 단계들이 제거되거나, 또는 하나 이상의 단계들이 상이한 시퀀스로 제공된다.
도 6a 및 도 6b는 집합적으로, 본 개시내용의 실시형태에 따른, 디코딩 프로세싱의 단계들의 예시도이다.
단계(602)에서는, 인코딩된 데이터(E2)의 주어진 데이터 블록 및/또는 데이터 패킷의 데이터 값들의 스트림이 수신된다. 선택적으로, 데이터 블록 및/또는 데이터 패킷에서 변경되지 않은/변경된 엘리먼트들을 기술하는 비트들의 스트림이 또한 수신된다. 또한, 참조 데이터 블록 및/또는 데이터 패킷은 단계(602) 동안에 판독된다.
다음으로, 단계(604)에서, 주어진 데이터 블록 및/또는 패킷의 엘리먼트가 판독된다. 대안적으로, 변경되지 않은/변경된 판단 비트가 판독된다. 참조 데이터 블록 또는 패킷의 엘리먼트는 또한 단계(604) 동안에 판독된다.
다음으로, 단계(606)에서, 주어진 엘리먼트가 변경되지 않는지 또는 그렇지 아닌지의 여부가 결정된다. 변경되지 않은 엘리먼트는 미리 결정된 데이터 값이 발생하였을 경우에 검출된다. 대안적으로, 변경되지 않은 엘리먼트는 판단 비트가 변경되지 않을 경우에 검출된다.
단계(606)에서, 변경되지 않은 엘리먼트가 검출될 경우, 단계(608)가 수행된다. 단계(608)에서는, 참조 데이터 블록 및/또는 데이터 패킷에서의 대응하는 엘리먼트의 데이터 값이 디코딩된 데이터(D3)에 기록된다.
이와 다르게, 엘리먼트가 변경된 것으로 결정될 경우, 단계(610)가 수행된다. 단계(610)에서는, 엘리먼트의 데이터 값이 임의적인 역양자화 없이, 또는 임의적인 역양자화와 함께 디코딩된 데이터(D3)에 기록된다. 변경된 값의 검출이 판단 비트들에서의 변경된 비트에 기초하여 행해졌을 경우, 인코딩된 값은 먼저, 그것이 디코딩된 데이터(D3)에 기록될 수 있기 전에, 이 단계에서 판독될 필요가 있다. 임의적인 양자화는 또한, 데이터 조립 동안에 수행될 수 있다.
선택적으로, 단계들(608 및 610)에서는, 엘리먼트의 데이터 값이 또한, 새로운 참조 데이터 블록 및/또는 데이터 패킷에 기록된다. 대안적으로, 선택적으로는, 단계(610)에서의 변경된 데이터 값이 또한, 무손실 및 손실 프로세싱을 갖는 디코딩된 변경된 값을 이용함으로써 현재의 참조 데이터 및/또는 데이터 패킷으로 업데이트된다. 대안적으로, 참조 값들은 예를 들어, 상기한 것에서 설명된 바와 같이, 중복제거 방법으로, 또는 블록 디코더로 생성되거나 업데이트된다. 업데이트된 참조 데이터 블록 및/또는 데이터 패킷 값들은 다음 데이터 블록들 및/또는 데이터 패킷들을 위하여 선택적으로 이용된다.
다음으로, 단계(612)에서는, 다음 엘리먼트가 주어진 데이터 블록 및/또는 데이터 패킷에서 존재하는지 아닌지의 여부가 결정된다. 다음 엘리먼트가 존재하는 것으로 결정될 경우, 디코딩 프로세싱은 단계(604)에서 재시작한다. 이와 다르게, 다음 엘리먼트가 주어진 데이터 블록 및/또는 데이터 패킷에서 존재하지 않는 것으로 결정될 경우, 단계(614)가 수행된다.
단계(614)에서는, 다음 데이터 블록 및/또는 데이터 패킷이 인코딩된 데이터(E2)에서 존재하는지 아닌지의 여부가 결정된다. 다음 데이터 블록 및/또는 데이터 패킷이 존재하는 것으로 결정될 경우, 디코딩 프로세싱은 단계(602)에서 재시작한다. 이와 다르게, 다음 데이터 블록 및/또는 데이터 패킷이 인코딩된 데이터(E2)에서 존재하지 않는 것으로 결정될 경우, 디코딩 프로세싱은 종료된다.
단계들(602 내지 614)은 오직 예시적이고, 다른 대안들이 또한 제공될 수 있고, 여기서, 본원에서 청구항들의 범위로부터 이탈하지 않으면서, 하나 이상의 단계들이 추가되거나, 하나 이상의 단계들이 제거되거나, 또는 하나 이상의 단계들이 상이한 시퀀스로 제공된다.
본 개시내용의 실시형태들은 컴퓨터-판독가능 명령들을 저장한 비-일시적(즉, 비-순시적) 컴퓨터-판독가능 저장 매체를 포함하는 컴퓨터 프로그램 제품을 제공하고, 컴퓨터-판독가능 명령들은 도 5 및 도 6a 내지 도 6b와 함께 설명된 바와 같은 방법을 실행하기 위하여 프로세싱 하드웨어를 포함하는 컴퓨터화된 디바이스에 의해 실행가능하다. 컴퓨터-판독가능 명령들은 선택적으로, 소프트웨어 애플리케이션 저장소로부터, 예를 들어, "앱 스토어(App store)"로부터 컴퓨터화된 디바이스(114)와 같은 컴퓨터화된 디바이스로 다운로딩가능하다.
또한, 본 개시내용의 실시형태들은 도 3, 도 4a 내지 도 4b와 함께 설명된 바와 같은 적어도 하나의 인코더와, 도 5 및 도 6a 내지 도 6b와 함께 설명된 바와 같은 적어도 하나의 디코더를 포함하는 코덱을 제공한다.
본 개시내용의 실시형태들은 1차원 이미지 데이터 또는 다차원 이미지 데이터, 비디오 데이터, 오디오 데이터, 및 기존의 코덱들과 비교하여 높은 압축률을 갖는 다른 타입의 데이터의 무손실 또는 무손실-근접 데이터 압축을 가능하게 하는 것을 포함하지만, 이것으로 제한되지는 않는 다양한 목적들을 위하여 이용될 수 있다.
상기한 것에서 설명된 본 개시내용의 실시형태들에 대한 수정들은 동반된 청구항들에 의해 정의된 바와 같은 본 개시내용의 범위로부터 이탈하지 않으면서 가능하다. 본 개시내용을 설명하고 청구하기 위하여 이용된 "포함하는(including)", "포함하는(comprising)", "편입하는(incorporating)", "구성되는(consisting of)", "가지는(have)", "이다(is)"와 같은 표현들은 비-배타적 방식으로, 즉, 명시적으로 설명되지 않은 항목들, 컴포넌트들, 또는 엘리먼트들이 제시되는 것을 허용하는 것으로 해석되도록 의도된 것이다. 단수에 대한 참조는 또한, 복수에 관한 것으로 해석될 수 있다.

Claims (35)

  1. 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하기 위한 프로세싱 하드웨어 - 상기 프로세싱 하드웨어는 상기 입력 데이터(D1)를 데이터 블록들 및 데이터 패킷들 중 적어도 하나로서 프로세싱하도록 동작가능함 - 를 포함하는 인코더로서,
    상기 프로세싱 하드웨어는,
    (i) 상기 입력 데이터(D1)의 적어도 부분(portion) 내에서 데이터 블록들 및 데이터 패킷들 중 적어도 하나 - 상기 데이터 블록들 및 데이터 패킷들 중 적어도 하나는 대응하는 복수의 엘리먼트들을 포함하고, 상기 엘리먼트들은 복수의 비트들을 포함함 - 의 재발생들을 식별하고,
    (ii) 엘리먼트들이 상기 재발생하는 데이터 블록들 및 데이터 패킷들 중 적어도 하나 내에서 변경되지 않는 경우와, 엘리먼트들이 상기 재발생하는 데이터 블록들 및 데이터 패킷들 중 적어도 하나 내에서 변경되는 경우 중 적어도 하나를 식별하고,
    (iii) 참조 데이터 블록 및 참조 데이터 패킷 중 적어도 하나에서의 대응하는 엘리먼트들과 비교하여 상기 변경되지 않은 엘리먼트들에서의 변경의 부재(absence)를 표시하는 적어도 하나의 대응하는 심볼 또는 적어도 하나의 대응하는 비트를 사용함으로써 상기 인코딩된 데이터(E2)에서의 변경되지 않은 엘리먼트들을 인코딩하고, 상기 인코딩된 데이터(E2)에서의 변경된 엘리먼트들을 인코딩함으로써, 상기 대응하는 인코딩된 데이터(E2)를 생성하도록 동작가능한 것을 특징으로 하는 입력 데이터(D1)를 인코딩하기 위한 프로세싱 하드웨어를 포함하는 인코더.
  2. 제 1 항에 있어서,
    상기 입력 데이터(D1)는 텍스트 데이터, 이미지 데이터, 비디오 데이터, 오디오 데이터, 2진 데이터, 센서 데이터, 측정 데이터, 그래픽 데이터, 다차원 데이터, 단일-차원(uni-dimensional) 데이터 중의 적어도 하나의 형태로 이루어져 있는 것을 특징으로 하는 입력 데이터(D1)를 인코딩하기 위한 프로세싱 하드웨어를 포함하는 인코더.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 적어도 하나의 대응하는 심볼은 미리 결정된 데이터 값에 의해 표현되는 것을 특징으로 하는 입력 데이터(D1)를 인코딩하기 위한 프로세싱 하드웨어를 포함하는 인코더.
  4. 제 3 항에 있어서,
    상기 미리 결정된 데이터 값은 제로 데이터 값으로서 구현되는 것을 특징으로 하는 입력 데이터(D1)를 인코딩하기 위한 프로세싱 하드웨어를 포함하는 인코더.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 프로세싱 하드웨어는, 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol; HTTP) 및 실시간 메시징 프로토콜(Real-Time Messaging Protocol; RTMP) 중 적어도 하나를 위한 청크 전송 인코딩(chunked transfer encoding)을 구현하도록 동작가능한 것을 특징으로 하는 입력 데이터(D1)를 인코딩하기 위한 프로세싱 하드웨어를 포함하는 인코더.
  6. 제 5 항에 있어서,
    상기 HTTP 및 RTMP 중 적어도 하나는 요청들 및 응답들 내부에서 고정된-크기(fixed-size)의 데이터 블록들 및 데이터 패킷들 중 적어도 하나를 사용하는 것을 특징으로 하는 입력 데이터(D1)를 인코딩하기 위한 프로세싱 하드웨어를 포함하는 인코더.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 프로세싱 하드웨어는 인코딩된 데이터(E2)에서 양자화된 방식으로 상기 변경된 엘리먼트들의 적어도 부분을 인코딩하도록 동작가능한 것을 특징으로 하는 입력 데이터(D1)를 인코딩하기 위한 프로세싱 하드웨어를 포함하는 인코더.
  8. 제 1 항 또는 제 2 항에 있어서,
    상기 프로세싱 하드웨어는 상기 인코딩된 데이터(E2)를 압축하기 위한 압축 알고리즘을 적용하도록 동작가능한 것을 특징으로 하는 입력 데이터(D1)를 인코딩하기 위한 프로세싱 하드웨어를 포함하는 인코더.
  9. 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하는 방법 - 상기 방법은 상기 입력 데이터(D1)를 데이터 블록들 및 데이터 패킷들 중 적어도 하나로서 프로세싱하는 것을 포함함 - 으로서,
    상기 방법은,
    (i) 상기 입력 데이터(D1)의 적어도 부분 내에서 데이터 블록들 및 데이터 패킷들 중 적어도 하나 - 상기 데이터 블록들 및 데이터 패킷들 중 적어도 하나는 대응하는 복수의 엘리먼트들을 포함하고, 상기 엘리먼트들은 복수의 비트들을 포함함 - 의 재발생들을 식별하는 단계와,
    (ii) 엘리먼트들이 상기 재발생하는 데이터 블록들 및 데이터 패킷들 중 적어도 하나 내에서 변경되지 않는 경우와, 엘리먼트들이 상기 재발생하는 데이터 블록들 및 데이터 패킷들 중 적어도 하나 내에서 변경되는 경우 중 적어도 하나를 식별하는 단계와,
    (iii) 참조 데이터 블록 및 참조 데이터 패킷 중 적어도 하나에서의 대응하는 엘리먼트들과 비교하여 상기 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는 적어도 하나의 대응하는 심볼 또는 적어도 하나의 대응하는 비트를 사용함으로써 상기 인코딩된 데이터(E2)에서의 변경되지 않은 엘리먼트들을 인코딩하고, 상기 인코딩된 데이터(E2)에서의 변경된 엘리먼트들을 인코딩함으로써, 상기 대응하는 인코딩된 데이터(E2)를 생성하는 단계를 포함하는 것을 특징으로 하는 입력 데이터(D1)를 인코딩하는 인코딩 방법.
  10. 제 9 항에 있어서,
    상기 방법은, 텍스트 데이터, 이미지 데이터, 비디오 데이터, 오디오 데이터, 2진 데이터, 센서 데이터, 측정 데이터, 그래픽 데이터, 다차원 데이터, 단일-차원 데이터 중의 적어도 하나의 형태로 수신된 상기 입력 데이터(D1)를 인코딩하는 단계를 포함하는 것을 특징으로 하는 입력 데이터(D1)를 인코딩하는 인코딩 방법.
  11. 제 9 항 또는 제 10 항에 있어서,
    상기 방법은 미리 결정된 데이터 값에 의해 상기 적어도 하나의 대응하는 심볼을 표현하는 단계를 포함하는 것을 특징으로 하는 입력 데이터(D1)를 인코딩하는 인코딩 방법.
  12. 제11항에 있어서,
    상기 미리 결정된 데이터 값은 제로 데이터 값으로서 구현되는 것을 특징으로 하는 입력 데이터(D1)를 인코딩하는 인코딩 방법.
  13. 제 9 항 또는 제 10 항에 있어서,
    상기 방법은 하이퍼텍스트 전송 프로토콜(HTTP) 및 실시간 메시징 프로토콜(RTMP) 중 적어도 하나를 위한 청크 전송 인코딩을 구현하는 단계를 포함하는 것을 특징으로 하는 입력 데이터(D1)를 인코딩하는 인코딩 방법.
  14. 제 13 항에 있어서,
    상기 HTTP 및 RTMP 중 적어도 하나는 요청들 및 응답들 내부에서 고정된-크기의 데이터 블록들 및 데이터 패킷들 중 적어도 하나를 사용하는 것을 특징으로 하는 입력 데이터(D1)를 인코딩하는 인코딩 방법.
  15. 제 9 항 또는 제 10 항에 있어서,
    상기 방법은 상기 인코딩된 데이터(E2)에서 양자화된 방식으로 상기 변경된 엘리먼트들의 적어도 부분을 인코딩하는 단계를 포함하는 것을 특징으로 하는 입력 데이터(D1)를 인코딩하는 인코딩 방법.
  16. 제 9 항 또는 제 10 항에 있어서,
    상기 방법은 대응하는 압축된 데이터(C4)를 생성하기 위하여 상기 인코딩된 데이터(E2)를 압축하기 위한 압축 알고리즘을 적용하는 단계를 포함하는 것을 특징으로 하는 입력 데이터(D1)를 인코딩하는 인코딩 방법.
  17. 컴퓨터-판독가능한 명령어들을 저장한 비-일시적 컴퓨터-판독가능한 저장 매체로서,
    상기 컴퓨터-판독가능한 명령어들은 제 9 항에 따른 방법을 실행하기 위하여 프로세싱 하드웨어를 포함하는 컴퓨터화된 디바이스에 의해 실행가능한 것인, 비-일시적 컴퓨터-판독가능한 저장 매체.
  18. 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하기 위한 프로세싱 하드웨어 - 상기 프로세싱 하드웨어는 상기 인코딩된 데이터(E2)를 데이터 블록들 및 데이터 패킷들 중 적어도 하나로서 프로세싱하도록 동작가능함 - 를 포함하는 디코더로서,
    상기 프로세싱 하드웨어는,
    (i) 변경된 엘리먼트들 - 상기 변경된 엘리먼트들은 상기 인코딩된 데이터(E2) 내의 데이터 블록들 및 데이터 패킷들 중 적어도 하나의 재발생들 내에서 변경되는 엘리먼트들임 - 에 대한 데이터를 생성하기 위하여 상기 인코딩된 데이터(E2)를 디코딩하고,
    (ii) 변경되지 않은 엘리먼트들 - 상기 변경되지 않은 엘리먼트들은 상기 인코딩된 데이터(E2) 내의 데이터 블록들 및 데이터 패킷들 중 적어도 하나의 상기 재발생들 내에서 변경되지 않는 엘리먼트들임 - 에 대한 데이터를 생성하기 위하여 상기 인코딩된 데이터(E2)를 디코딩하고 - 상기 변경되지 않은 엘리먼트들은 참조 데이터 블록 및 참조 데이터 패킷 중 적어도 하나에서의 대응하는 엘리먼트들과 비교하여 상기 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는 적어도 하나의 대응하는 심볼 또는 적어도 하나의 대응하는 비트에 의해 표현됨 -,
    (iii) 상기 디코딩된 데이터(D3)를 생성하기 위하여 (i) 및 (ii)에서의 상기 변경된 그리고 변경되지 않은 엘리먼트들에 대하여 생성된 데이터를, 데이터 블록들 및 데이터 패킷들 중 적어도 하나 - 상기 데이터 블록들 및 데이터 패킷들 중 적어도 하나는 대응하는 복수의 엘리먼트들을 포함하고, 상기 엘리먼트들은 복수의 비트들을 포함함 - 로 조립(assemble)하도록 동작가능한 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하기 위한 프로세싱 하드웨어를 포함하는 디코더.
  19. 제 18 항에 있어서,
    상기 디코딩된 데이터(D3)는, 텍스트 데이터, 이미지 데이터, 비디오 데이터, 오디오 데이터, 2진 데이터, 센서 데이터, 측정 데이터, 그래픽 데이터, 다차원 데이터, 단일-차원 데이터 중의 적어도 하나의 형태로 이루어져 있는 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하기 위한 프로세싱 하드웨어를 포함하는 디코더.
  20. 제 18 항 또는 제 19 항에 있어서,
    상기 적어도 하나의 대응하는 심볼은 미리 결정된 데이터 값에 의해 표현되는 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하기 위한 프로세싱 하드웨어를 포함하는 디코더.
  21. 제 20 항에 있어서,
    상기 미리 결정된 데이터 값은 제로 데이터 값으로서 구현되는 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하기 위한 프로세싱 하드웨어를 포함하는 디코더.
  22. 제 18 항 또는 제 19 항에 있어서,
    상기 프로세싱 하드웨어는 하이퍼텍스트 전송 프로토콜(HTTP) 및 실시간 메시징 프로토콜(RTMP) 중 적어도 하나를 위한 청크 전송 인코딩의 역(inverse)을 구현하도록 동작가능한 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하기 위한 프로세싱 하드웨어를 포함하는 디코더.
  23. 제 22 항에 있어서,
    상기 HTTP 및 RTMP 중 적어도 하나는 요청들 및 응답들 내부에서 고정된-크기의 데이터 블록들 및 데이터 패킷들 중 적어도 하나를 사용하는 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하기 위한 프로세싱 하드웨어를 포함하는 디코더.
  24. 제 18 항 또는 제 19 항에 있어서,
    상기 프로세싱 하드웨어는 상기 디코딩된 데이터(D3)에서 양자화된 방식으로 상기 변경된 엘리먼트들의 적어도 부분을 디코딩하도록 동작가능한 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하기 위한 프로세싱 하드웨어를 포함하는 디코더.
  25. 제 18 항 또는 제 19 항에 있어서,
    상기 프로세싱 하드웨어는, 상기 변경된 그리고 변경되지 않은 엘리먼트들에 대한 데이터를 생성하도록 상기 인코딩된 데이터(E2)를 디코딩하기 위하여, 상기 인코딩된 데이터(E2)를 생성하도록 압축된 데이터(C4)를 압축해제하기 위한 압축해제 알고리즘을 적용하도록 동작가능한 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하기 위한 프로세싱 하드웨어를 포함하는 디코더.
  26. 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 인코딩된 데이터(E2)를 디코딩하는 방법 - 상기 방법은 상기 인코딩된 데이터(E2)를 데이터 블록들 및 데이터 패킷들 중 적어도 하나로서 프로세싱하는 것을 포함함 - 으로서,
    상기 방법은,
    (i) 변경된 엘리먼트들 - 상기 변경된 엘리먼트들은 상기 인코딩된 데이터(E2) 내의 데이터 블록들 및 데이터 패킷들 중 적어도 하나의 재발생들 내에서 변경되는 엘리먼트들임 - 에 대한 데이터를 생성하기 위하여 상기 인코딩된 데이터(E2)를 디코딩하는 단계와,
    (ii) 변경되지 않은 엘리먼트들 - 상기 변경되지 않은 엘리먼트들은 상기 인코딩된 데이터(E2) 내의 데이터 블록들 및 데이터 패킷들 중 적어도 하나의 상기 재발생들 내에서 변경되지 않는 엘리먼트들임 - 에 대한 데이터를 생성하기 위하여 상기 인코딩된 데이터(E2)를 디코딩하는 단계로서, 상기 변경되지 않은 엘리먼트들은 참조 데이터 블록 및 참조 데이터 패킷 중 적어도 하나에서의 대응하는 엘리먼트들과 비교하여 상기 변경되지 않은 엘리먼트들에서의 변경의 부재를 표시하는 적어도 하나의 대응하는 심볼 또는 적어도 하나의 대응하는 비트에 의해 표현되며, 상기 엘리먼트들은 복수의 비트들을 포함하는 것인, 상기 인코딩된 데이터(E2)를 디코딩하는 단계와,
    (iii) 상기 디코딩된 데이터(D3)를 생성하기 위하여 단계들 (i) 및 (ii)에서의 상기 변경된 그리고 변경되지 않은 엘리먼트들에 대하여 생성된 데이터를 데이터 블록들 및 데이터 패킷들 중 적어도 하나 - 상기 데이터 블록들 및 데이터 패킷들 중 적어도 하나는 대응하는 복수의 엘리먼트들을 포함하고, 상기 엘리먼트들은 복수의 비트들을 포함함 - 로 조립하는 단계를 포함하는 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하는 디코딩 방법.
  27. 제 26 항에 있어서,
    상기 방법은, 텍스트 데이터, 이미지 데이터, 비디오 데이터, 오디오 데이터, 2진 데이터, 센서 데이터, 측정 데이터, 그래픽 데이터, 다차원 데이터, 단일-차원 데이터 중의 적어도 하나의 형태로 상기 디코딩된 데이터(D3)를 생성하는 단계를 포함하는 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하는 디코딩 방법.
  28. 제 26 항 또는 제 27 항에 있어서,
    상기 적어도 하나의 대응하는 심볼은 미리 결정된 데이터 값에 의해 표현되는 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하는 디코딩 방법.
  29. 제 28 항에 있어서,
    상기 미리 결정된 데이터 값은 제로 데이터 값으로서 구현되는 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하는 디코딩 방법.
  30. 제 26 항 또는 제 27 항에 있어서,
    상기 방법은 하이퍼텍스트 전송 프로토콜(HTTP) 및 실시간 메시징 프로토콜(RTMP) 중 적어도 하나를 위한 청크 전송 인코딩의 역을 구현하는 단계를 포함하는 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하는 디코딩 방법.
  31. 제 30 항에 있어서,
    상기 HTTP 및 RTMP 중 적어도 하나는 요청들 및 응답들 내부에서 고정된-크기의 데이터 블록들 및 데이터 패킷들 중 적어도 하나를 사용하는 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하는 디코딩 방법.
  32. 제 26 항 또는 제 27 항에 있어서,
    상기 방법은 상기 디코딩된 데이터(D3)에서 양자화된 방식으로 상기 변경된 엘리먼트들의 적어도 부분을 디코딩하는 단계를 포함하는 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하는 디코딩 방법.
  33. 제 26 항 또는 제 27 항에 있어서,
    상기 방법은 상기 변경된 그리고 변경되지 않은 엘리먼트들에 대한 데이터를 생성하도록 상기 인코딩된 데이터(E2)를 디코딩하기 위하여, 상기 인코딩된 데이터(E2)를 생성하도록 압축된 데이터(C4)를 압축해제하기 위한 압축해제 알고리즘을 적용하는 단계를 포함하는 것을 특징으로 하는 인코딩된 데이터(E2)를 디코딩하는 디코딩 방법.
  34. 컴퓨터-판독가능한 명령어들을 저장한 비-일시적 컴퓨터-판독가능한 저장 매체로서,
    상기 컴퓨터-판독가능한 명령어들은 제 26 항에 따른 방법을 실행하기 위하여 프로세싱 하드웨어를 포함하는 컴퓨터화된 디바이스에 의해 실행가능한 것인, 비-일시적 컴퓨터-판독가능한 저장 매체.
  35. 대응하는 인코딩된 데이터(E2)를 생성하기 위하여 입력 데이터(D1)를 인코딩하기 위한 제 1 항에 따른 적어도 하나의 인코더와, 대응하는 디코딩된 데이터(D3)를 생성하기 위하여 상기 인코딩된 데이터(E2)를 디코딩하기 위한 제 18 항에 따른 적어도 하나의 디코더를 포함하는 코덱.
KR1020167036600A 2014-06-27 2015-06-26 인코더 및 디코더 KR101781776B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1411451.6 2014-06-27
GB1411451.6A GB2527588B (en) 2014-06-27 2014-06-27 Encoder and decoder
PCT/EP2015/025041 WO2015197201A1 (en) 2014-06-27 2015-06-26 Encoder and decoder

Publications (2)

Publication Number Publication Date
KR20170010008A KR20170010008A (ko) 2017-01-25
KR101781776B1 true KR101781776B1 (ko) 2017-09-25

Family

ID=51410227

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167036600A KR101781776B1 (ko) 2014-06-27 2015-06-26 인코더 및 디코더

Country Status (6)

Country Link
US (1) US9859920B2 (ko)
EP (1) EP3161965A1 (ko)
KR (1) KR101781776B1 (ko)
GB (1) GB2527588B (ko)
RU (1) RU2639677C1 (ko)
WO (1) WO2015197201A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11128935B2 (en) * 2012-06-26 2021-09-21 BTS Software Solutions, LLC Realtime multimodel lossless data compression system and method
GB2527607B (en) 2014-06-27 2016-10-05 Gurulogic Microsystems Oy Encoder, decoder and method
WO2018071054A1 (en) * 2016-10-11 2018-04-19 Genomsys Sa Method and system for selective access of stored or transmitted bioinformatics data
EP3526706A4 (en) * 2016-10-11 2020-08-12 Genomsys SA METHOD AND DEVICE FOR ACCESS TO BIOINFORMATICS DATA STRUCTURED IN ACCESS UNITS
US11763918B2 (en) 2016-10-11 2023-09-19 Genomsys Sa Method and apparatus for the access to bioinformatics data structured in access units
CN107277064A (zh) * 2017-08-10 2017-10-20 吉林大学 一种基于流媒体技术的实时地震数据传输系统及传输方法
GB2567427B (en) 2017-10-06 2020-10-07 Imagination Tech Ltd Data compression
US11741051B2 (en) 2017-10-30 2023-08-29 AtomBeam Technologies Inc. System and methods for secure storage for data deduplication
US10419022B2 (en) 2017-11-30 2019-09-17 International Business Machines Corporation Run-length base-delta encoding for high-speed compression
WO2021163496A1 (en) * 2020-02-14 2021-08-19 Circonus, Inc. Method for compressing sequential records of interrelated data fields
CN113709510A (zh) * 2021-08-06 2021-11-26 联想(北京)有限公司 高速率数据实时传输方法及装置、设备、存储介质
CN114817831B (zh) * 2022-06-30 2022-09-23 四川公路工程咨询监理有限公司 建筑工程经济用的计算辅助方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001084849A1 (en) 2000-05-03 2001-11-08 Clearstream Technologies Limited Video data transmission
EP2256934A1 (en) 2009-05-29 2010-12-01 Exagrid Systems, Inc. Method and apparatus for content-aware and adaptive deduplication

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434568A (en) * 1985-01-10 1995-07-18 Moll; Edward W. Data compression by removing repetition and unnecessary information
GB2362055A (en) 2000-05-03 2001-11-07 Clearstream Tech Ltd Image compression using a codebook
US9232228B2 (en) 2004-08-12 2016-01-05 Gurulogic Microsystems Oy Processing of image
US9509991B2 (en) * 2004-08-12 2016-11-29 Gurulogic Microsystems Oy Processing and reproduction of frames
US8599925B2 (en) 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
US7643505B1 (en) * 2006-11-30 2010-01-05 Qlogic, Corporation Method and system for real time compression and decompression
KR20100050072A (ko) * 2008-11-05 2010-05-13 삼성전자주식회사 데이터 압축 방법 및 이를 이용한 데이터 통신 시스템
US8751462B2 (en) * 2008-11-14 2014-06-10 Emc Corporation Delta compression after identity deduplication
RU2428722C2 (ru) 2009-07-13 2011-09-10 Общество с ограниченной ответственностью "ТРАНС-СЕРВИС" Способ дистанционной диагностики магистральных трубопроводов
GB2477607B (en) 2011-01-17 2011-12-28 Quantum Corp Sampling based data de-duplication
US8810439B1 (en) 2013-03-01 2014-08-19 Gurulogic Microsystems Oy Encoder, decoder and method
US8823560B1 (en) 2013-03-01 2014-09-02 Gurulogic Microsystems Oy Data encoder, data decoder and method
GB2511493B (en) 2013-03-01 2017-04-05 Gurulogic Microsystems Oy Entropy modifier and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001084849A1 (en) 2000-05-03 2001-11-08 Clearstream Technologies Limited Video data transmission
EP2256934A1 (en) 2009-05-29 2010-12-01 Exagrid Systems, Inc. Method and apparatus for content-aware and adaptive deduplication

Also Published As

Publication number Publication date
WO2015197201A1 (en) 2015-12-30
GB2527588A (en) 2015-12-30
US9859920B2 (en) 2018-01-02
EP3161965A1 (en) 2017-05-03
US20170155404A1 (en) 2017-06-01
RU2639677C1 (ru) 2017-12-21
KR20170010008A (ko) 2017-01-25
GB201411451D0 (en) 2014-08-13
GB2527588B (en) 2016-05-18

Similar Documents

Publication Publication Date Title
KR101781776B1 (ko) 인코더 및 디코더
US11936884B2 (en) Coded-block-flag coding and derivation
JP5957562B2 (ja) 大きいサイズの変換単位を用いた映像符号化、復号化方法及び装置
RU2619908C2 (ru) Гибкое квантование
JP6245888B2 (ja) エンコーダおよび符号化方法
TWI590662B (zh) 解碼器及解碼方法
JP2022516847A (ja) 適応ポイントクラウド属性コーディングのための方法、装置、及びコンピュータプログラム
CN110169068B (zh) Dc系数符号代码化方案
JP2022530765A (ja) 点群コーディング用の属性をコーディングする方法
KR20160123302A (ko) 데이터의 소스-인코딩 및 디코딩 디바이스 및 방법
US10244260B2 (en) Encoder and decoder, and method of operation
WO2022159897A1 (en) Progressive data compression using artificial neural networks
CN102656884A (zh) 使用像素流执行视频编码
Su et al. A practical design of high-volume steganography in digital video files
US10536697B2 (en) Method for re-encoding image and apparatus therefor
EP3673653B1 (en) Embedding information about token tree traversal
US20240048764A1 (en) Method and apparatus for multi view video encoding and decoding, and method for transmitting bitstream generated by the multi view video encoding method

Legal Events

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