KR101410168B1 - 다중 포맷 비디오 프로세싱을 위한 재구성 가능 버퍼 할당 - Google Patents

다중 포맷 비디오 프로세싱을 위한 재구성 가능 버퍼 할당 Download PDF

Info

Publication number
KR101410168B1
KR101410168B1 KR1020120065413A KR20120065413A KR101410168B1 KR 101410168 B1 KR101410168 B1 KR 101410168B1 KR 1020120065413 A KR1020120065413 A KR 1020120065413A KR 20120065413 A KR20120065413 A KR 20120065413A KR 101410168 B1 KR101410168 B1 KR 101410168B1
Authority
KR
South Korea
Prior art keywords
buffer
read stream
shared buffer
read
memory
Prior art date
Application number
KR1020120065413A
Other languages
English (en)
Other versions
KR20130001134A (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 KR20130001134A publication Critical patent/KR20130001134A/ko
Application granted granted Critical
Publication of KR101410168B1 publication Critical patent/KR101410168B1/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/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • 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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Input (AREA)

Abstract

본 발명의 시스템 및 방법은 서로 다른 비디오 코덱 포맷들과 연관된 적어도 2 개의 비디오 판독 스트림들에 대한 프로세싱을 지원하도록 공유형 버퍼를 동적으로 구성한다. 상기 방법은 일 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 일 버퍼 기록 어드레스를 결정하는 단계와, 다른 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 다른 기록 어드레스를 결정하는 단계를 포함한다.

Description

다중 포맷 비디오 프로세싱을 위한 재구성 가능 버퍼 할당{CONFIGURABLE BUFFER ALLOCATION FOR MULTI-FORMAT VIDEO PROCESSING}
본 발명의 교시 사항은 서로 다른 비디오 코덱 포맷들과 연관된 적어도 2 개의 비디오 판독 스트림들에 대한 프로세싱을 지원하도록 공유형 버퍼(shared buffer)를 동적으로 구성하는 방법, 장치 및 시스템에 관한 것이다.
다양하고 상이한 비디오 코덱들이 비디오 이미지를 압축하기 위해서 사용될 수 있다. 일반적으로, 비디오 코덱들은 이미지 데이터를 압축 또는 압축 해제할 때에 메모리 자원들을 자주 사용한다. 가령, AVC(advanced video coding) 코덱 또는 SMPTE(Society of Motion Picture and Television Engineers) 코덱과 같은 상이한 비디오 코덱들은 비트스트림 요청, 비트-플레인 서피스(bit-plane surface) 요청, 바이트 스트림 디코더(BSD) 로우스토어(rowstore) 요청, 픽셀 데이터 요청 등과 같은 상이하고/하거나 고유한 타입의 메모리 판독 또는 기록 요청을 종종 갖는다. 통상적인 비디오 디코더 설계들은 특정 타입의 비디오 코덱에 의해서 생성된 비디오 코덱 판독 스트림에 대한 처리를 지원하는 다수의 고정된 사이즈의 버퍼 메모리들을 사용할 수 있다. 가령, AVC 디코더 설계는 판독 스트림 프로세싱을 위해서 3 개의 개별적인 유사한 사이즈의 로우스토어(rowstore) 버퍼들을 필요로 하는데 반해서, SMPTE VC-1 디코더 설계는 하나의 중간 사이즈의 로우스토어 버퍼, 하나의 큰 사이즈의 DMV(differential motion vector) 버퍼 및 하나의 작은 사이즈의 비트-플레인 버퍼를 필요로 할 수 있다.
통상적인 비디오 디코더 설계는 통상적으로 판독 스트림마다 대형 내부 캐시 및/또는 별도의 사전 규정된 고정된 크기의 버퍼들을 사용한다. 그러나, 이러한 방식은 면적을 매우 많이 사용하며 전력 소모가 클 수 있다. 또한, 대부분의 통상적인 비디오 하드웨어 가속 디코더 설계들은 임시 데이터를 저장하기 위한 대형 내부 캐시를 포함할 만큼 충분한 면적을 구비하고 있지 않다. 따라서, 대부분의 설계들은 외부 메모리에 대해서 판독 요청의 긴 메모리 레이턴시를 은폐하기 위해서 프리페칭 로직 및 다수의 소형 버퍼들을 사용한다.
본 발명의 일 측면에 따라서, 제 1 비디오 코덱 포맷과 연관된 제 1 판독 스트림 및 상기 제 1 비디오 코덱 포맷과는 다른 제 2 비디오 코덱 포맷과 연관된 제 2 판독 스트림에 대한 프로세싱을 지원하도록 공유형 버퍼를 구성하는 단계와, 상기 제 1 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 제 1 버퍼 기록 어드레스를 결정하는 단계와, 상기 제 2 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 제 2 버퍼 기록 어드레스를 결정하는 단계를 포함하며, 상기 제 1 버퍼 기록 어드레스와 상기 제 2 버퍼 기록 어드레스는 서로 상이한 컴퓨터 구현형 방법(computer-implemented method)이 제공된다.
본 발명의 일 측면에 따라서, 제 1 비디오 코덱 포맷과 연관된 제 1 판독 스트림 및 상기 제 1 비디오 코덱 포맷과는 다른 제 2 비디오 코덱 포맷과 연관된 제 2 판독 스트림에 대한 프로세싱을 지원하도록 공유형 버퍼를 구성하는 수단과, 상기 제 1 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 제 1 버퍼 기록 어드레스를 결정하는 수단과, 상기 제 2 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 제 2 버퍼 기록 어드레스를 결정하는 수단을 포함하며, 상기 제 1 버퍼 기록 어드레스와 상기 제 2 버퍼 기록 어드레스는 서로 상이한 장치가 제공된다.
본 발명의 일 측면에 따라서, 프로세서 및 상기 프로세서에 접속된 메모리를 포함하는 시스템이 제공되며, 상기 프로세서는 내부 메모리를 포함하며, 상기 내부 메모리 내의 인스트럭션들은 상기 프로세서로 하여금, 제 1 비디오 코덱 포맷과 연관된 제 1 판독 스트림 및 상기 제 1 비디오 코덱 포맷과는 다른 제 2 비디오 코덱 포맷과 연관된 제 2 판독 스트림에 대한 프로세싱을 지원하도록 공유형 버퍼를 구성하게 하고, 상기 제 1 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 제 1 버퍼 기록 어드레스를 결정하게 하고, 상기 제 2 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 제 2 버퍼 기록 어드레스를 결정하게 하며, 상기 제 1 버퍼 기록 어드레스와 상기 제 2 버퍼 기록 어드레스는 서로 상이하다.
본 명세서에서 기술되는 내용들은 첨부 도면을 참조하여서 한정적인 방식이 아닌 예시적인 방식으로 설명된다. 도시를 명료하면서 간단하게 하도록 하기 위해서, 도면에 도시된 요소들은 반드시 실제 축척대로 도시된 것이 아니다. 가령, 몇몇 요소들의 크기는 명료성을 위해서 다른 요소들에 비해서 확대될 수 있다. 또한, 적절하게 고려하여서, 도면 중에서 참조 부호는 반복적으로 사용되어서 대응하는 또는 유사한 요소들을 나타낸다.
도 1은 예시적인 시스템을 나타내고 있다.
도 2는 예시적인 프로세스를 나타내고 있다.
도 3은 예시적인 공유형 버퍼 구성을 나타내고 있다.
도 4는 메모리 요청 상황에서의 도 1의 예시적인 시스템을 나타내고 있다.
도 5는 메모리부터의 데이터 복귀 상황에서의 도 1의 예시적인 시스템을 나타내고 있다.
도 6은 데이터 판독 상황에서의 도 1의 예시적인 시스템을 나타내고 있다.
도 7은 도 2의 예시적인 프로세스의 추가적인 부분들을 나타내고 있다.
도 8은 추가적인 예시적인 공유형 버퍼 구성을 나타내고 있다.
도 9는 예시적인 시스템을 나타내고 있다.
도 10은 본원의 개시 사항들의 적어도 하나의 구현예에 따라 구성된 예시적인 시스템을 나타내고 있다.
하나 이상의 실시예들이 첨부된 도면을 참조하여서 기술될 것이다. 특정 구성 및 배열들이 논의될 것이지만, 이는 오직 예시적인 설명을 위해서 제공되었음을 이해할 것이다. 본 기술 분야의 당업자는 본 교시 사항의 기술적 사상 및 범위를 벗어나지 않는 한에서 다른 구성 및 배열들이 사용될 수도 있음을 인식하게 될 것이다. 또한, 본 명세서에서 기술되는 구성들 및/또는 배열들이 본 명세서에서 기술된 시스템 및 애플리케이션과는 다른 다양한 시스템 및 애플리케이션에서도 사용될 수 있음은 본 기술 분야의 당업자에게 자명하게 될 것이다.
다음의 상세한 설명들은 가령 시스템-온-칩(SoC) 아키텍처와 같은 아키텍처에서 나타날 수 있는 다양한 구현예들을 제공하지만, 본 명세서에서 기술되는 이러한 구성들 및/또는 배열들의 구현예들은 특정 아키텍처 및/또는 컴퓨팅 시스템으로 한정되는 것이 아니라 유사한 목적을 위해서 임의의 아키텍처 및/또는 컴퓨팅 시스템에 의해서도 구현될 수 있다. 가령, 다수의 집적 회로(IC) 칩 및/또는 패키지들을 사용하는 다양한 아키텍처 및/또는 셋톱 박스, 스마트 폰 등과 같은 다양한 소비자 전자 제품 및/또는 다양한 컴퓨팅 디바이스들이 본 명세서에서 기술되는 구성 및/또는 배열들을 구현할 수 있다. 또한, 다음의 설명들은 로직 구현 사항, 시스템 구성 요소들의 타입 및 상호 관계 사항, 로직 분할/통합(logic partitioning/integration) 선택 사항 등과 같은 다수의 특정 세부 사항들을 제공하지만, 청구 범위에서 청구된 청구 대상들은 이러한 특정 세부 사항들 없이도 실시될 수 있다. 다른 실례들에서, 가령, 제어 구조 및 전체 소프트웨어 인스트럭션 시퀀스와 같은 몇몇 사항들은 본 명세서에서 개시된 내용을 모호하지 않도록 하기 위해서 세부적으로 도시되지 않을 수 있다.
본 명세서에서 기술된 바들은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 또한, 본 명세서에서 기술된 바들은 머신 판독 가능한 매체 상에 저장되어서 하나 이상의 프로세서에 의해서 판독 및 실행될 수 있는 인스트럭션들에 의해서 구현될 수 있다. 머신 판독 가능한 매체는 (가령, 컴퓨팅 디바이스와 같은) 머신에 의해서 판독 가능한 형태로 정보를 저장 또는 전송할 수 있는 임의의 매체 및/또는 메카니즘을 포함할 수 있다. 가령, 머신 판독 가능한 매체는 ROM(read only memory), RAM(random access memory), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스, 전파된 신호의 전기적 형태, 광학적 형태, 음향적 형태 또는 기타 다른 형태(가령, 반송파, 적외선 신호, 디지털 신호 등) 등을 포함할 수 있다.
본 명세서에서 "일 구현예" 또는 "구현예" 또는 "예시적인 구현예" 또는 "예시적인 실시예" 또는 "실시예" 또는 "일 실시예"가 참조될 경우에, 그 기술된 해당 실시예 또는 구현예는 특정 특징, 구조 또는 특성을 포함함을 나타낸다. 하지만, 모든 구현예 또는 실시예가 그러한 특정 특징, 구조 및 특성을 반드시 포함하는 것은 아니다. 또한, "일 구현예" 또는 "구현예" 또는 "예시적인 구현예" 또는 "예시적인 실시예" 또는 "실시예" 또는 "일 실시예"라는 표현들이 반드시 동일한 구현예 또는 실시예를 말하는 것은 아니다. 또한, 특정 특징, 구조 또는 특성이 일 실시예 또는 구현예와 관련하여서 기술될 경우에, 본 명세서에서 명시적으로 기술되었는지의 여부와는 상관없이 이러한 특정 특징, 구조 또는 특성을 다른 구현예들 또는 실시예들과 관련하여서 구현 또는 실시하는 바는 본 기술 분야의 당업자의 지식의 범위 내에 속한다.
도 1은 본원의 교시 내용에 따른 예시적인 시스템(100)을 나타내고 있다. 예시적인 시스템(100)과 같은 본원의 교시 사항에 따른 디바이스 및/또는 시스템들은 상이한 비디오 코덱 프로세싱 필요 사항을 충족시키기 위해서 매체 파이프라인 내에서의 프리페치(pre-fetch) 버퍼 자원 할당을 동적으로 변경시킬 수 있다. 시스템(100)은 드라이버 레지스터(102) 및 이에 대응하는 멀티플렉서(104), 제어 레지스터(106) 및 이에 대응하는 멀티플렉서(108), 하드웨어 판독/기록(R/W) 인터페이스(110), 가산 로직(112,115), 인에이블 로직(116,118), 공유형 버퍼 메모리(120) 및 이와 연관된 멀티플렉서(122), 및 메모리 요청 레이턴시 FIFO(first-in first-out)(124)를 포함한다. R/W 인터페이스(110)는 시스템(100) 외부의 하드웨어로부터 다양한 신호들(126)을 수신하여 이 신호들을 이하에서 더욱 상세하게 기술될 바와 같은 시스템(100)의 다양한 구성 요소들에 제공할 수 있다. 또한, 시스템(100)은 이하에서 더욱 상세하게 기술될 바와 같은 시스템(100) 외부의 메모리(미도시)에 접속된 메모리 인터페이스(미도시)로 제공되거나 그로부터 수신되는 다양한 신호들(128)을 포함할 수 있다. 또한, 시스템(100)은 이하에서 더욱 상세하게 기술될 바와 같은 시스템(100) 외부의 하드웨어에 제공될 수 있는 다양한 신호들(130)을 포함할 수 있다.
본 교시 사항에 따라서, 공유형 버퍼(120)는 비디오 디코더 자원 할당을 지원하기 위해서 다수의 버퍼 영역들(132)로 논리적으로 동적 방식으로 분할될 수 있는 프리페치 버퍼를 포함할 수 있다. 이러한 버퍼(120)의 분할을 특정하기 위해서, 드라이버 레지스터(102)는 공유형 버퍼(120) 내의 각 영역(132)의 시작 로케이션(starting location)을 포함하는 구성 데이터(configuration data)를 저장할 수 있다. 임의의 특정 버퍼 영역(132)의 크기는 현 버퍼 영역에서 다음 버퍼 영역의 시작 로케이션을 감산함으로써 결정될 수 있다. 레지스터(102) 내에 저장된 구성 데이터는 영역들(132)을 동적으로 재할당하기 위해서 필요한 바대로 업데이트 또는 수정될 수 있다. 따라서, 도 1에서는 7 개의 서로 크기가 유사한 영역들(132)이 예시적으로 도시되었지만, 영역들(132)의 개수 및/또는 상대적 크기는 공유형 버퍼(120)가 이하에서 더욱 상세하게 기술될 본 교시 사항에 따라서 동적으로 구성될 수 있다.
다양한 구현예들에서, 로우-레벨 온-칩 캐시 메모리의 적어도 일부가 공유형 버퍼(120)를 구현할 수 있다. 가령, 공유형 버퍼(120)는 로우-레벨 캐시 메모리의 일부에 의해서 제공되며 캐시 메모리의 총 메모리 어드레스 또는 로케이션으로 표현되는 버퍼(120)의 전체 크기가 레지스터(102)의 콘텐츠들에 의해서 필요하게 되고 특정되는 바와 같이 동적으로 변할 수 있다. 일반적으로, 공유형 버퍼(120)는 SRAM(static RAM), DRAM(dynamic RAM), 플래시 메모리 등을 포함하는 임의의 타입의 메모리에 의해서 구현될 수 있다.
제어 레지스터(106)는 시스템(100)을 위한 모든 내부 레지스터들을 저장할 수 있다. 다양한 구현예들에서, 제어 레지스터(106)는 각 버퍼 영역(132)의 시작 로케이션과 연관된 판독 오프셋 및 기록 오프셋을 저장할 수 있다. 이러한 판독 오프셋 및/또는 기록 오프셋은 제로 값으로 시작하고 판독 요청 또는 기록 요청에 따라서 증분될 수 있다. 공유형 버퍼(120)가 순환형 저장 구성을 가질 경우에 판독 오프셋 및/또는 기록 오프셋은 해당 영역(132)의 끝에 도달할 때에 (도 1에 도시되지 않은 랩-어라운드 로직(warp-around logic)을 사용하여서) 제로로 되돌아가게 될 수 있다. 공유형 버퍼(120)는 비디오 프로세싱 시에 사용되는 메모리 데이터를 위한 주 프리페치 저장 기능을 한다. FIFO(124)는 현재 발생 중인 요청을 시스템(100) 외부의 메모리 내에 저장하기 위해서 사용될 수 있다.
본 교시 사항에 따라서, 비디오 디코더 아키텍처들은 비디오 데이터를 공유형 버퍼 메모리에 기록하거나 그로부터 판독하기 위해서 시스템(100)과 같은 단일 제어 메카니즘을 사용할 수 있다. 또한, 드라이버 레지스터(102)를 통해서 시스템(100)과 인터페이싱하는 소프트웨어 드라이버들이 할당되어서 용도 모델에 따라서 버퍼(120)의 크기 및/또는 버퍼 영역들(132)의 개수 및 크기를 조절할 수 있다. 또한, 공유형 버퍼(120)는 스트림마다 상이한 메모리 레이턴시를 보상하도록 재구성될 수 있다.
본 교시 사항에 따라서, 소프트웨어 드라이버들이 사용되어서 버퍼 영역들(132)의 개수 및/또는 크기를 초기에 프로그래밍할 수 있다. 이렇게 프로그램된 버퍼 영역들(132)의 구성은 모든 발생 중인 메모리 요청들이 프로세싱될 때까지 유지될 수 있다. 또한, 메모리 요청을 하고 각 버퍼 영역(132)으로부터 데이터를 개별적으로 판독하기 위해서 하드웨어가 할당될 수 있다.
시스템(100)의 다양한 구성 요소들은 소프트웨어, 펌웨어, 하드웨어 및/또는 이들의 임의의 조합으로 구현될 수 있다. 가령, 시스템(100)의 다양한 구성 요소들은 소비자용 전자 제품(CE) 시스템에서 발견할 수 있는 컴퓨팅 SoC(시스템-온-칩) 하드웨어에 의해서 적어도 부분적으로 제공될 수 있다. 가령, 일 예시적인 실례에서, 시스템(100)은 셋탑 박스와 같은 CE 디바이스로 구현될 수 있다.
도 2는 본 발명의 다양한 구현예들에 따른 메모리 요청 프로세싱에 대한 예시적인 프로세스(200)의 흐름도이다. 프로세스(200)는 도 2의 하나 이상의 블록(202,204,206,208,210,212,214,216)에 의해서 도시된 바와 같은 하나 이상의 동작, 기능 또는 단계를 포함할 수 있다. 비한정적인 실례로서, 도 1의 예시적인 시스템(100)과 관련하여서 프로세스(200)가 본 명세서에서 기술될 것이다. 프로세스(200)는 블록(202)에서 시작된다.
블록(202)에서, 공유형 버퍼가 구성될 수 있다. 다양한 구현예들에서, 가령, 공유형 버퍼(120)는 레지스터(102) 내에 저장된 구성 데이터에 응답하여 버퍼(120)를 다수의 버퍼 영역들(132)로 논리적으로 분할함으로써 구성될 수 있다. 상기 구성 데이터는 상이한 디코더 프로세스들과 연관된 드라이버들에 의해서 제공될 수 있다. 본 교시 사항에 따라서, 블록(202)은 다중 포맷 비디오 프로세싱을 가능하게 하도록 공유형 버퍼를 상이한 영역들로 분할하는 단계를 포함할 수 있다.
도 3은 블록(202)에서 6 개의 버퍼 영역들(302 내지 312)로 분할된 공유형 버퍼(120)의 예시적인 구성(300)을 나타내고 있다. 상술한 바와 같이, 공유형 버퍼(120)의 전체 크기는 드라이버 레지스터(102) 내에 저장된 구성 데이터에 의해서 특정된 바와 같은 버퍼 영역들(132)의 개수 및 크기에 따라서 동적으로 결정될 수 있다.
예시적인 구성(300)에서, 레지스터(102) 내에 저장된 구성 데이터는 버퍼 영역들(302,304,306)이 일 비디오 포맷 또는 표준에 따른 비디오 프로세싱을 위해서 사용되도록 버퍼 영역들(302,304,306)을 특정하고 버퍼 영역들(308,310,312)은 다른 비디오 포맷 또는 표준에 따른 비디오 프로세싱을 위해서 사용되도록 버퍼 영역들(308,310,312)을 특정할 수 있다. 가령, 예시적인 구성(300)에 따라서, 로우스토어 동작을 착수할 때에 3 개의 개별 버퍼 영역들(302,304,306)이 AVC 디코더에 의해서 사용되도록 제공되고, VC-1 디코더 프로세스 시에는 로우스토어 버퍼로서 버퍼 영역(308)이 제공되고 DMV(differential motion vector) 버퍼로서 버퍼 영역(310)이 제공되며 비트-플레인 버퍼로서 버퍼 영역(312)이 제공될 수 있다.
본 명세서에서 기술된 구성(300)에 따르면 2 개의 상이한 비디오 프로세싱 표준에 따르는 상이한 프로세스에 의해서 사용되게 상이한 버퍼 영역들이 제공되지만, 본 교시 사항에 따른 공유형 버퍼는 임의의 개수의 비디오 프로세싱 포맷 또는 표준에 의해서 사용될 수 있도록 임의의 개수 또는 임의의 상대적 사이즈를 갖는 버퍼 영역들로 분할될 수 있다. 또한, 구성(300)은 서로 간에 대략 동일한 크기를 갖는 버퍼 영역들(302 내지 312)을 나타내었지만, 이러한 구성(300)은 단지 예시적인 것을 뿐이며 버퍼 영역들(132) 간의 상대적 크기 또는 이들의 개수는 다양한 실시예들에 따라서 상이하게 구성될 수 있음을 본 기술 분야의 당업자는 이해할 것이다. 가령, 로우스토어 동작 동안에 AVC 디코더에 의해서 사용되는 버퍼 영역들(302,304,306)은 서로 대략 동일한 크기를 갖는 반면에, DMV 버퍼(310)는 버퍼 영역들(302,304,306)보다도 큰 크기를 가지며 비트-플레인 버퍼(312)는 버퍼 영역들(302,304,306)보다도 작은 크기를 가질 수 있다.
또한, 다양한 구현예에서, 블록(202)은 하나 이상의 비디오 화상 또는 프레임에 대응하는 비트스트림 데이터를 프로세싱하거나 비디오 화상 슬라이스 등과 같은 비디오 프레임의 일부에 대응하는 비트스트림 데이터를 프로세싱하기 위해서 공유형 버퍼를 구성할 수 있다. 가령, 블록(202)에서, 외부 메모리 내에 저장된 비디오의 일 프레임의 일 슬라이스와 같은 적어도 일부에 대응하는 데이터의 판독 스트림을 프로세싱하기 위해서 공유형 버퍼(120)가 구성될 수 있다. 이 경우에, 본 프로세스(200)에서, 이하에서 더욱 상세하게 기술될 바와 같이 버퍼(120) 내로 상기 프레임 데이터의 여러 상이한 부분들을 기록하기 위해서 외부 메모리로의 액세스를 요청하는 연속적인 인스턴스가 발생할 수 있다. 블록(204)에서, 제 1 판독 스트림에 대한 메모리 요청이 수신될 수 있다.
도 4는 본 발명의 다양한 실시예들에 따른 블록(204)의 메모리 요청 프로세싱 상황에서의 예시적인 시스템(100)을 나타내고 있다. 도 4에 도시된 바와 같이, R/W 인터페이스(110)는 픽셀 값들과 같은 데이터를 외부 메모리로부터 판독하기 위해서 외부 메모리로의 액세스를 추구하는 메모리 요청(400)을 수신한다. 가령, AVC 디코더는 외부 메모리로부터 픽셀 값을 판독하고자 하는 판독 스트림 프로세스의 일부일 수 있는 메모리 요청(400)을 블록(202)에서 제공할 수 있다. 가령, 블록(204)은 AVC 디코더 프로세스에 의해서 실행되는 로우스토어 동작 동안에 착수될 수 있다. 본 명세서에서 사용된 픽셀 데이터는 비디오 디코더 프로세싱 시에 사용되는 임의의 형태의 데이터를 말하며, 다음으로 한정되지는 않지만 마이크로블록 데이터 값, 블록 데이터 값, 서브 블록 데이터 값(가령, 픽셀 YUV 값), 모션 벡터 데이터 값(가령, X 오프셋 및 Y 오프셋), 블록 간 데이터 값, 블록 내 데이터 값(가령, 양자화된 AC 계수 또는 양자화된 DC 계수) 등을 포함할 수 있다.
도 1 및 도 4에 개시된 예시적인 시스템(100)을 다시 참조하면, 블록(204)에 수신된 메모리 요청(400)은 메모리 요청 신호(Mem-Req), 메모리 버퍼 식별 신호(Mem_Buffer_ID) 및 메모리 어드레스 신호(Mem_Addr)를 포함할 수 있다. 인터페이스(110)는 메모리 요청 신호를 FIFO(124) 및 인에이블 로직(116)에 제공한다. 메모리 어드레스 신호는 메모리 요청이 향하고 있는 외부 메모리 내의 어드레스를 지정하며 FIFO(124)에 제공될 수 있다. 메모리 버퍼 식별 신호는 어느 버퍼 영역(132)이 메모리 요청에 응답하여 사용될지를 지정하고 있으며 R/W 인터페이스(110)에 의해서 드라이버 레지스터(102) 및 제어 레지스터(106)와 각기 연관된 멀티플렉서들(104,108)에 제공될 수 있다. 다양한 실시예들에서, 블록(204)에서의 메모리 요청(400)을 발행하는 하드웨어는 먼저 다양한 신호들(130) 중 하나로서 제공되는 Read_Done 신호를 체크할 수 있다.
블록(206)에서, 버퍼 기록 어드레스가 결정될 수 있다. 도 4에 도시된 바와 같이, 블록(204)에서 멀티플렉서들(104,108)에 제공된 메모리 버퍼 식별 신호는 각각의 레지스터(102,106)에 저장된 데이터와 결합되어서 WBO(write buffer offset) 신호 및 BBA(buffer base address) 신호를 선택하는데 사용될 수 있다. 이 WBO 신호 및 BBA 신호는 가산 로직(112)에 제공되고 이어서 가산 로직(112)은 이들 신호를 논리적으로 결합하여서 SWA(Storage Write Address) 신호를 형성한다. 상기 SWA 신호 및 메모리 요청 신호(Mem_Req)에 응답하여, 인에이블 로직(116)은 공유형 버퍼(120)에 WE(write enable) 신호를 제공한다.
상기 WE 신호는 블록(204)에서 수신된 메모리 요청이 구하고 있는 픽셀 데이터를 임시 저장하기 위해서 지정된 버퍼(120)의 특정 영역(132) 내의 로케이션 또는 어드레스를 특정할 수 있다. 가령, 디코더가 블록(204)에서 판독 요청의 제 1 인스턴스를 개시할 때에, 상기 SWA 신호는 버퍼 영역(132) 내의 초기 또는 시작 어드레스를 나타낼 수 있다. 따라서, WBO 신호는 제로의 초기 값을 가질 수 있다. 가령, 도 3을 참조하면, AVC 디코더는 해당 메모리 요청을 위한 목표 버퍼 영역으로서 가령 로우스토어 버퍼 영역(302)을 특정한 메모리 버퍼 식별 신호(Mem_Buffer_ID)를 블록(204)에서의 판독 요청에 제공할 수 있다. SWA 신호는 상기 로우스토어 버퍼 영역(302) 내의 로케이션 또는 어드레스를 특정하는데 이 버퍼 영역(302) 내에서의 정확한 로케이션은 WBO 신호의 값에 의존한다.
WE 신호를 수신하면, 공유형 버퍼(120)는 시스템(100)이 메모리 요청을 수신하였으며 이 메모리 요청에 응답하기 시작했다는 바를 알리는 WRP(Write Request in Progress) 신호를 어서트(assert)한다. 또한, 블록(204)에서의 메모리 요청을 수신하면, 시스템(100)은 WBO 신호와 BBA 신호를 서로 결합하여서 Mem_Tag 신호를 형성한다. 이 Mem_Tag 신호는 이하에서 더욱 상세하게 설명될 바와 같이 데이터가 메모리로부터 복귀할 때에 상기 SWA 신호에 의해서 알려진 버퍼 영역(302) 내의 기록 로케이션 또는 어드레스를 결정하는데 사용된다. 상기 Mem_Tag 신호, Mem_Req 신호 및 Mem_Addr 신호는 FIFO(124) 내에 저장되어서 메모리 인터페이스로 제공될 수 있다. 블록(208)에서, 제 1 판독 스트림을 위한 픽셀 데이터가 공유형 버퍼 내에 기록될 수 있다.
도 5는 본 발명의 다양한 실시예들에 따른 블록(208)에서의 데이터 복귀 프로세싱 상황에서의 시스템(100)을 나타내고 있다. 도 2 및 도 5를 참조하면, 다양한 실시예들 또는 구현예들에서, 블록(208)은 외부 메모리가 상기 Mem_Addr 신호를 사용하여서 판독될 픽셀 데이터의 위치를 파악하는 동작을 포함한다. 가령, 이 Mem_Addr 신호는 외부 메모리 내에 저장된 픽셀 값 열을 나타낼 수 있다.
이어서, 외부 메모리는 시스템(100)의 메모리 인터페이스를 통해서 상기 픽셀 데이터를 Mem_Data 신호로서 공유형 버퍼(120)에 제공한다. 또한 외부 메모리에 의해서 제공된 상기 Mem_Tag 신호의 BBA 신호 성분 및 WBO 신호 성분은 로직(112)에 의해서 가산되고 이로써 SWA 신호가 인에이블 로직(116)에 제공된다. 이어서, 로직(116)은 메모리 요청 복귀 신호(Mem_Req_Return)에 응답하여 WE 신호를 버퍼(120)에 제공하며 이로써 버퍼(120)는 상기 픽셀 데이터(가령, 상기 Mem_Data 신호에 대응함)를 SWA 신호에 의해서 특정된 부분(132) 내의 특정 어드레스에 저장한다. 위의 실례로부터 계속 설명하자면, 상기 SWA 신호가 로우스트어 버퍼 영역(302) 내의 어드레스를 특정하면, 블록(218)에 의해서 픽셀 데이터는 AVC 디코더 프로세스에 의한 로우스토어 프로세싱 동안에 상기 로케이션에 저장될 수 있다. 가령, 픽셀 데이터 열이 SWA 신호에 의해서 특정된 위치에 처음 저장될 수 있다.
일단 픽셀 데이터가 공유형 버퍼에 기록되면, 시스템(100)은 요청된 픽셀 데이터가 버퍼(120)로부터 판독되도록 입수 가능하다는 바를 하드웨어에 대해 알리는 데이터 가용 신호(Data_Avail)를 어서트한다. 또한, 블록(208)에서 판독 데이터를 기록할 때에, 시스템(100)은 임의의 후속 메모리 요청이 데이터를 버퍼(120)의 특정 영역(132) 내의 다음 위치에 기록할 수 있도록 WBO 값을 증분한다. 프로세스(200)는 블록(210)에서 공유형 버퍼로부터 제 1 판독 스트림 픽셀 데이터를 판독하게 된다.
도 6은 본 발명의 다양한 구현예들에 따른 블록(210)에서의 판독 요청 프로세싱 상황에서의 예시적인 시스템(100)을 나타내고 있다. 도 6에 도시된 바와 같이, 블록(210)에서, R/W 인터페이스(110)는 블록(208)의 결과로서 공유형 버퍼 내에 저장된 픽셀 데이터에 액세스하고자 하는 판독 요청(600)을 수신한다. 가령, AVC 디코딩 프로세스는 로우스토어 동작을 실행하는 프로세스에서 블록(210)에서의 판독 요청(600)을 제공할 수 있다.
판독 요청(600)은 판독 버퍼 식별 신호(Read_Buffer_ID), 판독 요청 신호(Read_Req) 및 Read_Buffer_Evict 신호를 포함한다. 판독 버퍼 식별 신호가 멀티플렉서(104)에 제공되어서 대응하는 BBA 신호가 제공되고 판독 버퍼 식별 신호가 멀티플렉서(108)에 제공되어서 RBO(Read Buffer Offset) 신호가 제공된다. 이어서, 로직(114)은 RBO 신호를 BBA 신호에 가산하여서 SRA(Storage Read Address) 신호를 생성한다. 이 SRA 신호는 블록(210)에서 판독될 픽셀 데이터를 저장할 버퍼(120)의 특정 영역(132) 내의 특정 로케이션을 나타낸다. 상술된 실례의 경우에는, SRA 신호가 블록(208)에서 픽셀 데이터가 기록된 로우스토어 버퍼(302) 내의 어드레스를 특정하면, 블록(210)에 의해서 픽셀 데이터가 AVC 디코더에 의한 로우스토어 프로세싱 동안에 상기 로케이션으로부터 판독된다. 가령, 블록(210)에서, 픽셀 값 열이 공유형 버퍼(120)로부터 판독된다.
몇몇 실시예들에서, 블록(210)에서 하드웨어는 Read_Req 신호를 설정하지만 Read_Buffer_Evict 신호를 설정하지는 않는다. 이로써, 하드웨어는 SRA 신호에 의해서 알려진 로케이션의 상태를 체크할 수 있다. 이렇게 함에 있어서, 데이터가 상기 로케이션에서 판독되도록 입수 가능한 상태에 있음을 알리는 Read_Data 신호가 설정되었음을 하드웨어가 검출하면, 하드웨어는 Read_Data 신호에 액세스함으로써 공유형 버퍼(120)로부터 그 데이터를 판독할 수 있도록 Read_Req 신호 및 Read_Buffer_Evict 신호를 모두 설정함으로써 블록(210)을 계속 구현할 수 있다.
인에이블 로직(118)은 SRA 신호, Read_Req 신호 및 Read_Buffer_Evict 신호에 응답하여 RE(Read Enable) 신호를 버퍼(120)에 제공한다. RE 신호와 함께, SRA 신호가 멀티플렉서(122)에 제공되고 멀티플렉서(122)는 저장된 데이터가 Read_Data 신호로서 나타나도록 하게 한다. 또한, 블록(210)에서 판독 데이터를 제공할 때에, 시스템(100)은 그 데이터가 더 이상 사용되지 않음을 나타내는 Read_Done 신호를 설정하고 임의의 후속 판독 요청이 버퍼(120)의 특정 영역(132) 내의 다음의 위치에 대해서 이루어질 수 있도록 레지스터(106)에 저장된 RBO 값을 증분한다.
도 2에서, 프로세스(200)는 블록(212)으로 진행하고 이 블록에서는 제 1 판독 스트림 프로세싱의 계속 진행 여부가 판정된다. 가령, 다양한 구현예에서, 비디오 디코더는 판독 스트림 프로세스를 위한 픽셀 데이터를 획득하기 위한 초기 동작으로서 블록(204 내지 210)을 제 1 반복하기 시작할 수 있다. 이어서, 비디오 디코더는 판독 스트림 프로세스를 위한 픽셀 데이터의 추가 부분을 획득하기 위해서 블록(204 내지 210)을 한 번 이상 추가 반복하기 시작할 수 있다. 따라서, 블록(212)에서 제 1 판독 스트림 프로세싱이 계속 진행될 필요가 있다고 판정되면, 디코더는 블록(204 내지 212)을 추가 반복하기 이전에 블록(214)에서 (가령, Mem_Addr 신호 값을 증분시킴으로써) 메모리 어드레스를 수정할 수 있다. 다양한 실시예들에서, 블록(212)의 최종 인스턴스에서 제 1 판독 스트림에 대한 프로세싱이 종료되었다고 디코더가 판정할 때까지 비디오 디코더 프로세스는 블록(204 내지 210)을 계속 반복할 것이다. 가령, 프로세스(200)를 착수한 AVC 디코더는 가령 제 1 판독 스트림 프로세스에 대응하는 로우스토어 동작이 외부 메모리로부터 소망하는 양의 픽셀 데이터를 획득했을 때에 제 1 판독 스트림에 대한 프로세싱이 종료되었다고 블록(212)의 최종 인스턴스에서 판정할 수 있다. 한편, 블록(212)에서 제 1 판독 스트림에 대한 프로세싱이 더 이상 진행될 필요가 없다고 판정되면, 프로세스(200)는 후속 동작, 기능 또는 단계를 위해서 블록(216)으로 진행한다.
도 7은 본 발명의 다양한 실시예들에 따른 메모리 요청 프로세싱에 대한 예시적인 프로세스(200)의 다른 부분들을 나타내고 있다. 프로세스(200)는 블록들(218,220,222,224,226,228,230,232) 중 하나 이상에 의해서 도시된 바와 같은 하나 이상의 추가적인 동작, 기능 또는 단계를 포함할 수 있다. 비한정적 실례로서, 도 7에 도시된 프로세스(200)도 역시 본 명세서에서 도 1의 예시적인 시스템(100)을 참조하여서 기술될 것이다. 프로세스(200)는 블록(218)에서 진행된다.
블록(218)에서, 공유형 버퍼가 재구성되어야 하는지의 여부가 판정될 수 있다. 다양한 실시예들에서, 블록(218)에서, 다른 비디오 프로세싱 판독 스트림과 같은 새로운 또는 제 2의 판독 스트림에 대한 프로세싱을 착수하기 위해서 공유형 버퍼(120)가 재구성되어야 하는지의 여부가 판정된다. 가령, AVC 디코더에 의해서 생성된 판독 스트림과 같은, 제 1 비디오 포맷 또는 표준에 부합하는 제 1 판독 스트림에 대한 판독 스트림 프로세싱은 도 2의 블록(204 내지 214)에서 착수되는 반면에, 블록(218)에서는, 가령, VC-1 디코더에 의해서 착수될 수 있는, 다른 비디오 포맷 또는 표준과 연관된 제 2 판독 스트림에 대한 프로세싱을 착수하기 위해서 공유형 버퍼(120)가 재구성되어야 하는지의 여부가 판정된다.
블록(218)에서, 버퍼에 대한 재구성이 착수될 필요가 없다고 판정되면, 프로세스(200)는 제 2 판독 스트림에 대한 메모리 요청 수신(블록(222)), 상기 메모리 요청에 대한 버퍼 기록 어드레스 결정(블록(224)), 상기 제 2 판독 스트림에 대한 픽셀 데이터의 공유형 버퍼로의 기록(블록(226)) 및 공유형 버퍼로부터의 상기 픽셀 데이터 판독(블록(228))을 실시한다. 블록(222,224,226,228)은 각기 도 2의 블록(204,206,226,228)에 대해서 상술한 바와 유사한 방식으로 착수될 수 있다.
다양한 실시예들에서, 공유형 버퍼가 도 2의 블록(202)에서 도 7의 블록(222,224,226,228)에서의 제 2 판독 스트림 프로세싱을 가능하게 하는 방식으로 구성되었을 때에 블록(218)에서 공유형 버퍼가 재구성될 필요가 없다고 판정될 수 있다. 가령, 도 3의 예시적인 구성(300)을 참조하면, 제 2 판독 스트림이 VC-1 디코더 판독 스트림이면, 블록(202)에서 VC-1 디코더 프로세스에 적합하도록 구성된 버퍼 영역들(308,310,312)을 포함하는 공유형 버퍼(120)는 재구성될 필요없이 도 7의 블록(222,224,226,228)에서의 제 2 판독 스트림 프로세싱을 착수하도록 적합하게 구성된 것일 수 있다.
한편, 블록(218)에서, 버퍼에 대한 재구성이 필요하다고 판정되면, 프로세스(200)는 블록(220)으로 진행하여서 버퍼를 재구성한다. 가령, 제 2 판독 스트림 프로세싱을 용이하게 하는 방식으로 공유형 버퍼(120)가 재구성되지 않았음을 블록(218)에서 판정될 수 있다. 다양한 실시예들에서, 블록(220)은 하나 이상의 비디오 디코더 프로세스와 연관된 소프트웨어 드라이버들에 의해서 레지스터(102) 내에 배치된 구성 데이터에 응답하여 착수될 수 있다. 가령, 제 2 판독 스트림 프로세싱을 착수하는 VC-1 디코더 프로세스와 연관된 소프트웨어 드라이버는 구성 데이터를 레지스터(102)에 제공할 수 있다. 이어서, 시스템(100)은 제 2 판독 스트림과 연관된 상기 구성 데이터를 사용하여서 공유형 버퍼(120)를 재구성한다. 가령, 시스템(100)이 도 2의 블록(204 내지 214)에서 프로세싱된 비디오 비트스트림의 포맷이 아닌 다른 포맷에 따라서 인코딩된 비디오 비트스트림을 디코딩하도록 요구되면, 공유형 버퍼(120)는 블록(220)에서 동적으로 재구성될 수 있다.
도 8은 도 2의 블록(202)에서 착수된 공유형 버퍼(120)의 예시적인 초기 구성(800) 및 도 7의 블록(220)에서 착수된 공유형 버퍼(120)의 예시적인 구성(810)을 나타내고 있다. 도 8의 실례에서, 공유형 버퍼(120)는 로우스토어 동작을 구현하는 AVC 디코더에 부합되게 구성된 3 개의 서로 유사한 크기를 갖는 로우스토어 버퍼 영역들(802,804,806)을 포함하도록 도 2의 블록(202)에서 구성될 수 있다. 비한정적인 실례로서, 공유형 버퍼(120)는 버퍼 영역들(802,804,806)을 제공하도록 구성될 때에 블록(202)에서 특정되게 포맷 또는 구성되지 않은 추가 버퍼 영역(808)을 포함하도록 사전 결정된 전체 크기를 갖는다.
R도 8의 예시적인 실례에서, 블록(220)에서, 버퍼 영역들(802,804,806)을 더 이상 포함하지 않고 이제는 대응하는 판독 스트림 프로세스를 구현하는 VC-1 디코더에 적합한 로우스토어 버퍼(812), DMV 버퍼(814) 및 비트-플레인 버퍼(816)에 적합한 영역들에 대응하는 새롭게 구성된 버퍼 영역들을 포함하도록 동적으로 재구성된다. 블록(220)의 재구성 이후에, 상기 특정하게 포맷되지 않은 버퍼 영역(808)은 여전히 존재할 수 있지만 구성(800)에서의 크기와는 다르면서 상기 새롭게 구성된 버퍼 영역들(812,814,816)의 크기에 의존하는 크기를 가질 수 있다.
도 7을 참조하면, 블록(220)에서의 임의의 재구성 이후에, 프로세스(200)는 블록(222)에서 제 2 판독 스트림에 대한 메모리 요청을 수신하고 블록(224)에서 상기 메모리 요청에 대한 버퍼 기록 어드레스를 결정하며 블록(226)에서 상기 제 2 판독 스트림에 대한 픽셀 데이터를 공유형 버퍼에 기록하고 블록(228)에서 상기 픽셀 데이터를 상기 공유형 버퍼로부터 판독한다. 블록(222,224,226,228)은 각기 도 2의 블록(204,206,208,210)에 대해서 상술한 바와 유사한 방식으로 구현될 수 있다.
도 7에서, 프로세스(200)는 블록(230)으로 진행하고 이 블록에서는 제 2 판독 스트림 프로세싱의 계속 진행 여부가 판정된다. 가령, 다양한 구현예에서, 비디오 디코더는 판독 스트림 프로세스를 위한 픽셀 데이터를 획득하기 위한 초기 동작으로서 블록(222 내지 228)을 제 1 반복하기 시작할 수 있다. 이어서, 비디오 디코더는 판독 스트림 프로세스를 위한 픽셀 데이터의 추가 부분을 획득하기 위해서 블록(222 내지 228)을 한 번 이상 추가 반복하기 시작할 수 있다. 따라서, 블록(230)에서 제 1 판독 스트림 프로세싱이 계속 진행될 필요가 있다고 판정되면, 디코더는 블록(222 내지 230)을 추가 반복하기 이전에 블록(232)에서 (가령, Mem_Addr 신호 값을 증분시킴으로써) 메모리 어드레스를 수정할 수 있다. 다양한 실시예들에서, 블록(230)의 최종 인스턴스에서 제 2 판독 스트림에 대한 프로세싱이 종료되었다고 디코더가 판정할 때까지 비디오 디코더 프로세스는 블록(222 내지 232)을 계속 반복할 것이다. 가령, 도 7에 도시된 바와 같은 프로세스(200)를 착수한 VC-1 디코더는 블록(230)의 최종 인스턴스에서 제 2 판독 스트림에 대한 프로세싱이 더 이상 진행될 필요가 없다고 판정할 수 있으며 이로써 이 프로세스(200)는 종료된다.
도 2 및 도 7에 도시된 바와 같은 예시적인 프로세스(200)의 실시예들에서는 모든 블록(202 내지 232)이 도시된 순서대로 실시되었지만, 청구 범위에 청구된 청구 대상은 여기에 한정되지 않는다. 다른 실시예들에서, 프로세스(200)의 블록들(202-232) 내지 서브 세트만이 실시될 수 있으며/있거나 이 블록들은 도시된 바와 다른 순서로 실시될 수도 있다.
도 2 및 도 7의 프로세스들 및/또는 블록들 중 임의의 하나 이상은 하나 이상의 컴퓨터 프로그램 제품에 의해서 제공된 인스트럭션들에 응답하여 구현될 수 있다. 이러한 프로그램 제품은 가령, 하나 이상의 프로세서 코어에 의해서 실행될 때에 도 1 내지 도 8을 참조하여서 상술된 기능들을 제공하는 인스트럭션들을 저장하고 있는 신호 보유 매체를 포함할 수 있다. 컴퓨터 프로그램 제품들은 임의의 형태의 컴퓨터 판독 가능한 매체로서 제공될 수 있다. 가령, 하나 이상의 프로세서 코어를 포함하는 프로세서는 컴퓨터 판독 가능한 매체에 의해서 프로세서로 전달되는 인스트럭션에 응답하여 도 2 및 도 7에 도시된 블록들 중 하나 이상을 구현할 수 있다.
도 9는 본 교시 사항에 따른 예시적인 시스템(900)을 나타내고 있다. 시스템(900)은 본 명세서에서 논의된 다양한 기능들 모두 또는 일부를 수행하는데 사용될 수 있으며 본 발명의 다양한 실시예들에 따라 다중 포맷 비디오 프로세싱을 위한 구성 가능한 버퍼 할당을 제공할 수 있는 임의의 디바이스 또는 이들의 집합을 포함할 수 있다. 시스템(900)은 VLSI(Very Large Scale Integration) SoC(System-on-Chip) 집적 회로(IC)(902) 및 상기 집적 회로(902)에 통신 가능하게 및/또는 동작 가능하게 연결된 외부 메모리(904)를 포함할 수 있다. 집적 회로(902)는 하나 이상의 프로세서 코어들(미도시)을 포함할 수 있다. 집적 회로(902)는 다음으로 한정되지 않지만 CISC(complex instruction set computer) 마이크로프로세서 코어, RISC(reduced instruction set computer) 마이크로프로세서 코어 또는 VLIW(very long instruction word) 마이크로프로세서 코어와 같은 하나 이상의 프로세서 코어, 인스트럭션 세트의 임의의 조합을 구현하는 하나 이상의 프로세서 코어 또는 디지털 신호 프로세서 또는 마이크로제어기와 같은 임의의 다른 프로세서 디바이스를 포함하는 임의의 타입의 프로세서 기반형 시스템일 수 있다. 가령, 집적 회로(902)는 다수의 프로세서 코어들을 포함할 수 있으며 모바일 컴퓨팅 디바이스(가령, 스마트폰, 태블릿 컴퓨터 등)와 같은 소비자 전자 제품(CE) 디바이스에서 구현될 수 있다. 메모리(904)는 다음으로 한정되지 않지만 DRAM 메모리, SRAM 메모리, 플래시 메모리 등을 포함하는 임의의 타입의 메모리일 수 있다.
집적 회로(902)는 캐시 메모리와 같은 내부 메모리(906)를 포함하며 본 명세서에서 기술된 바와 같은 다양한 구조, 동작, 기능 및/또는 단계들을 제공 및/또는 실시하도록 구성된 로직을 포함할 수 있는 비디오 하드웨어 가속 엔진(HAE)(908)을 제공 및/또는 지원할 수 있다. 비디오 하드웨어 가속 엔진(908)은 본 명세서에서 기술된 바와 같은 동적으로 구성 가능한 공유형 버퍼와 함께 상술한 바와 같은 다양한 구조, 동작, 기능 및/또는 단계들을 제공 및/또는 실시할 수 있다. 이전에 기술되고 도 9에서 도시된 바와 같이, 버퍼(910)는 내부 메모리(906)의 적어도 일부로부터 구성될 수 있다. 다양한 실시예들에서, 도 1의 시스템(100)은 비디오 하드웨어 가속 엔진(908) 및 공유형 버퍼(910)에 의해서 적어도 부분적으로 제공될 수 있다. 또한, 공유형 버퍼(910)와 함께 비디오 하드웨어 가속 엔진(908)은 집적 회로(902)에 제공된 비디오 데이터의 상이하게 포맷된 스트림들 A 및 B에 응답하여 본 명세서에서 기술된 바와 같은 도 2 및 도 7의 블록들 중 임의의 블록을 실시할 수 있다. 비디오 하드웨어 가속 엔진(908)은 현재 프로세싱 중인 비디오 스트림의 타입 및/또는 동작 코덱 모드에 응답하여 프리페치 버퍼 크기를 조절할 수 있다.
도 10은 본 교시 사항에 따른 예시적인 시스템(100)을 나타내고 있다. 시스템(1000)은 본 명세서에서 논의된 다양한 기능들 모두 또는 일부를 수행하는데 사용될 수 있으며 본 발명의 다양한 실시예들에 따라 다중 포맷 비디오 프로세싱을 위한 구성 가능한 버퍼 할당을 실시할 수 있는 임의의 디바이스 또는 이들의 집합을 포함할 수 있다. 가령, 시스템(1000)은 데스크탑, 모바일 컴퓨터, 태블릿 컴퓨터, 스마트폰, 셋탑 박스 등과 같은 컴퓨팅 플랫폼 또는 디바이스의 선택된 구성 요소들을 포함할 수 있으며, 본 발명은 이로만 한정되는 것은 아니다. 몇몇 실시예에서, 시스템(1000)은 CE 디바이스용의 Intel® 아키텍처(IA) 기반의 컴퓨팅 플랫폼 또는 SoC일 수 있다. 본 명세서에서 기술된 실시예들은 본 교시 사항의 범위를 벗어나지 않은 한 다른 프로세싱 시스템들에서 사용될 수 있음은 본 기술 분야의 당업자에게는 쉽게 이해될 것이다.
시스템(1000)은 하나 이상의 프로세서 코어들(1004)을 갖는 프로세서(1002)를 포함한다. 프로세서 코어(1004)는 적어도 부분적으로는 소프트웨어를 실행하고/하거나 데이터 신호들을 프로세싱할 수 있는 임의의 타입의 프로세서 로직일 수 있다. 다양한 실례들에서, 프로세서 코어(1004)는 CISC 프로세서 코어, RISC 마이크로프로세서 코어, VLIW 마이크로프로세서 코어, 인스트럭션 세트의 임의의 조합을 구현하는 임의의 개수의 프로세서 코어 또는 디지털 신호 프로세서 또는 마이크로제어기와 같은 임의의 다른 프로세서 디바이스들을 포함할 수 있다.
프로세서(1002)는 가령 디스플레이 프로세서(1008) 및/또는 그래픽 프로세서(1010)에 의해서 수신된 인스트럭션들을 제어 신호 및/또는 마이크로코드 엔트리 포인트들로 디코딩하는데 사용될 수 있는 디코더(1006)를 포함할 수 있다. 시스템(1000)에서는 프로세서 코어(1004)와는 구별된 구성 요소로서 예시되었지만, 프로세서 코어들(1004) 중 하나 이상은 디코더(1006), 디스플레이 프로세서(1008) 및/또는 그래픽 프로세서(1010)를 구현할 수 있음을 본 기술 분야의 당업자는 이해할 것이다. 몇몇 구현예에서, 디코더(1006)는 도 1 내지 도 9를 참조하여서 기술된 예시적인 프로세스들을 포함하는 본 명세서에서 기술된 임의의 프로세스를 실시하도록 구성된 비디오 디코더일 수 있다. 또한, 제어 신호 및/또는 마이크로코드 엔트리 포인트에 응답하여, 디스플레이 프로세서(1008) 및/또는 그래픽 프로세서(1010)는 대응하는 동작들을 수행할 수 있다.
프로세서 코어들(1004), 디코더(1006), 디스플레이 프로세서(1008) 및/또는 그래픽 프로세서(1010)는 시스템 상호접속부(1016)를 통해서 서로 통신 및/또는 동작 가능하게 연결되고/되거나 다음으로 한정되지 않지만은 가령 메모리 제어기(1014), 오디오 제어기(1018) 및/또는 주변 장치(1020)를 포함하는 다양한 다른 시스템 디바이스들과 시스템 상호접속부(1016)를 통해서 통신 및/또는 동작 가능하게 연결될 수 있다. 주변 장치(1020)는 가령 USB(unified serial bus) 호스트 포트, PCI(peripheral Component Interconnect) 익스프레스 포트, SPI(serial peripheral interface) 인터페이스, 확장 버스 및/또는 다른 주변 장치들을 포함할 수 있다. 도 10에서는 메모리 제어기(1014)가 상호접속부(1016)를 통해서 디코더(1006) 및 프로세서들(1008, 1010)에 접속된 것으로 도시되었지만, 다양한 실시예들에서, 메모리 제어기(1014)는 디코더(1006) 및 프로세서들(1008, 1010)에 바로 접속될 수 있다.
몇몇 구현예들에서, 시스템(1000)은 입출력 버스(미도시)를 통해서 도 10에서는 도시되지 않은 다양한 입출력 디바이스들과 통신할 수 있다. 이러한 입출력 디바이스들은 다음으로 한정되지는 않지만 가령 UART(universal asynchronous receiver/transmitter) 디바이스, USB 디바이스, 입출력 확장 인터페이스 또는 다른 입출력 디바이스들을 포함할 수 있다. 다양한 실시예들에서, 시스템(1000)은 모바일 통신, 네트워크 통신 및/또는 무선 통신을 실시하기 위한 시스템의 적어도 부분들을 나타낼 수 있다.
시스템(1000)은 메모리(1012)를 더 포함할 수 있다. 메모리(1012)는 DRAM 디바이스, SRAM 디바이스, 플래시 메모리 디바이스 또는 다른 메모리 디바이스들과 같은 하나 이상의 개별 메모리 구성 요소들일 수 있다. 도 10에서는 메모리(1012)가 프로세서(1002)의 외부에 있는 것으로 도시되었지만, 다양한 구현예들에서, 메모리(1012)는 프로세서(1002) 내부에 존재할 수 있다. 메모리(1012)는 프로세서(1002)에 의해서 실행될 수 있는 데이터 신호에 의해서 표현되는 인스트럭션 및/또는 데이터를 저장할 수 있다. 몇몇 구현예들에서, 메모리(1012)는 시스템 메모리부 및 디스플레이 메모리부를 포함할 수 있다.
상술한 시스템 및 이러한 시스템에 의해서 수행되는 상술한 바와 같은 프로세싱은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 임의의 조합에 의해서 구현될 수 있다. 또한, 본 명세서에서 기술된 임의의 하나 이상의 특징들은 개별 집적 회로 로직, ASIC 로직 및 마이크로제어기를 포함하여서 하드웨어, 펌웨어, 소프트웨어 또는 이들의 임의의 조합으로 해서 구현될 수 있으며 도메인 특정 집적 회로 패키지의 일부로서 또는 집적 회로 패키지들의 조합의 일부로서 구현될 수 있다. 본 명세서에서 사용되는 용어 "소프트웨어"는 컴퓨터 시스템으로 하여금 본 명세서에서 기술된 하나 이상의 특징들 및/또는 이들의 조합을 수행하도록 하는 컴퓨터 프로그램 로직을 그 내에 저장하고 있는 컴퓨터 판독 가능한 매체를 포함하는 컴퓨터 프로그램 제품을 지칭한다.
본 명세서에서 제공된 특징들은 다양한 실시예들을 참조하여서 기술되었지만, 상술한 설명은 한정적인 방식으로 해석되어서는 안 된다. 따라서, 본 기술 분야의 당업자에게는 명백한 본 명세서에서 기술된 실시예들의 다양한 수정 및 다른 실시예들은 본 발명의 기술적 사상 및 범위 내에 있다.
102: 드라이버 레지스터
104: 멀티플렉서
106: 제어 레지스터
108: 멀티플렉서(108)
110: 하드웨어 판독/기록(R/W) 인터페이스
112,115: 가산 로직
116,118: 인에이블 로직
120: 공유형 버퍼
122: 멀티플렉서
124: 메모리 요청 레이턴시 FIFO(first-in first-out)

Claims (15)

  1. 컴퓨터 구현형 방법(computer-implemented method)으로서,
    제 1 비디오 코덱 포맷과 연관된 제 1 판독 스트림 및 상기 제 1 비디오 코덱 포맷과는 다른 제 2 비디오 코덱 포맷과 연관된 제 2 판독 스트림의 프로세싱을 지원하도록 공유형 버퍼(shared buffer)를 구성하는 단계와,
    상기 제 1 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 제 1 버퍼 기록 어드레스를 결정하는 단계와,
    상기 제 2 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 제 2 버퍼 기록 어드레스를 결정하는 단계를 포함하며,
    상기 제 2 버퍼 기록 어드레스는 상기 제 1 버퍼 기록 어드레스와 상이하고,
    상기 제 1 판독 스트림 및 상기 제 2 판독 스트림의 프로세싱을 지원하도록 상기 공유형 버퍼를 구성하는 단계는 구성 데이터에 응답하여 상기 공유형 버퍼를 구성하는 단계를 포함하고, 상기 구성 데이터는 상기 제 1 판독 스트림과 연관된 제 1 소프트웨어 드라이버 및 상기 제 2 판독 스트림과 연관된 제 2 소프트웨어 드라이버에 의해 제공되는
    컴퓨터 구현형 방법.
  2. 제 1 항에 있어서,
    픽셀 데이터를 상기 제 1 버퍼 기록 어드레스에 기록하는 단계와,
    상기 공유형 버퍼로부터 상기 픽셀 데이터를 판독하는 단계를 더 포함하는
    컴퓨터 구현형 방법.
  3. 제 2 항에 있어서,
    제 2 픽셀 데이터를 상기 제 2 버퍼 기록 어드레스에 기록하는 단계와,
    상기 공유형 버퍼로부터 상기 제 2 픽셀 데이터를 판독하는 단계를 더 포함하는
    컴퓨터 구현형 방법.
  4. 제 1 항에 있어서,
    상기 공유형 버퍼는 프리페치 버퍼(pre-fetch buffer)를 포함하는
    컴퓨터 구현형 방법.
  5. 제 1 항에 있어서,
    상기 공유형 버퍼는 캐시 메모리를 포함하는
    컴퓨터 구현형 방법.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 구성 데이터는 상기 제 1 버퍼 기록 어드레스 및 상기 제 2 버퍼 기록 어드레스를 특정하는
    컴퓨터 구현형 방법.
  8. 제 1 비디오 코덱 포맷과 연관된 제 1 판독 스트림 및 상기 제 1 비디오 코덱 포맷과는 다른 제 2 비디오 코덱 포맷과 연관된 제 2 판독 스트림의 프로세싱을 지원하도록 공유형 버퍼를 구성하는 수단과,
    상기 제 1 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 제 1 버퍼 기록 어드레스를 결정하는 수단과,
    상기 제 2 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 제 2 버퍼 기록 어드레스를 결정하는 수단을 포함하며,
    상기 제 2 버퍼 기록 어드레스는 상기 제 1 버퍼 기록 어드레스와 상이하고,
    상기 제 1 판독 스트림 및 상기 제 2 판독 스트림의 프로세싱을 지원하도록 상기 공유형 버퍼를 구성하는 수단은 구성 데이터에 응답하여 상기 공유형 버퍼를 구성하는 수단을 포함하고, 상기 구성 데이터는 상기 제 1 판독 스트림과 연관된 제 1 소프트웨어 드라이버 및 상기 제 2 판독 스트림과 연관된 제 2 소프트웨어 드라이버에 의해 제공되는
    장치.
  9. 제 8 항에 있어서,
    픽셀 데이터를 상기 제 1 버퍼 기록 어드레스 및 상기 제 2 버퍼 기록 어드레스에 기록하는 수단과,
    상기 공유형 버퍼로부터 상기 픽셀 데이터를 판독하는 수단을 더 포함하는
    장치.
  10. 제 8 항에 있어서,
    상기 공유형 버퍼는 프리페치 버퍼를 포함하는
    장치.
  11. 삭제
  12. 제 8 항에 있어서,
    상기 구성 데이터는 상기 제 1 버퍼 기록 어드레스 및 상기 제 2 버퍼 기록 어드레스를 특정하는
    장치.
  13. 프로세서 및 상기 프로세서에 접속된 메모리를 포함하는 시스템으로서,
    상기 프로세서는 내부 메모리를 포함하며,
    상기 메모리 내의 인스트럭션들은 상기 프로세서로 하여금,
    제 1 비디오 코덱 포맷과 연관된 제 1 판독 스트림의 프로세싱을 지원하도록 상기 내부 메모리 내에 공유형 버퍼를 구성하게 하고,
    상기 제 1 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 제 1 버퍼 기록 어드레스를 결정하게 하고,
    제 2 비디오 코덱 포맷과 연관된 제 2 판독 스트림의 프로세싱을 지원하도록 상기 공유형 버퍼를 재구성하게 하고,
    상기 제 2 판독 스트림과 연관된 메모리 요청에 응답하여 상기 공유형 버퍼 내의 제 2 버퍼 기록 어드레스를 결정하게 하고,
    상기 제 1 판독 스트림의 프로세싱을 지원하도록 상기 내부 메모리 내에 공유형 버퍼를 구성하는 것은 상기 제 1 판독 스트림과 연관된 제 1 소프트웨어 드라이버에 의해 제공된 제 1 구성 데이터에 응답하여 상기 공유형 버퍼를 구성하는 것을 포함하고,
    상기 제 2 판독 스트림의 프로세싱을 지원하도록 상기 공유형 버퍼를 재구성하는 것은 상기 제 2 판독 스트림과 연관된 제 2 소프트웨어 드라이버에 의해 제공된 제 2 구성 데이터에 응답하여 상기 공유형 버퍼를 재구성하는 것을 포함하는
    시스템.
  14. 제 13 항에 있어서,
    상기 프로세서는 상기 제 1 판독 스트림과 연관된 제 1 구성 데이터 및 상기 제 2 판독 스트림과 연관된 제 2 구성 데이터를 저장하는 하나 이상의 레지스터를 더 포함하는
    시스템.
  15. 삭제
KR1020120065413A 2011-06-20 2012-06-19 다중 포맷 비디오 프로세싱을 위한 재구성 가능 버퍼 할당 KR101410168B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/163,969 2011-06-20
US13/163,969 US8484391B2 (en) 2011-06-20 2011-06-20 Configurable buffer allocation for multi-format video processing

Publications (2)

Publication Number Publication Date
KR20130001134A KR20130001134A (ko) 2013-01-03
KR101410168B1 true KR101410168B1 (ko) 2014-06-19

Family

ID=46640534

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120065413A KR101410168B1 (ko) 2011-06-20 2012-06-19 다중 포맷 비디오 프로세싱을 위한 재구성 가능 버퍼 할당

Country Status (6)

Country Link
US (3) US8484391B2 (ko)
EP (1) EP2538342B1 (ko)
JP (1) JP2013005452A (ko)
KR (1) KR101410168B1 (ko)
CN (1) CN102915280B (ko)
TW (1) TWI582689B (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8484391B2 (en) 2011-06-20 2013-07-09 Intel Corporation Configurable buffer allocation for multi-format video processing
KR101590098B1 (ko) * 2015-01-27 2016-01-29 홍익대학교 산학협력단 버퍼링 장치 및 방법
CN105812620B (zh) * 2016-03-30 2018-12-11 豪威科技(上海)有限公司 数据转换器及其工作方法
US11025933B2 (en) * 2016-06-09 2021-06-01 Apple Inc. Dynamic video configurations
US11226852B2 (en) 2016-11-25 2022-01-18 Genetec Inc. System for inter-process communication
US10999602B2 (en) 2016-12-23 2021-05-04 Apple Inc. Sphere projected motion estimation/compensation and mode decision
US11259046B2 (en) 2017-02-15 2022-02-22 Apple Inc. Processing of equirectangular object data to compensate for distortion by spherical projections
US10924747B2 (en) 2017-02-27 2021-02-16 Apple Inc. Video coding techniques for multi-view video
WO2018211131A1 (en) * 2017-05-19 2018-11-22 Movidius Ltd. Methods and apparatus for improving data transformation in processing devices
US11093752B2 (en) 2017-06-02 2021-08-17 Apple Inc. Object tracking in multi-view video
US10754242B2 (en) 2017-06-30 2020-08-25 Apple Inc. Adaptive resolution and projection format in multi-direction video
US11409436B2 (en) 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US10782916B2 (en) * 2018-08-08 2020-09-22 Micron Technology, Inc. Proactive return of write credits in a memory system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009081781A (ja) * 2007-09-27 2009-04-16 Panasonic Corp 動き補償装置及び動き補償方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5696940A (en) * 1995-09-29 1997-12-09 Intel Corporation Apparatus and method for sharing first-in first-out memory space between two streams of data
US6229850B1 (en) * 1997-07-22 2001-05-08 C-Cube Semiconductor Ii, Inc. Multiple resolution video compression
JP2000165784A (ja) * 1998-11-26 2000-06-16 Toshiba Corp データ再生装置及びデータ再生方法
JP2002171523A (ja) * 2000-09-22 2002-06-14 Matsushita Electric Ind Co Ltd 画像復号装置,画像復号方法,及びプログラム記憶媒体
US7574272B2 (en) * 2000-10-13 2009-08-11 Eric Paul Gibbs System and method for data transfer optimization in a portable audio device
JP2002232780A (ja) * 2001-01-31 2002-08-16 Kenwood Corp ディジタル信号復号装置及びディジタル信号復号方法
US7206904B2 (en) * 2002-03-20 2007-04-17 Hewlett-Packard Development Company, L.P. Method and system for buffering multiple requests from multiple devices to a memory
CN1299502C (zh) * 2002-06-20 2007-02-07 索尼株式会社 解码设备和解码方法
US20050253858A1 (en) * 2004-05-14 2005-11-17 Takahide Ohkami Memory control system and method in which prefetch buffers are assigned uniquely to multiple burst streams
US7710426B1 (en) * 2005-04-25 2010-05-04 Apple Inc. Buffer requirements reconciliation
US7769274B2 (en) * 2005-05-06 2010-08-03 Mediatek, Inc. Video processing and optical recording using a shared memory
US7903743B2 (en) * 2005-10-26 2011-03-08 Mediatek Inc. Memory sharing in video transcoding and displaying
CN100461866C (zh) * 2005-10-26 2009-02-11 联发科技股份有限公司 影像装置、影像处理系统及其方法
JP2007166597A (ja) * 2005-11-15 2007-06-28 Seiko Epson Corp 情報再生装置及び電子機器
US7356671B1 (en) * 2006-07-27 2008-04-08 Vbridge Microsystem, Inc. SoC architecture for voice and video over data network applications
US8537890B2 (en) * 2007-03-23 2013-09-17 Ati Technologies Ulc Video decoder with adaptive outputs
US8179964B1 (en) * 2007-09-07 2012-05-15 Zenverge, Inc. Efficient transcoding between formats using macroblock buffer
JP2009267837A (ja) * 2008-04-25 2009-11-12 Panasonic Corp 復号化装置
US8681861B2 (en) * 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
KR101609890B1 (ko) * 2008-09-18 2016-04-06 파나소닉 아이피 매니지먼트 가부시키가이샤 화상 복호 장치, 화상 부호화 장치, 화상 복호 방법, 화상 부호화 방법 및 프로그램
US9723319B1 (en) * 2009-06-01 2017-08-01 Sony Interactive Entertainment America Llc Differentiation for achieving buffered decoding and bufferless decoding
US8484391B2 (en) 2011-06-20 2013-07-09 Intel Corporation Configurable buffer allocation for multi-format video processing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009081781A (ja) * 2007-09-27 2009-04-16 Panasonic Corp 動き補償装置及び動き補償方法

Also Published As

Publication number Publication date
JP2013005452A (ja) 2013-01-07
EP2538342A2 (en) 2012-12-26
US20140013016A1 (en) 2014-01-09
EP2538342A3 (en) 2014-04-30
US8484391B2 (en) 2013-07-09
US9510007B2 (en) 2016-11-29
CN102915280A (zh) 2013-02-06
US20120324129A1 (en) 2012-12-20
EP2538342B1 (en) 2016-09-14
KR20130001134A (ko) 2013-01-03
CN102915280B (zh) 2016-01-27
US20150288977A1 (en) 2015-10-08
US9037761B2 (en) 2015-05-19
TWI582689B (zh) 2017-05-11
TW201304549A (zh) 2013-01-16

Similar Documents

Publication Publication Date Title
KR101410168B1 (ko) 다중 포맷 비디오 프로세싱을 위한 재구성 가능 버퍼 할당
US20210312668A1 (en) Real time on-chip texture decompression using shader processors
US10672098B1 (en) Synchronizing access to buffered data in a shared buffer
US20140086309A1 (en) Method and device for encoding and decoding an image
JP2018534607A (ja) プリフェッチを用いた効率的な表示処理
US20120066444A1 (en) Resolution Enhancement of Video Stream Based on Spatial and Temporal Correlation
US10043234B2 (en) System and method for frame buffer decompression and/or compression
CN105700821B (zh) 半导体装置及其压缩/解压缩方法
CN109478137B (zh) 用于通过信用管理进行共享资源分区的装置和方法
CN113994363A (zh) 用于波隙管理的方法和装置
WO2017000605A1 (zh) 片上系统、图形绘制方法、中间层及嵌入式设备、介质
US10110927B2 (en) Video processing mode switching
JP2003177958A (ja) 特殊メモリデバイス
JP2023547433A (ja) 計算ワークロードのラスタライゼーションのための方法および装置
JP2007201705A (ja) 画像処理装置、画像処理方法、プログラム及びコンピュータ読み取り可能な記録媒体
CN117435532B (zh) 基于视频硬件加速接口的拷贝方法、装置及存储介质
CN108804508B (zh) 一种存储输入图像的方法及系统
WO2013102958A1 (ja) メモリアクセス制御装置
TW202225962A (zh) 用於疊加複合的平面規劃
KR20140126841A (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
FPAY Annual fee payment

Payment date: 20170601

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180529

Year of fee payment: 5