KR20120087918A - 저비용 영상 인코더 - Google Patents

저비용 영상 인코더 Download PDF

Info

Publication number
KR20120087918A
KR20120087918A KR1020127009492A KR20127009492A KR20120087918A KR 20120087918 A KR20120087918 A KR 20120087918A KR 1020127009492 A KR1020127009492 A KR 1020127009492A KR 20127009492 A KR20127009492 A KR 20127009492A KR 20120087918 A KR20120087918 A KR 20120087918A
Authority
KR
South Korea
Prior art keywords
frame
data unit
image data
encoded
block
Prior art date
Application number
KR1020127009492A
Other languages
English (en)
Inventor
유구오 예
Original Assignee
옴니비전 테크놀러지즈 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 옴니비전 테크놀러지즈 인코포레이티드 filed Critical 옴니비전 테크놀러지즈 인코포레이티드
Publication of KR20120087918A publication Critical patent/KR20120087918A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • 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
    • 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/423Methods 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 characterised by memory arrangements
    • H04N19/426Methods 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 characterised by memory arrangements using memory downsizing methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

신규 영상 데이터 유닛을 인코딩하는 방법은: (1) 래스터가 증가하는 순서로, 인코딩된 레퍼런스 영상 데이터 유닛의 탐색 윈도우 내의 블록들을 레퍼런스 윈도우 버퍼로 디코딩하는 단계, 및 (2) 래스터 순서로, 레퍼런스 윈도우 버퍼의 디코딩된 블록에 기초하여 신규 영상 데이터 유닛의 각 블록을 인코딩하는 단계를 포함한다. 신규 영상 데이터 유닛을 인코딩하는 시스템은 레퍼런스 윈도우 버퍼, 디코딩 서브시스템, 및 인코딩 서브시스템을 포함한다. 디코딩 서브시스템은 래스터가 증가하는 순서로, 인코딩된 레퍼런스 영상 데이터 유닛의 탐색 윈도우 내의 블록들을 레퍼런스 윈도우 버퍼로 디코딩하도록 구성된다. 인코딩 서브시스템은 래스터 순서로, 레퍼런스 윈도우 버퍼의 디코딩된 블록에 기초하여 신규 영상 데이터 유닛의 각 블록을 인코딩하도록 구성된다.

Description

