首页 / 专利库 / 视听技术与设备 / 运动估计 / H.264/AVC의 인코딩 방법

H.264/AVC의 인코딩 방법

阅读:565发布:2021-03-05

专利汇可以提供H.264/AVC의 인코딩 방법专利检索,专利查询,专利分析的服务。并且본 발명은 각 프레임들이 주어진 시간 내에 인코딩될 수 있도록 하기 위한 것으로, 본 발명의 H.264 인코더는 FME(fractional motion estimation)를 위한 부분 코스트 평가, FME을 위한 블록 사이즈 배분, IME(integer motion estimation)로 이루어지는 3개의 복잡도 스케일링 방법을 채택한다.
FME, IME, 매크로블록, 인코딩, H.264/AVC,下面是H.264/AVC의 인코딩 방법专利的具体信息内容。

  • 삭제
  • 적어도 하나 이상의 매크로블록들로 이루어진 그룹들로 프레임을 분할하고, 각 그룹들에 대하여 복잡도에 따라서 시간목표를 할당하여 인코딩하는 H.264/AVC의 인코딩방법에 있어서:
    인접하는 두 매크로블록들의 복잡도의 척도 차가 기설정되는 TH(threshold) 보다 큰 경우에 두 매크로블록들을 각기 다른 그룹에 속하는 것으로 분할하고, 각 그룹의 복잡도를 평가하여 한 프레임 내에서 각 그룹이 차지하는 복잡도 비( Rgr(i) )에 비례하여 시간을 할당하는 것을 특징으로 하는 H.264/AVC의 인코딩방법.
  • 청구항 제2항에서, 각 그룹의 복잡도비( Rgr(i) )는 다음의 수학식 2와 수학식 3에 의하여 결정되는 것을 특징으로 하는 H.264/AVC의 인코딩방법.
    수학식 2
    (여기에서, Cmb(i,k)는 i th 그룹의 k th 매크로블록의 복잡도 척도를 표시하며,
    Cgr(i)과 Cfr은 i th 그룹과 전체 프레임의 복잡도 척도를 각각 표시하며, Sgr(i)은 임의의 그룹에서 매크로블록의 수를 나타낸다)
    수학식 3
  • 청구항 제3항에서, 각 그룹에 대한 시간목표 할당은 다음의 4개 스텝으로 이루어지는 것을 특징으로 하는 H.264/AVC의 인코딩방법.
    스텝 1) 각 그룹의 최소 인코딩 시간(Tgr min ) 을 다음의 수학식 4에 의하여 구한다.
    수학식 4
    (여기에서, Tmb min 을 각 매크로블록의 최소 실행시간이다)
    스텝 2) 주어진 프레임에 대하여 다음의 수학식 5에 의하여 최소실행시간 Tfr min 과 잉여시간 Tfr surplus 을 구한다.
    수학식 5
    스텝 3) i th 그룹의 잉여시간은 Rgr(i)에 Tfr surplus 을 곱하므로써 다음의 수학식 6과 같이 얻어진다.
    수학식 6
    스텝 4) i th 그룹의 시간목표 할당(Tgr(i))은 다음의 수학식 7으로 결정한다. 수학식 7
  • 청구항 제4항에서, 상기 각 그룹 내에 임의의 매크로블록에 대한 시간할당은 상기 임의의 매크로블록이 속한 그룹내에 다른 매크로블록의 복잡도에 따라서 가변되는 것을 특징으로 하는 H.264/AVC의 인코딩방법.
  • 说明书全文

    H.264/AVC의 인코딩 방법{encoding methode for H.264/AVC}

    본 발명은 하나의 프레임을 다수의 그룹으로 그룹핑하고, 복잡도가 높은 그룹에 대하여 많은 시간을 할당함으로써 실시간으로 인코딩 되도록 하는 H.264/AVC의 인코딩 방법에 관한 것이다.

    영상회의, 스트리밍, 통신과 같은 비디오 응용의 산업적 요구가 날로 증대되고 있으며, 이러한 비디오 응용의 중요한 문제 중 하나가 버퍼링에서 지연이 발생되지 않으면서 실시간으로 이루어지도록 하는 것이다.

    그러나 실시간 처리 요구는 인코딩 빠르기가 각 비디오 시퀀스 각 프레임의 내용에 의존되고, 처리스피드가 프레임마다 변화되기 때문에 이루어지지 않는 경우가 발생되고, 결과적으로 입출력 버퍼의 크기는 버퍼 오버 플로우(buffer overflow)를 피하기에 충분히 커야 하고, 인코딩 능력은 버퍼 사이즈가 증가함에 따라서 증가하게 된다.

    최근에 인코딩 스피드제어를 위하여 복잡도-어웨어(complexity-aware)와 복잡도 - 스케일어블 (complexity-scalable) 인코딩 알고리즘이 제안되었으며, 이러한 알고리즘에서는 현재와 참조프레임의 두 개의 매크로블록(macroblock)들 사이에 왜곡(distortion)이 선행적으로 평가하고, 평가된 왜곡을 두 블록들 사이에 절대차의 합(sum of absolute difference (SAD))을 위한 복잡도를 분배하기 위하여 사용함으로써 실행스피드를 제어한다.

    또한, 인코딩 스피드는 움직임 서치 영역, 블록 사이즈, 초기 정지 조건을 포함하는 다양한 움직임 평가 파라미터 (motion estimation (ME) parameters )를 분배하는 것에 따라서 제어된다.

    또한 주어진 이미지 프레임 위한 통계적 데이터는 최적 파라미터 값들을 위하여 사용되고, 또한 현재 프레임이 예측되고, 모드 결정 클래스가 예측된 시간에 따라서 분배되도록 하는 인코딩 시간 레이트 제어 기술( rate control techniques) 이 인코딩 스피드를 제어하기 위하여 제안되었다. 이러한 이전에 연구결과들은 평균 인코딩 스피드를 목표스피드에 맞추도록 하는 것이나, 각 프레임에 대한 인코딩 스피드는 이러한 목표 스피드를 만족시키지 않고 있다.

    또한 이전의 연구결과들의 초점은 H.264/AVC 표준의 베이스 라인 프로파일이고, H.264/AVC 메인 프로파일은 베이스 라인 프로파일 보다 복잡한 계산을 요구하고 있고, 따라서 메인 프로파일 인코더의 인코딩 시간은 베이스 라인 프로파일 인코더 보다 크게 되어, 결과적으로 메인프로파일 인코더의 스피드 제어알고리즘은 인코딩 시간의 큰 변화를 다루기 위해 베이스라인 프로파일의 것보다 복잡하게 이루어진다.

    본 발명은 이러한 문제점들을 해결하기 위한 것으로, 본 발명의 해결과제는 각 프레임들이 주어진 시간내에 인코딩 될 수 있도록 하기 위한 것이다. 이러한 해결과제에 따라 본 발명에서 H.264 인코더는 FME(fractional motion estimation)를 위한 부분 코스트 평가, FME을 위한 블록 사이즈 배분, IME(integer motion estimation)로 이루어지는 3개의 복잡도 스케일링 방법을 채택한다.

    또한 본 발명은 FME를 위한 예측 방향성 필터가 B-슬라이스 ME의 복잡도 계산을 감소시키기 위하여 사용된다. 보다 구제척으로 양방향성 FME와 단방향성 FME(순방향 또는 역방향)에 의하여 얻어지는 잔류치가 작은 것으로 예측될 때 양방성 FME들이 필터링 된다.

    또한 본 발명에서 H.264 인코더는 3개의 스케일링 방법과 방향성 필터링에 의하여 압축효율과 인코딩 스피드를 절충(trade off)하는 32 복잡도 레벨을 구성한다.

    또한, 본 발명의 스피드 알고리즘은 적절한 주어진 시간목표(시간목표는 다른 매크로블록들의 실행 스피드에 의존한다)에 대한 적절한 스피드 레벨을 선택한다.

    상기 과제를 해결하기 위한 본 발명의 해결수단은 H.264/AVC 메인 프로파일 인코더에서 방향 필터링을 포함하는 H.264/AVC 인코딩 방법에 있어서: 상기 방향 필터링은 입력되는 매크로 블록들(input macroblock)에 대하여 순방향 IME(forward IME)와 역방향 IME(backward IME)를 실행하는 IME 실행단계; 순방향 IME의 코스트와 역방향 IME의 코스트의 차이가 후술되는 수학식 1에 의하여 결정되는 TH(threshold)보다 크거나 같으면 순방향 FME(forward FME)와 역방향 FME(backward FME), 양방향 예측(bidirectional prediction)이 실행되고, 상기 순방향 IME의 코스트와 상기 역방향 IME의 코스트 차이가 상기 TH 보다 작으면 FME는 상기 순방향 IME의 코스트와 상기 역방향 IME의 코스트 중 작은 코스트의 방향에 대해서만 FME를 수행하는 방향 필터링 단계를 포함하는 것이다.

    본 발명에서 또 다른 해결수단은 적어도 하나 이상의 매크로블록들로 이루어진 그룹들로 프레임을 분할하고, 각 그룹들에 대하여 복잡도에 따라서 시간목표를 할당하여 인코딩하는 H.264/AVC의 인코딩방법에 있어서: 인접하는 두 매크로블록들의 복잡도의 척도 차가 기설정되는 TH(threshold) 보다 큰 경우에 두 매크로블록들을 각기 다른 그룹에 속하는 것으로 분할하고, 각 그룹의 복잡도를 평가하여 한 프레임 내에서 각 그룹이 차지하는 복잡도 비( Rgr(i) )에 비례하여 시간을 할당하는 것이다.

    상기 과제와 해결수단을 갖는 본 발명에 따르면 H.264/AVC 메인 프로파일 인코더를 위한 중요한 스피드제어방법이 구현되며, 인코더는 계산시간과 압축효율을 절충할 수 있도록 하는 32 복잡도 레벨을 충족한다.

    또한, 본 발명에서 다양한 절충들과, 3개의 복잡도 스케일링 방법들, FME를 위한 부분 코스트 평가와, IME를 위한 서치영역분배들이 인코더에서 수행된다.

    또한 본 발명에서 방향 필터링이 B 슬라이스에서 FME를 위한 계산시간을 감축시키고 부가적인 복잡도 스케일링 옵션을 제공하기 위하여 제안되며, 방향 필터링은 압축효율의 악화를 무시할 수 있으면서도 인코딩속력을 20% 내지 40% 개선시키고, 이러한 스피드에서의 개선은 방향필터링이 매크로 블록들의 55% 내지 80%에 적용되기 때문에 이루어진다.

    또한, 시간목표의 2-레벨 할당은 비트율을 1-레벨 할당에 비교할 때 1. 2%에서 6.4%로 감축시킨다는 점에서 효율적이다.

    또한, 본 발명에서 실험결과들은 본 발명의 스피드 제어가 하드웨어적인 실시간 인코딩을 충족시킴을 입증한다.

    더욱이 본 발명의 스피드 제어는 압축효율에서 미세한 희생에도 불구하고 인코딩 시간을 높일 수 있다.

    이하, 본 발명의 실시예를 상세히 설명하기로 한다.

    1. 방향 필터링과 파이프 라인 실행

    H.264/AVC 메인 프로파일 인코더에서, 움직임 평가는 3개의 방향, 즉 순방향, 역방향, 및 양방향에서 이루어지며, 최고의 압축효율을 얻기 위하여 인코더는 3개 방향 모두에 대하여 수행하고 최고 압축효율을 갖는 방향을 선택한다. 3개 방 향들에 대한 코스트를 평가하는 것은 복잡도 계산을 상당한 정도로 증가시키나 본 발명의 단순화된 움직임 평가 구조인 소위 방향 필터링을 3방향 모두의 평가의 계산 부담을 감소시킨다.

    도 1은 방향 필터링이 적용되는 움직임평가의 흐름을 나타내는 흐름도이다.

    도 1에서, 입력되는 매크로 블록들(input macroblock)에 대하여 순방향 IME(forward IME)와 역방향 IME(backward IME)가 실행되어지나 FME의 방향은 두 IME들로부터의 코스트를 비교하여 선택된다. 두 개의 코스트 평가들이 기설정된 TH(threshold)보다 크거나 같으면, 순방향 FME(forward FME)와 역방향 FME(backward FME)가 실행되고, 또한, 양방향 예측(bidirectional prediction)이 실행되며 세 개의 예측이 최적 움직임 벡터(MV)를 얻기 위해서 비교된다.

    만일 두 코스트 평가들의 차이가 TH 보다 작으면, FME는 단지 선택된 방향에 대해서만 수행된다. 이 경우 양방향 FME는 순방향과 역방향 참조들이 매우 유사하기 때문에 순방향과 역방향의 차이가 작게 된다는 가정 하에서 생략된다.

    TH는 다음의 수학식 1에 의하여 구한다.

    수학식 1

    이때 α는 B 슬라이스에 대한 계산의 복잡도와 MV 정확성을 절충할 때 실험적으로 0.1로 정해진다.

    이하 파이프 라인의 실행에 대하여 설명하기로 한다.

    본 발명의 H.264 인코더는 입력된 이미지를 매크로블록들로 분해하고, 파이프 라인 방식으로 매크로블록을 각각 처리한다.

    도 2는 본 발명에 적용되는 P와 S 슬라이스에 대하여 H.264 인코더 파이프라인의 구성도이다.

    P와 S 슬라이스에 대하여 파이프 라인은 3개의 스테이지를 구성하고, 도 2의 (a)는 스테이지 1이 IME(I로 표시)에 후속되는 참조 데이터 로드(L로 표시)를 실시하는 P 슬라이스의 파이프 라인을 도시한다. 또한 FME에 대한 보간이 참조 데이터가 로드되는 동안 실행된다. 스테이지 2에서, FME(F로 표시)와 인트라 예측(IP)(P로 표시됨)이 병렬로 실행된다. 인트라 모드를 위해서 DCTQ(Discrete Cosine Transform and Quantization)가 미도시된 IP와 오버랩 된다. FME와 IP가 완료된 후, 두 오퍼레이션에 의하여 평가되는 코스트가 비교되고, 오퍼레이션 모드들이 인트라와 인터 예측모드들에서 선택된다. 도 2의 (a)에서 첫 번째 두 매크로블록들이 인터 모드로 선택되는 반면 세 번째 매크로 블록은 인트라 모드로 선택된다. 인터 예측모드가 첫 번째 두 번째 매크로블록들에서 선택되면 인터모드에서 움직임 보상(MC:motion compensation)과 DCTQ가 실행된다(두 오퍼레이션 모두가 M으로 표시된다). IP의 중간 코스트(intermediate cost )를 FME의 것과 비교해서 IP의 것이 FME의 평가된 코스트보다 클 때에는 조기 종결 처리한다. 결국 일반적으로 IP는 도 2의 (a)에서 첫 번째 매크로 블록과 같이 FME 보다 일찍 완료된다. 그러나 IP가 두 번째 매크로 블록과 같이 큰 시간을 차지하는 경우가 존재한다. 이러한 경우에 MC는 MC와 IP가 DCTQ의 하드웨어 모듈을 공유하기 때문에 단지 IP의 완료 후에 시작 하게 된다.

    스테이지 3에서, CABAC(context-adaptive binary arithmetic coding )이 실행되고, 비트 스트림이 생성된다. 또한 ADF(adaptive deblocking filtering)가 병렬로 실행되고, 재구성된 이미지는 기준 메모리에 저장된다( CABAC와 ADF는 함께 C로 표시됨).

    P슬라이스 파이프 라인의 대부분에 있어서, 중요한 실행 병목 요인은 후술되는 IME의 서치영역 분배로 인한 스테이지 2(MC에 후속되는 FME와 인터모드 DCTQ)에서 발생된다. 스테이지 1이 스테이지 2 보다 시간이 많이 걸릴 때 IME의 서치영역은 스테이지 2보다 스테이지 1의 처리시간을 작도록 하기 위하여 분배된다.

    도 2의 (b)에는 B 슬라이스의 파이프 라인의 실행을 도시한다.

    스테이지 1에서, 참조 로드와 IME는 순방향과 역방향으로 각각 두 번 실행되며, IME들의 결과에 따라서, FME를 실행하기 위한 두 옵션이 존재한다. 순방향과 역방향 IME 코스트 사이에 차이가 TH보다 크거나 같으면 MC에 의해서 후속되는 순방향과 역방향의 FME들이 실행된다. 따라서 스테이지 2는 도 2의 (b)에 도시된 바와 같이 두 개의 FME들과 MC들이 필요하다. 반면에 IP는 스테이지 2에서 단지 한번 실행된다. 스테이지 3은 도 2의 (a)에 도시된 P 슬라이스와 동일하다. 따라서 스테이지 2는 대부분의 경우에 가장 많은 시간을 차지한다. 순방향 역방향의 IME 코스트의 차이가 TH 보다 작으면, 방향 필터링이 MC에 후속되는 FME가 낮은 IME 코스트를 갖도록 선택된 방향을 따라서 한번 실행된다. 도 2의 (c)는 이러한 경우에 파이프 라인의 실행을 도시한다. 첫 번째 매크로 블록의 FME는 방향 필터링이 적용됨 에 따라서 단지 한번 실행된다. 이러한 FME와 함께 두 번째 매크로블록의 IME가 병렬처리 된다. 순방향 역방향 모두에 대해서 두 번 실행되면 그것의 결과가 다음 스테이지서의 FME를 위해서 사용된다. 이러한 경우, IME는 실행병목으로 되고, 이것의 서치영역이 타임목표fmf 충족시키기 위해서 분배된다. 실행스피드를 높이기 위하여 IME는 도 2의 (c)에서 3번째 매크로블록에 도시된 바와 같이 단방향을 따라서 실행된다. 단방향 IME는 FME가 IME와 동일한 방향으로 예측되도록 하고, 흔히 압축효율을 심각하게 악화시키는 경우가 발생한다. 따라서 단방향 IME는 단지 좌, 우, 상부 좌측 상부 우측 편의 4개의 이웃 매크로블록들의 ME 방향이 동일한 경우에만 적용하여야 한다. 이러한 경우에 동일한 예측 방향이 IME를 위해서 선택된다. 예측방향이 동일하지 않다면 두 개의 방향에 대하여 IME가 실행되어한다.

    IME가 단지 한번 실행되면, 다음 블록은 도 2의 (c)에서 4번째 매크로 블록과 같이 양방향을 따라서 두 번 IME를 실행하여야 한다. 이러한 조건은 다음 IME가 단순히 한 방향을 따라서 실행되는 경우에 압축효율이 실질적으로 줄어들기 때문에 필요하다.

    2. 복잡도 스케일링 방법 과 스피드 레벨

    본 발명에서는 3개의 복잡도 스케일링 방법과 방향 필터링을 조합한 H.264 인코더에 적용되는 32 복잡도 레벨을 제시한다.

    A. FME의 부분 코스트 평가

    부분 코스트 평가 구조는 코스트 평가의 정확성을 줄이면서 FME의 스피드를 높이기 위한 것이다. 일반적으로 FME에서 SAD 계산 엔진은 기본 단위로 4× 4블록 을 처리한다. 따라서 전체 16 ×16 블록의 SAD 계산을 위하여 SAD 엔진은 16번 실행된다. 본 발명에서 FME는 부분적으로 16개의 4×4블록 대신에 4 또는 8개의 4×4블록을 부분적으로 평가를 한다.

    도 3은 SAD 평가를 위하여 계산되는 4×4블록을 도시한다.

    도 3에서 전체 블록은 16×16 매크록 블록을 나타내고, 작은 블록들은 4×4블록을 도시하며, 음영블록들은 SAD계산이 이루어지는 4×4블록을 도시한다. 도 3의 (a)는 모든 16개의 4×4블록들이 SAD를 위하여 이용되는 것을 나타내는 반면 도 3의 (b)와 (c)는 8또는 4개의 4×4 블록들이 각각 계산되는 것을 도시한다. 부분 SAD 평가로부터 얻어지는 코스트는 비교되며, 최선의 MV가 비교결과에 따라서 선택된다. 코스트 평가를 위한 4×4블록들의 수가 적어지면 FME 스피드는 증가하지만 도출된 MV의 정확성은 감소한다.

    B. FME 를 위한 블록사이즈 분배

    본 발명의 H.264 인코더의 인코딩 방법은 FME 블록 사이즈 선택을 위한 선행 결정 구조를 택하고 있다. 즉 인코더는 IME의 결과로부터 최선의 ME 블록 사이즈를 택하고, 단지 선택된 블록 사이즈에 대하여 FME를 실행한다. 일반적으로 FME가 적은 블록모드보다 큰 블록모드에서 작은 계산량이 요구된다. 이것은 큰 블록모드가 적은 수의 MV 결정을 필요로 하기 때문이다. 예를 들어 16×16블록에서 FME는 단지 하나의 MV 결정을 필요로 하는 반면, 8×8 블록 모드에서는 4번의 결정이 이루어져야 한다. 따라서 16×16모드는 계산하는 데 최소 시간이 걸리게 된다. 요구되는 시간목표를 충족시키도록 FME의 계산을 감축시키기 위하여, 본 발명에서는 블록사이즈 가 IME에 의하여 선택된 블록사이즈와 다른 블록사이즈를 허용하는 FME 블록사이즈 분배구조를 채택한다. 예를 들어 IME의 결과로서 8×8블록 사이즈가 선택되었다 하여도 시간 목표가 8×8 모드를 실행하기에 충분하지 않다면 FME를 위해서 16×16 블록 모드가 실행될 수 있다. 이러한 FME모드 배분에서 중요한 기준은 IME에서 결정되는 것보다 작은 블록사이즈가 FME를 위하여 배제된다. 예를들어 최선의 IME에 의해서 결정된 블록 사이즈가 8×8이라면, 보다 작은 블록사이즈인 4×4, 4×8 또는 8×4 들은 채택될 수 없다. 이것은 MV가 단지 IME에 의하여 커다란 블록들을 위해서 생성되게 되고, 적은 블록들은 MV들이 FME에 대해서 적용될 수 없기 때문이다. 더욱이 보다 작은 블록사이즈는 커다란 블록들보다 실행시간이 크게 걸리기 때문에 작은 블록사이즈를 선택할 필요가 없다. 그러나 커다란 블록모드의 선택은 작은 블록사이즈가 ME 예측을 위하여 정확성을 갖을 때 압축효율을 악화시킬 수 있다. 따라서 이러한 구조는 압축 효율과 인코딩 스피드에 대한 절충을 고려해야 한다.

    C. IME를 위한 서치영역 분배

    풀-서치를 위한 계산량을 감축시키기 위하여 서치 영역이 분배된다. 수평영역은 (-14, +15)로 고정되는 반면에 수직영역은 시간목표를 충족시키기 위하여 분배된다. 서치영역의 중앙은 이웃하는 4개의 매크로 블록: 좌, 상좌, 상, 상우들의 움직임 벡터들의 중앙값으로 결정된다.

    D. 스피드 레벨

    전술된 복잡도 스케일 방법으로부터 표 1, 표 2, 표 3과 같은 다양한 스피드 레벨들이 정의된다. 표 1은 P 슬라이스에 대한 스피드 레벨을 나타내고, 표 2, 3은 B 슬라이스에 대한 스피드 레벨들을 나타낸다.

    표 2는 도 2의 (b)에 도시된 바와 같이 IME와 FME가 두 번 실행되는 파이프 라인 실행을 표시하고, 표 3은 방향 필터링이 적용되어 FME가 한번 실행된 도 2의 (c)에 도시된 파이프 라인의 실행을 나타낸다. 표들에서 레벨 1은 최단시간을 나타내고, 처리시간이 스피드 레벨이 증가함에 따라서 증가한다.

    표 1

    표 2

    표 3

    표 1의 P 슬라이스 인코딩에서, 최단 처리시간은 표에서 [Encoding cycles per MB]로 표시된 두 번째열의 1060 싸이클이다. 세 번째 열에서 5번째 열에는 현 매크로 블록이 두 번째 열에 주어진 시간목표 내에 인코딩 될 수 있도록 하는 다양한 옵션들이 제시된다. 세 번째 열에서 [FME evaluation]은 SAD를 평가하는 데 사용되는 4ㅧ4블록 수를 나타낸다. 이러한 평가 옵션 방법은 후술하기로 하고, FME는 HME(half-pel accuracy FME)와 QME(quarter-pel accuracy FME)로 구성된다. 본 발명에서 다섯 개의 옵션들은 FME 복잡도 제어를 위해서 제공된다. 옵션 1에서 단지 4개의 4×4블록이 HME와 QME를 위해서 평가된다. 따라서 전체적으로 8개의 4×4블록들이 평가된다. 옵션 2에서, 4개의 4×4블록들이 HME를 위해서 평가되고, 8개의 4×4블록들이 QME를 위해서 평가된다. 이 옵션에서 QME는 HME 보다 최종 압축효율에 보다 크게 영향을 미치기 때문에 HME보다 큰 수의 블록들로 평가된다. 옵션 3에서, 8개의 4×4블록들이 HME와 QME를 위해서 평가되고, 옵션 4에서 HME를 위해서 8개, QME를 위해서는 16개가 평가된다. 옵션 5에서, 16개가 HME와 QME 모두를 위해서 평가된다. 4번째 열에서 "FME block size"는 FME의 처리블록 사이즈를 나타낸다. 예를 들어 테이블 1에서 10 까지 스피드레벨에서 블록사이즈는 16×16, 8×16 또는 16×8이다. 스피들 레벨11은 8×8의 블록사이즈가 필요한 반면 스피드 레벨 12는 4x4, 4x8, 8x4 중 임의의 것이 사용된다. 이 블록 사이즈의 선택은 후술하기로 한다. 5번째 열에서 "IME Search Range"는 IME를 위한 최대 서치 영역을 나타내고, 그 값들은 후술되는 수직 서치 영역을 나타낸다. 이러한 서치영역은 스테이지 1을 위한 시간목표를 충족시키도록 결정된다.

    표 2는 3방향: 순방향, 역방향, 양방향 모두에서 FME를 나타내는 12가지 스피드 레벨을 보여준다. 레벨 1에서 최단 실행시간인 2120 싸이클들이 소요되고, 레벨 12에서 최장 실행시간인 3860 싸이클들이 소요된다. 표 1에서 복잡도 레벨과 유사하게, FME 실행은 실행병목을 초래하고 IME 실행시간은 그것의 수직 서치영역을 분배시킴으로써 FME 실행시간을 충족시키도록 제어한다.

    표 3은 방향 필터링이 적용되어 FME가 단지 선택된 방향인 순방향 또는 역방에 대하여 실행될 때 8가지 스피드 레벨을 나타낸다. IME는 단지 한 방향 또는 양방향 모두에 대해서 실행될 수 있다. 5열은 두 방향에 대해서 두 번 실행되는 IME의 서치영역을 나타낸다. IME 방향들 모두가 동일한 서치영역; 단지 수직 서치영역이 표에서 주어진다(수평 서치영역은 (-14, +15)로 고정된다). 5 스피드레벨(레벨 4에서 8까지)은 이 경우를 나타내고 있다. 서치영역 14를 갖는 레벨 5로부터, IME 스테이지는 실행병목이므로 FME 평가 옵션 5와 최소 FME 블록 사이즈와 같이, FME는 최대 복잡도 방법에 의하여 실행될 수 있다. 6번째 열은 IME가 단지 단방향에 대해서 한번 실행될 때 IME의 수직 서치영역을 나타낸다. 5스피드레벨들(1에서 5레벨)이 이러한 경우에 속한다. 표 1에서 스피드 레벨들과 유사하게 FME 실행은 실행 병목이고, 다양한 옵션들이 FME의 복잡도를 스케일링하기 위하여 제공된다.

    3. 복잡도 인식(complexity-aware)의 두 레벨 시간 할당을 갖는 속도 제어

    본 발명은 주어진 시간을 위하여 적당한 스피드 레벨을 선택하는 스피드 제어 방법을 구비한다.

    A. 속도 제어 방법

    도 4는 본 발명에 적용되는 다양한 스피드 레벨을 갖는 H.264 메인 프로파일 인코더를 위한 스피드 제어 방법의 순서도이다.

    n th 번째 매크록 블록은 n th 의 FME 스테이지(FME(n)으로 표시)에 있고, (n+1)번째 매크로 블록은 n th 의 IME 스테이지(IME(n+1)로 표시)에 있는 것으로 가정한다. Tmb(n)은 이 스테이지에서 할당된 시간목표를 표시한다. 스피드 제어의 첫 번째 스텝은 표 1, 2, 3에서 3개의 표가 선택되는 것이다. 현 매크록 블록이 P 슬라이스에 있는 경우에, 표 1이 선택되고, 현 매크로블록이 B 슬라이스에서 있다면 방향 필터링이 적용되면 표 3이 선택된다. 그렇지 않다면 표 2가 선택된다. 표 1, 2가 선택되는 경우에 FME는 실행병목이고, 스피드 제어는 도 4에서 왼쪽 흐름을 따라서 진행된다. 왼쪽 흐름에서 다음 스텝은 IME(n)으로부터 얻어진 최선의 블록사이즈를 갖는 FME(n)이 시간목표Tmb(n)을 충족시키기에 충분한지를 체크한다. ET는 FME(n)의 예상실행시간(Expected execution time)이고, ET가 Tmb(n)보다 작다면, IME(n)으로부터의 최선의 블록사이즈를 갖는 FME(n)가 실행된다. 그렇지 않다면 블록사이즈는 변화되고, 새로운 블록사이즈가 두 기준에 의하여 선택된다. 제1기준은 IME(n)에 의하여 결정되는 것보다 작은 블록사이즈는 허용되지 않는 것이다. 작은 블록들을 위한 MV들은 타당하지 않기 때문에 IME(n)의 블록 사이즈 보다 작은 블록사이즈로 FME(n)를 처리하는 것은 불가능하다. 제1기준을 충족시키는 블록사이들에서, 본 발명의 속도 제어방법은 예측정확성을 가장 적게 희생하는 최장 계산시간Tmb(n)을 필요로 하는 것을 선택한다. 블록사이즈가 선택된 후 평가옵션이 FME(n)를 위해서 선택되고, 최종적으로 스피드 레벨이 선택된 FME 옵션에 따라서 결정된다. IME(n+1)의 최대서치영역은 선택된 스피드 레벨에 의하여 정하여 진다.

    방향 필터링이 적용되는 표 3이 이 속도제어방법의 제1스텝에서 선택되면, 다음 스텝은 하나의 IME가 실행될 것인지 두 IME들이 실행될 것인지 결정한다. 하나의 IME가 실행되면, FME는 다시 실행병목으로 되어 도 4에서 좌측을 향하여 실행 된다. 두 IME들이 실행되는 경우 IME들은 실행병목이 된다. 또한, 본 발명의 속도제어방법은 적당한 IME 서치영역(IME search range)을 결정하기 위하여 도 4의 오른쪽의 스텝을 수행한다. IME 서치영역이 결정되면 스피드 레벨도 결정되고, FME 블록 사이즈 또한 결정된다.

    IME(n+1) 와 FME(n)가 실행되면, IME(n+1)의 결과는 다음 파이프 라인을 위한 스피드레벨을 찾는데 사용된다.

    인코딩 시간이 저장되고, 다음 매크로블록의 시간목표인 Tmb(n+1)은 업데이트된다.

    시간목표 할당은 다음과 같다.

    B. 그룹-레벨 시간할당

    하나의 영상의 다른 부분들에 대하여 다른 시간목표들을 할당하기 위하여, 하나의 영상프레임들은 도 5에 도시된 바와 같이 많은 그룹의 매크로블록들로 분해되고, 그 그룹들의 복잡도에 따라서 다르게 시간목표들이 할당된다.

    도 5는 본 발명의 불균일 시간할당을 위한 그룹핑을 설명하기 위한 구성도이다.

    그룹들의 수는 Ngr로 표시되고, Ngr은 영상플레임의 복잡도에 따라서 결정된다. 인접한 두 매크로블록들 라인(한 매크로블록 라인= 16 픽셀라인들)의 복잡도 사이에 차가 설정된 TH 보다 큰 경우, 두 매크록블록들은 다른 그룹들로 분리된다. Ngr의 값은 1에서 프레임의 매크로블록 라인들의 수까지로 결정된다. 시간목표 할당을 위하여 각 그룹의 복잡도는 평가되어져야 하고, 시간목표 할당의 중요한 목적 은 복잡도가 작은 그룹보다 큰 그룹에 대한 시간목표를 많이 할당시키는 것이다. 이러한 목적에서 매크로 블록의 복잡도 척도는 16x16, 16x8 (또는 8x16), 8x8, 8x8 모드보다 작은 것에 대하여 각각 1, 5, 10 및 20으로 정의 한다. B 슬라이스에서 양 방향 예측이 필터링 되는 하나의 매크로 블록에 대하여 최소의 복잡도인 0.5는 블록사이즈에 관계없이 적용된다. 각 그룹에 대하여, 복잡도 척도는 그 그룹의 모든 매크로 블록들의 복잡도 척도의 합이다. 복잡도 척도를 이용하여 각 그룹에 대하여 시간목표를 할당하기 위하여, 복잡도 척도는 그 그룹을 실행하기 전에 적용할 필요가 있다. 그러나 각 그룹의 복잡도 척도는 그 그룹에서 매크로블록의 스피드 레벨이 정해진 후에라야 얻어질 수 있다. 스피드 레벨들은 실행하는 동안 결정되기 때문에 인코더가 그 그룹의 실행 전에 정밀한 복잡도 척도를 결정하는 것은 불가능하다. 따라서 인코더는 이전 P 또는 B 프레임 결과로부터 얻어지며, 현재의 P 또는 B 프레임의 복잡도 척도를 각각 예측할 수 있도록 하는 예측 복잡도 척도를 사용한다. 이러한 예측은 현재 프레임이 이전프레임에 유사할 때에는 정확하다 할 수 있다. 이와 같이 각 매크로블록의 복잡도 척도가 얻어지면 다음과 같이 각 그룹의 시간목표를 도출하기 위하여 사용된다.

    Cmb(i,k)는 i th 그룹의 k th 매크로블록의 복잡도 척도를 표시한다.

    Cgr(i)과 Cfr은 i th 그룹과 전체 프레임의 복잡도 척도를 각각 표시한다. 그러면, 다음 수학식 2는 Cmb(i,k), Cgr(i) 및 Cfr의 관계를 나타낸다.

    수학식 2

    이때 Sgr(i)은 임의의 그룹에서 매크로블록의 수를 나타낸다.

    F를 목표 프레임 레이트로 표시하고, Tfr =1/F 를 각각 프레임에 할당되는 시간목표로 표시한다. 상대적인 복잡도 척도를 임의의 그룹 Rgr(i)의 복잡도 비로 정의하면 다음과 같이 수학식 3으로 정의된다.

    수학식 3

    이러한 경우 각 그룹의 시간목표 할당은 다음과 같은 4개의 스텝에 의하여 기술된다.

    스텝 1) 각 그룹의 최소 인코딩 시간을 구한다. 이러한 인코딩 시간은 주어진 매크로 블록의 최소 실행시간을 이미 알고 있기 때문에 유도 가능하다.

    Tmb min 을 각 매크로블록의 최소 실행시간으로 표시한다. 그리고 i th 그룹의 최소실행시간은 다음 수학식 4에 의하여 결정된다.

    수학식 4

    스텝 2) 이 스텝은 모든 그룹들의 최소 실행시간들의 합인 주어진 프레임에 대하여 최소 실행시간을 얻을 수 도록 한다. 그리고 잉여 시간을 Tfr으로부터 Tfr min 을 다음의 수학식 5와 같이 차감함으로써 얻는다.

    수학식 5

    스텝 3) i th 그룹의 잉여시간은 Rgr(i)에 Tfr surplus 을 곱하므로써 다음의 수학식 6과 같이 얻어진다.

    수학식 6

    스텝 4) i th 그룹의 시간목표는 다음의 수학식 7에 의하여 결정된다.

    수학식 7

    C.매크로블록 레벨의 시간할당

    기존의 시간목표 할당은 각 그룹의 복잡도가 이전 프레임의 실행 결과로부터 평가되고, 그것이 현 프레임의 실행되는 동안에 변화되지 않는다는 의미에서 정적이라 할 수 있다.

    반대로, 본 발명의 매크로블록 레벨 시간 할당은 동작시간에 적응되는 매크로블록의 시간목표가 동일한 그룹에서 다른 그룹들의 복잡도에 따라서 시간목표가 할당된다.

    Tmb(i)를 i th 그룹에서 매크로 블록들에 대한 시간목표로 표시한다. 동일한 시간목표들이 i th 그룹에서 모든 매크로블록들에 동일한 시간목표가 할당되었다면 Tgr(i)를 Sgr(i)로 단순히 나눔으로써 얻어진다. 즉,

    Tmb adapt (i,k)를 i th 그룹에서 k th 블록을 위한 시간목표로 표시한다. Tmb past (i,k)와 Tmb future (i,k)를 도 5에서 이전 매크로 블록의 처리시간과 다음 매크로블록의 처리시간으로 표시한다.

    그룹 Tgr(i)의 전체 처리시간은 Tmb adapt (i,k), Tmb past (i,k), Tmb future (i,k)의 합이다. 따라서 k th 매크로블록의 시간목표는 다음의 수학식 8로 주어진다.

    수학식 8

    이전 그룹의 인코딩 시간이 할당된 시간Tgr(i-1)보다 작을 때, 현재 그룹은 이전 그룹의 잉여 처리시간을 이용할 수 있다. Egr(i)를 이전 그룹의 잉여시간으로 표시하고, Tgr adapt (i)를 잉여시간 Egr(i)를 이용할 수 있는 현재 그룹의 시간목표로 표시한다.

    다음의 수학식 9에서 수학식 7의 Tgr(i)를 Tgr adapt (i)로 대체하면 수학식 8은 다음의 수학식 10으로 된다.

    수학식 9

    수학식 10

    이전 매크로블록들의 처리시간 Tmb past (i,k)은 현재 매크로블록이 처리될 때에는 이용할 수 있다. 그러나 다음 매크로블록 Tmb future (i,k)의 처리시간은 현재 그룹이 끝나기 전에는 알 수 없다. Emb(i)를

    로 정의할 때, 다음 매크로 블록 Tmb

    future (i,k) 의 실행시간은 Emb(i) 와 Tmb(i)로 부터 다음의 수학식 11과 같이 얻어진다.

    수학식11

    여기에서 Sgr future (i)는 현재 그룹에 있는 다음 매크로블록들의 수를 나타내고, i th 그룹이 시간목표 Tgr adapt (i)보다 빨리 끝나게 되는 것을 가정한다. i th 그룹의 처리시간은 Tgr execution (i)로 표시한다. 그러면 현재 그룹의 잉여시간은 다음 수학식 12에 의하여 정의된다.

    수학식 12

    이 잉여시간 Egr(i+1)은 (i+1) th 그룹을 위해서 식 10에 사용된다.

    4.실험결과

    방향 필터링에 의한 스피드상승과 질 저하가 " Foreman sequence"와 " Mother and Daughter sequence"(실험에 사용되는 영상은 도 12에 도시됨)로 평가되었다. 각각의 비디오는 100 CIF-size (352x288) 프레임들로 구성되고, 인코드된 프레임 시퀀스 패턴은 IPBPB... (B 프레임들은 기준 프레임들로 사용되지 않는다)인 반면 에 I 프레임들은 매 30프레임마다 삽입된다. 도 6의 (a)는 두 시퀀스들에서 50B 프레임들의 인코딩시간을 보여주고, 여기에서 NoFiltered로 표기된 그레이 그래프는 방향 필터링이 없는 인코딩 시간을 나타내는 반면에 BiFiltered로 표기된 블랙 그래프는 전술된 방향 필터링이 적용된 것을 도시한다. 세로축은 하나의 프레임에 대한 싸이클 수를 나타내고, 수평축은 프레임수를 나타낸다. 이 그래프들은 BiFiltered 의 인코딩 스피드가 대략 Nofiltered에 비해서 대략 20% to 40% 개선된 것을 나타낸다. 스피드에서 관찰된 이득은 이러한 방향 필터링에 의하여 FME가 단방향으로 예측된 매크로 블록의 대략 55% and 80%에서 비롯된 것이다.

    도 6의 (b)는 PSNR값들을 나타내고, 여기에서 그레이와 블랙 그래프는 방향성 필터링이 있을 때와 없을 때의 PSNR을 나타낸다. 이들 그래프에서 알수 있는 바와 같이 방향성 필터링에 의한 PSNR의 감소는 매우 낮다(평균 0.03dB 악화).

    표 4는 방향 필터링의 왜곡율을 나타낸다. 4개의 테스트 시퀀스에서, 방향 필터링의 적용에 의한 비트율과 PSNR이 제시된다. 100프레임들의 4개의 CIF-사이즈 비디오는 매 30 프레임마다 삽입되는 I 프레임을 갖는 "IPBPB…" 시퀀스 패턴으로 인코드된다. 이 표에서 나타나는 바와 같이 최대 비트율 변화는 PSNR이 최대 악화인 0.04dB일 때 2.86%로 된다. 표 4에서 제시되는 바와 같이 방향 필터링에 의하여 발생되는 RD 악화는 매우 작다.

    표 4

    다음 실험은 전술된 스피드 제어 방법의 성취도를 평가한다. 한 프레임의 인코딩 싸이클이 도 7(a)에 도시된다.

    30 프레임의 HD-size (1280x720) 비디오 시퀀스" Mobile and Calendar" 가 사용되고, 각 프레임들의 인코딩 싸이클이 RTL 시뮬레이션으로부터 얻어진다. 도 7(a)는 단지 P와 B(I 프레임이 배제된다) 의 실행 싸이클을 나타낸다.

    가장 긴 실행싸이클들을 갖는 프레임들은 B 프레임들에 일치하고, 가장 짧은 실행싸이클들을 갖는 프레임들은 P 프레임들에 일치한다. 이 실행 스피드는 30 프레임들의 평균이 200Mhz의 클럭 주파수를 갖고 초당 처리된다. 이 평균 프레임율을 유지하기 위하여 인코더는 카메라로부터 연속되는 입력에 대응하기 위하여 커다란 버퍼를 갖어야 한다. 반대로, 입력 버퍼가 단지 프레임들의 최소 수를 저장한다면 가장 긴 인코딩 싸이클들(평균 인코딩 싸이클들이 아닌)은 적정 동작주파수를 결정한다. 이러한 케이스에서, 동작주파수260Mhz는 30 fps를 처리하기 위하여 필요하다. 모든 프레임의 처리시간들은 처리 스피드가 모든 프레임들의 목표 인코딩 시간을 충족시키는 것을 의미하는 목표라인 이하이면 이러한 케이스에서, 30 fps 프레임율은 최소 입력 버퍼를 갖고도 220Mhz의 동작 클럭 주파수에서 달성될 수 있다.

    표 5는 본 발명의 스피드 제어 알고리즘의 결과를 도시하고, 그 알고리즘은 다양한 클럭 주파수; 220MHz, 240MHz 및 260MHz에 의하여 30 fps로 처리되고, 최소 버퍼사이즈가 이 실험에서 사용되어진다. PSNR과 비트율은 스피드 제어 없는 H.264 인코더의 결과와 비교되고, 그 차이가 표 5에 제시된다. 30fps에서 스피드 제한 없는 인코더는 최소 버퍼 사이즈를 갖을 때 295Mhz ( Pedestrian ), 260MHz ( Mobcal ), 및 300MHz 이상 ( Parkjoy and Parkrun )을 필요로 한다. 이 결과 본 발명의 스피드 제어는 인코딩 시간을 대략 15%에서 30%까지 개선시킨다. 압축효율에서, 목표 주파수가 220Mhz일 때에 스피드 제어가 비트 율을 1.43%에서 4.94%까지 증가시킨다. 목표 주파수가 증가함에 따라서, 비트율의 중가는 감소하며, PSNR은 스피드 제어에 의하여 다소 감소되는 반면 그 양은 무시할 수 있다. P와 B 슬라이스 사이에 비트율의 증가와 P 슬라이스에서 PSNR의 감소는 P 슬라이스의 것보다 크며, 이는 B 슬라이스들에서 실시간 스케쥴링이 B 슬라이스가 P 슬라이스보다 긴 인코딩 시간을 필요로 하기 때문에 P 슬라이스에서 보다 빈번히 불충분한 실행시간을 만나게 되는 것을 의미한다. 그러나 그 결과는 또한 B 슬라이스들의 질 저하는 전체 비디오의 질의 심각하게 악화시키지 않는 것을 의미하며, 이는 B 슬라이스들이 예측을 위한 기준으로 사용되지 않았기 때문이고, 따라서 질 악화는 다음 프레임들로 전파되지 않는다.

    마직막 실험은 2-레벨제어를 그룹 레벨시간 할당을 적용하지 않으며 단순히 매크로블록 레벨 스피드 제어를 하는 1-레벨제어와 비교한다. 즉, 1-레벨 제어는 한 그룹을 전체 프레임으로 하는 2-레벨 스피드 제어와 일치한다. 4 CIF 사이즈 비디오 시 퀀스는 2-레벨과 1-레벨 시간할당을 사용하여 인코드되고, 비트율과 PSNR의 변화가 표 6에서 비교된다. 비트율은 1.2에서 6.4%로 감소하고, PSNR은 1-레벨 시간할당보다 높게 0.02에서 0.19dB로 변화된다. P 슬라이스에서 비트율과 PSNR에 대한 2-레벨 할당 구조의 영향은 일반적으로 시간목표이 P슬라이스 인코딩에서는 충분하기 때문에 작아진다. 2-레벨 시간할당을 1-레벨 시간할당에 비하여 개선된 점을 입증하기 위하여 레이트 왜곡 성능을 비교하였다.

    도 8의 (a)는 CIF 사이즈"Flower" 시퀀스의 65번째 프레임을 도시하고, 도 8 (a)의 오른쪽 그래프는 각 매크로 블록에 대한 평균의 PSNR를 도시한다. 수직축은 매크블록 라인의 수직 위치를 나타내고, 수평축은 각 매크로블록 라인에 대한 평균의 매크로블록들의 PSNR을 나타낸다. 도시된 바와 같이 PSNR은 매크로 블록 라인에 따라서 심각하게 변화한다. 2- 레벨과 1-레벨의 시간할당 모두 실행되고 비교되었다. 도 8(b)와 도 8(c)는 B 프레임의 각각에서 상부 다섯 개(1에서 5번까지)와 낮은 다섯 개(14에서 18번가지)의 매크로블록들에 대한 각각의 레이트 왜곡커브 도시한다. 4개의 QP 값들 20, 24, 28, 32이 사용되었다. 이와 같이 낮은 부분이 도 8(a)에 도시된 오른 쪽 그래프에서 알 수 있듯이 가장 낮은 PSNR을 갖고, 높은 다섯 개의 매크로블록 라인들은 가장 높은 PSNR을 갖기 때문에 낮은 다섯 개의 매크로블록들이 선택된다. 도 8(b)에 도시된 바와 같이 C_2level로 표기된 2-레벨 시간할당은 C_1level로 표기된 1-레벨 할당에 비하여 약 4.94% 만큼 평균 BDBR( Bjontegaard delta bit rate)이 증가하고, 약 0.163dB 만큼 평균 BDPSNR(Bjontegaard delta PSNR)이 감소한다. 도 8(c)에서 C_1level에 대한 C_2level의 평균 BDBR 세이브와 평균BDPSNR 이득은 각각 4.53% 및 0.368dB이다. 이러한 결과는 2-레벨 시간 할당은 낮은 PSNR의 매크로 블록들을 위한 RD퍼포먼스를 개선시키는 반면에 높은 PSNR의 매크로블록의 RD 퍼포먼스를 감축시킨다. 결과적으로, 동일한 프레임에서 RD 퍼포먼스에서의 차이가 감소된다. 이러한 것은 2-레벨 시간할당구조는 낮은 PSNR 매크로블록에 대하여 큰 시간목표를 할당하고, 결국 그 매크로 블록은 복잡한 인코딩 모드에서 인코드 되기 때문에 이루어진다.

    5. 하드웨어의 구성

    본 발명의 메인 프로파일 예측과 스피드 제어모듈은 Verilog/VHDL 모델과 집적화된 H.264/AVC 인코더로 수행된다.

    도 9는 인코더의 블록도를 도시하고, 도 10은 H.264/AVC 인코더 칩의 테스트 보드를 도시한다. 도 10의 인코더 칩은 H.264/AVC의 베이스라인 프로파일을 충족하도록 설계되어 있다.

    H.264/AVC는 메인 프로파일을 충족하도록 확장되고, 본 발명의 스피드제어모듈이 집적화된다. 스피드 제어 모듈을 갖는 메인 프로파일 인코더는 도 11에 도시된 FPGA 프로토 타입 보드로 도시된다. 메인 프로파일 인코더에서, 대부분의 계산은 하드웨어에서 수행되고, 파이프라인 스케쥴과 시스템 구성은 OpenRISC processor 상에 동작되는 소프트웨어에서 처리된다. 카메라 인터페이스는 카메라로부터 입력 데이트를 입력받고, 외부의 SDRAM에 저장한다. 비디오 입력모듈은 SDRAM에 저장된 데이터를 움직임 평가와 인트라 예측을 위하여 로드한다. USB 인터페이스는 인코드된 스트림을 외부 USB 전달칩에 출력하고, 외부 전달칩은 H.264 스트림을 PC에 전 달한다. 별도의 I2C 트랜시버는 PC를 코멘드를 전달하고, H.264 인코더의 상태를 감시하기 위하여 사용된다. 메모리 제어기는 외부 SDRAM과 효율적인 데이터 교환을 위하여 설계된다. 두 AMBA AHB 버스들은 두 모듈 사이에 커뮤니케이션을 위하여 사용된다. 하나의 AHB 버스는 OpenRISC processor로 주로 하드웨어 모듈을 제어하기 위하여 사용되고, 다른 AHB 버스는 주로 하드웨어 모듈과 외부 메모리 사이의 커뮤니케이션을 위하여 사용된다. 전체적인 인코더 시스템은 Synopsys Design Compiler에 의하여 합성되고, 내부 메모리들을 포함한 전체적인 게이트 카운트는 거의 1.3M 게이트이다. 스피드 제어를 위한 부가적인 하드웨어는 대부분 시간목표를 계산하기 위한 가산기, 감산기, 멀티플라이어들로 이루어진 4K 게이트이다. 스피드 제어 알고리즘의 게이트 계산은 H.264/AVC 인코더의 것의 0.5% 보다 적어야 한다. 방향 필터링을 위한 TH는 OpenRISC processor에서 구성될 수 있다. 다른 스피드 레벨 옵션, FME를 위한 블록사이즈 분배, FME를 위한 부분 코스트 평가와 IME를 위한 서치영역 분배는 스피드 제어 모듈에 의하여 자동적으로 선택된다. 스피드 제어 알고리즘이 커질 때, PC는 I2C 트랜스시버를 사용하는 패러미터들을 셋트 시킬 수 있다.

    도 1은 방향 필터링이 적용되는 움직임평가의 흐름을 나타내는 흐름도이다.

    도 2는 본 발명에 적용되는 P와 S 슬라이스에 대하여 H.264 인코더 파이프라인의 구성도이다.

    도 3은 SAD 평가를 위하여 계산되는 4×4블록을 도시한다.

    도 4는 본 발명에 적용되는 다양한 스피드 레벨을 갖는 H.264 메인 프로파일 인코더를 위한 스피드 제어 방법의 순서도이다.

    도 5는 본 발명의 불균일 시간할당을 위한 그룹핑을 설명하기 위한 구성도이다.

    도 6은 본 발명에서 방향 필터링에 의한 인코딩 시간을 설명하는 그래프이다.

    도 7은 본 발명에서 최소 사이즈 버퍼를 이용하여 인코딩 목표속도를 설명하는 그래프이다.

    도 8은 본 발명의 2 레벨 시간할당과 1레벨 시간할당을 비교하기 위한 그래프이다.

    도 9는 본 발명의 인코더의 블록도이다.

    도 10은 본 발명의 H.264/AVC 인코더 칩의 테스트 보드의 영상이다.

    도 11은 본 발명의 H,264/AVC 인코더를 테스트 하기 위한 FPGA 프로토타입 보드의 영상이다.

    도 12a 내지 도 12 j는 본 발명의 실험결과에 사용되는 영상들이다.

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