KR20130032807A - 동영상 부호화 장치 및 방법 - Google Patents

동영상 부호화 장치 및 방법 Download PDF

Info

Publication number
KR20130032807A
KR20130032807A KR1020110104083A KR20110104083A KR20130032807A KR 20130032807 A KR20130032807 A KR 20130032807A KR 1020110104083 A KR1020110104083 A KR 1020110104083A KR 20110104083 A KR20110104083 A KR 20110104083A KR 20130032807 A KR20130032807 A KR 20130032807A
Authority
KR
South Korea
Prior art keywords
encoding
pass
nth
complexity
gop
Prior art date
Application number
KR1020110104083A
Other languages
English (en)
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 KR20130032807A publication Critical patent/KR20130032807A/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/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/436Methods 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 using parallelised computational arrangements
    • 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/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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • H04N19/194Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
    • 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/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/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 동영상 부호화 장치 및 방법에 관한 것으로, 본 발명의 일 실시 예에 따른 동영상 부호화 장치는 복잡하고 시간에 민감한 프로세서 간 통신을 요구하지 않으면서, 병렬로 고해상도 비디오를 인코딩할 수 있다.

Description

동영상 부호화 장치 및 방법{Method and apparatus for encoding a moving picture}
본 발명은 동영상 부호화 장치 및 방법에 관한 것이다.
일반적으로, 비디오 데이터는 텍스트 데이터나 음성 데이터 등에 비하여 그 데이터 량이 크기 때문에 저장 또는 전송 시에 압축을 통하여 용량을 줄이는 작업이 요구된다. 비디오 코덱은 비디오 데이터를 압축 부호화하고 압축 부호화된 비디오 데이터를 복원하기 위한 장치로서, 현재 MPEG-1, MPEG-2, H.263 및 H.264/MPEG-4 등 다양한 규격을 만족하는 비디오 코덱들이 널리 사용되고 있다.
그 중 H.264는 뛰어난 압축률과 화질을 제공하기 때문에, 모바일 TV, 인터넷 또는 웹 TV 그리고 케이블 TV에 이르기까지 다양한 분야에 사용되기 위해 개발되고 있다. 하지만, H.264는 기존 MPEG-4에 비해 복잡도가 매우 높기 때문에 싱글 CPU 또는 싱글 코어(Core)를 이용해서 구현하는 데는 큰 어려움이 있다.
이러한 경우 다수의 프로세서 또는 다수의 CPU를 사용하여 병렬적으로 처리하는 것을 고려할 수 있는데, 한정된 자원으로 다수의 CPU를 사용할 때, 고 해상도의 비디오를 인코딩하는 것은 어려운 문제점을 야기한다. 예를 들면 하나의 CPU가 이미지의 일 부를 처리하고, CPU들이 하나의 비디오 프레임을 완성하기 위해, 서로 통신하는 것인데, 이는 프로세서 간 통신 능력을 요구한다. 하지만, 이는 프로세서 간 통신의 복잡성 때문에 한정되거나 이용하기 어렵고, 고 해상도 비디오를 지원하는데 장애가 된다.
본 발명의 일 실시 예는 복잡하고 시간에 민감한 프로세서 간 통신을 요구하지 않으면서, 병렬로 고해상도 비디오를 인코딩하는 동영상 부호화 장치 및 방법을 제공하는 것이다.
본 발명의 다른 실시 예는 슬라이딩 윈도우 방식으로 2패스 인코딩을 구현하면서, 1패스 인코딩에서는 완전한 인코딩 프로세스가 아닌 러프한 인코딩을 구현하여 영상의 복잡도에 따라 비트 레이트를 조절할 수 있는 동영상 부호화 장치 및 방법을 제공하는 것이다.
상기 기술적 과제를 달성하기 위한, 본 발명의 일 실시 예에 따른 동영상을 부호화하는 장치는 입력 비디오 영상에 대해 제1 패스 인코딩을 수행하는 제1 패스 인코더; 및 상기 제1 패스 인코더로부터 제1 GOP 내지 제N GOP (N은 2 이상의 양의 정수)를 입력받아, 상기 제1 GOP 내지 제N GOP를 각각 인코딩하는 제1 내지 제N 프로세서를 포함하는 제2 패스 인코더를 포함하되,
상기 제1 내지 제N 프로세서는 1/N 속도로 인코딩을 수행하고, 상기 제1 내지 제N GOP를 인코딩한 인코딩 결과를 각각 상기 제1 패스 인코더에 피드백하는 것을 특징으로 한다.
상기 제1 패스 인코더는 상기 제1 GOP 내지 제N GOP에 대한 각각의 GOP 및 각각의 프레임에 대한 타겟 비트를 상기 제1 내지 제N 프로세서에 전송하는 것을 특징으로 한다.
상기 제1 패스 인코더는 상기 제1 GOP 내지 제N GOP에 대한 각각의 GOP의 최초 I 프레임에 대한 타겟 양자화 파라미터(QP)를 상기 제1 내지 제N 프로세서에 전송하는 것을 특징으로 한다.
상기 제1 패스 인코더는 상기 제1 GOP 내지 제N GOP에 대한 타겟 버퍼 레벨을 상기 제1 내지 제N 프로세서에 전송하는 것을 특징으로 한다.
상기 동영상 부호화 장치는 상기 제1 GOP 내지 제N GOP를 각각 인코딩한 인코딩 스트림들을 하나의 스트림으로 생성하는 직렬화부를 더 포함하는 것을 특징으로 한다.
상기 제1 패스 인코더는 상기 제1 내지 제N 프로세서로부터 전송된 지연된 인코딩 결과들을 저장하기 위한 버퍼들을 더 포함하는 것을 특징으로 한다.
상기 제1 내지 제N 프로세서는 상기 제1 GOP 내지 제N GOP를 각각 1/N 속도로 병렬적으로 인코딩을 수행하는 것을 특징으로 한다.
상기 제1 패스 인코더 또는 상기 제2 패스 인코더는 슬라이딩 윈도우를 이동시키면서 인코딩하는 것을 특징으로 한다.
상기 제1 패스 인코더는 상기 입력 비디오 영상의 YUV 영상에 대해 복잡도를 계산하고, 상기 복잡도를 이용하여 타겟 비트, 타겟 양자화 파라미터를 계산하고, 상기 계산한 복잡도, 타겟 비트, 타겟 양자화 파라미터를 상기 제2 패스 인코더에 전송하는 것을 특징으로 한다.
상기 제2 패스 인코더는 상기 제1 패스 인코더로부터 전송된 복잡도, 타겟 비트, 타겟 양자화 파라미터를 이용하여 인코딩하고, 인코딩한 결과에 따라 계산된 복잡도, 실제 사용 비트, 실제 양자화 파라미터를 상기 제1 패스 인코더에 피드백하는 것을 특징으로 한다.
상기 제1 패스 인코더는 상기 제2 패스 인코더로부터 피드백된 복잡도, 실제 사용 비트, 실제 양자화 파라미터를 이용하여, 상기 복잡도, 상기 타겟 비트, 상기 타겟 양자화 파라미터를 보정하는 것을 특징으로 한다.
상기 다른 기술적 과제를 달성하기 위한, 본 발명의 다른 실시 예에 따른 동영상 부호화 방법은 입력 비디오 영상에 대해 제1 패스 인코딩을 수행하는 제1 인코딩 단계; 및 제1 GOP 내지 제N GOP (N은 2 이상의 양의 정수)를 입력받아, 상기 제1 GOP 내지 제N GOP를 각각 인코딩하는 제2 인코딩 단계를 포함하되,
상기 제2 인코딩 단계는 1/N 속도로 인코딩을 수행하고, 상기 제1 내지 제N GOP를 인코딩한 인코딩 결과를 각각 상기 제1 인코딩 단계에 피드백하는 것을 특징으로 한다.
상기 제1 인코딩 단계는 상기 제1 GOP 내지 제N GOP에 대한 각각의 GOP 및 각각의 프레임에 대한 타겟 비트를 전송하는 것을 특징으로 한다.
상기 제1 인코딩 단계는 상기 제1 GOP 내지 제N GOP에 대한 각각의 GOP의 최초 I 프레임에 대한 타겟 양자화 파라미터(QP)를 전송하는 것을 특징으로 한다.
상기 제1 인코딩 단계는 상기 제1 GOP 내지 제N GOP에 대한 타겟 버퍼 레벨을 전송하는 것을 특징으로 한다.
상기 동영상 부호화 방법은 상기 제1 GOP 내지 제N GOP를 각각 인코딩한 인코딩 스트림들을 하나의 스트림으로 생성하는 단계를 더 포함하는 것을 특징으로 한다.
상기 제1 패스 인코딩 단계 또는 상기 제2 패스 인코딩 단계는 슬라이딩 윈도우를 이동시키면서 인코딩하는 것을 특징으로 한다.
상기 제1 패스 인코딩 단계는 상기 입력 비디오 영상의 YUV 영상에 대해 복잡도를 계산하고, 상기 복잡도를 이용하여 타겟 비트, 타겟 양자화 파라미터를 계산하고, 상기 계산한 복잡도, 타겟 비트, 타겟 양자화 파라미터를 상기 제2 패스 인코딩 단계에 전송하는 것을 특징으로 한다.
상기 제2 패스 인코딩 단계는 상기 제1 패스 인코딩 단계로부터 전송된 복잡도, 타겟 비트, 타겟 양자화 파라미터를 이용하여 인코딩하고, 인코딩한 결과에 따라 계산된 복잡도, 실제 사용 비트, 실제 양자화 파라미터를 상기 제1 패스 인코더에 피드백하는 것을 특징으로 한다.
상기 제1 패스 인코딩 단계는 상기 제2 패스 인코딩 단계로부터 피드백된 복잡도, 실제 사용 비트, 실제 양자화 파라미터를 이용하여, 상기 복잡도, 상기 타겟 비트, 상기 타겟 양자화 파라미터를 보정하는 것을 특징으로 한다.
상기 또 다른 기술적 과제를 달성하기 위한, 본 발명의 또 다른 실시 예에 다른 상기 동영상 부호화 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
본 발명의 일 실시 예에 따른 동영상 부호화 장치는 복잡하고 시간에 민감한 프로세서 간 통신을 요구하지 않으면서, 병렬로 고해상도 비디오를 인코딩할 수 있다.
도 1은 종래기술에 따른 H.264 기반의 동영상 인코더의 개략도이다.
도 2는 본 발명의 일 실시 예에 따른 동영상 부호화 장치(200)의 개략도이다.
도 3은 도 2에 도시된 동영상 부호화 장치(200)의 동작을 설명하기 위한 도면이다.
도 4는 본 발명의 다른 실시 예에 따른 동영상 부호화 장치(400)의 개략도이다.
도 5는 도 4에 도시된 동영상 부호화 장치(400)의 부호화 동작을 설명하기 위한 도면이다.
도 6은 본 발명의 다른 실시 예에 따른 동영상 부호화 방법을 설명하기 위한 흐름도이다.
이하, 첨부한 도면들을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩트리지 않도록 생략될 수 있다.
또한, 이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 본 발명을 가장 적절하게 표현할 수 있도록 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야 한다.
일반적인 비디오 코덱은 영상 내의 공간적인 중복성 및 시간적인 중복성을 제거하고, 이를 약속된 비트열로 표시하여 훨씬 짧은 길이로 표시함으로써 방대한 량의 비디오 데이터를 압축 부호화한다. 예를 들면 비디오 코덱은 영상 내의 공간적인 중복성을 제거하기 위하여 사람 눈에 민감하지 않으면서도 많은 정보량을 차지하는 고주파 성분을 DCT(Discrete Cosine Transform) 변환 및 양자화를 통하여 제거한다. 또 프레임 간의 유사성을 탐지하여 유사한 부분의 데이터는 전송하지 않고 그에 해당하는 움직임 벡터 정보 및 움직임 벡터로 표시했을 때 발생하는 오차성분을 전송함으로써 시간적인 중복성, 즉 프레임 간의 유사성을 제거한다. 또한, 비디오 코덱은 자주 발생하는 비트열에 짧은 코드값을 할당하는 가변장 코드(VLC : Variable Length Code)기술을 사용하여 전송되는 데이터의 량을 줄이는 처리를 한다.
이러한 비디오 코덱은 영상의 압축 부호화 및 복호화 시 다수 개의 화소들로 이루어진 블록, 예컨대 매크로블록(MB : Macro Block) 단위로 데이터를 처리한다. 예를 들어, 영상의 압축 부호화 시에는, 블록 단위로 DCT 변환, 양자화 등과 같은 일련의 단계들을 수행한다. 그런데 이러한 과정을 거친 압축 부호화된 영상을 부호화하여 복원하면 필연적으로 블로킹(Blocking) 현상에 의한 왜곡이 발생한다. 여기서 블로킹 현상이란 양자화 과정에서 발생하는 입력 영상의 손실, 블록 경계 부근에서 인접하는 블록 간의 화소 값의 차이 등으로 인하여, 복원된 영상에서 블록 간의 경계가 사람의 눈으로 인지할 정도로 단절되게 나타나는 현상을 의미할 수 있다.
따라서 영상의 압축 부호화 또는 복호화 시에는 블로킹 현상으로 인한 왜곡을 제거하기 위하여 디블록킹 필터(De-Block Filter)를 사용한다. 디블록킹 필터는 복호화되는 매크로블록 간의 경계부분을 부드럽게 함으로써 복원되는 영상의 화질을 향상시킬 수 있다. 이러한 디블록킹 필터에 의하여 처리된 프레임 영상은 미래 프레임의 움직임 보상 예측을 위해 사용되거나 재생을 위하여 디스플레이 장치로 전달된다.
도 1은 종래기술에 따른 동영상 부호화 장치(100)의 개략도이다.
도 1을 참조하면, 동영상 부호화 장치(100)는 움직임 예측부(110), 움직임 보상부(120), 변환 및 양자화부(130), 부호화부(140), 역변환 및 역양자화부(150), 디블록킹필터(160), 기준 프레임 버퍼(170)를 포함한다. 여기서, 동영상 부호화 장치라는 용어에 한정되지 않고, 동영상 인코더, 비디오 인코더, 비디오 코덱 등을 포함하며, 여기서는 동영상 부호화 규격으로 H.264를 중심으로 설명하지만, 이에 한정되지 않는다. 또한, 동영상 부호화 장치(100)에 입력되는 소스 이미지는 매크로 블록 단위로 처리되며, 각 매크로블록은 16×16 휘도 샘플 및 이와 관련된 색차 샘플(8×8 Cb와 8×8 Cr 샘플)을 포함할 수 있지만, 매크로블록을 구성하는 픽셀들의 수에 한정되는 것은 아니다. 또한, 디블록깅필터(160)는 부호화장치의 특성에 따라 제외할 수도 있다.
움직임 예측부(110)는 소스 이미지와 가장 유사한 위치를 찾는 탐색을 수행한다.
움직임 보상부(120)는 기준 프레임 버퍼(170)에서 해당 움직임 벡터가 가리키는 부분을 찾아온다. 이 과정을 움직임 보상(Motion Compensation)이라고 한다. 기준 프레임 버퍼(170)에는 이전에 인코딩된 프레임이 저장되어 있다.
변환 및 양자화부(130)는 움직임 보상 결과와 소스 이미지와의 차이를 변환(Transform)하고 양자화(Quantization)한다. 여기서, 변환은 DCT를 이용할 수 있다.
부호화부(140)는 각각의 매크로블록의 계수, 움직임 벡터 및 관련된 헤더 정보를 엔트로피 부호화하여 압축 스트림을 출력한다. 여기서, 엔트로피 부호화는 가변장 부호화(Variable Length Coding)를 이용할 수 있다.
역변환 및 역양자화부(150)는 변환과 양자화 결과를 다시 반대의 과정을 거쳐 역변환(Inverse Transform)과 역양자화(Inverse Quantization)를 수행한다. 그리고 움직임 보상된 결과와 더해지게 되고, 마지막으로 디블록킹 필터(160)를 거쳐 복원 이미지(Reconstructed Image)가 생성된다. 여기서, 복원 이미지는 기준 프레임 버퍼(170)에 입력되어, 다음에 입력되는 소스 이미지들의 기준 이미지로 사용되게 된다. 디블록킹 필터(160)는 블록 왜곡현상을 감소시키기 위해 각각의 디코딩된 매크로 블록에 적용한다. 디블록킹 필터(160)는 인코더, 즉 미래의 예측을 위해 매크로블록을 복원하고 저장하기 전에 적용된다. 디코더 측면에서는 매크로블록을 복원하고 디스플레이 또는 전송하기 전에 역변환 후에 적용된다. 필터는 블록의 가장자리를 부드럽게 하여 디코딩된 프레임의 화질을 향상시킨다. 필터링된 이미지는 미래 프레임의 움직임 보상 예측을 위해 사용될 수 있는데, 필터링된 이미지는 블록 현상이 있는 필터링되지 않은 이미지보다 원본 프레임에 더 충실하게 복원된 것이기 때문에 압축 성능을 향상시킨다.
전술한 부호화 및 복원 이미지 생성 과정은 H.264뿐만 아니라 MPEG-4, MPEG-2, H.263에도 적용된다.
도 2는 본 발명의 일 실시 예에 따른 동영상 부호화 장치(200)의 개략도이다.
도 2를 참조하면, 동영상 부호화 장치(200)는 제1 패스 인코더(210) 및 제1 프로세서(221), 제2 프로세서(222) 및 제N 프로세서(223)를 포함하는 제2 패스 인코더(220) 및 직렬화부(230)를 포함한다. 여기서, N은 2 이상의 양의 정수이며, 동영상 부호화 장치(200)의 성능 및 사양에 따라 결정될 수 있다. 본 발명의 일 실시 예에 따른 동영상 부호화 장치(200)는 제1 패스 인코더(210)에서 입력 비디오 신호를 제1 패스 인코딩을 수행한다. 제1 패스 인코딩은 완전한 인코딩이 아니며, 저비용 2 패스 인코딩 기법을 이용할 수 있다.
제1 패스 인코딩은 제N 개의 GOP 단위로 분할하여, 각각의 GOP를 인코딩하기 위한 비트를 할당한다. 그리고, 각각의 GOP의 최초 I 프레임에 대한 양자화 파라미터(QP)를 할당하고, 디코더의 비디오 버퍼에 대한 버퍼 레벨을 예측한다. MPEG 2/4에서는 I 프레임에서 다음 I 프레임직전까지의 프레임들을 한 묶음, 즉 GOP로 정의하지만, H.264에서는 IDR 프레임에서 다음 IDR 프레임 직전 프레임까지의 프레임들을 한 묶음, 즉 GOP로 정의한다. 대부분의 인코더에서 IDR에서 다음 IDR까지의 간격을 고정하여 모든 GOP가 같은 프레임 수를 갖도록 구현한다.
제2 패스 인코더(220)는 제1 패스 인코더(210)로부터 픽처 그룹(GOP)을 입력받아 인코딩한다. 제2 패스 인코더(220)는 제1 프로세서(221), 제2 프로세서(222) 및 제N 프로세서(223)를 포함할 수 있으며, 그 수에 한정되는 것은 아니다. 각각의 프로세서는 1/N 속도로 인코딩을 수행하고, 인코딩 결과를 각각 상기 제1 패스 인코더(210)에 각각 피드백한다. 여기서, 1/N 속도는 실시간 인코딩 시간의 1/N 속도이므로, 3개의 프로세서로 처리하는 경우에는 각각의 프로세서는 1/3 속도로 인코딩을 수행한다.
제1 패스 인코더(210)는 각각의 프로세서들(221 내지 223)에 입력되는 YUV 영상 신호에 대해 GOP 단위로 제2 패스 인코더(220)에 입력한다. 여기서, 제1 내지 제N GOP로 분할되어 각각의 제1 내지 제N 프로세서(221 내지 223)에 입력된다. 여기서, 제1 내지 N GOP의 GOP 내의 I 픽처, P 픽처, 및 B 픽처의 배열은 서로 동일하거나 다를 수 있다. I 픽처는 공간적인 반복성에 대한 것이고, P 와 B 픽처는 시간적인 반복성에 대한 것이다. 즉, 다양한 구조의 GOP가 가능하며, 예를 들면 I_BB_P_BB_P_BB_P_BB_P_BB_ 의 순서로 15개의 프레임이 하나의 GOP를 구성하거나 이와 유사하게 12개의 프레임으로 만들어진 GOP도 사용할 수 있다. GOP 구조의 I, P, B 프레임의 구성 비율은 비디오 스트림의 성격, 출력 스트림이 가져야 하는 대역폭(bandwidth)등에 따라 정해진다. 인코딩에 걸리는 시간도 비율을 결정하는 한 요소이다. 예를 들면 실시간으로 전송해야 하는 경우에 인코딩에 동원되는 자원은 한정되어 있으며, B 픽처가 많이 들어간 스트림은 I 픽처만으로 이루어진 스트림에 비해 인코딩에 3배 정도의 시간이 들 수 있다.
제1 내지 제N 프로세서(221 내지 223)은 제1 패스 인코더(210)로부터 전송된 제1 내지 제N GOP를 인코딩하여 제1 내지 제N 인코딩 스트림을 출력한다. 여기서, 제1 내지 제N 프로세서(221 내지 223)는 동시에 전송받은 하나의 GOP에 대해서 병렬적으로 인코딩을 수행한다. 그리고, 각각의 프로세서(221 내지 223)에서의 인코딩 결과를 다시 제1 패스 인코더(210)에 전송하고, 제1 패스 인코더(210)는 다음 비디오 입력에 대해 전송받은 인코딩 결과를 이용하여 제1 패스 인코딩을 수행한다.
직렬화부(230)는 제1 내지 제N 인코딩된 스트림을 하나의 스트림으로 생성하여 출력한다.
도 3은 도 2에 도시된 동영상 부호화 장치(200)의 동작을 설명하기 위한 도면이다.
도 3을 참조하면, 제1 패스 인코더(210)와 제1 프로세서(221)가 도시되어 있다. 제1 패스 인코더(210)는 제1 GOP, 제1 GOP에 대한 타겟 비트, 제1 GOP내의 최초 I 프레임에 대한 타겟 QP, 타겟 VBV(video beffer verification) 레벨을 제1 프로세서(221)에 전송한다.
제1 패스 인코더(210)는 인터/인트라 예측을 입력 프레임들에 대해 행하여 각 프레임들의 복잡도(complexity)를 찾는다. 그리고, 각 프레임들의 복잡도가 찾아 지면 이에 따라 윈도우에 할당된 전체 비트 수를 가지고 각 프레임에 필요한 타겟 비트 수를 계산한다. 그리고, 다음 수학식 1에 따라 타겟 QP를 계산한다.
[수학식 1]
타겟 QP= f(complexity, target bits)
여기서, f(complexity, target bits)은 주어진 프레임에 복잡도에 대해 타겟 비트를 사용할 경우 필요한 QP가 얼마인지를 계산한다. 또한, 제1 프로세서(221)로부터 피드백이 없는 동안은 테스트를 통해 룩업 테이블을 참조하여 QP를 예측할 수도 있다.
제1 패스 인코더(210)는 제1 프로세서(221)로부터 피드백이 있게 되면 다음 수학식 2에 따라 타겟 QP를 보정한다.
[수학식 2]
타겟 QP=f(complexity, complexity_f, QP, QP_f, target bits, target bits_f)
제1 패스 인코더(210)는 VBV레벨을 예측하는데, 이러한 예측은 제1 프로세서(221)로부터 피드백된 인코딩 결과, 즉 타겟 비트에 따라 인코딩을 수행한다고 가정한 상태에서 예측한다. 예를 들면, GOP가 시작할 때 예측된 또는 주언진 시작 VBV와 마지막 VBV를 제1 프로세서(221)에 주게 되면 제1 프로세서(221)는 주어진 VBV예측 값 내에서 실제로 인코딩을 수행하여 예측된 값과 실제 값의 오차를 최대한 줄인다.
GOP가 시작할 때 목표 QP 값은 GOP간의 화질의 연속성을 유지하기 위해 사용된다. 즉 이전 GOP의 마지막 프레임과 다음 GOP의 첫 프레임의 QP의 차이가 너무 많이 나는 경우 화질에 심각한 영향을 줄 수 있으므로 인코더가 시작할 때 목표 QP값을 사용하여 처음 프레임의 인코딩을 수행한다.
이 때 결과가 타겟 비트 수에 근접하면 QP값을 수정하여 재 인코딩을 하되 어느 타겟 비트수를 만족시키는 QP값이 목표 QP값과 어느 이상 차이가 나면 더 이상 QP값을 바꾸지 않는다.
제1 프로세서(221)는 전송된 비트, I 프레임에 대한 QP, 및 VBV 레벨을 이용하여 제1 GOP를 인코딩한다. 제1 프로세서(221)는 전송된 제1 GOP에 대한 비트량을 할당하여 인코딩하며, 매크로블록 단위로 인코딩을 수행한다. 그리고, GOP 내의 최초 I 프레임에 대한 양자화 파라미터값(QP)을 전송받아, 양자화 과정을 수행한다. 양자화 수행시에 양자화 파라미터값(QP)이 크면 양자화된 값들의 범위가 작으므로 압축 성능은 높지만 양자화된 값들이 원래 신호 값과의 차이가 커서 화질이 좋지 않다. 반대로 양자화 파라미터값이 작으면 양자화된 값들이 원래의 신호 값과는 보다 근접하지만 양자화된 값들의 범위가 크기 때문에 압축 성능이 좋지 않다. 따라서, 제1 패스 인코더(210)로부터 전송된 해당 GOP의 최초 I 프레임에 대한 양자화 파라미터값을 기초로 양자화를 수행한다.
또한, 제1 프로세서(221)가 제1 GOP를 인코딩할 때, 디코더의 비디오 버퍼가 오버런(overrun) 또는 언더런(underrun)되지 않기 시작하는 버퍼 레벨을 확인하고, 인코딩을 하여야 한다. 이를 위해, 제1 프로세서(221)는 제1 패스 인코더(210)가 전송한 VBV 레벨을 참조하여 인코딩을 수행한다.
제1 패스 인코더(210)는 제1 패스 인코딩을 수행하는 동안, 제1 GOP에 대해 매 프레임마다 비트를 할당하고, 제1 GOP의 마지막 프레임에서 VBV 레벨을 측정한다.
제1 패스 인코더(210)는 제1 패스 인코딩의 결과를 기초로 타겟 QP를 예측한다. 그리고, 이러한 예측은 제1 프로세서(221)가 GOP 기반의 인코딩을 수행하고, 인코딩 결과를 제1 패스 인코더(210)에 피드백함으로써 더욱 정확하게 예측한다.
여기서, 제1 프로세서(221)에서 제1 패스 인코더(210)로 피드백되는 정보는 제1 프로세서(221)가 GOP를 인코딩하는 데 실제 사용된 QP, 실제 사용한 비트 수 실제 인코딩 복잡도(complexity)를 포함한다. 그리고, 이러한 피드백 정보들은 제1 패스 인코더(210)가 타겟 QP, 타겟 비트 수를 예측하는데 사용된다.
제1 패스 인코더(210)가 영상의 복잡도를 예측하기 위해 다음 수학식 3에 따라 복잡도를 보정한다.
[수학식 3]
보정된 복잡도(complexity) = f(입력 complexity, 피드백된 complexity)
여기서, 보정은 과거에 입력상의 복잡도가 얼마일 때 제1 프로세서(221)에서 피드백된 복잡도가 얼마였다는 관계를 이용해서 현재 입력 상의 복잡도가 얼마이므로 보정을 어느 정도하게 된다는 것으로 이루어진다.
또한, 보정된 목표 비트수는 보정된 복잡도와 피드백된 타겟 비트 수의 함수로서 결정되고, 상기 수학식 1은 다음 수학식 4와 같이 수정된다.
[수학식 4]
목표 QP = f( 보정된 complexity,보정된 목표 비트수, 피드백된 QP)
또한, 제1 패스 인코더(210)에서 보정의 정확도를 높이기 위해 인트라 블록 카운트 또는 제로 모션 벡터 카운트를 포함하는 정보들이 피드백이 되어 위의 함수들에 인자로 들어갈 수 있다. 여기서, 인트라 블록 카운트는 인트라 블록으로 결정된 블록의 수, 즉 모션으로 찾아진 블록보다 인트라 예측으로 결정된 블록의 수를 의미하며, 주로 장면 전환이나 움직임이 아주 빠를 때 인트라 블록의 수가 증가한다. 제로 모션 벡터 카운트는 모션 벡터 값이 0인 블록의 수를 의미하며, 이전 프레임에 비해 영상이 얼마나 움직임이 있었는가에 대한 척도를 나타낸다.
이러한 정보들은 제1 패스 인코더(210)에서의 예측과 제1 프로세서(221)에서의 결과가 차이가 났을 때 어떤 요인으로 차이가 생겼는지에 대한 정보를 주어서 제1 패스 인코더(210)에서의 다음 예측에 반영하여 제1 패스 인코딩의 효율을 높일 수 있다.
제1 프로세서(221)는 실시간보다 늦은 1/N 속도로 인코딩을 수행하기 때문에, 제1 프로세서(221)로부터의 피드백이 지연되고, 제1 패스 인코더(210)는 이러한 지연된 인코딩 결과를 이용하기 위해서 과거 정보를 버퍼링할 수 있는 버퍼를 포함할 수 있다.
도 3을 참조하여 동영상 부호화 장치(200)의 동작을 제1 패스 인코더(210)와 제1 프로세서(221)에 대해서 설명하였지만, 제2 내지 제N GOP를 인코딩하는 제2 내지 제N 프로세서(222 내지 223)도 전술한 설명이 동일하게 적용될 수 있음은 물론이다.
도 4는 본 발명의 다른 실시 예에 따른 동영상 부호화 장치(400)의 개략도이다. 도 5는 도 4에 도시된 동영상 부호화 장치(400)의 부호화 동작을 설명하기 위한 도면이다.
도 4 및 5를 참조하면, 제1 패스 인코더(410)와 제2 패스 인코더(420)가 각각 도시되어 있으며, 각각의 인코더는 슬라이딩 윈도우(500 및 510)를 통해 제1 내지 제n 프레임을 부호화한다. 여기서, 슬라이딩 윈도우(500 및 510)는 비트 레이트를 조절하기 위해 먼저 일정한 크기, 예를 들면 CBR(Constant Bit Rate)의 경우 1초 이하 또는 VBR(Variable Bit Rate)의 경우 1초 이상으로 크기를 정한다. 그리고, 정해진 윈도우의 크기만큼을 시간상으로 이동시키면서 윈도우에 속한 프레임들을 인코딩한다.
제1 패스 인코더(410)는 입력 프레임들의 복잡도(C)를 구하는 과정을 수행한다. 예를 들면 H.264에서 사용하는 인터/인트라 예측을 수행한다. 하지만, 여기서 인터/인트라 예측은 복원된 영상과 현재 영상과의 예측 또는 움직임 추정이 아니라, 현재 입력 영상의 YUV상에서만 복잡도를 계산하는 것이다. 또한, 제1 패스 인코더(210)는 계산한 복잡도(C)를 이용하여 타겟 비트(Tb)와 타겟 양자화 파라미터(Qp)를 계산한다. 타겟 비트(Tb)는 다음 수학식 5를 이용하여 계산할 수 있다.
[수학식 5]
Tb(i)=C(i)*Bw(n)/Cw(n)
여기서, Tb(i)는 n 크기의 윈도우의 i번째 타겟 비트이고, C(i)는 i번째 프레임의 복잡도이고, Bw(n)은 n 크기의 윈도우의 이용 가능한 비트이고, Cw(n)은 n 크기의 윈도우의 전체 복잡도이다. 또한, 타겟 비트(Tb)와 복잡도(c)를 계산하면, 상기 수학식 1를 이용하여 타겟 QP를 계산한다.
제1 패스 인코더(410)는 i번째 프레임의 복잡도(C), 타겟 비트(Tb) 및 타겟 양자화 파라미터를 제2 패스 인코더(420)에 전송하고 나서, 다음 프레임(i+1)으로 이동한다.
제2 패스 인코더(420)는 제1 패스 인코더(210)로부터 전송된 i번째 프레임의 타겟 비트(Tb)를 이용하여 i번째 프레임을 인코딩한다. 또한, 제2 패스 인코더(410)는 i번째 프레임을 실제로 부호화하고 나서, i번째 프레임의 복잡도(EC), 실제 부호화시 사용된 비트(Eb), 실제 부호화한 양자화 파라미터(EQp)를 제1 패스 인코더(410)에 피드백한다.
제1 패스 인코더(410)는 피드백된 정보들, 즉 i번째 프레임의 복잡도(EC), 실제 부호화시 사용된 비트(Eb), 실제 부호화한 양자화 파라미터(EQp)를 이용하여 이전 정보들, 복잡도(C), 타겟 비트(Tb), 타겟 양자화 파라미터(QP)를 보정한다.
제1 패스 인코더(410)는 제2 패스 인코더(420)로부터 피드백된 복잡도(EC)를 이용하여 복잡도의 평균 오차율을 다음 수학식 6을 이용하여 계산한다.
[수학식 6]
평균 오차율= (현재까지의 C의 합 = 현재까지의 EC의 합)/현재까지의 C의 합
그리고, 계산한 평균 오차율을 이용하여 보정된 복잡도(C')를 다음 수학식 7을 이용하여 계산한다.
[수학식 7]
보정된 복잡도(C') = 복잡도(C)+평균 오차율
제1 패스 인코더(410)는 보정된 복잡도(C')를 이용하여 타겟 비트 및 타겟 양자화 파라미터를 계산한다. 여기서, 복잡도를 보정하는 것은 어느 정도 시간이 지난 후, 예를 들면 1000개의 프레임을 누적한 후에 사용할 수도 있다.
여기서, 제1 패스 인코더(410)의 복잡도 계산 및 제2 패스 인코더(420)의 복잡도 계산은 서로 다른 영상들, 즉 제1 패스 인코더(410)는 YUV 영상에 대해 예측 또는 움직임 추정을 수행하는 것이고, 제2 패스 인코더(420)는 인코딩한 후의 복원 영상과 현재 YUV 영상에 대해 예측 또는 움직임 추정을 수행하는 것이기 때문에, 각각의 스케일이 서로 다를 수 있다. 따라서, 각각의 복잡도를 비교하기 위한 충분한 샘플을 획득한 후에 정규화 과정(normalization)을 수행할 수도 있다.
제1 패스 인코더(410)는 복잡도( C) 또는 보정된 복잡도(C')를 이용하여 타겟 비트를 계산하고, 상기 수학식 2에 따라 타겟 QP를 보정한다.
전술한 제1 패스 인코딩 및 제2 패스 인코딩에 대한 설명은 i번째 프레임에 대해서만 설명하였지만, 도 5에 도시된 것처럼, 슬라이딩 윈도우가 시간축으로 이동하면서, i+1 프레임, i+2 프레임, 제n 프레임에 대해서도 동일한 방식으로 제1 패스 인코딩과 제2 패스 인코딩을 수행한다. 또한, 도 5에서는 프레임 i 단위의 슬라이딩 윈도우가 도시되어 있지만, 이에 한정되지 않음은 물론이며, 그 이상 또는 GOP 크기의 슬라이딩 윈도우로 인코딩할 수 있다.
도 4 및 5를 참조하여 설명한 2패스 인코딩은 도 2 및 3에 도시된 GOP 단위로 병렬 인코딩을 수행하는 동영상 부호화 장치(200)에 적용 가능하지만, 이에 한정되지 않고, 일반적인 인코더에도 적용 가능함은 물론이다.
도 6은 본 발명의 또 다른 실시 예에 따른 동영상 부호화 방법을 설명하기 위한 흐름도이다.
도 6를 참조하면, 단계 600에서, 제1 패스 인코더에서 제1 패스 인코딩을 수행한다. 여기서, 제1 패스 인코딩은 완전한 인코딩 과정을 수행하지 않는다. 제1 패스 인코딩을 통해, 각각의 GOP와, 각각의 GOP에 대한 비트, 각각의 GOP의 최초 I 프레임 또는 인트라 프레임에 대한 양자화 파라미터 및 디코더의 비디오 버퍼의 점유율 또는 VBV 레벨을 예측한다.
단계 602에서, 각각의 프로세서에 제1 패스 인코딩 결과와 제1 내지 제N GOP를 전송한다. 여기서, 각각의 프로세서는 제1 패스 인코더로부터 전송된 인코딩 결과와 각각의 GOP를 전송 받는다.
단계 604에서, 각각의 프로세서에서 1/N 속도로 제1 내지 제N 인코딩을 수행한다. 즉, 각각의 프로세서는 실시간보다 늦은 1/N 속도로 각각의 GOP를 독립적 및 병렬적으로 인코딩을 수행한다.
단계 606에서, 각각의 프로세서에서 인코딩 결과를 제1 패스 인코더에 피드백한다. 각각의 프로세서는 각각의 GOP를 인코딩한 인코딩 결과를 제1 패스 인코더에 피드백한다.
단계 608에서, 인코딩된 비트 스트림들을 하나의 스트림으로 직렬화한다.
본 발명에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서 상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 발명에서 인용하는 공개 문헌, 특허 출원, 특허 등을 포함하는 모든 문헌들은 각 인용 문헌이 개별적으로 및 구체적으로 병합하여 나타내는 것 또는 본 발명에서 전체적으로 병합하여 나타낸 것과 동일하게 본 발명에 병합될 수 있다.
본 발명의 이해를 위하여, 도면에 도시된 바람직한 실시 예들에서 참조 부호를 기재하였으며, 본 발명의 실시 예들을 설명하기 위하여 특정 용어들을 사용하였으나, 특정 용어에 의해 본 발명이 한정되는 것은 아니며, 본 발명은 당업자에 있어서 통상적으로 생각할 수 있는 모든 구성 요소들을 포함할 수 있다.
본 발명은 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 발명은 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 본 발명에의 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 발명은 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 발명은 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. 매커니즘, 요소, 수단, 구성과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, 필수적인, 중요하게 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
본 발명의 명세서(특히 특허청구범위에서)에서 상기의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 본 발명에서 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 적용한 발명을 포함하는 것으로서(이에 반하는 기재가 없다면), 발명의 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 본 발명에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 본 발명이 한정되는 것은 아니다. 본 발명에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 본 발명을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 본 발명의 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.
200: 동영상 부호화 장치
210: 제1 패스 인코더
220: 제2 패스 인코더
221: 제1 프로세서
222: 제2 프로세서
223: 제N 프로세서
230: 직렬화부

Claims (21)

  1. 입력 비디오 영상에 대해 제1 패스 인코딩을 수행하는 제1 패스 인코더; 및
    상기 제1 패스 인코더로부터 제1 GOP 내지 제N GOP (N은 2 이상의 양의 정수)를 입력받아, 상기 제1 GOP 내지 제N GOP를 각각 인코딩하는 제1 내지 제N 프로세서를 포함하는 제2 패스 인코더를 포함하되,
    상기 제1 내지 제N 프로세서는,
    1/N 속도로 인코딩을 수행하고, 상기 제1 내지 제N GOP를 인코딩한 인코딩 결과를 각각 상기 제1 패스 인코더에 피드백하는 것을 특징으로 하는 동영상 부호화 장치.
  2. 제 1 항에 있어서,
    상기 제1 패스 인코더는,
    상기 제1 GOP 내지 제N GOP에 대한 각각의 GOP 및 각각의 프레임에 대한 타겟 비트를 상기 제1 내지 제N 프로세서에 전송하는 것을 특징으로 하는 동영상 부호화 장치.
  3. 제 2 항에 있어서,
    상기 제1 GOP 내지 제N GOP에 대한 각각의 GOP의 최초 I 프레임에 대한 타겟 양자화 파라미터(QP)를 상기 제1 내지 제N 프로세서에 전송하는 것을 특징으로 하는 동영상 부호화 장치.
  4. 제 3 항에 있어서,
    상기 제1 GOP 내지 제N GOP에 대한 타겟 버퍼 레벨을 상기 제1 내지 제N 프로세서에 전송하는 것을 특징으로 하는 동영상 부호화 장치.
  5. 제 1 항에 있어서,
    상기 제1 GOP 내지 제N GOP를 각각 인코딩한 인코딩 스트림들을 하나의 스트림으로 생성하는 직렬화부를 더 포함하는 것을 특징으로 하는 동영상 부호화 장치.
  6. 제 1 항에 있어서,
    상기 제1 패스 인코더는,
    상기 제1 내지 제N 프로세서로부터 전송된 지연된 인코딩 결과들을 저장하기 위한 버퍼들을 더 포함하는 것을 특징으로 하는 동영상 부호화 장치.
  7. 제 1 항에 있어서,
    상기 제1 내지 제N 프로세서는,
    상기 제1 GOP 내지 제N GOP를 각각 1/N 속도로 병렬적으로 인코딩을 수행하는 것을 특징으로 하는 동영상 부호화 장치.
  8. 제 1 항에 있어서,
    상기 제1 패스 인코더 또는 상기 제2 패스 인코더는 슬라이딩 윈도우를 이동시키면서 인코딩하는 것을 특징으로 하는 동영상 부호화 장치.
  9. 제 1 항에 있어서,
    상기 제1 패스 인코더는,
    상기 입력 비디오 영상의 YUV 영상에 대해 복잡도를 계산하고, 상기 복잡도를 이용하여 타겟 비트, 타겟 양자화 파라미터를 계산하고, 상기 계산한 복잡도, 타겟 비트, 타겟 양자화 파라미터를 상기 제2 패스 인코더에 전송하는 것을 특징으로 하는 동영상 부호화 장치.
  10. 제 9 항에 있어서,
    상기 제2 패스 인코더는,
    상기 제1 패스 인코더로부터 전송된 복잡도, 타겟 비트, 타겟 양자화 파라미터를 이용하여 인코딩하고, 인코딩한 결과에 따라 계산된 복잡도, 실제 사용 비트, 실제 양자화 파라미터를 상기 제1 패스 인코더에 피드백하는 것을 특징으로 하는 동영상 부호화 장치.
  11. 제 10 항에 있어서,
    상기 제1 패스 인코더는,
    상기 제2 패스 인코더로부터 피드백된 복잡도, 실제 사용 비트, 실제 양자화 파라미터를 이용하여, 상기 복잡도, 상기 타겟 비트, 상기 타겟 양자화 파라미터를 보정하는 것을 특징으로 하는 동영상 부호화 장치.
  12. 입력 비디오 영상에 대해 제1 패스 인코딩을 수행하는 제1 인코딩 단계;
    제1 GOP 내지 제N GOP(N은 2 이상의 양의 정수)를 입력받아, 상기 제1 GOP 내지 제N GOP를 각각 인코딩하는 제2 인코딩 단계를 포함하되,
    상기 제2 인코딩 단계는,
    1/N 속도로 인코딩을 수행하고, 상기 제1 내지 제N GOP를 인코딩한 인코딩 결과를 각각 상기 제1 인코딩 단계에 피드백하는 것을 특징으로 하는 동영상 부호화 방법.
  13. 제 12 항에 있어서,
    상기 제1 인코딩 단계는,
    상기 제1 GOP 내지 제N GOP에 대한 각각의 GOP 및 각각의 프레임에 대한 타겟 비트를 전송하는 것을 특징으로 하는 동영상 부호화 방법.
  14. 제 13 항에 있어서,
    상기 제1 인코딩 단계는,
    상기 제1 GOP 내지 제N GOP에 대한 각각의 GOP의 최초 I 프레임에 대한 타겟 양자화 파라미터(QP)를 전송하는 것을 특징으로 하는 동영상 부호화 방법.
  15. 제 14 항에 있어서,
    상기 제1 GOP 내지 제N GOP에 대한 타겟 버퍼 레벨을 전송하는 것을 특징으로 하는 동영상 부호화 방법.
  16. 제 12 항에 있어서,
    상기 제1 GOP 내지 제N GOP를 각각 인코딩한 인코딩 스트림들을 하나의 스트림으로 생성하는 단계를 더 포함하는 것을 특징으로 하는 동영상 부호화 방법.
  17. 제 12 항에 있어서,
    상기 제1 패스 인코딩 단계 또는 상기 제2 패스 인코딩 단계는,
    슬라이딩 윈도우를 이동시키면서 인코딩하는 것을 특징으로 하는 동영상 부호화 방법.
  18. 제 12 항에 있어서,
    상기 제1 패스 인코딩 단계는,
    상기 입력 비디오 영상의 YUV 영상에 대해 복잡도를 계산하고, 상기 복잡도를 이용하여 타겟 비트, 타겟 양자화 파라미터를 계산하고, 상기 계산한 복잡도, 타겟 비트, 타겟 양자화 파라미터를 상기 제2 패스 인코딩 단계에 전송하는 것을 특징으로 하는 동영상 부호화 방법.
  19. 제 18 항에 있어서,
    상기 제2 패스 인코딩 단계는,
    상기 제1 패스 인코딩 단계로부터 전송된 복잡도, 타겟 비트, 타겟 양자화 파라미터를 이용하여 인코딩하고, 인코딩한 결과에 따라 계산된 복잡도, 실제 사용 비트, 실제 양자화 파라미터를 상기 제1 패스 인코더에 피드백하는 것을 특징으로 하는 동영상 부호화 방법.
  20. 제 19 항에 있어서,
    상기 제1 패스 인코딩 단계는,
    상기 제2 패스 인코딩 단계로부터 피드백된 복잡도, 실제 사용 비트, 실제 양자화 파라미터를 이용하여, 상기 복잡도, 상기 타겟 비트, 상기 타겟 양자화 파라미터를 보정하는 것을 특징으로 하는 동영상 부호화 방법.
  21. 제 12 항 내지 제 20 항 중 어느 한 항에 따른 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체.
KR1020110104083A 2011-09-23 2011-10-12 동영상 부호화 장치 및 방법 KR20130032807A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/242,339 US20130077674A1 (en) 2011-09-23 2011-09-23 Method and apparatus for encoding moving picture
US13/242,339 2011-09-23

Publications (1)

Publication Number Publication Date
KR20130032807A true KR20130032807A (ko) 2013-04-02

Family

ID=47911281

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110104083A KR20130032807A (ko) 2011-09-23 2011-10-12 동영상 부호화 장치 및 방법

Country Status (2)

Country Link
US (1) US20130077674A1 (ko)
KR (1) KR20130032807A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140321533A1 (en) * 2013-04-29 2014-10-30 Ati Technologies Ulc Single-path variable bit rate video compression
US11089329B1 (en) * 2016-06-28 2021-08-10 Amazon Technologies, Inc Content adaptive encoding
CN111034154B (zh) 2017-09-29 2022-10-28 苹果公司 多设备通信管理

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8054880B2 (en) * 2004-12-10 2011-11-08 Tut Systems, Inc. Parallel rate control for digital video encoder with multi-processor architecture and picture-based look-ahead window
US20050036549A1 (en) * 2003-08-12 2005-02-17 Yong He Method and apparatus for selection of scanning mode in dual pass encoding
EP2087739A2 (en) * 2006-10-25 2009-08-12 Thomson Licensing Methods and apparatus for efficient first-pass encoding in a multi-pass encoder

Also Published As

Publication number Publication date
US20130077674A1 (en) 2013-03-28

Similar Documents

Publication Publication Date Title
US9282329B2 (en) Methods and devices for data compression using offset-based adaptive reconstruction levels
KR101213704B1 (ko) 가변 컬러 포맷 기반 동영상 부호화 방법 및 장치, 그복호화 방법 및 장치
TWI478584B (zh) 一種視訊編解碼的方法及其裝置
KR102121558B1 (ko) 비디오 이미지의 안정화 방법, 후처리 장치 및 이를 포함하는 비디오 디코더
US8406297B2 (en) System and method for bit-allocation in video coding
US20070199011A1 (en) System and method for high quality AVC encoding
US9307241B2 (en) Video encoding method and a video encoding apparatus using the same
JP2009531980A (ja) デジタルビデオエンコーダの内部予測及びモード決定処理の計算を低減する方法
KR20040047977A (ko) 공간적으로 스케일가능한 압축
US10432961B2 (en) Video encoding optimization of extended spaces including last stage processes
JP2006140758A (ja) 動画像符号化方法、動画像符号化装置および動画像符号化プログラム
KR20010021879A (ko) 코딩 시스템의 매크로 블록 기반 비율을 제어하기 위한장치 및 방법
WO2008042259A2 (en) Method for rho-domain frame level bit allocation for effective rate control and enhanced video coding quality
US20170099491A1 (en) Apparatus, method and non-transitory medium storing program for encoding moving picture
US20180184089A1 (en) Target bit allocation for video coding
US20170041606A1 (en) Video encoding device and video encoding method
US10785485B1 (en) Adaptive bit rate control for image compression
JP7343817B2 (ja) 符号化装置、符号化方法、及び符号化プログラム
KR20120117613A (ko) 동영상 부호화 장치 및 방법
JP2010183181A (ja) 画像処理装置、およびそれを搭載した撮像装置
US10104389B2 (en) Apparatus, method and non-transitory medium storing program for encoding moving picture
KR20130032807A (ko) 동영상 부호화 장치 및 방법
WO2013106482A1 (en) Quantization matrix (qm) coding based on weighted prediction
US20120069901A1 (en) Video encoding apparatus, video decoding apparatus, video encoding method, video decoding method, and computer program
Li et al. Low-delay window-based rate control scheme for video quality optimization in video encoder

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid