KR100298533B1 - Mpeg비디오압축해제용방법및장치 - Google Patents

Mpeg비디오압축해제용방법및장치 Download PDF

Info

Publication number
KR100298533B1
KR100298533B1 KR1019970069392A KR19970069392A KR100298533B1 KR 100298533 B1 KR100298533 B1 KR 100298533B1 KR 1019970069392 A KR1019970069392 A KR 1019970069392A KR 19970069392 A KR19970069392 A KR 19970069392A KR 100298533 B1 KR100298533 B1 KR 100298533B1
Authority
KR
South Korea
Prior art keywords
memory
video
hardware
task
data structure
Prior art date
Application number
KR1019970069392A
Other languages
English (en)
Other versions
KR19990006296A (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25369331&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR100298533(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 내셔널 세미콘덕터 코포레이션 filed Critical 내셔널 세미콘덕터 코포레이션
Publication of KR19990006296A publication Critical patent/KR19990006296A/ko
Application granted granted Critical
Publication of KR100298533B1 publication Critical patent/KR100298533B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • 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
    • 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/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

Abstract

가용 시스템 메모리 및 연산 자원을 최적으로 이용하는 효과적인 방법으로 엔코딩된 MPEG 비디오 스트림을 디코드하는 신규한 장치 및 방법이 개시된다. 본발명은 MPEG 비디오 디코드 작업을 CPU 에 의해 실행되는 소프트웨어 작업 및 전용 비디오 하드웨어에서 실행되는 하드웨어 작업으로 분할한다. 소프트웨어 작업은 광대한 메모리나 연산 자원을 필요로 하지 않는 작업을 나타낸다. 반면, 전용 비디오 하드웨어에서 실행되는 작업은 연산-메모리 집약적인 작업을 수반하는 작업을 나타낸다. CPU 에 의해 실행되는 소프트웨어 작업 및 전용 비디오 하드웨어에서 실행되는 하드웨어 작업 사이의 동기화는 다양한 데이터 구조, 제어 구조, 및 소자 드라이버에 의해 달성된다.

Description

MPEG 비디오 압축해제용 방법 및 장치{APPARATUS AND METHOD FOR MPEG VIDEO DECOMPRESSION}
본 발명은 비디오 압축해제에 관한 것으로, 특히 가용 시스템 메모리 및 연산 자원을 최적으로 이용하여 효율적으로 MPEG 비디오를 디코드하는 장치 및 방법에 관한 것이다.
CCITT/ISO 위원회는 정지 및 동작 디지털 비디오용 일 세트의 압축 및 압축해제 알고리즘을 표준화하였다. 이 표준은 JPEG, MPEG 및 H.261 압축 구조를 포함한다. 이러한 표준은 화상회의, 교육 및 오락용 대화식 비디오에 기초한 DVD-ROM 이나 CD-ROM, 비디오나 정보 키오스크 (kiosk), VOD (video on demand) 응용, 위성 비디오송신 응용, 및 동작 디지털 비디오를 필요로 하는 다른 많은 응용에 공통으로 적용될 수 있다. 이러한 표준은 이산 코사인 변환 (Discrete Cosine Transform : DCT) 을 포함하는 변환 코드 압축 도메인 포맷 및 인터프레임 예정 코드 포맷을 사용한다. 동작 보상 (Motion Compensation : MC) 알고리즘이 DCT 포맷 및 다른 하이브리드 압축포맷에 따라 사용된다.
MPEG 표준은 정보기술에 관하여 JCCI (the Joint ISO/IEC Technical Committe) 체제 내에서 활동하는 동화상 코딩 전문가 그룹 (Moving Picture Coding Experts Group : MPEG) 에 의해 작성되었다. 이러한 작성은 동화상, 음성, 및 그들 조합의 코딩된 표현에 대한 표준을 제공하였다.
도 1 은 MPEG 비디오 데이터를 디코드하는데 적합한 전형적인 종래의 컴퓨터 시스템을 도시하는 블록다이어그램이다. 컴퓨터 시스템 (10) 은, 시스템 버스 (11), CPU (12), 코어 로직 (13), 시스템 메모리 (14), 및 하드디스크 (16) 와 같은 표준 시스템 구성요소를 포함한다. 컴퓨터 시스템 (10) 은 또한 비디오 기능에 특히 적합한 많은 소자를 포함하는데, CD-ROM 이나 DVD-ROM 을 독출하는 DVD-ROM 드라이브 (15), MPEG 디코더 (17) 및 이와 연관된 로컬 DRAM 메모리 (17A), 2D/3D 그래픽 제어기 (18), 및 이와 연관된 로컬 프레임 버퍼 DRAM (18A) 가 포함된다. 필요하다면, 컴퓨터 시스템 (10) 은 TV 상에 비디오를 디스플레이하기 위한 TV 인터페이스 (19) 및 모니터에 비디오 출력신호를 제공하기 위한 RGB 출력버스 (20)를 포함한다. 버스 (20) 상의 이러한 비디오 출력신호는 DVD-ROM 드라이브 (15) 이거나 그래픽 제어기 (18) 에 의해 생성된 전형적인 컴퓨터 그래픽이거나, 또는 양측 다 일 수 있다. 그래픽 제어기 (18) 는 또한 비디오 스케일링 및 색상 공간 변환 뿐만 아니라 2D/3D 그래픽 기능을 제공한다.
도 1 에서, 디코더 (17) 는 MPEG 비디오 데이터 스트림 압축해제/디코딩 작업을 수행하며, 따라서 컴퓨터 시스템 (10) 은 MPEG 1 이나 MPEG 2 비디오 압축 표준을 사용하는 멀티미디어 응용을 재생할 수 있다. MPEG 비디오 디코드작업은 가변길이 해독 (VLD), 역양자화 (IQ), 역 이산 코사인 변환 (IDCT), 동작 보상 (MC), 및 블록 재구성 (BR) 을 이용하여 압축 비디오 스트림을 파싱(parsing)하는 작업을 포함한다. 비디오 디코드작업은 연산 집약적 신호처리 작업을 수반하므로, MPEG 디코더 (17) 에 내장되는 하드웨어 로직이 복잡하고 그 결과 비싸다. 종래기술의 셋업의 또다른 문제점은, MPEG 디코더 (17) 가 CPU (12), 시스템 메모리 (14), 또는 그래픽 제어기 (18) 및 이와 연관된 메모리 (18a) 와 같은 시스템 구성요소에 의해 제공되는 연산 및 메모리 자원을 활용하지 못한다는 것이다. 이것은 가용 시스템 자원의 비효율적인 사용을 초래한다.
전술한 내용에 비추어, 본 발명의 목적은 효율적으로 MPEG 비디오 압축해제를 수행하는 장치 및 방법을 제공하는 것이다. 본 발명의 또다른 목적은 효율적인 MPEG 비디오 디코드를 수행할 뿐만 아니라 종래 기술의 비디오 디코드보다 구조적으로 단순하고 종래 기술의 비디오 디코드보다 값싼 비디오 압축해제 장치 및 방법을 제공하는 것이다. 본 발명의 또다른 목적은 연산 및 메모리 자원을 포함하는 시스템 자원을 최적으로 이용하여 비디오 디코드를 수행하는 장치 및 방법을 제공하는 것이다.
본 발명은 MPEG 비디오 디코드 작업을 CPU 에 의해 실행되는 소프트웨어 작업 및 전용 비디오 하드웨어에서 실행되는 하드웨어 작업으로 분할하는 신규한 장치 및 방법을 제공함으로써, 상술된 목적을 달성한다. 소프트웨어 작업은 집약적인 메모리나 연산 자원을 필요로하지 않는 작업을 나타낸다. 반면, 하드웨어에서 실행되는 작업은 연산 및 메모리 집약적인 작업을 수반하는 작업을 나타낸다.
소프트웨어 작업은 입력된 엔코드 MPEG 비디오 데이터 스트림을 예비처리하고, 각 프레임에 대해 예비처리된 정보를 시스템 메모리에 저장되는 심볼 스트림으로 기입한다. 전용 비디오 하드웨어는 시스템 메모리로부터 심볼 스트림을 검색하여 비디오 프레임의 처리를 완료한다. CPU 에 의해 실행되는 소프트웨어 작업과 전용 비디오 하드웨어에서 실행되는 하드웨어 작업 사이의 동기화는 다양한 데이터 구조, 전용 비디오 하드웨어와 연관된 소자 드라이버 및 소프트웨어에 의해 유지되는 제어구조를 통해 달성된다.
본 발명의 추가적인 특징은 첨부도면과 함께 다음의 상세한 기재 및 첨부된 청구범위로부터 분명해질 것이다.
본 발명의 따라, 압축 비디오 재생시스템을 저비용으로 실행할 수 있는 신규한 압축해제 구조 및 방법이 개시된다. 특히, 본 발명은 DVD, DVB, 비디오 CD 및 다른 응용을 지원하는 멀티미디어 컴퓨터 시스템내에서 MPEG 비디오 압축 표준을 사용하는 MPEG 1 및 MPEG 2 비디오 데이터 스트림을 재생하는 효율적이고 저비용인 구조 및 방법을 제공한다.
도 2 는 본발명에 따라 구성된 컴퓨터 시스템의 실시예를 도시하는 블록다이어그램이다. 본 발명에 따르면, 전용 MPEG 디코더 (17) 를 이용하는 도 1 의 종래기술의 비디오 디코드 시스템과는 달리, MPEG 디코더 (17) 에 의해 수행되는 비디오 디코드 작업이, CPU 상에서 실행되는 소프트웨어 작업 (12a) 및 신규한 전용 비디오 하드웨어 (118b) 에 의해 수행되는 작업으로 분할된다. 도 2 에 도시된 바와 같이, 일 실시예에서, 전용 비디오 하드웨어 (118b) 는 그래픽 제어기 (118) 에 내장되어 있다.
본 발명으로부터 알 수 있는 신규한 구조 및 방법은 종래기술의 비디오 디코더에 비하여 몇가지 효과 및 향상을 제공한다. 디코드 작업이 CPU (112) 상에서 실행되는 소프트웨어 작업 (112a) 에 의해 부분적으로 실행되기 때문에, 비디오 디코드 작업을 완료하기 위하여 필요한 전용 비디오 하드웨어 (118b) 의 복잡성이 상당히 감소된다. 복잡성이 감소함으로써, 디코더 하드웨어의 물리적인 크기가 감소하여, 공간 및 비용에 있어서의 절감효과를 가져온다.
소망의 전용 비디오 하드웨어 (118b) 가 그래픽 제어기 (118) (도 2 참조) 에 내장되면, 상당한 양의 집적회로 공간이 절감된다. 비디오 디코드 하드웨어가 그래픽 제어기 칩 (118) 과 PCI 버스 인터페이스 및 메모리 제어기를 공유하므로, 이러한 구성으로 인하여, 가용 시스템 자원을 효율적으로 활용할 수 있다. 또한, MPEG 디코더 (17) 가 비디오 프레임을 디코드하기 위하여, 그 자체의 별도의 전용 로컬 메모리 (17A) 를 필요로 하는 종래기술의 시스템과는 달리, 본 발명에서는, 비디오 프레임을 디코드하기 위해 필요한 메모리가 그래픽 제어기 프레임 버퍼 (118A) 와 공유되므로, 추가적인 메모리가 필요하지 않다. 이로 인하여 비용이 절감되고 가용 메모리 자원을 보다 효율적으로 활용할 수 있으므로, 전체 시스템의 복잡성 및 비용이 감소한다. 게다가, CPU (112) 및 전용 비디오 하드웨어 (118b) 사이의 디코드 작업의 분배에 의해, 가용 시스템 연산자원을 효율적으로 활용할 수 있다.
하드웨어 및 소프트웨어 사이의 디코드 작업 분할
도 3 은 압축된 MPEG 신호 데이터 스트림을 디코드하는데 연관된 다양한 작업을 도시한다. 들어오는 압축된 MPEG 데이터 스트림은 비디오 성분과 음성 성분으로 구성되어 있다. 다중화된 (multiplexed) 데이터 스트림은 우선 도 3 의 블록 (130) 으로 표시된 것처럼 음성 및 비디오 데이터 스트림 성분으로 역다중화 (demultiplex) 된다. 그 다음에, 음성 데이터 스트림이 음성 해독되고 (블록 132) 재생용 음성 랜더러 (renderer) (블록 134) 사운드 카드로 보내진다. 비디오 데이터 스트림은 비디오 디코드작업 (블록 136) 을 거쳐 재생용 비디오 랜더러 (블록 138) 디스플레이 장치로 보내진다. 비디오 디코드 작업 (블록 136) 은, 가변 길이 디코딩 (VLD) 을 사용하여 압축된 스트림을 파싱하고, 역 양자화 (IQ)를 수행하고, 역 이산 코사인 변환(IDCT)을 수행하고, 동작 보상(MC) 및 블록 재구성 (BR) 를 수행하는 작업을 포함한다.
본 발명에 따르면, 비디오 디코드 작업을 신규한 전용 비디오 하드웨어 (118b) 에 의해 수행되는 작업과 소프트웨어 작업으로 분할하는 제 1 단계는 집약적인 연산 및 메모리 작업을 필요로 하는 작업과 집약적인 연산이나 메모리 작업을 필요로 하지 않는 작업을 구분하는 것이다. 집약적인 연산 및 메모리 작업을 필요로 하지 않는 비디오 디코드 작업은 CPU (112) 상에서 실행되는 소프트웨어에 의해 수행되는 한편, 연산 및 메모리 집약적인 작업은 전용 비디오 하드웨어 (118b) 에 의해 수행되도록 할당되어 있다. 따라서, 비디오 디코드 작업을 소프트웨어 및 하드웨어 작업으로 분할하는 것은, CPU (112), 시스템 메모리 (14) 대역폭, 및 예를 들어, PCI 나 AGP 버스인 시스템 버스 (11) 상의 가용 대역폭에 의존한다.
도 4 및 도 5 는 CPU 실행에 기초한 2 개의 분할 실시예를 도시한다. 도 4 에 도시된 실시예에서, CPU (112) 에 의해 실행되는 소프트웨어 작업은, 가변 길이 디코딩 (VLD) 을 사용하여 압축된 비디오 비트스트림을 파싱하는 단계, 디코드된 계수를 역 양자화(IQ)하는 단계 및 역 이산 코사인 변환(IDCT)을 수행하는 단계를 포함한다. 블록 재구성 (BR) 및 동작 보상 (MC) 의 메모리 집약적인 작업은 전용 비디오 하드웨어 (118b) 에 의해 수행된다.
그러나, 도 5 에 도시된 실시예에서는, 역 이산 코사인 변환 (IDCT) 을 수행하는 작업은 연산/메모리 집약적인 작업으로 분류되고, 전용 비디오 하드웨어 (118b) 에서 실행된다. 상기한 바와 같이, 특정한 비디오 디코드 작업을 소프트웨어 작업과 하드웨어 작업으로 분할하는 것은, CPU (112) 의 성능, 시스템 메모리 (14) 대역폭 및 시스템 버스 (11) 상의 가용 대역폭과 같은 다양한 요소에 의존한다. 결과적으로, 특정한 실시예에서, 도 5 에 도시된 바와 같이, 역 이산 코사인 변환 (IDCT) 을 수행하는 작업은 연산/메모리 집약적인 작업으로 분류되고 전용 비디오 하드웨어 (118b) 에서 실행된다.
도 4 에 도시된 실시예는 도 5 에 도시된 실시예보다 CPU 를 보다 많이 활용한다. 반면에, 도 5 에 도시된 실시예는 CPU 에 대해 감소된 연산 로드(load) 를 선호하는 시스템에 적합하다. 비디오 디코드 작업을 소프트웨어 및 하드웨어 작업으로 분할하는 것이 특정한 컴퓨터 시스템의 연산 능력에 맞추기 위해 실행될 수 있음은 당업자에게 자명하다.
일 실시예에서, CPU (112) 상에서 실행되는 소프트웨어 작업은 한번에 한 프레임씩 압축 비디오 데이터 스크림을 처리한다. CPU (112) 는 각각의 프레임을 부분적으로 처리하고, 이 부분적으로 처리된 프레임 데이터를 심볼스트림이라고 불리는 고정 길이 심볼의 세트로서 포맷화한다. 이 심볼스트림은 후속 처리를 위하여 전용 비디오 하드웨어 (118b) 에 의해 접근가능한 시스템 메모리 (도 2 참조) 의 버퍼에 저장된다. CPU (112) 가 다음의 가용 비디오 프레임을 처리하고 있는 동안에, 전용 비디오 하드웨어 (118b) 는 이전에 연산된 프레임에 대하여 저장된 심볼스트림을 검색하기 위하여 버스 마스터 코드로 (CPU 개입 없이) 시스템 메모리 (14) 에 접근한다. 전용 비디오 하드웨어 (118b) 는 CPU (112) 에 의해 생성된 심볼 스트림을 해석하여 디코드된 비디오 프레임을 연산한다.
앞에서 설명된 것처럼, 전용 비디오 하드웨어 (118b) 는 CPU (112) 에 의해 시스템 메모리 버퍼에 저장된 심볼스트림 정보를 검색하기 위하여 버스 (11) 만을 이용하여 시스템 메모리 (14) 에 억세스한다. 전용 비디오 하드웨어 (118b) 에 의해 수행되는 동작 보상 (MC) 작업에 필요한 모든 차후의 메모리 억세스는 프레임 버퍼 (118a) 로부터 전용 비디오 하드웨어 (118b) 까지이다. 결과적으로, 본발명에 따른 분할은, CPU (112) 상의 연산 로드 (load) 를 감소시킬 뿐만 아니라 시스템 메모리 (14) 대역폭 활용을 감소시킨다.
하드웨어 및 소프트웨어 디코드 작업 사이의 동기화는 소프트웨어에 의해 조립되어 시스템 메모리 (14) 에 기입된 데이터 구조를 통하여 달성된다. 비디오 프레임을 처리한 후, CPU (112) 상에서 실행되는 소프트웨어는 부분적으로 처리된 비디오 프레임에 관한 정보를 저장하는 데이터 구조를 준비한다. 이러한 데이터 구조로의 포인터가 작업 포인터 (FIFO) 에 기입된다. 전용 비디오 하드웨어 (118b) 또는 시스템 메모리 (14) 에 거주하는 이 작업 포인터 (FIFO) 가 CPU (112) 에 의해 부분적으로 처리되고 전용 비디오 하드웨어 (118b) 에 의해 디코드되도록 준비된 비디오 프레임을 추적한다. CPU (112) 상에서 실행되는 소프트웨어는 계속하여 다음 비디오 프레임을 처리한다. 어떠한 CPU 개입도 없이, 전용 비디오 하드웨어 (118b) 는 작업 포인터 (FIFO) 를 가로질러 부분적으로 처리된 비디오 프레임에 대한 심볼스트림을 검색한다. 그 다음에, 전용 비디오 하드웨어 (118b) 가 부분적으로 처리된 비디오 프레임의 디코드를 완료한다. 전용 비디오 하드웨어 (118b) 가 디코딩을 완료하고 프레임이나 필드의 세트인 화상을 디스플레이할 때, CPU (112) 로 인터럽트를 보낸다. CPU (112) 상에서 실행되는 소프트웨어는 이러한 인터럽트를 이용하여 작업 포인터에 계류중인 작업 전체를 갱신하고 마지막으로 디스플레이된 프레임을 추적한다. 이하에서 소프트웨어-하드웨어 통신에 관한 보다 상세한 내용이 기재된다.
소프트웨어 및 전용 비디오 하드웨어 사이의 커뮤니케이션
앞에서 간략히 기재되었듯이, CPU (112) 상에서 실행되는 소프트웨어는 들어오는 압축된 MPEG 비디오 스트림을 부분적으로 처리하고, 이 부분적으로 처리된 심볼스트림을 시스템 메모리 (14) 에 기입한다. 전용 비디오 하드웨어 (118b) 는 이 심볼 스트림에 억세스하여 디코드 작업을 완료한다. 도 6 은 MPEG 비디오 디코드를 달성하기 위하여 전용 비디오 하드웨어 (118b) 와 CPU (112) 상에서 실행되는 소프트웨어 사이의 커뮤니케이션을 조정하는데 필요한 소프트웨어/하드웨어 구성요소 및 데이터 구조의 한 실시예를 나타낸다. 도 6 에 도시된 실시예에서 보여진 것처럼, 주 구성요소는 소프트웨어 클라이언트 (140) 라고 불리는 CPU (112) 상에서 실행되는 소프트웨어, 전용 비디오 하드웨어 (118b), 및 전용 비디오 하드웨어 (118b) 용 디바이스 구동기로서 기능하고 또한 CPU (112) 상에서 실행되는 하드웨어 추상계층 (Hardware Abstraction Layer; HAL) (142) 을 포함한다.
소프트웨어 클라이언트 (140) 는 CPU (112) 상에서 실행되는 소프트웨어를 나타내고, 입력된 MPEG 비디오 데이터 스트림을 부분적으로 디코드하는 것을 책임진다. 앞에서 기재된 것처럼, 일 실시예에서 (도 5 에 도시) 소프트웨어 클라이언트 (140) 는 압축된 비디오 비트 스트림 파싱 및 가변 길이 디코딩(VLD) 과 역 양자화 (IQ) 와 같은 다른 비디오 디코드 작업을 수행하는 한편, 선택적인 실시예에서는 역 이산 코사인 변환 (IDCT) (도 4 에 도시됨) 을 수행한다. 현재의 비디오 프레임을 부분적으로 처리한 후, 소프트웨어 클라이언트 (140) 는 부분적으로 처리된 데이터를 심볼스트림 (144a,144b) 의 형태로 포맷화한다. 일 실시예에서, HAL (142) 은 심볼스트림을 시스템 메모리 (14) 에 저장하는데 필요한 버퍼 영역을 할당한다. 심볼스트림은 시스템 메모리 (14) 있는 버퍼 (114a,114b) 의 할당된 버퍼 공간에 기입된다. 소프트웨어 클라이언트 (140) 는 또한 디스플레이 및 디코드 작업용 제어 정보를 소프트웨어 작업 정의 패킷 (STDP) 에 기입한다. STDP 는 시스템 메모리 (14) 에 있는 HAL (142) 에 의해 할당된 버퍼 (146a,146b) 에 저장된다. 전용 비디오 하드웨어 (118b) 는 STDP 에 저장된 제어 정보에 따라 심볼스트림을 사용하여 MPEG 비디오 프레임의 디코드 및 디스플레이를 완료한다. 일 실시예에서, STDP 는 짜맞추어진 디스플레이 장치를 위하여 VSYNC 극성, 디스플레이 지속기간, 디스플레이 버퍼 지수, 및 소오스 및 목표 버퍼 지수를 특정한다. 심볼스트림 및 심볼스트림 버퍼에의 가상 어드레스 포인터가 또한 STDP 에 기입된다. IDCT 및 동작벡터 정보는 심볼스트림에 저장된다. 당분야에서 당업자에게 자명한 다른 실시는 본 발명의 범위내에서 포함된다.
HAL (142) 은 전용 비디오 하드웨어 (118b) 용 디바이스 구동기로서 기능한다. HAL (142) 은 소프트웨어 클라이언트 (140) 에 의해 예정된(scheduled) 디스플레이 및 디코드 작업을 수신하고, 실행을 위하여 이러한 작업이 전용 비디오 하드웨어 (118b) 에 사용될 수 있도록 한다. HAL (142) 에 의해 수행되는 작업은 소프트웨어 클라이언트 (140) 용 일시적인 저장 영역 (148) 을 제공하고, 작업의 FIFO 을 유지하고, 심볼스트림 버퍼의 실질적인 어드레스 맵핑용 페이지 테이블을 제공하는 것을 포함한다. HAL (142) 은 또한 전용 비디오 하드웨어 (118b) 에 의해 생성된 인터럽트에 의해 신호될 때 작업 완료를 추적한다. 부가적으로, HAL 은 시스템 메모리 (14) 에 저장된 STDP 를 특별한 시스템의 특정한 하드웨어 배치에 따라 하드웨어 작업 정의 패킷 (HTDP) 으로 변환한다. 일 실시예에서, STDP 로부터 HTDP 로의 변환은 디코드 작업 중에 이루어진다.
HAL (142) 은 "획득" 및 "릴리즈" 기능 호출을 이용하여 소프트웨어 클라이언트 (140) 과의 활동을 조정한다. 획득 기능을 호출하자마자, HAL (142) 은 STDP 용 저장 버퍼를 할당하고, STDP 로의 포인터 (LPDataPtr) (150) 를 소프트웨어 클라이언트 (140) 로 되돌린다. 소프트웨어 클라이언트 (140) 는 압축된 MPEG 비디오 데이터 스트림의 예비처리를 수행하고 STDP 데이터 패킷을 채운다. 예비처리 작업을 완료하자마자, 릴리즈 기능이 호출된다. 릴리즈 기능이 호출되자마자, HAL 은 STDP 를 HTDP 구조로 번역하고 작업 FIFO 카운트를 갱신한다.
HAL (142) 은 작업 FIFO (150) 이라 불리는 대기 행렬 데이터 구조를 위하여 저장 영역을 할당하고 유지한다. HAL 은 초기화 단계 동안에 작업 FIFO (150) 를 만든다. STDP 와는 달리, 작업 FIFO (150) 는 정적인 데이터 구조이고 일 실시예에서는 4KB 의 길이를 가지며, 페이지 경계에서 개시한다. 일 실시예에서, HAL (142) 에 의해 만들어진 작업 FIFO (150) 는 적어도 8 엔트리 깊이를 가진다. 작업 FIFO (150) 의 각각의 엔트리는 HAL (142) 에 의해 만들어진 HTDP (154) 를 포함한다. 앞에서 기재된 것처럼, HAL (142) 은 소프트웨어 클라이언트 (140) 에 의해 STDP 에 공급된 정보로부터 HTDP (154) 를 유도한다. HAL (142) 은, 소프크웨어 클라이언트 (140) 가 릴리즈 기능 호출을 내보낼 때, 작업 FIFO (150) 에 엔트리를 추가한다. HAL (142) 은, 전용 비디오 하드웨어 (118b) 가 작업 완료 인터럽트를 신호할 때, 작업 FIFO (150) 으로부터 엔트리를 제거한다. 소프트웨어 클라이언트 (140) 에 의해 수행되는 작업과 작업 FIFO (150) 의 엔트리의 수 사이에는 일대일 대응 관계가 있다. 만일, 일대일 대응 관계가 유지되지 않는다면, 소프트웨어 클라이언트 (140) 에 의해 프로그램된 작업의 완료를 정확히 추적하는 것은 HAL (142) 의 책임이다. 작업 FIFO (150) 에 있는 엔트리의 수는 전용 비디오 하드웨어 (118b) 에 의하여 완료되도록 소프트웨어 클라이언트 (140) 에 의해 내보내어진 작업의 수를 반영한다.
앞에서 언급되었듯이, 심볼스트림 (144a,144b) 은 부분적으로 디코드된 MPEG 비디오 데이터를 포함한다. 소프트웨어 클라이언트 (140) 는 들어오는 압축된 비디오 데이터 스트림을 파스하는 대로 심볼스트림 버퍼를 기입한다. 이 버퍼에의 포인터 및 버퍼 길이는 획득 기능을 호출한 후 소프트웨어 클라이언트에 의해 STDP 로 기입된다. HAL (142) 은 실질적인 어드레스 맵핑을 제공하기 위하여 릴리즈 기능을 호출하는 동안에 심볼스트림 버퍼용 페이지 테이블을 만든다. 이러한 페이지 테이블의 베이스 어드레스는 HAL (142) 에 의해 HTDP (154) 로 기입되고 작업을 처리할 때 전용 비디오 하드웨어 (118b) 에 의해 로드된다.
작업 포인터 FIFO (156) 는 전용 비디오 하드웨어 (118b) 나 시스템 메모리 (14) 에 거주한다. 도 7 에 도시된 실시예에서, 작업 포인터 FIFO (156) 는 전용 비디오 하드웨어 (118b) 에 의해 유지된다. 작업 포인터 FIFO (156) 의 각각의 유효한 엔트리는 HAL (142) 에 의해 유지되는 작업 FIFO (150) 의 작업에 대한 지수이다. 일 실시예에서는, 작업 포인터 FIFO (156) 는 3 비트의 넓이 및 적어도 8 엔트리의 깊이를 갖는다. 전용 비디오 하드웨어 (118b) 에 의해 처리되는 작업은 디스플레이만을, 즉 디코드 및 디스플레이 작업만을 포함한다. 이러한 정보는 HTDP (154) 에 담겨진 프로그래밍 파라미터에 저장된다. 이러한 프로그래밍 파라미터는 디코드 작업 타입, 디스플레이 작업 타입, 디스플레이 버퍼 지수, 프레임/필드 디스플레이 기간 등을 포함한다. 디코드 작업이 특정된다면, 하드웨어 (118b) 는 버스 마스터 모드인 시스템 메모리 (14) 로부터 심볼스트림을 독출하고, 명령을 해석하고, 디코드된 프레임을 로컬 프레임 버퍼에 재건한다. 전용 비디오 하드웨어 (118b) 는 작업 완료 인터럽트를 생성함으로써 프레임 디코드 및 디스플레이의 완료를 명령한다. HAL (142) 는 이러한 인터럽트를 찾아내고 이를 이용하여 현재 디스플레이되는 프레임 및 계류중인 작업의 수를 추적한다.
전용 비디오 하드웨어 (118b) 가 현재의 작업을 처리하고 있는 동안, CPU (112) 는 작업 FIFO (150) 엔트리가 이용가능할 때 프로그램되는 다음 작업을 준비한다. 전용 비디오 하드웨어 (118b) 는 또한 사용자가 소프트웨어-하드웨어 통신 규약을 보다 잘 제어하도록 상태 및 제어 레지스터를 유지한다.
디스플레이 및 디코드 작업에 대한 처리
도 8a 는 본 발명의 일 실시예에 따른 디스플레이 및 디코드 작업을 수행하기 위하여 소프트웨어 클라이언트 (140) 및 HAL (142) 에 의해 실행되는 다양한 단계를 도시한다. 도 8a 에 도시된 것처럼, 제 1 단계는 블록 (164) 으로 나타낸 초기화 단계이다. 초기화에서, HAL (142) 은 동작 보상 작업이라는 것을 나타내는 특정한 확인번호를 만들어낸다. 일 실시예에서, 이러한 확인번호는 MMMC 의 코드 확인이다. 소프트웨어 클라이언트 (140) 는 이러한 필드를 테스트하여 전용 비디오 하드웨어 (118b) 가 컴퓨터 시스템 (100) 에 존재하는지 여부를 판정한다. 다음으로 HAL (142) 은 4KB 시스템 메모리 버퍼를 할당하여 작업 FIFO (150) 을 만들어낸다. 한 실시예에서, 작업 FIFO (150) 는 4K 경계상에서 개시한다. HAL (142) 은 또한 디코드 저장 구조, MPEG 비디오에 대한 디스플레이 비율, 및 인터럽트 제어와 같은 작업 관련 파라미터와 함께 전용 비디오 하드웨어 레지스터를 프로그램한다. 작업 FIFO (150) 의 개시 어드레스 및 바이트 단위의 각각의 엔트리의 크기가 전용 비디오 하드웨어 (118b) 에 있는 작업 FIFO 베이스 어드레스 레지스터에 기입된다. HAL (142) 은 또한 디스플레이 장치에 대한 재생 비율을 세팅하기 위하여 적당한 작동 시스템 기능 (158) 을 불러낸다. 그 사이에, 소프트웨어 클라이언트 (140) 는 디코드 및 디스플레이 작업에 관련된 정보를 기입한다. 이러한 정보는 인코딩된 프레임 비율, 블록 상호간의 IDCT 의 포맷 및 동작 벡터 데이터, 및 인터럽트 제어 파라미터를 포함한다.
성공적인 초기화가 이루어진 후, 소프트웨어 클라이언트 (140) 는 획득 요구를 HAL (142) (도 8a 에서 블록 (166) 으로 표시됨) 로 내보낸다. 이 획득 요구는 STDP FIFO 이 하나 이상의 자유 엔트리를 갖는 경우에 계속된다. 획득이 계속되면, HAL (142) 은 STDP 용 일시적인 저장 버퍼 (도 6 에서 148) 를 만들고 포인터 (LPDataPtr) (152) 를 이 버퍼에 되돌린다. HAL (142) 은 또한 작업 FIFO (150) 에 계류중인 작업의 수를 특정하기 위하여 fifo_엔트리 필드를 기입한다. 획득 기능으로부터의 성공적인 리턴이 있을 때, 소프트웨어 클라이언트 (140) 는 포인터 (LPDataPtr) (152) 에 의해 지정되는 일시 저장 버퍼 (148) 의 STDP 에 있는 작업_카운트 필드에 작업의 수를 기입한다. 각각의 STDP 는 또한 심볼스트림 버퍼의 가상 개시 어드레스를 지정하는 포인터를 갖는다. 한 실시예에서, 심볼 버퍼가 초기에 HAL (142) 에 의해 할당되고, 이 경우에, 심볼스트림 버퍼를 지정하는 포인터가 STDP 에 기입된다.
도 8a 의 블록 (168) 은 소프트웨어 클라이언트 릴리즈 동작을 나타낸다. 소프트웨어 클라이언트 (140) 는 다음 작업을 STDP 로 코딩하고 심볼스트림을 준비한 후에 릴리즈 기능을 호출한다. 릴리즈 기능이 호출된 후, HAL (142) 은 STDP 제어 정보를 적당한 독출가능 포맷 상태에 있는 HTDP (154) 로 변환한다. HAL (142) 은 또한, STDP 에 있는 버퍼 길이 정보 및 가상 어드레스 포인터를 이용하여, 심볼스트림 버퍼의 실제적인 어드레스 맵핑용 페이지 테이블을 만든다. HAL (142) 은 전용 비디오 하드웨어 (118b) 에 있는 페이지 테이블 포인터 레지스터의 이러한 페이지 테이블에 포인터를 기입한다. HAL (12) 은 이 때, 작업의 지수를 다음의 가용 작업 포인터 FIFO (156) 엔트리에 기입함으로써, 전용 비디오 하드웨어 (118b) 에 새로운 작업의 유효성을 통지한다.
도 8a 의 블록 (170) 은 작업 완료 통지 단계를 나타낸다. 디코드 및 디스플레이 작업의 성공적인 완료시에, 전용 비디오 하드웨어 (118b) 는 제어 레지스터의 인터럽트 제어에 대한 세팅에 따라 인터럽트를 내보낸다. 인터럽트 핸들러로서 작동하는 HAL (142) 은 작업 FIFO (150) 의 해당하는 엔트리를 파핑 (poping) 시키고 작업 FIFO (150) 에 있는 엔트리의 수를 갱신하여 미해결 작업의 정확한 수를 반영한다. 이러한 단계는 주어진 디코드 및 디스플레이 작업의 성공적인 완료를 나타낸다.
전용 비디오 하드웨어용 작업 핸들러
도 8b 는 하드웨어 (118b) 의 작업 핸들러에 의해 수행되는 동작의 시퀀스를 도시한다. 도 8b 에 도시된 대로, 작업 핸들러는 현재의 작업이 완료되기를 기다려서 실행가능한 새로운 작업이 다음 VSYNC 상에서 개시되도록 이용될 수 있는지를 체크한다. 전용 비디오 하드웨어 (118b) 에 의해 유지되는 작업 포인터 FIFO (156) 가 비어있지 않다면, 새로운 작업이 이용가능하다. 새로운 작업이 이용가능하다면, 단계 (174) 에서, 전용 비디오 하드웨어 (118b) 는 다음 HTDP 의 개시 어드레스를 계산하고, HTDP 를 로드한다. 다음 방정식은 다음 HTDP 의 개시 어드레스를 계산하기 위하여 이용된다.
다음 HTDT 개시 어드레스 = HTDP_Base_Addr + (Next_Task_Pointer_Value * HTDP_Size) 다음으로, 단계 (176) 에서, 전용 비디오 하드웨어 (118b) 는 새로운 작업이 실행가능한지 여부를 판정한다. 즉, 다음 VSYNC 극성이 작업 개시 VSYNC 극성과 부합한다면 작업은 실행가능하다. 작업이 실행가능하다면, 작업 핸들러는 단계 (180) 을 진행하고, 그렇지 않다면, 다음 VSYNC 가 작업을 개시하기를 기다린다.
단계 (180) 에서, 작업 핸들러는 디스플레이 및 디코드 작업을 개시한다. 실행되는 작업은 HTDP 로부터의 정보를 이용하여 전용 비디오 하드웨어 (118b) 레지스터를 프로그램함으로써 예정된다. 디코드가 특정된다면, 심볼스트림 버퍼 페이지 테이블을 지정하는 포인터는 페이지 테이블 포인터 레지스터로 로드된다. 작업 포인터 FIFO 로부터의 현재 엔트리가 파핑된다. 단계 (182) 및 단계 (184) 에서, 작업 핸들러는 예정된 작업이 완료되기를 기다린다. 즉, VSYNC 의 수가 제 1 필드 디스플레이 기간 + 제 2 필드 디스플레이 기간 - 1 과 동일하기를 기다린다. 작업 핸들러는, 그 후, 단계 (172) 로 돌아와서 진행한다.
전용 비디오 하드웨어 (118b) 는 다음 차례 슬라이스의 디스플레이가 정의되지 않는다면 마지막 프레임이나 필드를 반복하는데, 그 이유는 마지막 디코드 작업이 완료되지 않았기 때문이거나 다음 작업이 아직 소프트웨어에 의해 프로그램되지 않았기 때문이다.
심볼스트림 구문
심볼스트림 데이터는 CPU (112) 상에서 실행되는 소프트웨어에 의해 예비전처리된 비디오 데이터를 나타내고, 차후의 디코드를 위해 전용 비디오 하드웨어 (118b) 에 전송될 준비가 되어 있다. 심볼스트림의 일 실시예에 대한 구문(syntax)이 이하에 기재된다 (기재된 실시예에 대하여 각각의 데이터 요소는 16 비트 워드임).
전용 비디오 하드웨어 내에서 동작 보상 및 블록 재구성에 대한 준비가 된 심볼스트림 (도 4 에 도시된 한 실시예에 대응함)
NOOP; //optional no-op.
PICTURE_START; //picture start code
if(idct_type = packed)limit = 22;
if(idct_type = 8-bit signed)limit = 32;
if(idct_type = 16-bit signed)llimit = 64;
while (MBLK_TYPE){; //macroblock header and type info
if(!intra){
FRMREF_PTR; //src pointer info
}
if(aMV){ //if'A' ref or Concealment Vector, 'A' motion vector...
if(abs_addr){
A_YBLK_ADDR; //Luminance block address
}
else{
A_HOFF;
A_VOFF;
}
}
if((aMV)&&(2nd_MV)){ //if a 2nd 'A' motion vector...
if(abs_addr) {
A_YBLK_ADDR_2ND;
}
else{
A_HOFF_2ND;
A_VOFF_2ND;
}
}
if(bMV){ //if a backward ('B') motion vector...
if(abs_addr){
B_YBLK_ADDR; //Luminance block address
}
else{
B_HOFF;
B_VOFF;
}
}
if((bMV)&&(2nd MV)){ //if a 2nd 'B' motion vector...
if(abs_addr){
B_YBLK_ADDR_2ND;
}
else{
B_HOFF_2ND;
B_VOFF_2ND;
}
}
if((∼intra)&&(pat)){
PATTERN; //macroblock pattern
}
if(intra){ //intra block IDCT data always 8-bit unsigned
for(i=0;i<6;i++){
for(p=0;p<32;p++){
INTRA_BLKDATA[p];
} //end-of-block reached
}
}//end of intra macroblock data
else {
if(pat){
//number of 'l' bits in PATTERN FOR Y blocks.
n=one_count(PATTERN[3:0]);
for(i=0;i<n;i++)( //block info only for non-zero blocks.
for(p=0;p<limit;p++){
INTER_BI,KDATA[p];
} //end-of-block reached
}
} //end of Y block data
if((aMV)&&(abs_addr){ //'A' motion vector...
A_CBLK_ADDR; //Chrominance block address
}
if((aMV)&&(2nd_MV)&&(abs_addr)){
//if a 2nd 'a' motion vector...
A_CBLK_ADDR_2ND;
}
if((bMV)&&(abs_addr)){ //'B' motion vector...
B_CBLK_ADDR;
}
if((bMV)&&(2nd_MV)&&(abs_addr)){
//if a 2nd 'B' motion vector...
B_CBLK_ADDR_2ND;
}
if(pat){
n=one_count(PATTERN[5:4]);
//number of '1' bits in PATTERN for Cb, Cr blocks.
for(i=0;i<n;i+ +){
for(p=0;p<limit;p+ +){
INTER_BLKDATA[p];
} //end-of-block reached
} //end of block data
}//End of chrominance data
}//end of non-intra macroblock data )
}//end of all macroblocks
PICTURE_END;
전용 비디오 하드웨어 내에서 IDCT, 동작 보상 및 블록 재구성에 대한 준비가 된 심볼스트림 (도 5 에 도시된 실시예에 대응함)
NOOP; //optional no-op.
PICTURE_START; //picture start code
while (MBLK_TYPE){; //macroblock header and type info
if(!intra){
FRMREF_PTR; //src pointer info
}
if(aMV){ //if'A' ref or Concealment Vector, 'A' motion vector...
if(abs_addr){
A_YBLK_ADDR; //Luminance block address
}
else{
A_HOFF;
A_VOFF;
}
}
if((aMV)&&(2nd_MV)){ //if a 2nd 'A' motion vector...
if(abs_addr){
A_YBLK_ADDR_2ND;
}
else{
A_HOFF_2ND;
A_VOFF_2ND;
}
}
if(bMV){ //if a backward ('B') motion vector...
if(abs_addr){
B_YBLK_ADDR; //Luminance block address
}
else{
B_HOFF;
B_VOFF;
}
}
if((bMV)&&(2nd_MV)){ //if a 2nd 'B' motion vector...
if(abs_addr){
B_YBLK_ADDR_2ND;
}
else{
B_HOFF_2ND;
B_VOFF_2ND;
}
if((!intra)&&(pat)){
PATTERN; //macroblock pattern
}
if(intra){
for (i=0;i<6;i ++){
while(!eoblk){
zlen:coeff;
}
eoblk; //end-of-block reached
}
}//end of intra macroblock data
else{
if(pat){
//number of 'l' bits in PATTERN for Y blocks
n=one_count(PATTERN[3:0]);
for(i=0;i<n;i++){ //block info only for non-zero blocks
while(!eoblk){
zlen:coeff;
}
eoblk; //end-of-block reached
} //end of Y block data
}
if((aMV)&&(abs_addr){ //'A' motion vector...
A_CBLK_ADDR; //Chrominance block address
}
if((bMV)&&(2nd_MV)&&(abs_addr)){//if a 2nd 'a' motion vector...
A_CBLK_ADDR_2ND;
}
if((bMV)&&(abs_addr)){ //'B' motion vector...
B_CBLK_ADDR;
}
if((bMV)&&(2nd_MV)&&(abs_addr)){//if a 2nd 'B' motion vector...
B_CBLK_ADDR_2ND;
}
if((bMV)&&(2nd_MV)&&(abs_addr)){//if a 2nd 'B' motion vector...
B_CBLK_ADDR_2ND;
}
if(pat){
//number of 'l' bits in PATTERN for Cb, Cr blocks.
n=one_count(PATTERN[5:4]);
for(i=0;i<n;i++){ //block info only for non-zero blocks.
while(!eoblk){
zlen:coeff;
}
eoblk; //end-of-block reached
}
} //end of non-intra chrominince data
} //end of non-intra macroblock data
}//end of all macroblocks
PICTURE_END;
테이블 (1) 은 본 발명의 일 실시에에 따른 상기 심볼 스트림에 사용되는 다양한 심볼에 대한 기재를 제공한다. 테이블 (1) 의 W 는 16 비트 워드를 나타낸다.
Figure pat00001
Figure pat00002
16 비트 워드의 양자화된 계수를 패킹하는 것을 용이하게 하기 위하여, 제로 런 길이가 4 비트로 인코딩된다. MPEG2 스트림이 63 까지의 런 길이를 특정함으로써, 이러한 접근법은 다수의 워드로 분할하기 위하여 15 개의 제로보다 큰 런 길이를 필요로 하고, 때때로 제로의 값을 취하는 계수를 초래한다. 예를 들어,계수 27 이 이어지는 35 개의 제로의 수열은 다음과 같이 인코딩된다. 즉, (15:0), (15:0), (5:27) 로 인코딩되는데, 여기서 각 쌍의 첫번째 수는 ZLEN 이고 두번째 수는 계수이다. 특정되지 않거나 'reserved' 라고 표시된 모든 비트는 0 으로 독출되고 기입된다. IDCT_TYPE 은 IDCT 데이터를 포맷하는 3가지 다른 방법을 나타낸다. 이 방법들은 16 비트, 9 비트, 및 8 비트로 표시되어 패킹되도록 데이터가 변환된다.
음성 및 비디오 디코딩 작업의 동기화
CPU 상에서 실행되는 소프트웨어는 MPEG 비디오 데이터스트림의 비디오 및 음성 성분 사이의 동기화 유지를 책임진다. 비디오가 음성에 앞서 실행되면, 소프트웨어는 전용 비디오 하드웨어로 작업을 내보내는 것을 지연하고, 비디오가 음성보다 늦다면 소프트웨어는 B 프레임 디코드를 스킵한다.
전용 비디오 하드웨어 (118b) 는 완전히 디코드된 프레임만을 디스플레이하도록 제한된다. 이러한 디스플레이-전-디코드(decode-before-display) 구성은 시스템 버스 (11) 상에서 데이터 전송중의 방해가 훼손된 이미지 (찢김 등) 를 스크린 상에 디스플레이하는 결과를 초래하지 않는다는 것을 보장한다.
디스플레이-전-디코드 제한은, 하나의 B 프레임의 디코드가 이전의 B 프레임이 스크린에 디스플레이되는 동안에 진행될 수도 있도록, 메모리 (118a) 에 4 개 프레임 스토어를 필요로 한다. 정상적으로 이것은 YUV 4:2:0 PAL 해상도 화상 (576 라인) 에 대하여, 2.5 메가바이트의 저장용량을 필요로 한다. 그러나, 본 발명에 다른 최적화로 인하여 MPEG 2 비디오 압축해제는 2 메가바이트의 RAM 만으로 충분하다. 이것은 2 개의 기준 프레임 (I/P) 및 3 개의 B 필드를 아래에 기재된 대로 프레임 버퍼 (118a) 에 저장함으로써 달성된다. 본 발명에 따르면, NTSC 해상도 화상 (480 라인) 은 전용 비디오 하드웨어 (118b) 에 의해 2 메가바이트의 RAM 만으로 충분히 저장될 수 있다. 이것은 실제적인 메모리 한계로 인하여 PAL 화상에 대한 윈도우잉 (windowing) 이나 해상도의 손실을 초래하지만, 비디오 품질에 대한 그 효과는 극미하다.
프레임 버퍼 데이터 조직
초반부에 언급되었듯이, 본 발명은 MPEG 1 및 MPEG 2 비디오 디코딩을 할 수 있다. 본 발명의 일실시예에 따르면, 가용 메모리 공간을 혁신적으로 사용함으로써, 종래의 기술에서 요구되는 2.5 메가바이트 대신에 2 메가바이트의 RAM 을 사용하여 MPEG 2 비디오 디코딩이 달성될 수 있다. 이하에서는, 2 MB 이하를 갖는 NTSC & PAL 해상도 화상용 프레임 버퍼의 데이터 조직에 관하여 기재된다.
이상적으로는, 디스플레이-전-디코드 구성은 프레임 버퍼 (118a) 에 적어도 4 개의 프레임 스토어를 필요로 한다. 4 개의 완전 플레임을 저장하는 것은 PAL 해상도 화상을 위해서 대략 2.5 MB 의 RAM 을 필요로 하고, NTSC 해상도 화상을 위해서는 대략 2 MB 의 RAM 을 필요로 한다. 추가적인 53 킬로바이트의 저장용량이 산업용으로 널리 쓰이는 DVD 명세서에 기재된 서브화상 특성을 지원하기 위해서 필요하다. 테이블 (2) 및 테이블 (3) 은 각각 NTSC 및 PAL 해상도 화상용으로 필요한 저장용량을 나타내고, 4 개의 프레임 스토어를 위한 프레임 버퍼 (118a) 에서의 데이터 조직은 도 9 에 도시된다.
Figure pat00003
Figure pat00004
만일 프레임 버퍼 (118a) 가 4 개의 완전 프레임 스토어 모두를 수용할 수 없으면, 프레임 버퍼 (118a) 에 있는 2 개의 기준 (I/P) 프레임 및 3 개의 B 화상 필드, 즉, 3.5 프레임 스토어를 이용하여 MPEG 2 디코딩이 수행된다. 3 개의 B 필드 중에서 하나는 디스플레이용으로 할당되는 한편, 다른 두개는 디코드용으로 할당될 수 있으므로, 화상의 찢김이 발생하지 않는다는 것을 보장한다. 이것은 테이블 (4) 와 테이블 (5) 및 도 10 에 도시된다.
Figure pat00005
Figure pat00006
PAL 포맷을 위하여 3.5 프레임 버퍼를 저장하는데 필요한 메모리는 프레임 버퍼 (118a) 의 용량 2 MByte 보다 더 크다. 많은 프래픽 카드가 2 MByte 의 RAM 만을 갖추므로, 전용 비디오 하드웨어 (118b) 는 다음과 같이 PAL 화상을 디코드하기 위한 저장 구성에 2 MByte 의 RAM 만을 제공한다.
구성 1) B 필드에 색 성분용 수평 절반 해상도 (HHR) 를 저장하기. 도 11 및 테이블 (6) 에 도시된 것처럼, Cb, Cr 성분이 수평방향으로 인자 2 에 의해서 서브샘플링된다.
Figure pat00007
구성 2) 도 12 및 테이블 (7) 에 도시된 것처럼, 각의 윈도우가 720×480 의 해상도, 즉, 필드당 드롭 48 라인을 갖는 B 필드 윈도우에 저장하기. 색 데이터의 어떠한 서브샘플링도 필요치 않다.
Figure pat00008
상기한 모든 실시예에서, 기준 프레임 (I/P) 은 항상 그 완전 해상도 (PAL 용 720×576 및 NTSC 용 720×480) 에서 인터레이스된 포맷으로 저장된다. 더욱이, 상기한 모든 실시예에서, 일정한 스트라이드 (수직으로 인접한 픽셀 사이의 거리) 가 유지된다. 앞에서 기재된 구성 1 및 구성 2 는 기입 전 독출 (rbw) 락 메카니즘 (lock mechanism) 과 함께 이용될 필요가 있는데, 그 이유는 연속된 B 프레임을 디코드하는 동안에 동일한 메모리 영역이 이전 프레임의 디스플레이 독출용 및 연재 프레임의 디코드 기입용으로 동시에 사용되기 때문이다. 예를 들어, HHR B 필드 (구성 1) 와 함께 제 1B 프레임 (B1) 이 HF0 (탑 필드), HF1 (바닥 필드) 에 기입된다. 다음의 B 프레임 (B2) 이 HF0 (바닥), HF2 (탑) 에 기입된다. HF0 로의 B2 바닥의 디코드 기입은 HF0 로부터의 B1-탑의 디스플레이 독출을 지연시킨다.
테이블 (8) 은 그래픽 카드 상에서 이용가능한 RAM 크기에 기초한 적당한 저장 구성, 해상도 (NTSC/PAL), 및 DVD 서브화상과 같은 지원되어야 하는 특성을 소프트웨어가 어떻게 선택하는지를 보인다.
Figure pat00009
디스플레이-디코드 예정
이하에서는 본 발명에 따른 디코드 및 디스플레이 작업이 어떻게 예정되는지를 기재한다. 이러한 정보는 작업 데이터 구조를 이루는 HTDP (154) 에서 특정된다.
HTDP 요약
테이블 (9) 는 HTDP (154) 의 내용을 요약한 것이다.
테이블 (9) : HTDP 내용 정리
작업 타입 디스플레이만으로, 혹은 디코드-디스플레이
싱크(Sync) 상부싱크 혹은 바닥싱크에서 작업 시작
디코드 작업 카운트 코드된 프레임에 대하여는 1, 필드 코드 화상에 대하여는 2
디코드버프인덱스 디코드된 화상이 기재되는 버퍼의 인덱스
화상 타입 1 -> I, 2 ->P, 3->B 화상
디스플레이 작업 타입 옵션은 탑필드를 먼저 디스플레이하는 것과, 바닥필드를 먼저 디스플레이 하는 것과, 혹은 프레임을 디스플레이 하는 것을 포함한다.
디스프레이버프인덱스 디스플레이될 버퍼의 인덱스
디스플레이 주기 화상이 디스플레이되는 VSYNC 주기의 수, 이것은 디코드를 매칭하기 위한 필드와 디스플레이율을 반복하기 위하여 사용된다.
3.5 버퍼 모드의 경우에, HTDP 는 또한, 응용가능하다면, '기입 전 독출' 이나 '독출 전 기입' 락 (lock) 을 특정한다.
모순없이 양질의 비디오를 보장하기 위하여, 일 실시예에서, VGA 리프래쉬 (refresh) 비율이 MPEG 2 프레임 비율의 정수배가 되도록 제한된다. 테이블 (10) 은 디스플레이 비율 선택 테이블을 보인다.
테이블 (10) : 디스플레이 비율 선택 테이블
MPEG 프레임율(초당 프레임) 요구된 출력 디스플레이율(Hz)
24 PC-VGA 72
24 NTSC TV 60
24 PAL TV 50
25 PC-VGA 75
25 PAL TV 50
30 PC-VGA 60
30 NTSC TV 60
주의 : 테이블 (9) 의 실시예에서, 디스플레이 비율은 항상 PC-VGA 디스플레이용 MPEG 프레임 비율의 2 배수 내지 3 배수임; NTSC TV 디스플레이용 60 Hz, 및 PAL TV 디스플레이용 50 Hz.
제한 조건
이하의 제한 조건은 비디오 재생의 질을 보장하고 2 MByte 의 메모리에 디코드 과정을 수용하기 위하여 디코드 과정에 가해진다.
1) 프레임의 디스플레이가 개시되기 전에 프레임의 디코드가 완료되어야 한다. 이로써 비디오 프레임의 찢김이 방지된다.
2) 탑 및 바닥 필드가 다른 기간 동안에 디스플레이된다면, 제 2 필드는 더 오래 디스플레이되어야 한다. 예를 들어, 탑 (top) 및 바닥 (bottom) 필드가 전체 3 VSYNC 용으로 디스플레이될 예정이라면, 탑 필드가 먼저 진행하고 그 다음에 탑 필드의 디스플레이가 1 VSYNC 를 위하여 예정되고 2 VSYNC 를 위한 바닥 필드의 디스플레이가 예정된다. 이로 인하여 프레임 버퍼의 3.5 프레임 스토어를 이용하여 B 프레임을 디코드하는 동안에, 메모리가 다음 작업을 위하여 보다 빨리 자유로와지는 것이 보장된다.
3) 작업은 동시에 디스플레이하도록 예정되는데, 즉, 작업은 항상 VSYNC 상에서 개시된다. 이로 인하여 비디오 디스플레이 중의 찢김이 방지된다.
4) 이하의 기재에서 타임 슬라이스는 한 리프래쉬 기간, 즉, 2 개의 연속된 VSYNC 사이의 기간을 의미한다.
5) 디스플레이 장치나 하드웨어가 72 또는 75 Hz 의 희망 리프래쉬 비율을 지원할 수 없다면, 소프트웨어는 디스플레이 비율을 60 또는 50 Hz 로 낮출 것이며, 필요하다면 2 배수의 디스플레이 비율을 달성하기 위하여 프레임을 반복할 것이다. 예를 들어, 60 Hz 디스플레이에 대한 25 fps PAL 자료의 재생은 초당 25 프레임 중에서 5 프레임을 반복함으로써 달성된다. 유사하게도, 60 Hz 디스플레이에 대한 24 fps 자료의 디스플레이는 초당 24 프레임 중에서 6 프레임을 반복함으로써 이루어지고, 50 Hz 디스플레이에 대해서는 매초 24 프레임 중에서 1 프레임을 반복함으로써 이루어진다.
전용 비디오 하드웨어 작업
소프트웨어는 전용 비디오 하드웨어 (118b)에 의해 수행될 다음 타입의 작업을 프로그램한다.
1) 디스플레이 작업 : HTDP 의 시간 할당 필드는 프레임 또는 탑 및 바닥 필드가 디스플레이되어야 하는 타임 슬라이스의 수를 특정한다. 다음 작업은 특정한 수의 디스플레이 타임 슬라이스의 끝에서 개시된다.
2) 디코드 및 디스플레이 작업 : 여기에서, 새로운 프레임이나 필드가 특정한 버퍼로 디코드되는 한편, 이전의 디코드된 프레임이나 필드는 디스플레이된다. HTDP 의 시간 할당은 프레임 또는 탑 및 바닥 필드가 디스플레이되어야 하는 타임 슬라이스의 수를 특정한다. 다음 작업은 디코드 및 디스플레이 작업 양측의 완료시에 개시된다.
디코드 작업 타입
디코드 작업은 가용 시스템 메모리 상에 계류중인 다음 타입중의 하나일 수 있다.
1) 프레임을 디코드하기
2) 2 개의 필드를 디코드하기
디코드 저장 방식
디코드 작업은 다음 단위들 중의 하나로 프레임 버퍼 메모리를 할당한다.
1) 4 프레임
2) 3.5 프레임
3) 3.5 프레임 - HHR B 필드
4) 3.5 프레임 - 위도우잉된 B 필드
디스플레이 작업 타입
디스플레이 작업은 다음 중의 하나이다.
1) 진행 프레임을 디스플레이하기
2) 2 필드로서 프레임을 디스플레이하기
작업 예정(schedule)
프레임 스토어 조직, 인터레이스된/진행 비디오 프레임, 및 디스플레이/디코드 비율에 따라, 테이블 (11) 에 요약된 것처럼, 8 개의 작업 예정 방식이 있다.
테이블 (11) : 계획된 작업 개략
프레임 스토어 디스플레이 프레임 타입 프레임/필드 디스플레이/디코드율
예 1 3.5 프레임 스토어 인터레이스(필드) 2X
예 2 3.5 프레임 스토어 인터레이스(필드) 3X
예 3 4 프레임 스토어 인터레이스(필드) 2X
예 4 4 프레임 스토어 인터레이스(필드) 3X
예 5 4 프레임 스토어 진행(프레임) 2X
예 6 4 프레임 스토어 진행(프레임) 3X
다음 예는 다른 디스플레이 비율 및 저장 구성에 대하여 일단의 화상의 디코드 및 디스플레이를 설명한다. 이하에 기재된 예는 다음의 디코드 시퀀스에 해당한다.
I0 P3 B1 P6 B4 B5 ......
여기에서 I, P, 및 B 는 화상 내 타입 (Intra picture type), 예측 화상 타입 (Predicted picture type), 및 양방향 예측 화상 타입 (Bi-directional Predicted picture type) 을 각각 나타낸다. 수치 접미부는 0 에서 시작하는 프레임 번호이다.
2X 및 3X 는 디스플레이 비율 대 인코딩된 프레임 비율의 비를 나타낸다.
F0, F1, F2, F3 는 프레임 버퍼의 프레임 스토어이다. 접미부 't' 및 'b'는 탑 (top) 및 바닥 (bottom) 필드를 각각 나타낸다. HF0, HF1 및 HF2 는 프레임 버퍼의 반 프레임 스토어이다.
예 1 : 필드 디스플레이 (2 배 디스플레이 비율) - 3.5 프레임 스토어
Figure pat00010
예 2 : 필드 디스플레이 (3 배 디스플레이 비율) - 3.5 프레임 스토어
Figure pat00011
예 3 : 필드 디스플레이 (2 배 디스플레이 비율) - 4 프레임 스토어
Figure pat00012
예 4 : 필드 디스플레이 (3 배 디스플레이 비율) - 4 프레임 스토어
Figure pat00013
예 5 : (진행) 필드 디스플레이 (2 배 디스플레이 비율) - 4 프레임 스토어
Figure pat00014
예 6 : (진행) 필드 디스플레이 (3 배 디스플레이 비율) - 4 프레임 스토어
Figure pat00015
작업의 실예 : 3.5 버퍼 저장용 B 프레임의 디코드 및 필드 디스플레이
디코드 저장 방식 : 3.5 버퍼
BUF1 디코드 : HF0
BUF2 디코드 : HF1
디스플레이 타입 : 필드로서 디스플레이
디스플레이 버퍼 id : F0
제 1 디스플레이 : 바닥 필드
제 1 필드를 위한 디스플레이 기간 : 1
제 2 필드를 위한 디스플레이 기간 : 2
3.5 버퍼 조직의 경우에, B 프레임을 디코드하는 동안에, 디스플레이 및 해디코드 버퍼가 중첩될 수도 있다. 이 경우에, 디코드 전 디스플레이나 디스플레이 전 디코드 메모리 독출/기입 락의 하드웨어 락이 필요하다. 이러한 정보는 또한 작업의 일부로서 제공된다.
전용 비디오 하드웨어의 선택적인 실시예
다음에서는 동작 보상 및 블록 재구성 작업을 실행하기 위한 전용 비디오 하드웨어 (118b) 와 그의 데이터 흐름의 또다른 실시예를 설명한다. 도 13 은 전용 비디오 하드웨어 (118b) 가 그래픽 제어기 (118) 내에 내장되어 있는 본 발명에 따른 실시예를 설명한다. 도 13 에 설명된 실시예에서, 전용 비디오 하드웨어 (118b) 는 동작 보상 (MC) 및 블록 재구성 (BR) (도 4 에 도시된 디코드 작업 분할과 비슷함) 의 작업을 실행한다. 도 14 는 도 13 에 도시된 전용 비디오 하드웨어 (118b) 에 의해서 실행된 MPEG 디코드 작업에 대한 데이터 흐름도를 설명하고 있다.
도 13 에 도시된 것처럼, 그래픽 제어기 내에 내장된 전용 비디오 하드웨어는 비디오 재구성 프로세서(Video Reconstruction Processor: VRP) (190) 로 불린다. VRP (190) 는 IDCT 작동에 관련된 데이터를 저장하기 위한 온칩 메모리 버퍼와, 동작 보상(MC) 작동에 관계된 데이터를 저장하기 위한 메모리 버퍼 (RMEM)(194) 와, 반픽셀 보간을 실행하기 위한 반픽셀필터(HPF) 와, 비디오 프레임의 블록 재구성 계산을 실행하기 위한 블록 재구성 블록 (198) 을 구비한다. VRP (190) 는 그래픽 제어기 (118) 의 프레임 버퍼로의 접근을 제어하는 메모리 제어기 (202) 와 커맨드시퀀서 (200) 로 인터페이스된다.
작업 시퀀서 (204) 는 작업 FIFO 를 메모리연산하며 HTDP 를 꺼낸다. 작업 시퀀서 (204) 는 VRP (190) 에서 제어 레지스터를 프로그램하기 위하여 HTDP 를 사용한다. 이것은 시스템 메로리 내의 심볼스트림의 시작 포인터를 갖는 한 레지스터를 프로그램하는 것을 포함한다.
작업 실행은 VSYNC 신호라는 가정에서 시작한다. PCI 버스 마스터링 로직 (206) 은 시스템 메모리로부터 메모리연산 심볼 FIFO 에서 온칩 심볼 FIFO 로 이동시키기 시작한다. 커맨드 시퀀서 (200) 는 고정 길이의 커맨드를 기계번역하며 상술된 구문(syntax) 에 따라 상기 심볼들을 파싱하기 시작한다. 커맨드 시퀀서 (200) 는 마스터로서 작용하며 동시에 각 마이크로블록을 위한 메모리 제어기 (202) 및 VRP (190) 로 커맨드와 데이터를 보낸다. 임의의 프레임 내의 모든 마이크로블록이 진행된 후에, 작업 시퀀서 (204) 는 작업의 완료을 지시하기 위한 인터럽트를 발생하며 다음 작업을 진행하기 시작한다.
VRP (190) 는 VRP (190) 로 커맨드를 로드하는 "마스터"- 커맨드 시퀀서 (200) 로서 작용하는 커맨드 시퀀서 (200) 에 대하여 "슬래브" (slave) 모드에서 동작한다. 커맨드를 실행한 후에, VRP (190) 은 커맨드 시퀀서 (200) 에 의해서 로드될 또다른 커맨드를 기다린다. 마이크로블록을 처리하기 위하여, 커맨드 시퀀서 (200) 는 3 개의 커맨드를 발생하며, 한 커맨드는 4 개의 휘도 (Y) 블록에 대한 것이며, 나머지는 두 개의 색블록 (Cb 및 Cr) 각각에 대한 것이다. VRP (190) 는 로컬 메모리 (194) 로부터 기준 마이크로블록을 꺼내오며, HPF(196) 를 사용하여 반픽셀 보간을 하며, BR 을 사용하는 예상 마크로블록을 형성하기 위하여 기준 마이크로블록을 결합한다. VRP (190) 는 온칩 메모리 버퍼 IMEM (192) 에서 추출된 값과 심볼스트림으로부터 IDCT 값을 또한 추출한다. VRP (190) 는 BR 을 사용하여 재구성된 마이크로블록을 발생시키기 위하여 이들 두 작동의 결과를 결합하며, 이것은 메모리 제어기 (202) 를 사용하여 목적 프레임 버퍼에 기록된다.
예를 들어, VRP (190) 가 IDCT 값을 가지며 또한 하나의 전방(A-Ref.) 이동벡터 및 후방(B-Ref) 이동벡터를 갖는 휘도 (Y) 블록을 처리하는 경우를 고려한다. 커맨드 시퀀서 (200) 는 심볼스트림으로부터 전방 및 후방 기준 어드레스를 추출하고 메모리 제어기 (202) 내의 적절한 레지스터에 기록한다. 또다른 실시예에서, 커맨드 시퀀서 (200) 는 Y 블록의 목적 어드레스를 또한 계산한다. 커맨드 시퀀서 (200) 는 VRP (190) 로 커맨드 패킷을 로드하고, 이것은 블록을 어떻게 처리할 것인지를 VRP (120) 에게 지시한다. 현재, 동작 보상 엔진은 전방 기준 블록을 RMEM (194) 으로 가져오기 시작한다. 기준 블록이 메모리로부터 꺼내질 때, 만일 필요하다면, 반픽셀 보간이 HPF (196) 에 의해서 "진행하고 있는 중에" 행해진다. 전방 기준 블록이 꺼내질 때, VRP (190) 은 메모리로부터 후방 기준 블록을 꺼내기 시작한다. 이 때, 후방 기준 데이터가 메모리로부터 메모리연산되기 때문에, VRP (190) 는 전방 및 후방 기준 픽셀값을 "진행 중에" 평균한다. 작동의 마지막에서, 예상 블록이 RMEM (194) 에 저장된다 (도 14 에 도시된 것과 같음).
이 때, IDCT 엔진과 동작 보상 엔진은, 먼저 행해진 것은 종료를 위하여 다른 것을 기다려야 한다는 관점에서, 동시화될 필요가 있다. 도 15 는 IDCT 작업 전에 동작 보상 작업을 종료하는 상황을 설명하며, 그런 후, 이것은 IMEM (192) 에 완전히 로드될 IDCT 값을 기다려야만 한다. 마지막으로, VRP (190) 은 동작 보상 작업과 IDCT 의 결과를 결합하여서 BR 을 사용하여 진행중에 디코드된 Y 블록을 재구성하며 메모리 제어기 (202) 로 보내진 후, RMEM (194) 에 다시 기록된다. "Y" 블록에 대하여, IDCT 엔진은 4 개의 휘도 블록 각각에 대하여 4 개의 8 x 8 IDCT 값을 추출한다. 매크로블록 내에 나타나는 "Y" 8 x 8 IDCT 블록의 수는 패턴 심볼에 의존된다. 심볼스트림 내에서 나타나지 않는 8 x 8 "Y" 블록에 대하여, IDCT 엔진은 IDCT 값으로서 0 을 기록한다. 도 16 은 IDCT 작업이 동작 보상 작업 전에 종료되는 경우를 보여준다.
도 17 은 전용 비디오 하드웨어 (118b) 의 또다른 실시예를 위한 데이터 흐름도를 설명한다. 도 17 에 도시되어 있는 것처럼, IDCT 값은 전방(A-REF) 기준 블록으로 우선 결합된다. 결과의 데이터는 후방(B-REF) 블록으로 평균화된다. 상기 실행은 IMEM 저장을 돕는다.
본 발명은 충분히 설명되었으며, 본 기술의 당업자에게는, 청구된 청구항의 정신과 영역을 벗어나지 않는 범위에서 많은 변화와 수정이 행해질 수 있다는 것은 자명하다. 본 명세서에서 설명된 모든 간행물 및 특허 출원은 각각의 개별적인 간행물 혹은 특허 출원이 특별히 그리고 개인적으로 참고로서 사용될 수 있는 것처럼 동일한 범위에서 참고로 사용될 수 있다.
상기한 본 발명에 따르면, 효율적으로 MPEG 비디오 압축해제를 수행하는 장치 및 방법이 제공된다. 또한, 효율적인 MPEG 비디오 디코딩을 수행할 뿐만 아니라 종래 기술의 비디오 디코더보다 구조적으로 단순하고 종래 기술의 비디오 디코더보다 값싼 비디오 압축해제 장치 및 방법이 제공된다. 더욱이, 본 발명에 따르면, 연산 및 메모리 자원을 포함하는 시스템 자원을 최적으로 이용하여 비디오 디코딩을 수행할 수 있다.
도 1 은 MPEG 비디오 데이터를 디코드하는데 적합한 전형적인 종래의 컴퓨터 시스템을 도시하는 블록다이어그램.
도 2 는 MPEG 비디오 데이터를 디코드하는데 적합한 본 발명의 실시예를 도시하는 블록다이어그램.
도 3 은 압축된 MPEG 데이터 스트림을 디코드하는데 연관된 작업을 도시하는 블록다이어그램.
도 4 는 CPU 상에서 실행되는 소프트웨어와 전용 비디오 하드웨어 사이의 비디오 디코드 작업을 분할하는 일 기술을 도시하는 도면.
도 5 는 CPU 상에서 실행되는 소프트웨어와 전용 비디오 하드웨어 사이의 비디오 디코드 작업을 분할하는 다른 기술을 도시하는 도면.
도 6 은 MPEG 비디오 디코드를 달성하기 위하여 전용 비디오 하드웨어 및 CPU 상에서 실행되는 소프트웨어 사이의 커뮤니케이션을 조정하는데 필요한 소프트웨어/하드웨어 구성성분 및 데이터 구조를 묘사하는 본 발명의 실시예를 도시하는 도면.
도 7 은 작업 포인터 FIFO 가 전용 비디오 하드웨어에 의해 유지되는 본발명의 실시예를 도시하는 도면.
도 8a 는 MPEG 비디오의 디코드 및 디스플레이에 연관된 다양한 소프트웨어 처리를 도시하는 플로우챠트.
도 8b 는 전용 비디오 하드웨어의 작업 핸들러에 의해 수행되는 작업의 순서를 도시하는 플로우챠트.
도 9 는 PAL/NTSC 화상 분석용 4 프레임을 저장하기 위한 프레임 버퍼의 일 실시예에 대한 구조를 도시하는 도면.
도 10 은 본 발명에 따른 PAL/NTSC 화상 분석용 3.5 프레임을 저장하기 위한 프레임버퍼 구조의 실시예를 도시하는 도면.
도 11 은 2 MB 의 RAM 만으로 PAL 화상을 디코드하기 위한 프레임버퍼 저장방식을 도시하는 도면.
도 12 는 2 MB 의 RAM 만으로 PAL 화상을 디코드하기 위한 선택적인 프레임버퍼 저장방식을 도시하는 도면.
도 13 은 전용 비디오 하드웨어가 그래픽 제어기에 내장되어 있는 본 발명의 실시예를 도시하는 도면.
도 14 는 하드웨어에 의해 수행되는 디코드 동작의 데이터 흐름도.
도 15 는 본 발명의 실시예에 의해 수행되는 블록 작업을 도시하는 도면.
도 16 은 본발명의 다른 실시예에 의해 수행되는 블록 작업을 도시하는 도면.
도 17 은 하드웨어에 의해 수행되는 디코드 동작의 선택적인 데이터 흐름도.
* 도면의 주요부분에 대한 부호의 설명 *
17 : 전용 MPEG 디코더 118b : 전용 비디오 하드웨어
112a : 소프트웨어 작업 112 : CPU

