KR19990006296A - Mpeg영상 압축해제용 방법 및 장치 - Google Patents

Mpeg영상 압축해제용 방법 및 장치 Download PDF

Info

Publication number
KR19990006296A
KR19990006296A KR1019970069392A KR19970069392A KR19990006296A KR 19990006296 A KR19990006296 A KR 19990006296A KR 1019970069392 A KR1019970069392 A KR 1019970069392A KR 19970069392 A KR19970069392 A KR 19970069392A KR 19990006296 A KR19990006296 A KR 19990006296A
Authority
KR
South Korea
Prior art keywords
task
hardware
memory
dedicated
image
Prior art date
Application number
KR1019970069392A
Other languages
English (en)
Other versions
KR100298533B1 (ko
Inventor
헤만트 베다
산자이 곤가로
파르타 스리니바산
Original Assignee
클라크 3세 존 엠
내셔널 세미컨덕터 코오포레이션
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=***_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR19990006296(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 클라크 3세 존 엠, 내셔널 세미컨덕터 코오포레이션 filed Critical 클라크 3세 존 엠
Publication of KR19990006296A publication Critical patent/KR19990006296A/ko
Application granted granted Critical
Publication of KR100298533B1 publication Critical patent/KR100298533B1/ko

Links

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

Landscapes

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

Abstract

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

Description

MPEG 영상 압축해제용 방법 및 장치
본발명은 영상 압축해제에 관한 것으로, 특히 가용 시스템 메모리 및 연산 자원을 최적으로 이용하는 효과적인 방식으로 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) 을 이용하여 압축 영상 스트림을 분석하는 과업을 포함한다. 영상 해독작업은 연산 집약적 신호처리 작업을 수반하므로, MPEG 해독기 (17) 에 삽입된 하드웨어 로직은 복잡하고 결과적으로 광범위하다. 종래기술의 셋업의 또다른 문제점은 MPEG 해독기 (17) 가 CPU (12), 시스템 메모리 (14), 또는 그래픽 제어기 (18) 및 이와 연관된 메모리 (18a) 와 같은 시스템 구성요소에 의해 제공된 연산 및 메모리 자원을 이용하지 못한다는 것이다. 이것은 가용 시스템 자원의 비효율적인 사용을 초래한다.
전술한 내용에 비추어, 본발명의 목적은 효율적으로 MPEG 영상 압축해제를 수행하는 장치 및 방법을 제공하는 것이다. 본발명의 또다른 목적은 효율적인 MPEG 영상 해독을 수행할 뿐만 아니라 종래 기술의 영상 해독기보다 구조적으로 단순하고 종래 기술의 영상 해독기보다 값싼 영상 압축해제 장치 및 방법을 제공하는 것이다. 본발명의 또다른 목적은 연산 및 메모리 자원을 포함하는 시스템 자원을 최적으로 이용하여 영상 해독을 수행하는 장치 및 방법을 제공하는 것이다.
본발명은 MPEG 영상 해독 태스크를 CPU 에 의해 실행되는 소프트웨어 태스크 및 전용 영상 하드웨어에서 실행되는 하드웨어 태스크로 분할하는 신규한 장치 및 방법을 제공함으로써 상기한 목적을 달성한다. 소프트웨어 태스크는 광범위한 메모리나 연산 자원을 필요로하지 않는 태스크를 나타낸다. 반면에, 하드웨어에서 실행되는 태스크는 연산 및 메모리 집약적인 작업을 수반하는 태스크를 나타낸다.
소프트웨어 태스크는 입력 엔코딩된 MPEG 영상 데이터스트림을 사전 처리하고, 각각의 프레임을 위한 이 전처리된 정보를 시스템 메모리에 저장되는 심볼스트림으로 기입한다. 전용 영상 하드웨어는 시스템 메모리로부터 심볼스트림을 검색하고 영상 프레임의 처리를 완료한다. CPU 에 의해 실행되는 소프트웨어 태스크 및 전용 영상 하드웨어에서 실행되는 하드웨어 태스크 사이의 동기화는 다양한 데이터 구조, 전용 영상 하드웨어와 연관된 소자 드라이버 및 소프트웨어에 의해 유지되는 제어구조를 통하여 달성된다.
도 1 은 MPEG 영상 데이터를 해독하는데 적합한 전형적인 종래의 컴퓨터 시스템을 도시하는 블록다이어그램.
도 2 는 MPEG 영상 데이터를 해독하는데 적합한 본발명의 실시예를 도시하는 블록다이어그램.
도 3 은 압축된 MPEG 데이터스트림을 해독하는데 연관된 태스크를 도시하는 블록다이어그램.
도 4 는 CPU 상의 소프트웨어 실행 및 전용 영상 하드웨어 사이의 영상 해독 태스크를 분할하는 기술을 도시하는 도면.
도 5 는 CPU 상의 소프트웨어 실행 및 전용 영상 하드웨어 사이의 영상 해독 태스크를 분할하는 선택적인 기술을 도시하는 도면.
도 6 은 MPEG 영상 해독을 달성하기 위하여 전용 영상 하드웨어 및 CPU 상의 소프트웨어 실행 사이의 통신을 조정하는데 필요한 소프트웨어/하드웨어 및 데이터 구조를 묘사하는 본발명의 실시예를 도시하는 도면.
도 7 은 태스크 포인터 FIFO 가 전용 영상 하드웨어에 의해 유지되는 본발명의 실시예를 도시하는 도면.
도 8a 는 MPEG 영상의 해독 및 디스플레이에 연관된 다양한 소프트웨어 처리를 도시하는 플로우챠트.
도 8b 는 전용 영상 하드웨어의 태스크 핸들러에 의해 수행되는 작업의 순서를 도시하는 플로우챠트.
도 9 는 PAL/NTSC 화상 도출용 네 프레임을 저장하기 위한 프레임 버퍼의 한 실시예에 대한 구조를 도시하는 도면.
도 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
본발명의 추가적인 특징은 첨부도면과 함께 다음의 상세한 기재 및 첨부된 청구범위로부터 분명해질 것이다.
본발명의 지시에 따라, 압축 영상 재생시스템을 저비용으로 실행하는 신규한 압축해제 구조 및 방법이 개시된다. 특히, 본발명은 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 실행에 기초한 두개의 분할 실시예를 도시한다. 도 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) 가 프레임이나 필드의 세트인 화상을 해독하고 디스플레이하기를 완료하면, CPU 로 인터럽트를 보낸다. CPU (112) 상에서 실행되는 소프트웨어는 이러한 인터럽트를 이용하여 태스크 포인터에 계류중인 태스크 전체를 갱신하고 마지막으로 디스플레이된 프레임을 추적한다. 이하에서 소프트웨어-하드웨어 통신에 관한 보다 상세한 내용이 기재된다.
소프트웨어 및 전용 영상 하드웨어 사이의 통신
앞에서 간략히 기재되었듯이, CPU (112) 상에서 실행되는 소프트웨어는 들어오는 압축 MPEG 영상스트림을 부분적으로 처리하고, 이 부분적으로 처리된 심볼스트림을 시스템 메모리 (14) 에 기입한다. 전용 영상 하드웨어 (118b) 는 이 심볼스트림에 접근하여 해독 작업을 완료한다. 도 6 은 MPEG 영상 해독을 달성하기 위하여 전용 영상 하드웨어 (118b) 및 CPU (112) 상에서 실행되는 소프트웨어 사이의 통신을 조정하는데 필요한 소프트웨어/하드웨어 구성요소 및 데이터 구조의 한 실시예를 보인다. 도 6 에 도시된 실시예에서 보여진 것처럼, 주 구성요소는 소프트웨어 클라이언트 (140) 라고 불리는 CPU (112) 상에서 실행되는 소프트웨어, 전용 영상 하드웨어 (118b), 및 전용 영상 하드웨어 (118b) 를 위한 소자 드라이버로 작동하고 또한 CPU (112) 상에서 실행되는 하드웨어 추상계층 (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) 에 의해 예정된 디스플레이 및 해독 태스크를 수신하고 실행을 위하여 이러한 태스크들이 전용 영상 하드웨어 (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 로부터의 현재 엔트리는 파핑 (poping)된다. 단계 (182) 및 단계 (184) 에서, 태스크 핸들러는 예정된 태스크가 완료되기를 기다린다. 즉, VSYNC 의 수가 제 1 필드 디스플레이 기간 + 제 2 필드 디스플레이 기간 - 1 과 동일하기를 기다린다. 태스크 핸들러는, 그리고 나서, 단계 (172) 로 돌아와서 진행한다.
전용 영상 하드웨어 (118b) 는 다음 차례 슬라이스의 디스플레이가 정의되지 않는다면 마지막 프레임이나 필드를 반복하는데, 그 이유는 마지막 해독 태스크가 완료되지 않았기 때문이거나 다음 태스크가 아직 소프트웨어에 의해 프로그램되지 않았기 때문이다.
심볼스트림 통사론
심볼스트림 데이터는 CPU (112) 상에서 실행되는 소프트웨어에 의해 전처리된 영상 데이터를 나타내고, 차후의 해독을 위해 전용 영상 하드웨어 (118b) 에 전송될 준비가 되어있다. 심볼스트림의 한 실시예에 대한 통사론이 이하에 기재된다 (기재된 실시예에 대하여 각각의 테이터 요소는 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;i6;i++){
for(p=0;p32;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;in;i++)( //block info only for non-zero blocks.
for(p=0;plimit;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;in;i+ +){
for(p=0;plimit;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;i6;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;in;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;in; 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 비트 워드를 나타낸다.
테이블 (1) 심볼 테이블
심볼 B(15:11) 크기 내용
PICTURE_START 0x15 1w 화상 시작 코드:b2:1 = 선택적인 지그재그 스캔b1-0: 1=I, 2=P, 3=B 프레임
MBLK_TYPEdp16x8flddctfldpredflddecaMVbMVpatintra 0x17 1w 마크로블록형 워드:b9:1 = 이중 프라임, 0 = 정상B8:1=16x8 예상, 0=정상(필드 디코드만)b7:DCT 형 : 0=프레임, 1=필드b6 : 예상형 : 0=프레임, 1=필드b5:디코드형 :0=프레임, 1=필드b3:1=전방('A') 가준 사용b2:1=후방('B') 기준 사용b1: 0=IDCT 블록 데이터 없음, 1=PATTERN워드에 의해서 특정화된 블록 존재b0: 1=인트라, 모드 6b 0=인터, 패트 비트에 의해서 특성화된 블록 존재
FRMREF_PTR 데이터 1w 기준 프레임 포인터, 워드:b[15:12] : 'A' 기준 포인터 #2b[11:8] : 'B' 기준 포인터 #2b[7:4] : 'A' 기준 포인터 #1b[3:0] : 'B' 기준 포인터 #1각각 4 비트 포인터에서, b3은 상부/바닥 필드를 가리키며, b[2:0] 은 프레임 스토어 F0-F3 중 하나를 선택하며서 기준으로 사용한다.
A_HOFF,A_HOFF_2NDA_VOFF,A_VOFF_2NDB_HOFF,B_HOFF_2NDB_HOFF,B_HOFF_2ND 데이터데이터데이터데이터 1w1w1w1w 전방 혹은 'A' 예상 프레임, 수평 이동 벡터.전방 혹은 'A' 예상 프레임, 수직 이동 벡터.후방 혹은 'B' 예상 프레임, 수평 이동 벡터.후방 혹은 'B' 에상 프레임, 수직 이동 벡터.모든 것은 반픽셀 단위이며, 마크로블록 상부왼쪽 코너에 대하여 12 비트값이다. 만일 필드 해독되면, 수직 이동 벡터는 필드선 단위에 있으며, 그렇지않으면 프레임선 단위에 있다.
A_YBLK_ADDRA_YBLK_ADDR_2NDB_CBLK_ADDRB_YBLK_ADDR_2ND 데이터데이터 2w2w 30 비트 휘도블록 주소 오프셋, 반픽셀 정보30-비트 색블록 주소 오프셋, 반픽셀 정보b29:0=블록 주소 오프셋, b30=수평 반픽셀,b31=수직 반픽셀
테이블 (1) 심볼 테이블
심볼 B(15:11) 크기 내용
PATTERN 데이터 1w 각각의 블록을 위한 IDCT 계수의 존재를 지시하는, 마크로블록 블록 패턴, 블록당 한 비트b5: 1= Cr 의 계수가 존재b4: 1= Cb 의 계수가 존재b3: 1= Y3 의 계수가 존재b2: 1= Y2 의 계수가 존재b1: 1= Y1 의 계수가 존재b0: 1= Y0 의 계수가 존재
INTRA_BLKDATA[p] 데이터 1w 인트라 블록의 IDCT 출력, 워드:b15-8: 요소 2p+1, 8 비트로 표시되지 않음b7-0: 요소 2p, 8 비트로 표시되지 않음
INTER_BLKDATA[p] 데이터 1w1w2w idct_type에 의해서 결정된 형태, 내부 블록의 IDCT 출력:idct_type = 8 비트로 표시됨-b15-8 소자 2p+1, b7-0 요소 2pidct_type = 패킹된 9 비트로 표시됨 - b26-18 : 요소 3p+1 , b17-9 요소
ZLEN : COEFF 데이터 1w INVERSE 양자화 출력b15-4: 2 의 완전한 iq 계수, IQCOEFFb3-0 : 제로 길이 ZLENEOBLK(=0)아래에서 NOTE1 언급
PICTURE_END 0x1A 1w 화상 프래그의 끝, 태스크의 끝 지시, 심볼 스트림의 끝에 나타나야함
NOOP 0x1F 1w NOOP는 해독되지 않는다. 상기 워드의 하부 12 비트는 진단 혹은 다른 목적을 위하여 사용될 수도 있다. 하나 이상의 NOOP 코드는 화상 시작 코드 이전에만 나타나도록 한다.
0x1D 예비
0x1E 예비
16 비트 워드의 양자화된 계술를 패킹하는 것을 용이하게 하기 위하여, 0 런 길이가 4 비트로 엔코딩된다. MPEG 2 스트림이 63 까지의 런 길이를 특정함으로써, 이러한 접근법은 다수의 워드로 분할하기 위하여 15 개의 0 보다 큰 런 길이를 필요로하고, 때때로 0 값을 취하는 계수를 초래한다. 예를 들어,
계수 27 이 이어지는 35 개의 0 의 수열은 다음과 같이 엔코딩된다. 즉, (15:0), (15:0), (5:27) 로 엔코딩되는데, 여기서 각 쌍의 첫번째 수는 ZLEN 이고 두번째 수는 계수이다. 특정되지 않거나 'reserved' 라고 표시된 모든 비트는 0 으로 독출되고 기입된다. IDCT_TYPE 은 IDCT 데이터를 포맷하는 세가지 다른 방법을 나타낸다. 이 방법들은 16 비트, 9 비트, 및 8 비트로 표시되어 패킹되도록 데이터가 변환된다.
음성 및 영상 해독 태스크의 동기화
CPU 상에서 실행되는 소프트웨어는 MPEG 영상 데이터스트림의 영상 및 음성 성분 사이의 동기화 유지를 책임진다. 영상이 음성에 앞서 런된다면, 소프트웨어는 전용 영상 하드웨어로 태스크를 내보내는 것을 지연하고, 영상이 음성보다 늦다면 소프트웨어는 B 프레임 해독을 스킵한다.
전용 영상 하드웨어 (118b) 는 완전히 해독된 프레임만을 디스플레이하도록 제한된다. 이러한 디스플레이 전 해독 구성은 시스템 버스 (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 에 도시된다.
만일 프레임 버퍼 (118a) 가 4 개의 완전 프레임 스토어 모두를 수용할 수 없으면, 프레임 버퍼 (118a) 에 있는 2 개의 기준 (I/P) 프레임 및 3 개의 B 화상 필드, 즉, 3.5 프레임 스토어를 이용하여 MPEG 2 해독이 수행된다. 3 개의 B 필드 중에서 하나는 디스플레이용으로 할당되는 한편, 다른 두개는 해독용으로 할당될 수 있으므로, 화상의 찢김이 발생하지 않는다는 것을 보장한다. 이것은 테이블 (4) 와 테이블 (5) 및 도 10 에 도시된다.
PAL 포맷을 위하여 3.5 프레임 버퍼를 저장하는데 필요한 메모리는 프레임 버퍼 (118a) 의 용량 2 MByte 보다 더 크다. 많은 프래픽 카드가 2 MByte 의 RAM 만을 갖추므로, 전용 영상 하드웨어 (118b) 는 다음과 같이 PAL 화상을 해독하기 위한 저장 구성에 2 MByte 의 RAM 만을 제공한다.
구성 1) B 필드에 색 성분용 수평 절반 해상도 (HHR) 를 저장하기. 도 11 및 테이블 (6) 에 도시된 것처럼, Cb, Cr 성분이 수평방향으로 인자 2 에 의해서 서브샘플링된다.
구성 2) 도 12 및 테이블 (7) 에 도시된 것처럼, 각의 윈도우가 720×480 의 해상도, 즉, 필드당 드롭 48 라인을 갖는 B 필드 윈도우에 저장하기. 색 데이터의 어떠한 서브샘플링도 필요치 않다.
상기한 모든 실시예에서, 기준 프레임 (I/P) 은 항상 그 완전 해상도 (PAL 용 720×576 및 NTSC 용 720×480) 에서 인터레이스된 포맷으로 저장된다. 더욱이, 상기한 모든 실시예에서, 일정한 스트라이드 (수직으로 인접한 픽셀 사이의 거리) 가 유지된다. 앞에서 기재된 구성 1 및 구성 2 는 기입 전 독출 (rbw) 락 메카니즘 (lock mechanism) 과 함께 이용될 필요가 있는데, 그 이유는 연속된 B 프레임을 해독하는 동안에 동일한 메모리 영역이 이전 프레임의 디스플레이 독출용 및 연재 프레임의 해독 기입용으로 동시에 사용되기 때문이다. 예를 들어, HHR B 필드 (구성 1) 와 함께 제 1 B 프레임 (B1) 이 HF0 (탑 필드), HF1 (바닥 필드) 에 기입된다. 다음의 B 프레임 (B2) 이 HF0 (바닥), HF2 (탑) 에 기입된다. HF0 로의 B2 바닥의 해독 기입은 HF0 로부터의 B1-탑의 디스플레이 독출을 지연시킨다.
테이블 (8) 은 그래픽 카드 상에서 이용가능한 RAM 크기에 기초한 적당한 저장 구성, 해상도 (NTSC/PAL), 및 DVD 서브화상과 같은 지원되어야 하는 특성을 소프트웨어가 어떻게 선택하는지를 보인다.
디스플레이-해독 예정
이하에서는 본발명에 따라 해독 및 디스플레이 태스크가 어떻게 예정되는지를 기재한다. 이러한 정보는 태스크 데이터 구조를 이루는 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 필드로서 프레임을 디스플레이하기
태스크 예정
프레임 스토어 조직, 인터레이스된/진행 영상 프레임, 및 디스플레이/해독 비율에 따라, 테이블 (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 프레임 스토어
예 2 : 필드 디스플레이 (3 배 디스플레이 비율) - 3.5 프레임 스토어
예 3 : 필드 디스플레이 (2 배 디스플레이 비율) - 4 프레임 스토어
예 4 : 필드 디스플레이 (3 배 디스플레이 비율) - 4 프레임 스토어
예 5 : (진행) 필드 디스플레이 (2 배 디스플레이 비율) - 4 프레임 스토어
예 6 : (진행) 필드 디스플레이 (3 배 디스플레이 비율) - 4 프레임 스토어
태스크의 실예 : 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 영상 해독을 수행할뿐만 아니라 종래 기술의 영상 해독기보다 구조적으로 단순하고 종래 기술의 영상 해독기보다 값싼 영상 압축해제 장치 및 방법이 제공된다. 더욱이, 본발명에 따르면, 연산 및 메모리 자원을 포함하는 시스템 자원을 최적으로 이용하여 영상 해독을 수행할 수 있다.

Claims (12)

  1. 엔코딩된 MPEG 영상 데이터스트림을 해독하는 방법으로서,
    상기 엔코딩된 MPEC 영상 데이터스트림의 상기 해독을 확장 메모리 및 계산용 자원을 필요로하는 메모리연산 집약적 태스크 및 확장 메모리 또는 계산용 자원을 필요로로 하지 않는 비 메모리연산 집약적 태스크로 분할하는 단계,
    각 영상 프레임에 대해 사전 처리된 심볼스트림 데이터구조를 생성하기 위해 프로세서 상에서 실행되는 스프트웨어 모듈을 통해 상기 비 메모리연산 집약적 태스크를 실행하는 단계,
    메모리 버퍼에 상기 사전 처리된 심볼스트림 데이터 구조를 저장하는 단계,
    해독 영상 프레임을 생성하기 위한 전용 영상 하드웨어에서 상기 메모리연산 집약적 태스크를 실행하는 단계,
    상기 프로세서에 의해서 실행된 상기 소프트웨어 모듈을 통해 실행된 상기 비 메모리연산 집약적 태스크와 상기 전용 영상 하드웨어에 의해서 실행된 상기 메모리연산 집약적 태스크를 동기화시키는 단계, 및
    디스플레이 장치 상에 상기 해독 영상 프레임을 디스플레이하는 단계로 이루어지는 것을 특징으로 하는 해독 방법.
  2. 제 1 항에 있어서, 상기 프로세서 상에서 실행되는 상기 소프트웨어 모듈을 통해 상기 비 메모리연산 집약적 태스크를 실행하는 단계는,
    분석된 영상 데이터스트림을 생성하기 위해 각종 길이 해독을 이용하여 상기 엔코딩 MPEG 영상 데이터스트림을 분석하는 단계,
    상기 양자화된 영상 데이터스트림을 생성하기 위해 상기 분석된 영상 데이터스트림에 역 양자화를 실행하는 단계,
    상기 사전 처리된 심볼스트림 데이터 구조로서 상기 양자화된 영상 데이터스트림을 포맷팅시키는 단계, 및
    상기 메모리 버퍼에 상기 사전 처리된 심볼스트림 데이터 구조를 기입하는 단계로 이루어지는 것을 특징으로 하는 해독 방법.
  3. 제 1 항에 있어서, 상기 프로세서 상에서 실행되는 상기 소프트웨어 모듈을 통해 상기 비 메모리연산 집약적 태스크를 실행하는 단계는,
    분석된 영상 데이터스트림을 생성하기 위해 각종 길이 해독을 이용하여 상기 엔코딩 MPEG 영상 데이터스트림을 분석하는 단계,
    상기 양자화된 영상 데이터스트림을 생성하기 위해 상기 분석된 영상 데이터스트림 상에 역 양자화를 실행하는 단계,
    코사인 변환 영상 데이터스트림을 생성하기 위해 상기 양자화된 영상 데이터스트림 상에 역 불연속 코사인 변환을 실행하는 단계,
    상기 사전 처리된 심볼스트림 데이터구조로서 상기 코사인 변환 영상 데이터스트림을 포맷팅하는 단계, 및
    상기 메모리 버퍼에 상기 사전 처리된 심볼스트림 데이터구조를 기입하는 단계로 이루어지는 것을 특징으로 하는 해독 방법.
  4. 제 1 항에 있어서, 상기 해독 영상 프레임을 생성하기 위해 상기 전용 영상 하드웨어에서 상기 메모리연산 집약적 태스크를 실행하는 단계는,
    상기 메모리 버퍼에 저장된 상기 사전 처리된 심볼스트림 데이터구조에 접근하는 단계,
    보상된 영상 데이터스트림을 생성하기 위해 상기 사전 처리된 심볼스트림 데이터구조상에 동작 보상 연산을 실행하는 단계, 및
    상기 해독 영상 프레임을 생성하기 위해 상기 보상된 영상 데이터스트림 상에 블록 재구성 연산을 실행하는 단계로 이루어지는 것을 특징으로 하는 해독 방법.
  5. 제 1 항에 있어서, 상기 해독 영상 프레임을 생성하기 위해 상기 전용 영상 하드웨어에서 상기 메모리연산 집약적 태스크를 실행하는 단계는,
    상기 메모리 버퍼에 저장된 상기 사전 처리된 심볼스트림 데이터구조에 접근하는 단계,
    코사인 변환 영상 데이터스트림을 생성하기 위해 상기 사전 처리된 심볼스트림 데이터구조상에 역 불연속 코사인 변환 연산을 실행하는 단계,
    보상된 영상 데이터스트림을 생성하기 위해 상기 코사인 변환 영상 데이터스트림 상에 동작 보상 연산을 실행하는 단계, 및
    상기 해독 영상 프레임을 생성하기 위해 상기 보상된 영상 데이터스트림 상에 블록 재구성 연산을 실행하는 단계로 이루어지는 것을 특징으로 하는 해독 방법.
  6. 제 1 항에 있어서, 상기 프로세서에 의해서 실행된 상기 소프트웨어 모듈을 통해 실행된 상기 비 메모리 집약적 태스크와 상기 전용 영상 하드웨어에 의해서 실행된 상기 메모리연산 집약적 태스크를 동기화시키는 단계는,
    상기 사전 처리된 심볼스트림 데이터구조를 저장하기 위해 상기 메모리 버퍼를 할당하는 단계,
    소프트웨어 태스크 제어 데이터구조의 태스크 포인터 대기열을 유지하는 단계로서, 상기 소프트웨어 태스크 제어 데이터구조 각각은 상기 전용 영상 하드웨어에 의해서 실행될 상기 메모리연산 집약적 태스크로서 스케줄 되도록 준비된 상기 소프트웨어 모듈에 의해서 처리된 각 상기 비 메모리연산 집약적 태스크에 대응하는 제어 정보를 저장하는, 이상의 태스크 포인터 대기열 유지 단계,
    완료된 상기 비 메모리연산 집약적 태스크의 카운트를 유지하는 단계,
    상기 소프트웨어 제어 데이터구조를 하드웨어 태스크 제어 데이터구조로 변환하는 단계로서, 상기 하드웨어 태스크 제어 데이터구조는 상기 전용 영상 하드웨어에 의해서 실행될 상기 메모리연산 집약적 태스크에 대응하는 정보를 저장하는, 이상의 변환 단계,
    상기 전용 영상 하드웨어에 상기 하드웨어 태스크 제어 데이터구조의 태스크 FIFO 대기열을 유지하는 단계로서, 상기 태스크 FIFO 대기열의 각 상기 하드웨어 태스크 제어 데이터 구조는 상기 전용 영상 하드웨어에 의해서 실행될 상기 메모리연산 집약적 태스크로 간주하는 정보를 저장하는, 이상의 태스크 FIFO 대기열 유지 단계,
    상기 전용 영상 하드웨어에 의해서 상기 메모리연산 집약적 태스크의 신호 완료에 대해 인터럽트를 발생시키는 단계, 및
    상기 소프트웨어 모듈이 상기 인터럽트 시에 상기 태스크 FIFO 대기열로부터 상기 하드웨어 태스크 제어 데이터구조를 파핑하는 단계로서, 상기 파핑된 하드웨어 태스크 제어 데이터구조는 상기 전용 영상 하드웨어에 의해 완료된 상기 메모리연산 집약적 태스크에 대응하는, 이상의 파핑 단계로 이루어지는 것을 특징으로 하는 해독 방법.
  7. 비 메모리연산 집약적 태스크 및 메모리연산 집약적 태스크로 분할함으로써 엔코딩 MPEG 영상 데이터스트림을 해독하는 장치로서,
    버스 인터페이스,
    상기 버스 인터페이스에 결합된 프로세서,
    상기 버스 인터페이스에 결합된 시스템 메모리로서, 상기 시스템 메모리는 상기 프로세서 상에서 실행될 수 있는 다수의 소프트웨어 모듈을 저장하도록 구성되고, 상기 다수의 소프트웨어 모듈로 이루어진 하나 이상의 소프트웨어 모듈은 사전 처리된 심볼스트림 데이터구조를 생성하기 위해 상기 비 메모리연산 집약적 태스크를 실행하도록 구성된, 이상의 시스템 메모리,
    상기 버스 인터페이스에 결합된 전용 영상 하드웨어로서, 상기 전용 영상 하드웨어는 디스플레이 장치 상에 디스플레이될 해독 영상 데이터를 생성하기 위해 상기 메모리연산 집약적 태스크에 결합되는, 이상의 전용 영상 하드웨어, 및
    상기 전용 영상 하드웨어에 결합된 전용 메모리로 이루어지는 것을 특징으로 하는 해독 장치.
  8. 제 7 항에 있어서, 상기 프로세서는,
    분석된 영상 데이터스트림을 생성하기 위해 각종 길이 해독을 이용하여 상기 엔코딩 MPEG 영상 스트림을 분석하고,
    상기 양자화된 영상 데이터스트림을 생성하기 위해 상기 분석된 영상 데이터스트림 상에 역 양자화를 실행하고,
    상기 사전 처리된 심볼스트림 데이터구조로서 상기 양자화된 영상 데이터스트림을 포맷팅하고,
    상기 시스템 메모리에 상기 사전 처리된 심볼스트림 데이터구조를 저장하기 위해 상기 시스템 메모리에 저장된 상기 다수의 소프트웨어 모듈로 이루어진 하나 이상의 소프트웨어 모듈을 실행하도록 구성되는 것을 특징으로 하는 해독 장치.
  9. 제 7 항에 있어서, 상기 프로세서는,
    분석된 영상 데이터스트림을 생성하기 위해 각종 길이 해독을 이용하여 상기 엔코딩 MPEG 영상 스트림을 분석하고,
    상기 양자화된 영상 데이터스트림을 생성하기 위해 상기 분석된 영상 데이터스트림 상에 역 양자화를 실행하고,
    코사인 변환 영상 데이터스트림을 생성하기 위해 상기 양자화된 영상 데이터스트림 상에 역 불연속 코사인 변환을 실행하고,
    상기 사전 처리된 심볼스트림 데이터구조로서 상기 코사인 변환 영상 데이터스트림을 포맷팅시키고,
    상기 시스템 메모리에 상기 사전 처리된 심볼스트림 데이터구조를 저장하기 위하여,
    상기 시스템 메모리에 저장된 상기 다수의 소프트웨어 모듈로 이루어진 하나 이상의 소프트웨어 모듈을 실행하도록 구성되는 것을 특징으로 하는 해독 장치.
  10. 제 7 항에 있어서, 상기 전용 영상 하드웨어는,
    상기 시스템 메모리에 저장된 상기 사전 처리된 심볼스트림 데이터구조를 판독하고,
    보상된 영상 데이터스트림을 생성하기 위해 상기 사전 처리된 심볼스트림 데이터 상에 동작 보상을 실행하고,
    상기 해독 영상 데이터를 생성하기 위해 상기 보상된 영상 데이터스트림 상에 블록 재구성 연산을 실행하도록 더 구성되는 것을 특징으로 하는 해독 장치.
  11. 제 7 항에 있어서, 상기 전용 영상 하드웨어는,
    상기 시스템 메모리에 저장된 상기 사전 처리된 심볼스트림 데이터구조를 판독하고,
    코사인 변환 영상 데이터스트림을 생성하기 위해 상기 사전 처리된 심볼스트림 데이터구조상에 역 불연속 코사인 변환 연산을 실행하고,
    보상된 영상 데이터스트림을 생성하기 위해 상기 코사인 변환 영상 데이터스트림 상에 동작 보상을 실행하고,
    상기 해독 영상 데이터를 생성하기 위해 상기 보상된 영상 데이터스트림 상에 블록 재구성 연산을 실행하도록 더 구성되는 것을 특징으로 하는 해독 장치.
  12. 제 7 항에 있어서, 상기 시스템 메모리에 저장된 상기 다수의 소프트웨어 모듈로 이루어진 하나 이상의 소프트웨어 모듈은,
    상기 사전 처리된 심볼스트림 데이터구조용 메모리 버퍼를 상기 시스템 메모리에 할당하고,
    소프트웨어 태스크 제어 데이터구조의 태스크 포인터 대기열을 유지하고, 상기 소프트웨어 태스크 제어 데이터구조 각각은 상기 전용 영상 하드웨어에 의해서 실행될 상기 메모리연산 집약적 태스크로서 예정되도록 준비된 상기 소프트웨어 모듈에 의해서 처리된 각 상기 비 메모리연산 집약적 태스크에 대응하고,
    완료된 상기 비 메모리연산 집약적 태스크의 카운트를 유지하고,
    상기 소프트웨어 제어 데이터구조를 하드웨어 데이터 제어 데이터구조로 변환하고, 상기 하드웨어 태스크 제어 데이터구조는 상기 전용 영상 하드웨어에 의해서 실행될 상기 메모리연산 집약적 태스크에 대응하는 정보를 저장하도록 더 구성되고,
    상기 전용 영상 하드웨어는,
    상기 전용 메모리에 상기 하드웨어 태스크 제어 데이터구조의 태스크 FIFO 대기열을 유지하고, 상기 태스크 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 1997-06-17
US8/877,136 1997-06-17
US08/877,136 US5990958A (en) 1997-06-17 1997-06-17 Apparatus and method for MPEG video decompression

Publications (2)

Publication Number Publication Date
KR19990006296A true KR19990006296A (ko) 1999-01-25
KR100298533B1 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100551951B1 (ko) * 2002-10-18 2006-02-20 주식회사 모티스 동영상 복호화 처리 시스템 및 가변장 복호화 시스템
KR100817248B1 (ko) * 2000-07-17 2008-03-27 톰슨 라이센싱 Ieee 1394 버스로 전송되는 mpeg 기록된 데이터를판독하는 방법 및 장치
US9367445B2 (en) 2012-08-31 2016-06-14 Samsung Electronics Co., Ltd. Data processing apparatus, method for processing data, and computer readable recording medium recorded with program to perform the method

Families Citing this family (71)

* 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
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
US6490324B1 (en) 1998-12-08 2002-12-03 Stmicroelectronics, Inc. System, method and apparatus for a variable output video decoder
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
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
US6999424B1 (en) 2000-01-24 2006-02-14 Ati Technologies, Inc. Method for displaying data
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
US6885680B1 (en) 2000-01-24 2005-04-26 Ati International Srl Method for synchronizing to a data stream
US7366961B1 (en) 2000-01-24 2008-04-29 Ati Technologies, Inc. Method and system for handling errors
US6785336B1 (en) 2000-01-24 2004-08-31 Ati Technologies, Inc. Method and system for retrieving adaptation field data associated with a transport packet
US6763390B1 (en) 2000-01-24 2004-07-13 Ati Technologies, Inc. Method and system for receiving and framing packetized data
US8284845B1 (en) 2000-01-24 2012-10-09 Ati Technologies Ulc Method and system for handling data
WO2001065774A1 (en) * 2000-03-01 2001-09-07 Integrated Telecom Express, Inc. Scaleable architecture for multiple-port, system-on-chip adsl communications systems
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
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
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
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
US7149549B1 (en) 2000-10-26 2006-12-12 Ortiz Luis M Providing multiple perspectives for a venue activity through an electronic hand held device
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
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
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
US7418037B1 (en) * 2002-07-15 2008-08-26 Apple Inc. Method of performing rate control for a compression system
US7769084B1 (en) 2002-07-15 2010-08-03 Apple Inc. Method for implementing a quantizer in a multimedia compression and encoding 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
WO2004034617A1 (en) 2002-10-07 2004-04-22 Immersion Entertainment, Llc System and method for providing event spectators with audio/video signals pertaining to remote events
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
JP3680845B2 (ja) * 2003-05-28 2005-08-10 セイコーエプソン株式会社 圧縮動画像の伸張装置及びそれを用いた画像表示装置
JP3680846B2 (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
DE602006004046D1 (de) * 2005-06-01 2009-01-15 Nxp Bv Verfahren und vorrichtung zur videodekodierung in mehreren durchgängen
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
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

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3436818B2 (ja) * 1995-01-24 2003-08-18 株式会社東芝 コンピュータシステムおよび動画再生方法
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
US5815206A (en) * 1996-05-03 1998-09-29 Lsi Logic Corporation Method for partitioning hardware and firmware tasks in digital audio/video decoding
US5818532A (en) * 1996-05-03 1998-10-06 Lsi Logic Corporation Micro architecture of video core for MPEG-2 decoder

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100817248B1 (ko) * 2000-07-17 2008-03-27 톰슨 라이센싱 Ieee 1394 버스로 전송되는 mpeg 기록된 데이터를판독하는 방법 및 장치
KR100551951B1 (ko) * 2002-10-18 2006-02-20 주식회사 모티스 동영상 복호화 처리 시스템 및 가변장 복호화 시스템
US9367445B2 (en) 2012-08-31 2016-06-14 Samsung Electronics Co., Ltd. Data processing apparatus, method for processing data, and computer readable recording medium recorded with program to perform the method

Also Published As

Publication number Publication date
DE19756210A1 (de) 1998-12-24
DE19756210C2 (de) 2003-07-24
KR100298533B1 (ko) 2005-05-18
US5990958A (en) 1999-11-23

Similar Documents

Publication Publication Date Title
KR100298533B1 (ko) Mpeg비디오압축해제용방법및장치
US6996174B2 (en) MPEG video decoder with integrated scaling and display functions
US5818967A (en) Video decoder engine
JP3943129B2 (ja) 3:2のプルダウンで映像をデコードしそして表示するメモリ利用法
US6642934B2 (en) Color mapped and direct color OSD region processor with support for 4:2:2 profile decode function
EP0799551B1 (en) Memory controller for decoding and displaying compressed video data
US6088047A (en) Motion compensated digital video decoding with buffered picture storage memory map
US6275239B1 (en) Media coprocessor with graphics video and audio tasks partitioned by time division multiplexing
US6442206B1 (en) Anti-flicker logic for MPEG video decoder with integrated scaling and display functions
JPH08265766A (ja) デジタルビデオ減圧プロセッサ及びそのためのdramマッピング方法
KR100606812B1 (ko) 비디오 디코딩 시스템
US5926223A (en) Adaptive video decompression
US5778096A (en) Decompression of MPEG compressed data in a computer system
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
US8948263B2 (en) Read/write separation in video request manager
Bala et al. Experiences with software MPEG-2 video decompression on an SMP PC
JP3880597B2 (ja) マルチメディア情報編集装置
KR20070011340A (ko) 입체적 3d-비디오 이미지 디지털 코딩 시스템 및 방법
JPH1023403A (ja) 符号化画像データの復号および表示装置
JPH10257454A (ja) グラフィクス生成装置
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