KR101274112B1 - 영상 부호화 장치 - Google Patents
영상 부호화 장치 Download PDFInfo
- Publication number
- KR101274112B1 KR101274112B1 KR1020090086913A KR20090086913A KR101274112B1 KR 101274112 B1 KR101274112 B1 KR 101274112B1 KR 1020090086913 A KR1020090086913 A KR 1020090086913A KR 20090086913 A KR20090086913 A KR 20090086913A KR 101274112 B1 KR101274112 B1 KR 101274112B1
- Authority
- KR
- South Korea
- Prior art keywords
- pixel
- memory
- pixels
- bank
- unit
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/53—Multi-resolution motion estimation; Hierarchical motion estimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods 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/192—Methods 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/194—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/43—Hardware specially adapted for motion estimation or compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/43—Hardware specially adapted for motion estimation or compensation
- H04N19/433—Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods 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)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명은 H.264 비디오 코딩 표준에 따르는 영상 부호화 속도를 향상시킬 수 있도록 하는 영상 부호화 장치에 관한 것으로, 그 장치는 계층적 움직임 예측 알고리즘을 고려하여 영상 부호화 장치에 구비되는 메모리들을 재배치하고 이들의 메모리 구조를 변경시켜 줌으로써, 영상 부호화 장치 내부에 구비되는 메모리를 다양한 구성 수단으로 공유할 수 있도록 한다. 또한 프레임 메모리와 영상 부호화 장치간에 송수신되는 데이터 량은 감소되고, 영상 부호화 속도는 향상되는 효과를 제공할 수 있게 된다.
H.264, 영상 부호화, 영상 부호화 속도 향상, 메모리 구조
Description
본 발명은 H.264 표준 부호화 기술에 관한 것으로, 보다 상세하게는 H.264 비디오 코딩 표준에 따르는 영상 부호화 속도를 향상시킬 수 있도록 하는 영상 부호화 장치에 관한 것이다.
본 발명은 지식경제부의 IT성장동력기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2007-S-026-03, 과제명: MPCore 플랫폼 기반 다중포맷 멀티미디어 SoC].
국제 비디오 부호화 표준기관인 ITU-T와 ISO가 함께 JVT(Joint Video Team)를 구성하고 H.264 표준을 발표하였다.
H.264표준은 기존의 비디오 부호화 방식들과 마찬가지로, 이미 부호화된 이전 프레임으로부터의 움직임을 예측(Motion Estimation)하여 예측신호를 구성하고, 예측오류 신호를 움직임 보상(Motion Compensation)과 DCT(Discrete Cosine Transform) 변환 방법을 혼합하여 구성한다.
H.264 표준은 압축 성능을 높이기 위해 기존의 방식에 비해 더 작은 블록 사이즈인 4x4 블록 단위까지 움직임 예측을 수행하고, 1/4 화소 단위까지 움직임 보정을 수 행한다. 이러한 기술들을 기반으로 H.264 비디오 부호화 표준은 기존의 비디오 부호화 표준인 MPEG-4 ASP에 비하여 같은 영상품질에서 2배의 압축성능을 가진다.
그러나, H.264 표준 부호화 기술은 구현 시 요구되는 메모리 대역폭과 연산의 복잡도가 높기 때문에 실시간 응용에 적용하는데 어려움이 있다. 특히 기존의 1/2 화소 단위보다 복잡도가 높은 1/4 화소 단위의 움직임 예측을 수행함으로 인해 효율적인 화소 보간 방식과 움직임 예측 방식 및 많은 메모리 대역폭이 요구된다.
이에 본 발명에서는 계층적 움직임 예측 알고리즘을 고려하여 영상 부호화 장치에 구비되는 메모리들을 재배치하고 이들의 메모리 구조를 변경시켜 줌으로써, 프레임 메모리와 영상 부호화 장치간에 송수신되는 데이터 량을 감소시키고 영상 부호화 속도를 향상시켜 줄 수 있도록 하는 영상 부호화 장치를 제공하고자 한다.
상기 과제를 해결하기 위한 수단으로서, 본 발명의 일 실시 형태에 의한 영상 부호화 장치는, 현재 프레임의 이전 MB(Macro Block), 현재 MB, 및 다음 MB를 저장 및 제공하는 현재 MB 메모리; 상기 이전 MB의 거친 움직임 추정을 위한 SW(Search Window) 영역, 상기 현재 MB의 거친 움직임 추정을 위한 SW 영역, 및 상기 다음 MB의 거친 움직임 추정을 위한 SW 영역을 저장 및 제공하는 SW1 메모리; 상기 이전 MB의 미세한 움직임 추정을 위한 SW 영역의 주변 화소들 및 상기 현재 MB의 미세한 움직임 추정을 위한 SW 영역의 주변 화소들을 저장 및 제공하는 SW2 메모리; 상기 현재 MB와, 상기 현재 MB 의 SW영역을 기반으로 거친 움직임 추정 동작을 수행하는 거친 움직임 추정부; 상기 거친 움직임 추정부의 출력과, 상기 이전 MB와, 상기 이전 MB의 SW 영역과, 상기 이전 MB의 SW 영역의 주변 화소들을 기반으로 미세 움직임 추정 및 움직임 보상 동작을 수행하는 미세 움직임 추정 및 움직임 보상부; 및 상기 미세 움직임 추정 및 움직임 보상부의 출력과 상기 현재 MB 메모리 및 상기 SW1 메모리에 저장된 정보를 이용하여, 인트라 예측, 양자화, 역양자화와 역이산 코사인 변환과 역하다마드 변환 중 하나, 및 복원을 수행하는 인트라예측 및 복원부를 포함한다.
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
본 발명의 영상 부호화 장치에 따르면, 계층적 움직임 예측 알고리즘을 고려하여 영상 부호화 장치에 구비되는 메모리들을 재배치하고 이들의 메모리 구조를 변경시켜 줌으로써, 영상 부호화 장치 내부에 구비되는 메모리를 다양한 구성 수단으로 공유할 수 있도록 한다.
따라서, 본 발명은 프레임 메모리와 영상 부호화 장치간에 송수신되는 데이터 량은 감소되고, 영상 부호화 속도는 향상되는 효과를 제공할 수 있게 된다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시 예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시 예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략 하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
또한, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 본 발명의 바람직한 실시예들을 첨부한 도면을 참조하여 상세히 설명한다.
도1은 본 발명의 바람직한 일 실시예에 따른 H.264 표준 부호화 기술을 사용하는 영상 부호화 장치의 구성을 도시한 도면이다.
도1을 참조하면, 영상 부호화 장치는 영상 입력부(Video Input Module)(101), YUV 메모리(102), 현재 MB(Macro Block) 메모리(103), SW(Search Window) 1 메모리(104), SW2 메모리(105), 계수 메모리(106), 복원 MB 메모리(107), 스트림 메모리(108), 디블록킹 MB 메모리(109), 거친 움직임 추정부(Coarse-grain Motion Estimation, 이하 CME)(110), 미세 움직임 추정 및 움직임 보상부(Fine-gram Motion Estimation & Motion Compensation, 이하 FMEMC)(111), 인트라예측 및 복원부(Intra Prediction & Reconstruction, 이하 IPRED_REC)(112), 콘텍스트 기반 가변장 부호화부(Context-Adaptive Variable Length Coding, 이하 CAVLC)(113), 디블록킹부(Deblocking, 이하, DB)(114), 프레임 메모리 제어기(Frame Memory Controller, 이하 FMC)(120), 그리고 프레임 메모리(130)를 포함한다.
영상 부호화 장치에 입력된 영상은 영상 입력부(101)를 통해 YUV 메모리(102)에 임시 저장된 후, FMC(120)에 의해 프레임 메모리(130)에 저장된다.
프레임 메모리(130)에 저장된 영상 프레임은 매크로 블록(Macro Block, 이하 MB) 단위로 읽혀져 현재 MB 메모리(103)에 저장되고, 현재 프레임의 MB의 거친 움직임 추정을 위한 참조 프레임의 검색창(Search Window, 이하 SW)은 SW1 메모리(104)에 저장된 후, CME(110)가 거친 움직임 추정 동작을 수행한다.
CME(110)의 출력에 응답하여 미세 움직임 추정을 위한 참조 프레임의 SW의 주변 화소들이 SW2 메모리(105)에 저장되면, FMEMC(111)은 CME(110)의 출력, 현재 MB 메모리(103), SW1 메모리(104) 및 SW2 메모리(105)에 저장된 정보를 바탕으로 미세 움직임 추정 동작과 움직임 보상 동작을 수행한다.
그리고 IPRED_REC(112)는 FMEMC(111)의 출력과 현재 MB 메모리(103) 및 SW1 메모리(104)에 저장된 정보를 이용하여 인트라 예측(Intra Prediction, 이하 IPRED)(112-1), 양자화(Quantization, 이하 Q)(112-2), 역양자화(Inverse Quantization, 이하 IQ)/역이산 코사인 변환(Inverse Discrete Cosine Transformation, 이하 IDCT)/역하다마드 변환(Inverse Hadamard, 이하 IHADAMARD)(112-3), 복원(Reconstruction, 이하 REC)(112-4)을 순차적으로 수행한다.
이때, 양자화 동작을 통해 생성된 양자화 결과는 계수 메모리(106)에 저장되며, 복원 동작을 통해 생성된 복원 결과는 복원 MB 메모리(107)에 저장된다.
CAVLC(113)은 계수 메모리(106)에 저장된 영상을 바탕으로 콘텍스트 기반 가변장 부호화 동작을 수행한 후, 그 결과를 스트림 메모리(108)에 저장하여, 압축 영상으로 최종 출력되도록 한다.
그리고 DB(114)는 복원 MB 메모리(107)에 저장된 영상에 대해 디블록킹 동작을 수행한 후, 디블록킹된 영상을 디블록킹 MB 메모리(109)에 저장한다.
이와 같이 구성 및 동작되는 영상 부호화 장치의 통신 구조는 도2에 도시된 바와 같이 4단계 파이프라인(Pipeline)을 위해 크게 4 개의 스테이지(stage)로 나뉘어진다.
먼저, 스테이지1에서는 현재 MB 메모리(103)와 SW1 메모리(104)가 FMC(120)를 통해 프레임 메모리(130)로부터 영상 프레임을 읽어온다.
스테이지2에서는 현재 MB 메모리(103), SW1 메모리(104)에 저장된 데이터를 기반으로 거친 움직임 추정 동작을 수행한다. 그리고, SW2 메모리(105)은 FMEMC(111)의 동작에 필요한 데이터를 FMC(120)를 통해 프레임 메모리(130)로부터 읽어 온다.
스테이지3에서는 스테이지1 및 2의 동작을 수행한 현재 MB 메모리(103), SW1 메모리(104) 및 SW2 메모리(105)에 저장된 데이터를 통해 FMEMC(111) 및 IPRED_REC(112)가 동작을 수행한 후, 그 결과를 계수 메모리(106) 및 복원 MB 메모리(107)에 저장한다.
스테이지4에서는 CAVLC(113) 및 DB(114)가 계수 메모리(106) 및 복원 MB 메모리(107)에 저장된 데이터를 기반으로 동작을 수행하여, 스트림 메모리(108)과 디블록킹 MB 메모리(109)에 동작 결과를 저장한다.
이와 같이 본 발명의 영상 부호화 장치는 4단계 파이프라인의 통신 구조를 가지는데 반해, 프레임 메모리(130)와 통신을 위한 FMC(120)는 하나 밖에 없어 동시에 여러 메모리와 통신을 하지 못하는 제약에 있다.
이에 본 발명에서는 이하와 같은 구조를 가지는 메모리들을 제안하여, 상기의 제약으로 인해 발생될 수 있는 문제를 최소화시켜 준다.
도3a 및 도3b는 본 발명의 바람직한 일 실시예에 따른 현재 MB 메모리의 구조를 설명하기 위한 도면이다.
도3a 및 도3b에 도시된 바와 같이, 현재 MB 메모리(103)는 FMC(120)의 제어 하에 현재 프레임의 이전, 현재 및 다음 MB((N-1)th MB, Nth MB, (N+1)th MB)의 휘도 및 색차 신호(YUV)를 분산 저장하는 제1 내지 제3 뱅크(301~303)와, CME(110)의 제어 하에 현재 프레임의 이전 및 현재 MB((N-1)th MB, Nth MB)의 휘도 신호(Y)만을 분산 저장하는 두 개의 뱅크(304,305)로 이루어진다.
이때, 제1 내지 제3 뱅크(301~303) 각각은 MB 단위 YUV를 저장할 수 있는 뱅크 용량을 가지고, 제4 및 제5 뱅크(304,305) 각각은 MB 단위 Y를 저장할 수 있는 뱅크 용량을 가진다.
이하, 도3a 및 도3b를 참조하여 현재 MB 메모리(103)의 동작 방법을 설명하면 다음과 같다.
먼저, 도3a에 도시된 바와 같이 현재 동작(Nth)시에는 제1 뱅크(301)에는 CME(110)가 다음에 사용할 (N+1)th MB의 YUV가, 제2 뱅크(302)에는 CME(110)가 사용하고 Nth MB의 YUV가, 제3 뱅크(303)에는 CME(110)가 사용 완료한 (N-1)th MB의 YUV가 각각 저장된다. 그리고 제4뱅크(304)에는 CME(110)가 사용하고 있는 Nth MB의 Y가 저장되고, 제5뱅크(305)에는 CME(110)가 사용 완료한 (N-1)th MB의 Y가 각각 저장된다.
그리고 CME(110), IPRED(112-1) 및 FMEMC(111)는 제2 뱅크(302), 제3 뱅크(303) 및 제5 뱅크(305)에 저장된 데이터를 사용해준다.
이어서 다음 동작이 수행되면, 현재 MB 메모리의 상태는 도3b에 도시된 바와 같이 변화된다.
즉, 다음 동작이 되면, FMC(120)는 더 이상 필요 없는 (N-1)th MB의 YUV가 저장된 제3 뱅크(303)를 초기화시킨 후, (N+2)th MB를 새로이 저장한다. 그리고 CME(110)도 더 이상 필요 없는 (N-1)th MB의 Y가 저장된 제5 뱅크(305)를 초기화한 후, (N+1)th MB의 Y를 새로이 저장한다. 즉, FMC(120) 및 CME(110)는 더 이상 필요 없는 데이터가 저장된 뱅크를 찾아, 이에 새로운 데이터를 저장해준다.
그리고 CME(110), IPRED(112-1) 및 FMEMC(111)는 새로운 뱅크, 즉 제1뱅크(301), 제2뱅크(302) 및 제4 뱅크(304)에 저장된 데이터를 사용해준다.
이와 같이, 본 발명에서는 FMC(120)와 CME(110)를 통해 각 동작주기 마다 더 이상 필요 없는 데이터가 저장된 현재 MB 메모리(103)의 뱅크를 찾아 새로운 데이터를 저장하고, CME(110), IPRED(112-1) 및 FMEMC(111)는 뱅크의 접근 위치를 옮겨가면서 자신이 원하는 데이터를 획득하도록 한다.
그 결과, 하나의 현재 MB 메모리(103)는 다수의 구성 요소(즉, CME(110), IPRED(112-1) 및 FMEMC(111))에 의해 공유된다.
도4a 내지 도4d는 본 발명의 바람직한 일 실시예에 따른 SW1 메모리의 구조를 설명하기 위한 도면으로, 이때 도4a는 CME(110)의 SW 영역을, 도4b 내지 도4d는 제N 내지 제(N+2) 동작시에 SW1 메모리(104)의 상태를 각각 나타낸다.
먼저, 도4b 내지 도4d를 참조하면, SW1 메모리(104)는 제1 내지 제9 뱅크(401~409)로 이루어지며, 제1 내지 제9 뱅크(401~409) 각각은 도4a에 도시된 바와 같이 참조 프레임으로 사용되는 복원 프레임의 거친 움직임 추정을 위한 SW영역을 균등하게 M(M은 자연수) 등분한 영역의 Y 만을 저장할 수 있는 뱅크 용량을 가진다.
이하에서는 설명의 편이를 위해 SW영역이 3 등분하는 경우를 일례로 들어 설명하기로 한다.
계속하여 도4 b 및 도4d를 참조하여, SW1 메모리(104)의 동작 방법을 설명하면 다음과 같다.
우선, 최초 동작시에 FMC(120)은 복원 프레임으로부터 세 개의 SW를 동시에 읽어와 SW1 메모리(104)내 여섯 개의 뱅크에 분산 저장하고, 이후 동작에서는 SW를 하나씩 읽어와 두 개의 뱅크에 분산 저장해준다.
즉, 도4b를 참조하면, FMC(120)는 최초 동작시에는 ((N-1)th SW 내지 (N+1)th SW)을 동시에 읽어와 제1 내지 제3 뱅크(401~403)와 제6 내지 제8 뱅크(406~408)에 분산 저장한 후, 그 다음에는 (N+2)th SW만을 읽어와 제4 및 제9뱅크(404, 409)에 분산 저장해준다.
그러면, CME(110)는 제2 내지 4 뱅크(402~404)에 저장된 Nth SW 내지 (N+2)th SW를 이용하여 거친 움직임 추정 동작을 수행할 수 있게 된다. 그리고 FMEMC(111)은 1 주기 이전 동작시에 사용한 SW 영역이 필요하므로, 제6 내지 제8 뱅크(406~408)에 저장된 (N-1)th SW 내지 (N+1)th SW를 이용해준다.
그리고 새로운 동작 주기가 되면, 도4c에 도시된 바와 같이 FMC(120)는 더 이상 필요 없는 데이터((N+1)th SW)가 저장된 제1 뱅크(401)를 초기화한 후, (N+3)th SW를 읽어와 제1 뱅크(401)와 제5뱅크(405)에 분산 저장해준다.
이와 동일한 방식으로, 그 다음 동작 주기 때에도 도4d에 도시된 바와 같이 FMC(120)는 제2 및 제6 뱅크(402, 406)를 삭제한 후, (N+4)th SW를 새로이 저장해준다.
이와 같이, 본 발명에서는 FMC(120)를 통해 각 동작주기 마다 더 이상 필요 없는 데이터가 저장된 SW1 메모리(104)의 뱅크를 찾아 새로운 데이터를 저장하고, CME(110) 및 FMEMC(111)는 뱅크의 접근 위치를 옮겨가면서 자신이 필요로 하는 데이터를 획득하도록 한다.
그 결과, SW1 메모리(104)도 현재 MB 메모리(103)와 같이 다수의 구성 요소(즉, CME(110) 및 FMEMC(111))에 의해 공유될 수 있게 된다.
도5는 본 발명의 바람직한 일 실시예에 따른 SW2 메모리의 구조를 설명하기 위한 도면이다.
도5에 도시된 바와 같이, SW2 메모리(105)는 제1 및 제2 뱅크(501, 502)로 구성되어, 이중 버퍼링 방식으로 FMEMC(111)이 필요로 하는 주변 영역의 화소들을 저장한다.
즉, FMEMC(111)가 하나의 뱅크(502)에 접근하여 해당 뱅크를 읽는 동안, SW2 메모리(105)는 더 이상 필요 없는 데이터가 저장된 뱅크(501)를 초기화시킨 후, 다음 동작에 필요한 데이터를 저장해준다.
참고로, FMEMC(111)의 SW영역은 CME(110)의 SW영역을 벗어나지 않지만 내부적으로 1/4 화소단위(pel) 움직임 예측을 위해 1 화소를 이용하여 1/4 화소를 보간(Interpolation)하는데 6 탭 필터(tap filter) 방식을 사용하며, 이를 위해서는 CME(110)의 SW 영역 주변으로 3개의 화소가 추가적으로 필요해진다. 이에 CME(110)의 출력에 영향을 받아 추가적인 화소가 필요한 경우, 해당 부분의 영역을 읽어와 SW2 메모리(105)에 저장해준다.
또한 상기의 설명에서는 생략되었지만, 계수 메모리(106), 복원 MB 메모리(107), 스트림 메모리(108) 및 디블록킹 MB 메모리(109)도 SW2 메모리(105)에서 와 같이 구성하고 이중 버퍼링 방식으로 데이터를 저장해준다.
본 발명에 따른 현재 MB 메모리(103), SW1 메모리(104) 및 SW2 메모리(105)내의 뱅크 구조 및 CME(110), FMEMC(111)에서 사용하는 내부 메모리의 구조를 설명하기에 앞서, 이의 이해를 돕기 위해 CME(110)와 FMEMC(111)의 구성 및 동작 방법을 먼저 설명하기로 한다.
도6은 본 발명의 바람직한 일 실시예에 따른 CME와 FMEMC의 상세 구성을 도시한 도면이다.
도6을 참조하면, CME(110)는 2 화소 단위(이하, pel) 움직임 추정부 (610)을 구비하며, FMEMC(111)은 1 pel 움직임 추정부(621), 1/2 pel 움직임 추정부(622), 1/4 pel 움직임 추정부(623), 1/2 pel Y 보간부(624), 1/4 pel Y 보간부(625), 1/4 pel UV 보간부(626), 1/2pel Y 버퍼(627), 1/4pel Y 버퍼(628), 1/4pel UV 버퍼(629) 및 움직임 보상부(630)을 구비한다.
먼저, 도2에서와 같이 스테이지1이 되어, 현재 MB 메모리(103) 및 SW1 메모리(104)에 MB와 이의 거친 움직임 추정을 위한 SW 영역이 저장되면, 스테이지2가 될 때에 CME(110)의 2 pel 움직임 추정부(610)는 현재 MB 메모리(103) 및 SW1 메모리(104)에 저장된 MB와 이의 SW 영역을 기반으로 수학식1에 따른 움직임 예측을 수행하여 2화소 단위의 움직임 벡터와 최소 비용을 계산한다.
그리고 스테이지3이 되면, FMEMC(111)의 1 pel 움직임 추정부(621)는 2 pel 움직임 추정부(610)의 출력, 현재 MB 메모리(103) 및 SW1 메모리(104)에 저장된 MB와 이의 미세한 움직임 추정을 위한 SW 영역(이때, FMEMC(111)가 이용하는 데이터는 CME(110)가 이용하는 데이터에 비해 1주기 이전의 데이터임)를 기반으로 수학식1을 통해 1화소 단위의 움직임 벡터와 최소 비용을 계산한다. 그 동안 1/2pel Y 보간부(624)는 SW2 메모리(105)에 저장된 휘도 신호를 기반으로 수학식2를 통해 1/2 화소 단위로 보간된 1/2 휘도 보간 신호 비용(REF_Y_1/2)를 생성하여 1/2pel Y 버퍼(627)에 저장한다.
1/2 pel 움직임 추정부(622)는 1 pel 움직임 추정부(621)의 출력과, 상기의 SW 영역 및 1/2 휘도 보간 신호 비용(REF_Y_1/2)을 기반으로 수학식1을 통해 1/2화소 단위의 움직임 벡터(MV_by_1/2pel ME)와 최소 비용(Min_Cost_by_1/2pel ME)를 계산한다. 그 동안 1/4 pel Y 보간부(624)는 상기의 1/2 휘도 보간 신호 비용(REF_Y_1/2)와 SW 영역을 기반으로 수학식3를 통해 1/4 화소 단위로 보간된 1/4 휘도 보간 신호(REF_Y_1/4)를 생성하여 1/4pel Y 버퍼(628)에 저장한다.
1/4 pel 움직임 추정부(623)는 1/2 pel 움직임 추정부(622)의 출력, 상기의 SW 영역 및 1/4 휘도 보간 신호 비용(REF_Y_1/4)를 기반으로 수학식1을 통해 1/4화소 단위의 움직임 벡터(MV_by_1/4 pel ME)와 최소 비용(Min_Cost_by_1/4 pel ME)를 계산한다. 그 동안 1/4 pel UV 보간부(626)는 상기의 1/2 휘도 보간 신호 비용(REF_Y_1/2)와 SW 영역을 기반으로 수학식4를 통해 1/4 화소 단위로 보간된 1/4 색차 보간 신호(REF_UV_1/4)를 생성하여 1/4pel UV 버퍼(629)에 저장한다.
움직임 보상부(630)는 1/4 pel 움직임 추정부(623)의 출력, 1/4 휘도 보간 신호, 및 1/4 색차 보간 신호를 기반으로 움직임 보상 동작을 수행하여, 움직임 보상 결과를 IPRED(112-1)에 제공한다.
움직임 보상부(630)는 1/4 pel 움직임 추정부(623)의 출력, 1/4 휘도 보간 신호, 및 1/4 색차 보간 신호를 기반으로 움직임 보상 동작을 수행하여, 움직임 보상 결과를 IPRED(112-1)에 제공한다.
MinCost=MIN{Cost(▽x, ▽y)}
이때, MotionVector는 움직임 벡터, MinCost는 최소 비용, (▽x, ▽y )는 화소 지점, Cost(▽x, ▽y)는 비용 함수, CurrentFrame은 현재 프레임, ReferenceFrame은 참조 프레임을 각각 의미함.
이때, E,F,G,H,I,J는 수평으로 나열된 1 화소 단위의 휘도 값이고, b는 G,H 화소 사이의 1/2 화소 단위의 휘도 값을 각각 의미함.
이때, a는 G와 b사이의 1/4 화소 단위의 휘도 값을 의미함.
이때, a는 상하좌우로 인접된 4개의 화소(A,B,C,D) 화소에서 보간되는 화소가 지점 A로부터 (dx, dy)만큼 이동된 지점임. 단 A=(xa,ya), a=(xa +dx, ya+dy)로 계산됨.
도7은 본 발명의 바람직한 일 실시예에 따른 현재 MB 메모리의 뱅크 구조를 도시한 도면이다.
도7을 참조하면, 현재 MB 메모리내 하나의 뱅크(30x)는 4개의 메모리 영역(30x-1~30x-4)으로 구분되어, 현재 프레임의 MB내 하나의 블록(Block)의 4워드(Block_w0~ Block_w3)를 분산 저장한다.
이때, 제1 및 2메모리 영역(30x-1, 30x-2)은 홀수 라인의 워드(Block_w0, Block_w2)를, 제3 및 4메모리 영역(30x-3, 30x-4)은 짝수 라인의 워드(Block_w1, Block_w3)를 저장한다.
이에 하나의 뱅크(30x)내 4개의 메모리영역은 독립된 출력 포트를 갖고 있어 한번의 접근으로 각 메모리영역에서 1 워드를 읽을 있어 모두 1 블록을 읽을 수 있다. 즉, 블록 단위 처리를 하는 구성요소들이 동시에 하나의 블록을 읽어 처리할 수 있도록 해준다.
또한 본 발명의 CME(110)의 2 pel 움직임 추정부(610)는 종래에서와 같이 MB의 크기인 16x16 매트리스만큼의 화소에 대한 움직임 예측을 하지 않고, 1/2샘플링을 한 8x8 매트리스만큼의 화소에 대한 움직임 예측을 하도록 한다.
그리고 2 pel 움직임 추정부(610)의 동작을 지원하기 위해 본 발명에서는 프레임 메모리(130)에서 읽어온 화소 중 유효화소와 무효화소를 나누어 물리적으로 서로 다른 메모리 영역에 저장하도록 한다. 즉, 동일 블록내 동일 라인의 4개의 화소들 중에 첫 번째 및 세 번째 화소는 짝수 메모리 영역(even)에 저장하고, 두 번째 및 네 번째 화소는 홀수 메모리 영역(odd)에 저장한다.
그러면 2 pel 움직임 추정부(610)는 현재 MB 메모리(103)을 사용할 때 제1 및 제2 메모리 영역(30x-1, 30x-2)내의 짝수 메모리 영역만을 사용하며, 데이터를 워드 단위로 읽을 때 제1 및 제2 메모리 영역(30x-1, 30x-2)에 저장되는 동일 라인의 이웃 블록의 화소까지 각각 4개의 유효 화소를 얻게 된다.
그리고 IPRED(112-1), 1 pel 움직임 추정부(621), 1/2 pel 움직임 추정부(622), 1/4 pel 움직임 추정부(623)가 제1 및 제2 메모리 영역(30x-1, 30x-2)를 사용할 때 워드 단위로 읽을 수 있도록, 짝수 및 홀수 메모리 영역(odd, even)은 하프 워드(half-word) 단위로 읽혀진다.
도8은 본 발명의 바람직한 일 실시예에 따른 SW1 메모리와 SW2 메모리의 뱅크 구조를 도시한 도면이다.
도8을 참조하면, SW1 메모리내 하나의 뱅크(40x)는 2개의 메모리 영역(40x-1, 40x-2)으로 구분되고, SW2 메모리내 하나의 뱅크(50x)는 4개의 메모리 영역(50x-1~50x-4)로 구분된다.
앞서 설명한 바와 같이, 본 발명의 2 pel 움직임 추정부(610)는 종래에서와 달리 1/2샘플링을 한 8x8 매트리스만큼의 화소에 대한 움직임 예측을 하기 때문에, 참조 프레임 내의 SW 영역 내의 데이터도 현재 MB를 읽는 특성을 그대로 따라간다.
이에 SW1 메모리(104)의 뱅크(40x)은 SW 영역을 블록 단위로 나누었을 때, 4 개의 워드 중에 홀수 라인의 워드는 2개의 메모리 영역(40x-1, 40x-2)에 분산 저장한다. 그리고 이들 워드(Block_w0, Block_w2)내의 첫 번째와 세 번째 화소는 홀수 메모리 영역(odd)에, 두 번째와 네 번째 화소는 짝수 메모리 영역(even)에 저장한다.
그리고 2 pel 움직임 추정부(610)은 홀수 메모리 영역(odd)만을 읽어가고, 1 pel 움직임 추정부(621), 1/2 pel Y 보간부(624), 1/4 pel Y 보간부(625), 1/4 pel UV 보간부(626)는 짝수 메모리 영역(even)도 읽어가도록 한다.
SW2 메모리(105)는 CME(110)의 동작 결과에 따라 필요한 블록의 4 개의 워드 중에 짝수라인의 워드(Block_w1, Block_w3)와, 짝수라인의 좌우 영역의 화소들을 읽어와 제3 및 제4 메모리 영역(50x-3,50x-4)에 저장한다.
움직임 보간 동작을 위해서는 SW 영역 외에 상하좌우로 3개의 화소를 포함하는 영역이 더 필요한데, 이는 이미 제3 및 제4 메모리 영역(50x-3,50x-4)에 저장되어 있을 수 있다. 그러나 만약 그렇지 못하면, SW2 메모리(105)는 상위와 하부 영역의 화소들(ITP_upper_bottom)은 제 1 메모리 영역(50x-1)에 저장하고, 홀수 라인의 좌우 영역의 화소들(Block_wo_w2_ITP)은 제2메모리 영역(50x-2)에 저장해준다.
도9는 본 발명의 바람직한 일 실시예에 따른 1/4 pel 보간을 끝낸 참조 프레 임의 SW 의 일부를 나타낸 도면이다.
도9에서, 영문자 대문자는 1 화소 단위 값이고, 영문 소문자는 1/2 화소 단위 값이고, 숫자는 1/4 화소 단위 값을 각각 나타낸다. 이러한 표기 방식은 이하의 도10 및 도11에서 동일하게 적용하도록 한다.
이때, SW상에서 1 화소 단위 값은 1 화소 간격으로 위치되며, 1/2 화소 단위 값은 1 화소 단위 값에 대해 1/2 화소 간격을 가지도록 위치되며, 1/4 화소 단위 값은 1/2 화소 단위 값에 대해 1/4 화소 간격을 가지도록 위치된다.
만약, 1 pel 움직임 추정부(621)로부터 출력되는 1 화소 단위의 움직임 벡터가 G 화소이면, 1/2 pel 움직임 추정부(622)는 G 화소 제외한 a, b, c, i, j, m, n 및 o에서부터 1화소단위로 오른쪽으로 16개와 아래쪽방향으로 16개의 16x16 화소를 읽어 총 8번의 비용 계산을 한다.
1/2 pel 움직임 추정부(622)가 비용 계산을 a 화소에서 시작을 하는 경우, 가로로는 a, c, e, g, … 가 되고, 세로로는 a, m, y, ll… 이 된다.
이에 본 발명에서는, 각각의 8번의 비용 계산을 독립적으로 수행하기 위해 도10과 같은 메모리 맵을 갖는 3개의 뱅크로 구성된 메모리로 1/2pel Y 버퍼(627)를 구성하도록 한다.
도10을 참조하면, Bank0에는 1화소 단위의 움직임 벡터인 G 화소의 상부좌측 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소(즉, a 화소)를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되며, 이는 a, c, m, o로 시작하는 비용 계산에 사용된다.
Bank1는 G 화소의 상부방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소(즉, b 화소)를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되며, b, n 로 시작하는 비용 계산에 사용된다.
Bank2는 G 화소의 좌측방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소(즉, i 화소)를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되며, 이는 i, j 로 시작하는 비용 계산시 사용된다.
이러한 1/2pel Y 버퍼(627)의 Bank0 내지 Bank2는 물리적으로 분리된 포트(port)를 가지고 있어 동시에 읽을 수가 있다.
그리고, 1/2 pel 움직임 추정부(622)를 통해 출력되는 1/2화소 단위의 움직임 벡터(MV_by_1/2pel ME)가 a 화소이면, 1/4pel Y 버퍼(628)를 사용하는 1/4 pel 움직임 추정부(623)에서 필요로 하는 화소들은 a 화소를 기준으로 하여 1/4 화소 간격으로 저장된다.
그리고 1/4 pel 움직임 추정부(623)는 a 화소를 제외한 1, 5, 49, 9, 53, 57, 61, 65에서 1화소단위로 오른쪽으로 16개와 아래쪽으로 16개의 16x16 화소를 읽어 총 8번의 비용 계산을 한다. 만약, 1/4 pel 움직임 추정부(623)가 비용 계산을 1에서 시작을 하는 경우, 가로로는 1, 2, 3, 4, … 가 되고, 세로로는 1, 13, 25, 37, … 이 된다.
이에 본 발명에서는, 각각의 8번의 비용 계산을 독립적으로 수행하기 위해 도11과 같은 메모리 맵을 갖는 8개의 뱅크로 구성된 메모리로 1/4pel Y 버퍼(628)를 구성하도록 한다.
Bank00에는 1/2 화소단위의 움직임 벡터인 a 화소의 상부좌측 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소(즉, 1 화소)를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되며, 이는 1로 시작하는 비용 계산시 사용된다.
Bank01에는 a 화소의 상부 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소(즉, 5 화소)를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되며, 이는 5로 시작하는 비용 계산시 사용된다.
Bank02는 a 화소의 상부우측 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소(즉, 49 화소)를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되며, 이는 49로 시작하는 비용 계산시 사용된다.
Bank10는 a 화소의 좌측 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소(즉, 9 화소)를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되며, 이는 9로 시작하는 비용 계산시 사용된다.
Bank12는 a 화소의 우측 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소(즉, 53 화소)를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되며, 이는 53으로 시작하는 비용 계산시 사용된다.
Bank20는 a 화소의 하부좌측 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소(즉, 57 화소)를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되며, 이는 57로 시작하는 비용 계산시 사용된다.
Bank21는 a 화소의 하부 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화 소(즉, 61 화소)를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되며, 이는 61로 시작하는 비용 계산시 사용된다.
Bank22는 a 화소의 하부우측 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소(즉, 65 화소)를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되며, 이는 65로 시작하는 비용 계산시 사용된다.
이때의 1/4pel Y 버퍼(628)의 Bank00 내지 Bank22도 물리적으로 분리된 포트(port)를 가지고 있어 동시에 읽을 수가 있다.
이와 같이 구성 및 동작되는 영상 부호화 장치는 이하의 표에서와 같이 종래에 비해 보다 빠른 동작 속도를 가지게 된다. 이때, 표는 영상 부호화 장치가 도2와 같은 파이프 라인 구조를 가지는 경우, MB 단위 처리에 소요되는 클럭 수를 비교한 표이다.
일반적으로 파이프라인 스테이지를 결정하는 요인은 FMC(120)에 의해 매 스테이지 이전에 필요한 메모리의 내용을 채우거나 비우는 시간이 된다. 이에 MB 단위 처리에 소요되는 클럭수는 매 스테이지마다 FMC(120)에 의해 메모리를 채우는 클록 수로 해도 무방하다.
FMC(120)에 의해 채워지고 비워지는 메모리는 현재 MB 메모리(103), SW1 메모리(104), SW2 메모리(105), 디블록킹 MB 메모리(109)이다.
만약, 영상 부호화 장치가 제안된 구조를 갖지 않는다면 CME(110)와 IPRED(112-1) 및 FMEMC(111)는 다른 스테이지에 있어 서로 다른 현재 MB를 필요로 하며, 같은 스테이지에 있는 IPRED(112-1) 및 FMEMC(111)가 필요로 하는 현재 MB의 유효 화소도 달라지게 된다.
그래서, 현재 MB 메모리(103)는 CME(110), IPRED(112-1) 및 FMEMC(111)의 용도가 각각 있어야 하며, 이들 모두가 각각 필요로 하는 현재 MB를 FMC(120)를 통해 반복적으로 프레임 메모리(130)로부터 읽어 와야 한다.
그리고, SW2 메모리(105)의 내용을 채울 때는 SW1 메모리(104)의 내용을 참조하지 않으므로, FMEMC(111)의 검색 범위(Search Range)의 모든 YUV를 저장해야 한다.
그리고, 프레임 메모리(130)는 통상적으로 에스디램(SDRAM)으로 구현되며 720p나 1080p 등의 영상크기를 지원하지 위해 카스 레이턴시(Cas Latency) 3, tRAC 7의 파라메터로 하며, 읽기/쓰기(Read/Write) 싸이클(Cycle) 측정을 위해 tRAC(라스 활성화이후 카스 활성화까지의 타이밍)은 측정에 지배적이지 않으므로 무시하고 단지 Cas Latency 3으로 성능을 비교하여 발명의 효과를 제시하였다.
메모리 종류 | 종래 기술 | 본 발명 |
현재 MB 메모리 | 360 | 192 |
SW1 메모리 | 168 | 168 |
SW2 메모리 | 264 | 168.6 |
디블록킹 MB 메모리 | 192.3 | 192.3 |
처리율(Cycle/MB) | 984.3 | 720.9 |
상기 표에 따르면, 종래 기술에서는 984 cycle이던 처리율(Throughput)이 본 발명에서는 721 cycle로 향상되어, 본 발명의 영상 부호화 속도는 종래 기술에 비해 약 26.76% 정도가 감소됨을 알 수 있다.
이상에서 설명한 본 발명은 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경할 수 있다는 것은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 당업자에게 있어 명백할 것이다.
도1은 본 발명의 바람직한 일 실시예에 따른 H.264 표준 부호화 기술을 사용하는 영상 부호화 장치의 구성을 도시한 도면이다.
도2는 도1의 영상 부호화 장치의 통신 구조를 도시한 도면이다.
도3a 및 도3b는 본 발명의 바람직한 일 실시예에 따른 현재 MB 메모리의 구조를 설명하기 위한 도면이다.
도4a 내지 도4d는 본 발명의 바람직한 일 실시예에 따른 SW1 메모리의 구조를 설명하기 위한 도면이다.
도5는 본 발명의 바람직한 일 실시예에 따른 SW2 메모리의 구조를 설명하기 위한 도면이다.
도6은 본 발명의 바람직한 일 실시예에 따른 CME와 FMEMC의 상세 구성을 도시한 도면이다.
도7은 본 발명의 바람직한 일 실시예에 따른 현재 MB 메모리의 뱅크 구조를 도시한 도면이다.
도8은 본 발명의 바람직한 일 실시예에 따른 SW1 메모리와 SW2 메모리의 뱅크 구조를 도시한 도면이다.
도9는 본 발명의 바람직한 일 실시예에 따른 1/4 pel 보간을 끝낸 참조 프레임의 SW 의 일부를 나타낸 도면이다.
도10은 본 발명의 바람직한 일 실시예에 따른 1/2pel Y 버퍼의 뱅크 매모리 맵을 도시한 도면이다.
도11은 본 발명의 바람직한 일 실시예에 따른 1/4pel Y 버퍼의 뱅크 매모리 맵을 도시한 도면이다.
Claims (19)
- 현재 프레임의 이전 MB(Macro Block), 현재 MB, 및 다음 MB를 저장 및 제공하는 현재 MB 메모리;상기 이전 MB의 거친 움직임 추정을 위한 SW(Search Window) 영역, 상기 현재 MB의 거친 움직임 추정을 위한 SW 영역, 및 상기 다음 MB의 거친 움직임 추정을 위한 SW 영역을 저장 및 제공하는 SW1 메모리;상기 이전 MB의 미세한 움직임 추정을 위한 SW 영역의 주변 화소들 및 상기 현재 MB의 미세한 움직임 추정을 위한 SW 영역의 주변 화소들을 저장 및 제공하는 SW2 메모리;상기 현재 MB와, 상기 현재 MB 의 SW영역을 기반으로 거친 움직임 추정 동작을 수행하는 거친 움직임 추정부;상기 거친 움직임 추정부의 출력과, 상기 이전 MB와, 상기 이전 MB의 SW 영역과, 상기 이전 MB의 SW 영역의 주변 화소들을 기반으로 미세 움직임 추정 및 움직임 보상 동작을 수행하는 미세 움직임 추정 및 움직임 보상부; 및상기 미세 움직임 추정 및 움직임 보상부의 출력과 상기 현재 MB 메모리 및 상기 SW1 메모리에 저장된 정보를 이용하여, 인트라 예측, 양자화, 역양자화와 역이산 코사인 변환과 역하다마드 변환 중 하나, 및 복원을 수행하는 인트라예측 및 복원부를 포함하는 영상 부호화 장치.
- 제1항에 있어서,상기 영상 부호화 장치에 입력된 영상 프레임을 저장하는 프레임 메모리; 및상기 프레임 메모리에 저장된 데이터를 상기 현재 MB 메모리, 상기 SW1 메모리 및 상기 SW2 메모리에 저장해주는 프레임 메모리 제어기를 더 포함하는 것을 특징으로 하는 영상 부호화 장치.
- 제2항에 있어서, 상기 현재 MB 메모리는MB단위의 휘도 및 색차 신호를 저장할 수 있는 용량을 가지며, 상기 이전 MB, 현재 MB 및 다음 MB 의 휘도 및 색차 신호를 분산 저장하는 제1 내지 제3 뱅크; 및MB단위의 휘도 신호를 저장할 수 있는 용량을 가지며, 상기 이전 MB 및 상기 현재 MB의 휘도 신호를 분산 저장하는 제4 및 제5 뱅크를 포함하는 것을 특징으로 하는 영상 부호화 장치.
- 제3항에 있어서, 상기 프레임 메모리 제어기는새로운 동작주기가 될 때마다, 상기 제1 내지 제3 뱅크 중에서 더 이상 필요 없는 MB 의 휘도 및 색차 신호가 저장된 뱅크를 초기화시킨 후, 새로운 MB 의 휘도 및 색차 신호를 저장하는 것을 특징으로 하는 영상 부호화 장치.
- 제3항에 있어서, 상기 거친 움직임 추정부는새로운 동작주기가 될 때마다, 상기 제4 및 제5 뱅크 중에서 더 이상 필요 없는 MB 의 휘도 신호가 저장된 뱅크를 초기화시킨 후, 새로운 MB 의 휘도 신호를 저장하는 것을 특징으로 하는 영상 부호화 장치.
- 제3항에 있어서,상기 현재 MB 메모리의 제1 내지 제5 뱅크 각각은 MB내 블록의 4워드를 분산 저장하는 제1 내지 제4 메모리 영역으로 이루어지며,상기 제1 내지 제4 메모리 영역 각각은 동일 라인의 4개의 화소들 중에 첫 번째 및 세 번째 화소를 저장하는 홀수 메모리 영역과 두 번째 및 네 번째 화소를 저장하는 짝수 메모리 영역으로 나뉘어지는 것을 특징으로 하는 영상 부호화 장치.
- 제2항에 있어서, 상기 SW1 메모리는상기 이전 MB, 현재 MB, 다음 MB의 거친 움직임 추정을 위한 SW 영역을 3등분한 영역의 휘도 신호를 저장할 수 있는 용량을 가지며, 상기 이전, 상기 현재 및 상기 다음 MB의 SW 영역의 휘도 신호를 분산 저장하는 제1 내지 제9 뱅크를 포함하는 것을 특징으로 하는 영상 부호화 장치.
- 제7항에 있어서, 상기 프레임 메모리 제어기는새로운 동작주기가 될 때마다, 상기 제1 내지 제9 뱅크 중에서 더 이상 필요 없는 SW 영역의 휘도 신호가 저장된 뱅크를 초기화시킨 후, 새로운 SW 영역의 휘도 신호를 저장하는 것을 특징으로 하는 영상 부호화 장치.
- 제7항에 있어서,상기 SW1 메모리의 제1 내지 제9 뱅크 각각은 MB내 블록의 4워드 중에서 홀수라인의 워드들을 분산 저장하는 제1 및 제2 메모리 영역으로 이루어지며,상기 제1 및 제2 메모리 영역 각각은 동일 라인의 4개의 화소들 중에 첫 번째 및 세 번째 화소를 저장하는 홀수 메모리 영역과 두 번째 및 네 번째 화소를 저장하는 짝수 메모리 영역으로 나뉘어지는 것을 특징으로 하는 영상 부호화 장치.
- 제2항에 있어서, 상기 SW2 메모리는상기 이전 MB 및 현재 MB의 SW 영역의 주변 화소들을 분산 저장하는 제1 및 제2 뱅크를 포함하는 것을 특징으로 하는 영상 부호화 장치.
- 제10항에 있어서,상기 SW2 메모리의 제1 및 제2 뱅크는 MB의 SW 영역의 상하에 위치한 주변 화소들을 저장하는 제1 메모리 영역; MB의 SW 영역의 좌우에 위치한 주변 화소들을 저장하는 제2 메모리 영역; 및 상기 SW2 메모리의 제1 및 제2 뱅크 각각은 MB내 블록의 4워드 중에서 짝수라인의 워드들을 분산 저장하는 제3 및 제4 메모리 영역으로 이루어지며,상기 제3 및 제4 메모리 영역 각각은 동일 라인의 4개의 화소들 중에 첫 번째 및 세 번째 화소를 저장하는 홀수 메모리 영역과 두 번째 및 네 번째 화소를 저장하는 짝수 메모리 영역으로 나뉘어지는 것을 특징으로 하는 영상 부호화 장치.
- 제10항에 있어서, 상기 프레임 메모리 제어기는새로운 동작주기가 될 때마다, 상기 제1 및 제2 뱅크 중에서 더 이상 필요 없는 주변 화소들이 저장된 뱅크를 초기화시킨 후 새로운 주변 화소들을 저장하는 것을 특징으로 하는 영상 부호화 장치.
- 제2항에 있어서,상기 인트라예측 및 복원부로부터 양자화 결과를 제공받아 저장하는 계수 메모리;상기 인트라예측 및 복원부로부터 복원 결과를 제공받아 저장하는 복원 MB 메모리;상기 계수 메모리에 저장된 영상을 바탕으로 콘텍스트 기반 가변장 부호화 동작을 수행하는 콘텍스트 기반 가변장 부호화부;상기 콘텍스트 기반 가변장 부호화부의 결과를 제공받아 저장한 후, 압축 영상으로 출력하는 스트림 메모리;상기 복원 MB 메모리에 저장된 영상에 대해 디블록킹 동작을 수행하는 디블록킹부; 및상기 디블록킹부의 결과를 제공받아 저장하는 디블록킹 MB 메모리를 더 포함하는 것을 특징으로 하는 영상 부호화 장치.
- 제1항에 있어서, 상기 거친 움직임 추정부는MB단위를 1/2샘플링을 한 8x8 매트리스만큼의 화소에 대한 움직임 예측을 수행하는 것을 특징으로 하는 영상 부호화 장치.
- 제1항에 있어서, 상기 미세 움직임 추정 및 움직임 보상부는상기 거친 움직임 추정부의 출력과, 상기 현재 MB메모리에서 읽어온 MB와, 상기 MB의 SW 영역과, 상기 MB의 SW 영역의 주변 화소들의 휘도 신호를 기반으로 1화소 단위의 움직임 벡터와 최소 비용을 계산하는 1 화소단위 움직임 추정부;상기 MB의 SW 영역과, 상기 MB의 SW 영역의 주변 화소들의 휘도 신호를 기반으로 1/2 화소 단위로 보간된 1/2 휘도 보간 신호를 생성하는 1/2 화소단위 Y 보간부;상기 1/2 휘도 보간 신호를 버퍼링하는 1/2pel Y 버퍼;상기 1 화소단위 움직임 추정부의 출력, 상기 MB, 및 상기 버퍼링된 1/2 휘도 보간 신호를 기반으로 1/2 화소단위의 움직임 벡터와 최소 비용을 계산하여 출력하는 1/2 화소단위 움직임 추정부;상기 MB의 SW 영역 및 상기 버퍼링된 1/2 휘도 보간 신호를 기반으로 1/4 화소 단위로 보간된 1/4 휘도 보간 신호를 생성하는 1/4 화소단위 Y 보간부;상기 1/4 휘도 보간 신호를 버퍼링하는 1/4pel Y 버퍼;상기 1/2 화소단위 움직임 추정부의 출력, 상기 MB, 및 상기 버퍼링된 1/4 휘도 보간 신호를 기반으로 1/4 화소단위의 움직임 벡터와 최소 비용을 계산하여 출력하는 1/4 화소단위 움직임 추정부;상기 MB의 SW 영역의 주변 화소들의 휘도 신호를 기반으로1/4 화소 단위로 보간된 1/4 색차 보간 신호를 생성하는 1/4 화소단위 UV 보간부;상기 1/4 색차 보간 신호를 버퍼링하는 1/4pel UV 버퍼; 및상기 1/4 화소단위 움직임 추정부의 출력, 상기 1/4 휘도 보간 신호, 및상기 1/4 색차 보간 신호를 기반으로 움직임 보상 동작을 수행하는 움직임 보상부를 포함하는 것을 특징으로 하는 영상 부호화 장치.
- 제15항에 있어서, 상기 1/2pel Y 버퍼는상기 1화소 단위의 움직임 벡터의 상부좌측 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되는 제1 뱅크;상기 1화소 단위의 움직임 벡터의 상부방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되는 제2 뱅크; 및상기 1화소 단위의 움직임 벡터의 좌측방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되는 제3 뱅크를 포함하는 것을 특징으로 하는 영상 부호화 장치.
- 제16항에 있어서, 상기 1/2 화소단위 움직임 추정부는상기 1화소 단위의 움직임 벡터의 상부좌측 방향, 상부우측 방향, 하측 좌측 방향, 또는 하부우측 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소로 시작하는 비용 계산시에는 상기 1/2pel Y 버퍼의 제1 뱅크를 사용하고,상기 1화소 단위의 움직임 벡터의 상부방향 또는 하부 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소로 시작하는 비용 계산시에는 상기 1/2pel Y 버퍼의 제2 뱅크를 사용하고,상기 1화소 단위의 움직임 벡터의 좌측 방향 또는 우측 방향으로 1/2 화소 간격만큼 떨어진 곳에 위치된 화소로 시작하는 비용 계산시에는 상기 1/2pel Y 버퍼의 제3 뱅크를 사용하는 것을 특징으로 하는 영상 부호화 장치.
- 제15항에 있어서, 상기 1/4pel Y 버퍼는상기 1/2 화소단위의 움직임 벡터의 상부좌측 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되는 제1 뱅크;상기 1/2 화소단위의 움직임 벡터의 상부 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되는 제2 뱅크;상기 1/2 화소단위의 움직임 벡터의 상부우측 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되는 제3 뱅크;상기 1/2 화소단위의 움직임 벡터의 좌측 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되는 제4 뱅크;상기 1/2 화소단위의 움직임 벡터의 우측 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되는 제5 뱅크;상기 1/2 화소단위의 움직임 벡터의 하부좌측 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되는 제6 뱅크;상기 1/2 화소단위의 움직임 벡터의 하부 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되는 제7 뱅크; 및상기 1/2 화소단위의 움직임 벡터의 하부우측 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소를 기준으로, 1 화소 간격만큼 떨어져 있는 화소들이 저장되는 제8 뱅크를 포함하는 것을 특징으로 하는 영상 부호화 장치.
- 제18항에 있어서, 상기 1/4 화소단위 움직임 추정부는상기 1/2 화소단위의 움직임 벡터의 상부좌측 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소로 시작하는 비용 계산시에는 상기 1/4pel Y 버퍼의 제1 뱅크를 사용하고,상기 1/2 화소단위의 움직임 벡터의 상부 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소로 시작하는 비용 계산시에는 상기 1/4pel Y 버퍼의 제2 뱅크를 사용하고,상기 1/2 화소단위의 움직임 벡터의 상부우측 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소로 시작하는 비용 계산시에는 상기 1/4pel Y 버퍼의 제3 뱅크를 사용하고,상기 1/2 화소단위의 움직임 벡터의 좌측 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소로 시작하는 비용 계산시에는 상기 1/4pel Y 버퍼의 제4 뱅크를 사용하고,상기 1/2 화소단위의 움직임 벡터의 우측 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소로 시작하는 비용 계산시에는 상기 1/4pel Y 버퍼의 제5 뱅크를 사용하고,상기 1/2 화소단위의 움직임 벡터의 하부좌측 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소로 시작하는 비용 계산시에는 상기 1/4pel Y 버퍼의 제6 뱅크를 사용하고,상기 1/2 화소단위의 움직임 벡터의 하부 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소로 시작하는 비용 계산시에는 상기 1/4pel Y 버퍼의 제7 뱅크를 사용하고,상기 1/2 화소단위의 움직임 벡터의 하부우측 방향으로 1/4 화소 간격만큼 떨어진 곳에 위치된 화소로 시작하는 비용 계산시에는 상기 1/4pel Y 버퍼의 제8 뱅크를 사용하는 것을 특징으로 하는 영상 부호화 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090086913A KR101274112B1 (ko) | 2009-09-15 | 2009-09-15 | 영상 부호화 장치 |
US12/861,118 US8514937B2 (en) | 2009-09-15 | 2010-08-23 | Video encoding apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090086913A KR101274112B1 (ko) | 2009-09-15 | 2009-09-15 | 영상 부호화 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110029294A KR20110029294A (ko) | 2011-03-23 |
KR101274112B1 true KR101274112B1 (ko) | 2013-06-13 |
Family
ID=43730519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090086913A KR101274112B1 (ko) | 2009-09-15 | 2009-09-15 | 영상 부호화 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8514937B2 (ko) |
KR (1) | KR101274112B1 (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9648325B2 (en) | 2007-06-30 | 2017-05-09 | Microsoft Technology Licensing, Llc | Video decoding implementations for a graphics processing unit |
KR20120066305A (ko) * | 2010-12-14 | 2012-06-22 | 한국전자통신연구원 | 비디오 움직임 예측 및 보상용 캐싱 장치 및 방법 |
US9819949B2 (en) | 2011-12-16 | 2017-11-14 | Microsoft Technology Licensing, Llc | Hardware-accelerated decoding of scalable video bitstreams |
TWI486908B (zh) * | 2012-05-11 | 2015-06-01 | Mstar Semiconductor Inc | 影像編碼的方法與相關裝置 |
KR101737861B1 (ko) * | 2014-01-20 | 2017-05-19 | 한국전자통신연구원 | 변환 깊이 기반 dct 사이즈 결정 장치 및 방법 |
CN110177279B (zh) * | 2014-03-28 | 2021-10-08 | 联咏科技股份有限公司 | 视频处理装置与其视频处理电路 |
KR102525216B1 (ko) | 2016-03-21 | 2023-04-25 | 한국전자통신연구원 | 영상 압축률 및 프레임 제어를 통한 네트워크 대역폭 관리 방법 및 이를 반영한 영상 전송 시스템 |
US11234016B2 (en) * | 2018-01-16 | 2022-01-25 | Samsung Electronics Co., Ltd. | Method and device for video decoding, and method and device for video encoding |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR960033136A (ko) * | 1995-02-28 | 1996-09-17 | 배순훈 | 화소단위 움직임예측을 이용하는 영상신호 부호화 방법 및 장치 |
US6011870A (en) | 1997-07-18 | 2000-01-04 | Jeng; Fure-Ching | Multiple stage and low-complexity motion estimation for interframe video coding |
US6064450A (en) | 1995-12-06 | 2000-05-16 | Thomson Licensing S.A. | Digital video preprocessor horizontal and vertical filters |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5136377A (en) * | 1990-12-11 | 1992-08-04 | At&T Bell Laboratories | Adaptive non-linear quantizer |
EP1139669A1 (en) * | 2000-03-28 | 2001-10-04 | STMicroelectronics S.r.l. | Coprocessor for motion estimation in digitised video sequence encoders |
US6690727B1 (en) * | 2000-05-08 | 2004-02-10 | Intel Corporation | Image processing |
US6842484B2 (en) * | 2001-07-10 | 2005-01-11 | Motorola, Inc. | Method and apparatus for random forced intra-refresh in digital image and video coding |
US7227896B2 (en) * | 2001-10-04 | 2007-06-05 | Sharp Laboratories Of America, Inc. | Method and apparatus for global motion estimation |
US7272622B2 (en) * | 2001-10-29 | 2007-09-18 | Intel Corporation | Method and apparatus for parallel shift right merge of data |
KR100493476B1 (ko) | 2002-10-16 | 2005-06-02 | (주)씨앤에스 테크놀로지 | 영상 부호화 회로 |
US7424056B2 (en) * | 2003-07-04 | 2008-09-09 | Sigmatel, Inc. | Method for motion estimation and bandwidth reduction in memory and device for performing the same |
KR100606157B1 (ko) * | 2004-07-26 | 2006-08-01 | 삼성전자주식회사 | 파워 레벨 감지 회로를 가지는 플레시 메모리 |
US7865021B2 (en) | 2004-12-06 | 2011-01-04 | Nec Electronics Corporation | Compressed stream decoding apparatus and method |
JP4502203B2 (ja) | 2005-03-17 | 2010-07-14 | ルネサスエレクトロニクス株式会社 | 画像符号化装置、及び画像復号化装置 |
US7864839B2 (en) * | 2005-04-01 | 2011-01-04 | Broadcom Corporation | Method and system for rate control in a video encoder |
US8428118B2 (en) * | 2006-08-17 | 2013-04-23 | Ittiam Systems (P) Ltd. | Technique for transcoding MPEG-2/MPEG-4 bitstream to H.264 bitstream |
US8023562B2 (en) * | 2007-09-07 | 2011-09-20 | Vanguard Software Solutions, Inc. | Real-time video coding/decoding |
-
2009
- 2009-09-15 KR KR1020090086913A patent/KR101274112B1/ko not_active IP Right Cessation
-
2010
- 2010-08-23 US US12/861,118 patent/US8514937B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR960033136A (ko) * | 1995-02-28 | 1996-09-17 | 배순훈 | 화소단위 움직임예측을 이용하는 영상신호 부호화 방법 및 장치 |
US6064450A (en) | 1995-12-06 | 2000-05-16 | Thomson Licensing S.A. | Digital video preprocessor horizontal and vertical filters |
US6011870A (en) | 1997-07-18 | 2000-01-04 | Jeng; Fure-Ching | Multiple stage and low-complexity motion estimation for interframe video coding |
Also Published As
Publication number | Publication date |
---|---|
US20110064137A1 (en) | 2011-03-17 |
KR20110029294A (ko) | 2011-03-23 |
US8514937B2 (en) | 2013-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101274112B1 (ko) | 영상 부호화 장치 | |
TWI759389B (zh) | 用於視訊寫碼之低複雜度符號預測 | |
ES2845728T3 (es) | Filtrado de compensación de movimiento adaptativo al contenido para codificación de vídeo de alta eficiencia | |
US10469868B2 (en) | Motion estimation and in-loop filtering method and device thereof | |
CN1812576B (zh) | 同时执行视频数据水平和垂直滤波的解块滤波器及其方法 | |
US20080126278A1 (en) | Parallel processing motion estimation for H.264 video codec | |
US11051045B2 (en) | High efficiency adaptive loop filter processing for video coding | |
JP2010514300A (ja) | ビデオ画像のブロックを復号化する方法 | |
US20160050431A1 (en) | Method and system for organizing pixel information in memory | |
KR100614647B1 (ko) | 디블록킹 필터에서의 효과적인 에지 필터링 연산을 위한레지스터 어레이 구조 | |
TW202029774A (zh) | 藉由轉換域濾波之量化假影抑制及信號恢復 | |
KR20220112668A (ko) | 이미지 요소 예측 방법, 인코더, 디코더 및 저장 매체 | |
JP4209631B2 (ja) | 符号化装置、復号化装置、及び、圧縮伸長システム | |
CN101778280B (zh) | 一种基于avs运动补偿亮度插值运算的电路及方法 | |
CN114390289A (zh) | 参考像素候选列表构建方法、装置、设备及存储介质 | |
KR100926752B1 (ko) | 동영상 부호화를 위한 미세 움직임 추정 방법 및 장치 | |
KR100640592B1 (ko) | 향상된 압축 속도를 가지는 동영상 압축 장치 및 그 방법 | |
KR20000012109A (ko) | 복호화 장치 및 방법 | |
JP2950367B2 (ja) | 逆離散余弦変換器におけるデータ出力順序変換方法及び回路 | |
KR101419378B1 (ko) | 영상 처리를 위한 시스템 | |
GB2400260A (en) | Video compression method and apparatus | |
US20130156114A1 (en) | Data Movement Reduction In Video Compression Systems | |
TW202029747A (zh) | 對於視訊寫碼中最壞情況頻寬縮減之限制 | |
KR100708183B1 (ko) | 움직임 추정을 위한 영상 데이터 저장 장치 및 그 데이터저장 방법 | |
KR100556341B1 (ko) | 메모리 대역폭이 감소된 비디오 디코더 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160623 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |