KR102274747B1 - 코덱과 이를 포함하는 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 데이터 처리 시스템 - Google Patents

코덱과 이를 포함하는 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 데이터 처리 시스템 Download PDF

Info

Publication number
KR102274747B1
KR102274747B1 KR1020140164123A KR20140164123A KR102274747B1 KR 102274747 B1 KR102274747 B1 KR 102274747B1 KR 1020140164123 A KR1020140164123 A KR 1020140164123A KR 20140164123 A KR20140164123 A KR 20140164123A KR 102274747 B1 KR102274747 B1 KR 102274747B1
Authority
KR
South Korea
Prior art keywords
current frame
codec
gop
frame
bits
Prior art date
Application number
KR1020140164123A
Other languages
English (en)
Other versions
KR20160061613A (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 삼성전자주식회사
Priority to KR1020140164123A priority Critical patent/KR102274747B1/ko
Priority to US14/868,427 priority patent/US9967573B2/en
Publication of KR20160061613A publication Critical patent/KR20160061613A/ko
Application granted granted Critical
Publication of KR102274747B1 publication Critical patent/KR102274747B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • 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
    • H04N19/423Methods 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 characterised by memory arrangements
    • H04N19/426Methods 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 characterised by memory arrangements using memory downsizing methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명의 실시 예에 따른 코덱은 현재 프레임을 수신하고, 수신된 현재 프레임의 타입을 결정하고, 상기 현재 프레임의 레이트 컨트롤 파라미터(rate control parameter)들을 설정하는 코덱 CPU, 상기 현재 프레임을 포함하는 제1GOP(group of picture)에 대한 전체 타겟 비트(target bit)를 할당하고, 결정된 현재 프레임의 타입과 설정된 레이트 컨트롤 파라미터들에 기초하여, 상기 제1GOP에 포함된 프레임들 각각에 대한 타겟 비트를 할당하는 비트율 예측기, 및 상기 현재 프레임의 상기 레이트 컨트롤 파라미터들을 조정하고, 상기 비트율 예측기에 의해 할당된 프레임들 각각에 대한 타겟 비트와 조정된 레이트 컨트롤 파라미터들을 이용하여 상기 현재 프레임에 포함된 블록들 각각에 대한 양자화 파라미터를 생성하는 부호율 제어기를 포함할 수 있다.

Description

코덱과 이를 포함하는 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 데이터 처리 시스템{CODEC, SYSTEM ON CHIP(SoC) INCLUDING THE SAME, AND DATA PROCESSING SYSTEM INCLUDING THE SoC}
본 발명의 개념에 따른 실시 예는 코덱에 관한 것으로, 특히 이전 GOP(group of picture)의 비트-레이트(bit-rate)에 관계없이 현재 GOP에 할당되는 비트-레이트를 예측하고, I-프레임에 대한 양자화 파라미터를 조정하고, 상기 I-프레임에서 발생하는 비트량을 낮출 수 있는 코덱, 상기 코덱을 포함하는 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 처리 시스템에 관한 것이다.
인터넷 프로토콜(internet protocol(IP)) 네트워크가 발달함에 따라, 상기 IP 네트워크를 통한 비디오 통신이 큰 인기를 얻고 있다. 케이블 네트워크를 통한 전통적인 영상 전송과 달리, IP 네트워크를 통한 영상 전송은 효율적인 전송을 위해, 영상 압축에 대한 여러 가지 방법들이 모색되고 있다.
한편, 모바일 기기의 IP 네트워크를 통한 영상 전송은 상대적으로 전송 과정에서 데이터 패킷 로스(loss)가 발생할 가능성이 높으므로, 사용자는 프레임 드롭 (drop)으로 인한 영상의 끊김 및 화질저하 등 불편함이 있다.
모바일 기기에서, 특히 움직임이 많지 않은 영상을 압축할 때에 P-프레임에서는 스킵(skip)모드가 많이 발생하여 상대적으로 I-프레임 압축할 때에 많은 비트가 발생한다. 이러한 경우에 압축된 I-프레임을 전송할 경우에는 수신 단말기의 버퍼 한도를 초과하게 되어 프레임 드롭(drop)이 발생하는 문제점이 있다.
본 발명이 이루고자 하는 기술적인 과제는 많은 비트가 할당되는 프레임에 낮은 비트-레이트를 할당할 수 있도록, 상기 비트-레이트를 조절하고, 상기 프레임을 부호화할 수 있는 코덱, 상기 코덱을 포함하는 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 데이터 처리 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 코덱은 현재 프레임을 수신하고, 수신된 현재 프레임의 타입을 결정하고, 상기 현재 프레임의 레이트 컨트롤 파라미터(rate control parameter)들을 설정하는 코덱 CPU, 상기 현재 프레임을 포함하는 제1GOP(group of picture)에 대한 전체 타겟 비트(target bit)를 할당하고, 결정된 현재 프레임의 타입과 설정된 레이트 컨트롤 파라미터들에 기초하여, 상기 제1GOP에 포함된 프레임들 각각에 대한 타겟 비트를 할당하는 비트율 예측기, 및 상기 현재 프레임의 상기 레이트 컨트롤 파라미터들을 조정하고, 상기 비트율 예측기에 의해 할당된 프레임들 각각에 대한 타겟 비트와 조정된 레이트 컨트롤 파라미터들을 이용하여 상기 현재 프레임에 포함된 블록들 각각에 대한 양자화 파라미터를 생성하는 부호율 제어기를 포함할 수 있다.
상기 현재 프레임의 타입이 I-프레임(intra frame)인 경우, 상기 비트율 예측기는, 이전 프레임을 포함하는 제2GOP에 관계없이, 상기 제1GOP에 대한 전체 타겟 비트를 할당하고, 할당된 제1GOP에 대한 상기 전체 타켓 비트를 이용하여 상기 현재 프레임에 대한 타겟 비트를 할당할 수 있다.
상기 현재 프레임의 타입이 I-프레임(intra frame)이 아닌 경우, 상기 비트율 예측기는 상기 제1GOP에 대해 할당된 전체 타겟 비트와 상기 제1GOP에 포함된 이전 프레임들을 부호화하기 위해 사용한 비트 수의 차이를 이용하여 상기 현재 프레임에 대한 상기 타겟 비트를 할당할 수 있다.
상기 비트율 예측기는, 제1GOP에 포함되고 처리되지 않은 프레임들의 개수에 기초하여, 상기 현재 프레임에 대한 상기 타겟 비트를 할당할 수 있다.
상기 블록들 각각에 대한 상기 양자화 파라미터에 기초하여, 상기 현재 프레임을 부호화하고, 부호화 된 현재 프레임을 출력하는 인코더, 및 상기 부호화 된 현재 프레임을 저장하는 코덱 메모리를 더 포함하고, 상기 코덱 CPU는 상기 코덱 메모리에 저장된 상기 부호화 된 현재 프레임에 기초하여, 상기 코덱 메모리의 포화 여부를 체크할 수 있다.
상기 코덱 메모리가 포화 된 경우에, 상기 코덱 CPU는 상기 제1GOP에 포함된 나머지 프레임들에 대한 부호화를 스킵(skip)할 수 있다.
상기 부호율 제어기는 상기 현재 프레임에 포함된 상기 블록들 각각에 대한 상기 양자화 파라미터를 조정하고, 블록별로 조정된 양자화 파라미터를 상기 인코더로 전송하고, 상기 인코더는 상기 블록별로 상기 조정된 양자화 파라미터를 이용하여 상기 현재 프레임에 포함된 상기 블록들 각각에 대한 부호화를 수행할 수 있다.
본 발명의 실시 예에 따른 시스템 온 칩은 영상 데이터를 처리하고, 처리된 영상 데이터를 이용하여 현재 프레임을 생성하고 출력하는 전-처리 회로, 및 상기 현재 프레임을 수신하고, 상기 현재 프레임을 부호화하는 코덱을 포함하고, 상기 코덱은, 현재 프레임을 수신하고, 수신된 현재 프레임의 타입을 결정하고, 상기 현재 프레임의 레이트 컨트롤 파라미터들을 설정하는 코덱 CPU, 상기 현재 프레임을 포함하는 제1GOP(group of picture)에 대한 전체 타겟 비트를 할당하고, 결정된 현재 프레임의 타입과 설정된 레이터 컨트롤 파라미터들에 기초하여, 상기 제1GOP에 포함된 프레임들 각각에 대한 타겟 비트를 할당하는 비트율 예측기, 및 상기 현재 프레임의 상기 레이트 컨트롤 파라미터들을 조정하고, 상기 비트율 예측기에 의해 할당된 프레임들 각각에 대한 타겟 비트와 조정된 레이트 컨트롤 파라미터들을 이용하여 상기 현재 프레임에 포함된 블록들 각각에 대한 양자화 파라미터를 생성하는 부호율 제어기를 포함할 수 있다.
상기 현재 프레임의 타입이 I-프레임(intra frame)인 경우에, 상기 비트율 예측기는 이전 프레임을 포함하는 제2GOP에 관계없이, 상기 제1GOP에 대한 전체 타겟 비트를 할당하고, 할당된 상기 제1GOP에 대한 상기 전체 타겟 비트를 이용하여 상기 현재 프레임에 대한 타겟 비트를 할당할 수 있다.
상기 현재 프레임의 타입이 I-프레임(intra frame)이 아닌 경우에, 상기 비트율 예측기는 상기 제1GOP에 대해 할당된 전체 타겟 비트와 상기 제1GOP에 포함된 이전 프레임들을 부호화하기 위해 사용한 비트 수의 차이를 이용하여 상기 현재 프레임에 대한 상기 타겟 비트를 할당할 수 있다.
상기 비트율 예측기는 제1GOP에 포함되고, 처리되지 않은 프레임들의 개수에 기초하여 상기 현재 프레임에 대한 상기 타겟 비트를 할당할 수 있다.
상기 블록들 각각에 대한 상기 양자화 파라미터에 기초하여, 상기 현재 프레임을 부호화하고, 부호화 된 현재 프레임을 출력하는 인코더, 및 상기 부호화 된 현재 프레임을 저장하는 코덱 메모리를 더 포함하고, 상기 코덱 CPU는 상기 코덱 메모리에 저장된 상기 부호화 된 현재 프레임에 기초하여, 상기 코덱 메모리의 포화 여부를 체크할 수 있다.
상기 코덱 메모리가 포화 된 경우에, 상기 코덱 CPU는 상기 제1GOP에 포함된 나머지 프레임들에 대한 부호화를 스킵할 수 있다.
상기 부호율 제어기는 상기 현재 프레임에 포함된 상기 블록들 각각에 대한 상기 양자화 파라미터를 조정하고, 블록별로 조정된 양자화 파라미터를 상기 인코더로 전송하고, 상기 인코더는 상기 블록별로 상기 조정된 양자화 파라미터를 이용하여 상기 현재 프레임에 포함된 상기 블록들 각각에 대한 부호화를 수행할 수 있다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 영상 통화 애플리케이션이 실행되면, 영상 데이터를 생성하는 카메라 장치, 상기 카메라 장치로부터 수신된 영상 데이터를 처리하고, 처리된 영상 데이터를 이용하여 현재 프레임을 생성하고 출력하는 전-처리 회로, 및 상기 현재 프레임을 수신하고, 상기 현재 프레임을 부호화하는 코덱을 포함하고, 상기 코덱은, 현재 프레임을 수신하고, 수신된 현재 프레임의 타입을 결정하고, 상기 현재 프레임의 레이트 컨트롤 파라미터들을 설정하는 코덱 CPU, 상기 현재 프레임을 포함하는 제1GOP(group of picture)에 대한 전체 타겟 비트를 할당하고, 결정된 현재 프레임의 타입과 설정된 레이트 컨트롤 파라미터들에 기초하여, 상기 제1GOP에 포함된 프레임들 각각에 대한 타겟 비트를 할당하는 비트율 예측기, 및 상기 현재 프레임의 상기 레이트 컨트롤 파라미터들을 조정하고, 상기 비트율 예측기에 의해 할당된 프레임들 각각에 대한 타겟 비트와 조정된 레이트 컨트롤 파라미터 파라미터들을 이용하여 상기 현재 프레임에 포함된 블록들 각각에 대한 양자화 파라미터를 생성하는 부호율 제어기를 포함할 수 있다.
상기 현재 프레임의 타입이 I-프레임(intra frame)인 경우에, 상기 비트율 예측기는 이전 프레임을 포함하는 제2GOP에 관계없이, 상기 제1GOP에 대한 전체 타겟 비트를 할당하고, 할당된 상기 제1GOP에 대한 상기 전체 타겟 비트를 이용하여 상기 현재 프레임에 대한 타겟 비트를 할당할 수 있다.
상기 현재 프레임의 타입이 I-프레임(intra frame)이 아닌 경우에, 상기 비트율 예측기는 상기 제1GOP에 대해 할당된 전체 타겟 비트와 상기 제1GOP에 포함된 이전 프레임들을 부호화하기 위해 사용한 비트 수의 차이를 이용하여 상기 현재 프레임에 대한 상기 타겟 비트를 할당할 수 있다.
상기 비트율 예측기는 제1GOP에 포함되고, 처리되지 않은 프레임들의 개수에 기초하여 상기 현재 프레임에 대한 상기 타겟 비트를 할당할 수 있다.
상기 블록들 각각에 대한 상기 양자화 파라미터에 기초하여, 상기 현재 프레임을 부호화하고, 부호화 된 현재 프레임을 출력하는 인코더, 및 상기 부호화 된 현재 프레임을 저장하는 코덱 메모리를 더 포함하고, 상기 코덱 CPU는 상기 코덱 메모리에 저장된 상기 부호화 된 현재 프레임에 기초하여, 상기 코덱 메모리의 포화 여부를 체크할 수 있다.
상기 부호율 제어기는 상기 현재 프레임에 포함된 상기 블록들 각각에 대한 상기 양자화 파라미터를 조정하고, 블록별로 조정된 양자화 파라미터를 상기 인코더로 전송하고, 상기 인코더는 상기 블록별로 상기 조정된 양자화 파라미터를 이용하여 상기 현재 프레임에 포함된 상기 블록들 각각에 대한 부호화를 수행할 수 있다.
본 발명의 실시 예에 따른 코덱과 이를 포함하는 장치들은 I-프레임의 부호화되는 비트량을 제한하여, 상기 I-프레임을 부호화할 수 있는 효과가 있다.
따라서, 상기 코덱과 이를 포함하는 상기 장치들은 영상 데이터 전송에 있어서 프레임 드롭(drop)을 감소시키고, 화질열화를 줄일 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록도이다.
도 2는 도 1에 도시된 데이터 처리 시스템을 포함하는 영상 통신 시스템의 블록도이다.
도 3은 도 1과 도 2에 도시된 코덱의 개략적인 블록도이다.
도 4는 도 3에 도시된 코덱의 구체적인 블록도이다.
도 5는 도 4의 비트율 예측기가 현재 프레임이 I-프레임인 경우에 GOP(group of picture)에 대한 타겟 비트를 할당하는 방법을 설명하기 위한 블록도이다.
도 6는 도 4의 비트율 예측기가 현재 프레임이 I-프레임이 아닌 경우에 GOP에 대한 타겟 비트를 할당하는 방법을 설명하기 위한 블록도이다.
도 7은 도 4의 부호율 제어기가 양자화 파라미터를 조정하는 방법을 설명하기 위한 블록도이다.
도 8은 도 7의 양자화 파라미터를 조정하기 위한 블록의 버퍼 포화도를 설명하기 위한 그래프이다.
도 9는 도 7의 양자화 파라미터를 조정하는 방법을 설명하기 위한 표이다.
도 10(a)는 도 4의 인코더가 일반 모드에서 인코딩한 프레임에 대한 타겟 비트를 나타내는 그래프이다.
도 10(b)는 도 4의 인코더가 플랫 모드에서 인코딩한 프레임에 대한 타겟 비트를 나타내는 그래프이다.
도 11은 도 4의 코덱 메모리가 포화된 경우에 코덱의 동작을 설명하기 위한 그래프이다.
도 12는 본 발명의 실시 예에 따른 일반 모드와 플랫 모드를 설명하기 위한 플로우 차트이다.
도 13은 본 발명의 실시 예에 따른 플랫 모드에서 코덱의 동작을 설명하기 위한 플로우 차트이다.
도 14는 코덱 메모리가 포화된 경우 코덱의 동작을 설명하기 위한 플로우 차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록도이다.
데이터 처리 시스템(10)은 TV, DTV(digital TV), IPTV(internet protocol TV), PC(personal computer), 데스크 탑 컴퓨터, 랩-탑(lap-top) 컴퓨터, 컴퓨터 워크스테이션(computer workstation), 태블릿(tablet) PC, 비디오 게임 플랫폼(또는 비디오 게임 콘솔), 서버, 또는 모바일 컴퓨팅 장치로 구현될 수 있다.
상기 모바일 컴퓨팅 장치는 이동 전화기, 스마트 폰(smart phone), PDA (personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP (portable multimedia player), PND(personal navigation device 또는 portable navigation device), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 또는 e-북(e-book)으로 구현될 수 있다.
데이터 처리 시스템(10)은 2D(dimensional) 또는 3D 그래픽스 데이터를 처리하고, 처리된 데이터를 디스플레이할 수 있는 다양한 장치를 의미할 수 있다.
데이터 처리 시스템(10)은 카메라(50), 시스템 온 칩(system on chip(SoC); 100), 디스플레이(200), 입력 장치(210), 및 제2메모리(220)를 포함할 수 있다. 도 1에서는 SoC(100)의 외부에 제2메모리(220)가 도시되어 있으나, 실시 예에 따라 제2메모리(220)는 SoC(100)의 내부에 구현될 수 있다.
카메라(50)는 CMOS 이미지 센서로 구현될 수 있다. 카메라(50)는 피사체를 촬영하고, 상기 피사체에 대한 제1데이터(IM)를 생성하고, 생성된 제1데이터(IM)를 SoC(100)로 출력할 수 있다. 제1데이터(IM)는 정지 영상 데이터 또는 동영상 데이터일 수 있다.
SoC(100)는 데이터 처리 시스템(10)의 작동을 전반적으로 제어할 수 있다. 예컨대, SoC(100)는 본 명세서에서 설명될 본 발명의 실시 예에 따른 작동들을 수행할 수 있는 집적 회로(integrated circuit(IC)), 마더보드, 애플리케이션 프로세서(application processor(AP)), 또는 모바일(mobile) AP를 의미할 수 있다.
즉, SoC(100)은 카메라(50)로부터 출력된 제1데이터(IM)를 처리하고, 처리된 데이터를 디스플레이(200)에서 디스플레이하거나, 제2메모리(220)에 저장하거나, 다른 데이터 처리 시스템으로 전송할 수 있다. 카메라(50)로부터 출력된 데이터 (IM)는 MIPI® 카메라 시리얼 인터페이스(camera serial interface(CSI))를 통해 전-처리 회로(110)로 전송될 수 있다.
SoC(100)는 전-처리 회로(110), 코덱(120), CPU(130), 제1메모리(140), 디스플레이 컨트롤러(150), 메모리 컨트롤러(160), 버스(170), 모뎀(180), 및 사용자 인터페이스(190)를 포함할 수 있다.
전-처리 회로(110), 코덱(120), CPU(130), 제1메모리(140), 디스플레이 컨트롤러(150), 메모리 컨트롤러(160), 모뎀(180), 및 사용자 인터페이스(190)는 버스(170)를 통해 서로 데이터를 주거나 받을 수 있다. 예컨대, 버스(170)는 PCI 버스(Peripheral Component Interconnect Bus), PCI 익스프레스(PCI Express(PCIe)) 버스, AMBA (Advanced High Performance Bus), AHB(Advanced High Performance Bus), APB (Advanced Peripheral Bus), AXI(Advanced eXtensible Interface) 버스, 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
전-처리 회로(110)는 카메라(200)로부터 출력된 제1데이터(IM)를 수신하고, 수신된 제1데이터(IM)를 처리하고, 처리 결과에 따라 생성된 제2데이터(FI)를 코덱 (120)으로 출력할 수 있다. 예컨대, 전-처리 회로(110)는 처리 결과에 따라 생성된 제2데이터(FI)를 버스(170)를 통해서 또는 직접 코덱(120)으로 전송할 수 있다.
제1데이터(IM)와 제2데이터(FI) 각각은 프레임(또는 픽쳐)을 의미할 수 있다. 이하, 설명의 편의를 위해, 각 데이터(IM과 FI)를 현재 프레임(또는 현재 픽쳐)이라 한다.
실시 예에 따라 전-처리 회로(110)는 이미지 신호 프로세서(image signal processor(ISP))로 구현될 수 있다. 예컨대, ISP는 제1데이터 포맷을 갖는 제1데이터(IM)를 제2데이터 포맷을 갖는 제2데이터(FI)로 변환할 수 있다. 예컨대, 제1데이터(IM)는 베이어(Bayer) 패턴을 갖는 데이터이고 제2데이터(FI)는 YUV 데이터일 수 있으나 이에 한정되는 것은 아니다.
도 1에서 전-처리 회로(110)는 SoC(100) 내부에 구현된 것으로 도시되어 있으나, 실시 예들에 따라 전-처리 회로(110)는 SoC(100) 외부에 구현될 수 있다.
코덱(120)은 현재 프레임(FI)에 포함된 복수의 블록들 각각에 대한 인코딩(또는 부호화) 작동을 수행할 수 있다.
상기 인코딩 작동은 JPEG(joint picture expert group), MPEG (motion pic-ture expert groups), MPEG-2, MPEG-4, VC-1, H.264, H.265, 또는 HEVC(High Efficiency Video Coding) 등의 영상 데이터 인코딩 기술을 이용할 수 있으나 이에 한정되는 것은 아니다.
도 1에서 코덱(120)은 하드웨어 코덱으로 구현되어 있으나, 본 발명의 기술적 사상에 따른 코덱은 하드웨어 코덱 또는 소프트웨어 코덱으로 구현될 수 있다. 상기 소프트웨어 코덱은 CPU(130)에 의해 실행될 수 있다.
CPU(130)는 SoC(100)의 작동을 제어할 수 있다.
사용자는, CPU(130)가 하나 또는 그 이상의 애플리케이션들(예컨대, 소프트웨어 애플리케이션들(APP); 135)을 실행할 수 있도록, 입력을 SoC(100)로 제공할 수 있다.
실시 예에 따라, CPU(130)에 의해 실행되는 애플리케이션들(135) 중에서 어느 하나는 영상 통화 애플리케이션을 의미할 수 있다. 또한, CPU(130)에 의해 실행되는 애플리케이션들(135)은 운영 체제(operating system (OS)), 워드프로세서 애플리케이션, 미디어 플레이어 애플리케이션, 비디오 게임 애플리케이션, 및/또는 그래픽 사용자 인터페이스(graphical user intergace(GUI)) 애플리케이션을 포함할 수 있으나 이에 한정되는 것은 아니다. 이하 설명의 편의를 위해 영상 통화 애플리케이션을 애플리케이션(135)이라 한다.
제1메모리(140)는, 메모리 컨트롤러의 제어에 따라, 애플리케이션(135)이 실행됨에 따라 코덱(120)에 의해 부호화(또는 인코딩(encoding)) 된 데이터를 수신하여 저장할 수 있다. 또한, 제1메모리(140)는, 상기 메모리 컨트롤러의 제어에 따라, 애플리케이션(135)에 의해 저장된 데이터를 CPU(130) 또는 모뎀(180)으로 전송할 수 있다.
제1메모리(140)는 CPU(130)에서 실행된 애플리케이션(135)에 대한 데이터를 라이트할 수 있고, 제1메모리(140)에 저장된 애플리케이션(135)에 대한 데이터를 리드할 수 있다.
예컨대, 제1메모리(140)는 SRAM(static random access memory)과 같은 휘발성 메모리 또는 ROM(read only memory)와 같은 불휘발성 메모리로 구현될 수 있다.
디스플레이 컨트롤러(150)는, 코덱(120) 또는 CPU(130)로부터 출력된 데이터를 디스플레이(200)로 전송할 수 있다. 디스플레이(200)는 모니터, TV 모니터, 프로젝션 장치(projection device), TFT-LCD(thin film transistor-liquid crystal display), LED(light emitting diode) 디스플레이, OLED(organic LED) 디스플레이, AMOLED(active-matrix OLED) 디스플레이, 또는 플렉시블(flexible) 디스플레이로 구현될 수 있다.
예컨대, 디스플레이 컨트롤러(150)는 MIPI 디스플레이 시리얼 인터페이스 (display serial interface(DSI))를 통해 데이터를 디스플레이(200)로 전송할 수 있다.
입력 장치(210)는 사용자로부터 입력된 사용자 입력을 수신하고, 상기 사용자 입력에 상응하는 입력 신호를 사용자 인터페이스(190)로 전송할 수 있다.
입력 장치(210)는 터치 패널(touch panel), 터치 스크린(touch screen), 음성 인식기(voice recognizer), 터치 펜, 키보드, 마우스, 트랙 포인트 등으로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 입력 장치(210)가 터치 스크린인 경우에, 입력 장치(210)는 터치 패널과 터치 패널 컨트롤러를 포함할 수 있다. 또한, 입력 장치(210)가 음성 인식기인 경우에, 입력 장치(210)는 음성 인식 센서와 음성 인식 컨트롤러를 포함할 수 있다.
입력 장치(210)는 디스플레이(200)와 접속될 수 있고, 디스플레이(200)와 분리되어 구현될 수도 있다.
실시 예에 따라, 사용자가, 입력 장치(210)를 이용하여, 디스플레이(200)에 디스플레이 된 애플리케이션 아이콘(205)을 실행시키면, 입력 장치(210)는 입력 신호를 생성할 수 있다.
애플리케이션 아이콘(205)은 CPU(130)에서 실행될 수 있는 애플리케이션 (135)에 의해 생성될 수 있다. 디스플레이(200)에는 복수의 애플리케이션 아이콘들이 디스플레이 될 수 있다. 예컨대, 애플리케이션(135)이 영상 통화 애플리케이션일 때, 애플리케이션 아이콘(205)은 상기 영상 통화 애플리케이션을 실행시키기 위한 아이콘일 수 있다.
입력 장치(210)는 입력 신호를 사용자 인터페이스(190)로 전송할 수 있다.
사용자 인터페이스(190)는 입력 장치(210)로부터 입력 신호를 수신하고, 상기 입력 신호에 상응하는 데이터를 CPU(130)로 전송할 수 있다.
실시 예에 따라, CPU(130)는 입력 신호에 상응하는 데이터를 수신하고, 상기 데이터에 응답하여 영상 통화 애플리케이션(135)을 실행시킬 수 있다.
메모리 컨트롤러(160)는, 코덱(120) 또는 CPU(130)의 제어에 따라, 제2메모리(220)에 저장된 데이터를 리드하고, 리드된 데이터를 코덱(120) 또는 CPU(130)로 전송할 수 있다. 또한, 메모리 컨트롤러(160)는, 코덱(120) 또는 CPU(130)의 제어에 따라, 코덱(120) 또는 CPU(130)로부터 출력된 데이터를 제2메모리(220)에 라이트할 수 있다.
제2메모리(220)는 휘발성 메모리 및/또는 불휘발성 메모리로 구현될 수 있다. 상기 휘발성 메모리는 RAM(random access memory), SRAM(static RAM), DRAM (dynamic RAM), SDRAM(synchronous DRAM), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
상기 불휘발성 메모리는 EEPROM(electrically erasable programmable read-only memory), 플래시(flash) 메모리, MRAM(magnetic RAM), 스핀전달토크 MRAM (spin-transfer torque MRAM), FeRAM(ferroelectric RAM), PRAM(phase change RAM), 또는 RRAM(resistive RAM)으로 구현될 수 있다.
또한, 상기 불휘발성 메모리는 MMC(multimedia card), eMMC(embedded MMC), UFS(universal flash storage), 솔리드 스테이트 드라이브(solid state drive or solid state disk(SSD)), USB 플래시 드라이브, 또는 하드디스크 드라이브(hard disk drive(HDD))로 구현될 수 있다.
모뎀(180)은 코덱(120) 또는 CPU(130)에 의해 부호화 된 데이터를 무선 통신 기술을 이용하여 외부로 출력할 수 있다. 상기 무선 통신 기술은 와이파이(WI-FI), 와이브로(WIBRO), 3G 무선통신, LTETM(long term evolution), LTE-A(long term evolution-advanced), 또는 광대역(broadband) LTE-A를 의미할 수 있다.
도 2는 도 1에 도시된 데이터 처리 시스템을 포함하는 영상 통신 시스템의 블록도이다. 도 2를 참조하면, 영상 통신 시스템(20)은 채널(300)을 통해 서로 통신할 수 있는 제1데이터 처리 시스템(10-1)과 제2데이터 처리 시스템(10-2)을 포함할 수 있다. 영상 통신 시스템(20)은 영상 통화 시스템을 의미할 수 있다.
제1데이터 처리 시스템(10-1)과 제2데이터 처리 시스템(10-2) 각각의 구조와 작동을 실질적으로 동일 또는 유사하다.
제1데이터 처리 시스템(10-1)은 비디오 카메라(50-1), 코덱(120-1), 버퍼 (140-1), 및 모뎀(180-1)을 포함할 수 있다.
제1데이터 처리 시스템(10-1)은 비디오 카메라(50-1)로부터 수신된 데이터 (INPUT)를 부호화(또는 인코딩)하고, 부호화 된 데이터(EI)를 채널(300)을 통해 제2데이터 처리 시스템(10-2)으로 전송할 수 있다.
비디오 카메라(50-1)는 도 1에 도시된 카메라(50)와 실질적으로 동일할 수 있고, 코덱(120-1)은 도 1에 도시된 코덱(120)과 실질적으로 동일할 수 있고, 버퍼 (140-1)는 도 1에 도시된 제1메모리(140)와 실질적으로 동일할 수 있고, 모뎀(180-1)은 도 1에 도시된 모뎀(180)과 실질적으로 동일할 수 있다.
제2데이터 처리 시스템(10-2)은 채널(300)을 통해 제1데이터 처리 시스템 (10-1)으로부터 전송된 부호화 된 데이터(EI)를 수신할 수 있다.
제2데이터 처리 시스템(10-2)은 디스플레이(200-2), 코덱(120-2), 버퍼(140-2), 및 모뎀(180-2)을 포함할 수 있다.
모뎀(180-2)은 제1데이터 처리 시스템(10-1)으로부터 전송된 부호화 된 데이터(EI)를 버퍼(140-2)로 전송할 수 있다. 모뎀(180-2)은 도 1에 도시된 모뎀(180)과 실질적으로 동일할 수 있다.
버퍼(140-2)는 모뎀(180-2)으로부터 부호화 된 데이터(EI)를 수신할 수 있고, 부호화 된 데이터(EI)를 코덱(120-2)으로 전송할 수 있다. 버퍼(140-2)는 도 1에 도시된 제1메모리(140)와 실질적으로 동일할 수 있다.
코덱(120-2)은 부호화 된 데이터(EI)를 수신하고, 부호화 된 데이터(EI)를 복호화(또는 디코딩(decoding))할 수 있다. 예컨대, 코덱(120-2)은 디코더(decoder)의 기능을 포함할 수 있다.
디스플레이(200-2)는 코덱(120-2)에 의해 복호화 된 데이터를 디스플레이할 수 있다. 디스플레이(200-2)는 도 1에 도시된 디스플레이(200)와 실질적으로 동일할 수 있다.
제1데이터 처리 시스템(10-1)과 제2데이터 처리 시스템(10-2)은 채널(300)을 통해 양방향 통신을 수행할 수 있다. 실시 예들에 따라, 채널(300)은 와이파이(WI-FI), 와이브로(WIBRO), 3G 무선통신, LTE(long term evolution), LTE-A(long term evolution-advanced), 또는 광대역 LTE-A를 지원할 수 있다.
도 3은 도 1과 도 2에 도시된 코덱의 개략적인 블록도이다.
도 1부터 도 3을 참조하면, 코덱(120)은 코덱 CPU(122), 하드웨어 블록 (126), 및 코덱 메모리(128)를 포함할 수 있다.
코덱 CPU(122)는 전-처리 회로(110)로부터 출력된 현재 프레임(FI)을 코덱 메모리(128)에 저장할 수 있다.
코덱 CPU(122)는 현재 프레임(FI)의 타입(type)을 결정하고, 결정된 현재 프레임(FI)의 타입을 이용하여 타입 정보(TI)를 생성할 수 있다. 코덱 CPU(122)는 현재 프레임(FI)의 레이트 컨트롤 파라미터들을 결정하고, 결정된 레이트 컨트롤 파라미터들을 이용하여 파라미터 정보(PI)를 생성할 수 있다.
상기 레이트 컨트롤 파라미터는 현재 프레임(FI)의 비트-레이트(bit-rate)를 조절(또는 컨트롤)할 수 있는 파라미터들을 의미할 수 있다.
코덱 CPU(122)는 타입 정보(TI), 파라미터 정보(PI), 및 현재 프레임(FI)을 하드웨어 블록(126)으로 출력할 수 있다.
코덱 CPU(122)에서 실행되는 펌웨어(124)는, GOP(group of picture)의 특성에 따라, 현재 프레임(FI)이 i-프레임, p-프레임, 또는 b-프레임인지를 결정하고, 결정 결과에 따라 타입 정보(TI)를 생성할 수 있다.
실시 예들에 따라, GOP(group of picture)는 i-프레임, b-프레임, 및 p-프레임 중에서 적어도 하나를 포함할 수 있다. 예컨대, GOP에 포함된 프레임들 중 첫번째 프레임은 i-프레임이며, 나머지 모두는 i-프레임, b-프레임, 및/또는 p-프레임일 수 있다. 실시 예들에 따라, GOP에 포함되는 프레임들의 개수 및/또는 전-처리 회로(110)로부터 전송되는 서로 다른 타입을 갖는 프레임들의 순서는 다양하게 변경될 수 있다.
코덱 CPU(122)에서 실행되는 펌웨어(124)는, 현재 프레임(FI)의 상기 레이트 컨트롤 파라미터들을 결정하고, 결정 결과에 따라 파라미터 정보(PI)를 생성할 수 있다.
현재 프레임(FI)의 상기 레이트 컨트롤 파라미터들은, 프레임들 각각의 타입에 따른 복잡도, GOP의 사이즈(예컨대, GOP에 대한 전체 타겟 비트), 프레임-레이트에 해당하는 초당 프레임(또는 초당 픽쳐) 수, 비트-레이트에 해당하는 초당 비트 수, 정규화 상수(normalization constant), 및/또는 초기 파라미터(initial parameter)를 포함할 수 있다. 상기 초기 파라미터는 제1상수 (k2), 제2상수(r_seq), 초기 프레임 양자화 파라미터(quantization parameter) 및 초기 버퍼 포화도(d0)를 포함할 수 있다.
코덱 CPU(122)는 현재 프레임(FI)의 복잡도를 GOP마다 계산할 수 있다.
코덱 CPU(122)는 수학식 1을 이용하여 현재 프레임(FI)의 복잡도(xi, xp, 또는 xb)를 계산할 수 있다.
[수학식 1]
xi=160*(br)/115, xp=60*(br)/115, 및 xb=42*(br)/115
여기서, xi는 현재 프레임(FI)이 i-프레임일 때 복잡도이고, xp는 현재 프레임(FI)이 p-프레임일 때 복잡도이고, xb는 현재 프레임(FI)이 b-프레임일 때 복잡도이다. br은 현재 프레임(FI)의 비트-레이트 또는 초당 비트 수를 의미할 수 있다.
예컨대, 코덱 CPU(122)는 비트-레이트(br)를 결정할 수 있고, 결정된 비트-레이트를 이용하여 i-프레임의 복잡도(xi), p-프레임의 복잡도(xp), 및/또는 b-프레임의 복잡도(xb)를 결정할 수 있다.
예컨대, 비트-레이트가 115이면, xi는 160이고, xp는 60이고, xb는 42이다.
파라미터 정보(PI)는 현재 프레임(FI)의 상기 레이트 컨트롤 파라미터들을 포함할 수 있다. 예컨대, 파라미터 정보(PI)는 현재 프레임(FI)의 복잡도(xi, xp, 또는 xb), GOP 사이즈, 초당 비트 수, 및/또는 초당 프레임 수를 포함할 수 있다.
코덱 CPU(122)는 하드웨어 블록(126)으로부터 출력된 현재 프레임(FI)에 대한 인코딩(또는 부호화) 종료 신호(DI)를 전-처리 회로(110)로 전송할 수 있다.
코덱 CPU(122)는 코덱 메모리(128)의 포화 여부를 체크하고 체크 결과에 해당하는 체크 신호(BF)를 생성할 수 있다.
하드웨어 블록(126)은 코덱 CPU(122)로부터 전송된 타입 정보(TI), 파라미터 정보(PI)를 이용하여 현재 프레임(FI)을 부호화 할 수 있다.
하드웨어 블록(126)은 부호화 된 현재 프레임(EI)을 코덱 메모리(128)에 저장할 수 있다.
하드웨어 블록(126)은 현재 프레임(FI)에 대한 인코딩(또는 부호화)이 종료되면, 인코딩(또는 부호화) 종료 신호(DI)를 코덱 CPU(122)로 전송할 수 있다.
코덱 메모리(128)는 하드웨어 블록(126)으로부터 전송된 부호화 된 현재 프레레(EI)를 수신하여 저장할 수 있다.
코덱 메모리(128)는 복수의 버퍼들 및/또는 복수의 가상 버퍼들을 포함할 수 있다. 실시 예들에 따라, 코덱 메모리(128)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다.
도 4는 도 3에 도시된 코덱의 구체적인 블록도이다. 도 3과 도 4를 참조하면, 코덱(120)은 코덱 CPU(122), 하드웨어 블록(126), 및 코덱 메모리(128)를 포함할 수 있다. 하드웨어 블록(126)은 비트율 예측기(126-1), 부호율 제어기(126-2), 및 인코더(126-3)를 포함할 수 있다.
비트율 예측기(126-1)는, 코덱 CPU(122)로부터 전송된 타입 정보(TI)와 파라미터 정보(PI)를 이용하여, 현재 프레임(FI)에 대한 타겟 비트를 할당할 수 있다.
상기 타겟 비트는 비트율 예측기(126-1)가 현재 프레임(FI)을 인코딩(또는 부호화)하기 위해 할당하는 비트 수(또는 비트 용량)를 의미할 수 있다.
실시 예에 따라, 비트율 예측기(126-1)는 현재 프레임(FI)을 포함하는 GOP에 대한 전체 타겟 비트를 할당하고, 현재 프레임(FI)의 타입 정보(TI)와 파라미터 정보 (PI)를 이용하여, 상기 GOP에 포함된 프레임들 각각에 대한 타겟 비트를 할당할 수 있다.
도 5는 도 4의 비트율 예측기(126-1)가 현재 프레임이 I-프레임인 경우 GOP(group of picture)에 대한 전체 타겟 비트를 할당하는 방법을 설명하기 위한 블록도이다.
도 4와 도 5를 참조하면, 현재 프레임(FI=FI1=I1))의 타입 정보(TI)가 i-프레임을 나타낼 때, 비트율 예측기(126-1)는, 이전 프레임을 포함하는 제2GOP에 대한 타겟 비트에 관계없이, 제1GOP(GOP1)에 대한 전체 타겟 비트(TB1)를 할당할 수 있다.
실시 예에 따라, 제2GOP(GOP0)에 대해 할당된 타겟 비트가 제2GOP(GOP0)를 실제 인코딩(또는 부호화)할 때 사용된 타겟 비트와 다를 때, 비트율 예측기(126-1)는, 제2GOP(GOP0)에서 발생한 타겟 비트의 차이에 관계없이, 제1GOP(GOP1)에 대한 전체 타겟 비트(TB1)를 할당할 수 있다.
즉, 비트율 예측기(126-1)는 I-프레임(I1)과 P-프레임들(P1~PN, N은 2 이상의 자연수) 전체에 대한 전체 타겟 비트(TB1)를 할당할 수 있다. 비트율 예측기(126-1)는 수학식 2를 이용하여 제1GOP(GOP1)에 대한 전체 타겟 비트(TB1)를 계산할 수 있다.
[수학식 2]
TB=K*br/f
여기서, TB는 현재 프레임(FI)을 포함하는 제1GOP(GOP1)의 전체 타겟 비트(TB1)를 나타내고, K은 제1GOP(GOP1)의 사이즈를 나타내고, br은 현재 프레임(FI)의 비트-레이트(bit-rate)를 나타내고, f는 프레임-레이트(frame-rate or picture-rate)를 나타낸다.
예컨대, 비트-레이트(br)가 300이고, 제1GOP(GOP1)의 사이즈(K)가 30이고, 프레임 수(f)가 30이면, 전체 타겟 비트 (TB)는 300이 된다. 또한, 비트-레이트(br)가 300이고, 제1GOP(GOP1)의 사이즈(K)가 300이고, 프레임 수(f)가 30이면, 전체 타겟 비트(TB)는 3000이 된다.
비트율 예측기(126-1)는, 예측된 제1GOP(GOP1)에 대한 전체 타겟 비트 (TB1)를 이용하여, 현재 프레임(FI 또는 FI1)에 대한 타겟 비트를 할당할 수 있다. 예컨대, 비트율 예측기(126-1)는 수학식 3을 이용하여 현재 프레임(FI 또는 FI1)에 대한 타겟 비트를 할당(또는 계산)할 수 있다.
[수학식 3]
T=(xL/kL)/(xi/ki+Np*xp/kp+Nb*xb/kb)*R
여기서, xL은 L번째(L은 자연수) 프레임의 복잡도, xi은 i-프레임의 복잡도, xp은 p-프레임의 복잡도, xb은 b-프레임의 복잡도, kn은 n번째 프레임의 정규화 상수, ki는 i-프레임의 정규화 상수(ki=1), kp는 p-프레임의 정규화 상수(kp=1), kb는 b-프레임의 정규화 상수(kb=1.4), Np는 GOP에서 처리되지 않은 p-프레임 수, Nb는 상기 GOP에서 처리되지 않은 b-프레임 수, R은 상기 GOP를 부호화하는 동안에 아직 사용되지 않은 비트 수를 의미한다.
도 6은 도 4의 비트율 예측기가 현재 프레임이 i-프레임이 아닌 경우 GOP에 대한 타겟 비트를 할당하는 방법을 설명하기 위한 블록도이다.
도 4와 도 6을 참조하면, 현재 프레임(FI=FI2=P2)의 타입 정보(TI)가 i-프레임이 아님을 나타낼 때, 비트율 예측기(126-1)는, 현재 프레임(FI)이 i-프레임인 단계에서 제1GOP(GOP1)에 대한 전체 타겟 비트를 이미 할당했기 때문에, 제1GOP(GOP1)에 대한 전체 타겟 비트(TB2)를 할당하지 않는다.
실시 예에 따라, 비트율 예측기(126-2)는, 제1GOP(GOP1)에 대해 할당된 전체 타겟 비트 (TB2)와 제1GOP(GOP1)에 포함된 이전 프레임들(I1과 P1)을 인코딩(또는 부호화)하기 위해 사용한 비트 수(PB)의 차이(RB)를 이용하여, 현재 프레임(FI, FI2, 또는 P2)에 대한 타겟 비트를 할당할 수 있다. 제1GOP(GOP1)에 대해 할당된 전체 타겟 비트(TB2)와 제1GOP(GOP1)에 포함된 이전 프레임들(I1과 P1)을 인코딩(또는 부호화)하기 위해 사용한 비트수(PB)의 차이는 남은 비트 수(RB)로 표현될 수 있다.
비트율 예측기(126-1)는, 제1GOP(GOP1)에 포함되고 처리되지 않은 프레임들의 개수(D)에 기초하여, 현재 프레임(FI, FI2, 또는 P2)에 대한 타겟 비트를 할당할 수 있다.
예컨대, 처리되지 않은 프레임들의 개수(D)는 현재 프레임(FI, FI2, 또는 P2)이 p-프레임이고, 전체 p-프레임의 개수가 29개면, 처리되지 않은 프레임들의 개수(D)는 28이 된다.
비트율 예측기(126-1)는 수학식 3을 이용하여 현재 프레임(FI, FI2, 또는 P2)에 대한 타겟 비트를 계산할 수 있다.
비트율 예측기(126-1)는 현재 프레임(FI)에 대한 상기 타겟 비트를 포함하는 비트 정보(BI)를 부호율 제어기(126-2)로 전송할 수 있다. 또한, 비트율 예측기(126-1)는 파라미터 정보(PI)와 현재 프레임(FI)을 부호율 제어기 (126-2)로 전송할 수 있다.
비트 정보(BI)는 현재 프레임(FI)에 대한 타겟 비트를 포함할 수 있고, 현재 프레임(FI)을 포함하는 제1GOP(GOP1)에 대해 할당된 전체 타겟 비트를 포함할 수 있다. 또한, 비트 정보(BI)는 제1GOP(GOP1)에 포함된 프레임들 각각에 대한 타겟 비트를 포함할 수도 있다.
부호율 제어기 (126-2)는, 수신한 파라미터 정보(PI)에 기초하여, 현재 프레임(FI)의 레이트 컨트롤 파라미터들을 조정할 수 있다.
부호율 제어기 (126-2)는, 비트율 예측기(126-2)에 의해 할당된 프레임들 각각에 대한 타겟 비트와 조정된 파라미터들을 이용하여, 현재 프레임(FI)에 포함된 블록들 각각에 대한 양자화 파라미터(QP)를 생성할 수 있다.
도 7은 도 4의 부호율 제어기가 양자화 파라미터를 조정하는 방법을 설명하기 위한 블록도이다.
도 4와 도 7을 참조하면, 부호율 제어기 (126-2)는 현재 프레임(FI)에 포함된 블록들 각각에 대한 양자화 파라미터(예컨대, QP, QP1, 또는 QP1')를 생성할 수 있다.
예컨대, 현재 프레임(FI)이 4*4 블록들을 포함한다고 가정한다. 현재 프레임에 포함된 블록 수는 이에 한정되지 않는다. 현재 프레임(FI)은 16개의 블록들 (BL1~BL16)을 포함할 수 있고, 부호율 제어기 (126-2)는 각 블록(BL1~BL16)에 대한 각 양자화 파라미터(QP1~QP16)를 생성할 수 있다.
실시 예에 따라, 부호율 제어기 (126-2)는 제1블록(BL1)에 대한 양자화 파라미터(QP1)를 생성할 수 있다. 부호율 제어기 (126-2)는 제1블록(BL1)에 대한 양자화 파라미터(QP1)를 조정할 수 있고, 조정된 양자화 파라미터(QP1')를 생성할 수 있다.
부호율 제어기(126-2)는 현재 프레임(FI)에 포함된 블록들 각각에 대해 조정된 양자화 파라미터(QP=QP1'~QP16')를 인코더(126-3)로 전송할 수 있다.
부호율 제어기(126-2)는 수학식 4를 이용하여 블록들 각각에 대한 양자화 파라미터(QP)를 계산할 수 있다.
[수학식 4]
QP=(k2/31)*dn/r_seq
여기서, QP는 양자화 파라미터, k2는 제1상수, r_seq는 제2상수, 및 dn는 버퍼 포화도를 의미한다.
도 8은 도 7의 양자화 파라미터를 조정하기 위한 블록의 버퍼 포화도를 설명하기 위한 그래프이다. 도 4와 도 7과 도 8을 참조하면, EST는 현재 프레임에 포함된 블록별로 할당된 타겟 비트에 대한 함수를 나타내고, REAL은 상기 현재 프레임에 포함된 상기 블록별로 실제 사용된 비트 수에 대한 함수를 나타낸다.
dn은 현재 프레임에 포함된 n번째 블록의 버퍼 포화도를 의미할 수 있다.
부호율 제어기 (126-2)는 n번째 블록의 버퍼 포화도(dn)를 계산하기 위해, 인코더(126-3)로부터 이전 블록(n-1번째 블록)에 대한 인코딩(또는 부호화)에서 실제 사용된 비트 수 (BS)를 수신할 수 있다.
부호율 제어기 (126-2)는 수학식 5를 이용하여 버퍼 포화도(dn)를 계산할 수 있다.
[수학식 5]
dn=d0+BS-(ETB/TBL)*(n-1)
여기서, dn은 현재 블록(예컨대, n번째 블록)에 대한 버퍼 포화도, d0는 초기 버퍼 포화도, EB는 이전 블록에 대한 인코딩(또는 부호화)을 위해 할당된 타겟 비트, BS는 상기 이전 블록에 대한 인코딩(또는 부호화)에서 사용된 비트 수, ETB는 현재 프레임(FI)에 대한 인코딩(또는 부호화)을 위해 할당된 전체 타겟 비트, TBL은 현재 프레임(FI)에 포함된 전체 블록들의 개수, n은 현재 프레임에 포함된 현재 블록의 순서를 의미한다.
즉, 버퍼 포화도(dn)는 이전 블록에서 실제로 사용된 비트 수(BS)와 상기 이전 블록에서 할당된 타겟 비트(EB)의 차이를 의미한다.
도 9는 도 7의 양자화 파라미터를 조정하는 방법을 설명하기 위한 표이다.
도 4와 도 7과 도 9를 참조하면, k2와 r_seq는 현재 프레임(FI)에 대한 레이트 컨트롤 파라미터들에 포함될 수 있다. 따라서, 코덱 CPU(122)는 k2 값과 r_seq 값을 결정할 수 있다. 실시 예에 따라, k2와 r_seq는 상수 값이다.
부호율 제어기 (126-2)는 상수 k2와 상수 r_seq를 조정할 수 있고, 조정된 k2와 조정된 r_seq를 이용하여 양자화 파라미터(QP 또는 QP1~QP16)를 조정할 수 있다.
실시 예에 따라, 부호율 제어기 (126-2)는 일반 모드(normal mode(NM))에서는 상수 k2와 r_seq 값을 그대로 유지할 수 있다.
부호율 제어기 (126-2)는 플랫 모드(flat mode(FM_)에서는 k2값에 A1(A1>1)을 곱해주고, r_seq값에는 B1(B1<1)을 곱해줄 수 있다. 즉, 부호율 제어기 (126-2)는 k2값에 1보다 큰 값을 곱하여 k2값을 증가시킬 수 있다. 또한, 부호율 제어기 (126-2)는 r_seq값에 1보다 작은 값을 곱하여 r_seq값을 감소시킬 수 있다.
일반 모드(NM)는 부호율 제어기 (126-2)가 k2와 r_seq를 변경하지 않은 모드를 의미할 수 있고, 플랫 모드(FM)는 부호율 제어기 (126-2)가 k2와 r_seq를 변경하는 모드를 의미할 수 있다.
부호율 제어기 (126-2)는, 수학식 4를 이용하여, 조정된 양자화 파라미터(QP 또는 QP1'~QP16')를 계산할 수 있다.
부호율 제어기(126-2)는 현재 프레임(FI)에 포함된 블록들 각각에 대해 조정된 양자화 파라미터(QP 또는 QP1'~QP16')를 인코더(126-3)로 전송할 수 있다.
인코더(126-3)는, 양자화 파라미터(QP=QP1~QP16)를 이용하여, 현재 프레임 (FI)을 블록 단위로 인코딩(또는 부호화)할 수 있다. 또한, 인코더(126-3)는, 조정된 양자화 파라미터(QP=QP1'~QP16')를 이용하여, 현재 프레임(FI)을 블록 단위로 인코딩(또는 부호화)할 수 있다.
실시 예에 따라, 일반 모드(NM)에서 인코더(126-3)는, 변경되지 않은 양자화 파라미터(QP=QP1~QP16)를 이용하여, 현재 프레임(FI)을 블록 단위로 인코딩(또는 부호화)할 수 있다. 플랫 모드(FM)에서, 인코더(126-3)는, 변경된 양자화 파라미터(QP= QP1'~QP16')를 이용하여, 현재 프레임(FI)을 블록 단위로 인코딩(또는 부호화)할 수 있다.
인코더(126-3)는, 현재 프레임(FI)에 대한 인코딩이 완료되면, 인코딩 완료 신호(DI)를 코덱 CPU(122)로 전송할 수 있다. 인코딩 완료 신호(DI)는 인코더(126-3)에 의해 현재 프레임(FI)이 인코딩되는 동안 사용된 비트 수에 대한 정보를 포함할 수 있다.
인코더(126-3)는, 현재 프레임(FI)에 대한 인코딩(또는 부호화)이 완료되면, 부호화 된 현재 프레임(EI)을 코덱 메모리(128)로 저장할 수 있다.
도 10의 (a)는 일반 모드에서 작동하는 도 4의 인코더(126-3)에 의해 인코딩 된 프레임에 대한 비트 수를 나타내는 그래프이다.
도 10의 (a)의 그래프는 일반 모드에서 현재 프레임(예컨대, n번째 프레임)에 대한 인코딩 시에 사용된 비트 수(BIT1)를 나타낸다.
실시 예에 따라, 현재 프레임(예컨대, n번째 프레임)이 i-프레임일 때, 도 10의 (a)의 그래프는 상기 현재 프레임에 대한 인코딩 시에 사용된 비트 수(BIT1)를 나타낼 수 있다.
도 10의 (b)는 플랫 모드로 작동하는 도 4의 인코더(126-3)에 의해 인코딩된 프레임에 대한 비트 수(BIT2)를 나타내는 그래프이다.
도 10의 (b)를 참조하면, 도 10의 (b)의 그래프는 플랫 모드에서 현재 프레임(예컨대, n번째 프레임)에 대한 인코딩 시에 사용된 비트 수(BIT2<BIT1)를 나타낸다.
실시 예에 따라, 현재 프레임(예컨대, n번째 프레임)이 i-프레임일 때, 도 10의 (b)의 그래프는 현재 프레임에 대한 인코딩 시에 사용된 비트 수(BIT2)를 나타낼 수 있다.
도 10의 (a)와 도 10의 (b)를 참조하면, 일반 모드에서 현재 프레임을 인코딩하기 위해 필요한 비트 수는 플랫 모드에서 현재 프레임을 인코딩하기 위해 필요한 비트 수보다 많다. 즉, 현재 프레임(FI)을 인코딩하기 위해 필요한 비트 수는 플랫 모드에서 상당히 감소한다.
도 11은 도 4의 코덱 메모리가 포화될 때 코덱의 동작을 설명하기 위한 그래프이다. 도 4와 도 11을 참조하면, 코덱 CPU(122)는, 코덱 메모리(128)에 저장된 부호화 된 현재 프레임(EI)에 기초하여, 코덱 메모리(128)의 포화 여부를 체크하고 체크 신호(BF)를 생성할 수 있다.
코덱 메모리(128)에 저장된 부호화 된 프레임들의 비트 수가 현재 프레임 (FI)을 포함하는 GOP에 할당된 메모리 용량에 도달하면, 코덱 CPU(128)는 현재 프레임(FI)에 대한 인코딩을 종료할 수 있다.
실시 예에 따라, 코덱 CPU(122)는 현재 프레임(FI)을 포함하는 GOP에 할당된 전체 타겟 비트와 코덱 메모리(128)에 저장된 상기 GOP에 대한 부호화(또는 인코딩) 된 프레임들 (EI1~EIN)의 전체 비트 수를 비교할 수 있다.
코덱 메모리(128)가 가득 찬 경우, 코덱 CPU(122)는 GOP에 포함된 처리되지 않은 나머지 프레임들에 대한 인코딩을 종료할 수 있다. 예컨대, 코덱 CPU(128)는 코덱 메모리(128)의 포화도가 일정량 이하로 떨어질 때까지, 상기 나머지 프레임들에 대한 인코딩을 스킵(skip)할 수 있다. 상기 일정량은 사용자의 설정 또는 기설정된 기준에 의해 결정될 수 있다. 또한, 코덱 CPU (128)는 인코딩 종료 신호(DI)를 전처리 회로(110)로 전송할 수 있다.
코덱 메모리(128)가 가득 차지 않았을 때, 코덱 CPU(122)는 GOP에 포함된 처리되지 않은 나머지 프레임들에 대한 인코딩을 계속 수행할 수 있다.
도 12는 본 발명의 실시 예에 따른 일반 모드와 플랫 모드를 설명하기 위한 플로우 차트이다.
도 1, 도 4, 및 도 12를 참조하면, 코덱 CPU(122)는 현재 프레임(FI)에 대한 인코딩을 플랫 모드에서 수행할지 일반 모드에서 수행할지를 판단할 수 있다 (S101). CPU(130)는 판단의 결과를 코덱 CPU(122)로 전송할 수 있다.
코덱 CPU(122)는, 현재 프레임(FI)에 대한 인코딩이 일반 모드로 수행된다고 판단하면(S101의 No), 현재 프레임(FI)을 상기 일반 모드로 인코딩한다(S103).
비트율 예측기(126-1)는, 현재 프레임(FI)이 i-프레임인 경우, 이전 프레임을 포함하는 GOP에서 인코딩 후에 남은 비트 수를 이용하여 현재 프레임(FI)을 포함하는 GOP에 대한 전체 타겟 비트를 할당할 수 있다(S105). 예컨대, 이전 프레임을 포함하는 GOP에서 인코딩 후에 남은 비트 수는 현재 프레임(FI)을 포함하는 GOP에 대한 전체 타겟 비트에 추가로 할당 될 수 있다 (S105).
부호율 제어기(126-2)는 양자화 파라미터(QP)를 조정하지 않고 인코더(126-3)로 현재 프레임(FI)에 포함된 블록들 각각에 대해서 조정되지 않은 양자화 파라미터(QP)를 전송할 수 있다. 인코더(126-3)는 조정되지 않은 양자화 파라미터(QP)를 이용하여 현재 프레임(FI)을 인코딩할 수 있다(S107).
코덱 CPU(122)는, 현재 프레임(FI)에 대한 인코딩이 플랫 모드에서 수행된다고 판단되면, 현재 프레임(FI)을 상기 플랫 모드로 인코딩할 수 있다(S109).
도 13은 본 발명의 실시 예에 따른 플랫 모드에서 코덱의 동작을 설명하기 위한 플로우 차트이다. 도 4와 도 13을 참조하면, 코덱 CPU(122)는 현재 프레임 (FI)의 레이트 컨트롤 파라미터들을 결정할 수 있다(S201).
비트율 예측기(126-1)는, 현재 프레임(FI)이 i-프레임인 경우, 이전 프레임을 포함하는 이전 GOP에서 인코딩 후에 남은 비트 수에 관계없이, 현재 프레임(FI)을 포함하는 GOP에 대한 전체 타겟 비트를 할당할 수 있다(S203).
비트율 예측기(126-1)는 현재 프레임(FI)을 포함하는 GOP에 포함된 프레임들 각각에 대한 타겟 비트를 할당할 수 있다(S205).
부호율 제어기(126-2)는 현재 프레임(FI)의 레이트 컨트롤 파라미터들을 조정하고, 현재 프레임(FI)의 블록별로 양자화 파라미터를 조정할 수 있다(S207). 부호율 제어기 (126-2)는 조정된 양자화 파라미터(QP)를 인코더(126-3)로 전송할 수 있다.
인코더(126-3)는, 조정된 양자화 파라미터를 이용하여, 현재 프레임(FI)을 블록 단위로 부호화 할 수 있다(S209). 인코더(126-3)는, 현재 프레임(FI)에 대한 인코딩(또는 부호화)이 완료되면, 인코딩 종료 신호(DI)를 코덱 CPU(122)로 전송할 수 있다.
코덱 CPU(122)는 현재 프레임이 GOP의 마지막 프레임인지 여부를 판단할 수 있다(S211). 예컨대, 현재 프레임(FI)의 다음 프레임이 i-프레임인 경우, 현재 프레임(FI)은 상기 GOP의 마지막 프레임일 수 있다.
현재 프레임(FI)이 상기 GOP의 마지막 프레임인 경우, 비트율 예측기(126-1)는 다음 프레임을 포함하는 새로운 GOP에 대한 전체 타겟 비트를 할당할 수 있다.
현재 프레임(FI)이 상기 GOP의 마지막 프레임이 아닌 경우, 비트율 예측기 (126-1)는 상기 GOP에 대한 전체 타겟 비트를 할당하지 않고, 다음 프레임에 대한 타겟 비트를 예측할 수 있다.
도 14는 코덱 메모리가 포화된 경우 코덱의 동작을 설명하기 위한 플로우 차트이다. 도 4와 도 14를 참조하면, 인코더(126-3)는 현재 프레임(FI)을 인코딩할 수 있다(S301). 인코더(126-3)는, 현재 프레임(FI)에 대한 인코딩이 완료되고, 부호화 된 현재 프레임(EI)을 코덱 메모리(128)로 저장할 수 있다(S303).
코덱 CPU(122)는 코덱 메모리(128)의 포화 여부를 체크하고 체크 신호(BF)를 생성할 수 있다(S305). 코덱 CPU(122)는 코덱 메모리(128)에 저장된 부호화 된 프레임들의 비트 수와 GOP에 할당된 코덱 메모리(128)의 메모리 공간에 저장될 수 있는 전체 타겟 비트를 비교하고 비교 결과에 따라 포화 여부를 체크할 수 있다(S307).
코덱 메모리(128)가 포화되지 않은 경우, 인코더(126-3)는 현재 프레임(FI)의 다음 프레임을 인코딩할 수 있다(S307). 코덱 메모리(128)가 포화된 경우 코덱 CPU(122)는 상기 다음 프레임에 대한 인코딩을 스킵(skip)할 수 있다(S307). 코덱 CPU(122)는 코덱 메모리(128)의 포화도가 일정량 이하로 떨어질 때까지 남은 프레임들에 대한 인코딩을 스킵(skip)할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10, 10-1: 데이터 처리 시스템
50: 카메라
110: 전처리 회로
120: 코덱
122: 코덱 CPU
126: 하드웨어 블록
126-1: 비트율 예측기
126-2: 부호율 제어기
126-3: 인코더
128: 코덱 메모리
130: CPU
135: 애플리케이션
140: 제1메모리
180: 모뎀
200: 디스플레이
220: 제2메모리

Claims (10)

  1. 현재 프레임을 수신하고, 수신된 현재 프레임의 타입을 결정하고, 상기 현재 프레임의 레이트 컨트롤 파라미터(rate control parameter)들을 설정하는 코덱 CPU;
    상기 현재 프레임을 포함하는 제1GOP(group of picture)에 대한 전체 타겟 비트(target bit)를 할당하고, 결정된 현재 프레임의 타입과 설정된 레이트 컨트롤 파라미터들에 기초하여, 상기 제1GOP에 포함된 프레임들 각각에 대한 타겟 비트를 할당하는 비트율 예측기; 및
    상기 현재 프레임의 상기 레이트 컨트롤 파라미터들을 조정하고, 상기 비트율 예측기에 의해 할당된 프레임들 각각에 대한 타겟 비트와 조정된 레이트 컨트롤 파라미터들을 이용하여 상기 현재 프레임에 포함된 블록들 각각에 대한 양자화 파라미터를 생성하는 부호율 제어기를 포함하되,
    상기 비트율 예측기는,
    일반 모드에서 동작 할 때, 이전 프레임을 포함하는 제2GOP에서 인코딩 후에 남은 비트 수를 이용하여, 상기 제1GOP에 대해 전체 타겟 비트를 할당하고,
    플랫 모드에서 동작할 때, 상기 이전 프레임을 포함하는 상기 제2GOP에서 인코딩 후에 남은 비트 수에 관계없이, 상기 제1 GOP에 대해 전체 타겟 비트를 할당하고,
    상기 부호율 제어기는,
    상기 일반 모드에서 동작할 때, 상기 양자화 파라미터를 조정하지 않고,
    상기 플랫 모드에서 동작할 때, 상기 양자화 파라미터를 조정하는 코덱.
  2. 제1항에 있어서,
    상기 현재 프레임의 타입이 I-프레임(intra frame)인 경우,
    상기 비트율 예측기는, 이전 프레임을 포함하는 상기 제2GOP에 관계없이, 상기 제1GOP에 대한 전체 타겟 비트를 할당하고, 할당된 제1GOP에 대한 상기 전체 타겟 비트를 이용하여 상기 현재 프레임에 대한 타겟 비트를 할당하는 코덱.
  3. 제1항에 있어서,
    상기 현재 프레임의 타입이 I-프레임(intra frame)이 아닌 경우,
    상기 비트율 예측기는 상기 제1GOP에 대해 할당된 전체 타겟 비트와 상기 제1GOP에 포함된 이전 프레임들을 부호화하기 위해 사용한 비트 수의 차이를 이용하여 상기 현재 프레임에 대한 상기 타겟 비트를 할당하는 코덱.
  4. 제3항에 있어서,
    상기 비트율 예측기는, 제1GOP에 포함되고 처리되지 않은 프레임들의 개수에 기초하여, 상기 현재 프레임에 대한 상기 타겟 비트를 할당하는 코덱.
  5. 제1항에 있어서,
    상기 블록들 각각에 대한 상기 양자화 파라미터에 기초하여, 상기 현재 프레임을 부호화하고, 부호화 된 현재 프레임을 출력하는 인코더; 및
    상기 부호화 된 현재 프레임을 저장하는 코덱 메모리를 더 포함하고,
    상기 코덱 CPU는 상기 코덱 메모리에 저장된 상기 부호화 된 현재 프레임에 기초하여, 상기 코덱 메모리의 포화 여부를 체크하는 코덱.
  6. 제5항에 있어서,
    상기 코덱 메모리가 포화 된 경우에, 상기 코덱 CPU는 상기 제1GOP에 포함된 나머지 프레임들에 대한 부호화를 스킵(skip)하는 코덱.
  7. 제5항에 있어서,
    상기 부호율 제어기는 상기 현재 프레임에 포함된 상기 블록들 각각에 대한 상기 양자화 파라미터를 조정하고, 블록별로 조정된 양자화 파라미터를 상기 인코더로 전송하고,
    상기 인코더는 상기 블록별로 상기 조정된 양자화 파라미터를 이용하여 상기 현재 프레임에 포함된 상기 블록들 각각에 대한 부호화를 수행하는 코덱.
  8. 영상 데이터를 처리하고, 처리된 영상 데이터를 이용하여 현재 프레임을 생성하고 출력하는 전-처리 회로; 및
    상기 현재 프레임을 수신하고, 상기 현재 프레임을 부호화하는 코덱을 포함하고,
    상기 코덱은,
    현재 프레임을 수신하고, 수신된 현재 프레임의 타입을 결정하고, 상기 현재 프레임의 레이트 컨트롤 파라미터들을 설정하는 코덱 CPU;
    상기 현재 프레임을 포함하는 제1GOP(group of picture)에 대한 전체 타겟 비트를 할당하고, 결정된 현재 프레임의 타입과 설정된 레이트 컨트롤 파라미터들에 기초하여, 상기 제1GOP에 포함된 프레임들 각각에 대한 타겟 비트를 할당하는 비트율 예측기; 및
    상기 현재 프레임의 상기 레이트 컨트롤 파라미터들을 조정하고, 상기 비트율 예측기에 의해 할당된 프레임들 각각에 대한 타겟 비트와 조정된 레이트 컨트롤 파라미터들을 이용하여 상기 현재 프레임에 포함된 블록들 각각에 대한 양자화 파라미터를 생성하는 부호율 제어기를 포함하되,
    상기 비트율 예측기는,
    일반 모드에서 동작 할 때, 이전 프레임을 포함하는 제2GOP에서 인코딩 후에 남은 비트 수를 이용하여, 상기 제1GOP에 대해 전체 타겟 비트를 할당하고,
    플랫 모드에서 동작할 때, 상기 이전 프레임을 포함하는 상기 제2GOP에서 인코딩 후에 남은 비트 수에 관계없이, 상기 제1 GOP에 대해 전체 타겟 비트를 할당하고,
    상기 부호율 제어기는,
    상기 일반 모드에서 동작할 때, 상기 양자화 파라미터를 조정하지 않고,
    상기 플랫 모드에서 동작할 때, 상기 양자화 파라미터를 조정하는 시스템 온 칩.
  9. 제8항에 있어서,
    상기 블록들 각각에 대한 상기 양자화 파라미터에 기초하여, 상기 현재 프레임을 부호화하고, 부호화 된 현재 프레임을 출력하는 인코더; 및
    상기 부호화 된 현재 프레임을 저장하는 코덱 메모리를 더 포함하고,
    상기 코덱 CPU는 상기 코덱 메모리에 저장된 상기 부호화 된 현재 프레임에 기초하여, 상기 코덱 메모리의 포화 여부를 체크하는 시스템 온 칩.
  10. 영상 통화 애플리케이션이 실행되면, 영상 데이터를 생성하는 카메라 장치;
    상기 카메라 장치로부터 수신된 영상 데이터를 처리하고, 처리된 영상 데이터를 이용하여 현재 프레임을 생성하고 출력하는 전-처리 회로; 및
    상기 현재 프레임을 수신하고, 상기 현재 프레임을 부호화하는 코덱을 포함하고,
    상기 코덱은,
    현재 프레임을 수신하고, 수신된 현재 프레임의 타입을 결정하고, 상기 현재 프레임의 레이트 컨트롤 파라미터들을 설정하는 코덱 CPU;
    상기 현재 프레임을 포함하는 제1GOP(group of picture)에 대한 전체 타겟 비트를 할당하고, 결정된 현재 프레임의 타입과 설정된 레이트 컨트롤 파라미터들에 기초하여, 상기 제1GOP에 포함된 프레임들 각각에 대한 타겟 비트를 할당하는 비트율 예측기; 및
    상기 현재 프레임의 상기 레이트 컨트롤 파라미터들을 조정하고, 상기 비트율 예측기에 의해 할당된 프레임들 각각에 대한 타겟 비트와 조정된 레이트 컨트롤 파라미터 파라미터들을 이용하여 상기 현재 프레임에 포함된 블록들 각각에 대한 양자화 파라미터를 생성하는 부호율 제어기를 포함하되,
    상기 비트율 예측기는,
    일반 모드에서 동작 할 때, 이전 프레임을 포함하는 제2GOP에서 인코딩 후에 남은 비트 수를 이용하여, 상기 제1GOP에 대해 전체 타겟 비트를 할당하고,
    플랫 모드에서 동작할 때, 상기 이전 프레임을 포함하는 상기 제2GOP에서 인코딩 후에 남은 비트 수에 관계없이, 상기 제1 GOP에 대해 전체 타겟 비트를 할당하고,
    상기 부호율 제어기는,
    상기 일반 모드에서 동작할 때, 상기 양자화 파라미터를 조정하지 않고,
    상기 플랫 모드에서 동작할 때, 상기 양자화 파라미터를 조정하는 데이터 처리 시스템.
KR1020140164123A 2014-11-24 2014-11-24 코덱과 이를 포함하는 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 데이터 처리 시스템 KR102274747B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140164123A KR102274747B1 (ko) 2014-11-24 2014-11-24 코덱과 이를 포함하는 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 데이터 처리 시스템
US14/868,427 US9967573B2 (en) 2014-11-24 2015-09-29 Codec, system on chip (SOC) including the same, and data processing system including the SOC

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140164123A KR102274747B1 (ko) 2014-11-24 2014-11-24 코덱과 이를 포함하는 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 데이터 처리 시스템

Publications (2)

Publication Number Publication Date
KR20160061613A KR20160061613A (ko) 2016-06-01
KR102274747B1 true KR102274747B1 (ko) 2021-07-07

Family

ID=56011525

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140164123A KR102274747B1 (ko) 2014-11-24 2014-11-24 코덱과 이를 포함하는 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 데이터 처리 시스템

Country Status (2)

Country Link
US (1) US9967573B2 (ko)
KR (1) KR102274747B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190019925A (ko) * 2016-07-14 2019-02-27 삼성전자주식회사 영상을 부호화/복호화 하는 방법 및 그 장치
CN108063945B (zh) * 2017-12-21 2021-07-09 西北工业大学 一种基于元素类别的线性码率估计方法
CN110213585B (zh) * 2018-10-31 2022-10-28 腾讯科技(深圳)有限公司 视频编码方法、装置、计算机可读存储介质和计算机设备
CN109348244B (zh) * 2018-11-20 2021-05-18 浙江齐聚科技有限公司 视频编码参数的配置方法、装置、设备和存储介质
CN110139101B (zh) * 2019-06-20 2022-03-25 电子科技大学 一种基于λ域码率控制的帧级比特分配方法
CN110784718B (zh) * 2019-10-31 2021-07-20 广州市网星信息技术有限公司 视频数据编码方法、装置、设备和存储介质
US11843772B2 (en) * 2019-12-06 2023-12-12 Ati Technologies Ulc Video encode pre-analysis bit budgeting based on context and features
KR20220120400A (ko) 2021-02-23 2022-08-30 (주)솔빛시스템 엣지 인공지능의 표적 추론 방법
US11726949B2 (en) * 2021-05-28 2023-08-15 Samsung Electronics Co., Ltd. System and method for selectively reprocessing video streams based on system resources and stream status

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040114817A1 (en) * 2002-07-01 2004-06-17 Nikil Jayant Efficient compression and transport of video over a network

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2208950A1 (en) 1996-07-03 1998-01-03 Xuemin Chen Rate control for stereoscopic digital video encoding
US6212232B1 (en) 1998-06-18 2001-04-03 Compaq Computer Corporation Rate control and bit allocation for low bit rate video communication applications
US6850565B2 (en) 1998-12-18 2005-02-01 Intel Corporation Real time bit rate control system
US7277483B1 (en) 2000-04-18 2007-10-02 Ati International Srl Method and apparatus for rate control for constant-bit-rate finite-buffer-size video encoder
KR100341063B1 (ko) 2000-06-28 2002-06-20 송문섭 실시간 영상 통신을 위한 율제어 장치 및 그 방법
KR20040046055A (ko) * 2002-11-26 2004-06-05 엘지전자 주식회사 동영상 전송 비트율 조절방법
KR20040047009A (ko) 2002-11-28 2004-06-05 엘지전자 주식회사 영상 전화 시스템의 비트율 조절방법
KR100543608B1 (ko) * 2003-01-03 2006-01-20 엘지전자 주식회사 오브젝트 기반 비트율 제어방법 및 장치
KR100557618B1 (ko) * 2003-01-03 2006-03-10 엘지전자 주식회사 오브젝트 기반 비트율 제어방법 및 장치
KR100548243B1 (ko) 2003-02-07 2006-02-02 엘지전자 주식회사 휴대단말기의 영상신호 레이트 제어 전송 방법
TWI226198B (en) * 2003-08-08 2005-01-01 Lite On It Corp Method of buffer management in video encoder
KR100505699B1 (ko) * 2003-08-12 2005-08-03 삼성전자주식회사 실시간 가변 비트율 제어로 화질을 개선시키는 비디오인코더의 인코딩율 제어기, 이를 구비한 비디오 데이터전송 시스템 및 그 방법
KR101176213B1 (ko) 2005-08-23 2012-08-22 주식회사 케이티 화면내?프레임을 위한 부호율 제어 장치 및 그 방법
US8548048B2 (en) 2005-10-27 2013-10-01 Qualcomm Incorporated Video source rate control for video telephony
CN101594525B (zh) 2008-05-31 2011-08-10 华为技术有限公司 量化参数的获取方法、装置及转码器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040114817A1 (en) * 2002-07-01 2004-06-17 Nikil Jayant Efficient compression and transport of video over a network

Also Published As

Publication number Publication date
US20160150229A1 (en) 2016-05-26
US9967573B2 (en) 2018-05-08
KR20160061613A (ko) 2016-06-01

Similar Documents

Publication Publication Date Title
KR102274747B1 (ko) 코덱과 이를 포함하는 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 데이터 처리 시스템
KR102543444B1 (ko) 영상 부호화 장치
US10116943B2 (en) Adaptive video compression for latency control
TWI688260B (zh) 包括用於影像處理的編碼器之方法、系統及裝置
KR102212762B1 (ko) 코덱과 이를 포함하는 장치들
CN109672890B (zh) 视频编码器件及编码器
US10009617B2 (en) Method of operating encoder and method of operating system on chip including the encoder
TWI791578B (zh) 視訊編碼裝置
US10506233B2 (en) Encoder for determining quantization parameter adaptively and application processor having the same
US20170013262A1 (en) Rate control encoding method and rate control encoding device using skip mode information
US10694178B2 (en) Video processing device for encoding frames constituting hierarchical structure
TWI785073B (zh) 多重轉碼器編碼器及多重轉碼器編碼系統
US20130235924A1 (en) Electronic apparatus and method for encoding

Legal Events

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