KR20150099571A - 확장성 대량 신속처리 비디오 인코더 - Google Patents
확장성 대량 신속처리 비디오 인코더 Download PDFInfo
- Publication number
- KR20150099571A KR20150099571A KR1020157019322A KR20157019322A KR20150099571A KR 20150099571 A KR20150099571 A KR 20150099571A KR 1020157019322 A KR1020157019322 A KR 1020157019322A KR 20157019322 A KR20157019322 A KR 20157019322A KR 20150099571 A KR20150099571 A KR 20150099571A
- Authority
- KR
- South Korea
- Prior art keywords
- encoder
- frame
- macroblock rows
- encoding
- predetermined number
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/172—Methods 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 picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
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
확장성 대량 신속처리 비디오 인코더가 본원에 개시된다. 복수의 전용, 하드웨어 비디오 인코더들은 스태거, 병렬 아키텍처에서 실행하고, 여기서 각 비디오 인코더가 비디오 프레임을 인코딩하고 스태거(stagger) 또는 지연이 프로그램가능한 수의 매크로블록 로우들(macroblock rows)이다. 예시적인 방법에서, 제 1 비디오 인코더가 프레임의 제 1 x 매크로블록 로우들 인코딩을 마친 후, 제 1 비디오 인코더는 다음 미처리 프레임의 매크로블록 로우 인코딩을 시작하기 위해 제 2 비디오 인코더에 시그널링한다. 비디오 인코더들 양자는 동기화된, 스태거 방식으로 동시에 인코딩을 계속한다. 프레임의 마지막에서, 제 1 비디오 인코더는 다른 미처리 프레임의 x 매크로블록 로우들 인코딩을 시작한다.
Description
관련 출원들에 대한 상호 참조
본 출원은 2012년 12월 19일에 출원된, 미국 출원 제13/720,546호의 혜택을 주장하며, 그 내용이 본원에 의해 본원에 참조로서 원용된다.
본 발명은 일반적으로 인코딩에 관한 것이고, 보다 구체적으로, 비디오 인코딩에 관한 것이다.
다양한 매체를 통한 비디오 데이터의 전송 및 수신은 항상 증가하고 있다. 통상적으로, 비디오 인코더들은 비디오 데이터를 압축하고 매체를 통해 전송되는 비디오 데이터량을 감소시키는데 사용된다. 무선 디스플레이들 또는 고 해상도 화상 회의와 같은 종래 비디오 인코딩 애플리케이션들은 단지 30 촬영률(fps; frames per second)에서 1080p 또는 60fps에서 1080p와 같은, 보통의 처리량을 요구한다.
대량 신속처리 비디오 인코딩은 고-성능 비디오 트랜스코딩 또는 클라우드 게이밍 애플리케이션들에 매우 중요하다. 보통, 비디오 트랜스코딩 애플리케이션들에서, 두 시간 영화는 수 분 내, 적어도 수십 분 내에 트랜스코딩되어야 한다. 클라우드 게이밍 애플리케이션들에서 게임 렌더링의 다수의 세션들은 그것들이 예를 들어, 인터넷 또는 인트라넷을 통해, 네트워크를 거쳐 전송되기 전에 인코딩되어야 한다. 고성능 비디오 트랜스코딩 및 클라우드 게이밍 애프리케이션들은 30fps에서 1080p 또는 60fps에서 1080p의 몇몇 배수들을 요구한다. 이는 대량 신속처리를 지원하기 위해 하드웨어 비디오 인코더들에 확장성 시도를 제공한다. 일부 구현들은 비디오 프레임의 인코딩의 부분이 3D 쉐이더에서 완전히 완료되는 하이브리드 접근법들로 재분류되어온 한편, (이는 중앙 처리 유닛 또는 그래픽 처리 유닛을 사용한다), 프레임의 나머지 인코딩은 고정 기능 하드웨어 상에서 완료된다.
확장성 대량 신속처리 비디오 인코더가 본원에 개시된다. 복수의 전용, 하드웨어 비디오 인코더들이 스태거, 병행 아키텍처에서 실행하고, 여기서 각 비디오 인코더는 비디오 프레임을 인코딩하고 스태거(stagger) 또는 지연은 프로그램가능한 수의 매크로블록 로우들(macroblock rows)이다. 예시적인 방법에서, 제 1 비디오 인코더가 프레임의 제 1 x 매크로블록 로우들 인코딩을 마친 후, 제 1 비디오 인코더는 다음 미처리 프레임의 매크로블록 로우 인코딩을 시작하기 위해 제 2 비디오 인코더에 시그널링한다. 비디오 인코더들 양자는 동기화된, 스태거 방식으로 동시에 인코딩을 계속한다. 프레임의 마지막에서, 제 1 비디오 인코더는 다른 미처리 프레임의 x 매크로블록 로우들 인코딩을 시작한다.
다음 첨부 도면들과 함께 예로서 주어지는, 다음 설명으로부터 보다 상세한 이해를 가질 수 있다:
도 1은 몇몇 실시예들에 따른, 대량 신속처리 비디오 인코더들을 사용하는 예시적인 시스템 아키텍처이고;
도 2는 몇몇 실시예들에 따른, 예시적인 대량 신속처리 비디오 인코더이고;
도 3은 프레임들 및 매크로블록 로우들의 예시적인 다이어그램이고;
도 4는 몇몇 실시예들에 따른, 대량 신속처리 비디오 인코더들을 사용하여 비디오 데이터를 인코딩하기 위한 예시적인 흐름도이고;
도 5는 몇몇 실시예들에 따른, 대량 신속처리 비디오 인코더들을 사용하여 비디오 데이터를 인코딩하기 위한 다른 예시적인 흐름도이며;
도 6은 몇몇 실시예들에 따른, 대량 신속처리 비디오 인코더들의 실시예와 사용하기 위한 예시적인 소스 또는 목적지 디바이스의 블록도이다.
도 1은 몇몇 실시예들에 따른, 대량 신속처리 비디오 인코더들을 사용하는 예시적인 시스템 아키텍처이고;
도 2는 몇몇 실시예들에 따른, 예시적인 대량 신속처리 비디오 인코더이고;
도 3은 프레임들 및 매크로블록 로우들의 예시적인 다이어그램이고;
도 4는 몇몇 실시예들에 따른, 대량 신속처리 비디오 인코더들을 사용하여 비디오 데이터를 인코딩하기 위한 예시적인 흐름도이고;
도 5는 몇몇 실시예들에 따른, 대량 신속처리 비디오 인코더들을 사용하여 비디오 데이터를 인코딩하기 위한 다른 예시적인 흐름도이며;
도 6은 몇몇 실시예들에 따른, 대량 신속처리 비디오 인코더들의 실시예와 사용하기 위한 예시적인 소스 또는 목적지 디바이스의 블록도이다.
도 1은 몇몇 실시예들에 따른, 인코딩된 비디오 데이터를 네트워크(105)를 통해 소스 측(110)으로부터 목적지 측(115)으로 송신하기 위해 아래 본원에 설명되는 바와 같은 대량 신속처리 비디오 인코더들을 사용하는 예시적인 시스템(100)이다. 소스 측(110)은 목적지 측(115)에 전송될 수 있는 비디오 데이터를 저장하고, 캡처하거나 또는 생성할 수 있는 임의의 디바이스를 포함한다. 디바이스는 이들에 제한되지는 않으나, 소스 디바이스(120), 모바일 폰(122), 온라인 게이밍 디바이스(124), 카메라(126) 또는 멀티미디어 서버(128)를 포함할 수 있다. 이들 디바이스들로부터의 비디오 데이터는 인코더(들)(130)에 공급되며, 인코더는 결과적으로 아래 본원에 설명되는 바와 같이 비디오 데이터를 인코딩한다. 인코딩된 비디오 데이터는 디코더(들)(140)에 의해 처리되고, 디코더는 결과적으로 디코딩된 비디오 데이터를 목적지 디바이스들에 송신하며, 목적지 디바이스들은 이들에 제한되지 않으나, 목적지 디바이스(142), 온라인 게이밍 디바이스(144), 및 디스플레이 모니터(146)를 포함할 수 있다. 인코더(들)(130)은 별개의 디바이스(들)로 도시되지만, 인코더(들)은 외부 디바이스로서 구현되거나 또는 비디오 데이터를 저장하고, 캡처하고, 생성하거나 또는 전송하는데 사용될 수 있는 임의의 디바이스에 통합될 수 있다.
도 2는 몇몇 실시예들에 따른, 예시적인 대량 신속처리 비디오 인코더(200)의 블록도이다. 대량 신속처리 비디오 인코더(200)는 비디오 데이터를 수신하고 인코딩된 비디오 데이터를 출력하기 위한 복수의 비디오 인코더들을 포함할 수 있다. 복수의 비디오 인코더들 각각은 완전한, 고정 기능, 하드웨어 비디오 인코더이다. 단지 예시를 위해, 대량 신속처리 비디오 인코더(200)는 비디오 인코더 1(205), 비디오 인코더 2(210), 비디오 인코더 3(215) 내지 비디오 인코더 N(220)을 포함할 수 있고, 여기서 비디오 인코더 1(205)은 인코더 2(210)에 연결되고, 비디오 인코더 2(210)는 비디오 인코더 3(215)에 연결되며, 비디오 인코더 1(205)에 연결되는 비디오 인코더 N(220)까지 이와 같다. 비디오 인코더 1(205), 비디오 인코더 2(210), 비디오 인코더 3(215) 내지 비디오 인코더 N(220) 각각은 소스 비디오 데이터(225)를 수신하고 인코딩된 비디오 데이터(230)를 출력한다. 비디오 복수의 비디오 인코더들 각각은 본원에 설명되는 바와 같이 참조 데이터를 저장하고 판독하기 위한 공통 메모리에 더 연결된다. 예를 들어, 비디오 인코더 1(205), 비디오 인코더 2(210), 비디오 인코더 3(215) 내지 비디오 인코더 N(220)은 메모리(235)에 연결된다.
본원에 설명되는 바와 같이, 대량 신속처리 비디오 인코더는 2 내지 N 비디오 인코더 인스턴스들 또는 회로들을 포함할 수 있다. 각 비디오 인코더 인스턴스는 비디오 프레임을 인코딩하고, 여기서 비디오 데이터는 다수의 비디오 프레임들을 포함한다. 도 3은 프레임 1(300) 및 프레임 2(305)의 예시적인 다이어그램이다. 프레임들(300 및 305) 각각은 매크로블록 로우들 1...m을 포함하고, 여기서 각 매크로블록 로우는 예를 들어, 사용되는 비디오 인코딩 표준 또는 기법에 따라, 8 내지 16 래스터 라인들(raster lines)을 가질 수 있다.
표준 인코딩 기법들에서, 현재 프레임을 인코딩할 때 이전 프레임 의존성이 존재한다. 예를 들어, 현재 프레임을 인코딩할 때, 비디오 인코더는 이전 비디오 프레임에 의해 생성되는 참조를 사용한다. 비디오 인코딩 처리량을 최대화하기 위해, 모든 비디오 인코더들은 다른 비디오 인코더들이 비디오 프레임 인코딩을 완전히 마치는 것을 기다리지 않고 동시에 작동해야 한다. 이는 프로그램가능한 또는 미리 결정된 수의 매크로블록 로우들을 기다리는 각 비디오 인코더를 가짐으로써 달성된다. 실시예에서, 미리 결정된 수의 매크로블록 로우들은 프레임의 매크로블록 로우들의 전체 수보다 적다. 다른 실시예에서, 미리 결정된 수의 매크로블록 로우들은 프레임의 매크로블록 로우들의 전체 수에 관해 작다. 다른 실시예에서, 미리 결정된 수의 매크로블록 로우들은 1-10 매크로블록 로우들의 순서에 따를 수 있다. 이 수는 미리 결정될 수 있으나 이전 프레임을 인코딩하는 비디오 인코더에 의해 시그널링될 수 있다. 이 방법은 이전 프레임(N-1)을 인코딩하는 비디오 인코더가 사용해야 하는 현재 프레임(프레임 N)을 인코딩하는 비디오 인코더를 위한 참조 생성을 마친다는 것을 보장한다. 이 방식으로, 모든 비디오 인코더들은 몇몇 매크로블록 로우들에 의해 스태거되나 최대 처리량을 위해 동시에 작동한다.
도 4는 몇몇 실시예들에 따른, 대량 신속처리 비디오 인코더을 사용하는 비디오 데이터를 위한 예시적인 상위 레벨 흐름도(400)이다. 비디오 인코더는 프레임의 제 1 x 매크로블록 로우들을 인코딩한다(405). 비디오 인코더는 제 1 x 매크로블록 로우들이 완료된 후 다음 미처리 프레임의 매크로블록 로우 인코딩을 시작하기 위해 다른 비디오 인코더에 시그널링한다(410). 양(또는 모든) 비디오 인코더들은 동기화된 스태거 방식으로 동시에(415) 인코딩을 계속한다. 프레임이 완료되면, 비디오 인코더는 다른 미처리 프레임의 x 매크로블록 로우들 인코딩을 시작한다(420). 그렇지 않으면, 비디오 인코더들은 프레임 인코딩을 계속한다(425).
도 5는 몇몇 실시예들에 따른, 대량 신속처리 비디오 인코더을 사용하고 또한 도 2 및 도 3을 참조하여 설명되는 비디오 데이터를 인코딩하기 위한 예시적인 흐름도(500)이다. 단지 예시를 위해, 흐름도(500)는 두 개의 비디오 인코더들, 인코더 1(205) 및 인코더 2(210)를 참조하여 설명되고, 매크로블록 로우들의 수는 5 매크로블록 로우들인 것을 가정한다. 이는 매크로블록 로우들(250)로서 도 2에 도시된다.
먼저, 인코더 1(205)은 소스 비디오 데이터(225)로부터 프레임 1(300)을 수신하고 프레임 1(300) 인코딩을 시작한다(505). 인코더 2(210)는 인코더 1(205)이 프로그램되거나 또는 미리 결정된 수의 매크로블록 로우들 예를 들어, 매크로블록 로우들(350) 인코딩을 마칠 때까지 대기한다. 이는 초기 지연을 구성한다. 인코더 1(205)이 매크로블록 로우들(350) 인코딩을 완료하면, 인코더 1(205)은 매크로블록 로우들(350)과 연관된 참조 데이터를 생성하고 저장장치, 예를 들어, 메모리(235)에 참조 데이터를 저장한다(510). 인코더 1(205)은 프레임 2(305)를 위한 매크로블록 로우 1 인코딩을 시작하기 위해 인코더 2(210)에 시그널링한다(515).
인코더 2(210)는 프레임 2(305)의 매크로블록 로우 1 인코딩을 시작하고 동시에, 인코더 1(205)은 프레임 1(300)의 다음 매크로블록 로우, 즉 매크로블록 로우 6 인코딩을 계속한다(520). 인코더 1(205)이 매크로블록 로우 6 인코딩을 마칠 때, 인코더 1(205)은 프레임 2(305)의 매크로블록 로우 2 인코딩을 시작하기 위해 인코더 2(210)에 시그널링한다(525). 인코더 1(205) 및 인코더 2(210), (즉, 인코더 1(205)로부터의 참조 데이터를 필요로 하는 인코더 2(210)) 간 의존 관계로 인해, 인코더 2(210)는 항상 미리 결정된 수의 매크로블록 로우들에 의해 그러나 인코더 1(205)과 함께 보조를 맞추어 지체한다. 이는 결과적으로 동기화된, 스태거 방식으로 동시에 작동하는 인코더 1(205) 및 인코더 2(210)를 야기한다. 예시를 위해 프레임들이 1920x1088 해상도를 갖는 것과 각 매크로블록이 16x16 픽셀들을 갖는 것을 가정하면, 인코더 1(250)이 프레임 1(300)의 매크로블록 로우 67 인코딩을 마칠 때, 인코더 1(205)은 프레임 2(305)의 매크로블록 로우 63 인코딩을 위해 인코더 2(210)에 시그널링한다.
인코더 1(205)이 프레임 1(305)의 매크로블록 로우 68 인코딩을 마치면, 인코더 1(205)은 인코더 1(205)이 프레임 1(300)을 위한 모든 참조들 생성을 완료한 이후 인코더 2(210)가 프레임 2(305)의 매크로블록 로우들 64-68을 인코딩할 수 있도록 인코더 2(210)에 시그널링한다(530). 인코더 1(205)은 프레임 1(300)의 매크로블록 로우 68이 완료되면 프레임 3 인코딩을 시작한다(535). 그러나, 인코더 2(210)가 다음 프레임, 즉, 프레임 4 인코딩을 시작할 수 있기 전, 인코더 2(210)는 인코더 1(205)이 프레임 3의 먼저 프로그램되거나 미리 결정된 수의 매크로블록 로우들 인코딩을 마치기를 기다려야 한다.
이 방법은 최대 처리량을 위해 다수의 비디오 인코더들로 확장할 수 있다. 초기 지연 후, 예를 들어, N 비디오 인코더들이 존재하면 장기 처리량은 N이다. 초기 지연은 각 비디오 인코더에 대해 고정된 스태거 또는 지연량을 유도한다. 예를 들어, N번째 비디오 인코더에 대해 미리 결정되거나 프로그램된 수의 매크로블록 로우들로서 x를 고려해보면, 스태거 또는 지연은 Nx일 것이다.
도 6은 몇몇 실시예들에 따른, 본원에 설명되는 대량 신속처리 비디오 인코더들이 구현될 수 있는 디바이스(600)의 블록도이다. 디바이스(600)는 예를 들어, 컴퓨터, 게이밍 디바이스, 핸드헬드 디바이스, 셋-탑 박스, 텔레비전, 모바일 폰, 또는 태블릿 컴퓨터를 포함할 수 있다. 디바이스(100)는 프로세서(602), 메모리(604), 저장장치(606), 하나 이상의 입력 디바이스들(608), 및 하나 이상의 출력 디바이스들(610)을 포함한다. 디바이스(600)는 또한 입력 드라이버(612) 및 출력 드라이버(614)를 선택적으로 포함할 수 있다. 디바이스(100)가 도 6에 도시되지 않은 추가 구성요소들을 포함할 수 있다는 것이 이해된다.
프로세서(602)는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 동일한 다이 상에 위치되는 CPU 및 GPU, 또는 하나 이상의 프로세서 코어들을 포함할 수 있고, 여기서 각 프로세서 코어는 CPU 또는 GPU일 수 있다. 메모리(604)는 프로세서(602)로서 동일한 다이 상에 위치될 수 있거나, 프로세서(602)로부터 떨어져 위치될 수 있다. 메모리(604)는 휘발성 또는 비-휘발성 메모리, 예를 들어, 랜덤 액세스 메모리(RAM), 동적 RAM, 또는 캐시를 포함할 수 있다. 몇몇 실시예들에서, 대량 신속처리 비디오 인코더들은 프로세서(602)에서 구현된다.
저장장치(606)는 고정 또는 착탈가능한 저장장치, 예를 들어, 하드 디스크 드라이브, 고체 상태 드라이브, 광 디스크, 또는 플래시 드라이브를 포함할 수 있다. 입력 디바이스들(608)은 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 생체 측정 스캐너, 또는 네트워크 연결(예컨대, 무선 IEEE 802 신호들의 전송 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)을 포함할 수 있다. 출력 디바이스들(610)은 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 광들, 안테나, 또는 네트워크 연결(예컨대, 무선 IEEE 802 신호들의 전송 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)을 포함할 수 있다.
입력 드라이버(612)는 프로세서(602) 및 입력 디바이스들(608)과 통신하고, 프로세서(602)가 입력 디바이스들(608)로부터 입력을 수신하는 것을 허용한다. 출력 드라이버(614)는 프로세서(602) 및 출력 디바이스들(610)과 통신하고, 프로세서(602)가 출력 디바이스들(610)에 출력을 송신하는 것을 허용한다. 입력 드라이버(612) 및 출력 드라이버(614)가 선택적 구성요소들이라는 것, 및 입력 드라이버(612) 및 출력 드라이버(614)가 존재하지 않으면 디바이스(600)가 동일한 방식으로 작동할 것이라는 것이 주의된다.
본원에 설명된 비디오 인코더들은 이들에 제한되지는 않으나, 동영상을 전문으로 연구하는 전문가 그룹(MPEG; Moving Picture Experts Group) MPEG-1, MPEG-2, MPEG-4, MPEG-4 파트 10, Windows®*.avi 포맷, Quicktime®*.mov 포맷, H.264 인코딩 기법들, 고효율 비디오 코딩(HEVC; High Efficiency Video Coding) 인코딩 기법들 및 스트리밍 비디오 포맷들을 포함하는 다양한 인코딩 기법들을 사용할 수 있다.
일반적으로, 몇몇 실시예들에 따라, 인코딩하기 위한 방법은 인코더를 사용하여 프레임을 인코딩하는 단계 및 인코더가 프레임의 미리 결정된 수의 매크로블록 로우들 인코딩을 완료한 후 다른 인코더를 사용하여 다음 프레임을 인코딩하는 단계를 포함한다. 인코더 및 다른 인코더는 동기화된, 스태거 방식으로 동시에 작동한다. 몇몇 실시예들에서, 미리 결정된 수의 매크로블록 로우들은 프레임의 매크로블록 로우들의 수보다 적다. 몇몇 실시예들에서, 미리 결정된 수의 매크로블록 로우들은 1-10 매크로블록 로우들의 순서에 따른다.
많은 변형들이 본원의 개시 내용에 기초하여 가능하다는 것이 이해되어야 한다. 피처들 및 요소들이 구체적인 조합들로 위에서 설명되었지만, 각 피처 또는 요소는 다른 피처들 및 요소들 없이 단독으로 또는 다른 피처들 및 요소들을 갖거나 없이 다양한 조합들로 사용될 수 있다.
제공된 방법들은, 적용가능한 범위까지, 범용 컴퓨터, 프로세서, 또는 프로세서 코어로 구현될 수 있다. 적합한 프로세서들은, 예로서, 범용 프로세서, 전용 프로세서, 종래 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서들, DSP 코어와 연관되는 하나 이상의 마이크로프로세서들, 컨트롤러, 마이크로컨트롤러, 애플리케이션 특정 집적 회로들(ASICs), 필드 프로그램가능 게이트 어레이들(FGPAs) 회로들, 임의의 다른 유형의 집적 회로(IC), 및/또는 상태 기계를 포함한다. 그러한 프로세서들은 처리된 하드웨어 설명 언어(HDL) 명령들 및 넷리스트들을 포함하는 다른 중간 데이터(컴퓨터 판독가능한 미디어 상에 저장될 수 있는 명령들과 같은)의 결과들을 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 그러한 프로세싱의 결과들은 그 후 실시예들의 측면들을 구현하는 프로세서를 제조하기 위한 반도체 제조 프로세스에서 사용되는 마스크워크들(maskworks)일 수 있다.
본원에 제공된 방법들 또는 흐름도들은, 적용가능한 범위까지, 범용 컴퓨터 또는 프로세서에 의한 실행을 위한 컴퓨터-판독가능 저장 매체에 통합되는 컴퓨터 프로그램, 소프트웨어, 또는 펌웨어로 구현될 수 있다. 컴퓨터-판독가능 저장 매체들의 예들은 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스들, 내부 하드 디스크들 및 착탈가능한 디스크들과 같은 자기 매체, 자기-광 매체, 및 CD-ROM 디스크들, 및 디지털 다목적 디스크들(DVDs)과 같은 광 매체를 포함한다.
Claims (30)
- 제 1 인코더를 사용하여 프레임을 인코딩하는 단계; 및
상기 제 1 인코더가 상기 프레임의 미리 결정된 수의 매크로블록 로우들(macroblock rows) 인코딩을 완료한 후 제 2 인코더를 사용하여 다음 프레임을 인코딩하는 단계를 포함하고, 상기 제 1 인코더 및 상기 제 2 인코더는 동기화된, 스태거(stagger) 방식으로 동시에 작동하는, 인코딩을 하기 위한 방법. - 청구항 1에 있어서,
상기 미리 결정된 수의 매크로블록 로우들은 상기 프레임의 매크로블록 로우들의 수보다 적은, 방법. - 청구항 1에 있어서,
상기 미리 결정된 수의 매크로블록 로우들은 1-10 매크로블록 로우들의 순서에 따르는, 방법. - 청구항 1에 있어서,
상기 제 1 인코더는 상기 다음 프레임 인코딩을 시작할 때 상기 제 2 인코더에 시그널링하는, 방법. - 청구항 1에 있어서,
상기 인코더는 다른 인코더를 위한 참조 데이터를 생성하고 상기 다른 인코더에 의해 사용하기 위한 메모리에 상기 참조 데이터를 저장하는, 방법. - 제 1 인코더를 사용하여 프레임을 인코딩하는 단계; 및
제 2 인코더를 사용하여 다음 프레임을 인코딩하는 단계를 포함하고, 상기 제 1 인코더 및 상기 제 2 인코더는 동기화된, 스태거 방식으로 동시에 작동하고, 상기 스태거는 미리 결정된 수의 매크로블록 로우들인, 인코딩을 하기 위한 방법. - 청구항 6에 있어서,
상기 미리 결정된 수의 매크로블록 로우들은 상기 프레임의 매크로블록 로우들의 수보다 적은, 방법. - 청구항 6에 있어서,
상기 미리 결정된 수의 매크로블록 로우들은 1-10 매크로블록 로우들의 순서에 따르는, 방법. - 청구항 6에 있어서,
상기 제 1 인코더는 상기 다음 프레임 인코딩을 시작할 때 상기 제 2 인코더에 시그널링하는, 방법. - 청구항 6에 있어서,
상기 제 1 인코더는 상기 제 2 인코더를 위한 참조 데이터를 생성하고 상기 제 2 인코더에 의해 사용하기 위한 메모리에 상기 참조 데이터를 저장하는, 방법. - 메모리;
적어도 두 개의 인코더들;
프레임을 인코딩하도록 구성되는 상기 적어도 두 개의 인코더들 중 하나의 인코더; 및
상기 하나의 인코더가 상기 프레임의 미리 결정된 수의 매크로블록 로우들 인코딩을 완료한 후 다음 프레임을 인코딩하도록 구성되는 상기 적어도 두 개의 인코더들 중 다른 인코더를 포함하고, 상기 하나의 인코더 및 상기 다른 인코더는 동기화된, 스태거 방식으로 동시에 작동하는, 디바이스. - 청구항 11에 있어서,
상기 미리 결정된 수의 매크로블록 로우들은 상기 프레임의 매크로블록 로우들의 수보다 적은, 디바이스. - 청구항 11에 있어서,
상기 미리 결정된 수의 매크로블록 로우들은 1-10 매크로블록 로우들의 순서에 따르는, 디바이스. - 청구항 11에 있어서,
상기 하나의 인코더는 상기 다음 프레임 인코딩을 시작할 때 상기 다른 인코더에 시그널링하는, 디바이스. - 청구항 11에 있어서,
상기 하나의 인코더는 상기 다른 인코더를 위한 참조 데이터를 생성하고 상기 다른 인코더에 의해 사용하기 위한 상기 메모리에 상기 참조 데이터를 저장하는, 디바이스. - 메모리;
복수의 인코더들;
프레임을 인코딩하도록 구성되는 상기 복수의 인코더들 중의 인코더; 및
다음 프레임을 인코딩하도록 구성되는 상기 복수의 인코더들 중 다른 인코더를 포함하고, 상기 인코더 및 상기 다른 인코더는 동기화된, 스태거 방식으로 동시에 작동하고, 상기 스태거는 미리 결정된 수의 매크로블록 로우들인, 디바이스. - 청구항 16에 있어서,
상기 미리 결정된 수의 매크로블록 로우들은 상기 프레임의 매크로블록 로우들의 수보다 적은, 디바이스. - 청구항 16에 있어서,
상기 미리 결정된 수의 매크로블록 로우들은 1-10 매크로블록 로우들의 순서에 따르는, 디바이스. - 청구항 16에 있어서,
상기 인코더는 상기 다음 프레임 인코딩을 시작할 때 상기 다른 인코더에 시그널링하는, 방법. - 청구항 16에 있어서,
상기 인코더는 상기 다른 인코더를 위한 참조 데이터를 생성하고 상기 다른 인코더에 의해 사용하기 위한 상기 메모리에 상기 참조 데이터를 저장하는, 방법. - 소스 디바이스(source device)로부터 목적지 디바이스(destination device)로 데이터를 송신하기 위한 시스템으로서, 상기 시스템은:
메모리;
적어도 두 개의 인코더들;
상기 소스 디바이스로부터 수신되는 프레임을 인코딩하도록 구성되는 상기 적어도 두 개의 인코더들 중 하나의 인코더; 및
상기 하나의 인코더가 상기 프레임의 미리 결정된 수의 매크로블록 로우들 인코딩을 완료한 후 상기 소스 디바이스로부터 수신되는 다음 프레임을 인코딩하도록 구성되는 상기 적어도 두 개의 인코더들 중 다른 인코더를 포함하고, 상기 하나의 인코더 및 상기 다른 인코더는 동기화된, 스태거 방식으로 동시에 작동하는, 시스템. - 청구항 21에 있어서,
상기 미리 결정된 수의 매크로블록 로우들은 상기 프레임의 매크로블록 로우들의 수보다 적은, 시스템. - 청구항 21에 있어서,
상기 미리 결정된 수의 매크로블록 로우들은 1-10 매크로블록 로우들의 순서에 따르는, 시스템. - 청구항 21에 있어서,
상기 하나의 인코더는 상기 다음 프레임 인코딩을 시작할 때 상기 다른 인코더에 시그널링하는, 시스템. - 청구항 21에 있어서,
상기 하나의 인코더는 상기 다른 인코더를 위한 참조 데이터를 생성하고 상기 다른 인코더에 의해 사용하기 위한 상기 메모리에 상기 참조 데이터를 저장하는, 시스템. - 소스 디바이스로부터 목적지 디바이스로 데이터를 송신하기 위한 시스템으로서, 상기 시스템은:
메모리;
복수의 인코더들;
상기 소스 디바이스로부터 수신되는 프레임을 인코딩하도록 구성되는 상기 복수의 인코더들 중의 인코더; 및
상기 소스 디바이스로부터 수신되는 다음 프레임을 인코딩하도록 구성되는 상기 복수의 인코더들 중 다른 인코더를 포함하고, 상기 인코더 및 상기 다른 인코더는 동기화된, 스태거 방식으로 동시에 작동하고, 상기 스태거는 미리 결정된 수의 매크로블록 로우들인, 시스템. - 청구항 26에 있어서,
상기 미리 결정된 수의 매크로블록 로우들은 상기 프레임의 매크로블록 로우들의 수보다 적은, 시스템. - 청구항 26에 있어서,
상기 미리 결정된 수의 매크로블록 로우들은 1-10 매크로블록 로우들의 순서에 따르는, 시스템. - 청구항 26에 있어서,
상기 인코더는 상기 다음 프레임 인코딩을 시작할 때 상기 다른 인코더에 시그널링하는, 시스템. - 청구항 26에 있어서,
상기 인코더는 상기 다른 인코더를 위한 참조 데이터를 생성하고 상기 다른 인코더에 의해 사용하기 위한 상기 메모리에 상기 참조 데이터를 저장하는, 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/720,546 US20140169481A1 (en) | 2012-12-19 | 2012-12-19 | Scalable high throughput video encoder |
US13/720,546 | 2012-12-19 | ||
PCT/CA2013/050979 WO2014094158A1 (en) | 2012-12-19 | 2013-12-17 | Scalable high throughput video encoder |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150099571A true KR20150099571A (ko) | 2015-08-31 |
Family
ID=50930870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157019322A KR20150099571A (ko) | 2012-12-19 | 2013-12-17 | 확장성 대량 신속처리 비디오 인코더 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20140169481A1 (ko) |
EP (1) | EP2936810A4 (ko) |
JP (1) | JP2016506662A (ko) |
KR (1) | KR20150099571A (ko) |
CN (1) | CN104904215A (ko) |
WO (1) | WO2014094158A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102273670B1 (ko) * | 2014-11-28 | 2021-07-05 | 삼성전자주식회사 | 움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법 |
US11615727B2 (en) * | 2021-04-12 | 2023-03-28 | Apple Inc. | Preemptive refresh for reduced display judder |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060114995A1 (en) * | 2004-12-01 | 2006-06-01 | Joshua Robey | Method and system for high speed video encoding using parallel encoders |
US7920633B2 (en) * | 2005-04-22 | 2011-04-05 | Broadcom Corporation | Method and system for parallel processing video data |
JP4182442B2 (ja) * | 2006-04-27 | 2008-11-19 | ソニー株式会社 | 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体 |
US20080152014A1 (en) * | 2006-12-21 | 2008-06-26 | On Demand Microelectronics | Method and apparatus for encoding and decoding of video streams |
US8369411B2 (en) * | 2007-03-29 | 2013-02-05 | James Au | Intra-macroblock video processing |
CN101938643A (zh) * | 2009-07-03 | 2011-01-05 | 哈尔滨工业大学深圳研究生院 | 视频压缩帧内预测16×16模式硬件并行实现结构 |
US8379718B2 (en) * | 2009-09-02 | 2013-02-19 | Sony Computer Entertainment Inc. | Parallel digital picture encoding |
CA2722993A1 (fr) * | 2010-12-01 | 2012-06-01 | Ecole De Technologie Superieure | Systeme d'ecodage video parallele multitrames et multitranches avec encodage simultane de trames predites |
US20120263225A1 (en) * | 2011-04-15 | 2012-10-18 | Media Excel Korea Co. Ltd. | Apparatus and method for encoding moving picture |
-
2012
- 2012-12-19 US US13/720,546 patent/US20140169481A1/en not_active Abandoned
-
2013
- 2013-12-17 WO PCT/CA2013/050979 patent/WO2014094158A1/en active Application Filing
- 2013-12-17 KR KR1020157019322A patent/KR20150099571A/ko not_active Application Discontinuation
- 2013-12-17 CN CN201380069767.3A patent/CN104904215A/zh active Pending
- 2013-12-17 JP JP2015548125A patent/JP2016506662A/ja active Pending
- 2013-12-17 EP EP13864147.7A patent/EP2936810A4/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20140169481A1 (en) | 2014-06-19 |
EP2936810A4 (en) | 2016-06-29 |
EP2936810A1 (en) | 2015-10-28 |
JP2016506662A (ja) | 2016-03-03 |
CN104904215A (zh) | 2015-09-09 |
WO2014094158A1 (en) | 2014-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10349069B2 (en) | Software hardware hybrid video encoder | |
JP6120390B2 (ja) | 次世代動画用コンテンツに適応的な特性補償済み予測 | |
US8711933B2 (en) | Random access point (RAP) formation using intra refreshing technique in video coding | |
JP2022133427A (ja) | マルチラインフレーム内予測のための方法、装置、及びコンピュータプログラム | |
JP7130851B2 (ja) | ビデオ符号化において追加中間候補を有するマージモードの方法及び装置 | |
US10250907B2 (en) | Intra-frame pixel prediction method, encoding method and decoding method, and device thereof | |
CN110784711B (zh) | 生成用于视频序列编码或解码的合并候选列表的方法、装置 | |
JP2023126928A (ja) | マルチラインイントラ予測に対するmpmリスト生成を実現するための方法、装置、及びコンピュータプログラム | |
JP2009207136A (ja) | 複数のビデオストリームを処理する方法、ビデオストリームの符号化システムおよびビデオストリームの復号化システム | |
CN112292859B (zh) | 一种用于解码至少一个视频流的方法和装置 | |
US10623735B2 (en) | Method and system for layer based view optimization encoding of 360-degree video | |
CN118118667A (zh) | 视频编码、解码的方法和计算机设备 | |
CN112400320B (zh) | 对已编码视频序列进行解码的方法、装置和可读介质 | |
EP2599314A1 (en) | Method and system for encoding video frames using a plurality of processors | |
US20140354771A1 (en) | Efficient motion estimation for 3d stereo video encoding | |
JP2023120367A (ja) | イントラインター予測を制御する方法、エンコーダ、デコーダ、及びプログラム | |
CN112236997B (zh) | 对视频序列进行解码、编码的方法、装置及存储介质 | |
US10523958B1 (en) | Parallel compression of image data in a compression device | |
CN113508582B (zh) | 视频编码、解码的方法、装置及可读介质 | |
JP7326436B2 (ja) | イントラ予測におけるイントラモード選択 | |
CN113728628B (zh) | 合并候选搜索方法和设备 | |
KR20150099571A (ko) | 확장성 대량 신속처리 비디오 인코더 | |
CN110636296B (zh) | 视频解码方法、装置、计算机设备以及存储介质 | |
US20130287100A1 (en) | Mechanism for facilitating cost-efficient and low-latency encoding of video streams | |
US20130195198A1 (en) | Remote protocol |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |