KR20090075335A - Hardware Acceleration 기반 High Complexity CodingAlgorithm을 통한 H.264 Codec 부호화율 향상 기술 및 방법 - Google Patents
Hardware Acceleration 기반 High Complexity CodingAlgorithm을 통한 H.264 Codec 부호화율 향상 기술 및 방법 Download PDFInfo
- Publication number
- KR20090075335A KR20090075335A KR1020080001155A KR20080001155A KR20090075335A KR 20090075335 A KR20090075335 A KR 20090075335A KR 1020080001155 A KR1020080001155 A KR 1020080001155A KR 20080001155 A KR20080001155 A KR 20080001155A KR 20090075335 A KR20090075335 A KR 20090075335A
- Authority
- KR
- South Korea
- Prior art keywords
- encoding
- quality
- algorithm
- strategy
- hardware acceleration
- 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/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/436—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 using parallelised computational arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명은 Hardware Acceleration 기반 High Complexity Coding Algorithm을 통한 H.264 Codec 부호화율 향상 기술 및 방법에 관한 것이다. 비디오 스트림은 연속된 이미지가 시간의 흐름에 따라 재생되는 특징이 있는데, 비디오 스트림을 압축하지 않을 경우 그 데이터양이 엄청나기 때문에 비디오 스트림을 화질 손상을 최소화하면서 비트레이트를 줄이는 비디오 압축 기술이 필요하다. 현존하는 비디오 압축기술 중에서 가장 발전된 H.264는 Rate-Distortion Optimization, Intra Prediction, 4x4 Sub-macroblock, Deblocking Filter, CAVLC, CABAC 등의 향상된 도구들을 적용하여 비트레이트 대비 화질이 매우 우수한 특성을 보여준다. 그러나 이런 좋은 특성을 구현하기 위해서는 매우 복잡한 연산을 수행해야 해서 인코딩 속도가 느린 문제가 있는 관계로, 현존하는 CPU에서 고품질/고효율 H.264 인코딩을 구현하기는 매우 힘들다.
H.264, Encoding, GPU, CUDA
Description
본 발명은 Hardware Acceleration 기반의 High Complexity Coding Algorithm을 통한 H.264 Codec 부호화율 향상 기술 및 방법에 관한 것으로, 더욱 상세하게는 H.264 인코더의 프로파일링 분석을 통해 인코딩 서브 모듈별 시간 점유율을 분석하고, 가장 Time Critical한 부분부터 GPU를 활용하여 고속화하는 전략을 사용하여, CPU 자원과는 별도로 고도의 병렬처리 프로세싱 기능을 제공하는 보드 혹은 Co-Processor를 활용함으로써 단순하지만 계산량이 많은 H.264 인코딩 부분을 효율적으로 처리하여 고품질 및 고효율의 H.264 인코딩 솔루션을 만드는 방법에 관한 것이다.
비디오 압축기술은 H.261에서부터 확립된 Motion Estimation, Transform, Quantization, Entropy Coding라는 기본 기술을 바탕으로 MPEG1, MPEG2, H.263, MPEG4, H.264에 이르는 성능향상을 이루어왔으며, 국제 표준화되어 비디오 스트림 처리에 대한 상호운용성이 보장되어 왔다.
하지만, 현존하는 비디오 압축기술 중 가장 뛰어난 H.264의 경우에도 인코딩 속도가 느리다는 점으로 인해, 인코딩 속도에 매우 민감한 실시간 방송을 위한 시스템이나 서버 기반의 트랜스코딩 시스템에 활용하는데 제약이 있다. 따라서 현존하는 H.264 인코더는 복잡한 연산을 알고리즘을 개선하여 속도를 향상시키는 노력을 하였으나 어느 정도 한계가 있어, 화질을 다소 손상시켜서 속도를 향상시키는 방법을 이용하여 실제 운용성을 높이고 있다. 또한, 이동통신사에서 휴대폰을 통해 제공하는 무선 비디오 서비스의 경우, 휴대폰 화면의 크기 제한으로 인해 QCIF(176x144)나 QVGA(320x240) 급의 작은 화면 크기를 가지는 비디오 서비스를 제공하고 있다. 이런 작은 화면에서는 더욱 더 화질의 우수성이 요구되는데, 현존하는 H.264 인코더들이 화질의 손상을 통해 인코딩 속도를 향상시키기 때문에 서비스의 품질 향상에 한계가 되고 있는 실정이다.
본 발명은 CPU 자원과는 별도로 고도의 병렬처리 프로세싱 기능을 제공하는 보드 혹은 Co-Processor를 활용하여 단순하지만 계산량이 많은 H.264 인코딩 부분을 효율적으로 처리하여 고품질 및 고효율의 H,264 인코딩 솔루션을 만들고자 하는 것이 목표이다.
CPU를 도와 고속의 병렬처리를 하게될 Co-Processor로는 GPU(Graphic Processing Unit)를 선택했는데, GPU는 그래픽카드에 내장되어 있는 프로세싱 유닛으로 2D 렌더링과 더불어 3D 렌더링을 위한 Vertex Processor와 Fragment Processor를 다수 보유하고 있는 고도의 병렬처리 장치이다. GPU는 실시간 1인칭 게임과 같이 많은 3D객체를 초당 30~50fps까지 처리하는 능력을 가지고 있다. GPU는 거대한 게임시장에 기대어 그 기술발전 속도가 매우 가파르다. GPU는 복잡한 제어 및 캐쉬를 제거하고 병렬 계산 기능을 극대화한 유닛으로 멀티미디어 데이타의 단순연산의 무한반복류의 업무를 처리하는데 매우 적합하다 하겠다. 또한 GPU는 가격 또한 매우 저렴하고 수급이 매우 쉬우며, GPU를 여러개 연결하여 그 처리 능력을 배가시킬 수 있는 SLI(Scalable Link Interface)를 제공하는 등 여러가지 장점을 가지고 있다.
본 발명에서는 H.264 인코더의 프로파일링 분석을 통해 인코딩 서브 모듈별 시간 점유율을 분석하고, 가장 Time Critical한 부분부터 GPU를 활용하여 고속화하는 전략을 사용하며, 서브 모듈 중 병렬처리가 용이한 부분도 그 대상으로 삼았다.
본 발명을 통해 만들어진 루틴들은 모두 향후 통합 대상인 x264코드와 되도록 타입과 명칭을 맞추어서 개발하는 관계로, x264와의 포팅은 큰 어려움 없이 진행할 수 있으며, x264와 연계되어 동작하는 많은 트랜스코더, 인코더 등의 솔루션과 결합할 수 있다. 이를 통해 SLI를 이용한 인코딩 서버 솔루션 개발, VC-1 코덱으로의 적용, H.263 코덱으로의 적용, HDTV급의 실시간 인코딩 솔루션 등 다양한 방면에 활용이 가능하게 된다.
H.263의 경우, 알고리즘이 단순하여 병렬화를 할 수 있는 여지가 많다. 현재 H.263은 영상전화의 Mandatory 코덱으로 사용되고 있으며, 향후 영상전화를 이용한 자동 응답 서비스, 영상 콜센터 등이 활성화될 것으로 보여, H.263 인코더의 고속화가 절실히 필요한 부분이다. 또한, SLI를 이용한 인코딩 서버 솔루션의 경우 SLI를 이용하여 4개의 GPU가 장착되는 Tesla Platform에서 동시에 여러 개의 인코딩 요청이 들어와도 원할하게 인코딩을 수행할 수 있는 서버 플랫폼을 개발할 수 있게 된다.
VC-1 코덱의 경우, H.264와 더불어 현재 가장 전망이 좋은 비디오 압축기술로, 둘 다 HD DVD의 표준으로 선정되었으며, IPTV의 비디오 코덱으로 활용되고 있다. VC-1 코덱에 GPU를 적용할 경우 Silverlight를 위시한 뉴미디어 시장에서의 중요한 백엔드 역할을 할 수 있어 다양한 방면으로의 확장이 가능하게 된다. 더불어, HDTV급의 영상을 실시간으로 처리할 수 있게 하기 위한 초고속의 알고리즘을 고안하고, SLI등을 활용하여 Graphic Card Level의 Parallelism도 연구할 수 있다.
본 발명은 Hardware Acceleration 기반 High Complexity Coding Algorithm을 통한 H.264 Codec 부호화율 향상 기술 및 방법에 관한 것으로, Common Part, Best Quality Strategy, Trade-Off Strategy, Best Speed Strategy등 네 가지 파트로 진행되었다.
먼저 Common Part의 경우, 기존 비디오 코덱이 1/2 pixel 단위의 Motion Estimation을 하는 것에 비해 H.264는 1/4 pixel 단위의 Motion을 하여 더욱 더 정 확한 Motion Vector를 찾고 이를 통해 비트레이트를 더 줄일 수 있다. 하나의 프레임에 대한 인코딩이 완료되면 그 프레임은 다시 디코딩된 형태로 레퍼런스 프레임의 DPB(Decoded Picture Buffer)로 들어간다. 이 때 Sub-pel Motion Estimation을 위해 Interpolation을 통해 미리 1/4 해상도의 프레임을 생성한다. Sub-pel Reference Frame Building은 전형적인 병렬처리가 가능한 문제이며, GPU 구현을 통해 SIMD 코드에 비해 10배 이상 빠른 속도로 그를 수행할 수 있다. 또한, H.264는 기본적으로 Variable Block Size Motion Estimation을 지원하며 각 블록은 16x16, 8x16, 16x8, 8x8, 4x8, 8x4, 4x4 등으로 세분화된다. SAD는 Sub-optimal한 값이 전체 Optimal의 부분을 이루므로 미리 4x4단위로 SAD를 구해놓으면 이를 조합하여 8x4, 4x8 등의 더 큰 블록의 SAD를 계산량을 줄이면서 계산할 수 있다. 이러한 접근법을 SAD Reuse라고 한다. 4x4 SAD Surface는 도2와 같이 16x16의 타겟 영역을 대상으로 Thread들이 배치되며, Block의 Shared Memory에는 Padding을 고려하여 40x40의 영역이 Texture로부터 복사된다. Thread들은 16x16의 각 위치를 담당하며 그 Thread들은 4x4 영역을 돌면서 SAD의 합을 구하게 된다. 이렇게 구해진 SAD Surface는 Global Memory에 저장되어 도3과 같은 방식으로 더 큰 블록의 SAD를 구하기 위해 재활용된다.
다음으로 Best Quality Strategy의 경우, H.264 인코딩에서 가장 좋은 화질을 보장하려면 Motion Estimation의 정확성과 Rate-Distortion Optimization을 통한 Mode Decision의 정확성이 담보되어야 한다. 최고의 화질을 위해서는 Motion Estimation이 정확해야 하는데, 대부분의 상용 H.264 인코더들은 Fast Search Algorithm을 적용하여 최적의 해를 구하기 보다는 빠른 시간 내에 Sub-optimal한 해를 구하는 방법을 사용한다. 최적의 해를 구하기 위해서는 ESA(Exhaustive Search Algorithm)을 사용해야 하는데, 이는 계산량이 너무 많아서 정확한 Motion Vector를 구한다 하더라도 인코딩 속도가 느려서 실용적이지 못하다. 하지만, SEA(Successive Elimination Algorithm)을 이용하면, ESA와 동일한 정확성을 가지면서도 SAD계산의 량을 많게는 90%이상 줄일 수 있게 된다.
더불어, 최적의 Quality를 구현하기 위해서는 Macroblock의 Motion Vector의 비용이 정확하게 계산되어야 하는데, 이는 Motion Vector Prediction을 정확하게 하는 데서 시작된다. Motion Vector Prediction을 정확히 하려면 윗쪽, 오른쪽 윗쪽, 왼쪽의 이웃 Macroblock이 모두 결정되어야 가능하다. 그러나 도4처럼 2개의 Macroblock 간격을 띄울 경우 다소나마 행 단위로 병렬 처리를 할 수 있다. 이러한 접근법을 Staggered Approach라고 하며, 이렇게 구현하면 병렬처리가 다소 많아져 성능 향상을 기대할 수 있다.
Trade-off Strategy는 약간의 Quality를 희생하고 병렬성을 높여 인코딩 속도를 향상시키는 접근법이다. 이를 위해서는 TLP Motion Vector Prediction을 통해 행 단위로 병렬성을 확보하고, Modified Intra-Prediction을 적용하여 Intra-Prediction을 전체 프레임 모두 동시에 하는 방법을 적용한다. TLP(Thread Level Parallelism) Motion Vector Prediction은 원래 추정을 위해서는 좌측, 상측, 우상측 이웃 Macroblock의 Median을 취해야 하나 병렬성을 높이기 위해 도5와 같이 좌측 대신에 좌상측 이웃 Macroblock을 선택하여 Motion Vector를 추정하는 방법이 다. 또한 추정 Motion Vector는 Macroblock내부의 Sub-block단위에서도 위의 원칙이 그대로 적용되어야 하나 TLP 접근법에서는 현재 Macroblock의 모든 Sub-block에 대해서 동일한 추청치를 사용하여 알고리즘을 단순화 시켰다. TLP접근법의 경우, 행 단위로 완벽하게 병렬 처리를 할 수 있어 Best Quality Mode보다 훨씬 빠른 속도를 보여준다. 그리고 Intra Prediction은 Reconstruction된 현재의 Frame에서 일정한 규칙을 가지고 만들어진 여러 가지 패턴과 비교하여 최적의 모드를 선택하는 방법이다. Intra Prediction은 Reconstruction된 좌측, 좌상측, 상측, 우상측 등 네 개의 이웃 Macroblock에 의존적이어서 Inter Prediction과 마찬가지로 병렬처리가 매우 힘들다. 그러나 Reconstruction된 Frame이 아니라 현재의 Frame을 가지고 Intra Prediction을 하고도 오차가 거의 나지 않는 Error Term이 알려졌다. 이 방법을 사용할 경우 Intra Prediction의 전 Macroblock에 대한 의존성이 사라져서 도6과 같이 전체 프레임에 대한 병렬 처리도 가능해 진다.
Best Speed Strategy는 품질을 다소 희생하고 속도를 우선으로 하는 모드로서 병렬에 적합한 Fast Search Algorithm을 적용하고, Rate-Distortion Optimization을 간략하게 수행하는 등의 장치를 사용한다. 주로 HDTV급의 고해상도 비디오를 실시간으로 인코딩 하는데 적합하다. Fast Search Algorithm은 SEA나 ESA와는 달리 Optimal한 Motion Vector를 찾지 않고 빠른 스텝 전진과 이동으로 Sub-optimal한 Motion Vector를 찾는 전략이다. Fast Search Algorithm 중에서 병렬처리에 적합한 모델은 되도록 검사하는 포인트가 동시에 많고, Divergent가 일어나지 않고 고정된 스텝으로 진행하는 것이 적절하다. 이런 점에서 Extended Hexagonal Search Algorithm이 병렬처리에 적합하다. 또한 Motion Vector Prediction은 별도로 구하지 않고 이전 프레임의 Motion Vector를 참조하거나 원점(0, 0)을 기준으로 한다. Rate-Distortion Optimization을 할 경우에는 Best Motion Vector가 (0, 0)에 집중되는 경향이 있기 때문에 오차는 생각보다 크지 않다. Intra-Prediction은 Trade-off Strategy에서 사용한 Modified Intra Prediction을 사용하여 Inter/Intra 모두 전체 프레임을 한번에 인코딩할 수 있도록 한다.
도 1은 H.264 ENCODER의 전체적인 구조를 보인 도면.
도 2는 4X4 SAD SPACE를 구하는 과정을 보인 도면.
도 3은 4X4 SAD를 재활용하여 더 큰 블록의 SAD를 구하는 방법을 보인 도면.
도 4는 STAGGERED APPROACH 도면.
도 5는 THREAD LEVEL PARALELLISM PATTERN MOTION PREDICT ION 도면.
도 6은 4X4 LUMA INTRA PREDICTION 도면.
도 7은 FAST SEARCH ALGORITHMS 도면.
Claims (1)
- Hardware Acceleration 기반 High Complexity Coding Algorithm을 통한 H.264 Codec 부호화율 향상 기술 및 방법
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080001155A KR20090075335A (ko) | 2008-01-04 | 2008-01-04 | Hardware Acceleration 기반 High Complexity CodingAlgorithm을 통한 H.264 Codec 부호화율 향상 기술 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080001155A KR20090075335A (ko) | 2008-01-04 | 2008-01-04 | Hardware Acceleration 기반 High Complexity CodingAlgorithm을 통한 H.264 Codec 부호화율 향상 기술 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20090075335A true KR20090075335A (ko) | 2009-07-08 |
Family
ID=41332561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080001155A KR20090075335A (ko) | 2008-01-04 | 2008-01-04 | Hardware Acceleration 기반 High Complexity CodingAlgorithm을 통한 H.264 Codec 부호화율 향상 기술 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20090075335A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11057629B2 (en) | 2017-07-19 | 2021-07-06 | Samsung Electronics Co., Ltd. | Encoding method and apparatus therefor, decoding method and apparatus therefor |
-
2008
- 2008-01-04 KR KR1020080001155A patent/KR20090075335A/ko not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11057629B2 (en) | 2017-07-19 | 2021-07-06 | Samsung Electronics Co., Ltd. | Encoding method and apparatus therefor, decoding method and apparatus therefor |
US11689730B2 (en) | 2017-07-19 | 2023-06-27 | Samsung Electronics Co., Ltd. | Encoding method and apparatus therefor, decoding method and apparatus therefor |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5992070B2 (ja) | 画像復号装置、画像復号方法、画像符号化装置、画像符号化方法及び符号化データのデータ構造 | |
CN104967857B (zh) | 对图像进行编码/解码的方法和设备 | |
CN102547289B (zh) | 基于gpu并行实现的快速运动估计方法 | |
BR122013019016B1 (pt) | Método de decodificação de uma imagem | |
Xiao et al. | HEVC encoding optimization using multicore CPUs and GPUs | |
WO2012086829A1 (ja) | 動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置 | |
KR101396754B1 (ko) | 템플릿 매칭 및 방향 예측을 사용한 비디오 압축 방법 및 장치 | |
CN109246430B (zh) | 虚拟现实360度视频快速帧内预测和cu划分提前决策 | |
CN105516728A (zh) | 一种H.265/HEVC中8x8子宏块的并行帧内预测方法 | |
CN105025298B (zh) | 对图像进行编码/解码的方法和设备 | |
Rodriguez et al. | Accelerating H. 264 inter prediction in a GPU by using CUDA | |
CN102595137B (zh) | 基于图像像素块行/列流水线的快速模式判决装置和方法 | |
WO2021031225A1 (zh) | 一种运动矢量导出方法、装置及电子设备 | |
Rodríguez-Sánchez et al. | A fast GPU-based motion estimation algorithm for H. 264/AVC | |
KR20090075335A (ko) | Hardware Acceleration 기반 High Complexity CodingAlgorithm을 통한 H.264 Codec 부호화율 향상 기술 및 방법 | |
Momcilovic et al. | Multi-level parallelization of advanced video coding on hybrid CPU+ GPU platforms | |
Rodríguez-Sánchez et al. | Reducing complexity in H. 264/AVC motion estimation by using a GPU | |
CN102186079A (zh) | 一种基于运动向量的h.264基本档次帧内模式选择方法 | |
JP2005184241A (ja) | 動画像フレーム内モード判定方式 | |
S'nchez et al. | A fast GPU-based motion estimation algorithm for HD 3D video coding | |
Radicke et al. | Highly-parallel HVEC motion estimation with CUDA [title missing from article PDF] | |
Su et al. | GPU Based High Definition Parallel Video Codec Optimization in Mobile Device | |
Galiano et al. | GPU-based HEVC intra-prediction module | |
KR101286071B1 (ko) | 부호화기 및 그 인트라 예측 방법 | |
Mamatha et al. | Gradient based intra prediction in H. 264/AVC |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |