KR101082184B1 - 디코딩 파이프라인에서의 제2 디블록커 - Google Patents

디코딩 파이프라인에서의 제2 디블록커 Download PDF

Info

Publication number
KR101082184B1
KR101082184B1 KR1020090097134A KR20090097134A KR101082184B1 KR 101082184 B1 KR101082184 B1 KR 101082184B1 KR 1020090097134 A KR1020090097134 A KR 1020090097134A KR 20090097134 A KR20090097134 A KR 20090097134A KR 101082184 B1 KR101082184 B1 KR 101082184B1
Authority
KR
South Korea
Prior art keywords
frame
decoded
deblocker
decoder
decoding
Prior art date
Application number
KR1020090097134A
Other languages
English (en)
Other versions
KR20100041681A (ko
Inventor
지아 웨이
Original Assignee
엔비디아 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔비디아 코포레이션 filed Critical 엔비디아 코포레이션
Publication of KR20100041681A publication Critical patent/KR20100041681A/ko
Application granted granted Critical
Publication of KR101082184B1 publication Critical patent/KR101082184B1/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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • 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

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)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

디코더는 데이터의 인코딩된 프레임을 (디블록킹 전에) 디코딩하는데 사용될 수 있는 제1 단을 포함할 수 있다. 디코더는 제1 단의 하류에 있는 제2 단을 더 포함할 수 있다. 제2 단은 디코딩된 프레임을 동시에 디블록킹하는데 사용될 수 있는 제1 디블록커와 제2 디블록커를 포함한다.
디코더, 프레임, 디블록커, 디코딩 파이프라인

Description