Claims (12)

  1. 인코드된 MPEG 비디오 데이터 스트림을 디코드하는 방법으로서,
    상기 인코드된 MPEC 비디오 데이터 스트림의 상기 디코드를 확장 메모리와 연산 자원을 필요로 하는 메모리-연산 집약적 작업 및 확장 메모리 또는 연산 자원을 필요로 하지 않는 비 메모리-연산 집약적 작업으로 분할하는 단계;
    상기 비 메모리-연산 집약적 작업을 프로세서에서 실행되는 소프트웨어 모듈을 통해 수행하여 각 비디오 프레임에 대해 예비처리된 심볼스트림 데이터구조를 생성하는 단계;
    상기 예비처리된 심볼스트림 데이터구조를 메모리 버퍼에 저장하는 단계;
    상기 메모리-연산 집약적 작업을 전용 비디오 하드웨어로 수행하여 디코드된 비디오 프레임을 생성하는 단계;
    상기 프로세서에 의해 실행되는 상기 소프트웨어 모듈을 통해 수행된 상기 비 메모리-연산 집약적 작업과 상기 전용 비디오 하드웨어에 의해 수행된 상기 메모리-연산 집약적 작업을 동기화시키는 단계; 및
    상기 디코드된 비디오 프레임을 디스플레이 장치 상에 디스플레이하는 단계를 구비하는 것을 특징으로 하는 디코딩 방법.
  2. 제 1 항에 있어서,
    상기 프로세서에서 실행되는 상기 소프트웨어 모듈을 통해 상기 비 메모리-연산 집약적 작업을 수행하는 단계는,
    상기 인코드된 MPEG 비디오 스트림을 가변길이 디코딩을 사용하여 파스하여 파스된 비디오 데이터 스트림을 생성하는 단계;
    상기 파스된 비디오 데이터 스트림에 역양자화를 수행하여 양자화된 비디오 데이터 스트림을 생성하는 단계;
    상기 양자화된 비디오 데이터 스트림을 상기 예비처리된 심볼스트림 데이터구조로 포맷하는 단계; 및
    상기 예비처리된 심볼스트림 데이터구조를 상기 메모리 버퍼에 기입하는 단계를 구비하는 것을 특징으로 하는 디코딩 방법.
  3. 제 1 항에 있어서,
    상기 프로세서에서 실행되는 상기 소프트웨어 모듈을 통해 상기 비 메모리-연산 집약적 작업을 수행하는 단계는,
    상기 인코드된 MPEG 비디오 데이터 스트림을 가변길이 디코딩을 사용하여 파스하여 파스된 비디오 데이터 스트림을 생성하는 단계;
    상기 파스된 비디오 데이터 스트림에 역양자화를 수행하여 양자화된 비디오 데이터 스트림을 생성하는 단계;
    상기 양자화된 비디오 데이터 스트림에 역이산 코사인 변환을 수행하여 코사인 변환된 비디오 데이터스트림을 생성하는 단계;
    상기 코사인 변환된 비디오 데이터스트림을 상기 예비처리된 심볼스트림 데이터구조로 포맷하는 단계; 및
    상기 예비처리된 심볼스트림 데이터구조를 상기 메모리 버퍼에 기입하는 단계를 구비하는 것을 특징으로 하는 디코딩 방법.
  4. 제 1 항에 있어서,
    상기 전용 비디오 하드웨어에서 상기 메모리-연산 집약적 작업을 수행하여 상기 디코드된 비디오 프레임을 생성하는 단계는,
    상기 메모리 버퍼에 저장된 상기 예비처리된 심볼스트림 데이터구조에 액세스하는 단계;
    상기 예비처리된 심볼스트림 데이터구조에 동작보상 연산을 수행하여 동작 보상된 비디오 데이터스트림을 생성하는 단계; 및
    상기 동작보상된 비디오 데이터스트림에 블록 재구성 연산을 수행하여 상기 디코드된 비디오 프레임을 생성하는 단계를 구비하는 것을 특징으로 하는 디코딩 방법.
  5. 제 1 항에 있어서,
    상기 전용 비디오 하드웨어에서 상기 메모리-연산 집약적 작업을 수행하여 상기 디코드된 비디오 프레임을 생성하는 단계는,
    상기 메모리 버퍼에 저장된 상기 예비처리된 심볼스트림 데이터구조에 액세스하는 단계;
    상기 예비처리된 심볼스트림 데이터구조에 역이산 코사인 변환을 수행하여 코사인 변환된 비디오 데이터스트림을 생성하는 단계;
    상기 예비처리된 심볼스트림 데이터구조에 동작보상 연산을 수행하여 동작 보상된 비디오 데이터스트림을 생성하는 단계; 및
    상기 동작보상된 비디오 데이터스트림에 블록 재구성 연산을 수행하여 상기 디코드된 비디오 프레임을 생성하는 단계를 구비하는 것을 특징으로 하는 디코딩 방법.
  6. 제 1 항에 있어서,
    상기 프로세서에 의해 실행되는 상기 소프트웨어 모듈을 통해 수행되는 상기 비 메모리-연산 집약적 작업과 상기 전용 비디오 하드웨어에 의해 수행되는 상기 메모리-연산 집약적 작업을 동기화시키는 단계는,
    상기 예비처리된 심볼스트림 데이터구조를 저장하도록 상기 메모리 버퍼를 할당하는 단계;
    상기 소프트웨어 모듈에 의해 처리된 상기 비 메모리-연산 집약적 작업 각각에 대응하며 상기 전용 비디오 하드웨어에 의해 실행될 상기 메모리-연산 집약적 작업으로서 스케줄되도록 준비된 제어 정보를 각각 저장하는 소프트웨어 작업 제어 데이터구조의 작업 포인터 큐를 유지하는 단계;
    완료된 상기 비 메모리-연산 집약적 작업의 카운트를 유지하는 단계;
    상기 소프트웨어 작업 제어 데이터구조를, 상기 전용 비디오 하드웨어에 의해 실행될 상기 메모리-연산 집약적 작업에 대응하는 정보를 저장하는 하드웨어 작업 제어 데이터구조로 변환하는 단계;
    상기 전용 비디오 하드웨어에 의해 실행될 상기 메모리-연산 집약적 작업에 대한 정보를 각각 저장하는 상기 하드웨어 작업 제어 데이터구조의 작업 FIFO 큐를 상기 전용 비디오 하드웨어내에 유지하는 단계;
    상기 전용 비디오 하드웨어에 의한 상기 메모리-연산 집약적 작업의 완료를 신호하는 인터럽트를 발생시키는 단계; 및
    상기 소프트웨어 모듈이 상기 인터럽트의 수신 시 상기 작업 FIFO 큐로부터 상기 하드웨어 작업 제어 데이터구조를 팝하는 단계로서, 상기 팝된 하드웨어 작업 제어 데이터구조는 상기 전용 비디오 하드웨어에 의해 완료된 상기 메모리-연산 집약적 작업에 대응하는 단계를 구비하는 것을 특징으로 하는 디코딩 방법.
  7. 인코드된 MPEG 비디오 데이터 스트림을 비 메모리-연산 집약적 작업과 메모리-연산 집약적 작업으로 분할하여 디코드하는 장치로서,
    버스 인터페이스;
    상기 버스 인터페이스에 결합된 프로세서;
    상기 버스 인터페이스에 결합되며, 상기 프로세서에서 실행될 수 있는 복수의 소프트웨어 모듈을 저장하는 시스템 메모리로서, 상기 복수의 소프트웨어 모듈 중 하나 이상의 소프트웨어 모듈이 상기 비 메모리-연산 집약적 작업을 수행하여 예비처리된 심볼스트림 데이터구조를 생성하는, 상기 시스템 메모리;
    상기 버스 인터페이스에 결합되며, 상기 메모리-연산 집약적 작업을 수행하여 디스플레이 장치 상에 디스플레이될 디코드된 비디오 데이터를 생성하는 전용 비디오 하드웨어; 및
    상기 전용 비디오 하드웨어에 결합된 전용 메모리를 구비하는 것을 특징으로 하는 디코딩 장치.
  8. 제 7 항에 있어서,
    상기 프로세서는, 상기 시스템 메모리에 저장된 상기 복수의 소프트웨어 모듈 중 하나 이상의 소프트웨어 모듈을 실행하여,
    상기 인코드된 MPEG 비디오 스트림을 가변길이 디코딩을 사용하여 파스하여 파스된 비디오 데이터스트림을 생성하고;
    상기 파스된 비디오 데이터스트림에 역양자화를 수행하여 양자화된 비디오 데이터스트림을 생성하고;
    상기 양자화된 비디오 데이터스트림을 상기 예비처리된 심볼스트림 데이터구조로서 포맷하고; 또한
    상기 예비처리된 심볼스트림 데이터구조를 상기 시스템 메모리에 저장하는 것을 특징으로 하는 디코딩 장치.
  9. 제 7 항에 있어서,
    상기 프로세서는, 상기 시스템 메모리에 저장된 상기 복수의 소프트웨어 모듈 중 하나 이상의 소프트웨어 모듈을 실행하여,
    상기 인코드된 MPEG 비디오 스트림을 가변길이 디코딩을 사용하여 파스하여 파스된 비디오 데이터스트림을 생성하고;
    상기 파스된 비디오 데이터스트림에 역양자화를 수행하여 양자화된 비디오 데이터스트림을 생성하고;
    상기 양자화된 비디오 데이터스트림에 역이산 코사인 변환을 수행하여 코사인 변환된 비디오 데이터 스트림을 생성하고;
    상기 코사인 변환된 비디오 데이터스트림을 상기 예비처리된 심볼스트림 데이터구조로서 포맷하고; 또한
    상기 예비처리된 심볼스트림 데이터구조를 상기 시스템 메모리에 저장하는 것을 특징으로 하는 디코딩 장치.
  10. 제 7 항에 있어서,
    상기 전용 비디오 하드웨어는,
    상기 시스템 메모리에 저장된 상기 예비처리된 심볼스트림 데이터구조를 판독하고;
    상기 예비처리된 심볼스트림 데이터에 동작 보상을 수행하여 동작보상된 비디오 데이터스트림을 생성하고; 또한
    상기 동작보상된 비디오 데이터스트림에 블록 재구성 연산을 수행하여 상기 디코드된 비디오 데이터를 생성하는 것을 특징으로 하는 디코딩 장치.
  11. 제 7 항에 있어서,
    상기 전용 비디오 하드웨어는,
    상기 시스템 메모리에 저장된 상기 예비처리된 심볼스트림 데이터구조를 판독하고;
    상기 예비처리된 심볼스트림 데이터구조에 역이산 코사인 변환 연산을 수행하여 코사인 변환된 비디오 데이터 스트림을 생성하고;
    상기 코사인 변환된 비디오 데이터 스트림에 동작 보상을 수행하여 동작보상된 비디오 데이터스트림을 생성하고; 또한
    상기 동작보상된 비디오 데이터스트림에 블록 재구성 연산을 수행하여 상기 디코드된 비디오 데이터를 생성하는 것을 특징으로 하는 디코딩 장치.
  12. 제 7 항에 있어서,
    상기 시스템 메모리에 저장된 상기 복수의 소프트웨어 모듈 중 하나 이상의 소프트웨어 모듈은,
    상기 예비처리된 심볼스트림 데이터구조용 메모리 버퍼를 상기 시스템 메모리에 할당하고;
    상기 소프트웨어 모듈에 의해 처리된 상기 비 메모리-연산 집약적 작업 각각에 대응하며 상기 전용 비디오 하드웨어에 의해 실행될 상기 메모리-연산 집약적 작업으로서 스케줄되도록 준비된 제어 정보를 각각 저장하는 소프트웨어 작업 제어 데이터구조의 작업 포인터 큐를 유지하고;
    완료된 상기 비 메모리-연산 집약적 작업의 카운트를 유지하고; 또한
    상기 소프트웨어 작업 제어 데이터구조를, 상기 전용 비디오 하드웨어에 의해 실행될 상기 메모리-연산 집약적 작업에 대응하는 정보를 저장하는 하드웨어 작업 제어 데이터구조로 변환하고,
    상기 전용 비디오 하드웨어는,
    상기 전용 비디오 하드웨어에 의해 실행될 상기 메모리-연산 집약적 작업에 대한 정보를 각각 저장하는 상기 하드웨어 작업 제어 데이터구조의 작업 FIFO 큐를 상기 전용 비디오 하드웨어내에 유지하고; 또한
    상기 전용 비디오 하드웨어에 의한 상기 메모리-연산 집약적 작업의 안료를 신호하는 인터럽트를 발생하며,
    상기 소프트웨어 모듈은 상기 인터럽트의 수신시 상기 작업 FIFO 큐로부터 상기 하드웨어 작업 제어 데이터구조를 파핑하며, 상기 파핑된 하드웨어 작업 제어 데이터구조는 상기 전용 비디오 하드웨어에 의해 완료된 상기 메모리-연산 집약적 작업에 대응하는 것을 특징으로 하는 디코딩 장치.
