KR102215363B1 - 비디오 인코더에 의해 비디오 프레임을 프로세싱하기 위한 기술 - Google Patents

비디오 인코더에 의해 비디오 프레임을 프로세싱하기 위한 기술 Download PDF

Info

Publication number
KR102215363B1
KR102215363B1 KR1020167033428A KR20167033428A KR102215363B1 KR 102215363 B1 KR102215363 B1 KR 102215363B1 KR 1020167033428 A KR1020167033428 A KR 1020167033428A KR 20167033428 A KR20167033428 A KR 20167033428A KR 102215363 B1 KR102215363 B1 KR 102215363B1
Authority
KR
South Korea
Prior art keywords
macroblock
wave front
macroblocks
front group
video frame
Prior art date
Application number
KR1020167033428A
Other languages
English (en)
Other versions
KR20170002512A (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 KR20170002512A publication Critical patent/KR20170002512A/ko
Application granted granted Critical
Publication of KR102215363B1 publication Critical patent/KR102215363B1/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/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
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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
    • 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/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • H04N19/64Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
    • H04N19/645Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission by grouping of coefficients into blocks after the transform

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)

Abstract

다양한 실시예는 일반적으로, 픽셀을 포함하는 프레임을 다수의 매크로블록으로 분할하기 위한 장치, 방법 및 다른 기술에 관한 것이고, 각각의 매크로블록은 4개의 매크로블록 경계 내에 다수의 픽셀을 포함한다. 다양한 실시예는 또한, 매크로블록 경계를 따라 비디오 프레임을 분할함으로써 복수의 매크로블록을 갖는 적어도 2개의 영역을 생성하는 단계, 및 각각의 영역의 매크로블록에 기초하여 웨이브 프론트 그룹을 생성하는 단계를 포함할 수 있고, 각각의 영역의 각각의 웨이브 프론트 그룹은 병렬적으로 프로세싱할 하나 이상의 매크로블록을 포함한다.

Description