저비용 영상 인코더{LOW-COST VIDEO ENCODER}
본 출원은 2009년 10월 15일 출원된, 미국 특허 가출원 번호 61/251,857호에 대한 우선권의 이익을 주장하고, 여기서 참고문헌으로서 포함된다.
디지털 영상 코딩(digital video coding) 기술은 디지털 영상 시퀀스(sequence)를 구성하는 대량의 비주얼 데이터의 효율적인 저장 및 전송을 가능하게 한다. 국제 디지털 영상 코딩 표준의 개발로, 디지털 영상은 이제 화상 회의 및 DVD부터 디지털 TV, 모바일 영상, 및 인터넷 영상 스트리밍(streaming) 및 쉐어링(sharing)까지 포함하는 다양한, 다수의 어플리케이션(application)에서 다반사가 되어 왔다. 디지털 영상 코딩 표준은 전세계적으로 디지털 영상 어플리케이션의 성장을 부채질하는 데에 요구된 유연성 및 상호 운용성을 제공한다.
현재 디지털 영상 코딩 표준을 개발하고 실시하는 데에 책임이 있는 2개의 국제 단체들이 존재한다: 비디오 코딩 전문가 그룹(Video Coding Experts Group; "VCEG") 및 동화상 전문가 그룹(Moving Pictures Experts Group; "MPEG"). VCEG는 영상 코딩 표준의 H.26x(예를 들어, H.261, H.263) 패밀리를 개발하여 왔고, MPEG은 영상 코딩 표준의 MPEG-x(예를 들어, MPEG-1, MPEG-4) 패밀리를 개발하여 왔다. H.26x 표준은 주로 실시간 영상 통신 어플리케이션, 예를 들어, 화상 회의 및 화상 통화를 위하여 설계되어 온 반면에, MPEG 표준은 영상 저장, 영상 방송 및 영상 스트리밍 어플리케이션의 필요를 제시하도록 설계되어 왔다.
또한 ITU-T 및 ISO/IEC는 예전의 H.262(또는 MPEG-2) 및 최근의 H.264(또는 MPEG-4 파트 10/AVC) 표준을 포함하는, 고성능, 고품질 영상 코딩 표준을 개발하는 데에 힘을 합쳐 왔다. 2003년에 채택된, H.264 영상 코딩 표준은 실질적으로 예전의 영상 코딩 표준보다 낮은 비트 전송속도(bit rate)로 높은 영상 품질을 제공한다. H.264 표준은 저해상도 어플리케이션 및 고해상도 어플리케이션뿐 아니라, 낮은 비트 전송 속도 어플리케이션 및 높은 비트 전송 속도 어플리케이션을 포함하는, 다양한 어플리케이션에 적용되기에 충분한 유연성을 제공한다.
H.264 인코더는 디지털 영상 시퀀스의 영상 프레임 각각을 "매크로블록(macroblock)"이라고 하는, 픽셀의 16×16 블록들로 분할한다. 각각의 매크로블록은 "인트라-코딩되고(intra-coded)" 또는 "인터-코딩된다(inter-coded)".
인트라-코딩된 매크로블록들은 변환(transform), 양자화(quantization) 및 엔트로피(entropy)(예를 들어, 변수-길이) 코딩을 통해 매크로블록 내에 존재하는 공간적 중복성(spatial redundancies)을 활용함으로써 압축된다. 코딩 효율을 더 증가시키기 위하여, 인트라-코딩된 매크로블록과 이의 인접한 매크로블록 사이의 공간적 상관관계는 인트라-예측(intra-prediction)을 이용함으로써 활용될 수 있고, 우선 인트라-코딩된 매크로블록은 인접한 매크로블록들로부터 예측되고 이어서 예측된 매크로블록들과의 차이만이 코딩된다.
한편, 인터-코딩된 매크로블록들은 상이한 프레임들에 걸쳐 시간적 중복성-유사성을 활용한다. 일반적인 영상 시퀀스에서, 연속적인 프레임들은, 카메라 또는 대상의 움직임(motion)에 의해 종종 야기된, 프레임부터 프레임까지 마이너 픽셀 이동(minor pixel movement)만으로, 상호 간에 종종 유사하다. 따라서, 모든 인터-코딩된 매크로블록들에 대하여, H.264 인코더는 움직임 추정 및 움직임 보상을 수행한다. 움직임 추정 동안에, H.264 인코더는 이하에서 "레퍼런스 프레임(reference frame)"이라고 하는, 다른 프레임에서 픽셀들의 최상의 매칭 16×16 블록을 탐색한다. 실제 어플리케이션에서, 탐색은 일반적으로 현재의 매크로블록 위치 중심에 있는 한정된 "탐색 윈도우(search window)"로 제한된다. 움직임 보상 단계에서, 획득된 픽셀들의 최상의 매칭 16×16 블록은 현재의 매크로블록으로부터 제하여져서(substracted), 이어서 인코딩되고 최상의 매칭 블록의 상대 위치를 설명하는 "움직임 벡터(motion vector)"와 함께 전송되는 잔여 블록(residual block)을 생성한다. H.264 표준에 따라, H.264 인코더는 16×16 인터-코딩된 매크로블록을 16×8, 8×16, 8×8, 4×8, 8×4 및 4×4와 같은 다양한 크기의 파티션(partition)들로 분할하도록 선택할 수 있고, 독립적으로 자기 움직임-벡터로 움직임-추정되고, 움직임-보상되며, 코딩된 파티션들 각각을 갖는다는 것이 언급될 것이다. 하지만, 일반성을 제한하지 않고 간결성을 위하여, 본 개시에서 설명된 실시예만이 단일 파티션 인터-매크로블록들을 나타낸다.
많은 다른 영상 코딩 표준과 같이, H.264 표준은 3개의 주된 타입의 프레임들을 구별한다: I-프레임, P-프레임 및 B-프레임. I-프레임은 인트라-코딩된 매크로블록만을 포함할 수 있다. P-프레임은 과거의 레퍼런스 프레임으로부터 움직임-보상된 인터-코딩된 매크로블록 및/또는 인트라-코딩된 매크로블록만을 포함할 수 있다. B-프레임은 과거의 프레임, 미래의 프레임 또는 2개의 선형 조합으로부터 움직임-보상된 인터-코딩된 매크로블록들 및/또는 인트라-코딩된 매크로블록들을 포함할 수 있다. 상이한 표준은 프레임이 부여된 프레임에 대하여 레퍼런스 프레임으로서 선택될 수 있는 것에 대해서 상이한 제한을 가질 수 있다. MPEG-4 비주얼 표준(visual standard)에서, 예를 들어, 가장 근접한 과거 또는 미래의 P 프레임 또는 I 프레임만이 현재의 프레임에 대한 레퍼런스 프레임으로서 지정될 수 있다. H.264 표준은 이런 제한을 갖지 않고, 더 떨어진 프레임들이 현재의 프레임에 대한 레퍼런스 프레임으로서 작용하도록 허용한다.
도 1에서, 일반적인 H.264 인코더 시스템(100)의 예시적인 구체예가 개략적으로 도시된다. 현재의 프레임(105; current frame)은 (화살표에 의해 표시된) 매크로블록(110)의 유닛(unit)에서 처리된다. 매크로블록(110)은 (화살표에 의해 표시된) 예측 모드(119)에 의해 나타나는 바와 같이 인트라 모드(intra mode) 또는 인터 모드(inter mode) 중 어느 하나로 인코딩되고, 각각의 매크로블록을 위한 (화살표에 의해 표시된) 예측 블록(125)이 형성된다. 인트라 모드에서, (화살표에 의해 표시된) 인트라-예측 블록(118)은 인트라-예측 버퍼(165)에 저장된 (화살표에 의해 표시된) 인접한 매크로블록 데이터(166)에 기초하여 인트라 예측 모듈(180)에 의해 형성된다. 인터 모드에서, ME/MC 모듈(115)은 움직임 추정을 수행하고 (화살표에 의해 표시된) 움직임-보상된 예측 블록(117)을 출력한다. 예측 모드(119)에 따라, 멀티플렉서(120; MUX)는 인트라-예측 블록(118) 또는 움직임-보상된 예측 블록(117) 중 어느 하나를 통과하고, 이어서 결과 예측 블록(125)은 매크로블록(110)으로부터 제하여진다. (화살표에 의해 표시된) 잔여 블록(130)은 DCT/Q 모듈(135)에 의해 변환되고 양자화되어, 이어서 엔트로피 인코더(145; entropy encoder)에 의해 인코딩되고 전송 및/또는 저장을 위한 비트스트림 버퍼(150; bitstream buffer)로 전달되는 (화살표에 의해 표시된) 양자화된 블록(140)을 생성한다.
도 1을 또 참조하여, 매크로블록을 인코딩하고 전송하는 것 이외에, 인코더는 이것을 디코딩하고("재구성하고") 미래의 인트라-예측 또는 인터-예측을 위한 레퍼런스(reference)를 제공한다. 양자화된 블록(140)은 IDCT/InvQ 모듈(155)에 의해 역-변환되고(inverse-transformed) 역-양자화되며(inverse-quantized), 예측 블록(125)에 다시 추가되어 (화살표에 의해 표시된) 재구성된 블록(160)을 형성한다. 이어서 재구성된 블록(160)은 미래의 매크로블록을 위한 인트라-예측에 사용되도록 인트라 예측 버퍼(165)에 기록된다. 또한 재구성된 블록(160)은 원치 않는 압축 아티팩트(artifact)를 감소시킬 수 있는 비블록화 필터(170; deblocking filter)를 통과하고, 결국 비압축 레퍼런스 프레임 버퍼(175)에서의 상응하는 위치에 저장된다. 비블록화 필터링(deblocking filtering)이 H.264 표준에서 선택적이기에, 몇몇의 시스템들은 비블록화 필터(170)를 포함하지 않을 수 있고 재구성된 블록(160)을 직접 비압축 레퍼런스 프레임 버퍼(175)로 저장하지 않을 수 있다는 언급될 것이다.
구체예에서, 신규 영상 데이터 유닛을 인코딩하는 방법은: (1) 래스터가 증가하는 순서로(incrementally, in rastor order), 인코딩된 레퍼런스 영상 데이터 유닛의 탐색 윈도우 내의 블록들을 레퍼런스 윈도우 버퍼로 디코딩하는 단계, 및 (2) 래스터 순서로, 레퍼런스 윈도우 버퍼의 디코딩된 블록에 기초하여 신규 영상 데이터 유닛의 각 블록을 인코딩하는 단계를 포함한다.
구체예에서, 신규 영상 데이터 유닛을 인코딩하는 시스템은 레퍼런스 윈도우 버퍼, 디코딩 서브시스템, 및 인코딩 서브시스템을 포함한다. 디코딩 서브시스템은 래스터가 증가하는 순서로, 인코딩된 레퍼런스 영상 데이터 유닛의 탐색 윈도우 내의 블록들을 레퍼런스 윈도우 버퍼로 디코딩하도록 구성된다. 인코딩 서브시스템은 래스터 순서로, 레퍼런스 윈도우 버퍼의 디코딩된 블록에 기초하여 신규 영상 데이터 유닛의 각 블록을 인코딩하도록 구성된다.
본 개시는 하기에 간략하게 설명된 도면들과 함께 취해진 하기의 상세한 설명에 대한 참조에 의해 이해될 수 있다. 예시적인 명료성을 위하여, 도면들에서 특정한 요소들은 일정한 비율로 도시되지 않을 수 있다는 것이 언급된다.
도 1은 종래 기술의 H.264 영상 인코더 시스템을 도시하는 블록다이어그램이다.
도 2는 구체예에 따른, 프레임 레퍼런스 방식을 도시하는 블록다이어그램이다.
도 3은 구체예에 따른, H.264 영상 인코더 시스템을 도시하는 블록다이어그램이다.
도 4는 구체예에 따른, 레퍼런스 프레임의 부분 디코딩의 공정을 도시하는 블록다이어그램이다.
도 5는 구체예에 따른, 도 4의 부분 디코딩 공정을 추가로 도시하는 시간 다이어그램이다.
도 6은 구체예에 따른, 다른 프레임 레퍼런스 방식을 도시하는 블록다이어그램이다.
도 7은 구체예에 따른, 다른 H.264 영상 인코더 시스템을 도시하는 블록다이어그램이다.
도 8은 구체예에 따른, 레퍼런스 프레임의 부분 디코딩의 다른 공정을 도시하는 블록다이어그램이다.
도 9는 구체예에 따른, 도 8의 부분 디코딩 공정을 추가로 도시하는 시간 다이어그램이다.
도 10은 구체예에 따른, 신규 영상 데이터 유닛을 인코딩하는 방법을 도시한다.
하기의 구체예들 및 이의 양상들은 시스템, 도구 및 방법과 함께 설명되고 도시되며, 이는 바람직하고 예시적이며 범주에 한정되지 않는다는 것을 의미한다. 다양한 구체예들에서, 상기에 설명된 시스템 및 방법과 관련된 하나 이상의 한정이 제기되어 온 반면에, 다른 구체예들은 다른 개선으로 지시된다.
H.264 인코더 설계의 하나의 중요한 특성은 이것이 요구하는 메모리 대역폭 및 메모리 크기이다. 도 1에 설명된 일반적인 H.264 인코더 시스템(100)은 적어도 하기의 메모리 버퍼들을 포함한다: 인트라 예측 버퍼(165; intra prediction buffer), 현재의 프레임(105)을 위한 버퍼, 및 비압축 레퍼런스 프레임 버퍼(175; reference frame buffer). 몇몇의 인접한 매크로블록들만이 인트라 예측을 위하여 필요하기에, 인트라 예측 버퍼(165)는 상대적으로 작다. 현재의 프레임(105)은 전부 저장되지 않아도 된다. 예를 들어, "핑-퐁(ping-pong)" 버퍼들이 사용될 때, 2개의 라인의 매크로블록(macroblock)들만이 요구된다: 일 라인의 매크로블록들이 처리되는 동시에, 두 번째 라인의 매크로블록들은 신규 픽셀 데이터로 채워지고, 일단 제 1 라인이 완전히 처리되면, 이들은 역할을 바꾼다. 훨씬 많은 메모리가 더 개선된 메모리 관리 기술을 실시함으로써 절약될 수 있다.
도 1을 또 참조하여, 2개의 앞서 언급된 메모리 버퍼들에 대하여, 비압축 레퍼런스 프레임 버퍼(175)는 전역, 코딩되지 않은("비압축") 프레임(full, non-coded("uncompressed") frame)들을 포함한다. 하나의 비압축 VGA(640×480) 프레임은 메모리의 460KB만큼 요구할 수 있고 버퍼는 일반적으로 적어도 2개의 비압축 프레임들을 포함할 것이다: 참조되는 것과 미래의 참조를 위하여 인코딩되고(encoded) 재구성되며 절약되는 것. 더욱이, 만약 B-프레임들이 사용되면, 미래의 레퍼런스 프레임이 인코딩되고 재구성될 때까지 각각의 B-프레임은 일시적으로 저장되고, 압축되지 않아야 할 것이다.
메모리를 위한 과도한 요구는 증가된 시스템 비용으로 바뀐다: H.264 인코더를 지지하기 위하여, 시스템은 충분한 메모리 공간 및 메모리 대역폭으로 이것을 제공하여야 한다. 메모리를 쉐어링하는 모든 다른 클라이언트들 및 (최대 데이터 전송 속도로 작동하는) H.264 인코더를 수용하기에 충분히 높은 메모리 접속율을 보장하기 위하여 없어도 되는 메모리 공간을 가져야 하는 시스템들조차도 종종 추가적인 전기 회로망을 요구할 것이기 때문에, 후자는 중요한 인자이다.
메모리 공간 및 대역폭은 특히 소형 이동식 어플리케이션(application), 예를 들어, 휴대폰, 캠코더 또는 디지털 카메라에 제한되고, 이것들은 전력 소비에 상당히 민감하기 때문에, 전력 소비는 증가된 메모리 접속율에 따라 성장한다. 결과적으로, 그렇지 않으면 외부 메모리 칩을 요구하지 않을 많은 단일-칩 어플리케이션은 하나를 포함하도록 강제되어 단지 H.264 인코더를 지지한다. 이는 전체 비용에 영향을 미칠 뿐 아니라, 어플리케이션의 풋프린트(footprint)를 증가시킬 것이고, 어떠한 이동식 어플리케이션 제조자들은 방지하는 것을 시도한다.
따라서, 요구되는 메모리의 양을 철저하게 감소시킬 것이고, 이에 따라 외부 메모리 칩에 대한 필요를 방지하고, 전체 시스템 성능을 향상시키며 비용을 감소시키는 H.264 인코더 시스템 및 방법을 제공하는 것이 바람직할 것이다.
이전에 언급된 바와 같이, H.264 표준은 각각의 레퍼런스 프레임들의 선택에 있어, P-프레임 또는 B-프레임의 경우에, 상이한 프레임에 대한 상이한 프레임 타입(즉, I-프레임, P-프레임, 또는 B-프레임)을 할당하는 것에 대하여 꽤 유연하다.
도 2는 구체예에 따른 타입 할당 및 레퍼런스 방식(200)을 도시한다. 각각의 프레임은 I-프레임 또는 P-프레임 중 어느 하나이도록 할당되고, B-프레임은 존재하지 않는다. 매 P-프레임은 디스플레이 순서로 이것을 처리하는 I-프레임을 참조한다. 예를 들어, P-프레임들(220, 230, 240, 250)은 레퍼런스 프레임으로서 I-프레임(210)을 사용하고, P-프레임들(270, 280, 290)은 레퍼런스 프레임으로서 I-프레임(260)을 사용한다. 2개의 연속적인 I-프레임들 사이의 P-프레임들의 개수는 임의적일 수 있고, 개수는 영상 스트림 전체에서 일정하게 유지하지 않아도 된다는 것이 인식될 것이다.
구체예에 따라, H.264 인코더는 전역 비압축 레퍼런스 프레임을 저장하거나 의존하지 않는다. 대신에, 움직임(motion) 추정(estimation) 및 보상(compensation)을 위하여 요구되는 레퍼런스 데이터는 비트스트림 버퍼(bitstream buffer)에 저장되고 인코딩된("압축된") 상응하는 레퍼런스 I-프레임을 점차 디코딩(decoding)함으로써 획득된다. 예를 들어, 특정한 구체예에서, 인코딩된 레퍼런스 영상 데이터의 탐색 윈도우(search window)(예를 들어, 레퍼런스 I-프레임과 같은 인코딩된 레퍼런스 프레임) 내의 블록들(예를 들어, 매크로블록들)만이 디코딩된다.
도 3에서는, 구체예에 따른, 예시적인 H.264 인코더 시스템(300)이 설명된다. 현재의 프레임(305)은 (화살표에 의해 표시된) 매크로블록(310)의 신규 유닛들에서 처리된다. 매크로블록(310)은 (화살표에 의해 표시된) 예측 모드(319)에 의해 나타난 바와 같이 인트라 모드(inter mode) 또는 인터 모드(inter mode) 중 어느 하나로 인코딩되고 각각의 매크로블록을 위한 (화살표에 의해 표시된) 예측 블록(325)이 형성된다. 인트라 모드에서, (화살표에 의해 표시된) 인트라-예측 블록(318)은 인트라-예측 버퍼(365)에 저장된 (화살표에 의해 표시된) 인접한 매크로블록 데이터(366)에 기초하여 인트라 예측 모듈(380)에 의해 형성된다. 인터 모드에서, ME/MC 모듈(315)은 움직임 추정을 수행하고 (화살표에 의해 표시된) 움직임-보상된 예측 블록(317)을 출력한다. 예측 모드(319)에 따라, 멀티플렉서(320; MUX)는 인트라-예측 블록(318) 또는 움직임-보상된 예측 블록(317) 중 어느 하나를 통과하고, 이어서 결과 예측 블록(325)은 매크로블록(310)으로부터 제하여진다(substracted). (화살표에 의해 표시된) 잔여 블록(330; residual block)은 DCT/Q 모듈(335)에 의해 변환되고 양자화되어, 이어서 엔트로피 인코더(345)에 의해 인코딩되고 전송 및/또는 저장을 위한 비트스트림 버퍼(350)로 전달되는 (화살표에 의해 표시된) 양자화된 블록(340)을 생성한다. 따라서, ME/MC 모듈(315), 인트라 예측 모듈(380), 멀티플렉서(320), DCT/Q 모듈(335) 및 엔트로피 인코더(345)는 종합적으로 인코딩 서브시스템(subsystem)을 형성하도록 고려될 수 있다. 인코더 시스템(300)의 대안적인 구체예들은 상이한 인코딩 서브시스템 구성을 가질 것이라는 것이 예상된다. 예를 들어, 대안적인 구체예에서, 엔트로피 인코더(345; entropy encoder)는 상이한 타입의 인코더로 대체된다.
도 3을 또 참조하여, 매크로블록을 인코딩하고 전송하는 것 이외에, H.264 인코더 시스템(300)은 이것을 디코딩하고("재구성하고") 미래의 인트라-예측 또는 인터-예측을 위한 레퍼런스를 제공한다. 양자화된 블록(340)은 IDCT/InvQ 모듈(355)에 의해 역-변환되고(inverse-transformed) 역-양자화되며(inverse-quantized), 예측 블록(325)에 다시 추가되어 (화살표에 의해 표시된) 재구성된 블록(360)을 형성한다. 이어서 재구성된 블록(360)은 미래의 매크로블록을 위한 인트라-예측에 사용되도록 인트라 예측 버퍼(365)에 기록된다.
도 3을 또 참조하여, 레퍼런스 I-프레임 데이터는 (화살표에 의해 표시된) 매크로블록(381)들의 유닛에서 비트스트림 버퍼(350)로부터 인코딩된 I-프레임을 판독함으로써 획득된다. 각각의 매크로블록(381)은 엔트로피 디코더(382)에 의해 디코딩되고, IDCT/InvQ 모듈(383)에 의해 역-변환되고 역-양자화되며, 인트라 예측 모듈(384)의 출력에 추가된다. 이어서 이는 비블록화 필터(387; deblocking filter)에 의해 필터링되어(filtered) 원치 않는 압축 아티팩트(artifact)를 감소시키고, 결국 비압축 레퍼런스 윈도우 버퍼(388) 내부에서 상응하는 위치에 저장된다. 따라서, 엔트로피 디코더(382), IDCT/InvQ 모듈(383), 인트라 예측 모듈(384), 및 비블록화 필터(387)는 종합적으로 디코딩 서브시스템을 형성하도록 고려될 수 있고, 이의 구성은 인코더 시스템(300)의 상이한 구체예들 중에서 변경시킬 수 있다. 비블록화 필터링이 H.264 표준에서 선택적이기에, 몇몇 구체예들이 비블록화 필터(387)를 우회하도록 선택할 수 있다는 것이 언급될 것이다. 또한, 간결성을 위한, 인트라 디코딩 경로에서 인트라 예측 전기 회로망은 도면으로부터의 표준 인트라 예측 피드백 루프를 생략하면서, 단순화되고 인트라 예측 모듈(384)로 축소된다. 동일한 칩 또는 보드 상에서 H.264 인코더 및 H.264 디코더 모두를 포함하는 어플리케이션에서, H.264 인코더는 상기에 설명된 인트라-디코딩 경로와 같이, H.264 디코더의 전기 회로망의 몇몇을 재사용가능할 수 있게 하는 것이 언급될 것이다. 따라서, 특정한 구체예들에서, 인코더 시스템(300)의 구성요소들 중 몇몇 또는 모두는 공통 집적회로 칩(common integrated circuit chip)의 일부일 것이라는 것이 예상된다.
레퍼런스 윈도우 버퍼(388)에서 전체 레퍼런스 I-프레임뿐 아니라, ME/MC 모듈(315)이 최상의 매칭 레퍼런스 블록을 탐색할 유일한 영역 - H.264 인코더 시스템(300)에 의해 한정된 탐색 윈도우에 상응하는 레퍼런스 I-프레임의 일부를 저장하는 것이 반드시 필요하지 않다. 대부분의 실제 실시에서 탐색 윈도우는 전체 프레임의 작은 일부만으로 구성되기 때문에, 동일한 칩 상에서, 레퍼런스 윈도우 버퍼(388)는 종종 상대적으로 작고 내부로 저장될 수 있다. 따라서, 특정한 구체예들에서, 레퍼런스 윈도우 버퍼(388)는 레퍼런스 I-프레임보다 작다.
도 4는 구체예에 따라, 레퍼런스 프레임이 어떻게 점차 디코딩될 수 있는지를 개략적으로 도시한다. 이런 실시예에서, 현재의 프레임(440)은 폭이 45개의 매크로블록들이고 탐색 윈도우(420)는 현재 처리되는 매크로블록에 정렬된 이것의 중심에 따른 44×3 매크로블록들이도록 한정된다. 이는 현재 인코딩되는 프레임(440)에서 인터-코딩된 매크로블록을 처리하기 위하여, 레퍼런스 I-프레임으로부터의 44×3 매크로블록 윈도우가 손쉽게 디코딩되고 레퍼런스 윈도우 버퍼에서 이용가능하여야 한다. 예를 들어, (P-프레임의) 제 1 매크로블록 MB0(410)을 인코딩하기 위하여 (레퍼런스 I-프레임의) 매크로블록들 MB0 내지 MB22 및 MB45 내지 MB66의 지지가 요구된다. 유사하게는, (P-프레임의) MB67(430)을 인코딩하는 것은 (레퍼런스 I-프레임의) MB1 내지 MB44, MB46 내지 MB89 및 MB91 내지 MB134의 지지를 요구한다. 만약 처리된 매크로블록의 위치가 지지 윈도우(support window)가 프레임의 경계를 초과하도록 한다면, 명백하게, 이런 초과하는 부분이 디코딩될 수 없고 디코딩될 필요도 없다는 것이 언급될 것이다.
도 5는 구체예에 따른, 동시 P-프레임 인코딩 및 레퍼런스 I-프레임 디코딩을 설명하는 예시적인 시간 다이어그램(500)을 제공한다. 우선, 레퍼런스 I-프레임의 매크로블록 MB0 내지 MB66은 디코딩되고 레퍼런스 윈도우 버퍼로 저장된다. 이는 P-프레임의 제 1 매크로블록(MB0(510))이 인코딩되기에 충분한 레퍼런스 데이터 지지를 제공한다. P-프레임의 MB0(510)이 인코딩되는 동시에, 레퍼런스 I-프레임의 MB67(520)은 디코딩되고 레퍼런스 윈도우 버퍼로 저장된다. 다음으로, P-프레임의 MB1은 인코딩되고 레퍼런스 I-프레임의 MB68은 디코딩되고 저장되며, P-프레임에서 최종 매크로블록이 인코딩될 때까지 공정은 래스터 순서(rastor order)를 따라, 이런 방식으로 계속된다(최종 매크로블록이 디코딩될 때 I-프레임 디코딩이 이전에 종료된다). 따라서, 레퍼런스 I-프레임 디코딩은 P-프레임 인코딩보다 일찍 시작되고 종료된다.
효율적인 메모리 사용을 위하여, 최근의 디코딩된 I-프레임 매크로블록은 레퍼런스 윈도우 버퍼에서 "가장 오래된(oldest)" I-프레임 매크로블록을 겹쳐 기록할 수 있고, 매크로블록은 더 이상 레퍼런스를 위하여 사용되지 않을 것이다. 예를 들어, 도 4에 설명된 구체예에서, MB135는 MB0를 대체할 수 있고, 이어서 MB136은 MB1 등을 겹쳐 기록할 수 있다. 이런 메커니즘은 순환 버퍼 관리(cyclic buffer management)를 통해 실시될 수 있다. 따라서, 몇몇 구체예들에서, 탐색 윈도우 내에 상응하는 인코딩된 블록을 갖지 않은 매크로블록들은 레퍼런스 윈도우 버퍼(388)로부터 제거된다.
상기의 실시예에서, 레퍼런스 윈도우 버퍼의 크기는 탐색 윈도우의 크기를 약간 초과한다. 이는 디코딩된 매크로블록들이 래스터 순서로 처리되고, 이는 I-프레임을 디코딩하는 월등히 가장 손쉬운 방법이기 때문이다. 하지만, 레퍼런스 윈도우 버퍼 크기를 탐색 윈도우 크기에 이르기까지 하게 할 수 있는 더 복잡한 디코딩 시퀀스가 존재한다는 것이 인식될 것이다.
다른 구체예에 따라, H.264 영상 인코더는 I-프레임들 및 P-프레임들만을 채택한다. 이하에서 P'-프레임들이라고 하는, 몇몇의 P-프레임들은, 다른 P-프레임들에 대한 레퍼런스로서 작용할 것이다. 다른 P-프레임들은 어느 것이든 더 근접한, 앞선 P'-프레임 또는 I-프레임을 참조할 것이다. 이런 레퍼런스 방식의 일 실시예는 도 6에서 도시된다. 2개의 연속적인 레퍼런스 프레임들(P' 또는 I) 사이의 P-프레임들의 개수 및 I-프레임들 사이의 P'-프레임들의 개수는 임의적일 수 있고, 이런 개수들은 영상 스트림 전체에서 일정하게 유지되지 않아도 된다는 것이 인식될 것이다. 또한 I-프레임 다음에 P'-프레임이 뒤따르지 않아도 된다는 것이 예상될 것이고; 대신에 이것 다음에 하나 이상의 P-프레임이 뒤따를 수 있다.
도 6은 다른 구체예에 따른 타입 할당 및 레퍼런스 방식(600)을 도시한다. 각 프레임은 I-프레임 또는 P-프레임 중 어느 하나이도록 할당되고, B-프레임들은 존재하지 않는다. 이하에서 P'-프레임이라고 하는, 몇몇 P-프레임들은 다른 P-프레임들에 대한 레퍼런스로서 작용할 것이다. 다른 P-프레임들은 더 근접한 어느 쪽이든, 앞선 P'-프레임 또는 I-프레임을 참조할 것이다. 화살표에 의해 표시된 바와 같이, 도 6에 도시된 실시예에서, P'-프레임들(620, 630)은 레퍼런스 프레임으로서 I-프레임(610)을 사용하고, P-프레임들(621, 622, 623 및 631, 632, 633)은 각 레퍼런스 프레임으로서 P'-프레임들(620, 630)을 사용한다. 하지만, 프레임의 다음 그룹에서, 레퍼런스 방식이 이런 실시예에 의해 도시된 바와 같이, 약간 상이할 수 있다: P-프레임들(651, 652)은 레퍼런스로서 I-프레임(650)을 사용하고 P-프레임들(661, 662)은 레퍼런스로서 P'-프레임(660)을 사용한다. 2개의 연속적인 레퍼런스 프레임들(P' 또는 I) 사이의 P-프레임들의 개수 및 I-프레임들 사이의 P'-프레임들의 개수는 임의적일 수 있고, 이런 개수들은 영상 스트림 전체에서 일정하게 유지되지 않아도 된다는 것이 인식될 것이다. 또한 I-프레임 다음에 P'-프레임이 뒤따르지 않아도 된다는 것이 예상될 것이고; 상기에 도시된 바와 같이, 대신에 이것 다음에 하나 이상의 P-프레임들이 뒤따를 수 있다.
이런 구체예에서, H.264 영상 인코더는 전역 비압축 레퍼런스 프레임들을 저장하지 않거나 의존하지 않는다. 대신에, 움직임 추정 및 보상을 위하여 요구된 레퍼런스 데이터는 비트스트림 버퍼에서 저장되고 인코딩된(압축된) 레퍼런스 프레임(I-프레임 또는 P'-프레임)을 점차 디코딩함으로써 획득된다. P'-프레임이 레퍼런스 프레임일 때, 이것을 디코딩하기 위하여, (I-프레임이어야만 하는) 자기 레퍼런스는 우선 적어도 부분적으로 디코딩되어야만 한다. 이런 경우에, P'-프레임 및 I-프레임 모두는 점차 디코딩되어 인코더를 위한 레퍼런스 데이터를 제공한다.
도 7에서, 구체예에 따른, 예시적인 H.264 인코더 시스템(700)이 설명된다. 현재의 프레임(705)은 (화살표에 의해 표시된) 매크로블록(710)의 유닛에서 처리된다. 매크로블록(710)은 (화살표에 의해 표시된) 예측 모드(719)에 의해 나타난 바와 같이 인트라 모드 또는 인터 모드 중 어느 하나로 인코딩되고, 각 매크로블록을 위한 (화살표에 의해 표시된) 예측 블록(725)이 형성된다. 인트라 모드에서, (화살표에 의해 표시된) 인트라-예측 블록(718)은 인트라-예측 버퍼(765)에 저장된 (화살표에 의해 표시된) 인접한 매크로블록 데이터(766)에 기초한 인트라 예측 모듈(780)에 의해 형성된다. 인터 모드에서, ME/MC 모듈(715)은 움직임 추정을 수행하고 (화살표에 의해 표시된) 움직임-보상된 예측 블록(717)을 출력한다. 예측 모드(719)에 따라, 멀티플렉서(720)는 인터-예측 블록(718) 또는 움직임-보상된 예측 블록(717) 중 어느 하나를 통과하고, 이어서 결과 예측 블록(725)은 매크로블록(710)으로부터 제하여진다. (화살표에 의해 표시된) 잔여 블록(730)은 DCT/Q 모듈(735)에 의해 변환되고 양자화되어, 이어서 엔트로피 인코더(745)에 의해 인코딩되고 전송 및/또는 저장을 위한 비트스트림 버퍼(750)로 전달되는 (화살표에 의해 표시된) 양자화된 블록(740)을 생성한다. 따라서, ME/MC 모듈(715), 인트라 예측 모듈(780), 멀티플렉서(720), DCT/Q 모듈(735), 및 엔트로피 인코더(745)는 종합적으로 인코딩 서브시스템을 형성하도록 고려될 수 있다. 인코더 시스템(700)의 대안적인 구체예들은 상이한 인코딩 서브시스템 구성을 가질 것이라는 것이 예상된다. 예를 들어, 대안적인 구체예에서, 엔트로피 인코더(745)는 상이한 타입의 인코더로 대체된다.
도 7을 또 참조하여, 매크로블록을 인코딩하고 전송하는 것 이외에, H.264 인코더 시스템(700)은 이것을 디코딩하고("재구성하고") 미래의 인트라-예측 또는 인터-예측을 위한 레퍼런스를 제공한다. 양자화된 블록(740)은 IDCT/InvQ 모듈(755)에 의해 역-변환되고 역-양자화되며, 예측 블록(725)에 다시 추가되어 (화살표에 의해 표시된) 재구성된 블록(760)을 형성한다. 이어서 재구성된 블록(760)은 미래의 매크로블록을 위한 인트라-예측에 사용되도록 인트라 예측 버퍼(765)에 기록된다.
도 7을 또 참조하여, 현재의 프레임(705)은 레퍼런스로서 I-프레임 또는 P'-프레임 중 어느 하나를 사용할 수 있다. 모든 경우에, I-프레임 레퍼런스 데이터는 우선 매크로블록(781)들의 유닛에서 비트스트림 버퍼(750)로부터 이것을 판독함으로써 획득되고; 각각의 매크로블록(781)은 엔트로피 디코더(782)에 의해 디코딩되고, IDCT/InvQ 모듈(783)에 의해 역-변환되고 역-양자화되며, 인트라 예측 모듈(784)의 출력에 추가된다. 이어서 이는 비블록화 필터(787)에 의해 필터링되어 원치않는 압축 아티팩트를 감소시키며, 결국 비압축 레퍼런스 윈도우 버퍼(788) 내부에 상응하는 위치에 저장된다. 예전에 언급된 바와 같이, I-레퍼런스 윈도우 버퍼(788)에서의 전체 레퍼런스 I-프레임뿐 아니라, H.264 인코더 시스템(700)에 의해 한정된 탐색 윈도우에 상응하는 프레임의 일부만을 저장하는 것이 반드시 필요하지 않다.
도 7을 다시 참조하여, I-프레임이 현재의 프레임(705)에 의해 레퍼런스로서 사용될 때, I-레퍼런스 윈도우 버퍼(788)에서 이용가능한 데이터는 단순히 멀티플렉서(799)에 의해 ME/MC 모듈(715)에 전달된다. 하지만, P'-프레임이 현재의 프레임(705)에 의해 레퍼런스로서 사용될 때, I-레퍼런스 윈도우 버퍼(788)에서의 데이터는 레퍼런스 P'-프레임을 디코딩하는 데에 사용되고 - 이는 하기의 문단에서 도시된 바와 같이, 레퍼런스 P'-프레임의 인터-코딩된 매크로블록을 디코딩할 때 사용되도록 ME/MC 모듈(795)로 전달된다.
현재의 프레임(705)이 P'-프레임을 참조할 때, P'-프레임 인코딩된 데이터는 우선 매크로블록(791)의 유닛들에서 비트스트림 버퍼(750)로부터 획득되고; 현재 디코딩된 P'-프레임 매크로블록(791)의 코딩 모드에 따라, 각각의 매크로블록(791)은 엔트로피 디코더(792)에 의해 디코딩되고, IDCT/InvQ 모듈(793)에 의해 역-변환되고 역-양자화되며, (I-레퍼런스 윈도우 버퍼(788)로부터 레퍼런스 데이터를 얻는) ME/MC 모듈(795) 및/또는 인트라 예측 모듈(794) 중 어느 하나의 출력을 전달하는 멀티플렉서(796)의 출력에 추가된다. 이어서 매크로블록은 비블록화 필터(797)에 의해 필터링되고 결국 비압축 P'-레퍼런스 윈도우 버퍼(798) 내부에 상응하는 위치에 저장된다. P'-레퍼런스 윈도우 버퍼(798)에서의 데이터는 멀티플렉서(799)에 의해 현재의 매크로블록(710)을 인코딩하도록 이것을 사용할 ME/MC 모듈(715)에 전달된다. 따라서, 엔트로피 디코더들(782, 792), IDCT/InvQ 모듈들(783, 793), 인트라 예측 모듈들(784, 794), 비블록화 필터들(787, 797), 및 ME/MC 모듈(795)은 종합적으로 디코딩 서브시스템을 형성하도록 고려될 수 있고, 이의 구성은 인코더 시스템(700)의 상이한 구체예들 중에서 변경시킬 수 있다. 비블록화 필터링이 H.264 표준에서 선택적이기에, 몇몇 구체예들은 비블록화 필터(787) 및/또는 비블록화 필터(797)를 우회하도록 선택할 수 있다는 것이 언급될 것이다. 또한, 간결성을 위한, 디코딩 경로들 모두에서 인트라 예측 전기 회로망은 도면으로부터의 표준 인트라 예측 피드백 루프를 생략하면서, 단순화되고 인트라 예측 모듈들(794, 784)로 축소된다는 것이 언급될 것이다. 특정한 구체예들에서, 인코더 시스템(700)의 구성요소들 중 몇몇 또는 모두는 공통 집적회로 칩의 일부일 것이라는 것이 예상된다.
예시적인 H.264 인코더 시스템(700)을 참조하여, I-프레임을 참조하는 인코딩 프레임들의 공정 및 시간 다이어그램은 예시적인 H.264 인코더 시스템(300)의 것과 같고, 도 4와 도 5에서 완전히 설명되었다. P'-프레임을 참조하는 인코딩 프레임의 공정 및 시간 다이어그램은 도 8과 도 9에 도시된다.
도 8은 구체예에 따른, 레퍼런스 P'-프레임이 어떻게 점차 디코딩될 수 있는지를 개략적으로 도시한다. 이런 실시예에서, 현재의 프레임(840)은 폭이 45개의 매크로블록들이고, 탐색 윈도우는 현재 처리되는 매크로블록에 정렬된 이것의 중심에 따른 44×3 매크로블록들이도록 한정된다. 제 1 탐색 윈도우(820)는 현재의 프레임(840)의 MB0(810)을 인코딩하는 데에 요구된 P'-프레임 레퍼런스 데이터의 위치를 나타낸다. 래스터 순서로, 제 1 탐색 윈도우(820)에서 최종 매크로블록은 (레퍼런스 P'-프레임의) MB66(860)이다. 이런 매크로블록을 디코딩하는 것은, 차례로, 레퍼런스 P'-프레임에 의해 참조된 I-프레임 내부에 제 2 탐색 윈도우(850)의 지지를 요구한다. 래스터 순서로, 제 2 탐색 윈도우(850)에서 최종 매크로블록은 (레퍼런스 P'-프레임에 의해 참조된 I-프레임의) MB133이다.
도 9는 구체예에 따른, 동시 P-프레임 인코딩, 레퍼런스 P'-프레임 디코딩 및 이것의 레퍼런스 I-프레임 디코딩을 설명하는 예시적인 시간 다이어그램(900)을 제공한다. 우선, I-프레임의 매크로블록들 MB0 내지 MB66이 디코딩되고 I-레퍼런스 윈도우 버퍼로 저장된다. 이는 P'-프레임의 제 1 매크로블록(MB0(910))이 디코딩되기에 충분한 레퍼런스 데이터 지지를 제공한다. 따라서, 다음의 매크로블록 사이클을 개시할 때, P'-프레임 매크로블록들은, 래스터 순서로, 차례로, 디코딩을 시작하는 동시에, I-프레임 디코딩은 계속된다. 일단 P'-프레임의 MB0 내지 MB66이 디코딩되고 P'-레퍼런스 윈도우 버퍼로 저장된다면, 현재의 P-프레임의 제 1 매크로블록(MB0(920))을 인코딩하는 것을 시작하기에 충분한 레퍼런스 데이터가 존재한다. 이어서 현재의 P-프레임이 완전히 인코딩될 때까지 공정은 I-프레임 및 P'-프레임을 디코딩하는 것 및 현재의 P-프레임을 인코딩하는 것을 동시에 지속한다(P'-프레임 디코딩 및 I-프레임 디코딩이 이전에 종료된다). 따라서, P'-프레임 및 I-프레임의 디코딩은 P-프레임의 인코딩보다 일찍 시작되고 종료된다.
이전에 설명된 바와 같이, 효율적인 메모리 사용을 위한, 순환 버퍼 관리는 I-레퍼런스 윈도우 버퍼 및 P'-레퍼런스 윈도우 버퍼 모두를 위하여 실시될 수 있었고 더 복잡한 디코딩 시퀀스들이 레퍼런스 윈도우 버퍼 크기를 더 작게 이르게 할 수 있다.
이런 개시에 설명된 실시예들이 H.264 영상 코딩 표준에 따른 영상 인코딩에 관한 것인 반면에, 여기에서 설명되고 주장된 공정들은 SMPTE 421M 영상 코덱 표준으로서 정식으로 공지된, VC-1 표준과 같은, 유사하게 유연한 레퍼런스 프레임 방식을 채용하는 다른 영상 코딩 표준에 적용될 수 있다는 것이 기술분야에서 통상의 지식을 가진 자에 의해 인식될 것이다. 비록 본 개시에서 실시예들이 영상 인코더의 다양한 하드웨어 실시들에 지시되더라도, 여기서 설명되고 주장된 기술은 또한 순수 소프트웨어 실시 또는 영상 코덱을 구축하는 소프트웨어 요소 및 하드웨어 요소를 조합하는 실시에 적용될 수 있다는 것이 또한 인식될 수 있다.
게다가, 여기서 개시된 방법들 및 시스템들이 일반적으로 영상 프레임들 및 매크로블록들에 대하여 설명되더라도, 이러한 시스템들 및 방법들이 매크로블록들의 일부 및/또는 영상 필드들, "영상 슬라이스들(video slices)"과 같은, 다른 영상 데이터 유닛들과의 사용에 맞춰질 수 있다는 것이 인식되어야 한다. 따라서, 상기에 설명에 포함되거나 첨부된 도면들에 도시된 사안은 예시적으로 해석되어야 하고 제한된 의미로 해석되지 않아야 한다는 것이 언급되어야 한다.
도 10은 신규 영상 데이터 유닛을 인코딩하는 하나의 방법(1000)을 도시한다. 방법(1000)은 래스터가 증가하는 순서로, 인코딩된 레퍼런스 영상 데이터 유닛의 탐색 윈도우 내의 블록들을 레퍼런스 윈도우 버퍼로 디코딩하는 단계(1002)로 시작한다. 단계(1002)의 실시예는 엔트로피 디코더(382), IDCT/InvQ 모듈(383) 및 인트라 예측 모듈(384)을 이용하여 비트스트림 버퍼(350)에서 레퍼런스 I-프레임의 탐색 윈도우 내의 매크로블록들을 레퍼런스 윈도우 버퍼(388)로 디코딩하는 것이다(도 3). 단계(1002)의 다른 실시예는 엔트로피 디코더들(782, 792), IDCT/InvQ 모듈들(783, 793), 인트라 예측 모듈(784) 및 ME/MC 모듈(795)을 이용하여 비트스트림 버퍼(750)에서 레퍼런스 P'-프레임의 탐색 윈도우 내의 매크로블록들을 레퍼런스 윈도우 버퍼(798)로 디코딩하는 것이다(도 7).
방법(1000)은, 래스터 순서로, 레퍼런스 윈도우 버퍼의 디코딩된 블록에 기초하여 신규 영상 데이터의 각 블록을 인코딩하는 단계(1004)로 진행된다. 단계(1004)의 실시예는 레퍼런스 윈도우 버퍼(388)에서 디코딩된 매크로블록에 기초하여 ME/MC 모듈(315), 멀티플렉서(320), DCT/Q 모듈(335), 및 엔트로피 인코더(345)를 이용하여 매크로블록(310)을 인코딩하는 것이다(도 3). 단계(1004)의 다른 실시예는 레퍼런스 윈도우 버퍼(798)에서 디코딩된 매크로블록에 기초하여 ME/MC 모듈(715), 멀티플렉서(720), DCT/Q 모듈(735), 및 엔트로피 인코더(745)를 이용하여 매크로블록(710)을 인코딩하는 것이다(도 7).
상기에 설명된 변화, 및 다른 것은 여기서 범위를 벗어남이 없이 여기서 설명된 이미지 센서 시스템으로 이루어질 수 있다. 상기의 설명에 포함되거나 첨부된 도면들에 도시된 사안은 예시적으로 해석되어야 하고 제한된 의미로 해석되지 않아야 한다는 것이 언급되어야 한다. 하기의 청구항들은 본 발명의 방법 및 시스템의 범위의 모든 진술들뿐 아니라, 여기서 설명된 포괄적이고 특정한 특성들 모두를 포함하도록 의도되고, 이는, 언어의 사안으로서, 그 사이에서 거기에 속하도록 나타내어야 한다.

Claims (20)

  1. 신규 영상 데이터 유닛을 인코딩하는 방법에 있어서,
    래스터가 증가하는 순서로, 인코딩된 레퍼런스 영상 데이터 유닛의 탐색 윈도우 내의 블록들을 레퍼런스 윈도우 버퍼로 디코딩하는 단계; 및
    래스터 순서로, 레퍼런스 윈도우 버퍼의 디코딩된 블록에 기초하여 신규 영상 데이터 유닛의 각 블록을 인코딩하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    레퍼런스 윈도우 버퍼는 인코딩된 레퍼런스 영상 데이터 유닛보다 작은 것을 특징으로 하는 방법.
  3. 제 2 항에 있어서,
    신규 영상 데이터 유닛의 인코딩은 인코딩된 레퍼런스 영상 데이터 유닛을 디코딩한 이후에 시작되고 신규 영상 데이터 유닛의 인코딩은 인코딩된 레퍼런스 영상 데이터 유닛을 디코딩한 이후에 종료되는 것을 특징으로 하는 방법.
  4. 제 3 항에 있어서,
    신규 영상 데이터 유닛은 신규 영상 데이터 프레임이고;
    인코딩된 레퍼런스 영상 데이터 유닛은 영상 데이터의 인코딩된 레퍼런스 프레임인 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서,
    각 블록은 매크로블록인 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서,
    레퍼런스 윈도우 버퍼는 순환형(cyclic)인 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서,
    탐색 윈도우의 위치는 인코딩되는 신규 영상 데이터 유닛의 블록에 기초하는 것을 특징으로 하는 방법.
  8. 제 7 항에 있어서,
    탐색 윈도우의 중심 위치는 인코딩되는 신규 영상 데이터 유닛의 블록의 위치에 상응하는 것을 특징으로 하는 방법.
  9. 제 7 항에 있어서, 상기 방법은,
    탐색 윈도우 내의 상응하는 인코딩된 블록을 갖지 않는 레퍼런스 윈도우 버퍼로부터 디코딩된 블록들을 제거하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 제 1 항에 있어서,
    탐색 윈도우는 인코딩된 레퍼런스 영상 데이터 유닛보다 작은 것을 특징으로 하는 방법.
  11. 제 1 항에 있어서,
    상기 인코딩 단계는 H.264 영상 코딩 표준에 따라 수행되는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서,
    인코딩된 레퍼런스 영상 데이터 유닛의 탐색 윈도우 내의 블록들은 인트라-코딩된 블록들을 포함하는 것을 특징으로 하는 방법.
  13. 제 12 항에 있어서,
    인트라-코딩된 블록들이 인코딩된 레퍼런스 영상 데이터의 I-프레임에 속하는 것을 특징으로 하는 방법.
  14. 제 12 항에 있어서,
    인코딩된 레퍼런스 영상 데이터 유닛의 탐색 윈도우 내의 블록들은 인터-코딩된 블록들을 더 포함하는 것을 특징으로 하는 방법.
  15. 제 14 항에 있어서,
    상기 디코딩 단계는:
    인트라-코딩된 블록들을 복수 개의 제 1 블록들로 디코딩하는 단계; 및
    제 1 블록들을 이용하여, 레퍼런스 윈도우 버퍼 내에서 인터-코딩된 블록들을 디코딩된 블록들로 디코딩하는 단계를 포함하는 것을 특징으로 하는 방법.
  16. 제 15 항에 있어서,
    인트라-코딩된 블록들은 인코딩된 레퍼런스 영상 데이터의 I-프레임에 속하고;
    인터-코딩된 블록들은 인코딩된 레퍼런스 영상 데이터의 I-프레임을 레퍼런스하는 인코딩된 레퍼런스 영상 데이터의 P-프레임에 속하는 것을 특징으로 하는 방법.
  17. 신규 영상 데이터 유닛을 인코딩하는 시스템에 있어서,
    레퍼런스 윈도우 버퍼;
    래스터가 증가하는 순서로, 인코딩된 레퍼런스 영상 데이터 유닛의 탐색 윈도우 내의 블록들을 레퍼런스 윈도우 버퍼로 디코딩하도록 구성된 디코딩 서브시스템; 및
    래스터 순서로, 레퍼런스 윈도우 버퍼의 디코딩된 블록에 기초하여 신규 영상 데이터 유닛의 각 블록을 인코딩하도록 구성된 인코딩 서브시스템을 포함하는 것을 특징으로 하는 시스템.
  18. 제 17 항에 있어서,
    레퍼런스 윈도우 버퍼는 인코딩된 레퍼런스 영상 데이터 유닛보다 작은 것을 특징으로 하는 시스템.
  19. 제 18 항에 있어서,
    인코딩 서브시스템은 H.264 영상 코딩 표준에 따라 신규 영상 데이터 유닛의 각 블록을 인코딩하도록 구성된 것을 특징으로 하는 시스템.
  20. 제 17 항에 있어서,
    레퍼런스 윈도우 버퍼, 디코딩 서브시스템 및 인코딩 서브시스템은 공통 집적회로 칩(common integrated circuit chip)의 일부인 것을 특징으로 하는 시스템.
KR1020127009492A 2009-10-15 2010-10-15 저비용 영상 인코더 KR20120087918A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US25185709P 2009-10-15 2009-10-15
US61/251,857 2009-10-15
PCT/US2010/052936 WO2011047330A2 (en) 2009-10-15 2010-10-15 Low-cost video encoder

Publications (1)

Publication Number Publication Date
KR20120087918A true KR20120087918A (ko) 2012-08-07

Family

ID=43876911

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127009492A KR20120087918A (ko) 2009-10-15 2010-10-15 저비용 영상 인코더

Country Status (6)

Country Link
US (1) US20110090968A1 (ko)
EP (1) EP2489192A4 (ko)
KR (1) KR20120087918A (ko)
CN (1) CN102714717A (ko)
TW (1) TW201134224A (ko)
WO (1) WO2011047330A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6049017B2 (ja) * 2010-04-07 2016-12-21 リグオリ,ヴィンチェンツォLIGUORI,Vincenzo メモリ要求低減ビデオ送信システム
US9584832B2 (en) * 2011-12-16 2017-02-28 Apple Inc. High quality seamless playback for video decoder clients
CN104219521A (zh) * 2013-06-03 2014-12-17 系统电子工业股份有限公司 降低内存需求的影像压缩架构及方法
US10419512B2 (en) * 2015-07-27 2019-09-17 Samsung Display Co., Ltd. System and method of transmitting display data
CN112040232B (zh) * 2020-11-04 2021-06-22 北京金山云网络技术有限公司 实时通信的传输方法和装置、实时通信的处理方法和装置
CN113873255B (zh) * 2021-12-06 2022-02-18 苏州浪潮智能科技有限公司 一种视频数据传输方法、视频数据解码方法及相关装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448310A (en) * 1993-04-27 1995-09-05 Array Microsystems, Inc. Motion estimation coprocessor
DE19524688C1 (de) * 1995-07-06 1997-01-23 Siemens Ag Verfahren zur Dekodierung und Kodierung eines komprimierten Videodatenstroms mit reduziertem Speicherbedarf
US7813431B2 (en) * 2002-05-20 2010-10-12 Broadcom Corporation System, method, and apparatus for decoding flexibility ordered macroblocks
US6917310B2 (en) * 2003-06-25 2005-07-12 Lsi Logic Corporation Video decoder and encoder transcoder to and from re-orderable format
US8019000B2 (en) * 2005-02-24 2011-09-13 Sanyo Electric Co., Ltd. Motion vector detecting device
US7924925B2 (en) * 2006-02-24 2011-04-12 Freescale Semiconductor, Inc. Flexible macroblock ordering with reduced data traffic and power consumption
US8320450B2 (en) * 2006-03-29 2012-11-27 Vidyo, Inc. System and method for transcoding between scalable and non-scalable video codecs
JP4182442B2 (ja) * 2006-04-27 2008-11-19 ソニー株式会社 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体
US20080137741A1 (en) * 2006-12-05 2008-06-12 Hari Kalva Video transcoding

Also Published As

Publication number Publication date
TW201134224A (en) 2011-10-01
CN102714717A (zh) 2012-10-03
EP2489192A4 (en) 2014-07-23
EP2489192A2 (en) 2012-08-22
US20110090968A1 (en) 2011-04-21
WO2011047330A2 (en) 2011-04-21
WO2011047330A3 (en) 2011-10-13

Similar Documents

Publication Publication Date Title
US10911752B2 (en) Device for decoding a video bitstream
US7310371B2 (en) Method and/or apparatus for reducing the complexity of H.264 B-frame encoding using selective reconstruction
US9277228B2 (en) Adaptation parameter sets for video coding
CN107770523B (zh) 用于解码视频数据的方法及装置
EP3928511A1 (en) Gradual decoding refresh in video coding
US20180035123A1 (en) Encoding and Decoding of Inter Pictures in a Video
KR101147744B1 (ko) 비디오 트랜스 코딩 방법 및 장치와 이를 이용한 pvr
US20110135003A1 (en) Uni-modal based fast half-pel and fast quarter-pel refinement for video encoding
KR20120087918A (ko) 저비용 영상 인코더
US20130272398A1 (en) Long term picture signaling
KR100636911B1 (ko) 색도 신호의 인터리빙 기반 동영상 복호화 방법 및 그 장치
JP6234770B2 (ja) 動画像復号処理装置、動画像符号化処理装置およびその動作方法
Wong et al. A hardware-oriented intra prediction scheme for high definition AVS encoder
JP2017063347A (ja) 多視点画像符号化装置、多視点画像符号化方法、及びプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application