디코딩 파이프라인에서의 제2 디블록커{A SECOND DEBLOCKER IN A DECODING PIPELINE}
관련 미국특허 출원
이 출원은 본 발명의 양수인에게 양도되어 있으며 이 출원에 인용으로 포함된 동시 출원 계속 중인 미국 특허출원(어토니 도켓 번호: NVID-P-SC-08-0333-US2, 출원번호: , 출원일: , 발명의 명칭: "디코딩 파이프라인에서의 즉시 디블록킹(On-the-Spot Deblocking in a Decoding Pipeline)")에 관련된다. 이 출원은 또한 본 발명의 양수인에게 양도되어 있으며 이 출원에 인용으로 포함된 동시 출원 계속 중인 미국 특허출원(어토니 도켓 번호: NVID-P-SC-08-0333-US3, 출원번호: , 출원일: , 발명의 명칭: "디코딩 파이프라인에서의 적응적 디블록킹(Adaptive Deblocking in a Decoding Pipeline)")에도 관련된다.
본 발명에 따른 실시예는 일반적으로 비디오 디코딩(비디오 압축해제)에 관한 것이다.
MPEG-4(Moving Picture Experts Group-4) 파트 10 또는 MPEG-4 어드밴스드 비디오 코딩(AVC)라고도 하는 H.264는 비디오 압축의 표준이다. 비디오는 각 프레 임이 2차원 화소 배열로 이루어진 일련의 화상(또는 프레임)을 포함한다. 화소는 마크로블록으로 분할된다(16x16 화소 어레이). 각 마크로블록은 마크로블록 번호를 갖고 있으며, 일반적으로 마크로블록들에는 프레임의 상단 좌측부터 시작하여 좌에서 우로 그리고 상에서 하로 단조적으로 증가하는 번호가 연속적으로 매겨져 있다. 마크로블록은 슬라이스들로 그룹화될 수 있으며, 슬라이스들은 슬라이스 그룹들로 그룹화될 수 있다. 슬라이스 내의 마크로블록들은 마크로블록 번호에 따라 오름차 순으로 배열되어 있다. 슬라이스는 인접할 수도 인접하지 않을 수도 있는 임의 수의 마크로블록을 포함할 수 있다. 즉 하나의 슬라이스 내의 마크로블록은 다른 슬라이스 그룹의 하나 또는 그 이상의 다른 슬라이스의 마크로블록들 사이에 산재해 있을 수 있지만, 동일한 슬라이스 그룹 내의 슬라이스들로부터의 마크로블록들은 서로 산재해 있지 않다.
설명한 바와 같이 마크로블록들이 슬라이스들로 그룹화될 수 있도록 하는 H.264 특성을 일반적으로 FMO(flexible macroblock ordering)라고 한다. FMO는 슬라이스들이 전송 중에 소실되거나 변질되는 경우에 디코더가 에러를 감추는데 이용될 수 있는 에러 복원 툴들 중 하나이다. 소실되거나 변질된 슬라이스 내의 마크로블록들은 다른 슬라이스로부터의 마크로블록 정보를 내삽하거나(interpolate) 외삽하여(extrapolate) 재구성될 수 있다.
다른 H.264 특성은 일반적으로 AOS(arbitrary slice ordering)라고 한다. 슬라이스는 ASO에 따라 임의의 순서로 전송될 수 있다. 예컨대 슬라이스는 준비되자마자 바로 전송될 수 있다. 즉 슬라이스는 이 슬라이스를 구성하는 마크로블록 모두가 인코딩되자마자 디코더에 스트리밍될 수 있다. 결과적으로 하나의 슬라이스 그룹으로부터의 슬라이스가 전송되고, 이어서 다른 슬라이스 그룹으로부터의 슬라이스가 전송되고, 이어서 첫 번째 슬라이스 그룹으로부터의 다른 슬라이스가 전송되고, ... 하는 식으로 슬라이스가 전송될 수 있다.
따라서 일반적으로 말하자면 H.264는 인코딩된 마크로블록이 "비순차"로 전송될 수 있도록 한다. 즉, 마크로블록은 특정 순서로(예컨대 상에서 하로 그리고 좌에서 우로, 마크로블록 번호에 따라 오름차 순으로) 인코딩될 수 있으나, 마크로블록이 전송되어 디코딩 장치가 이를 수신하는 순서는 인코딩 순서와는 다를 수가 있다.
디코딩 장치는 기본적인 디코딩 동작 이외에도 디블록킹(deblocking) 동작도 수행한다. 디블록킹 시에는 인접한 마크로블록들 간의 경계를 부드럽게 하기 위하여 디블록킹 필터가 디코딩된 마크로블록에 적용된다.
도 1을 참조로 설명하면, 마크로블록(M1)을 디블록킹하기 위해서는 마크로블록(M2)(마크로블록(M1)의 좌측에서 가장 가까이 인접해 있는 마크로블록)에 대한 정보와 아마도 마크로블록(M3)(마크로블록(M1) 위에서 가장 가까이 인접해 있는 마크로블록)에 대한 정보가 필요할 수 있다. 그러나 마크로블록(M1)은 하나의 슬라이스(예컨대 슬라이스(S2)) 내에 있을 수 있으며, 인접한 마크로블록(M2, M3)은 다른 슬라이스(예컨대 슬라이스(S1)) 또는 슬라이스들 내에 있을 수 있다. ASO가 인에이블되면 슬라이스(S2)는 슬라이스(S1)보다 먼저 디코더에 전송될 수 있다. 따라서 마크로블록(M1)은 디블록킹될 준비가 되어 있을 수 있지만, 슬라이스(S1)가 아직 디코더에 도달하지 않은 경우에는 디블록킹이 지연되어야 할지도 모른다.
결과적으로 H.264 디코딩은 통상적으로 2-패스(two-pass) 방식을 이용하여 구현된다. 첫 번째 패스에서는 기본 디코딩(디블록킹 전의 디코딩)이 수행되고, 이 디코딩된 데이터는 디코딩됨에 따라 저장된다. 두 번째 패스에서는 이 디코딩된 데이터가 다시 로드되고 디블록킹이 수행된다. 불행히도 이런 형태의 구현은 디코딩 장치에 추가적인 부담을 줄 수가 있다. 특히 디코딩 장치는 첫 번째 패스와 두 번째 패스가 연속하여 수행되기 때문에 데이터를 메모리로/로부터 전송할 수 있게 하는 더 높은 데이터 버스 대역폭, 디블록킹 전에 디코딩된 데이터를 저장하기 위한 추가 메모리, 및 더 긴 컴퓨팅 시간을 필요로 할 수 있다.
본 발명의 실시예들에 따르면, 디코더는 데이터의 인코딩된 프레임을 디코딩하는데 사용될 수 있는 제1 (디블록킹 전 디코딩)단을 포함한다. 디코더는 제1 단의 하류에 있는 제2 (디블록킹)단도 포함한다. 제2 단은 디코딩된 프레임들을 동시에 디블록킹하는데 사용될 수 있는 제1 디블록커와 제2 디블록커를 포함한다.
제1 및 제2 디블록커는 서로 동시에 동작할 수 있으며 디코딩단과도 동시에 동작할 수 있다. 예컨대 제1 디블록커가 어느 한 프레임을 디블록킹하고 있는 동안에 제2 디블록커는 다른 프레임을 디블록킹하고 디코딩단은 또 다른 프레임에 대해 동작하고 있을 수 있다. 더욱이 어떤 상황에서는 디블록커가 프레임의 일부에 대해 동작하고 있는 동안에 디코딩단은 그 프레임의 후속 부분에 대해 동작하고 있을 수 있다.
일반적으로 인코딩된 프레임은 디코더의 제1 단(기본 디코딩단)에의 입력으로 수신되어 디코딩된다. 디코딩된 프레임은 제1 디블록커나 제2 디블록커로 전송되어, 디블록킹될 수 있다. 일 실시예에서 디코딩된 프레임은 이 디코딩된 프레임의 분류 방법에 따라서 제1 디블록커나 제2 디블록커에 전송된다. 디코딩된 프레임이 제1 종류의 프레임으로 분류되면, 이 프레임은 제1 디블록커로 전송되고, 그렇지 않고, 디코딩된 프레임이 제2 종류의 프레임으로 분류되면 이 프레임은 제2 디블록커로 전송된다.
제2 디블록커의 도입은 일부 프레임의 디블록킹이 1차 경로에서 이와 병렬적인 2차 경로로 오프로딩될 수 있다는 것을 의미한다. 처리 시간이 줄어들고 이에 따라 전체 성능이 개선된다.
당업자라면 여러 가지 도면에 예시적으로 설명된 실시예에 대한 하기의 상세한 설명으로부터 본 발명의 여러 가지 실시예의 이들 및 기타 다른 목적과 이점을 잘 알게 될 것이다.
이제 본 발명에 따른 실시예들에 대해 상세히 설명한다. 실시예들의 예들은 첨부도면에 도시되어 있다. 이들 실시예와 관련하여 본 발명을 설명하겠지만, 본 발명은 이들 실시예에 한정되지 않음은 물론이다. 오히려 본 발명은 대체, 변형 및 등가를 포괄하는 것으로, 이들도 첨부된 청구범위에 기재된 본 발명의 본질과 범위에 포함될 수 있다. 더욱이 본 발명의 실시예에 대한 하기의 상세한 설명에서는 본 발명을 철저하게 이해할 수 있도록 여러 가지 특정 세부 사항에 대해 기술한다. 그러나 당업자라면 이러한 특정 세부 사항에 없이도 본 발명이 실시될 수 있음을 잘 알 것이다. 여러 가지 경우에 있어서 본 발명의 실시예의 양상을 불필요하게 애매하게 하지 않도록 하기 위해 주지의 방법, 절차, 성분 및 회로에 대해서는 설명하지 않았다.
하기의 상세한 설명 중 일부는 절차, 단계, 논리 블록, 처리, 및 컴퓨터 메모리 내의 데이터에 대한 동작의 기타 다른 기호적 표현으로 나타낸다. 이들 설명과 표현은 데이터 처리 기술 분야의 당업자가 그 기술 분야의 다른 당업자에게 본 발명의 실체를 가장 효과적으로 전달하는 수단이다. 절차, 컴퓨터 실행 단계, 논리 블록, 처리 등은 여기서는 일반적으로 원하는 결과에 이르는 일관된 일련의 단계나 명령어로 표현된다. 단계는 물리적 양의 물리적 조작을 필요로 하는 것이다. 이들 량은 통상적으로는 컴퓨터 시스템에서 저장, 이송, 결합, 비교 및 조작될 수 있는 전기적 또는 자기적 신호 형태를 갖고 있으나 반드시 그런 것은 아니다. 때로는 주로 보통의 용도의 이유로 이들 신호를 비트, 값, 요소, 기호, 문자, 용어, 수 등으로 표기하는 것이 편리하였다.
그러나 이들 및 그 유사한 용어들 모두는 적당한 물리적 량과 연관되어져야 하는 것으로 이들 량에 적용된 편리한 표기일 뿐임을 잊지 말아야 한다. 특별히 하기 설명으로부터 명백한 것으로 달리 기재하지 않은 한, 본 발명의 전체에 걸쳐 "인코딩", "디코딩", "디블록킹", "수신", "송신", "전송", "식별", "판단", "분류", "비교", "선택", "저장", "처리", "사용", "초기화", "설정", "플래깅", "액세싱", "연관" 등과 같은 용어를 이용한 설명은 컴퓨터 시스템의 레지스터와 메모리 내의 물리적(전자적) 량으로 나타낸 데이터를 조작하여 이를 컴퓨터 시스템 메모리나 레지스터 또는 기타 다른 정보 저장, 전송 또는 디스플레이 장치 내의 물리적 량으로 유사하게 나타내는 다른 데이터로 변환하는 컴퓨터 시스템이나 이와 유사한 전자적 컴퓨팅 장치의 동작이나 처리를 말한다.
도 5, 6, 8 및 9는 본 발명의 실시예들에 따른, 데이터 처리를 위한 예시적인 컴퓨터 구현 방법의 플로우차트이다. 플로우차트에는 특정 단계들이 설명되지만, 이들 단계는 예시적인 것이다. 즉 본 발명의 실시예들은 여러 가지 다른 단계나 플로우차트에 기재된 단계의 변형을 수행하는데 적절하다.
도 5, 6, 8 및 9의 플로우차트는 프로그램 모듈과 같이, 하나 또는 그 이상의 컴퓨터나 기타 다른 장치에 의해 실행되는, 어떤 컴퓨터 이용가능 매체 형태에 존재하는 컴퓨터 실행 명령어로서 구현될 수 있다. 일반적으로 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 프로그램 모듈의 기능은 여러 가지 실시예에서 원하는 대로 조합되거나 분산될 수 있다.
컴퓨터 이용가능 매체는 예컨대 컴퓨터 저장 매체와 통신 매체를 포함할 수 있으나 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 다른 데이터와 같은 정보의 저장을 위한 임 의의 방법이나 기술에서 구현되는 휘발성, 불휘발성, 착탈식 및 고정식 매체를 포함한다. 컴퓨터 저장 매체는 RAM(random access memory), ROM(read only memory), EEPROM(electrically erasable programmable ROM), 플래시 메모리나 기타 다른 메모리 기술, CD-ROM(compact disk ROM), DVD(digital versatile disk)나 기타 다른 광 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지나 기타 다른 자기 스토리지 디바이스, 또는 원하는 정보를 저장하는데 사용될 수 있는 임의의 여러 가지 매체를 포함하나 이에 한정되는 것은 아니다.
통신 매체는 반송파나 기타 다른 수송 메카니즘과 같은 피변조 데이터 신호로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 구체화할 수 있다. 용어 "피변조 데이터 신호"는 신호 내의 정보를 인코딩하게끔 설정 또는 변경된 그 특성들 중 하나 또는 그 이상을 가진 신호를 의미한다. 통신 매체는 예컨대 유선망이나 직접 유선 접속부와 같은 유선 매체와, 음향, 무선 주파수(RF), 적외선과 같은 유선 매체와 기타 다른 무선 매체를 포함하나 이에 한정되는 것은 아니다. 상기 매체들을 조합한 것도 컴퓨터 판독 매체의 범위에 포함되어야 한다.
도 2는 본 발명의 실시예에 따른 디코더가 구현될 수 있는 예시적인 시스템(200)의 블록도이다. 도 2의 예에서 시스템은 버스(25)를 통해 그래픽 처리 장치(GPU)(22)에 연결된 호스트 중앙 처리 장치(CPU)(21)를 포함한다. GPU는 매체 처리 장치(MPU)라고도 할 수 있다. CPU와 GPU는 모두 메모리(24)에 연결되어 있다. 도 2의 예에서 메모리는 공유 메모리로서 CPU와 GPU 모두를 위한 명령어와 데 이터를 저장한다. 대안으로서 CPU와 GPU는 각각 별도의 전용 메모리를 가질 수 있다. 메모리는 또한 연결된 디스플레이(23)를 구동하는 화소 데이터를 저장하는 비디오 프레임 버퍼도 포함할 수 있다.
일반적으로 말하면, 시스템(20)은 본 발명의 실시예들에 따른 기능을 구현하는 컴퓨터 시스템 플랫폼의 기본 컴포넌트들을 포함한다. 시스템(20)은 예컨대 임의의 여러 가지 형태의 컴퓨터 시스템(예컨대 랩톱, 데스크톱 및 노트북)은 물론 셋톱 박스나 디지털 텔레비전과 같은 가정 오락 시스템(예컨대 DVD 플레이어), 휴대형 또는 핸드헬드 전자 장치(예컨대 이동 전화, 개인 휴대 정보 단말 또는 핸드헬드 게임기), 또는 디스플레이 능력을 가진 가상적인 임의 형태의 장치로 구현될 수 있다.
도 3은 본 발명의 일 실시예에 따른 디코더(30)의 구성 요소를 도시한 블록도이다. 일반적으로 디코더는 인코딩된 비트스트림(31)을 수신하여 이 비트스트림 내의 데이터를 디코딩하여 디스플레이가능한 이미지 데이터(34)를 생성한다.
일 실시예에서 미가공 이미지 데이터(예컨대 비디오 데이터)는 임의의 압축 방식을 이용하여 압축되어, 프레임 종류(예컨대 인트라 코딩된 I-프레임, 예측된 P-프레임 또는 양방향 예측된 B-프레임), 마크로블록 예측 모드(예컨대 인터 블록 대 인트라 블록), 변환(예컨대 이산 코사인 변환) 계수, 텍스처 계수 및 모션 벡터 정보와 같은 인코딩 파라미터 세트를 생성하나 이에 한정되는 것은 아니다. 그러면 인코딩 파라미터는 예컨대 허프만 코딩법을 이용하여 가변 길이 코드(VLC)로 변환된다. 인코딩된 비트스트림은 VLC를 포함하는 직렬화된 비트스트림이다.
디코더는 본질적으로 인코딩 프로세스를 역전(reverse)시켜 이미지 데이터를 재구성한다. 도 3의 예에서 디코더는 디코딩단(32)과 디블록킹단(33)을 포함하는 디코딩 파이프라인(36)을 포함한다.
디코딩단은 가변 길이 디코딩, 역양자화, 역변환 및 모션 보상과 같은 기본적인 디코딩 동작을 수행한다. 일반적으로 디코딩단은 인코딩된 비트스트림을 해석하여 VLC를 추출한 다음에 이 VLC를 변환하여 상기 언급된 인코딩 파라미터를 재생한다. 인코딩 파라미터는 원 비디오 데이터를 재구성하는데 사용된다(더 구체적으로는 원 비디오 데이터 버전이 구성된다).
디블록킹단은 재구성된 이미지가 렌더링(디스플레이)될 때에 인접한 마크로블록들 간의 경계를 부드럽게 하기 위하여 디블록킹 필터를 적용하여 마크로블록을 디코딩한다. 예컨대 디블록킹 필터는 인접한 마크로블록들 간의 경계 또는 그 근처의 화소 값들의 가중화된 평균을 이용하여 그 경계를 따른 마크로블록들을 혼합할 수 있으며, 이로서 압축(인코딩) 프로세스에 의해 도입될 수 있는 아티팩트(artifact)를 제거할 수 있다. 만일 이 아티팩트가 제거되지 않으면 재구성된 영상이 매끄럽게 보이지 않을 수가 있다. 일 실시예에서 디블록킹단은 2개의 디블록커를 포함하는데 이에 대해서는 도 4를 참조로 하기에 더 자세히 설명한다.
하기의 설명에서 "디코더"는 달리 설명하지 않는 한 디코딩과 디블록킹 모두를 수행하는 구성 요소(예컨대 독립 또는 주변 장치나 통합 시스템)를 말한다. "디코딩"은 달리 설명하지 않는 한 상기에서 언급한 기본적인 디코딩 동작(예컨대 가변 길이 디코딩, 역양자화, 역변환 및 모션 보상)을 말한다. "충분히 디코딩된 데이터"와 "완전히 디코딩된 데이터"란 용어는 달리 설명하지 않는 한 디코딩과 디블록킹이 모두 된 데이터를 말한다.
디코딩 파이프라인에서의 제2 디블록커
도 4는 본 발명의 일 실시예에 따른, 프레임 버퍼(45)와 디스플레이(46)에 연결된 디코더의 구성 요소를 도시한 블록도이다. 도 4의 예에서 디코더는 디코딩단(32)과 디블록킹단(33)을 포함한다. 디블록킹단은 제1 디블록커(41)와 제2 디블록커(42)를 포함한다. 디코딩단에서부터 제1 디블록커까지의 경로는 여기서는 디코딩 파이프라인까지의 1차 경로라고 할 수 있고, 디코딩단에서부터 제2 디블록커까지의 경로는 여기서는 디코딩 파이프라인까지의 2차 경로라고 할 수 있다. 일 실시예에서 디코딩단의 출력과 제2 디블록커의 입력 간에는 저장 요소(43)가 연결되어 있으며, 이 저장 요소는 제1 디블록커의 입력에도 연결되어 있다.
제1 및 제2 디블록커의 출력은 프레임 버퍼에 저장된다. 그 후에 프레임 버퍼의 내용은 디스플레이 상에서 렌더링될 수 있고 그리고/또는 다른 프레임을 디코딩하는데 사용될 수 있다. 후자의 경우에 어떤 프레임(예컨대 I-프레임이나 P-프레임 또는 B-프레임과 같은 기준 프레임. H.264에 따르면 B-프레임이 기준 프레임으로 사용될 수 있음)이 일단 디코딩되고 나면, 이에 의존하여 하나 또는 그 이상의 후속 프레임(예컨대 다른 P-프레임이나 B-프레임)을 디코딩할 수 있다. 디코딩을 위해 다른 프레임이 의존하는 각 프레임은 프레임 버퍼에 저장되어 이들 다른 프레임을 디코딩할 때에 이용될 수 있다. 일부 구현에서는 다른 프레임을 디코딩하기 위해 의존되는 프레임들을 저장하기 위해 프레임 버퍼가 아닌 다른 메모리가 사용될 수 있다.
제1 및 제2 디블록커는 서로 동시에 그리고 디코딩단과 동시에 동작할 수 있다. 예컨대 제1 디블록커가 어떤 한 프레임을 디블록킹하고 있는 동안에 제2 디블록커는 다른 프레임을 디블록킹하고, 디코딩단은 또 다른 프레임에 대해 동작하고 있을 수 있다. 더욱이 어떤 경우에는 디블록커가 어떤 프레임의 일부에 대해 동작하고 있는 동안에 디코딩단은 그 프레임의 후속 부분에 대해 동작하고 있을 수 있다. 즉 어떤 상황에서는 프레임 내의 마크로블록이 그 프레임 내의 다른 마크로블록의 디코딩과 동시에 디코딩되어, 제1 디블록커에 직접 입력되고 즉시(on-the-spot) 디블록킹될 수 있다. 즉시 디블록킹에 대한 추가 정보에 대해서는 도 6, 8 및 9를 참조로 후술한다.
제2의 독립형 디블록커를 도입한다는 것은 하기에서 상세히 설명된 상황에서 어떤 프레임의 디블록킹을 1차 경로에서부터 유사한 2차 경로로 오프로딩될 수 있다는 것을 의미한다. 처리 시간이 감소되어 전반적인 성능이 향상된다.
일반적으로, 도 4의 디코더는 도 5의 플로우챠트에 약술한 바와 같이 동작하는데, 도 5는 본 발명의 실시예에 따른 제2 디블록커를 이용하여 데이터를 처리하는 컴퓨터 구현 방법을 도시한다. 도 5의 블록(51)에서, 인코딩된 프레임은 디코더의 제1 단(기본 디코딩단)으로의 입력으로서 수신된다. 블록(52)에서, 인코딩된 프레임은 디코딩되어 디코딩된 프레임(디블록킹 전에 디코딩됨)을 생성한다.
블록(53)에서, 디코딩된 프레임은 디블록킹될 수 있도록 제1 디블록커나 제2 디블록커에 전송된다. 일 실시예에서 디코딩된 프레임은 이 디코딩된 프레임을 분 류하는 방법에 따라서 제1 디블록커나 제2 디블록커로 전송된다. 디코딩된 프레임이 제1 타입의 프레임으로 분류되면 이 프레임은 제1 디블록커로 전송되고, 이와 달리 디코딩된 프레임이 제2 타입의 프레임으로 분류되면 이 프레임은 제2 디블록커로 전송된다. 프레임 분류에 관한 추가 정보에 대해서는 도 6을 참조로 후술한다.
도 5의 블록(54)에서, 완전히 디코딩된(디코딩과 디블록킹이 모두 된) 프레임은 프레임 버퍼로 전송되어, 여기서 후속 프레임을 재구성하는데 사용되거나 볼 수 있도록 렌더링될 수 있다.
디코딩 파이프라인에서의 적응성 디블록킹
일 실시예에서 도 4의 디코더는, 본 발명의 소정 실시예에 따른, 제2 디블록커를 이용하여 데이터를 처리하는 예시적인 컴퓨터 구현 방법을 보여주는 도 6의 플로우차트에서 약술한 바와 같이 적응적으로 동작한다. 블록(61)에서, 디코더는 인코딩된 프레임에 액세스한다.
블록(62)에서, 프레임이 "순차적 프레임"인지 "비순차적 프레임"인지 여부에 대해 판단한다. 여기서 사용된 순차적 프레임은 규정된 순서로 배열된 마크로블록을 포함하는 프레임이다. 프레임 내의 마크로블록의 배열이 특정의 미리 정해진 순서를 만족한다면 그 프레임은 순차적 프레임으로 분류되고, 그렇지 않으면 그 프레임은 비순차적 프레임으로 분류된다. 전술한 FMO 및/또는 ASO를 이용하여 인코딩된 프레임은 비순차적 프레임의 예이다.
프레임 헤더는 프레임을 FMO/ASO 프레임으로 또는 순차적 프레임 대 비순차 적 프레임으로 식별하는데 사용될 수 있는 정보를 포함하지 않을 수 있다. 그러나 일 실시예에서 프레임 내의 각 마크로블록과 연관된 마크로블록 번호를 이용하여 프레임이 순차적 프레임인지 비순차적 프레임인지 여부를 하기에서 설명되는 방식으로 추론할 수 있다.
일반적으로 말하면 마크로블록 번호는 마크로블록이 인코딩되는 순서와 일치한다. 예컨대 마크로블록들에는 프레임의 상단 좌측 마크로블록부터 시작하여 좌에서 우로 그리고 상에서 하로 단조적으로 증가하는 번호가 연속적으로 매겨져 있을 수 있다. 또한 일반적으로 마크로블록은 프레임의 상단 좌측 마크로블록으로 시작하여 좌에서 우로 상에서 하로 진행하면서 인코딩된다(때로는 "라스터 스캔 순서"라 함). 따라서 인코딩된 프레임 내의 마크로블록이 인코딩된 순서로 디코더에 수신되면, 그 프레임 내의 마크로블록 번호가 순서대로 되어 있을 것이다.
따라서 일 실시예에서 프레임의 인코딩된 버전(그러므로 프레임의 디코딩된 버전) 내의 마크로블록 번호가 번호 순으로 되어 있다면 그 프레임은 순차적 프레임이고, 그렇지 않으면 그 프레임은 비순차적 프레임이다. 일 실시예에서 디코더가 프레임 내의 마크로블록("관심 마크로블록", 여기서는 "현재 마크로블록"이라고도 함)을 수신하면 디코더는 그 관심 마크로블록의 마크로블록 번호를 관심 마크로블록 바로 앞에서 수신된 마크로블록의 마크로블록 번호와 비교한다. 즉 디코더는 마크로블록들의 마크로블록 번호들을 다음과 같이 마크로블록들이 그 디코더에서 수신된 순서로 비교할 수 있다.
모든 i=0, 1, ..., N-1에 대해 MB_IDi +1=MB_IDi+1이면, 프레임은 순차적이고,
그렇지 않으면, 프레임은 비순차적이다.
여기서 "MB_ID"는 마크로블록 번호이고, "i"는 마크로블록의 수신 순서에 해당하고, "N"은 프레임 내의 마크로블록 수이다.
도 6을 참조로 설명을 계속하면, 프레임이 비순차적 프레임으로 분류되면 플로우차트는 블록(63)으로 진행하고, 그렇지 않으면 플로우차트는 블록(64)으로 진행한다.
블록(63)에서, 비순차적 프레임이 "기준 프레임"인지 "비기준 프레임"인지 여부에 대해 판단한다. 여기서 사용된 기준 프레임은 디코딩을 위해 다른 프레임이 의존하는 프레임이다. 기준 프레임의 예로는 I-프레임과 P-프레임(때로는 각각 I-화상과 P-화상이라 함)이 있다. H.264에 따르면 B-프레임이 기준 프레임으로 사용될 수 있다. 여기서 사용된 비기준 프레임은 기준이 아닌 프레임을 말한다. B-프레임(또는 B-화상)은 비기준 프레임의 일례이다. 각 프레임과 연관된 프레임 헤더는 관행적으로 프레임을 I-프레임, P-프레임 또는 B-프레임으로 식별하는 정보를 포함한다.
프레임이 기준 프레임으로 분류되면 플로우차트는 블록(64)으로 진행하고, 그렇지 않으면 플로우차트는 블록(65)으로 진행한다.
블록(64)에서, 순차적 기준 프레임이나 비순차적 기준 프레임은 도 4의 제1 디블록커를 이용하여 완전히 디코딩된다(기본적인 디코딩 플러스 디블록킹). 즉 프레임은 "즉시" 디블록킹된다. 이 프레임은 비순차적 비기준 프레임이 처리되는 방식과는 달리 디블록킹 전에 메모리에 반드시 저장되는 것은 아니다(도 6의 블록(65, 66, 67) 참조).
프레임이 순차적 기준 프레임 또는 순차적 비기준 프레임이라면 프레임이 디코딩될 때에 디블록킹이 일어날 수 있다. 일반적으로 말하면 순차적 프레임으로 분류되기 위해서는 프레임 내의 마크로블록 모두가 전술한 바와 같이 순차적이어야 한다. 다시 도 1을 참조로 설명하면 마크로블록(M1)을 디블록킹하기 위해서는 마크로블록(M2, M3)(예컨대 마크로블록(M1)의 좌측에서 가장 가까운 것 및/또는 이 마크로블록의 위에서 가장 가까운 것)으로부터의 정보가 이용된다. 일반적으로 순차적 프레임에서 마크로블록(M2)과 마크로블록(M3)은 그 프레임 내의 마크로블록(M1)의 위치에 상관없이 마크로블록(M1)이 디블록킹될 준비가 되기 전에 디코딩되고 디블록킹될 것이다.
일반적으로 순차적 프레임에서는 특정 마크로블록을 디블록킹하기 위해 의존되는 마크로블록(들)은 그 특정 마크로블록을 디블록킹할 때에 바로 디코딩되고 디블록킹될 것이다. 따라서 순차적 프레임은 프레임 내의 각 마크로블록이 디코딩될 때에 즉시 디블록킹될 수 있으며, 디코딩된 마크로블록은 제1 디블록커에 바로 전송되어 기본 디코딩 직후에 디블록킹될 수 있다.
순차적 프레임을 처리하는 동안에 한 마크로블록이 디블록킹되고 있는 동안에 다음 마크로블록이 디코딩되고 있을 수 있다. 마찬가지로 한 프레임 내의 모든 마크로블록이 디코딩되고 나면, 선행 프레임 내의 마크로블록이 디블록킹되고 있는 동안에도 그 파이프라인의 디코딩단은 다음 프레임 내의 마클로블록 디코딩을 시작할 수 있다. 즉 디블록킹단이 한 프레임의 뒤쪽의 마크로블록을 처리하고 있는 동안에 디코딩단이 다음 프레임의 첫 번째 마크로블록을 처리하고 있을 수 있다.
도 6의 블록(65)에서는 비순차적 비기준 프레임이 디코딩된다(기본 디코딩만). 이 시점에서 도 4의 디코딩단을 이용하여 다음 프레임의 디코딩을 시작할 수 있다.
도 6의 블록(66)에서는 디코딩된 비순차적 비기준 프레임이 도 4의 저장 요소(43)에 선택적으로 저장된다. 프레임이 비순차적 비기준 프레임인 경우에는 그 프레임 내의 디코딩된 마크로블록의 일부 또는 전부를, 그 마크로블록들을 디블록킹하는데 필요한 다른 마크로블록도 디코딩될 때까지 저장할 필요가 있을 수 있다. 더욱이 비기준 프레임에 의존하여 다른 프레임을 디코딩하지는 않으며, 따라서 어떤 이유로 디블록킹을 연기하는 것이 유리하다면 디블록킹을 연기할 수 있다. 블록(67)에서 비순차적 비기준 프레임은 도 4의 제2 디블록커를 이용하여 디블록킹된다.
따라서 비순차적 비기준 프레임의 기본 디코딩이 완수된 후에는 디코딩된 데이터가 디블록킹을 위해 제2 디블록커에 보내진다. 그와 동시에 1차 디코딩 경로를 이용하여 다음 프레임을 디코딩할 수 있다. 즉 비순차적 비기준 프레임이 디블록킹되고 있는 동안에 다음 프레임이 그 디블록킹과 동시에(시간적으로 중첩하여) 디코딩될 수 있다. 이런 식으로 비기준 프레임 디코딩은 FMO/ASO가 인에이블 되더라도 순차적 프레임 디코딩 만큼 빠르게 수행될 수 있다. 일반적으로 비디오 계열 내의 프레임의 대부분은 비기준 프레임이다. 그러므로 비기준 프레임을 순차적 디코딩에 양립가능한 속도(rate)로 처리함으로써 디코딩 파이프라인의 전체 성능이 크게 개선될 수 있다.
도 6의 실시예를 요약하면, 디코딩된 프레임이 (이 프레임 내의 마크로블록이 순차적인지 비순차적인지에 상관없이) 기준 프레임으로 분류된 경우에는 디코딩된 프레임은 즉시 디블록킹을 위해 제1 디블록커로 바로 전송된다. 디코딩된 프레임이 순차적 비기준 프레임으로 분류되면 디코딩된 프레임도 즉시 디블록킹을 위해 제1 디블록커로 바로 전송된다. 또한, 디코딩된 프레임이 비순차적 비기준 프레임으로 분류되면 이것은 제2 디블록커로 전송된다. 즉, 전술한 실시예에 따라서 제1 디블록커는 (순차적 또는 비순차적) 기준 프레임과 순차적 비기준 프레임을 디블록킹하고, 제2 디블록커는 비순차적 비기준 프레임을 디블록킹한다.
따라서 본 발명의 실시예에 따라서 기준 프레임과 비기준 프레임 간을 구별하는 것 이외에도 순차적 프레임과 비순차적 프레임 간을 구별할 수 있다. 즉, 실시간 입력 데이터에 기초하여 ASO/FMO 인코딩을 신속하게 검출(더 구체적으로는 추론)하고 그에 따라 디코딩 방식(구체적으로 디블록킹 방식)을 적응할 수 있다. ASO/FMO의 실시간 검출은 프레임 내의 슬라이스의 도달 순서가 보장되는 않는 통신 애플리케이션에서 저지연 처리를 달성하는데 특히 중요할 수 있다. 여기서 설명된 실시예들은 ASO/FMO이 이용되고 있는지에 대해 선험적으로 알고 있지 않더라도 ASO/FMO가 이용되지 않는 경우에는 순차적 디코딩을 수행할 수 있고 ASO/FMO이 이용되는 경우에는 처리 지연을 줄일 수가 있다.
본 발명의 실시예에 따라서 제2 디블록커는 디코딩 파이프라인 내로 도입되며, 그에 따라서 일부 프레임 종류에 대해서는 디블록킹 작업이 1차 디코딩 경로(제1 디블록커를 포함하는 경로)로부터 유사한 2차 경로(제2 디블록커를 포함하는 경로)로 오프로딩될 수 있다. 결과적으로 제1 디블록커는 사실상 더 본질적인 프레임(예컨대 기준 프레임)을 디블록킹하기 위해 예약된다. 결과적으로 더 본질적인 프레임의 디블록킹이 더욱 빠르게 수행될 수 있다. 더욱이 제1 디블록커는 사실상 즉시 디블록킹될 수 있는 프레임(예컨대 순차적 프레임)을 디블록킹하기 위해 예약될 수도 있다. 마크로블록이 디코딩될 때에 즉시 디블록킹이 완수되므로 즉시 디블록킹을 위해 제1 디블록커를 이용해도 디코딩 파이프라인에 지연이 생기지 않는다.
2개의 디블록커를 이용하여 여러 가지 유형의 프레임을 처리함으로써, 디코딩과 디블록킹이 각 특정 프레임 유형에 대해 가장 빠른 파이프라인 경로를 이용하여 완수될 수 있으므로 프레임 디코딩과 디블록킹이 전체적으로 더욱 빠르게 완수될 수 있다. 게다가 기준 프레임과 순차적 프레임에 대한 즉시 디블록킹을 이용하게 되면 종래의 2-패스 구현에서처럼 디코딩된 데이터를 저장하고 페치할 필요가 없기 때문에 데이터 버스에 걸리는 트래픽이 줄어들고 저장된 데이터의 량도 줄어든다. 일반적으로 말하면 제2 디블록커를 이용하게 되면 전체 디코더 성능이 개선된다.
제2 디블록커는 반드시 전용 프로세서나 다른 전용 하드웨어 자원을 이용하여 구현될 필요는 없다. 제2 디블록커는 예컨대 작동하고 있지 않은 GPU나 CPU를 이용하여 구현될 수 있다. 즉, 대부분은 아니더라도 일부 경우에 제2 디블록커는 시간 임계(time-critical) 프레임에 대해 작용하지 않을 수 있으며, 따라서 그 기능은 기존의 하드웨어 자원이 이용가능하게 될 때에 그 자원을 이용하여 제공될 수 있다.
프레임 내의 마크로블록의 즉시 디블록킹
상기 도 6의 설명에서 기준 프레임과 순차적 비기준 프레임은 즉시 (디코딩 직후) 디블록킹될 수 있지만, 비순차적 비기준 프레임은 좀 더 늦게 디코딩, 저장 및 디블록킹된다. 그러나 비순차적 프레임으로 분류된 프레임 내에는 순차적으로 된 마크로블록 계열이 있을 수 있다. 어떤 상황에서는 비순차적 프레임 내의 순차적 마크로블록 계열은 즉시 디블록킹될 수 있다.
구체적으로 프레임 내의 특정 마크로블록은 그 프레임에서 이 마크로블록에 앞선 모든 마크로블록이 디코딩되고 디블록킹된(충분히 디코딩된) 때에 디블록킹될 수 있다. 반면에 특정 마크로블록에 앞선 마크로블록이 모두 다가 충분히 디코딩된 것은 아니라면 그 특정 마크로블록은, 프레임 레벨에서 전술한 것과 유사하게, 앞선 마크로블록 모두가 충분히 디코딩되었을 때에 저장되고 그 후에 디블록킹을 위해 다시 로드된다. 마크로블록이 디블록킹된 후에는, 이제는 이를 이용하여, 디코딩은 되었으나 디블록킹은 되지 않은 다음 번 마크로블록을 디블록킹하고, 다음에는 이를 이용하여, 디코딩은 되었으나 디블록킹은 되지 않은 그 다음 번 마크로블록을 디블록킹하고,... 하는 식으로 디블록킹에 적합한 모든 마크로블록들을 디블록킹할 수 있다.
도 7a은 프레임 내의 마크로블록의 디블록킹 상태를 추적하는데 이용될 수 있는 예시적인 어레이(70)를 보여준다. 이 어레이는 프레임 내의 각 마크로블록에 대한 비트 값을 포함한다. 비트 값은 디코딩은 되었지만 디블록킹은 되지 않은 마크로블록은 어느 것인지를 식별하도록 설정된다. 마크로블록에 대한 비트가 설정되지 않으면 그 마크로블록은 아직 디코딩되지 않았거나 디코딩과 디블록킹이 된 것이다. 즉 비트는 디블록킹 후보가 되는 마이크로블록을 식별하도록 설정된다.
도 7a의 예에서 어레이는 4×3 비트 값 어레이를 포함한다. 도 7a는 비디오 데이터의 프레임의 일부만을 나타내는데, 일반적으로 프레임은 12개보다 많은 마크로블록을 포함한다. 초기에는 모든 비트 값은 같은 바이너리 값(예컨대 0)으로 설정된다. 프레임이 완전히 디코딩된 후에는 그 어레이는 다시 초기화된다.
도 7b는 마크로블록(M0, M1, M2, M3)이 디코딩 및 디블록킹된 후인 좀 더 늦은 시각에서의 예시적인 어레이를 보여준다. 도 7b의 예에서 마크로블록(M0. M1, M2, M3)은 같은 슬라이스(슬라이스 1) 내에 있으며 이들이 인코딩된 순서로(예컨대 M0, M1, M2, M3의 순으로) 디코더에서 수신된다. 마크로블록(M0)은 디블록킹을 위해 현재 프레임 내의 다른 마크로블록에 의존하지 않으므로 즉시 디코딩되고 디블록킹될 수 있다. 즉시 디블록킹은 도 4의 제1 디블록커를 이용하여 1차 경로를 따라 디코딩 파이프라인을 통해 수행된다.
그 다음, 마크로블록(M1)은, 현재 프레임 내에서 디블록킹을 위해 마크로블록(M0)에만 의존하므로, 제1 디블록커를 이용하여 즉시 디코딩되고 디블록킹될 수 잇다. 일반적으로 말하면, 마크로블록(M1)을 디블록킹하는데 필요한 모든 마크로 블록이 디코딩되고 디블록킹되었다. 즉, 인코딩 순서에 있어 마크로블록(M1)에 앞선 모든 마크로블록은 수신되어 디블록킹되었다. 다시 이 일반화가 마크로블록(M2, M3)에 적용될 수 있으며, 그러므로 이들 마크로블록도 제1 디블록커를 이용하여 즉시 디코딩 및 디블록킹된다. 도면들에서 별표를 이용해서 마크로블록(M0, M1, M2, M3)이 디코딩 및 디블록킹되었다는 것을 표시한다. 실제로는 그와 같은 구별을 할 필요는 없다.
슬라이스(S1)에 이어서 마크로블록(M6, M7)으로 구성된 슬라이스(S2)가 디코더에서 수신된다. 즉, 마크로블록이 순차적으로 수신되지 않는다. 마크로블록(M6, M7)은, 인코딩 순서에 있어 마크로블록(M6, M7)에 앞선 모든 마크로블록(예컨대 M4, M5)이 아직 수신 및 디블록킹되지 않았기 때문에, 디코딩될 수는 있으나 디블록킹될 수는 없다. 따라서 마크로블록(M6, M7)에 대응하는 비트 값이 도 7c에 나타낸 바와 같이 어레이 내에 (예컨대 1로) 설정된다. 또한 디코딩된 마크로블록(M6, M7)은 메모리(예컨대 도 4의 저장 요소(43))에 저장된다.
슬라이스(S2)에 이어서 마크로블록(M8, M9)으로 구성된 슬라이스(S3)가 디코더에서 수신된다. 마크로블록(M8, M9)은, 이 마크로블록(M8, M9)에 앞선 모든 마크로블록이 아직 수신 및 디블록킹되지 않았기 때문에(이 시점에서 마크로블록(M4, M5)은 아직 디블록킹되지 않음), 디코딩될 수는 있으나 디블록킹될 수는 없다. 따라서 마크로블록(M8, M9)에 대응하는 비트 값이 도 7d에 나타낸 바와 같이 어레이 내에 (예컨대 1로) 설정된다.
슬라이스(S3)에 이어서 마크로블록(M4, M5)으로 구성된 슬라이스(S4)가 디코 더에서 수신된다. 마크로블록(M4)은, 인코딩 순서에 있어 이 마크로블록에 앞선 모든 마크로블록(즉, 마크로블록(M0, M1, M2, M3))이 디코딩 및 디블록킹되었으므로, 제1 디블록커에서 즉시 디코딩 및 디블록킹될 수 있다. 마크로블록(M4)이 디블록킹된 후에는 마크로블록(M5)이 제1 디블록커에서 즉시 디코딩 및 디블록킹될 수 있다.
더욱이 마크로블록(M5)이 디블록킹되고 나면 이제는 마크로블록(M6)에 앞선 모든 마크로블록이 디블록킹되었을 것이며, 따라서 마크로블록(M6)은 저장 장치로부터 검색되어 디블록킹될 수 있다. 이 경우에 마크로블록(M6)은 1차 경로를 따라 디코딩 파이프라인을 통해 도 4의 제1 디블록커를 이용하여 디블록킹된다. 마크로블록(M6)이 디블록킹되고 나면, 마크로블록(M7)이 저장 장치로부터 검색되어 제2 디블록커를 이용하여 디블록킹되는 등, 이러한 동작은 마크로블록(M9)까지 수행될 수 있다. 이 예에서 마크로블록(M10, M11)은, 모든 앞선 마이크로블록이 디코딩 및 디블록킹되었다 하더라도 마크로블록(M10, M11) 자신이 아직 수신 및 디코딩되지 않았기 때문에, 이 시점에서는 디블록킹되지 않는다. 마크로블록(M10, M11)이 수신되고 나면, 이들은 도 4의 제1 디블록커를 이용하여 즉시 디코딩 및 디블록킹될 수 있다.
전술한 실시예에 따라서 마크로블록은 다음의 3가지 상태, 즉 아직 디코딩되지 않은 상태(불완전 기본 디코딩); 디코딩은 되었으나 디블록킹은 되지 않은 상태; 및 디코딩과 디블록킹이 된 상태 중 하나를 가질 수 있다. 그러나 각 마크로블록의 상태를 표시하는데 2가지 상태를 가진 단 하나의 바이너리 비트만이 필요한 데, 그 이유는 어레이를 이용하여 디블록킹의 후보가 되는 마크로블록(디코딩은 되었으나 디블록킹은 되지 않은 마크로블록)을 식별하기 때문이다. 디블록킹을 위한 마크로블록을 식별할 목적으로, 아직 디코딩되지 않은 마크로블록을 디코딩 및 디블록킹된 마크로블록과 구별할 필요는 없다.
도 8은 본 발명의 소정 실시예에 따른, 마크로블록을 즉시 디블록킹하는 컴퓨터 구현 방법의 플로우차트이다. 블록(81)에서는 (마지막으로 디블록킹된 마크로블록에 대한) 변수 "Last_Db_MB"는 -1 값(마이너스 1)으로 초기화된다. 도 7a의 어레이도 전술한 바와 같이 초기화된다.
블록(82)에서는 현재 마크로블록(M)에 대한 마크로블록 번호("MB_ID")가 액세스된다. 블록(83)에서는 MB_ID의 값이 값 1씩 증분되는 Last_Db_MB의 값(Last_Db_MB+1)과 비교된다. 실제로 블록(83)은 마크로블록이 순차적으로 또는 비순차적으로 수신되고 있는지 여부와, 순차적으로 수신되고 있는 경우에는 바로 이전의 마크로블록(M-1)이 완전히 디코딩되었는지(디코딩 및 디블록킹되었는지) 여부를 판단하는데 이용된다. MB_ID의 값이 Last_Db_MB+1의 값과 같다면, 현재 마크로블록(M)은 디블록킹된 마지막 마크로블록(Last_Db_MB)에 이어지는 다음 마크로블록이다. 즉, 현재 마크로블록(M)에 대한 마크로블록 번호 및 마지막으로 디블록킹된 마크로블록(Last_Db_MB)에 대한 마크로블록 번호는 연속된 번호이다. 그런 다음에 플로우차트는 블록(87)으로 진행한다. 그렇지 않으면, 마크로블록은 비순차적으로 수신되고 있거나 현재 마크로블록(M)이 마지막으로 디블록킹된 마크로블록(Last_Db_MB)에 이어지는 다음 마크로블록이 아니다. 즉, 현재 마크로블록(M)은 마지막으로 디블록킹된 마크로블록(Last_Db_MB)과는 디블록킹되지 않았던 하나 또는 그 이상의 마크로블록 만큼 떨어져 있는 것이다. 그런 다음에 플로우차트는 블록(84)으로 진행한다.
블록(84)에서는 현재 마크로블록(M)이 디코딩되고(디블록킹되지는 않음), 이 디코딩된 데이터가 (예컨대 도 4의 저장 요소(43)) 내에) 저장된다. 블록(85)에서는 현재 마크로블록(M)이 디코딩은 되나 디블록킹은 되지 않은 것으로 플래그된다. 일 실시예에서 현재 마크로블록(M)에 대응하는 비트 값은 도 7a-7d와 관련하여 전술한 바와 같이 어레이 내에 설정된다.
도 8의 블록(86)에서는, 현재 마크로블록(M)이 프레임 내의 마지막 마크로블록이 아니라면, 플로우차트는 블록(82)으로 되돌아간다(어떤 유형의 에러가 있다면 플로우차트는 이 시점에서 항상 블록(82)으로 되돌아갈 것이다).
블록(87)에서는 현재 마크로블록(M)이 도 4의 제1 디블록커를 이용하여 즉시 디코딩 및 디블록킹된다. 전술한 바와 같이 마크로블록은 인코딩 순서에 있어 이에 앞선 모든 마크로블록도 디블록킹되었다면 디블록킹될 수 있다. 현재 마크로블록(M)에 바로 앞선 마크로블록(M-1)이 (플로우차트의 블록(83)에서 판단된 대로) 디블록킹되었다면, 현재 마크로블록(M)은 디블록킹될 수 있다. 즉, 마크로블록(M-1)은 디블록킹되어 있기 위해서는 이에 앞선 모든 마크로블록이 디블록킹되었다는 조건을 만족하였을 것이며, 현재 마크로블록(M)은 마크로블록(M-1)에 바로 이어지므로 이 역시 그 조건을 만족할 것이다.
도 8의 블록(88)에서는 다른 적합한 마크로블록이 저장 장치로부터 검색되어 도 4의 제2 디블록커를 이용하여 디블록킹된다. 즉, 인코딩 순서상 현재 마크로블록(M)에 바로 이어지는 마크로블록(M+1)도 마크로블록(M+1)이 이미 디코딩되어 저장되었다면 디블록킹될 수 있다. 마크로블록(M+1)이 디블록킹되고 나면, 인코딩 순서상 이 마크로블록(M+1)에 바로 이어지는 마크로블록(M+2)은 이것이 이미 디코딩되어 저장되었다면 디블록킹될 수 있고 하는 식으로 될 수 있다. 일 실시예에서 디블록킹에 적합한 각 마크로블록은 도 7a-7d의 어레이와 같은 어레이에서 플래그된다. 도 9와 관련하여 추가 정보도 하기와 같이 제공된다.
도 8의 블록(89)에서는 (이제는 마지막으로 디블록킹된 Last_Db_MB와 등가인) 현재 마크로블록(M)이 프레임 내의 마지막 마크로블록이 아니라면 플로우차트는 블록(82)으로 되돌아간다. 그렇지 않으면, 프레임은 완전히 디코딩된다.
도 9는 본 발명의 소정 실시예에 따른, 적합한 마크로블록을 디블록킹하는 예시적인 컴퓨터 구현 방법의 플로우차트이다. 블록(91)에서는 프레임 내의 N번째 마크로블록이 디블록킹되고, 디블록킹에 적합한 다른 마크로블록이 식별된다. 일 실시예에서 도 7a-7d의 어레이와 같은 어레이가 액세스되어 적합한 마크로블록을 식별한다.
도 9의 블록(92)에서는 마지막으로 (가장 최근에) 디블록킹된 마크로블록(블록(91)에서 디블록킹된 마크로블록)에 대한 마크로블록 번호는 1씩 증분된다(N=N+1). 블록(93)에서는 N의 현재 값이 프레임 내의 마지막 마크로블록에 대한 마크로블록 번호보다 크다면 플로우차트는 블록(95)으로 진행하고, 그렇지 않으면 플로우차트는 블록(94)으로 진행한다.
블록(94)에서는 현재 마크로블록에 대응하는 어레이 내의 비트 값이 읽어진다. 비트 값이 (에컨대 1로) 설정되어 있다면 현재 마크로블록은 디블록킹될 수 있고, 플로우차트는 블록(91)으로 되돌아가고, 현재 마크로블록은 디블록킹된다. 그렇지 않으면 플로우차트는 블록(95)으로 진행한다.
블록(95)에서는 (상기 정의된) Last_Db_MB의 값이 1만큼 감분된 N의 현재 값인 (N-1)로 설정되고, Last_Db_MB의 값은 도 8과 관련하여 설명한 바와 같이 복귀되어 이용된다.
따라서 본 발명의 소정 실시예에 따라서 마크로블록은 디블록킹되기에 적합하게 되자마자 디블록킹될 수 있다. 즉시 디블록킹은 비순차적 (예컨대 ASO/FMO) 프레임 내에 있는 일부 마크로블록에 대해서 달성될 수 있다. 따라서 그와 같은 프레임 내의 모든 마크로블록을 메모리에 전송하거나 이로부터 읽어낼 필요가 없으므로 버스 트래픽량이 줄어들 수 있고, 메모리 소모량도 줄어든다. 더욱이 하나의 마크로블록이 디코딩되고 있는 동안에 다른 마크로블록이 디블록킹될 수 있는 것과 같이 디코딩 동작과 디블록킹 동작이 동시에 수행될 수 있으므로 연산 시간이 줄어들 수 있다.
예컨대 도 10은 (음영이 있는 블록을 이용하여 나타낸) 제1 슬라이스 내의 마크로블록이 (음영이 없는 블록을 이용하여 나타낸) 제2 슬라이스 내의 마크로블록과 함께 체커보드 패턴(checkboard pattern)으로 산재해 있는 프레임의 일부를 보여준다. 제1 슬라이스가 먼저 디코더에 전송되고, 이어서 제2 슬라이스가 전송되는데, 그러므로 프레임은 ASO/FMO 프레임이다. 디코딩 동안에 제1 (상단 좌측) 마크로블록(Ma)은 즉시 디블록킹될 수 있으나, 다른 음영이 있는 블록은 디블록킹 전에 저장된다. 제2 (음영이 없는) 슬라이스 내의 마크로블록이 디코딩될 때에 제2 슬라이스 내의 모든 마크로블록은 이것이 디코딩된 후에 바로 디블록킹될 수 있으며 제1 슬라이스 내의 모든 마크로블록은 메모리로부터 순차적으로 페치되어 디블록킹될 수 있다. 더 구체적으로 설명하자면, 마크로블록(Mb)은 이것이 디블록킹되고 있는 마크로블록(Ma)에 의존하므로 즉시 디블록킹될 수 있고, 그러면 마크로블록(Mc)가 메모리로부터 검색되어 디블록킹될 수 있고, 마크로블록(Md)은 즉시 디블록킹될 수 있고 하는 식이 될 수 있다. 그러므로 제2 슬라이스 내의 마크로블록을 디블록킹 전에 저장할 필요가 없고, 제1 슬라이스 내의 마크로블록만이(마크로블록(Ma)은 제외) 디블록킹 전에 저장된다. 따라서 이 예에서는 프레임 내의 마크로블록의 절반 이하가 디블록킹 전에 저장되어 버스를 통한 메모리로의 그리고 이로부터의 트래픽도 약 반으로 줄어든다.
모션 보상은 완료하는데 디블록킹보다 더 많은 시간이 걸릴 수 있으므로 디코딩 파이프라인의 디블록킹단은 때로는 유휴 상태에 있을 수 있다(예컨대 이것은 데이터를 원하고 있을 수 있다). 그러나 즉시 디블록킹에 의해 디블록킹단은 이 유휴 시간을 이용하여 저장된 마크로블록을 처리할 수가 있기 때문에 종래의 2-패스 구현과 비교해서 전체 디코딩 시간을 줄일 수가 있다.
게다가 ASO/FMO 프레임은 신속하게 검출될 수 있다. 순차적 프레임을 디코딩하는데 있어 종래의 구현과 적어도 동일한 성능을 달성하면서도 비순차적 프레임의 디코딩은 크게 개선된다. 더욱이 하나의 디코더 구조를 이용하여 순차적/비순 차적 기준/비기준 프레임을 처리할 수 있으며, 이 디코더를 통한 경로는 처리되고 있는 프레임의 유형에 따라서 적응적으로 선택된다.
본 발명의 특정 실시예에 대한 상기 설명은 예시와 설명의 목적으로 제시되었다. 이러한 설명은 본 발명을 전부 다 설명하거나 본 발명을 한정하려는 것이 아니며, 상기 교시에 따라 많은 변형과 변화가 가능하다. 실시예들은 본 발명의 윈리와 그 실제 응용을 가장 잘 설명하여 당업자가 본 발명과 생각하고 있는 특정 용도에 맞는 여러 가지 변형을 가진 여러 가지 실시예를 가장 잘 활용할 수 있도록 하기 위해 선택되고 기술되었다. 본 발명의 범위는 여기에 첨부된 청구범위와 그 등가물에 의해 정해질 것이다.
본 발명은 첨부 도면을 참조하여 한정적으로가 아니라 예시적으로 설명된다. 도면에서 유사한 구성 요소에 대해서는 동일 도면부호가 병기된다.
도 1은 마크로블록의 어레이를 도시한 도.
도 2는 본 발명의 실시예에 따른 디코더가 구현될 수 있는 예시적인 시스템의 블록도.
도 3은 본 발명의 일 실시예에 따른 디코딩 파이프라인의 구성 요소를 도시한 블록도.
도 4는 본 발명의 소정 실시예에 따른 디코더의 구성 요소를 도시한 블록도.
도 5는 본 발명의 소정 실시예에 따른, 제2 디블록커를 이용하여 데이터를 처리하는 예시적인 컴퓨터 구현 방법의 플로우차트.
도 6은 본 발명의 소정 실시예에 따른, 제2 디블록커를 적응적으로 이용하여 데이터를 처리하는 예시적인 컴퓨터 구현 방법의 플로우차트.
도 7a, 7b, 7c 및 7d는 본 발명의 소정 실시예에 따른, 마크로블록 상태를 추적하는데 이용될 수 있는 예시적인 배열을 도시한 도.
도 8은 본 발명의 소정 실시예에 따른, 마크로블록을 디블록킹하는 예시적인 컴퓨터 구현 방법의 플로우차트.
도 9는 본 발명의 소정 실시예에 따른, 디블록킹에 적합한 마크로블록을 식별하는 예시적인 컴퓨터 구현 방법의 플로우차트.
도 10은 본 발명의 실시예들에 따른, 디블록킹될 수 있는 예시적인 비순차 프레임을 도시한 도.
<도면의 주요부분에 대한 부호의 설명>
21: CPU
22: GPU
23: 디스플레이
24: 메모리
30: 디코더
32: 디코딩단
33: 디블록킹단
36: 디코딩 파이프라인
43: 저장 요소
41: 제1 디블록커
42: 제2 디블록커
45: 프레임 버퍼