비디오 인코더에 의해 비디오 프레임을 프로세싱하기 위한 기술{TECHNIQUES FOR PROCESSING A VIDEO FRAME BY A VIDEO ENCODER}
본원에서 설명되는 실시예는 일반적으로 미처리(raw) 비디오 스트림을 프로세싱하기 위한 기술에 관한 것이다. 더 구체적으로, 기술은 미처리 비디오 스트림의 하나 이상의 비디오 프레임을 인코딩하는 것을 포함할 수 있다.
아날로그 비디오 신호에 기초한 풀-모션(full-motion) 비디오 디스플레이는 텔레비전의 형태로 오랫동안 이용가능하였다. 컴퓨터 프로세싱 능력 및 적정성(affordability)에서의 최근의 진보로, 디지털 비디오 신호에 기초한 풀-모션 비디오 디스플레이가 더 널리 이용가능해지고 있다. 디지털 비디오 시스템은, 풀-모션 비디오 시퀀스를 생성, 수정, 송신, 저장 및 재생할 때, 종래의 아날로그 비디오 시스템에 비해 상당한 개선을 제공할 수 있다.
디지털 비디오는, 연속적으로 재생 또는 렌더링되는 다수의 프레임을 포함한다. 각각의 프레임은 특정 시스템의 디스플레이 해상도에 기초하여 픽셀의 어레이로부터 형성되는 정지(still) 이미지이다. 통상적으로, 비디오에서 미처리 디지털 정보의 양은 방대하고, 많은 양의 스토리지를 차지하고, 송신되는 경우 상당한 양의 대역폭을 사용한다.
이러한 방대한 양의 디지털 비디오 정보를 저장 또는 송신할 때의 제한을 처리하기 위해, 다양한 비디오 압축 표준 또는 프로세스가 설정되어 왔다. 일부 예에서, 비디오 데이터를 획득하고, 이를, 더 적은 공간을 차지하는 포맷으로 인코딩하기 위해 비디오 인코더가 사용된다. 그 결과, 비디오 정보를 송신하고 수신하는 디바이스들 사이에서 소모되는 대역폭은 더 효율적으로 사용될 수 있거나 또는 이러한 디바이스들 사이에서 동시에 더 많은 데이터가 송신될 수 있다.
도 1a는 비디오 프레임 프로세싱 시스템의 예시적인 실시예를 예시한다.
도 1b는 컴퓨팅 시스템의 예시적인 실시예를 예시한다.
도 2a 내지 도 2e는 비디오 프레임의 예시적인 실시예를 예시한다.
도 3a 내지 도 3c는 매크로블록 의존도를 갖는 비디오 프레임의 예시적인 실시예를 예시한다.
도 3d는 웨이브 프론트(wave front) 그룹의 표의 예시적인 실시예를 예시한다.
도 4는 매크로블록의 예시적인 실시예를 예시한다.
도 5는 제1 로직 흐름도의 예시적인 실시예를 예시한다.
도 6은 제2 로직 흐름도의 예시적인 실시예를 예시한다.
도 7은 컴퓨팅 시스템의 예시적인 실시예를 예시한다.
도 8은 컴퓨팅 아키텍쳐의 예시적인 실시예를 예시한다.
다양한 실시예는 일반적으로 미처리 비디오 스트림의 하나 이상의 비디오 프레임을 인코딩하기 위한 장치, 시스템 및 방법에 관한 것이다. 비디오 프레임은 ITU-T/ISO H.264 또는 어드밴스드 비디오 코덱(AVC; advanced video codec) 및 MPEG-4 파트 10으로 공지된 국제적인 ITU-T 국제 표준화 기구(ISO; International Organization for Standardization) 비디오 압축 표준과 같은 임의의 인코딩 표준에 기초하여 인코딩될 수 있다. 비디오 프레임은, ISO/IEC 23008-2 MPEG-H 파트 2 및 ITU-T H.265로서 ISO/IEC MPEG(Moving Picture Experts Group) 및 ITU-T VCEG(Video Coding Experts Group)에 의해 공동 개발된 H.264/MPEG-4 AVC(Advanced Video Coding)의 계승인 고효율 비디오 코딩(HEVC; High Efficiency Video Coding) 비디오 압축 표준에 따라 프로세싱될 수 있다. 다양한 실시예는 이러한 표준으로 제한되지 않으며, 비디오 프레임은 임의의 다른 표준, 예를 들어, Google®에 의해 개발중인 개방형이고 무료인 비디오 압축 표준 VP8 및 VP9에 따라 프로세싱될 수 있다.
추가로, 하나 이상의 실시예는, 인코딩 표준에 기초하여 프레임을 다수의 매크로블록으로 분할하고, 그 다음, 하나 이상의 매크로블록을 각각 갖는 다수의 영역으로 분할하는 것에 관한 것일 수 있다. 각각의 매크로블록은, 픽셀의 16 x 16 행렬 또는 인코딩에 사용되는 비디오 압축 표준에 기초한 임의의 크기일 수 있다. 매크로블록은, 픽셀의 열(column) 또는 행에 의해 정의되는 4개의 매크로블록 경계 또는 측면을 가질 수 있다. 매크로블록 경계는 2개 이상의 영역을 생성하기 위해 비디오 프레임을 그에 따라 분할하는데 사용될 수 있다.
예를 들어, 비디오 프레임은 매크로블록의 매크로블록 경계 또는 엣지를 따라 수평으로 또는 대각선으로 분할될 수 있다. 다양한 실시예에서, 매크로블록은 하나 이상의 웨이브 프론트 그룹에 할당될 수 있고, 병렬적으로 또는 대략적으로 동시에 프로세싱될 수 있다. 즉, 동일한 웨이브 프론트 그룹에 할당된 매크로블록 전부는 병렬적으로 프로세싱될 수 있다. 매크로블록을 병렬적으로 프로세싱함으로써, 비디오 프레임을 프로세싱하기 위한 프로세싱 사이클의 수를 감소시키는 것을 포함하는 상당한 성능 이득이 달성될 수 있다. 하기 설명에서 명백해지는 바와 같이, 비디오 프레임이 매크로블록 경계를 따라 다수의 영역으로 분할되는 경우, 병렬적으로 프로세싱될 수 있는 매크로블록의 수는 증가하고, 프로세싱 사이클의 수는 상당히 감소된다.
다양한 실시예는 또한 이러한 동작을 수행하기 위한 장치 또는 시스템에 관한 것이다. 이러한 장치는 요구되는 목적을 위해 특수하게 구성될 수 있거나, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화 또는 재구성되는 범용 컴퓨터를 포함할 수 있다. 본원에서 제시된 절차는 특정 컴퓨터 또는 다른 장치에 고유하게 관련되지는 않는다. 본 교시에 따라 기입된 프로그램과 함께 다양한 범용 머신이 사용될 수 있거나, 요구되는 방법을 수행하기 위해 더 특수화된 장치를 구성하는 것이 편리한 것으로 입증될 수 있다. 다양한 이러한 머신에 대해 요구되는 구조는, 주어진 설명으로부터 명백할 것이다.
이제 도면을 참조하고, 도면에서 유사한 참조 부호는 전반에 걸쳐 유사한 엘리먼트를 지칭하기 위해 사용된다. 하기 설명에서, 설명의 목적으로, 본 발명의 철저한 이해를 제공하기 위해 다수의 특정 세부사항이 기술된다. 그러나, 이러한 특정 세부사항 없이도 신규한 실시예가 실시될 수 있음은 명백할 수 있다. 다른 예들에서, 본 발명의 설명을 용이하게 하기 위해, 널리 알려진 구조 및 디바이스는 블록도 형태로 도시된다. 청구된 청구물과 일치하는 모든 수정, 균등물 및 대안을 커버하는 것으로 의도된다.
도 1a는 정보 및 데이터를 프로세싱하기 위한 비디오 프레임 프로세싱 시스템(100)의 실시예를 예시한다. 특히, 비디오 프레임 프로세싱 시스템(100)은 비디오 프레임을 인코딩 및 디코딩하기 위해 사용될 수 있다. 그러나, 기술 및 툴(tool)은 다양한 범용 또는 특수 목적 컴퓨팅 환경에서 구현될 수 있기 때문에, 비디오 프레임 프로세싱 시스템(100)은 사용 또는 기능성의 범주에 대한 어떠한 제한을 제안하는 것으로 의도되지 않는다. 따라서, 비디오 프레임 프로세싱 시스템(100)은 비디오 소스(102), 비디오 프레임 인코더(104), 송신 매체(106), 비디오 프레임 디코더(108) 및 디스플레이(110)를 포함할 수 있다. 일부 실시예에서, 비디오 프레임 프로세싱 시스템(100)은 메모리(120)를 포함할 수 있다. 일부 실시예에서, 비디오 프레임 프로세싱 시스템(100)은 HVEC, H.265, VP8 및 VP9와 같이 앞서 논의된 바와 같은 하나 이상의 표준에 따른 비디오 인코더/디코더 프로세싱 시스템을 포함할 수 있다.
예를 들어, 아날로그 포맷인 원래의 풀(full) 정보 컨텐츠 비디오 신호가 비디오 프레임 소스(102)에 제공될 수 있다. 비디오 프레임 소스(102)는, 비디오 신호를, 예를 들어, YCbCr, YUV, YIQ 및 YCC 색 공간군(family)와 같은 휘도(루마) 및 채도(크로마) 포맷으로 디지털화하는 것과 같은 다양한 기능을 수행할 수 있다. YCbCr 색 공간의 경우, Y는 루마 성분이고 Cb 및 Cr은 크로마 성분이고; YUV 색 공간의 경우 Y는 루마 성분이고 U 및 V는 크로마 성분이고, YIQ 색 공간의 경우 Y는 루마 성분이고 I 및 Q는 각각 동위상 및 직교위상 크로마 성분이고; YCC 색 공간의 경우 Y는 루마 성분이고 C(Cb) 및 C(Cr)는 크로마 성분임을 당업자는 인식할 것이다.
비디오 프레임 소스(102)는 포맷된 디지털화된 비디오 신호를 비디오 인코더(104)에 제공할 수 있다. 특정한 비디오 포맷과 무관하게, 비디오 프레임 소스(102)는, 원래의 아날로그 비디오 신호의 풀-정보 디지털 비디오 신호 버전을 비디오 인코더(104)에 공급하기 위해 필요한 프로세싱을 수행할 수 있다. 다양한 실시예에서, 비디오 프레임 소스(102)는 송신 매체 또는 저장된 파일일 수 있다. 비디오 프레임 소스(102)는 디지털 비디오 신호 시퀀스를 영상 또는 비디오 프레임의 형태로 비디오 인코더(104)에 제공할 수 있다.
비디오 인코더(104)의 아키텍쳐 및 핵심 구성 요소(core building block)는 모션-보상 변환 코딩에 기초할 수 있고, 다양한 모션 벡터 및 모드 계산을 수행할 수 있다. 예를 들어, 각각의 비디오 프레임은, 이를 하나 이상의 영역으로 파티셔닝함으로써 압축될 수 있고, 여기서 각각의 영역은 하나 이상의 매크로블록을 포함할 수 있다. 일부 실시예에서, 매크로블록은, 대응하는 크로마 샘플을 갖는 16 x 16 루마 픽셀(또는 샘플)의 블록으로 정의될 수 있다. 각각의 매크로블록은 또한 모션-보상 예측을 위해 하나 이상의 서브-매크로블록 파티션으로 분할될 수 있다. 동일한 또는 다른 실시예에서, 매크로블록은 4x4 매크로블록, 8x8 매크로블록, 32x32 매크로블록 등과 같이 상이한 크기일 수 있고, 인코딩에 사용된 표준에 기초할 수 있다.
비디오 인코더(104)는 비디오 프레임 소스(102)로부터 하나 이상의 비디오 프레임의 형태로 디지털 비디오 신호 시퀀스를 수신할 수 있다. 비디오 인코더(104)는 비디오 프레임을 압축하고, 압축된 비디오 비트를 비트스트림의 형태로, 송신 매체(106) 및/또는 메모리(120)에 전달한다. 일부 실시예에서, 압축은 앞서 특정된 표준 중 하나에 따라 수행될 수 있고, 출력 비트스트림은 압축에 사용된 표준에 기초한 비트스트림일 수 있다.
비디오 인코더(104)는 인코딩을 위한 프레임을 수신한다. 아래에서 더 상세히 논의될 바와 같이, 프레임은, 원래의 이미지의 16 x 16 픽셀 또는 임의의 다른 크기의 픽셀 행렬의 블록에 대응하는 매크로블록 단위로 프로세싱된다. 각각의 매크로블록은 하나 이상의 매크로블록 의존도에 기초하여 웨이브 프론트 그룹에 할당되거나 더해질 수 있다. 웨이브 프론트 그룹의 각각의 매크로블록은 병렬적으로 인코딩 또는 프로세싱될 수 있다. 예를 들어, 모든 매크로블록이 인코딩될 때까지, 모션 벡터 및 모드를 발견하기 위해 제1 웨이브 프론트 그룹에 속하는 매크로블록 모두가 병렬적으로 프로세싱될 수 있고, 그 다음, 제2 웨이브 프론트 그룹에 속하는 매크로블록 모두가 병렬적으로 프로세싱될 수 있는 식이다.
일부 실시예에서, 매크로블록의 인코딩은 매크로블록 의존도를 생성하는 이웃 매크로블록의 인코딩에 의존할 수 있다. 예를 들어, 일부 실시예에서, 매크로블록은 좌측, 최상부 및 최상부-우측의 매크로블록에 의존할 수 있다. 따라서, 의존적 매크로블록이 인코딩되기 전에, 좌측, 최상부 및 최상부-우측의 매크로블록이 프로세싱될 수 있다. 그러나, 다양한 실시예는 이러한 방식으로 제한되지 않으며, 도 3a 내지 도 3c에 대해 아래에서 더 상세히 설명될 바와 같이, 예측된 매크로블록이 사용될 수 있다.
일부 실시예에서, 예측된 매크로블록은 재구성된 프레임에 기초하여 형성될 수 있다. 예를 들어, 예측된 매크로블록은, 이전에 인코딩, 디코딩 및 재구성된 현재의 프레임의 샘플로부터 형성될 수 있다. 다른 예에서, 예측된 매크로블록은 하나의 또는 다수의 기준 프레임으로부터 모션-보상 예측에 의해 형성될 수 있다. 예측된 매크로블록은, 잔여 또는 차이 매크로블록을 생성하기 위해 현재의 매크로블록으로부터 감산된다. 블록 변환을 사용하면, 잔여 또는 차이 매크로블록이 변환되고 양자화되어, 매크로블록을 디코딩하고 보상된 비트스트림을 형성하기 위해 요구되는 다른 정보에 추가로 인코딩된 계수의 세트를 제공한다. 다른 정보는, 무엇보다도, 예를 들어, 매크로블록 예측 모드, 양자화기 단계 크기, 매크로블록이 어떻게 모션-보상되었는지를 설명하는 모션 벡터 정보를 포함할 수 있다. 보상된 비트스트림은 송신을 위해 저장/송신 매체(106)에 전달될 수 있다.
송신 매체(106)는, 인코딩된 비디오 신호가 궁극적으로 비디오 디코더(108)에 공급될 수 있게 하는 매체를 제공할 수 있다. 예를 들어, 송신 매체(106)는 하나 이상의 유선 또는 무선 접속을 포함하는 디지털 통신 시스템일 수 있다. 대안적으로 또는 그와 동시에, 보상된 비트스트림이 메모리(120)에 전송될 수 있고, 메모리(120)는, 데이터를 저장할 수 있는 임의의 머신 판독가능 또는 컴퓨터 판독가능 매체를 사용하여 구현될 수 있고 휘발성 및 비휘발성 메모리 둘 모두를 포함한다. 일부 실시예에서, 머신 판독가능 또는 컴퓨터 판독가능 매체는 비일시적 매체를 포함할 수 있다. 실시예는 이러한 상황으로 제한되지 않는다. 일부 실시예에서, 메모리(120)는, 예를 들어, 비디오 프레임 정보의 일시적 저장을 위해 제공될 수 있다. 또한, 송신 매체(106) 및/또는 메모리(120)는 데이터를 버퍼에 저장할 수 있다.
비디오 디코더(108)는 송신 매체(106) 및/또는 메모리(120)로부터 압축된 비디오 비트를 포함하는 비트스트림의 형태로 인코딩된/압축된 디지털 비디오 신호를 수신하고, 이를 디코딩하여, 디스플레이 디바이스(110)에 공급될 수 있는 디코딩된 비디오 신호를 생성한다. 일부 실시예에서, 인코딩된/압축된 비디오 신호는, 앞서 논의된 바와 같이, H.264, HEVC, H.265, V8, V9 등과 같은 표준 규격 중 하나에 기초한 형태일 수 있다. 일반적으로, 비디오 디코더(108)는 개념적으로 비디오 인코더(104)와 반대로 작동하고, 다양한 다른 프로세싱 엘리먼트 중 엔트로피 디코더를 주로 포함할 수 있다. 비디오 인코더(104)가 무손실 인코딩 방법을 이용한다면, 비디오 디코더(108)에 의해 생성되는 비디오 신호는 비디오 인코더(104)에 공급된 신호와 동일할 수 있다. 비디오 인코더(104)가, 예를 들어, MPEG-형 인코딩 방법과 같은 손실있는 인코딩 방법을 이용한다면, 비디오 디코더(108)에 의해 생성되는 비디오 신호는 비디오 인코더(104)에 공급된 신호와는 다소 상이할 수 있다.
다양한 실시예에서, 디스플레이 디바이스(110)는 비디오 디코더(108)로부터 수신된 정보를 디스플레이하기 위한 임의의 타입의 디스플레이 디바이스일 수 있다. 디스플레이 디바이스(110)는 예를 들어, 액정 디스플레이(LCD), 박막 트랜지스터-LCD(TFT-LCD), 유기 발광 다이오드(OLED), 플렉서블 디스플레이, 3차원(3D) 디스플레이 및 프로젝터 중 적어도 하나를 포함할 수 있다. 비디오 프레임 및 비디오 정보를 디스플레이하는 것에 추가로, 디스플레이 디바이스(110)는 비디오 프레임 프로세싱 시스템(100)의 기능성을 제어하는 것과 연관된 사용자 인터페이스(UI) 또는 그래픽 사용자 인터페이스(GUI)를 디스플레이할 수 있다. 일부 실시예에서, 비디오 프레임 프로세싱 시스템(100)은 둘 이상의 디스플레이 유닛을 포함할 수 있다. 예를 들어, 일 실시예에서, 비디오 프레임 프로세싱 시스템(100)은 2개의 LCD 디스플레이를 포함할 수 있다.
도 1b는 하나 이상의 비디오 프레임을 포함하는 정보를 프로세싱하기 위한 컴퓨팅 시스템(150)의 예시적인 실시예를 예시한다. 컴퓨팅 시스템(150)은 비디오 프레임 프로세싱 시스템(100)에 대한 정보를 프로세싱하기 위한 그리고 비디오 프레임 프로세싱 시스템(100)과 함께 사용되는 시스템을 표현할 수 있다. 예를 들어, 프로세싱 컴포넌트(152)는 비디오 프레임 프로세싱 시스템(100)에 대한 정보 및 데이터를 프로세싱할 수 있고, 메모리(154)는 메모리(120)와 동일하거나 유사할 수 있다. 추가로, 비디오 인코더 제어 모듈(160)은 비디오 인코더(104)에 대한 하나 이상의 프레임을 인코딩하는 다양한 양상을 제어하기 위해 사용될 수 있다. 컴퓨팅 시스템(150)은 프로세싱 컴포넌트(152), 메모리(154), 인터페이스(156) 및 스토리지(158)를 포함할 수 있다. 또한, 컴퓨팅 시스템(150)은, 매크로블록 모듈(162), 영역 모듈(164) 및 웨이브 프론트 모듈(166)을 갖는 비디오 인코더 제어 모듈(160)을 포함할 수 있다. 컴퓨팅 시스템(150)은 제한된 수의 컴포넌트 및 모듈을 갖는 것으로 예시되지만, 다양한 실시예는 이러한 방식으로 제한되지 않으며, 컴퓨팅 시스템(150)은 정보 및 데이터를 프로세싱하기 위한 임의의 수의 컴포넌트 및 모듈을 가질 수 있다. 예를 들어, 컴퓨팅 시스템(150)은 비디오 인코더 제어 모듈에 대해 아래에서 논의되는 바와 유사한 방식으로 비디오 프레임을 디코딩하기 위한 비디오 디코더 모듈을 포함할 수 있다.
프로세싱 컴포넌트(152)는, 마이크로프로세서, 프로세서, 중앙 프로세싱 유닛, 디지털 신호 프로세싱 유닛, 듀얼 코어 프로세서, 멀티 코어 프로세서, 그래픽 프로세싱 유닛(GPU), 모바일 디바이스 프로세서, 데스크탑 프로세서, 싱글 코어 프로세서, 시스템-온-칩(SoC; system-on-chip) 디바이스, CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서 또는 임의의 다른 타입의 프로세서, 프로세싱 회로 또는 싱글 칩 또는 집적 회로 상의 프로세싱 회로와 같은, 그러나 이에 제한되는 것은 아닌 임의의 타입의 계산 엘리먼트 중 하나 이상일 수 있다. 프로세싱 컴포넌트(152)는, 하나 이상의 버스, 제어 라인 및 데이터 라인과 같은 상호접속부를 통해 컴퓨팅 시스템의 다른 엘리먼트에 접속되고 그와 통신할 수 있다.
일부 실시예에서, 프로세싱 컴포넌트(152)는 그래픽 프로세싱 유닛(GPU)일 수 있다. 그러나, 동일한 또는 다른 실시예에서, 컴퓨터 시스템(150)은 독립형의 및 별개의 GPU(미도시)를 포함할 수 있다. GPU는 그래픽-관련 동작을 수행하도록 최적화된 임의의 프로세싱 유닛, 로직 또는 회로 뿐만 아니라 비디오 인코더 및 비디오 디코더 엔진 및 프레임 상관 엔진을 포함할 수 있다. GPU는, 비디오 게임, 그래픽, 컴퓨터-보조 설계(CAD), 시뮬레이션 및 가상화 툴, 이미징(imaging) 등과 같은 다양한 애플리케이션에 대해 2-차원(2-D) 및/또는 3-차원(3-D) 이미지를 렌더링하기 위해 사용될 수 있다. 다양한 실시예는 이러한 방식으로 제한되지 않으며; GPU는 영상, 비디오, 프로그램, 애니메이션, 3D, 2D 등과 같은 임의의 타입의 데이터를 프로세싱할 수 있다.
일부 실시예에서, 컴퓨팅 시스템(150)은 프로세싱 컴포넌트(152)에 커플링되는 메모리(154)를 포함할 수 있다. 메모리(154)는, 주어진 구현에 대해 원하는 대로, 하나 이상의 상호접속부를 통해, 또는 프로세싱 컴포넌트(152)와 메모리(154) 사이의 전용 통신 버스에 의해 프로세싱 컴포넌트(152)에 커플링될 수 있다. 메모리(154)는, 데이터를 저장할 수 있는 임의의 머신 판독가능 또는 컴퓨터 판독가능 매체를 사용하여 구현될 수 있고 휘발성 및 비휘발성 메모리 둘 모두를 포함한다. 일부 실시예에서, 머신 판독가능 또는 컴퓨터 판독가능 매체는 비일시적 매체를 포함할 수 있다. 실시예는 이러한 상황으로 제한되지 않는다.
메모리(154)는 순간적으로, 일시적으로 또는 영구적으로 데이터를 저장할 수 있다. 메모리(154)는 컴퓨팅 시스템(150)에 대한 명령어 및 데이터를 저장한다. 메모리(154)는 또한, 프로세싱 컴포넌트(152)가 명령어를 실행하고 있는 동안, 일시적 변수 또는 다른 중간적 정보, 예를 들어, 프레임 정보, 비트스트림 정보, 인코딩된 정보 등을 저장할 수 있다. 메모리(154)는 앞서 논의된 데이터를 저장하는 것으로 제한되지 않으며; 메모리(154)는 임의의 타입의 데이터를 저장할 수 있다.
컴퓨팅 시스템(150)은 일부 실시예에서 하나 이상의 인터페이스(156)를 포함할 수 있다. 인터페이스(156)의 예는 범용 직렬 버스(USB) 포트/어댑터, IEEE 1394 파이어와이어(Firewire) 포트/어댑터 등을 포함할 수 있다. 실시예는 이러한 상황으로 제한되지 않는다.
다양한 실시예에서, 인터페이스(156) 중 하나 이상은 유선 또는 무선 접속, 예를 들어, 트랜시버일 수 있다. 더 구체적으로, 하나 이상의 인터페이스(156)는 다양한 적절한 무선 통신 기술을 사용하여 신호 및 정보를 송신 및 수신할 수 있는 하나 이상의 라디오를 포함할 수 있다. 이러한 기술은 하나 이상의 무선 네트워크를 통한 통신을 수반할 수 있다. 예시적인 무선 네트워크는 무선 로컬 영역 네트워크(WLAN), 무선 개인 영역 네트워크(WPAN), 무선 대도시 영역 네트워크(WMAN), 셀룰러 네트워크 및 위성 네트워크를 포함한다(그러나, 이에 제한되는 것은 아니다). 이러한 네트워크를 통한 통신에서, 인터페이스(156)는 임의의 버전인 하나 이상의 적용가능한 표준에 따라 동작할 수 있다. 실시예는 이러한 상황으로 제한되지 않는다.
다양한 실시예에서, 컴퓨팅 시스템(150) 은 비디오 인코더(104)에 의해 정보를 프로세싱하는 다양한 양상을 제어하기 위한 비디오 인코더 제어 모듈(160)을 포함할 수 있다. 더 구체적으로, 비디오 인코더 제어 모듈(160)은, 비디오 스트림의 하나 이상의 프레임을 매크로블록으로 분할하고, 프레임을 매크로블록 경계를 따라 분할하고, 매크로블록을, 병렬적으로 프로세싱 및 인코딩하기 위해 웨이브 프론트 그룹으로 그룹화할 수 있다.
비디오 인코더 제어 모듈(160)은 프레임을 하나 이상의 매크로블록으로 분할하기 위한 매크로블록 모듈(162)을 포함할 수 있다. 각각의 프레임은 프레임의 크기 및 해상도에 기초하여 임의의 수의 픽셀을 포함할 수 있다. 예를 들어, 프레임은 1280x720 픽셀의 크기를 가질 수 있고, 각각의 매크로블록은 16x16 픽셀 행렬의 크기일 수 있다. 이 예에서, 프레임은 80 매크로블록 폭 및 45 매크로블록 높이일 수 있다.
각각의 매크로블록은, 도 4에서 더 상세히 논의되는 바와 같이, 매크로블록의 외측 픽셀에 의해 정의되는 매크로블록 경계를 가질 수 있다. 더 구체적으로, 매크로블록은 좌측 매크로블록 경계 또는 엣지, 최상부 매크로블록 경계 또는 엣지, 우측 매크로블록 경계 또는 엣지 및 바닥 매크로블록 경계 또는 엣지를 가질 수 있다. 일부 실시예에서, 프레임은 영역을 생성하도록 하나 이상의 매크로블록 경계를 따라 추가로 분할될 수 있다.
더 구체적으로, 비디오 인코더 제어 모듈(160)은 하나 이상의 영역을 생성하기 위해 프레임을 매크로블록 경계를 따라 분할하기 위한 영역 모듈(164)을 포함할 수 있다. 매크로블록은 웨이브 프론트 모듈(166)에 의해 하나 이상의 웨이브 프론트 그룹에 할당될 수 있고, 웨이브 프론트 그룹의 각각의 매크로블록은 병렬적으로 프로세싱될 수 있다. 병렬적인 프로세싱 이점은, 프레임이 둘 이상의 영역으로 분리되는 경우 실현될 수 있다. 예를 들어, 프레임을 영역으로 분할함으로써, 웨이브 프론트 그룹의 수는 감소될 수 있고, 더 많은 매크로블록이 병렬적으로 프로세싱될 수 있다.
일부 실시예에서, 영역 모듈(164)은 프레임을 둘 이상의 영역으로 분할하기 위해 프레임을 매크로블록 경계를 따라 수평적으로 분할할 수 있다. 도 2b에 대해 아래에서 논의될 바와 같이, 프레임은 2개의 영역을 생성하도록 절반으로 분할될 수 있다. 그러나, 다양한 실시예는 이러한 방식으로 제한되지 않으며, 프레임은, 매크로블록을 갖는 임의의 수의 영역을 생성하도록 수평적으로 분할될 수 있다.
영역 모듈(164)은 또한 도 2d에 예시된 바와 같이, 둘 이상의 영역을 생성하기 위해 프레임을 매크로블록 경계를 따라 대각선으로 분할할 수 있다. 일부 실시예에서, 그에 따라 분할되는 매크로블록 경계는, 프레임이 영역으로 분리되기 전에 결정되는 웨이브 프론트 경계일 수 있다. 더 구체적으로, 프레임은, 최적의 매크로블록 병렬적 프로세싱을 실현하기 위해 이전의 웨이브 프론트 경계를 따라 분할될 수 있다. 각각의 웨이브 프론트 그룹은 하나 이상의 매크로블록을 그룹에 할당함으로써 생성될 수 있다. 일부 실시예에서, 웨이브 프론트 그룹의 할당은, 매크로블록 경계 및/또는 웨이브 프론트 경계 이후의 시작 값으로부터 시작할 수 있다. 예를 들어, 도 2d에 예시된 바와 같이, 웨이브 프론트 그룹의 할당은, 웨이브 프론트 경계 이후 각각의 행의 0에서 재시작한다. 다양한 실시예는 이러한 방식으로 제한되지 않을 수 있고, 웨이브 프론트 그룹의 할당은 병렬적 프로세싱을 최적화하기 위한 방식으로 발생할 수 있다.
일부 실시예에서, 영역 모듈(164)은, 각각의 영역에 동일한 수의 매크로블록이 있도록 프레임을 분할할 수 있다. 그러나, 일부 예에서, 프레임은, 프레임의 크기 및/또는 프레임 내의 매크로블록의 수로 인해 균등하게 분할되지 않을 수 있다. 이러한 예에서, 각각의 영역은 동일한 수의 매크로블록을 갖지 않을 수 있다. 예를 들어, 하나의 영역은, 프로세싱될 여분의 매크로블록을 그 안에 가질 수 있다. 다양한 실시예는 이러한 방식으로 제한되지 않는다.
비디오 인코더 제어 모듈(160)은 또한 하나 이상의 웨이브 프론트 또는 웨이브 프론트 그룹을 생성하기 위한 웨이브 프론트 모듈(166)을 포함할 수 있다. 각각의 웨이브 프론트 그룹은 병렬적으로 프로세싱하기 위한 하나 이상의 매크로블록을 포함할 수 있다. 즉, 동일한 웨이브 프론트 그룹의 각각의 매크로블록은 동시에 또는 병렬적으로 프로세싱될 수 있다.
다양한 실시예에서, 웨이브 프론트 모듈(166)은 매크로블록 의존도에 기초하여 웨이브 프론트 그룹을 할당 또는 생성할 수 있다. 일부 예에서, 매크로블록은 프로세싱될 수 있기 전에, 자신의 이웃 매크로블록 중 하나 이상이 프로세싱되도록 요구할 수 있다. 예를 들어, 매크로블록은 프로세싱될 수 있기 전에, 자신의 좌측, 최상부 및 최상부-우측의 매크로블록이 프로세싱되도록 요구할 수 있다. 다른 예에서, 매크로블록은 프로세싱될 수 있기 전에, 자신의 좌측 및 최상부의 매크로블록이 프로세싱되도록 요구할 수 있다. 다양한 실시예는 이러한 방식으로 제한되지 않으며, 일부 프레임은 어떠한 의존도도 갖지 않는 또는 3개보다 많은 의존도를 갖는 매크로블록을 가질 수 있다. 또한, 매크로블록은, 이러한 매크로블록 의존도를 보상하기 위해 스태거링된(staggered) 방식으로 웨이브 프론트 그룹에 할당될 수 있다. 통상적으로, 최악의 경우의 매크로블록 의존도는 프레임 전반에 걸쳐 일정하고, 이는, 서로 의존하지 않는 다수의 MB가 존재할 수 있음을 의미한다. 웨이브 프론트 그룹은 매크로블록을 식별함으로써 형성된다.
도 2a는, 매크로블록 열(202) 및 매크로블록 행(204)에서 다수의 매크로블록으로 분할되는 프레임(205)의 예시적인 실시예를 예시한다. 도 2a는 오직 예시적인 목적으로 제한된 수의 매크로블록을 예시한다. 그러나, 다양한 실시예는 이러한 방식으로 제한되지 않는다.
도 2a에 예시된 각각의 매크로블록은 웨이브 프론트 그룹에 할당될 수 있다. 웨이브 프론트 그룹은 매크로블록 각각의 번호에 의해 예시된다. 예를 들어, 최상부 좌측 매크로블록은 식별자(206-1)를 갖는 웨이브 프론트 그룹 0에 있고, 웨이브 프론트 그룹 1의 매크로블록은 식별자(206-2)를 갖고, 웨이브 프론트 그룹 2의 매크로블록은 식별자(206-3)를 갖고, 웨이브 프론트 그룹 3의 매크로블록은 식별자(206-4)를 갖는다. 동일한 번호를 갖는 각각의 매크로블록은 동일한 웨이브 프론트 그룹에 있고, 병렬적으로 프로세싱된다.
이전에 논의된 바와 같이, 매크로블록은 웨이브 프론트 그룹에 할당될 수 있다.
도 2a에 예시된 바와 같이, 프레임(205)은 웨이브 프론트 그룹(0-19)을 갖고, 인코딩될 프레임(205)에 대해 총 수 20개의 웨이브 프론트가 프로세싱될 수 있다. 그러나, 프레임을 다수의 영역으로 분할하는 것은, 인코딩될 프레임에 대해 프로세싱되도록 요구되는 웨이브 프론트 그룹 및 웨이브 프론트 그룹의 수를 감소시킬 수 있다.
도 2b/2c는, 분할 라인(208)에 의해 도시된 매크로블록 경계를 따라 수평적으로 프레임(205)을 영역으로 분할하는 예시적인 실시예를 예시한다. 각각의 영역의 매크로블록은, 이전에 논의된 바와 같이 웨이브 프론트 그룹에 할당될 수 있다. 그러나, 이러한 예시적인 실시예에서, 웨이브 프론트 그룹 할당은 프레임(207)에 예시된 바와 같이 반복될 수 있다. 예를 들어, 각각의 영역의 최상부 좌측 매크로블록 둘 모두는 0의 동일한 웨이브 프론트 그룹에 할당된다.
도 2c에 예시된 바와 같이, 웨이브 프론트 그룹 할당은 반복될 수 있는데, 이는, 매크로블록의 하나 이상의 행이, 동일한 웨이브 프론트 그룹 할당을 갖는 행 중에 있기 때문이다. 예를 들어, 이러한 예시적인 실시예에서, 매크로블록 중 2개의 행은 동일한 웨이브 프론트 그룹 할당을 갖는 행 중에 있다. 이러한 방식으로, 프레임(207)을 영역으로 분할하고 매크로블록을 웨이브 프론트 그룹에 할당함으로써, 프로세싱될 웨이브 프론트의 수는 추가로 감소될 수 있다. 이러한 예시적인 실시예에서, 프로세싱될 웨이브 프론트의 수는 20개의 웨이브 프론트 그룹에서 14개의 웨이브 프론트 그룹으로 감소된다. 아마도 웨이브 프론트 그룹을 반복시키는 더 타당한 이유는, 라인(208)을 따른 모든 의존도가 의도적으로 제거되기 때문이다. 이것은, 바닥 영역이 최상부 영역처럼 보이는 것을 의미한다. 이것은, 바닥 영역의 최상부 좌측 매크로블록이 최상부 영역의 최상부 좌측 매크로블록과 함께 프로세싱될 수 있는 것 등을 의미한다.
특히, 동일한 웨이브 프론트 그룹에 더 많은 매크로블록이 할당된다. 예를 들어, 2개의 매크로블록이 식별자(206-1)를 갖는 웨이브 프론트 그룹 0에 할당되고, 2개의 매크로블록이 식별자(206-2)를 갖는 웨이브 프론트 그룹 1에 할당되고, 4개의 매크로블록이 식별자(206-3)를 갖는 웨이브 프론트 그룹 2에 할당되고, 4개의 매크로블록이 식별자(206-4)를 갖는 웨이브 프론트 그룹 3에 할당되는 식이다. 따라서, 병렬적으로 프로세싱될 수 있는 매크로블록의 수는, 프레임(207)이 2개의 영역으로 분할되는 경우 증가한다. 더 많은 매크로블록을 병렬적으로 프로세싱함으로써, GPU 프로세싱 사이클은 감소될 수 있고, 배터리 전력과 함께 전력이 절감될 수 있다.
도 2d/2e는, 웨이브 프론트 경계(212)를 따른 매크로블록 경계를 따라 대각선으로 2개의 영역으로 분리된 프레임의 예시적인 실시예를 예시한다. 웨이브 프론트 경계(212)는, 도 2d의 비디오 프레임(205)에 예시된 바와 같이, 비디오 프레임이 영역으로 분할되기 전에, 동일한 웨이브 프론트 그룹에 속하는 매크로블록에서 프레임을 분할하는 대각선일 수 있다. 다양한 실시예에서, 비디오 프레임은, 비디오 프레임의 바닥 좌측 코너로부터 비디오 프레임의 상부 우측 코너까지 대각선으로 분할될 수 있다. 예를 들어, 도 2d는 비디오 프레임(209)의 바닥 좌측 코너로부터 상부 우측 코너까지 웨이브 프론트 그룹 9에 속하는 매크로블록을 따른 웨이브 프론트 경계(212)를 예시한다. 다양한 실시예는 이러한 방식으로 제한되지 않으며, 비디오 프레임은 임의의 웨이브 프론트 경계를 따라 대각선으로 분할될 수 있다.
추가적인 이점은, 도 2d 및 도 2e의 비디오 프레임(209)에 의해 예시된 바와 같이, 웨이브 프론트 경계를 따른 매크로블록 경계를 따라 대각선으로 비디오 프레임을 영역들로 분할함으로써 실현될 수 있다. 각각의 웨이브 프론트 그룹은, 비디오 프레임이 수평적으로 분할되거나 결코 분할되지 않은 경우보다 하나 이상의 매크로블록을 포함할 수 있다. 도 2e는 10개의 웨이브 프론트 그룹 0-9를 갖는 비디오 프레임(209)을 예시한다. 이러한 예시적인 실시예에서, 추가적인 매크로블록은 병렬적으로 프로세싱될 수 있고, 추가적인 프로세싱 사이클이 감소될 수 있다. 예를 들어, 6개의 매크로블록이 식별자(206-1)를 갖는 웨이브 프론트 그룹 0에 할당되고, 6개의 매크로블록이 식별자(206-2)를 갖는 웨이브 프론트 그룹 1에 할당되고, 6개의 매크로블록이 식별자(206-3)를 갖는 웨이브 프론트 그룹 2에 할당되고, 6개의 매크로블록이 식별자(206-4)를 갖는 웨이브 프론트 그룹 3에 할당된다.
그러나, 웨이브 프론트 경계를 따라 대각선으로 프레임을 분할하는 것은, 웨이브 프론트 경계를 따른 매크로블록 중 하나 이상이 이웃 매크로블록의 예측에 기초하여 프로세싱되도록 요구할 수 있다. 일부 실시예에서, 예측된 매크로블록은 모션 벡터 및 모드에 대한 디폴트 값을 사용하여 형성될 수 있다. 일부 실시예에서, 이웃 매크로블록에 대한 예측은, 모션 벡터 및 모드에 대한 값이 결정되는 비디오 전처리 단계 동안 형성될 수 있다. 그러나, 다양한 실시예는 이러한 방식으로 제한되지 않을 수 있고, 매크로블록에 대한 예측은 당업자에게 공지된 다른 수단에 의해 행해질 수 있다.
일부 실시예에서, 프레임은, 영역 각각에 동일한 수의 매크로블록이 있도록 영역들로 분할될 수 있다. 예를 들어, 도 2b 및 도 2c에 예시된 프레임(207)은, 각각의 영역에 30개의 매크로블록이 있도록 수평적으로 절반으로 분할될 수 있다. 유사하게, 도 2d 및 도 2e에 예시된 비디오 프레임(209)은 대각선으로 분할될 수 있고, 영역 각각은 또한 30개의 매크로블록을 가질 수 있다. 일부 실시예에서, 프레임은 균등하게 분할되지 않을 수 있고, 각각의 영역에는 동일한 수의 매크로블록이 있지 않다. 영역 중 하나 이상은 하나 이상의 추가적인 매크로블록을 포함할 수 있다.
도 3a는 매크로블록 및 매크로블록 의존도(302-1)를 갖는 예시적인 실시예의 비디오 프레임(205)을 예시한다. 이러한 예시적인 실시예에서, 비디오 프레임(205)은 영역들로 분할되지 않고, 도 2a에 예시된 비디오 프레임(205)과 동일하거나 유사할 수 있다. 도 3a는, 화살표로 예시된 바와 같이, 좌측, 최상부 및 최상부-우측의 이웃 매크로블록에 대한 매크로블록 의존도(302-1)를 갖는, 열(202-1) 및 행(204-2)에 위치된 매크로블록을 예시한다. 따라서, 이러한 위치의 매크로블록이 프로세싱되기 위해서는, 그 매크로블록이 의존하는 매크로블록들이 프로세싱되어야 한다.
이러한 예시적인 실시예에서, 매크로블록은, 그 의존적 매크로블록이 프로세싱되기 전에 이웃 매크로블록이 프로세싱되도록 웨이브 프론트 그룹에 할당된다. 예를 들어, 도 3a에 예시된 바와 같이, 매크로블록 의존도를 갖는 매크로블록은 웨이브 프론트 그룹 3에 있는 한편, 이에 대한 이웃 매크로블록은 웨이브 프론트 그룹 1 및 2에 있다. 웨이브 프론트 그룹 1 및 2의 매크로블록은, 웨이브 프론트 그룹 3의 매크로블록의 인코딩 전에 프로세싱될 수 있다.
앞서 도 2a에 대해 이전에 논의된 바와 같이, 비디오 프레임이 영역들로 분할되지 않는 경우, 프레임을 프로세싱하기 위해 추가적인 웨이브 프론트 그룹이 요구될 수 있다. 비디오 프레임을 수평적으로, 대각선으로 또는 일부 다른 수단으로 영역으로 분할함으로써, 웨이브 프론트의 수는 감소될 수 있다. 그러나, 비디오 프레임을 영역들로 분할하는 것은, 비디오 모션 및 모드 계산에 대해 디폴트 값을 사용하여 의존적 매크로블록 중 일부가 프로세싱되도록 요구할 수 있다.
도 3b는, 매크로블록 및 매크로블록 의존도(302-1 및 302-2)를 갖는, 영역들로 수평적으로 분할된 프레임(207)의 예시적인 실시예를 예시한다. 이러한 예시적인 실시예에서, 바닥 영역의 매크로블록 중 하나 이상은, 그의 부(parent) 매크로블록 중 하나 이상에 대한 예측된 또는 디폴트 값을 사용하여 프로세싱될 수 있다. 예를 들어, 열(202-4) 및 행(204-4)의 매크로블록은 웨이브 프론트 그룹 3에 있다. 그러나, 이 매크로블록은, 매크로블록 의존도(302-2)의 화살표로 예시된 바와 같이 웨이브 프론트 그룹 2, 7 및 8의 매크로블록에 대해 의존도를 갖는다. 올림 차순으로 프로세싱되는 경우, 웨이브 프론트 그룹 3의 매크로블록은, 웨이브 프론트 그룹 7 및 8의 매크로블록 전에 프로세싱될 것이다. 따라서, 웨이브 프론트 그룹 7 및 8의 부 매크로블록에 대한 예측된 값은, 이 위치의 매크로블록의 경우 요구될 수 있다. 예측된 값은 디폴트 값일 수 있거나, 또는 다른 예측이 사용되어야 한다. 추가로, 도 3b에 예시된 바와 같이, 프레임(207)을 2개의 영역으로 분할하는 매크로블록 경계를 따른 다른 매크로블록은 또한, 이들이 프로세싱되는 경우 일부 디폴트 값 또는 다른 예측된 값을 사용하도록 요구받을 수 있다. 또한, 웨이브 프론트 경계를 따라 대각선으로 분할된 프레임은 또한, 프로세싱되는 경우 일부 디폴트 값 또는 다른 예측된 값을 사용할 수 있는 매크로블록을 가질 수 있다.
도 3c는, 웨이브 프론트 경계를 따라 2개의 영역으로 대각선으로 분할된 프레임(209)의 예시적인 실시예를 예시한다. 앞서 유사하게 논의된 바와 같이, 바닥 영역의 매크로블록 중 하나 이상은, 그의 부 매크로블록 중 하나 이상에 대한 일부 디폴트 값 또는 다른 예측된 값을 사용하여 프로세싱될 수 있다. 예를 들어, 열(202-6) 및 행(204-4)의 매크로블록은 웨이브 프론트 그룹 1에 있다. 그러나, 이 매크로블록은, 매크로블록 의존도 식별자(302-2)의 화살표로 예시된 바와 같이 웨이브 프론트 그룹 0 및 9의 매크로블록에 대해 의존도를 갖는다. 올림 차순으로 프로세싱되는 경우, 웨이브 프론트 그룹 1의 매크로블록은, 웨이브 프론트 그룹 9의 매크로블록 전에 프로세싱될 것이다. 따라서, 이 위치의 매크로블록이 프로세싱되는 경우, 웨이브 프론트 그룹 9의 부 매크로블록에 대해 디폴트 값 또는 예측된 값이 사용될 수 있다. 추가로, 도 3c에 예시된 바와 같이, 비디오 프레임(209)을 2개의 영역으로 분할하는 매크로블록 또는 웨이브 프론트 경계를 따른 다른 매크로블록은 또한, 이들이 프로세싱되는 경우 일부 디폴트 값 또는 다른 예측된 값을 사용하도록 요구받을 수 있다.
도 3d는, 영역들의 수, 프레임 크기, 및 프레임을 영역들로 분할하기 위해 사용되는 방법(수평적 또는 대각선)에 기초하여 비디오 프레임을 프로세싱하기 위해 요구되는 다수의 웨이브 프론트 그룹을 도시하는 예시적인 표(350)를 예시한다. 표(350)에 명시적으로 예시된 바와 같이, 비디오 프레임을 영역들로 대각선으로 분할하는 것은, 프로세싱을 위한 웨이브 프론트 그룹의 수의 감소에 있어서, 비디오 프레임을 수평적으로 분할하는 것에 비해 상당한 이점을 갖는다. 또한, 프레임을 둘보다 많은 영역들로 분할하는 것은, 예를 들어, 수평적 분할 또는 대각선 분할 둘 모두의 경우에서 프로세싱을 위한 웨이브 프론트 그룹의 수를 또한 감소시킨다.
표(350)에 예시된 일례에서, 2개의 영역으로 분할된 1280x720 크기를 갖는 프레임은 수평적으로 분할되는 경우 124개의 웨이브 프론트 그룹을 요구하고, 웨이브 프론트 경계를 따라 대각선으로 분할되는 경우 84개의 웨이브 프론트 그룹을 요구한다. 다른 예에서, 8개의 영역으로 분할된 동일 크기를 갖는 프레임은 수평적으로 분할되는 경우 90개의 웨이브 프론트 그룹을 요구하고, 대각선으로 분할되는 경우 21개의 웨이브 프론트 그룹을 요구한다. 이러한 예에서 볼 수 있는 바와 같이, 프레임을 프로세싱하기 위해 요구되는 웨이브 프론트 그룹의 수는, 영역의 수를 증가시키고 프레임을 대각선으로 분할함으로써, 상당히 감소될 수 있다.
다양한 실시예에서, 요구되는 웨이브 프론트 그룹의 수는, 수평적으로 분할하는 것 및 대각선으로 분할하는 것 둘 모두에 대해 계산될 수 있다. 좌측, 최상부 및 최상부-우측 의존도를 갖는 매크로블록에 대해 영역들로 수평적으로 분할되는 경우, 비디오 프레임을 인코딩하기 위해 요구되는 웨이브 프론트 그룹의 수를 계산하기 위해 방정식 1이 사용될 수 있다.
1. 웨이브 프론트 그룹 =
Figure 112016116891524-pct00001
,
여기서,
W = 매크로블록에서 프레임 폭
H = 매크로블록에서 프레임 높이; 및
N = 영역의 수.
좌측, 최상부 및 최상부-우측 의존도를 갖는 매크로블록에 대해 영역들로 대각선으로 분할되는 경우, 비디오 프레임을 인코딩하기 위해 요구되는 웨이브 프론트 그룹의 수를 계산하기 위해 방정식 2이 사용될 수 있다.
2. 웨이브 프론트 그룹 =
Figure 112016116891524-pct00002
,
여기서,
W = 매크로블록에서 프레임 폭
H = 매크로블록에서 프레임 높이; 및
N = 영역의 수.
일부 예에서, 매크로블록은 오직 좌측 및 최상부 의존도만을 가질 수 있다(미도시). 좌측 및 최상부 의존도를 갖는 매크로블록에 대해 영역들로 수평적으로 분할되는 경우, 비디오 프레임을 인코딩하기 위해 요구되는 웨이브 프론트 그룹의 수를 계산하기 위해 방정식 3이 사용될 수 있다.
3. 웨이브 프론트 그룹 =
Figure 112016116891524-pct00003
,
여기서,
W = 매크로블록에서 프레임 폭
H = 매크로블록에서 프레임 높이; 및
N = 영역의 수.
좌측 및 최상부 의존도를 갖는 매크로블록에 대해 영역들로 대각선으로 분할되는 경우, 비디오 프레임을 인코딩하기 위해 요구되는 웨이브 프론트 그룹의 수를 계산하기 위해 방정식 4이 사용될 수 있다.
4. 웨이브 프론트 그룹 =
Figure 112016116891524-pct00004
,
여기서,
W = 매크로블록에서 프레임 폭
H = 매크로블록에서 프레임 높이; 및
N = 영역의 수.
방정식 1-4는, 임의의 수를 매크로블록을 갖는 임의의 크기의 디스플레이에 대한 웨이브 프론트 그룹의 수를 결정하기 위해 사용될 수 있다. 멀티-코어, 멀티-스레디드(multi-threaded)의 경우, 또는 임의의 병렬적 프로세싱 컴포넌트 상에서, 각각의 매크로블록은 병렬적으로 또는 대략적으로 동일한 시간에 프로세싱될 수 있다. 따라서, 웨이브 프론트 그룹을 프로세싱하기 위해 소요되는 시간은, 웨이브 프론트 그룹의 크기와 무관하게 일정하다. 예를 들어, 프레임을 프로세싱하기 위한 시간양을 계산하기 위해 방정식 5가 사용될 수 있다.
5. processing time = WFG * WT,
여기서,
WFG = 웨이브 프론트 그룹의 수; 및
WT = 하나의 웨이브 프론트 그룹을 프로세싱하기 위한 시간.
따라서, 방정식 5에 의해 예시된 바와 같이, 프로세싱 시간은, 웨이브 프론트 그룹의 수가 감소되는 경우 감소될 수 있다. 또한, 프로세싱 시간이 감소됨에 따라 전력 소모가 감소되어, 배터리 전력으로 동작하는 컴퓨팅 디바이스의 배터리 수명을 연장시킬 수 있다. 추가로, 영역들 각각은 동일한 수의 웨이브 프론트를 포함할 수 있고, 따라서, 컴퓨팅 시스템의 성능은 팩터 N 또는 영역의 수만큼 개선될 수 있다. 일부 경우에서, 웨이브 프론트 그룹의 프로세싱 시간은 웨이브 프론트 그룹의 크기에 의존할 수 있다. 이러한 경우, 각각의 영역의 웨이브 프론트 그룹의 수는, 최대 병렬성 및 확장성을 달성하기 위해 영역들의 프로세싱 모두가 동일한 또는 대략적으로 동일한 시간에 완료될 수 있도록 조절될 수 있다. 예를 들어, 하나의 영역이 다른 영역보다 많은 매크로블록을 가질 수 있다. 일부 예에서, 제1 영역을 프로세싱하는 것은, 제2 영역보다 완료하기에 더 오래 소요될 수 있다. 이러한 경우, 웨이브 프론트 경계는 제1 영역으로부터 제2 영역으로 이동될 수 있어서, 프로세싱 부하(load)가 밸런싱될 수 있다. 이러한 이점 및 다른 이점은, 비디오 프레임을 수평적으로 또는 대각선으로 임의의 수의 영역으로 분할함으로써 실현될 수 있다.
도 4는 매크로블록(400)의 예시적인 실시예를 예시한다. 다양한 실시예에서, 매크로블록(400)은, 이산 코사인 변환(DCT; discrete cosine transform)과 같은 선형 블록 변환에 기초하는 이미지 및 비디오 압축 포맷의 프로세싱 단위일 수 있다. 매크로블록은 통상적으로 16x16개의 픽셀(402)의 샘플로 이루어지고, 변환 블록으로 그리고 예측 블록으로 추가로 세분화된다. 매크로블록에 기초할 수 있는 다양한 이미지 및 비디오 압축 포맷은, 매크로블록이 최소 코딩 단위(MCU) 블록으로 지칭되는 JPEG(Joint Photographic Experts Group), H.261, MPEG(Moving Pictures Expert Group)-1 파트 2, H.262/MPEG-2 파트 2, H.263, MPEG-4 파트 2, H.264/MPEG-4 AVC 등을 포함한다.
다양한 실시예에서, 각각의 매크로블록(400)은 매크로블록 경계를 포함할 수 있다. 더 구체적으로, 각각의 매크로블록(400)은 좌측 측면(404-1), 최상부 측면(404-2), 우측 측면(404-3) 및 바닥 측면(404-4)을 가질 수 있다. 각각의 측면은 매크로블록(400)에 대한 매크로블록 경계를 정의할 수 있다. 추가로, 각각의 측면은 픽셀(402)의 행 또는 열에 의해 정의될 수 있다. 예를 들어, 최상부 측면(404-2)은 픽셀(402)의 행에 의해 정의될 수 있다. 이전에 논의된 바와 같이, 매크로블록(400)은 픽셀의 16x16 행렬일 수 있고, 따라서 각각의 측면은 16 픽셀의 길이를 가질 수 있다. 그러나, 다양한 실시예는 이러한 방식으로 제한되지 않으며, 매크로블록은 임의의 크기일 수 있다.
도 5는 하나 이상의 비디오 프레임을 프로세싱하기 위한 제1 로직 흐름(500) 도면의 예시적인 실시예를 예시한다. 명확화를 위해, 로직 흐름(500)은 도 1a 및 도 1b의 시스템(100) 및 시스템(150)을 참조하여 논의된다. 다양한 실시예에서, 프레임은 블록(502)에서 인코딩을 위해 수신될 수 있다. 더 구체적으로, 비디오 인코더(104)는 본원에서 설명된 하나 이상의 실시예에 따른 인코딩을 위해 프레임 소스(102)로부터의 비디오 스트림에서 하나 이상의 프레임을 수신할 수 있다. 블록(504)에서, 프레임은 매크로블록(400)과 같은 매크로블록으로 분할될 수 있다. 일부 실시예에서, 매크로블록 모듈(162)은, 추가적인 프로세싱을 위해 각각의 프레임을 16x16 픽셀 매크로블록으로 분할하기 위해, 정보 또는 데이터를 비디오 인코더(104)에 전송할 수 있다. 각각의 프레임은 프레임 크기에 기초하여 다수의 매크로블록으로 분할될 수 있다. 예를 들어, 1280x720 픽셀의 프레임 크기를 갖는 프레임은 16x16의 매크로블록 크기에 기초하여 80x45 매크로블록 행렬에서 125개의 매크로블록으로 분할될 수 있다.
일부 실시예에서, 프레임은 또한 블록(506)에서 매크로블록 경계 또는 웨이브 프론트 경계를 따라 영역으로 분할될 수 있다. 예를 들어, 도 1b의 영역 모듈(164)은, 매크로블록 경계를 따라 그리고 일부 예에서는 웨이브 프론트 경계를 따라 수평적으로 또는 대각선으로 프레임을 분할하기 위해 비디오 인코더(104)에 정보를 전송할 수 있다. 웨이브 프론트 경계는, 도 2d에 예시된 바와 같이, 매크로블록에서 프레임을 분할하는 대각선일 수 있다. 다양한 실시예에서, 프레임은, 프레임의 바닥 좌측 코너로부터 프레임의 상부 우측 코너까지 대각선으로 분할될 수 있다.
프레임은 임의의 수의 영역을 생성하도록 매크로블록 경계를 따라 분할될 수 있다. 예를 들어, 프레임이, 프레임의 바닥 좌측 코너로부터 프레임의 최상부 우측 코너까지 웨이브 프론트 경계를 따라 대각선으로 분할되는 경우, 2개의 영역, 즉, 최상부 영역 및 바닥 영역이 생성될 수 있다. 다양한 실시예는 프레임을 2개의 영역으로 분할하는 것으로 제한되지 않으며, 프레임은 임의의 수의 영역으로 분할될 수 있다.
블록(508)에서, 각각의 매크로블록은 웨이브 프론트 그룹에 할당될 수 있다. 일부 실시예에서, 웨이브 프론트 모듈(166)은, 매크로블록 의존도가 충족되도록 매크로블록을 할당하기 위해 비디오 인코더(104)에 정보를 전송할 수 있다. 각각의 웨이브 프론트 그룹은 하나 이상의 매크로블록을 그룹에 할당함으로써 생성될 수 있다. 일부 실시예에서, 웨이브 프론트 그룹의 할당은, 매크로블록 경계 및/또는 웨이브 프론트 경계 이후의 시작 값으로부터 시작할 수 있다. 예를 들어, 도 2d에 예시된 바와 같이, 웨이브 프론트 그룹의 할당은, 웨이브 프론트 경계 이후 각각의 행의 0에서 재시작한다. 다양한 실시예는 이러한 방식으로 제한되지 않을 수 있고, 웨이브 프론트 그룹의 할당은 병렬적 프로세싱을 최적화하기 위한 방식으로 발생할 수 있다.
다양한 실시예에서, 동일한 웨이브 프론트 그룹의 매크로블록은 블록(510)에서 병렬적으로 프로세싱될 수 있다. 또한, 비디오 인코더(104)는 동일한 웨이브 프론트 그룹의 모든 매크로블록을 동시에 프로세싱할 수 있고, 매크로블록 의존도가 충족되는 것을 보장하고 예측된 값에 기초하여 인코딩되는 매크로블록의 수를 제한하기 위해, 각각의 웨이브 프론트 그룹은 자신들의 할당에 기초하여 올림 차순으로 프로세싱될 수 있다. 초기에 모든 매크로블록이 프로세싱되면, 인코딩의 제2 단계가 수행될 수 있다. 제2 단계에서, 제1 단계에서 생성된 모든 모션 벡터 및 모드 판정이 프로세싱되고, 이러한 값은 전체 프레임을 인코딩하고 최종적인 비트 스트림을 생성하기 위해 사용된다. 판정 블록(512)에서, 비디오 인코더(104)는, 비디오 프레임의 모든 매크로블록이 인코딩되었는지 여부를 결정할 수 있다. 프레임의 인코딩이 완료되면, 비디오 스트림에 대한 프레임 전부가 인코딩될 때까지 블록(502 내지 512)은 반복될 수 있다.
도 6은 제2 로직 흐름(600)의 실시예를 예시한다. 로직 흐름(600)은, 본원에서 설명되는 하나 이상의 실시예에 의해 실행되는 동작 중 일부 또는 전부를 표현할 수 있다. 예를 들어, 로직 흐름(600)은 시스템(100) 및 시스템(150)에 의해 수행되는 동작을 예시할 수 있다.
도 6에 도시된 예시적인 실시예에서, 로직 흐름(600)은 블록(605)에서, 픽셀을 포함하는 비디오 프레임을 다수의 매크로블록으로 분할하는 것을 포함할 수 있고, 각각의 매크로블록은 4개의 매크로블록 경계 내에 다수의 픽셀을 포함한다. 일부 실시예에서, 각각의 매크로블록은 픽셀의 16 x 16 행렬에서 256개의 픽셀을 포함할 수 있고, 디스플레이 디바이스 상에 정보를 제시하기 위한 값을 포함할 수 있다. 프레임은, 프레임 크기 및 프레임 내의 픽셀의 수에 기초하여, 임의의 수의 매크로블록으로 분할될 수 있다. 추가로, 다양한 실시예는 16 x 16의 크기를 갖는 매크로블록으로 제한되지 않으며, 매크로블록은 임의의 크기를 가질 수 있다.
4개의 매크로블록 경계는 좌측 경계 또는 엣지, 최상부 경계 또는 엣지, 우측 경계 또는 엣지 및 바닥 경계 또는 엣지를 포함할 수 있다. 매크로블록 경계는 매크로블록의 외측 픽셀에 의해 정의될 수 있다.
블록(610)에서, 로직 흐름(600)은 또한, 매크로블록 경계를 따라 비디오 프레임을 분할함으로써 복수의 매크로블록을 갖는 적어도 2개의 영역을 생성하는 것을 포함할 수 있다. 더 구체적으로, 프레임은, 다수의 매크로블록을 각각 갖는 둘 이상의 영역을 생성하기 위해 일회 이상 수평적으로 또는 대각선으로 분할될 수 있다. 일부 실시예에서, 영역은, 각각의 영역의 웨이브 프론트 그룹의 병렬적 프로세싱이 대략 동일한 시간에 종료되는 것을 보장하기 위해, 각각의 영역에 동일한 수의 매크로블록이 존재하도록 생성될 수 있다. 그러나, 일부 비디오 프레임은, 각각의 영역이 동일한 수의 매크로블록을 갖도록 균등하게 분할되지 못할 수 있다. 이러한 예에서, 영역 중 하나 이상은 하나 이상의 여분의 매크로블록을 포함한다.
로직 흐름(600)은 블록(615)에서, 각각의 영역의 매크로블록에 기초하여 웨이브 프론트 그룹을 생성하는 것을 또한 포함할 수 있고, 각각의 웨이브 프론트 그룹은 병렬적으로 프로세싱할 하나 이상의 매크로블록을 포함한다. 웨이브 프론트 그룹은 하나 이상의 매크로블록을 웨이브 프론트 그룹 각각에 할당함으로써 생성될 수 있다. 일부 실시예에서, 매크로블록은, 각각의 웨이브 프론트 그룹에 동일한 수의 매크로블록이 있도록 각각의 웨이브 프론트 그룹에 할당될 수 있다. 추가로, 매크로블록은 프레임 내에서 각각의 매크로블록의 위치에 기초하여 웨이브 프론트 그룹에 할당될 수 있다. 각각의 매크로블록은 매크로블록 의존도를 가질 수 있고, 의존적 매크로블록이 프로세싱되기 전에 이웃 매크로블록이 프로세싱될 필요가 있을 수 있다. 따라서, 매크로블록은, 의존적 매크로블록 전에 부 매크로블록이 프로세싱되는 것을 보장하는 매크로블록 의존도가 매크로블록에 대해 충족되도록 웨이브 프론트 그룹에 할당 또는 배분될 수 있거나 또는 디폴트 값 또는 다른 예측이 요구될 수 있다.
도 7은 시스템(700)의 일 실시예를 예시한다. 다양한 실시예에서, 시스템(700)은, 도 1a 및 도 1b의 시스템(100 및 150)과 같이, 본원에서 설명되는 하나 이상의 실시예와 함께 사용하기에 적합한 시스템 또는 아키텍쳐를 표현할 수 있다. 실시예는 이와 관련하여 제한되지 않는다.
도 7에 도시된 바와 같이, 시스템(700)은 다수의 엘리먼트를 포함할 수 있다. 하나 이상의 엘리먼트는, 주어진 세트의 설계 또는 성능 제약에 대해 원하는 대로, 하나 이상의 회로, 컴포넌트, 레지스터, 프로세서, 소프트웨어 서브루틴, 모듈 또는 이들의 임의의 조합을 사용하여 구현될 수 있다. 도 7은 예시의 방식으로 특정 토폴로지로 제한된 수의 엘리먼트를 도시하지만, 주어진 구현에 대해 원하는 대로 임의의 적절한 토폴로지로 더 많거나 더 적은 엘리먼트가 시스템(700)에서 사용될 수 있음을 인식할 수 있다. 실시예는 이러한 상황으로 제한되지 않는다.
다양한 실시예에서, 시스템(700)은, 개인용 컴퓨터, 데스크탑 컴퓨터, 태블릿 컴퓨터, 넷북 컴퓨터, 노트북 컴퓨터, 랩탑 컴퓨터, 서버, 서버 팜(farm), 블레이드(blade) 서버 또는 임의의 다른 타입의 서버 등을 포함하는 임의의 타입의 컴퓨터 또는 프로세싱 디바이스일 수 있는 컴퓨팅 디바이스(705)를 포함할 수 있다.
컴퓨팅 디바이스의 예는 또한, 사람이 착용하도록 구성되는 컴퓨터, 예를 들어, 손목용 컴퓨터, 손가락용 컴퓨터, 반지용 컴퓨터, 안경용 컴퓨터, 벨트-클립용 컴퓨터, 완장용 컴퓨터, 신발용 컴퓨터, 의복용 컴퓨터 및 다른 착용가능한 컴퓨터를 포함할 수 있다. 실시예에서, 예를 들어, 모바일 컴퓨팅 디바이스는, 컴퓨터 애플리케이션 뿐만 아니라 음성 통신 및/또는 데이터 통신을 실행할 수 있는 스마트폰으로 구현될 수 있다. 일부 실시예는, 예시의 방식으로 스마트폰으로 구현되는 모바일 컴퓨팅 디바이스로 설명될 수 있지만, 다른 무선 모바일 컴퓨팅 디바이스를 또한 사용하는 다른 실시예가 구현될 수 있음을 인식할 수 있다. 실시예는 이러한 상황으로 제한되지 않는다.
다양한 실시예에서, 컴퓨팅 디바이스(705)는 프로세서 회로(702)를 포함할 수 있다. 프로세서 회로(702)는 임의의 프로세서 또는 로직 디바이스를 사용하여 구현될 수 있다. 프로세싱 회로(702)는, 마이크로프로세서, 프로세서, 중앙 프로세싱 유닛, 디지털 신호 프로세싱 유닛, 듀얼 코어 프로세서, 모바일 디바이스 프로세서, 데스크탑 프로세서, 싱글 코어 프로세서, 시스템-온-칩(SoC; system-on-chip) 디바이스, CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서 또는 임의의 다른 타입의 프로세서 또는 싱글 칩 또는 집적 회로 상의 프로세싱 회로와 같은, 그러나 이에 제한되는 것은 아닌 임의의 타입의 계산 엘리먼트 중 하나 이상일 수 있다. 프로세싱 회로(702)는, 하나 이상의 버스, 제어 라인 및 데이터 라인과 같은 상호접속부(743)를 통해 컴퓨팅 시스템의 다른 엘리먼트에 접속되고 그와 통신할 수 있다.
일 실시예에서, 컴퓨팅 디바이스(705)는 프로세서 회로(702)에 커플링되는 메모리 유닛(704)을 포함할 수 있다. 메모리 유닛(704)은, 주어진 구현에 대해 원하는 대로, 통신 버스(743)를 통해, 또는 프로세서 회로(702)와 메모리 유닛(704) 사이의 전용 통신 버스에 의해 프로세서 회로(702)에 커플링될 수 있다. 메모리 유닛(04) 는, 데이터를 저장할 수 있는 임의의 머신 판독가능 또는 컴퓨터 판독가능 매체를 사용하여 구현될 수 있고 휘발성 및 비휘발성 메모리 둘 모두를 포함한다. 일부 실시예에서, 머신 판독가능 또는 컴퓨터 판독가능 매체는 비일시적 매체를 포함할 수 있다. 실시예는 이러한 상황으로 제한되지 않는다.
컴퓨팅 디바이스(705)는 다양한 실시예에서 그래픽 프로세싱 유닛(GPU)(706)을 포함할 수 있다. GPU(706)는 그래픽-관련 동작을 수행하도록 최적화된 임의의 프로세싱 유닛, 로직 또는 회로 뿐만 아니라 비디오 디코더 엔진 및 프레임 상관 엔진을 포함할 수 있다. GPU(706)는, 비디오 게임, 그래픽, 컴퓨터-보조 설계(CAD), 시뮬레이션 및 가상화 툴, 이미징(imaging) 등과 같은 다양한 애플리케이션에 대해 2-차원(2-D) 및/또는 3-차원(3-D) 이미지를 렌더링하기 위해 사용될 수 있다. 다양한 실시예는 이러한 방식으로 제한되지 않으며; GPU(706)는 영상, 비디오, 프로그램, 애니메이션, 3D, 2D, 오브젝트 이미지 등과 같은 임의의 타입의 데이터를 프로세싱할 수 있다.
일부 실시예에서, 컴퓨팅 디바이스(705)는 디스플레이 제어기(708)를 포함할 수 있다. 디스플레이 제어기(708)는, 그래픽 정보를 프로세싱하고 그래픽 정보를 디스플레이하기 위한 임의의 타입의 프로세서, 제어기, 회로, 로직 등일 수 있다. 디스플레이 제어기(708)는 버퍼(들)(220)과 같은 하나 이상의 버퍼로부터 그래픽 정보를 수신 또는 검색할 수 있다. 정보를 프로세싱한 후, 디스플레이 제어기(708)는 그래픽 정보를 디스플레이에 전송할 수 있다.
다양한 실시예에서, 시스템(700)은 트랜시버(744)를 포함할 수 있다. 트랜시버(744)는 다양한 적절한 무선 통신 기술을 사용하여 신호를 송신 및 수신할 수 있는 하나 이상의 라디오를 포함할 수 있다. 이러한 기술은 하나 이상의 무선 네트워크를 통한 통신을 수반할 수 있다. 예시적인 무선 네트워크는 무선 로컬 영역 네트워크(WLAN), 무선 개인 영역 네트워크(WPAN), 무선 대도시 영역 네트워크(WMAN), 셀룰러 네트워크 및 위성 네트워크를 포함한다(그러나, 이에 제한되는 것은 아니다). 이러한 네트워크를 통한 통신에서, 트랜시버(744)는 임의의 버전인 하나 이상의 적용가능한 표준에 따라 동작할 수 있다. 실시예는 이러한 상황으로 제한되지 않는다.
다양한 실시예에서, 컴퓨팅 디바이스(705)는 디스플레이(745)를 포함할 수 있다. 디스플레이(745)는, 프로세서 회로(702), 그래픽 프로세싱 유닛(706) 및 디스플레이 제어기(708)로부터 수신된 정보를 디스플레이할 수 있는 임의의 디스플레이 디바이스로 구성될 수 있다.
다양한 실시예에서, 컴퓨팅 디바이스(705)는 스토리지(746)를 포함할 수 있다. 스토리지(746)는, 자기 디스크 드라이브, 광학 디스크 드라이브, 테이프 드라이브, 내부 저장 디바이스, 부착형 저장 디바이스, 플래쉬 메모리, 배터리 백업된(backed-up) SDRAM(동기식 DRAM) 및/또는 네트워크 액세스가능 저장 디바이스와 같은(그러나, 이에 제한되는 것은 아닌) 비휘발성 저장 디바이스로서 구현될 수 있다. 실시예에서, 스토리지(746)는, 예를 들어, 다수의 하드 드라이브가 포함되는 경우 가치있는 디지털 미디어에 대해 저장 성능이 향상된 보호를 증가시키기 위한 기술을 포함할 수 있다. 스토리지(746)의 추가적인 예는, 하드 디스크, 플로피 디스크, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 컴팩트 디스크 기록가능(CD-R), 컴팩트 디스크 재기입가능(CD-RW), 광학 디스크, 자기 매체, 자기-광학 매체, 착탈식 메모리 카드 또는 디스크, 다양한 타입의 DVD 디바이스, 테이프 디바이스, 카세트 디바이스 등을 포함할 수 있다. 실시예는 이러한 상황으로 제한되지 않는다.
다양한 실시예에서, 컴퓨팅 디바이스(705)는 하나 이상의 I/O 어댑터(747)를 포함할 수 있다. I/O 어댑터(747)의 예는 범용 직렬 버스(USB) 포트/어댑터, IEEE 1394 파이어와이어 포트/어댑터 등을 포함할 수 있다. 실시예는 이러한 상황으로 제한되지 않는다.
도 8은, 이전에 설명된 다양한 실시예를 구현하기에 적합한 예시적인 컴퓨팅 아키텍쳐(800)의 실시예를 예시한다. 일 실시예에서, 컴퓨팅 아키텍쳐(800)는 시스템(100 및 150)의 일부를 포함하거나 그 일부로서 구현될 수 있다.
본 출원에서 사용되는 바와 같이, 용어 "시스템" 및 "컴포넌트"는 컴퓨터-관련 개체, 즉, 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어 또는 실행 소프트웨어 중 어느 하나로 지칭되도록 의도되며, 이에 대한 예는 예시적인 컴퓨팅 아키텍쳐(800)에 의해 제공된다. 예를 들어, 컴포넌트는, 프로세서 상에서 실행되는 프로세스, 프로세서, 하드 디스크 드라이브, (광학 및/또는 자기 저장 매체의) 다수의 저장 드라이브, 오브젝트, 실행가능한 것(executable), 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있지만, 이에 제한되는 것은 아니다. 예시의 방식으로, 서버 상에서 실행되는 애플리케이션 및 서버 둘 모두가 컴포넌트일 수 있다. 하나 이상의 컴포넌트는 프로세스 및/또는 실행 스레드 내에 상주할 수 있고, 컴포넌트는 하나의 컴퓨터 상에 로컬화되거나 둘 이상의 컴퓨터 사이에 분산될 수 있다. 추가로, 컴포넌트는, 동작을 조정하기 위한 다양한 타입의 통신 매체에 의해 서로 통신가능하게 커플링될 수 있다. 조정은 정보의 일방향 또는 양방향 교환을 수반할 수 있다. 예를 들어, 컴포넌트는 통신 매체를 통해 통신되는 신호의 형태로 정보를 통신할 수 있다. 정보는 다양한 신호 라인에 할당되는 신호로서 구현될 수 있다. 이러한 할당에서, 각각의 메시지가 신호이다. 그러나, 추가적인 실시예는 대안적으로 데이터 메시지를 이용할 수 있다. 이러한 데이터 메시지는 다양한 접속부를 통해 전송될 수 있다. 예시적인 접속부는 병렬 인터페이스, 직렬 인터페이스 및 버스 인터페이스를 포함한다.
컴퓨팅 아키텍쳐(800)는, 하나 이상의 프로세서, 멀티-코어 프로세서, 코-프로세서, 메모리 유닛, 칩셋, 제어기, 주변장치, 인터페이스, 오실레이터, 타이밍 디바이스, 비디오 카드, 오디오 카드, 멀티미디어 입력/출력(I/O) 컴포넌트, 전원 등과 같은 다양한 공통 컴퓨팅 엘리먼트를 포함한다. 그러나, 실시예는 컴퓨팅 아키텍쳐(800)에 의한 구현으로 제한되지 않는다.
도 8에 도시된 바와 같이, 컴퓨팅 아키텍쳐(800)는 프로세싱 유닛(804), 시스템 메모리(806) 및 시스템 버스(808)를 포함한다. 프로세싱 유닛(804)은 다양한 상업적으로 입수가능한 프로세서 중 임의의 프로세서일 수 있다.
시스템 버스(808)는, 시스템 메모리(806)를 포함하지만 이에 제한되는 것은 아닌 시스템 컴포넌트에 대한 인터페이스를 프로세싱 유닛(804)에 제공한다. 시스템 버스(808)는, 다양한 상업적으로 입수가능한 버스 아키텍쳐 중 임의의 버스 아키텍쳐를 사용하여 메모리 버스(메모리 제어기를 갖거나 갖지 않음), 주변장치 버스 및 로컬 버스에 추가로 상호접속할 수 있는 몇몇 타입의 버스 구조 중 임의의 버스 구조일 수 있다. 인터페이스 어댑터는 슬롯 아키텍쳐를 통해 시스템 버스(808)에 접속할 수 있다. 예시적인 슬롯 아키텍쳐는 제한 없이, 가속 그래픽 포트(AGP), 카드 버스, (확장된) 산업 표준 아키텍쳐((E)ISA), 마이크로 채널 아키텍쳐(MCA), NuBus, PCI(X)(Peripheral Component Interconnect (Extended)), PCI 익스프레스, PCMCIA(Personal Computer Memory Card International Association) 등을 포함할 수 있다.
컴퓨팅 아키텍쳐(800)는 다양한 제조 물품을 포함 또는 구현할 수 있다. 제조 물품은 로직을 저장하기 위한 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 컴퓨터 판독가능 저장 매체의 예는, 휘발성 메모리 또는 비휘발성 메모리, 착탈식 또는 비착탈식 메모리, 소거가능 또는 소거불가능 메모리, 기입가능 또는 기입불가능 메모리 등을 포함하는, 전자 데이터를 저장할 수 있는 임의의 유형의(tangible) 매체를 포함할 수 있다. 로직의 예는, 소스 코드, 컴파일링된 코드, 해석된 코드, 실행가능한 코드, 정적 코드, 동적 코드, 객체-지향형 코드, 시각적 코드 등과 같은 임의의 적절한 타입의 코드를 사용하여 구현되는 실행가능한 컴퓨터 프로그램 명령어를 포함할 수 있다. 실시예는 또한 적어도 부분적으로는, 본원에서 설명된 동작의 수행을 가능하게 하도록 하나 이상의 프로세서에 의해 판독 및 실행될 수 있는, 비일시적 컴퓨터 판독가능 매체 상의 또는 그에 포함된 명령어로서 구현될 수 있다.
시스템 메모리(806)는, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), 더블-데이터-레이트 DRAM(DDRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM), 프로그래밍가능 ROM(PROM), 소거가능한 프로그래밍가능 ROM(EPROM), 전기적으로 소거가능한 프로그래밍가능 ROM(EEPROM), 플래쉬 메모리, 폴리머 메모리, 예를 들어, 강자성 폴리머 메모리, 오보닉(ovonic) 메모리, 상 변화 또는 강자성 메모리, SONOS(silicon-oxide-nitride-oxide-silicon) 메모리, 자기 또는 광학 카드, 디바이스의 어레이, 예를 들어, RAID(Redundant Array of Independent Disks) 드라이브, 솔리드 스테이트 메모리 디바이스(예를 들어, USB 메모리, 솔리드 스테이트 드라이브(SSD) 및 정보를 저장하기 위한 임의의 다른 타입의 저장 매체와 같은 하나 이상의 고속 메모리 유닛의 형태인 다양한 타입의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 도 8에 도시된 예시적인 실시예에서, 시스템 메모리(806)는 비휘발성 메모리(810) 및/또는 휘발성 메모리(812)를 포함할 수 있다. 기본 입/출력 시스템(BIOS)은 비휘발성 메모리(810)에 저장될 수 있다.
컴퓨터(802)는, 내부(또는 외부) 하드 디스크 드라이브(HDD)(814), 착탈식 자기 디스크(818)로부터 판독하거나 그에 기입하기 위한 자기 플로피 디스크 드라이브(FDD)(816), 및 착탈식 광학 디스크(822)(예를 들어, CD-ROM 또는 DVD)로부터 판독하거나 그에 기입하기 위한 광학 디스크 드라이브(820)를 포함하는 하나 이상의 저속 메모리 유닛의 형태인 다양한 타입의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. HDD(814), FDD(816) 및 광학 디스크 드라이브(820)는 각각 HDD 인터페이스(824), FDD 인터페이스(826) 및 광학 드라이브 인터페이스(828)에 의해 시스템 버스(808)에 접속될 수 있다. 외부 드라이브 구현을 위한 HDD 인터페이스(824)는 범용 직렬 버스(USB) 및 IEEE 1394 인터페이스 기술 중 적어도 하나 또는 둘 모두를 포함할 수 있다.
드라이브 및 연관된 컴퓨터 판독가능 매체는 데이터, 데이터 구조, 컴퓨터 실행가능 명령 등의 휘발성 및/또는 비휘발성 스토리지를 제공한다. 예를 들어, 운영 시스템(830), 하나 이상의 애플리케이션 프로그램(832), 다른 프로그램 모듈(834) 및 프로그램 데이터(836)를 포함하는 다수의 프로그램 모듈이 드라이브 및 메모리 유닛(810, 812)에 저장될 수 있다. 일 실시예에서, 하나 이상의 애플리케이션 프로그램(832), 다른 프로그램 모듈(834) 및 프로그램 데이터(836)는, 예를 들어, 시스템(700)의 다양한 애플리케이션 및/또는 컴포넌트를 포함할 수 있다.
사용자는, 하나 이상의 유선/무선 입력 디바이스, 예를 들어, 키보드(838) 및 마우스(840)와 같은 포인팅 디바이스를 통해 커맨드 및 정보를 컴퓨터(802)에 입력할 수 있다. 다른 입력 디바이스는 마이크로폰, 적외선(IR) 원격 제어기, 라디오 주파수(RF) 원격 제어기, 게임 패드, 스타일러스 펜, 카드 판독기, 동글(dongle), 지문 판독기, 글로브(glove), 그래픽 태블릿, 조이스틱, 키보드, 망막 판독기, 터치 스크린(예를 들어, 용량성, 저항성 등), 트랙볼, 트랙 패드, 센서, 스타일러스 등을 포함할 수 있다. 이러한 입력 디바이스 및 다른 입력 디바이스는 종종, 시스템 버스(808)에 커플링된 입력 디바이스 인터페이스(842)를 통해 프로세싱 유닛(804)에 커플링되지만, 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포드, IR 인터페이스 등과 같은 다른 인터페이스에 의해 접속될 수 있다.
모니터(844) 또는 다른 타입의 디스플레이 디바이스가 또한 비디오 어댑터(846)와 같은 인터페이스를 통해 시스템 버스(808)에 접속된다. 모니터(844)는 컴퓨터(802)의 내부 또는 외부에 있을 수 있다. 모니터(844)에 추가로, 컴퓨터는 통상적으로 다른 주변장치 출력 디바이스, 예를 들어, 스피커, 프린터 등을 포함한다.
컴퓨터(802)는, 유선 및/또는 무선 통신을 통해 원격 컴퓨터(848)와 같은 하나 이상의 원격 컴퓨터로의 로직 접속을 사용하는 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(848)는 워크스테이션, 서버 컴퓨터, 라우터, 개인용 컴퓨터, 휴대용 컴퓨터, 마이크로프로세서-기반 엔터테인먼트 기기, 피어 디바이스 또는 다른 공통 네트워크 노드일 수 있고, 통상적으로 컴퓨터(802)와 관련하여 설명되는 많은 엘리먼트 또는 엘리먼트 전부를 포함하지만, 간략화를 위해 오직 메모리/저장 디바이스(850)만이 예시된다. 도시된 로직 접속은 로컬 영역 네트워크(LAN)(852) 및/또는 더 큰 네트워크, 예를 들어, 광역 네트워크(WAN)(854)로의 유선/무선 접속을 포함한다. 이러한 LAN 및 WAN 네트워킹 환경은 사무실 및 회사에서 통상적이며, 인트라넷과 같은 전사적 컴퓨터 네트워크를 용이하게 하고, 이들 전부는 예를 들어, 인터넷과 같은 글로벌 통신 네트워크에 접속할 수 있다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(802)는 유선 및/또는 무선 통신 네트워크 인터페이스 또는 어댑터(856)를 통해 LAN(852)에 접속된다. 어댑터(856)는 LAN(852)과의 유선 및/또는 무선 통신을 용이하게 할 수 있고, LAN(852)은 또한 어댑터(856)의 무선 기능부와 통신하기 위해 배치된 무선 액세스 포인트를 포함할 수 있다.
WAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(802)는 모뎀(858)을 포함할 수 있거나, 또는 WAN(854) 상의 통신 서버에 접속되거나, 또는 예를 들어, 인터넷을 이용하여 WAN(854)을 통한 통신을 설정하기 위한 다른 수단을 갖는다. 내부 또는 외부 및 유선 및/또는 무선 디바이스일 수 있는 모뎀(858)은 입력 디바이스 인터페이스(842)를 통해 시스템 버스(808)에 접속한다. 네트워킹된 환경에서, 컴퓨터(802) 또는 그 일부에 대해 상대적으로 도시된 프로그램 모듈은 원격 메모리/저장 디바이스(850)에 저장될 수 있다. 도시된 네트워크 접속은 예시적이고, 컴퓨터 사이에 통신 링크를 설정하는 다른 수단이 사용될 수 있음을 인식할 것이다.
컴퓨터(802)는 IEEE 802 표준군을 사용하는 유선 및 무선 디바이스 또는 개체, 예를 들어, 무선 통신(예를 들어, IEEE 802.11 오버-디-에어(over-the-air) 변조 기술)에 동작가능하게 배치된 무선 디바이스와 통신하도록 동작가능하다. 이것은, 무엇보다도, 적어도 Wi-Fi(즉, Wireless Fidelity), WiMax 및 Bluetooth™ 무선 기술을 포함한다. 따라서, 통신은 종래의 네트워크 또는 단순히 적어도 2개의 디바이스 사이의 애드 혹(ad hoc) 통신에서와 같이 미리 정의된 구조일 수 있다. Wi-Fi 네트워크는, 보안되고 신뢰가능하고 빠른 무선 접속을 제공하기 위해 IEEE 802.11x(a, b, g, n 등)로 지칭되는 라디오 기술을 사용한다. Wi-Fi 네트워크는 컴퓨터를 서로, 인터넷에 그리고 (IEEE 802.3-관련 매체 및 기능을 사용하는) 유선 네트워크에 접속시키기 위해 사용될 수 있다.
도 1 내지 도 8을 참조하여 이전에 설명된 바와 같은 시스템(100 및 150)의 다양한 엘리먼트는 다양한 하드웨어 엘리먼트, 소프트웨어 엘리먼트 또는 둘 모두의 조합을 포함할 수 있다. 하드웨어 엘리먼트의 예는 디바이스, 로직 디바이스, 컴포넌트, 프로세서, 마이크로프로세서, 회로, 프로세서, 회로 엘리먼트(예를 들어, 트랜지스터, 레지스터, 커패시터, 인덕터 등), 집적 회로, 주문형 집적 회로(ASIC), 프로그래밍가능 로직 디바이스(PLD), 디지털 신호 프로세서(DSP), 필드 프로그래밍가능 게이트 어레이(FPGA), 메모리 유닛, 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 소프트웨어 엘리먼트의 예는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 소프트웨어 개발 프로그램, 머신 프로그램, 운영 시스템 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 방법, 절차, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼 또는 이들의 임의의 조합을 포함할 수 있다. 그러나, 실시예가 하드웨어 엘리먼트를 사용하여 구현되는지 및/또는 소프트웨어 엘리먼트를 사용하여 구현되는지를 결정하는 것은, 주어진 구현에 대해 원하는 대로, 임의의 수의 팩터, 예를 들어, 원하는 계산 레이트, 전력 레벨, 열 공차, 프로세싱 사이클 버짓(budget), 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제약에 따라 변할 수 있다.
상세한 개시는 이제, 추가적인 실시예와 관련된 예를 제공하는 것으로 전환된다. 아래에 제공된 예 1 내지 33(1-33)은 예시적이고 비제한적인 것으로 의도된다.
제1 예에서, 시스템 또는 장치는, 프로세싱 회로, 프로세싱 회로 상에서 실행되며, 픽셀을 포함하는 비디오 프레임을 다수의 매크로블록으로 분할하는 매크로블록 모듈 ―각각의 매크로블록은 다수의 매크로블록 경계 내에 다수의 픽셀을 포함함―, 프로세싱 회로 상에서 실행되며, 매크로블록 경계를 따라 비디오 프레임을 분할함으로써 복수의 매크로블록을 갖는 적어도 2개의 영역을 생성하는 영역 모듈, 및 프로세싱 회로 상에서 실행되며, 각각의 영역의 매크로블록에 기초하여 웨이브 프론트 그룹을 생성하는 웨이브 프론트 모듈을 포함하고, 각각의 웨이브 프론트 그룹은 병렬적으로 프로세싱할 하나 이상의 매크로블록을 포함한다.
제2 예에서 및 제1 예에 더하여, 장치는, 적어도 2개의 영역을 생성하는 것이 비디오 프레임을 매크로블록 경계를 따라 대각선으로 분할하는 것을 포함하는 영역 모듈을 포함할 수 있다.
제3 예에서 및 임의의 이전 예에 더하여, 장치는, 비디오 프레임의 바닥 좌측 코너로부터 비디오 프레임의 최상부 우측 코너까지 대각선으로 비디오 프레임을 분할하는 영역 모듈을 포함할 수 있다.
제4 예에서 및 임의의 이전 예에 더하여, 장치는, 적어도 2개의 영역을 생성하는 것이 매크로블록의 병렬적 프로세싱을 최대화하기 위해 각각의 영역이 동일한 수의 매크로블록을 갖도록 비디오 프레임을 분할하는 것을 포함하는 영역 모듈을 포함할 수 있다.
제5 예에서 및 임의의 이전 예에 더하여, 장치는, 웨이브 프론트 그룹을 생성하는 것이 웨이브 프론트 그룹으로 동일한 수의 매크로블록이 할당될 수 없는 경우, 각각의 매크로블록을 특정 웨이브 프론트 그룹에 할당하고, 웨이브 프론트 그룹 중 적어도 하나에 여분의 매크로블록을 할당하는 것을 포함하는 웨이브 프론트 모듈을 포함할 수 있다.
제6 예에서 및 임의의 이전 예에 더하여, 장치는, 웨이브 프론트 그룹을 생성하는 것이 매크로블록 의존도에 기초하여 각각의 매크로블록을 웨이브 프론트 그룹에 할당하는 것을 포함하는 웨이브 프론트 모듈을 포함할 수 있다.
제7 예에서 및 임의의 이전 예에 더하여, 장치는, 웨이브 프론트 그룹의 각각의 매크로블록을 병렬적으로 프로세싱하는 프로세싱 회로를 포함할 수 있다.
제8 예에서 및 임의의 이전 예에 더하여, 장치는, 각각의 웨이브 프론트 그룹을 매크로블록 의존도에 기초한 순서로 프로세싱하는 프로세싱 회로를 포함할 수 있고, 웨이브 프론트 그룹의 매크로블록은 다른 웨이브 프론트 그룹의 매크로블록의 프로세싱 결과에 의존한다.
제9 예에서 및 임의의 이전 예에 더하여, 장치는, 16 x 16 행렬의 픽셀을 포함하는 매크로블록을 포함할 수 있다.
제10 예에서 및 임의의 이전 예에 더하여, 물품은, 복수의 명령어를 포함하는 컴퓨터 판독가능 저장 매체를 포함하고, 명령어는 실행되는 경우 프로세싱 회로로 하여금, 픽셀을 포함하는 비디오 프레임을 다수의 매크로블록으로 분할하게 하고 ―각각의 매크로블록은 다수의 매크로블록 경계 내에 다수의 픽셀을 포함함―; 매크로블록 경계를 따라 비디오 프레임을 분할함으로써 복수의 매크로블록을 갖는 적어도 2개의 영역을 생성하게 하고; 그리고 각각의 영역의 매크로블록에 기초하여 웨이브 프론트 그룹을 생성하게 하고, 각각의 웨이브 프론트 그룹은 병렬적으로 프로세싱할 하나 이상의 매크로블록을 포함한다.
제11 예에서 및 임의의 이전 예에 더하여, 저장 매체는, 실행되는 경우, 프로세싱 회로로 하여금 적어도 2개의 영역을 생성하게 하는 것이 비디오 프레임을 매크로블록 경계를 따라 대각선으로 분할하는 것을 포함하는 명령어를 포함한다.
제12 예에서 및 임의의 이전 예에 더하여, 저장 매체는, 실행되는 경우, 프로세싱 회로로 하여금 비디오 프레임을 대각선으로 분할하게 하는 것이 비디오 프레임의 바닥 좌측 코너로부터 비디오 프레임의 최상부 우측 코너까지 비디오 프레임을 분할하는 것을 포함하는 명령어를 포함한다.
제13 예에서 및 임의의 이전 예에 더하여, 저장 매체는, 실행되는 경우, 프로세싱 회로로 하여금, 적어도 2개의 영역을 생성하게 하는 것이 매크로블록의 병렬적 프로세싱을 최대화하기 위해 각각의 영역이 동일한 수의 매크로블록을 갖도록 비디오 프레임을 분할하는 것을 포함하는 명령어를 포함한다.
제14 예에서 및 임의의 이전 예에 더하여, 저장 매체는, 실행되는 경우, 프로세싱 회로로 하여금 웨이브 프론트 그룹을 생성하게 하는 것이 웨이브 프론트 그룹에 동일한 수의 매크로블록이 할당될 수 없는 경우, 각각의 매크로블록을 특정 웨이브 프론트 그룹에 할당하고, 웨이브 프론트 그룹 중 적어도 하나에 여분의 매크로블록을 할당하는 것을 포함하는 명령어를 포함한다.
제15 예에서 및 임의의 이전 예에 더하여, 저장 매체는, 실행되는 경우, 프로세싱 회로로 하여금 웨이브 프론트 그룹을 생성하게 하는 것이 매크로블록 의존도에 기초하여 각각의 매크로블록을 웨이브 프론트 그룹에 할당하는 것을 포함하는 명령어를 포함한다.
제16 예에서 및 임의의 이전 예에 더하여, 저장 매체는, 실행되는 경우, 프로세싱 회로로 하여금 웨이브 프론트 그룹의 각각의 매크로블록을 병렬적으로 프로세싱하게 하는 명령어를 포함한다.
제17 예에서 및 임의의 이전 예에 더하여, 저장 매체는, 실행되는 경우, 프로세싱 회로로 하여금 각각의 웨이브 프론트 그룹을 매크로블록 의존도에 기초한 순서로 프로세싱하게 하는 명령어를 포함하고, 웨이브 프론트 그룹의 매크로블록은 다른 웨이브 프론트 그룹의 매크로블록의 프로세싱 결과에 의존한다.
제18 예에서 및 임의의 이전 예에 더하여, 방법은, 프로세싱 컴포넌트에 의해, 픽셀을 포함하는 프레임을 다수의 매크로블록으로 분할하는 단계 ―각각의 매크로블록은 다수의 매크로블록 경계 내에 다수의 픽셀을 포함함―; 매크로블록 경계를 따라 프레임을 분할함으로써 복수의 매크로블록을 갖는 적어도 2개의 영역을 생성하는 단계; 및 각각의 영역의 매크로블록에 기초하여 웨이브 프론트 그룹을 생성하는 단계를 포함하고, 각각의 웨이브 프론트 그룹은 병렬적으로 프로세싱할 하나 이상의 매크로블록을 포함한다.
제19 예에서 및 임의의 이전 예에 더하여, 방법은, 프레임을 매크로블록 경계를 따라 대각선으로 분할하는 것을 포함하는, 적어도 2개의 영역을 생성하는 단계를 포함한다.
제20 예에서 및 임의의 이전 예에 더하여, 방법은, 비디오 프레임의 바닥 좌측 코너로부터 비디오 프레임의 최상부 우측 코너까지 대각선으로 프레임을 분할하는 것을 포함하는, 프레임을 분할하는 단계를 포함할 수 있다.
제21 예에서 및 임의의 이전 예에 더하여, 방법은, 매크로블록의 병렬적 프로세싱을 최대화하기 위해 각각의 영역이 동일한 수의 매크로블록을 갖도록 프레임을 분할하는 것을 포함하는, 적어도 2개의 영역을 생성하는 단계를 포함할 수 있다.
제22 예에서 및 임의의 이전 예에 더하여, 방법은, 웨이브 프론트 그룹에 동일한 수의 매크로블록이 할당될 수 없는 경우, 각각의 매크로블록을 특정 웨이브 프론트 그룹에 할당하고, 웨이브 프론트 그룹 중 적어도 하나에 여분의 매크로블록을 할당하는 것을 포함하는, 웨이브 프론트 그룹을 생성하는 단계를 포함할 수 있다.
제23 예에서 및 임의의 이전 예에 더하여, 방법은, 매크로블록 의존도에 기초하여 각각의 매크로블록을 웨이브 프론트 그룹에 할당하는 것을 포함하는, 웨이브 프론트 그룹을 생성하는 단계를 포함할 수 있다.
제24 예에서 및 임의의 이전 예에 더하여, 방법은, 웨이브 프론트 그룹의 각각의 매크로블록을 병렬적으로 프로세싱하는 단계를 포함할 수 있다.
제25 예에서 및 임의의 이전 예에 더하여, 방법은, 각각의 웨이브 프론트 그룹을 매크로블록 의존도에 기초한 순서로 프로세싱하는 단계를 포함할 수 있고, 웨이브 프론트 그룹의 매크로블록은 다른 웨이브 프론트 그룹의 매크로블록의 프로세싱 결과에 의존한다.
제26 예에서 및 임의의 이전 예에 더하여, 장치는, 픽셀을 포함하는 프레임을 다수의 매크로블록으로 분할하기 위한 수단 ―각각의 매크로블록은 다수의 매크로블록 경계 내에 다수의 픽셀을 포함함―; 매크로블록 경계를 따라 프레임을 분할함으로써 복수의 매크로블록을 갖는 적어도 2개의 영역을 생성하기 위한 수단; 및 각각의 영역의 매크로블록에 기초하여 웨이브 프론트 그룹을 생성하기 위한 수단을 포함할 수 있고, 각각의 웨이브 프론트 그룹은 병렬적으로 프로세싱할 하나 이상의 매크로블록을 포함한다.
제27 예에서 및 임의의 이전 예에 더하여, 장치는, 프레임을 매크로블록 경계를 따라 대각선으로 분할하기 위한 수단을 포함하는, 적어도 2개의 영역을 생성하기 위한 수단을 포함한다.
제28 예에서 및 임의의 이전 예에 더하여, 장치는, 비디오 프레임의 바닥 좌측 코너로부터 비디오 프레임의 최상부 우측 코너까지 대각선으로 프레임을 분할하기 위한 수단을 포함하는, 프레임을 분할하기 위한 수단을 포함할 수 있다.
제29 예에서 및 임의의 이전 예에 더하여, 장치는, 매크로블록의 병렬적 프로세싱을 최대화하기 위해 각각의 영역이 동일한 수의 매크로블록을 갖도록 프레임을 분할하기 위한 수단을 포함하는, 적어도 2개의 영역을 생성하기 위한 수단을 포함할 수 있다.
제30 예에서 및 임의의 이전 예에 더하여, 장치는, 웨이브 프론트 그룹에 동일한 수의 매크로블록이 할당될 수 없는 경우, 각각의 매크로블록을 특정 웨이브 프론트 그룹에 할당하고, 웨이브 프론트 그룹 중 적어도 하나에 여분의 매크로블록을 할당하기 위한 수단을 포함하는, 웨이브 프론트 그룹을 생성하기 위한 수단을 포함할 수 있다.
제31 예에서 및 임의의 이전 예에 더하여, 장치는, 매크로블록 의존도에 기초하여 각각의 매크로블록을 웨이브 프론트 그룹에 할당하기 위한 수단을 포함하는, 웨이브 프론트 그룹을 생성하기 위한 수단을 포함할 수 있다.
제32 예에서 및 임의의 이전 예에 더하여, 장치는, 웨이브 프론트 그룹의 각각의 매크로블록을 병렬적으로 프로세싱하기 위한 수단을 포함할 수 있다.
제33 예에서 및 임의의 이전 예에 더하여, 장치는, 각각의 웨이브 프론트 그룹을 매크로블록 의존도에 기초한 순서로 프로세싱하기 위한 수단을 포함할 수 있고, 웨이브 프론트 그룹의 매크로블록은 다른 웨이브 프론트 그룹의 매크로블록의 프로세싱 결과에 의존한다.
일부 실시예들은 "일 실시예" 또는 "실시예"라는 표현을 이들의 파생어와 함께 사용하여 설명될 수 있다. 이러한 용어는, 실시예와 관련하여 설명되는 특정 특징, 구조 또는 특성이 적어도 하나의 실시예에 포함됨을 의미한다. 따라서, 본 명세서의 다양한 곳에서의 "일 실시예에서"라는 문구의 출현은 반드시 모두 동일 실시예를 언급하는 것은 아니다. 추가로, 일부 실시예들은 "커플링된" 및 "접속된"이라는 표현을 이들의 파생어와 함께 사용하여 설명될 수 있다. 이러한 용어는 반드시 서로 동의어로서 의도되는 것은 아니다. 예를 들어, 일부 실시예는, 둘 이상의 엘리먼트가 서로 직접으로 물리적 또는 전기적으로 접촉하는 것을 표시하기 위해 "접속된" 및/또는 "커플링된"이라는 용어를 사용하여 설명될 수 있다. 그러나, "커플링된"이라는 용어는 또한, 둘 이상의 엘리먼트가 서로 직접 접촉하지는 않지만, 또한 여전히 서로 협력 또는 상호작용하는 것을 의미할 수 있다.
독자가 기술적 개시의 성질을 신속하게 확인하도록 허용하기 위해 본 개시의 요약이 제공됨이 강조된다. 요약은, 청구항의 범주 또는 의미를 해석하거나 제한하기 위해 사용되지 않을 것이라는 이해로 제출되었다. 또한, 전술된 상세한 설명에서, 본 개시를 간소화하기 위한 목적으로, 다양한 특징이 단일 실시예에서 함께 그룹화되는 것을 알 수 있다. 본 개시 발명은, 청구된 실시예가 각각의 청구항에서 명시적으로 인용된 것보다 더 많은 특징을 요구한다는 의도를 반영하는 것으로 해석되지 않아야 한다. 오히려, 하기 청구항이 반영하는 바와 같이, 창작적 요지는, 단일의 개시된 실시예의 모든 특징보다 더 적은 특징에 존재한다. 따라서, 하기 청구항은 이로써 상세한 설명에 통합되고, 각각의 청구항은 자체로 별개의 실시예로서 존재한다. 첨부된 청구항에서, 용어 "포함하는(including)" 및 "여기서(in which)"는 각각, 각각의 용어 "comprising" 및 "wherein"의 평문 영어 균등물로서 사용된다. 또한, "제 1", "제 2", "제 3" 등의 용어는 단순히 라벨들로 사용되며, 이러한 오브젝트들에 대한 수치적 요건을 부여하도록 의도되지 않는다.
앞서 설명된 것은 개시된 아키텍쳐의 예를 포함한다. 물론, 컴포넌트 또는 방법의 모든 착안가능한 결합을 설명하는 것이 가능하지는 않지만, 본 기술분야의 당업자는, 많은 추가적인 결합 및 치환이 가능함을 인식할 수 있다. 따라서, 신규한 아키텍쳐는, 첨부된 청구항의 사상 및 범주에 속하는 모든 이러한 변경, 변형 및 변화를 포함하는 것으로 의도된다.

Claims (25)

  1. 프로세싱 회로와,
    상기 프로세싱 회로 상에서 실행되며, 픽셀을 포함하는 비디오 프레임을 다수의 매크로블록으로 분할하는 매크로블록 모듈 ―각각의 매크로블록은 다수의 매크로블록 경계 내에 다수의 픽셀을 포함함― 과,
    상기 프로세싱 회로 상에서 실행되며, 상기 매크로블록 경계를 따라 상기 비디오 프레임을 분할함으로써 복수의 매크로블록을 갖는 적어도 2개의 영역을 생성하는 영역 모듈과,
    상기 프로세싱 회로 상에서 실행되며, 각각의 영역의 매크로블록에 기초하여 웨이브 프론트(wave front) 그룹을 생성하는 웨이브 프론트 모듈을 포함하고,
    각각의 웨이브 프론트 그룹은 병렬적으로 프로세싱할 하나 이상의 매크로블록을 포함하며,
    상기 웨이브 프론트 모듈이 상기 웨이브 프론트 그룹을 생성하는 것은, 상기 웨이브 프론트 그룹으로 동일한 수의 매크로블록이 할당될 수 없는 경우, 각각의 매크로블록을 특정 웨이브 프론트 그룹에 할당하고 상기 웨이브 프론트 그룹 중 적어도 하나에 여분의 매크로블록을 할당하는 것을 포함하는
    장치.
  2. 제1항에 있어서,
    상기 영역 모듈이 상기 적어도 2개의 영역을 생성하는 것은, 상기 비디오 프레임을 상기 매크로블록 경계를 따라 대각선으로 분할하는 것을 포함하는
    장치.
  3. 제2항에 있어서,
    상기 영역 모듈은 상기 비디오 프레임의 바닥 좌측 코너로부터 상기 비디오 프레임의 최상부 우측 코너까지 대각선으로 상기 비디오 프레임을 분할하는
    장치.
  4. 제1항에 있어서,
    상기 영역 모듈이 상기 적어도 2개의 영역을 생성하는 것은, 상기 매크로블록의 병렬적 프로세싱을 최대화하기 위해 각각의 영역이 동일한 수의 매크로블록을 갖도록 상기 비디오 프레임을 분할하는 것을 포함하는
    장치.
  5. 삭제
  6. 제1항에 있어서,
    상기 웨이브 프론트 모듈이 상기 웨이브 프론트 그룹을 생성하는 것은, 매크로블록 의존도에 기초하여 각각의 매크로블록을 웨이브 프론트 그룹에 할당하는 것을 포함하는
    장치.
  7. 제1항에 있어서,
    상기 프로세싱 회로는 웨이브 프론트 그룹의 각각의 매크로블록을 병렬적으로 프로세싱하는
    장치.
  8. 제1항에 있어서,
    상기 프로세싱 회로는 각각의 웨이브 프론트 그룹을 매크로블록 의존도에 기초한 순서로 프로세싱하고,
    웨이브 프론트 그룹의 매크로블록은 다른 웨이브 프론트 그룹의 매크로블록의 프로세싱 결과에 의존하는
    장치.
  9. 제1항에 있어서,
    각각의 매크로블록은 16 x 16 행렬의 픽셀을 포함하는
    장치.
  10. 복수의 명령어를 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령어는 실행되는 경우 프로세싱 회로로 하여금,
    픽셀을 포함하는 비디오 프레임을 다수의 매크로블록으로 분할 ―각각의 매크로블록은 다수의 매크로블록 경계 내에 다수의 픽셀을 포함함― 하게 하고,
    상기 매크로블록 경계를 따라 상기 비디오 프레임을 분할함으로써 복수의 매크로블록을 갖는 적어도 2개의 영역을 생성하게 하고,
    각각의 영역의 매크로블록에 기초하여 웨이브 프론트 그룹을 생성 - 각각의 웨이브 프론트 그룹은 병렬적으로 프로세싱할 하나 이상의 매크로블록을 포함함 - 하게 하고,
    상기 프로세싱 회로로 하여금 웨이브 프론트 그룹을 생성하게 하는 것은, 상기 웨이브 프론트 그룹에 동일한 수의 매크로블록이 할당될 수 없는 경우, 각각의 매크로블록을 특정 웨이브 프론트 그룹에 할당하고 상기 웨이브 프론트 그룹 중 적어도 하나에 여분의 매크로블록을 할당하게 하는 것을 포함하는
    컴퓨터 판독가능 저장 매체.
  11. 제10항에 있어서,
    실행되는 경우, 상기 프로세싱 회로로 하여금 적어도 2개의 영역을 생성하게 하는 것이 상기 비디오 프레임을 상기 매크로블록 경계를 따라 대각선으로 분할하는 것을 포함하는 명령어를 포함하는
    컴퓨터 판독가능 저장 매체.
  12. 제11항에 있어서,
    상기 비디오 프레임을 대각선으로 분할하는 것은, 상기 비디오 프레임의 바닥 좌측 코너로부터 상기 비디오 프레임의 최상부 우측 코너까지 상기 비디오 프레임을 분할하는 것을 포함하는
    컴퓨터 판독가능 저장 매체.
  13. 제10항에 있어서,
    실행되는 경우, 상기 프로세싱 회로로 하여금 적어도 2개의 영역을 생성하게 하는 것이 상기 매크로블록의 병렬적 프로세싱을 최대화하기 위해 각각의 영역이 동일한 수의 매크로블록을 갖도록 상기 비디오 프레임을 분할하는 것을 포함하는 명령어를 포함하는
    컴퓨터 판독가능 저장 매체.
  14. 삭제
  15. 제10항에 있어서,
    실행되는 경우, 상기 프로세싱 회로로 하여금 웨이브 프론트 그룹을 생성하게 하는 것이 매크로블록 의존도에 기초하여 각각의 매크로블록을 웨이브 프론트 그룹에 할당하는 것을 포함하는 명령어를 포함하는
    컴퓨터 판독가능 저장 매체.
  16. 제10항에 있어서,
    실행되는 경우, 상기 프로세싱 회로로 하여금, 웨이브 프론트 그룹의 각각의 매크로블록을 병렬적으로 프로세싱하게 하는 명령어를 포함하는
    컴퓨터 판독가능 저장 매체.
  17. 제10항에 있어서,
    실행되는 경우, 상기 프로세싱 회로로 하여금, 각각의 웨이브 프론트 그룹을 매크로블록 의존도에 기초한 순서로 프로세싱하게 하는 명령어를 포함하고,
    웨이브 프론트 그룹의 매크로블록은 다른 웨이브 프론트 그룹의 매크로블록의 프로세싱 결과에 의존하는
    컴퓨터 판독가능 저장 매체.
  18. 컴퓨터로 구현되는 방법으로서,
    프로세싱 컴포넌트에 의해, 픽셀을 포함하는 비디오 프레임을 다수의 매크로블록으로 분할하는 단계 ―각각의 매크로블록은 다수의 매크로블록 경계 내에 다수의 픽셀을 포함함― 와,
    상기 매크로블록 경계를 따라 상기 비디오 프레임을 분할함으로써 복수의 매크로블록을 갖는 적어도 2개의 영역을 생성하는 단계와,
    각각의 영역의 매크로블록에 기초하여 웨이브 프론트 그룹을 생성하는 단계 ―각각의 웨이브 프론트 그룹은 병렬적으로 프로세싱할 하나 이상의 매크로블록을 포함함―
    를 포함하고,
    상기 웨이브 프론트 그룹을 생성하는 단계는, 상기 웨이브 프론트 그룹에 동일한 수의 매크로블록이 할당될 수 없는 경우, 각각의 매크로블록을 특정 웨이브 프론트 그룹에 할당하고 상기 웨이브 프론트 그룹 중 적어도 하나에 여분의 매크로블록을 할당하는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  19. 제18항에 있어서,
    상기 적어도 2개의 영역을 생성하는 단계는 상기 비디오 프레임을 상기 매크로블록 경계를 따라 대각선으로 분할하는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  20. 제19항에 있어서,
    상기 비디오 프레임을 분할하는 단계는 상기 비디오 프레임의 바닥 좌측 코너로부터 상기 비디오 프레임의 최상부 우측 코너까지 상기 비디오 프레임을 대각선으로 분할하는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  21. 제18항에 있어서,
    상기 적어도 2개의 영역을 생성하는 단계는 상기 매크로블록의 병렬적 프로세싱을 최대화하기 위해 각각의 영역이 동일한 수의 매크로블록을 갖도록 상기 비디오 프레임을 분할하는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  22. 삭제
  23. 제18항에 있어서,
    상기 웨이브 프론트 그룹을 생성하는 단계는 매크로블록 의존도에 기초하여 각각의 매크로블록을 웨이브 프론트 그룹에 할당하는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  24. 제18항에 있어서,
    웨이브 프론트 그룹의 각각의 매크로블록을 병렬적으로 프로세싱하는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  25. 제18항에 있어서,
    각각의 웨이브 프론트 그룹을 매크로블록 의존도에 기초한 순서로 프로세싱하는 단계를 포함하고,
    웨이브 프론트 그룹의 매크로블록은 다른 웨이브 프론트 그룹의 매크로블록의 프로세싱 결과에 의존하는
    컴퓨터로 구현되는 방법.
KR1020167033428A 2014-06-30 2015-05-18 비디오 인코더에 의해 비디오 프레임을 프로세싱하기 위한 기술 KR102215363B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/319,437 2014-06-30
US14/319,437 US10257529B2 (en) 2014-06-30 2014-06-30 Techniques for generating wave front groups for parallel processing a video frame by a video encoder
PCT/US2015/031296 WO2016003548A1 (en) 2014-06-30 2015-05-18 Techniques for processing a video frame by a video encoder

Publications (2)

Publication Number Publication Date
KR20170002512A KR20170002512A (ko) 2017-01-06
KR102215363B1 true KR102215363B1 (ko) 2021-02-10

Family

ID=54932009

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167033428A KR102215363B1 (ko) 2014-06-30 2015-05-18 비디오 인코더에 의해 비디오 프레임을 프로세싱하기 위한 기술

Country Status (6)

Country Link
US (1) US10257529B2 (ko)
EP (1) EP3162056A4 (ko)
JP (1) JP6412589B2 (ko)
KR (1) KR102215363B1 (ko)
CN (1) CN106464882B (ko)
WO (1) WO2016003548A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105744283B (zh) * 2016-02-05 2019-02-22 南京云岩信息科技有限公司 并行视频编码的三维波前并行处理方法
KR20200132761A (ko) 2019-05-15 2020-11-25 현대자동차주식회사 동영상 데이터의 병렬 부호화 및 복호화를 위한 방법 및 장치
WO2020231220A1 (ko) * 2019-05-15 2020-11-19 현대자동차주식회사 동영상 데이터의 병렬 부호화 및 복호화를 위한 방법 및 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130182774A1 (en) * 2012-01-18 2013-07-18 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019002B2 (en) * 2006-06-08 2011-09-13 Qualcomm Incorporated Parallel batch decoding of video blocks
US9077998B2 (en) * 2011-11-04 2015-07-07 Qualcomm Incorporated Padding of segments in coded slice NAL units
US9124895B2 (en) 2011-11-04 2015-09-01 Qualcomm Incorporated Video coding with network abstraction layer units that include multiple encoded picture partitions
KR102144881B1 (ko) 2012-06-29 2020-08-14 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 비디오 처리를 위한 송신 장치 및 방법
US20140003532A1 (en) 2012-06-29 2014-01-02 Qualcomm Incorporated Wavefront parallel processing for video coding
US9621905B2 (en) 2012-06-29 2017-04-11 Qualcomm Incorporated Tiles and wavefront parallel processing
JP6376719B2 (ja) * 2012-06-29 2018-08-22 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130182774A1 (en) * 2012-01-18 2013-07-18 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding

Also Published As

Publication number Publication date
CN106464882B (zh) 2020-03-03
US10257529B2 (en) 2019-04-09
EP3162056A4 (en) 2018-03-28
KR20170002512A (ko) 2017-01-06
JP2017520159A (ja) 2017-07-20
CN106464882A (zh) 2017-02-22
EP3162056A1 (en) 2017-05-03
WO2016003548A1 (en) 2016-01-07
US20150382021A1 (en) 2015-12-31
JP6412589B2 (ja) 2018-10-24

Similar Documents

Publication Publication Date Title
CN106797464B (zh) 用于视频编码和解码中的矢量编码的方法和装置
US9807410B2 (en) Late-stage mode conversions in pipelined video encoders
US9392292B2 (en) Parallel encoding of bypass binary symbols in CABAC encoder
KR102231975B1 (ko) 순방향 변환 행렬을 사용하여 비디오 인코더에 의해 순방향 변환을 수행하는 기술
CN105657430B (zh) 修改运动补偿信息的数据处理***和解码视频数据的方法
US10271050B2 (en) Methods, systems and devices including an encoder for image processing
US10277913B2 (en) Application processor for performing real time in-loop filtering, method thereof and system including the same
US20150139334A1 (en) Method for parallel processing of a video frame based on wave-front approach
TW201914302A (zh) 視訊編碼設備
CN109672890B (zh) 视频编码器件及编码器
KR102215363B1 (ko) 비디오 인코더에 의해 비디오 프레임을 프로세싱하기 위한 기술
US10841659B2 (en) Video encoding apparatus and video encoding system
US10757430B2 (en) Method of operating decoder using multiple channels to reduce memory usage and method of operating application processor including the decoder
US10609388B2 (en) Method and apparatus for encoding and decoding image
WO2023184206A1 (en) Enhanced presentation of tiles of residual sub-layers in low complexity enhancement video coding encoded bitstream
TWI691850B (zh) 用於進行即時迴路內濾波的應用處理器、用於該應用處理器之方法以及包括該應用處理器的系統
KR20230084025A (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