KR1019970069392A 1997-06-17 1997-12-16 Mpeg비디오압축해제용방법및장치 KR100298533B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/877,136 US5990958A (en) 1997-06-17 1997-06-17 Apparatus and method for MPEG video decompression
US8/877,136 1997-06-17
US08/877,136 1997-06-17

Publications (2)

Publication Number Publication Date
KR19990006296A KR19990006296A (ko) 1999-01-25
KR100298533B1 true KR100298533B1 (ko) 2005-05-18

Family

ID=25369331

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970069392A KR100298533B1 (ko) 1997-06-17 1997-12-16 Mpeg비디오압축해제용방법및장치

Country Status (3)

Country Link
US (1) US5990958A (ko)
KR (1) KR100298533B1 (ko)
DE (1) DE19756210C2 (ko)

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG116400A1 (en) * 1997-10-24 2005-11-28 Matsushita Electric Ind Co Ltd A method for computational graceful degradation inan audiovisual compression system.
KR100301826B1 (ko) * 1997-12-29 2001-10-27 구자홍 비디오디코더
US6823016B1 (en) * 1998-02-20 2004-11-23 Intel Corporation Method and system for data management in a video decoder
US6519288B1 (en) * 1998-03-06 2003-02-11 Mitsubishi Electric Research Laboratories, Inc. Three-layer scaleable decoder and method of decoding
CA2265089C (en) * 1998-03-10 2007-07-10 Sony Corporation Transcoding system using encoding history information
JP4277142B2 (ja) * 1998-03-26 2009-06-10 ソニー株式会社 受信装置
JP3372864B2 (ja) * 1998-04-01 2003-02-04 日本電気株式会社 動画像伸長装置及び方法
US6414996B1 (en) 1998-12-08 2002-07-02 Stmicroelectronics, Inc. System, method and apparatus for an instruction driven digital video processor
US6490324B1 (en) 1998-12-08 2002-12-03 Stmicroelectronics, Inc. System, method and apparatus for a variable output video decoder
US7844167B1 (en) * 1998-12-08 2010-11-30 Stmicroelectronics, Inc. System and apparatus for digital audio/video decoder splitting signal into component data streams for rendering at least two video signals
US6275242B1 (en) * 1998-12-31 2001-08-14 Intel Corporation Method and apparatus for terminating direct memory access transfers from system memory to a video device
US6578203B1 (en) 1999-03-08 2003-06-10 Tazwell L. Anderson, Jr. Audio/video signal distribution system for head mounted displays
US6459737B1 (en) * 1999-05-07 2002-10-01 Intel Corporation Method and apparatus for avoiding redundant data retrieval during video decoding
US20020057364A1 (en) 1999-05-28 2002-05-16 Anderson Tazwell L. Electronic handheld audio/video receiver and listening/viewing device
US7210160B2 (en) 1999-05-28 2007-04-24 Immersion Entertainment, L.L.C. Audio/video programming and charging system and method
US6167092A (en) * 1999-08-12 2000-12-26 Packetvideo Corporation Method and device for variable complexity decoding of motion-compensated block-based compressed digital video
US6785336B1 (en) 2000-01-24 2004-08-31 Ati Technologies, Inc. Method and system for retrieving adaptation field data associated with a transport packet
US7366961B1 (en) 2000-01-24 2008-04-29 Ati Technologies, Inc. Method and system for handling errors
US8284845B1 (en) 2000-01-24 2012-10-09 Ati Technologies Ulc Method and system for handling data
US6885680B1 (en) 2000-01-24 2005-04-26 Ati International Srl Method for synchronizing to a data stream
US6778533B1 (en) 2000-01-24 2004-08-17 Ati Technologies, Inc. Method and system for accessing packetized elementary stream data
US6804266B1 (en) 2000-01-24 2004-10-12 Ati Technologies, Inc. Method and apparatus for handling private data from transport stream packets
US6988238B1 (en) 2000-01-24 2006-01-17 Ati Technologies, Inc. Method and system for handling errors and a system for receiving packet stream data
US6999424B1 (en) 2000-01-24 2006-02-14 Ati Technologies, Inc. Method for displaying data
US6763390B1 (en) * 2000-01-24 2004-07-13 Ati Technologies, Inc. Method and system for receiving and framing packetized data
US20010049757A1 (en) * 2000-03-01 2001-12-06 Ming-Kang Liu Programmable task scheduler for use with multiport xDSL processing system
US7113546B1 (en) 2000-05-02 2006-09-26 Ati Technologies, Inc. System for handling compressed video data and method thereof
US7471298B1 (en) * 2000-06-26 2008-12-30 S3 Graphics Co., Ltd. Fetching pixel data with reduced memory bandwidth requirement
US7630721B2 (en) 2000-06-27 2009-12-08 Ortiz & Associates Consulting, Llc Systems, methods and apparatuses for brokering data between wireless devices and data rendering devices
US7149549B1 (en) 2000-10-26 2006-12-12 Ortiz Luis M Providing multiple perspectives for a venue activity through an electronic hand held device
US7812856B2 (en) 2000-10-26 2010-10-12 Front Row Technologies, Llc Providing multiple perspectives of a venue activity to electronic wireless hand held devices
US7782363B2 (en) 2000-06-27 2010-08-24 Front Row Technologies, Llc Providing multiple video perspectives of activities through a data network to a remote multimedia server for selective display by remote viewing audiences
US8583027B2 (en) 2000-10-26 2013-11-12 Front Row Technologies, Llc Methods and systems for authorizing computing devices for receipt of venue-based data based on the location of a user
US7796162B2 (en) 2000-10-26 2010-09-14 Front Row Technologies, Llc Providing multiple synchronized camera views for broadcast from a live venue activity to remote viewers
FR2811846B1 (fr) * 2000-07-17 2002-09-27 Thomson Multimedia Sa Procede et dispositif de lecture de donnees enregistrees mpeg transmises sur un bus ieee 1394
US7095945B1 (en) 2000-11-06 2006-08-22 Ati Technologies, Inc. System for digital time shifting and method thereof
US6975809B1 (en) * 2000-11-14 2005-12-13 Ati International, S.R.L. Method and apparatus for passing clear DVD data in a computer
US6873735B1 (en) * 2001-02-05 2005-03-29 Ati Technologies, Inc. System for improved efficiency in motion compensated video processing and method thereof
US7885336B2 (en) * 2001-02-05 2011-02-08 Ati Technologies Ulc Programmable shader-based motion compensation apparatus and method
CN1245839C (zh) * 2001-07-04 2006-03-15 矽统科技股份有限公司 分散式视频数据流解码方法
US7218842B1 (en) 2001-07-25 2007-05-15 Cisco Technology, Inc. Efficient methods of performing motion compensation based decoding and recoding of compressed video bitstreams
US6996178B1 (en) * 2001-08-27 2006-02-07 Cisco Technology, Inc. Look ahead motion compensation
US20030185301A1 (en) * 2002-04-02 2003-10-02 Abrams Thomas Algie Video appliance
US20030185302A1 (en) * 2002-04-02 2003-10-02 Abrams Thomas Algie Camera and/or camera converter
US7769084B1 (en) * 2002-07-15 2010-08-03 Apple Inc. Method for implementing a quantizer in a multimedia compression and encoding system
US7418037B1 (en) * 2002-07-15 2008-08-26 Apple Inc. Method of performing rate control for a compression system
US7009655B2 (en) * 2002-07-23 2006-03-07 Mediostream, Inc. Method and system for direct recording of video information onto a disk medium
TW577229B (en) * 2002-09-18 2004-02-21 Via Tech Inc Module and method for graphics display
US7725073B2 (en) 2002-10-07 2010-05-25 Immersion Entertainment, Llc System and method for providing event spectators with audio/video signals pertaining to remote events
KR100551951B1 (ko) * 2002-10-18 2006-02-20 주식회사 모티스 동영상 복호화 처리 시스템 및 가변장 복호화 시스템
US7940843B1 (en) 2002-12-16 2011-05-10 Apple Inc. Method of implementing improved rate control for a multimedia compression and encoding system
US7804897B1 (en) 2002-12-16 2010-09-28 Apple Inc. Method for implementing an improved quantizer in a multimedia compression and encoding system
GB2401759A (en) * 2003-05-13 2004-11-17 Nokia Corp Method of signalling in a mobile communications network
JP3680846B2 (ja) * 2003-05-28 2005-08-10 セイコーエプソン株式会社 動画像の圧縮装置及びそれを用いた撮像装置
JP3680845B2 (ja) * 2003-05-28 2005-08-10 セイコーエプソン株式会社 圧縮動画像の伸張装置及びそれを用いた画像表示装置
US7307669B2 (en) * 2003-06-24 2007-12-11 Broadcom Corporation System, method, and apparatus for displaying streams with dynamically changing formats
US20050094729A1 (en) * 2003-08-08 2005-05-05 Visionflow, Inc. Software and hardware partitioning for multi-standard video compression and decompression
US7593687B2 (en) 2003-10-07 2009-09-22 Immersion Entertainment, Llc System and method for providing event spectators with audio/video signals pertaining to remote events
JP2008543207A (ja) * 2005-06-01 2008-11-27 エヌエックスピー ビー ヴィ マルチパスビデオ復号方法および装置
TWM289890U (en) * 2005-09-16 2006-04-21 Beacon Advanced Technology Co Video integrated circuit and video processing apparatus thereof
US7707334B2 (en) * 2005-11-18 2010-04-27 Mobilic Technology (Cayman) Corp. Self-synchronizing hardware/software interface for multimedia SOC design
US20070126745A1 (en) * 2005-12-05 2007-06-07 Prolific Technology Inc. Method and system for displaying digital video
US8238415B2 (en) * 2006-02-14 2012-08-07 Broadcom Corporation Method and system for programmable breakpoints in an integrated embedded image and video accelerator
US20070192393A1 (en) * 2006-02-14 2007-08-16 Taiyi Cheng Method and system for hardware and software shareable DCT/IDCT control interface
US7929599B2 (en) 2006-02-24 2011-04-19 Microsoft Corporation Accelerated video encoding
US7876695B2 (en) * 2006-03-07 2011-01-25 Telefonaktiebolaget Lm Ericsson (Publ) Communication station and method providing flexible compression of data packets
JP4730183B2 (ja) * 2006-04-17 2011-07-20 株式会社日立製作所 映像表示装置
GB0607726D0 (en) * 2006-04-19 2006-05-31 Setred Ab High speed display shutter
US20080094500A1 (en) * 2006-10-20 2008-04-24 Hewlett-Packard Development Company Lp Frame filter
US7876327B1 (en) * 2006-12-21 2011-01-25 Nvidia Corporation Power savings in a computing device during video playback
US8699582B2 (en) * 2010-10-06 2014-04-15 Qualcomm Incorporated Context-based adaptations of video decoder
KR20140028930A (ko) 2012-08-31 2014-03-10 삼성전자주식회사 데이터 처리 장치 및 이의 데이터 처리 방법 그리고 그 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능 매체
US9258517B2 (en) * 2012-12-31 2016-02-09 Magnum Semiconductor, Inc. Methods and apparatuses for adaptively filtering video signals
US20170026648A1 (en) * 2015-07-24 2017-01-26 Mediatek Inc. Hybrid video decoder and associated hybrid video decoding method

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08205093A (ja) * 1995-01-24 1996-08-09 Toshiba Corp コンピュータシステム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3014031B2 (ja) * 1995-07-17 2000-02-28 日本電気株式会社 動画圧縮装置
US5802315A (en) * 1995-09-04 1998-09-01 Sharp Kabushiki Kaisha Picture reproducing apparatus
US5768536A (en) * 1995-10-26 1998-06-16 Advanced Micro Devices, Inc. Generation of a secondary video bitstream from a compressed video bitstream to enhance playback performance
US5818532A (en) * 1996-05-03 1998-10-06 Lsi Logic Corporation Micro architecture of video core for MPEG-2 decoder
US5815206A (en) * 1996-05-03 1998-09-29 Lsi Logic Corporation Method for partitioning hardware and firmware tasks in digital audio/video decoding

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08205093A (ja) * 1995-01-24 1996-08-09 Toshiba Corp コンピュータシステム