Claims (20)

  1. 인코딩된 데이터의 프레임들을 디코딩하는 디코더로서,
    제1의 인코딩된 프레임을 디코딩하여 제1의 디코딩된 프레임을 생성하도록 동작가능한 제1 디코더단; 및
    상기 제1 디코더단의 하류에 연결되며, 디코딩된 프레임들을 동시에 디블록킹하도록 동작가능한 제1 디블록커 및 제2 디블록커를 포함하는 제2 디코더단
    을 포함하고,
    프레임 유형은 상기 제1의 디코딩된 프레임과 연관되고, 상기 제1의 디코딩된 프레임은 상기 프레임 유형에 따라서 상기 제1 디블록커 및 상기 제2 디블록커 중 어느 하나로 전송되며, 상기 제1의 디코딩된 프레임은 상기 제1의 인코딩된 프레임 내의 마크로블록들이 특정 순서로 상기 디코더에 도달하는 경우에는 순차적(in-order) 프레임으로 식별되고, 그렇지 않은 경우에는 상기 제1의 디코딩된 프레임은 비순차적(out-of-order) 프레임으로 식별되고, 상기 제1의 디코딩된 프레임은 다른 프레임이 디코딩을 위해 상기 제1의 디코딩된 프레임 내의 정보에 의존하는 경우에는 기준 프레임으로 식별되고, 그렇지 않은 경우에는 상기 제1의 디코딩된 프레임은 비기준 프레임으로 식별되고, 또한 상기 제1의 디코딩된 프레임은 상기 제1의 디코딩된 프레임이 비순차적 비기준 프레임으로 분류되는 경우에는 상기 제2 디블록커로 전송되고, 그렇지 않은 경우에는 상기 제1의 디코딩된 프레임은 상기 제1 디블록커로 전송되는 디코더.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 제1의 인코딩된 프레임은 각자의 관련 마크로블록 번호를 가진 복수의 마크로블록을 포함하고, 상기 제1의 디코딩된 프레임은 상기 마크로블록들이 상기 마크로블록 번호들이 연속하여 증가하는 순서로 상기 디코더에 도달하는 경우에 순차적 프레임으로 식별되는 디코더.
  5. 제1항에 있어서,
    상기 제2 디블록커에 연결되어, 디코딩된 프레임들을 디블록킹 전에 저장하도록 동작가능한 저장 요소를 더 포함하는 디코더.
  6. 제1항에 있어서,
    상기 제1 디코더단은 상기 제1의 디코딩된 프레임의 디블록킹과 동시에 제2의 인코딩된 프레임을 디코딩하도록 동작가능한 디코더.
  7. 제1항에 있어서,
    상기 제1 디코더단은 가변 길이 디코딩, 역양자화, 역변환 및 모션 보상으로 이루어진 그룹으로부터 선택된 동작들을 수행하도록 동작가능한 디코더.
  8. 데이터의 인코딩된 프레임들을 처리하는 컴퓨터 구현 방법으로서,
    제1의 인코딩된 프레임을 디코더의 제1 단에의 입력으로서 수신하는 단계;
    상기 제1의 인코딩된 프레임을 상기 제1 단에서 디코딩하여 제1의 디코딩된 프레임을 생성하는 단계;
    상기 제1의 인코딩된 프레임 내의 마크로블록들이 규정된 순서로 되어 있는 경우에는 상기 제1의 디코딩된 프레임을 순차적 프레임으로 식별하고, 그렇지 않은 경우에는 상기 제1의 디코딩된 프레임을 비순차적 프레임으로 식별하는 단계;
    다른 프레임이 디코딩을 위해 상기 제1의 디코딩된 프레임 내의 정보에 의존하는 경우에는 상기 제1의 디코딩된 프레임을 기준 프레임으로 식별하고, 그렇지 않은 경우에는 상기 제1의 디코딩된 프레임을 비기준 프레임으로 식별하는 단계;
    상기 제1의 디코딩된 프레임을 상기 디코더의 상기 제1 단으로부터 제2 단으로 전송하는 단계 - 상기 제2 단은 디코딩된 프레임들을 동시에 디블록킹하도록 동작가능한 제1 디블록커 및 제2 디블록커를 포함하고, 상기 제1의 디코딩된 프레임이 비순차적 비기준 프레임으로 식별되는 경우에는 상기 제1의 디코딩된 프레임은 상기 제2 디블록커로 전송되고, 그렇지 않은 경우에는 상기 제1의 디코딩된 프레임은 상기 제1 디블록커로 전송됨 - ; 및
    상기 제1의 디코딩된 프레임을 상기 제2 단에서 디블록킹하여 디스플레이 장치에서 렌더링하는데 적합한 제1의 디코딩 및 디블록킹된 프레임을 생성하는 단계
    를 포함하는 컴퓨터 구현 방법.
  9. 삭제
  10. 제8항에 있어서,
    상기 제1의 인코딩된 프레임은 특정 순서로 인코딩되는 복수의 마크로블록을 포함하고,
    상기 방법은,
    상기 마크로블록들이 인코딩의 특정 순서가 아닌 다른 순서로 상기 디코더에 도달하는 경우와 상기 제1의 디코딩된 프레임이 비기준 프레임으로 식별되는 경우에는 상기 제1의 디코딩된 프레임을 상기 제2 디블록커로 전송하는 단계; 및
    그렇지 않은 경우에는 상기 제1의 디코딩된 프레임을 상기 제1 디블록커로 전송하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  11. 제10항에 있어서,
    상기 마크로블록들의 각각은 각자의 연관된 마크로블록 번호를 갖고 있고, 상기 복수의 마크로블록은 증가하는 마크로블록 번호의 순서로 인코딩되는 컴퓨터 구현 방법.
  12. 제8항에 있어서,
    하나 또는 그 이상의 디코딩된 프레임들을 디블록킹 전에 저장하는 단계를 더 포함하는 컴퓨터 구현 방법.
  13. 제8항에 있어서,
    제2의 인코딩된 프레임을 상기 제1의 디코딩된 프레임의 디블록킹과 동시에 디코딩하는 단계를 더 포함하는 컴퓨터 구현 방법.
  14. 제8항에 있어서,
    상기 디코딩은 가변 길이 디코딩, 역양자화, 역변환 및 모션 보상으로 이루어진 그룹으로부터 선택된 동작들을 포함하는 컴퓨터 구현 방법.
  15. 인코딩된 데이터의 프레임들을 디코딩하는 디코더 파이프라인으로서,
    인코딩된 프레임들을 디코딩하도록 동작가능한 디코딩단; 및
    상기 디코딩단에 연결되며, 디코딩된 프레임들을 디블록킹하도록 동작가능한 제1 디블록커 및 제2 디블록커를 포함하는 디블록킹단
    을 포함하며,
    디코딩된 기준 프레임들은 상기 제2 디블록커가 아닌 상기 제1 디블록커를 이용하여 디블록킹되고, 상기 제1 및 제2 디블록커들 중 어느 하나는 디코딩된 비기준 프레임의 인코딩된 버전 내의 마크로블록들의 순서화(ordering)에 따라서 상기 디코딩된 비기준 프레임을 디블록킹하도록 선택되고, 한 프레임은 다른 프레임이 디코딩을 위해 그 프레임에 의존하는 경우에는 기준 프레임으로 분류되고, 그렇지 않은 경우에는 비기준 프레임으로 분류되며, 상기 인코딩된 버전 내의 마크로블록들이 특정 순서로 되어 있는 경우에는 상기 디코딩된 비기준 프레임은 순차적 프레임으로 식별되고, 그렇지 않은 경우에는 상기 디코딩된 비기준 프레임은 비순차적 프레임으로 식별되며, 상기 디코딩된 비기준 프레임이 순차적 프레임으로 분류된 경우에는 상기 디코딩된 비기준 프레임은 상기 제1 디블록커로 전송되고, 상기 디코딩된 비기준 프레임이 비순차적 프레임으로 분류된 경우에는 상기 디코딩된 비기준 프레임은 상기 제2 디블록커로 전송되는 디코더 파이프라인.
  16. 삭제
  17. 제15항에 있어서,
    상기 인코딩된 버전 내의 마크로블록들이 마크로블록 번호들이 연속하여 증가하는 순서로 상기 디코더에 도달하는 경우에는 상기 디코딩된 비기준 프레임은 순차적 프레임으로 식별되고, 그렇지 않은 경우에는 상기 디코딩된 비기준 프레임은 비순차적 프레임으로 식별되는 디코더 파이프라인.
  18. 제15항에 있어서,
    상기 제2 디블록커에 연결되어, 디코딩된 프레임들을 디블록킹 전에 저장하도록 동작가능한 저장 요소를 더 포함하는 디코더 파이프라인.
  19. 제15항에 있어서,
    상기 디코딩단은 인코딩된 프레임을 처리하도록 동작가능하고, 이와 동시에 상기 디블록킹단은 디코딩된 프레임을 처리하도록 동작가능한 디코더 파이프라인.
  20. 제15항에 있어서,
    상기 디코딩단은 가변 길이 디코딩, 역양자화, 역변환 및 모션 보상으로 이루어진 그룹으로부터 선택된 동작들을 수행하도록 동작가능한 디코더 파이프라인.