Also Published As

Publication number Publication date
DE19756210A1 (de) 1998-12-24
KR19990006296A (ko) 1999-01-25
US5990958A (en) 1999-11-23
DE19756210C2 (de) 2003-07-24

Similar Documents

Publication Publication Date Title
KR100298533B1 (ko) Mpeg비디오압축해제용방법및장치
EP0799551B1 (en) Memory controller for decoding and displaying compressed video data
US5818967A (en) Video decoder engine
US6996174B2 (en) MPEG video decoder with integrated scaling and display functions
US6542162B1 (en) Color mapped and direct color OSD region processor with support for 4:2:2 profile decode function
US6275239B1 (en) Media coprocessor with graphics video and audio tasks partitioned by time division multiplexing
JP3943129B2 (ja) 3:2のプルダウンで映像をデコードしそして表示するメモリ利用法
US6104416A (en) Tiling in picture memory mapping to minimize memory bandwidth in compression and decompression of data sequences
US6442206B1 (en) Anti-flicker logic for MPEG video decoder with integrated scaling and display functions
EP1715696A2 (en) System, method and apparatus for a variable output video decoder
KR100606812B1 (ko) 비디오 디코딩 시스템
US6215822B1 (en) Motion compensated digital video decoding and buffer memory addressing therefor
US5778096A (en) Decompression of MPEG compressed data in a computer system
JPH08237664A (ja) メモリ制御方式ならびにこれを用いた画像復号装置
US6002441A (en) Audio/video subprocessor method and structure
EP1147671B1 (en) Method and apparatus for performing motion compensation in a texture mapping engine
EP1024668B1 (en) Method and apparatus for a motion compensation instruction generator
US7471298B1 (en) Fetching pixel data with reduced memory bandwidth requirement
EP1009162A2 (en) System and apparatus for a digital audio/video decoder
US8948263B2 (en) Read/write separation in video request manager
JPH1023403A (ja) 符号化画像データの復号および表示装置
KR19990024295A (ko) 확장 가능한 메모리를 구비한 비디오 디코더
Bergonzi et al. DIVA: a MPEG1 video decoder for interactive applications

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130531

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 17

EXPY Expiration of term