KR1020090097134A 2008-10-14 2009-10-13 디코딩 파이프라인에서의 제2 디블록커 KR101082184B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/250,809 2008-10-14
US12/250,809 US8867605B2 (en) 2008-10-14 2008-10-14 Second deblocker in a decoding pipeline

Publications (2)

Publication Number Publication Date
KR20100041681A KR20100041681A (ko) 2010-04-22
KR101082184B1 true KR101082184B1 (ko) 2011-11-09

Family

ID=42098825

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090097134A KR101082184B1 (ko) 2008-10-14 2009-10-13 디코딩 파이프라인에서의 제2 디블록커

Country Status (5)

Country Link
US (1) US8867605B2 (ko)
JP (1) JP4987049B2 (ko)
KR (1) KR101082184B1 (ko)
CN (1) CN101729895B (ko)
TW (1) TWI473040B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9179166B2 (en) 2008-12-05 2015-11-03 Nvidia Corporation Multi-protocol deblock engine core system and method
US9241167B2 (en) * 2012-02-17 2016-01-19 Microsoft Technology Licensing, Llc Metadata assisted video decoding
US20140056363A1 (en) * 2012-08-23 2014-02-27 Yedong He Method and system for deblock filtering coded macroblocks
CN106470341B (zh) 2015-08-17 2020-10-02 恩智浦美国有限公司 媒体显示系统
CN113545041A (zh) * 2019-03-07 2021-10-22 数字洞察力有限公司 图像编码/解码方法和设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060008001A1 (en) 2004-07-06 2006-01-12 Samsung Electronics Co., Ltd. Pipelining decoding apparatus and method, and computer-readable recording medium for storing computer program for controlling the pipelining decoding apparatus
US20060262862A1 (en) 2005-05-19 2006-11-23 Chao-Chung Cheng Deblocking filtering method used on video encoding/decoding and apparatus thereof

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080A (en) * 1858-04-27 Improvement in harvesters
FI106071B (fi) 1997-03-13 2000-11-15 Nokia Mobile Phones Ltd Mukautuva suodatin
JPH11205792A (ja) 1998-01-14 1999-07-30 Sony Corp ブロック歪低減方法及び装置
KR100359208B1 (ko) 2000-12-27 2002-11-04 주식회사 팬택앤큐리텔 고속 디블럭킹 필터 장치
US6980596B2 (en) 2001-11-27 2005-12-27 General Instrument Corporation Macroblock level adaptive frame/field coding for digital video content
US6907079B2 (en) 2002-05-01 2005-06-14 Thomson Licensing S.A. Deblocking filter conditioned on pixel brightness
CN100358366C (zh) 2002-07-11 2007-12-26 松下电器产业株式会社 滤波强度的决定方法、动态图像编码方法及解码方法
US6917310B2 (en) 2003-06-25 2005-07-12 Lsi Logic Corporation Video decoder and encoder transcoder to and from re-orderable format
MXPA06001111A (es) 2003-08-19 2006-04-11 Matsushita Electric Ind Co Ltd Metodo de codificacion de imagen en movimiento y metodo de decodificacion de imagen en movimiento.
US7590059B2 (en) 2004-05-21 2009-09-15 Broadcom Corp. Multistandard video decoder
JPWO2006013854A1 (ja) * 2004-08-05 2008-05-01 松下電器産業株式会社 画像復号化装置および画像符号化装置
US8116379B2 (en) 2004-10-08 2012-02-14 Stmicroelectronics, Inc. Method and apparatus for parallel processing of in-loop deblocking filter for H.264 video compression standard
KR20060060919A (ko) 2004-12-01 2006-06-07 삼성전자주식회사 H.264/mpeg-4 에서의 블록킹 효과를 제거하기 위한디블록 필터 및 필터링 방법
JP4270125B2 (ja) 2004-12-16 2009-05-27 ソニー株式会社 データ処理装置、画像処理装置、それらの方法およびプログラム
US8576924B2 (en) 2005-01-25 2013-11-05 Advanced Micro Devices, Inc. Piecewise processing of overlap smoothing and in-loop deblocking
US20060233253A1 (en) 2005-03-10 2006-10-19 Qualcomm Incorporated Interpolated frame deblocking operation for frame rate up conversion applications
JP2006254231A (ja) * 2005-03-11 2006-09-21 Toshiba Corp 情報処理装置および同装置で用いられるプログラム
US7796792B2 (en) 2005-06-29 2010-09-14 Agfa Healthcare, N.V. Method of identifying disturbing frequencies originating from the presence of an anti-scatter grid during acquisition of a radiation image
KR100772379B1 (ko) 2005-09-23 2007-11-01 삼성전자주식회사 외부 메모리 장치, 그 영상 데이터 저장 방법, 이를 이용한영상 처리 장치
US7796692B1 (en) * 2005-11-23 2010-09-14 Nvidia Corporation Avoiding stalls to accelerate decoding pixel data depending on in-loop operations
JP2007251881A (ja) 2006-03-20 2007-09-27 Funai Electric Co Ltd ブロックノイズ除去装置及び電子機器
US20080056350A1 (en) * 2006-08-31 2008-03-06 Ati Technologies, Inc. Method and system for deblocking in decoding of video data
KR100827107B1 (ko) * 2006-10-20 2008-05-02 삼성전자주식회사 다중 연산부 구조의 h.264 복호화기 및 그 복호화기의압축 영상 데이터 복호화 방법
TW200820783A (en) * 2006-10-25 2008-05-01 Realtek Semiconductor Corp Apparatus and method for deblock filtering
US20080123750A1 (en) * 2006-11-29 2008-05-29 Michael Bronstein Parallel deblocking filter for H.264 video codec
US20080159407A1 (en) 2006-12-28 2008-07-03 Yang Nick Y Mechanism for a parallel processing in-loop deblock filter
US8369411B2 (en) 2007-03-29 2013-02-05 James Au Intra-macroblock video processing
US8861591B2 (en) 2007-05-11 2014-10-14 Advanced Micro Devices, Inc. Software video encoder with GPU acceleration
US20080298473A1 (en) * 2007-06-01 2008-12-04 Augusta Technology, Inc. Methods for Parallel Deblocking of Macroblocks of a Compressed Media Frame
US8265144B2 (en) * 2007-06-30 2012-09-11 Microsoft Corporation Innovations in video decoder implementations
US20090010326A1 (en) * 2007-07-05 2009-01-08 Andreas Rossholm Method and apparatus for parallel video decoding
ATE526788T1 (de) 2007-11-16 2011-10-15 St Microelectronics Sa Deblockierungsfilter
CN101207812B (zh) * 2007-12-10 2010-04-07 海信集团有限公司 一种视频环路滤波方法
US20090304085A1 (en) * 2008-06-04 2009-12-10 Novafora, Inc. Adaptive Deblocking Complexity Control Apparatus and Method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060008001A1 (en) 2004-07-06 2006-01-12 Samsung Electronics Co., Ltd. Pipelining decoding apparatus and method, and computer-readable recording medium for storing computer program for controlling the pipelining decoding apparatus
US20060262862A1 (en) 2005-05-19 2006-11-23 Chao-Chung Cheng Deblocking filtering method used on video encoding/decoding and apparatus thereof

Also Published As

Publication number Publication date
CN101729895B (zh) 2013-01-09
KR20100041681A (ko) 2010-04-22
US8867605B2 (en) 2014-10-21
TW201019271A (en) 2010-05-16
JP2010098725A (ja) 2010-04-30
US20100091878A1 (en) 2010-04-15
TWI473040B (zh) 2015-02-11
CN101729895A (zh) 2010-06-09
JP4987049B2 (ja) 2012-07-25

Similar Documents

Publication Publication Date Title
US8724694B2 (en) On-the spot deblocker in a decoding pipeline
US8861586B2 (en) Adaptive deblocking in a decoding pipeline
TWI755376B (zh) 用於視訊寫碼之濾波器之幾何轉換
US8576924B2 (en) Piecewise processing of overlap smoothing and in-loop deblocking
US7792385B2 (en) Scratch pad for storing intermediate loop filter data
US8731067B2 (en) Memory management for video decoding
US11700396B2 (en) Optimized edge order for de-blocking filter
KR101082184B1 (ko) 디코딩 파이프라인에서의 제2 디블록커
JP7439841B2 (ja) ループ内フィルタリングの方法及びループ内フィルタリングの装置
US20180324427A1 (en) Quantization partitioning for enhanced image compression
US7953161B2 (en) System and method for overlap transforming and deblocking
US9788002B2 (en) Image processing apparatus and method
US20110051815A1 (en) Method and apparatus for encoding data and method and apparatus for decoding data
US20180109796A1 (en) Method and Apparatus of Constrained Sequence Header
US11509940B1 (en) Video apparatus with reduced artifact and memory storage for improved motion estimation
US20060222085A1 (en) System(s), methods(s), and apparatus for extracting slices from bitstream
US8358694B2 (en) Effective error concealment in real-world transmission environment
CN115443655A (zh) 用于处理视频编码中自适应颜色变换和低频不可分离变换的方法
CN117256149A (zh) 使用多模型线性模型的视频编解码
JP2006324905A (ja) 画像符号化方法、及び画像処理装置
US20150117549A1 (en) Moving-picture decoding processing apparatus, moving-picture coding processing apparatus, and operating method of the same

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: 20141023

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181031

Year of fee payment: 8