JP4258469B2 - 表示コントローラ - Google Patents

表示コントローラ Download PDF

Info

Publication number
JP4258469B2
JP4258469B2 JP2004380985A JP2004380985A JP4258469B2 JP 4258469 B2 JP4258469 B2 JP 4258469B2 JP 2004380985 A JP2004380985 A JP 2004380985A JP 2004380985 A JP2004380985 A JP 2004380985A JP 4258469 B2 JP4258469 B2 JP 4258469B2
Authority
JP
Japan
Prior art keywords
processing
multimedia
host
decoding
processor
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
JP2004380985A
Other languages
English (en)
Other versions
JP2006184793A (ja
Inventor
嘉政 近藤
康彦 花輪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2004380985A priority Critical patent/JP4258469B2/ja
Priority to US11/319,077 priority patent/US7760198B2/en
Publication of JP2006184793A publication Critical patent/JP2006184793A/ja
Application granted granted Critical
Publication of JP4258469B2 publication Critical patent/JP4258469B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/4425Monitoring of client processing errors or hardware failure
    • 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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • 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/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Stored Programmes (AREA)
  • Controls And Circuits For Display Device (AREA)

Description

本発明は、表示コントローラに関する。
動画、静止画、音データなどのマルチメディア情報に対する符号化方式として、MPEG−4(Moving Picture Experts Group Phase 4)が規格化されている。近年の携帯電話機などの携帯型電子機器は、このMPEG−4の規格に準拠したエンコード、デコード機能を有している。このような機能を持つことで、カメラ(CCD)で撮った動画データをエンコードして他の携帯電話(サーバー)に送信したり、アンテナを介して他の携帯電話(サーバー)から受信した動画データをデコードして表示(LCD)パネルに表示したりすることが可能になる。
さて、MPEG−4のエンコード、デコードなどのマルチメディア処理を行う場合、一連の処理の全てをハードウェア処理回路(ASIC)により実現する第1の手法が考えられる。
しかしながらこの第1の手法では、ハードウェア処理回路が大規模化し、携帯型電子機器の小型化、低消費電力化の要請に応えることができない。
一方、携帯電話機などの携帯型電子機器では、機器全体を制御したりベースバンドエンジン(通信処理)を実現するためのホストCPU(Central Processing Unit)が組み込
まれている。従って、このホストCPUを用いたソフトウェア処理によりMPEG−4などのマルチメディア処理を実現する第2の手法も考えられる。
しかしながら、この第2の手法では、ホストCPUの処理負荷が増加してしまい、ホストCPUが他の処理に費やす時間に制約が生じ、ホストCPUが組み込まれた電子機器のパフォーマンスを低下させてしまう。またホストCPUの処理時間の増加を招き、消費電力が大きくなり、バッテリの消耗抑制のための低消費電力化への要請に応えることができない。
また、ホストCPUとDSP(Digital Signal Processor)によりマルチメディア処理を実現する第3の手法も考えられる。具体的には、DSPの内蔵メモリ(フラッシュROMなどの不揮発性メモリ)に、動画(MPEG)、静止画(JPEG)、音(オーディオ、音声)データのエンコード、デコードを実行するための全てのマルチメディア処理用プログラム群を記憶しておく。そしてホストCPUが、起動コマンドを送信することで、起動が指示されたマルチメディア処理用プログラムをDSPが実行する。
しかしながら、この第3の手法では、複雑な一連のマルチメディア処理の全てをDSPが実行する必要がある。従って、コーデックの種類が増えたり、ストリームデータの多重化・分離化などの付加的な処理が増えて行くにつれて、DSPにマルチメディア処理を特化させて実行させるというアーキテクチャの意味合いが薄れ、結果的に、DSPやシステムのパフォーマンスが低下する。また、年々複雑化するマルチメディア処理に対応するために、DSPのクロック周波数を上昇させる必要が生じ、消費電力の増加や発熱の問題を招く。また、この第3の手法では、一連のマルチメディア処理用プログラム群の全てをDSPの内蔵メモリ(フラッシュROM)に記憶する必要があり、メモリの容量が増加し、消費電力の増加、製品の高コスト化の問題を招く。
MPEG-4 Visual Part(勧告書ISO/IEC 14496-2:1999(E) Annex L)
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、マルチメディア処理を効率良く実行できる表示コントローラを提供することにある。
本発明は、動画データ、静止画データ又は音データについてのエンコード又はデコード処理であるマルチメディア処理を行うための表示コントローラであって、ホストプロセッサとのインターフェース処理を行うホストインターフェースと、ホストメモリに記憶されるマルチメディア処理用のプログラム群の中から、前記ホストプロセッサがマルチメディア処理用プログラムをリードして送信してきた場合に、送信された前記マルチメディア処理用プログラムがロードされるメモリと、ロードされた前記マルチメディア処理用プログラムに基づいて、前記マルチメディア処理のうちソフトウェア処理に割り当てられたソフトウェア処理部分を実行する内蔵プロセッサと、前記マルチメディア処理のうちハードウェア処理に割り当てられたハードウェア処理部分を実行する第1のハードウェアアクセラレータとを含む表示コントローラに関係する。
本発明によれば、ホストメモリに記憶されるマルチメディア処理用プログラム群の中から選択されたマルチメディア処理用プログラムが、表示コントローラのメモリにロードされる。そして、内蔵プロセッサが、このロードされたマルチメディア処理用プログラムに基づいてマルチメディア処理のソフトウェア処理部分を実行し、第1のハードウェアアクセラレータが、マルチメディア処理のハードウェア処理部分を実行する。このようにすれば、マルチメディア処理を効率良く実行できる。また、全てのマルチメディア処理用プログラムを表示コントローラのメモリにロードしなくても済むようになり、メモリの記憶容量を節約できる。また、マルチメディア処理が複雑化した場合にも、これに柔軟に対応できるようになる。
また本発明では、前記内蔵プロセッサは、前記ホストプロセッサからリセット解除を指示された場合に、リセット状態が解除され、前記リセット状態の解除後に前記マルチメディア処理用プログラムを実行するようにしてもよい。
このようにすれば、必要な時にだけ内蔵プロセッサのリセット状態を解除してマルチメディア処理用プログラムを実行させることが可能となり、低消費電力化を実現できる。
また本発明では、前記内蔵プロセッサは、前記リセット状態の解除後に、前記ホストプロセッサからのコマンドの受信をウェイトするコマンドウェイト状態に移行し、前記コマンドウェイト状態において前記マルチメディア処理用プログラムの実行開始を前記ホストプロセッサから指示された場合に、前記マルチメディア処理用プログラムを実行するようにしてもよい。
このようにすれば、ホストプロセッサの制御の元で、一連のマルチメディア処理を効率良く実行できる。
また本発明では、前記マルチメディア処理用プログラムは、動画データのエンコード処理のソフトウェア処理部分を実行するためのエンコード処理用プログラムであり、前記第1のハードウェアアクセラレータは、ハードウェア処理部分である離散コサイン変換、量子化、逆量子化、逆離散コサイン変換、動き補償、動き検出の処理を行い、前記内蔵プロセッサは、ソフトウェア処理部分である可変長符号への符号化処理を行うようにしてもよい。
このようにすれば、処理負荷が重く、変更の可能性が低い離散コサイン変換、量子化等のハードウェア処理部分については、第1のハードウェアアクセラレータにより実行される。一方、処理負荷が比較的低く、フレキシブルなプログラミングが要求されるソフトウェア処理部分については、内蔵プロセッサにより実行される。このように役割分担することで、マルチメディア処理のエンコード処理を更に効率良く実行できる。
また本発明では、前記第1のハードウェアアクセラレータは、フレーム間符号化の場合にはスキャニング処理を行い、前記内蔵プロセッサは、フレーム内符号化の場合にはDC予測、スキャニングの処理を行うようにしてもよい。
このようにすれば、符号化の種類に応じた最適な役割分担でマルチメディア処理のエンコード処理を実行できる。
また本発明では、前記マルチメディア処理用プログラムは、動画データのエンコード処理のソフトウェア処理部分を実行するためのエンコード処理用プログラムであり、前記第1のハードウェアアクセラレータは、前記ホストプロセッサからエンコード処理の実行開始を指示された場合に、エンコードデータバッファに書き込まれた動画データに対して、エンコード処理のハードウェア処理部分を実行し、実行後の動画データをFIFOバッファに書き込み、前記内蔵プロセッサは、前記ホストプロセッサから前記エンコード処理用プログラムの実行開始を指示された場合に、前記FIFOバッファに書き込まれた動画データに対して、前記エンコード処理用プログラムに基づきエンコード処理のソフトウェア処理部分を実行し、実行後の動画データをホスト用バッファに書き込むようにしてもよい。
このようにFIFOバッファを利用すれば、ホストプロセッサの制御の元で、マルチメディア処理のエンコード処理をスムーズに効率良く実行できる。
また本発明では、前記マルチメディア処理用プログラムは、動画データのデコード処理のソフトウェア処理部分を実行するためのデコード処理用プログラムであり、前記内蔵プロセッサは、前記デコード処理用プログラムに基づいて、ソフトウェア処理部分である可変長符号の復号化処理を行い、前記第1のハードウェアアクセラレータは、ハードウェア処理部分である逆量子化、逆離散コサイン変換、動き補償の処理を行うようにしてもよい。
このようにすれば、処理負荷が重く、変更の可能性が低い逆量子化、逆離散コサイン変換等のハードウェア処理部分については、第1のハードウェアアクセラレータにより実行される。一方、処理負荷が比較的低く、フレキシブルなプログラミングが要求されるソフトウェア処理部分については、内蔵プロセッサにより実行される。このように役割分担することで、マルチメディア処理のデコード処理を更に効率良く実行できる。
また本発明では、前記内蔵プロセッサは、フレーム内符号化の場合には逆スキャニング、逆DC/AC予測の処理を行い、前記第1のハードウェアアクセラレータは、フレーム間符号化の場合には逆スキャニング処理を行うようにしてもよい。
このようにすれば、符号化の種類に応じた最適な役割分担でマルチメディア処理のデコード処理を実行できる。
また本発明では、前記マルチメディア処理用プログラムは、動画データのデコード処理のソフトウェア処理部分を実行するためのデコード処理用プログラムであり、前記内蔵プロセッサは、前記ホストプロセッサから前記デコード処理用プログラムの実行開始を指示された場合に、ホスト用バッファに書き込まれた動画データに対して、前記デコード処理用プログラムに基づきデコード処理のソフトウェア処理部分を実行し、実行後の動画データをFIFOバッファに書き込み、前記第1のハードウェアアクセラレータは、前記ホストプロセッサからデコード処理の実行開始を指示された場合に、前記FIFOバッファに書き込まれた動画データに対して、デコード処理のハードウェア処理部分を実行し、実行後の動画データをデコードデータバッファに書き込むようにしてもよい。
このようにFIFOバッファを利用すれば、ホストプロセッサの制御の元で、マルチメディア処理のデコード処理をスムーズに効率良く実行できる。
また本発明では、前記マルチメディア処理用プログラムは、動画データのデコード処理のソフトウェア処理部分を実行するためのデコード処理用プログラムであり、前記内蔵プロセッサは、デコード処理にエラーが発生した場合には、エラーの発生を前記ホストプロセッサに通知し、デコード処理のソフトウェア処理部分を前記ホストプロセッサに実行させるようにしてもよい。
このようにすれば、デコードエラーが発生した場合にも、そのエラーを回復して、その後のハードウェア処理部分を適正に実行することが可能になる。
また本発明では、前記内蔵プロセッサに制御され、前記マルチメディア処理のソフトウェア処理部分の一部をアシストする第2のハードウェアアクセラレータを含むようにしてもよい。
以下、本発明の実施形態について詳細に説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
1.構成
図1に、本実施形態の表示コントローラを含むマルチメディア処理システムと、このマルチメディア処理システムを含む電子機器の構成例を示す。なおマルチメディア処理システム、電子機器、表示コントローラの構成は図1に限定されず、同図の構成要素の一部を省略したり他の構成要素を加えてもよい。
図1は、マルチメディア処理システム20を含む電子機器が携帯電話機である場合の例である。図1の携帯電話機(広義には電子機器)は、アンテナ10、変復調器12、操作部14、表示ドライバ16、表示パネル17、カメラ18、マルチメディア処理システム20を含む。マルチメディア処理システム20は、ホストCPU30(広義にはホストプロセッサ)、ホストメモリ40、表示コントローラ50を含む。
アンテナ10を介して他の機器(携帯電話機、サーバー)から受信したデータ(動画データ、MPEGストリーム)は、変復調器12で復調されてホストCPU30に供給される。一方、ホストCPU30からのデータは、変復調器12で変調されて、アンテナ10を介して他の機器に送信される。
ユーザからの操作情報は、操作部14(操作ボタン)を介して入力される。この操作情報に基づいて、ホストCPU30の制御の元で、データの通信処理、データのエンコード・デコード処理、表示パネル17への画像の表示処理、カメラ18(カメラモジュール)の撮像処理などが行われる。
表示パネル17は表示ドライバ16によって駆動される。表示パネル17は、複数の走査線、複数のデータ線、複数の画素を含む。表示ドライバ17は、走査線を駆動(選択)する走査ドライバの機能と、画像データ(表示データ)に対応した電圧をデータ線に供給するデータドライバの機能を有する。表示コントローラ50は表示ドライバ16に接続され、表示ドライバ16に画像データを供給する。なお表示パネル17としては液晶表示パネル(LCD)を採用できるが、これに限定されず、エレクトロルミネッセンス表示パネルやプラズマ表示パネルなどであってもよい。
カメラ18はCCD(Charge-Coupled Device)を含む。そしてCCDで撮像した画像のデータを、YUVフォーマットで表示コントローラ50に供給する。
ホストCPU30は、ホストメモリ40にアクセスしてホスト処理を行う。具体的には、表示コントローラ50を制御する処理や、機器全体を制御する処理や、ベースバンドエンジン(通信処理エンジン)としての処理などを行う。ホストメモリ40には種々のプログラムが記憶される。ホストCPU30は、ホストメモリ40に記憶されたプログラムにより動作してソフトウェア処理を実現する。このホストメモリ40は、フラッシュROMなどの不揮発性メモリやRAMなどにより実現できる。
表示コントローラ50は、表示ドライバ16を制御する。この表示コントローラ50は、ホストインターフェース60、内蔵CPU70(広義には内蔵プロセッサ)、ハードウェアアクセラレータ80、メモリ90を含む。なお本明細書中及び図面では、「インターフェース」、「ハードウェア」、「ソフトウェア」を、適宜、「I/F」、「H/W」、「S/W」と略称する。
表示コントローラ50(画像コントローラ)は、カメラ18からの画像データ(動画、静止画データ)をエンコードし、エンコード後の画像データをホストCPU30に送信する。ホストCPU30は、エンコード後の画像データをファイルとして保存したり、変復調器12、アンテナ10を介して他の機器に送信する。
また表示コントローラ50は、ホストCPU30から受信した画像データ(符号化データ、圧縮データ)をデコードし、デコード後の画像データを表示ドライバ16に供給して表示パネル17に表示させる。また表示コントローラ50は、カメラ18により撮像された画像データを受け、表示ドライバ16に供給して表示パネル17に表示させることもできる。
ホストメモリ40はマルチメディア処理用プログラム群を記憶する。ここでマルチメディア処理は、動画データ、静止画データ又は音(オーディオ、音声)データについてのエンコード(圧縮)又はデコード(伸長)処理である。またマルチメディア処理用プログラムは、動画(狭義にはMPEG)エンコード用プログラム、動画デコード用プログラム、静止画(狭義にはJPEG)エンコード用プログラム、静止画デコード用プログラム、音エンコード用プログラム、或いは音デコード用プログラムなどである。なお、エンコードプログラムとデコードプログラムを1つのセットにしたコーデック用プログラムをマルチメディア処理用プログラムとしてホストメモリ40に記憶してもよい。
本実施形態ではホストCPU30(広義にはホストプロセッサ、ホスト)が、ホストメモリ40に記憶されるマルチメディア処理用のプログラム群の中から選択したマルチメディア処理用プログラムをリードして、表示コントローラ50に送信する。そして送信されたマルチメディア処理用プログラムは、表示コントローラ50のメモリ90にロードされる。
具体的にはホストCPU30は、動画のエンコードが必要である場合には、動画データのエンコード処理のソフトウェア処理部分を実行するためのエンコード処理用プログラムをホストメモリ40からリードして、表示コントローラ50に送信する。例えばカメラ18で撮影された動画データ(元データ)を、ファイルとして保存したり、アンテナ10を介して他の機器に送信する場合には、動画(MPEG)のエンコード処理用プログラムをホストメモリ40からリードして、表示コントローラ50に送信する。そしてエンコード対象となる動画データは、例えばカメラ18から表示コントローラ50に入力される。
またホストCPU30は、動画のデコードが必要である場合には、動画データのデコード処理のソフトウェア処理部分を実行するためのデコード処理用プログラムをホストメモリ40からリードして、表示コントローラ50に送信する。例えばアンテナ10を介して他の機器から受信した動画データ(符号化データ、圧縮データ)や、ファイルとして保存した動画データ(符号化データ、圧縮データ)を、表示パネル17に表示する場合には、ホストCPU30は、動画(MPEG)のデコード処理用プログラムをホストメモリ40からリードして、表示コントローラ50に送信する。またホストCPU30は、デコード対象となる動画データ(元データ)を表示コントローラ50に送信する。
このように本実施形態では、マルチメディア処理用プログラム群の中から、必要なマルチメディア処理用プログラムがホストCPU30により選択されて、表示コントローラ50のメモリ90にロードされる。従って、メモリ90(RAM)の使用記憶容量を節約できるため、メモリ90を小規模化でき、表示コントローラ50の低コスト化を図れる。また、1度にロードするデータ量を少なくできるため、起動時や、ハングアップした場合の再起動時に、長時間を要してしまうという問題を防止できる。
表示コントローラ50が含むホストI/F60は、ホストCPU30とのインターフェース処理を行う。具体的にはホストI/F60は、ホストCPU30との間でコマンド、データ、ステータスの送信や受信処理(ハンドシェーク処理)を行う。また表示コントローラ50からホストCPU30に対する割り込み信号の生成などを行う。なお、ホストI/F60にデータのDMA(Direct Memory Access)転送機能を持たせてもよい。
表示コントローラ50が含む内蔵CPU70(広義には内蔵プロセッサ)は、表示コントローラ50の全体制御や各部の制御を行う。そして本実施形態では内蔵CPU70(RISCプロセッサ)が、メモリ90にロードされたマルチメディア処理用プログラムに基づいて、マルチメディア処理のうちソフトウェア処理に割り当てられたソフトウェア処理部分を実行する。このソフトウェア処理部分は、マルチメディア処理用プログラムを読み込んだ内蔵CPU70によりその処理が実行される部分である。
より具体的には、ホストCPU30は、内蔵CPU70にリセットを指示することで(リセットコマンドを送信することで)、内蔵CPU70をリセット状態に設定する。そしてホストCPU30は、マルチメディア処理用プログラムを送信してメモリ90にロードした後に、リセット解除を指示して(リセット解除コマンドを送信して)、内蔵CPU70のリセット状態を解除する。そしてホストCPU30は、内蔵CPU70のリセット状態の解除後に、マルチメディア処理用プログラムの実行開始を内蔵CPU70に指示する(実行開始コマンドを送信する)。内蔵CPU70は、ホストCPU30からリセット解除を指示されると、そのリセット状態が解除される。そしてリセット状態の解除後に、メモリ90にロードされたマルチメディア処理用プログラムを実行する。
なお、内蔵CPU70は、リセット状態の解除後に、ホストCPU30からのコマンド(マルチメディア処理開始コマンド)の受信をウェイトするコマンドウェイト状態に移行する。そして、このコマンドウェイト状態において、マルチメディア処理用プログラムの実行開始をホストCPU30から指示された場合に(マルチメディア処理開始コマンドを受信した場合に)、内蔵CPU70はマルチメディア処理用プログラムを実行する。
またホストCPU30は、マルチメディア処理用プログラムを送信してメモリ90にロードした後、内蔵CPU70のリセット状態が解除される前に、マルチメディア処理用プログラムのロード領域(図2の91)のプロテクト(ライトプロテクト)処理を行う。
更にホストCPU30は、階層構造を有しマルチメディア処理の対象となるストリームデータ(MPEGストリーム)についての多重化処理(ビデオ、オーディオの多重化、ビデオ、オーディオのパケット分割)、分離化処理(ビデオ、オーディオの分離)、上位レイヤーのヘッダ解析処理(VOS、VO、VOL、GOVヘッダの解析)の少なくとも1つを含む前処理(pre processing)を行う。そして、前処理により得られた情報(データ、パラメータ)を情報領域(図2の99)に設定して、内蔵CPU70に知らせる。一方、内蔵CPU70は、ストリームデータ(MPEGストリーム)の下位レイヤーのヘッダ解析処理(VOPヘッダの解析)を行う。また情報領域に設定された情報(データ、パラメータ)に基づいて、マルチメディア処理のソフトウェア処理部分を実行する。
表示コントローラ50が含むH/Wアクセラレータ80(第1のH/Wアクセラレータ)は、マルチメディア処理のうちハードウェア処理に割り当てられたハードウェア処理部分を実行する回路(ハードウェア処理回路)である。このハードウェア処理部分は、プロセッサではない専用の回路によりその処理が実行される部分である。
表示コントローラ50が含むメモリ90は、プログラムのロード領域やデータバッファ領域や内蔵CPU70のワーク領域として機能する。具体的には、ホストCPU30によりホストメモリ40からリードされたマルチメディア処理用プログラムが、メモリ90のプログラムロード領域にロードされる。また、エンコードデータやデコードデータが、メモリ90のバッファ領域(FIFO領域)によりバッファリングされる。また内蔵CPU70は、メモリ90のワーク領域にテーブル等を展開して処理を行う。このメモリ90はRAM(SRAM、DRAM)などにより実現できる。
図2に表示コントローラの詳細な構成例を示す。なお表示コントローラの構成は図2に限定されず、同図の構成要素の一部を省略したり他の構成要素を加えてもよい。
図2に示すようにメモリ90には、プログラムロード領域91、FIFOバッファ92(MPEG4FIFO)、デコードデータバッファ93(MPEG4デコードバッファ)、エンコードデータバッファ94(MPEG4エンコードバッファ)、表示バッファ95、ホスト用バッファ96(ハフマンFIFO)、ワーク領域97、テーブルアシスト用領域98、情報領域99が確保(マッピング)されている。なお、これらの領域やバッファは、物理的に同一のメモリで実現してもよいし、物理的に異なるメモリで実現してもよい。
メモリコントローラ100は、メモリ90のアクセス(リード、ライトアクセス)制御を行う。即ちメモリコントローラ100は、ホストI/F60、内蔵CPU70、H/Wアクセラレータ80、ドライバI/F110、カメラI/F120からのアクセスを調停する。そしてメモリ90のリードアドレスやライトアドレスを発生して、ライトポインタやリードポインタを制御し、メモリ90からデータやプログラムをリードしたり、メモリ90にデータやプログラムをライトする。例えばプログラムロード領域91へのマルチメディア処理用プログラムのロードは、このメモリコントローラ100により実現できる。
ドライバI/F110は、表示ドライバ16とのインターフェース処理を行う。具体的には、表示ドライバ16に画像データ(動画、静止画データ)を送信する処理や、表示ドライバ16の各種制御信号を生成する処理などを行う。
カメラI/F120は、カメラ18との間のインターフェース処理を行う。例えばカメラ18は、撮像により得られた画像データを例えばYUCフォーマットで出力すると共に、1フレームの区切りを指定する同期信号(VSYNC等)を出力する。カメラI/F120は、この同期信号に基づいて、カメラ18からの画像データを取り込む。
なお図2では、内蔵CPU70に対してH/Wアクセラレータ72(第2のアクセラレータ)が接続されている。このH/Wアクセラレータ72は、内蔵CPU70に制御され、マルチメディア処理のソフトウェア処理部分の一部をアシストする回路(ハードウェア処理回路)である。具体的にはH/Wアクセラレータ72は、可変長符号(VLC:Variable Length Code)への符号化処理や可変長符号の復号化処理の一部について内蔵CPU70をアシストする。例えばH/Wアクセラレータ72は、可変長符号処理に必要なテーブルのインデックス番号の生成処理などを、内蔵CPU70に代わって実行する。この場合にH/Wアクセラレータ72は、メモリ90のテーブルアシスト用領域98をワーク領域として使用する。
2.エンコード、デコード処理
次に本実施形態のMPEG−4のエンコード、デコード処理を図3、図4を用いて説明する。
図3に示すエンコード処理では、入力された1VOP(Video Object Plane)分の画像データ(1フレーム分の画像データ)が、マクロブロック(基本処理単位)に分割される。1つのマクロブロックは6つのブロックから構成される。そして各ブロックに対して離散コサイン変換(DCT:Discrete Cosine Transform)の処理が実行される(ステップS1)。離散コサイン変換は、8画素×8画素の1ブロック単位で行われ、1ブロック毎にDCT係数を求めるものである。離散コサイン変換後のDCT係数は、1ブロック内の画像の濃淡変化を、全体の明るさ(DC成分)と空間周波数(AC成分)とで表わしたものになる。図5(A)に、8画素×8画素の1ブロック内のDCT係数の一例を示す。図5(A)の左上隅のDCT係数がDC成分を示し、それ以外のDCT係数がAC成分を示す。なお、AC成分のうち、高周波成分を省略しても画像認識への影響が少ない。
次に、DCT係数の量子化の処理が行われる(ステップS2)。量子化は、1ブロック内の各DCT係数を、量子化テーブル中の対応する位置の量子化ステップ値で除算して、情報量を少なくするために実施される。例えば、図5(A)のDCT係数を図5(B)の量子化テーブルを用いて量子化した場合の1ブロック内のDCT係数を図5(C)に示す。図5(C)に示すように、高周波成分のDCT係数を量子化ステップ値で除算し、その小数点以下を四捨五入すると、ほとんどがゼロデータとなり、情報量が大幅に減少する。
図3に示すように、フレーム内符号化(Iピクチャ)の場合には、DC(直流)予測、スキャニング、可変長符号化(VLC:Variable Length Code)の処理が行われる(ステップS8、S9、S10)。DC予測(ステップS8)は、ブロックのDC成分に対する予測値を決定する処理である。スキャニング(ステップS9)は、ブロック内を周波数が低い側から高い側に向けてスキャン(ジグザグスキャン)する処理である。可変長符号化(ステップS10)は、エントロピー符号化とも称され、符号化原理として、出現頻度の多いものは少ない符号で表すように符号化する処理である。なおフレーム間符号化(Pピクチャ)の場合には、DC予測は不要であるため、スキャニング(ステップS7)だけが行われ、スキャニング後のデータに対して可変長符号化(ステップS10)が行われる。
エンコード処理では、現在のフレームと次のフレームとの間で動き検出(ME:Motion Estimation)を実施するために、帰還ルートが必要となる。この帰還ルート(ローカルデコード処理)では、図3に示すように、逆量子化、逆DCT及び動き補償(MC:Motion Compensation)の処理が実行される(ステップS3、S4、S5)。次に、得られた再構築フレーム(参照VOP)に基づいて動き検出(ME)が実行されて、動きベクトルが検出される。そして、検出された動きベクトルに基づいて、予測フレーム(予測マクロブロック)が求められる。そして符号化対象となるフレームと予測フレームとの差分に対してDCT、量子化の処理が行われる(ステップS1、S2)。
図4のデコード処理は、図3のエンコード処理を、逆順で且つ逆処理することで実現される。即ち、まず、可変長符号(VLC)の復号化処理が行われる(ステップS21)。そしてフレーム内符号化(Iピクチャ)の場合には、逆スキャニング、逆DC/AC予測の処理が行われる(ステップS22、S23)。一方、フレーム間符号化(Pピクチャ)の場合には、逆DC/AC予測は行われず、逆スキャニングの処理だけが行われる(ステップS24)。
次に、逆量子化、逆DCTの処理が行われる(ステップS25、S26)。そして過去のフレームのデータとVLC復号化後のデータとに基づき動き補償処理が行われ(ステップS27)、逆DCT後のデータとの加算処理が行われる。
図3に示すように本実施形態では、メモリ90にロードされるマルチメディア処理用プログラムが動画のエンコード処理用プログラムである場合には、H/Wアクセラレータ80は、ハードウェア処理部分であるDCT、量子化、逆量子化、逆DCT、動き補償、動き検出の処理(ステップS1〜S6)を行う。また内蔵CPU70は、エンコード処理用プログラムに基づいて、ソフトウェア処理部分であるVLCへの符号化処理(ステップS10)を行う。更に具体的には、H/Wアクセラレータ80は、フレーム間符号化(Pピクチャ)の場合にはスキャニング処理(ステップS7)を行う。また内蔵CPU70は、フレーム内符号化(Iピクチャ)の場合にはDC予測(DC/AC予測)、スキャニングの処理を行う(ステップS8、S9)。
また図4に示すように本実施形態では、メモリ90にロードされるマルチメディア処理用プログラムが動画のデコード処理用プログラムである場合には、内蔵CPU70は、デコード処理用プログラムに基づいて、ソフトウェア処理部分であるVLCの復号化処理(ステップS21)を行う。またH/Wアクセラレータ80は、ハードウェア処理部分である逆量子化、逆DCT、動き補償の処理(ステップS25、S26、S27)を行う。更に具体的には、内蔵CPU70は、フレーム内符号化(Iピクチャ)の場合には逆スキャニング、逆DC/AC予測の処理(ステップS22、S23)を行う。またH/Wアクセラレータ80は、フレーム間符号化(Pピクチャ)の場合には逆スキャニング処理を行う(ステップS24)。
なお本実施形態では、内蔵CPU70のデコード処理にデコードエラーが発生した場合には、ホストCPU30が、内蔵CPU70に代わってデコード処理のソフトウェア処理部分(ステップS21〜S23)を実行する。
本実施形態において、図3、図4に示すような役割分担でソフトウェア処理部分とハードウェア処理部分を実現している理由は、以下の通りである。
即ち、図3のステップS2の量子化後であれば、図5(C)に示すように各ブロック内にはゼロデータが圧倒的に多く、図5(A)の量子化前のデータに比べてデータの情報量の種類が圧倒的に少ない。しかも、ステップS8〜S10の処理は、演算自体の負荷も少ない。従って、これらのステップS8〜S10の処理については、演算処理能力がそれほど高くない内蔵CPU70を用いたソフトウェア処理で実現しても問題ない。また内蔵CPU70を用いたソフトウェア処理は低速であるが、フレキシブルなプログラミング可能である。従って、マルチメディア処理に付随する処理部分であり、負荷は軽いがフレキシブルなプログラミングが要求される処理部分を補うのに適している。
一方、図3のステップS1〜S6のDCT、量子化、逆量子化、逆DCT、動き補償、動き検出は、情報量が多く、処理負荷が大きいと共に、処理の高速性が要求されるため、ソフトウェア処理にはあまり適していない。更に、ステップS1〜S6の処理は、負荷は重いが、その処理内容が規格である程度決まっているため、将来的な変更の必要性も乏しい。従って、ステップS1〜16の処理は、専用のハードウェア回路(H/Wアクセラレータ80)を用いたハードウェア処理に向いている。またステップS1〜S6の処理は、繰り返し処理が多いため、この意味においてもハードウェア処理に向いている。またステップS2の量子化後のデータ量は少ないため、H/Wアクセラレータ80(ハードウェア処理部)から内蔵CPU70(ソフトウェア処理部)に伝送されるデータの量も少なくなり、データ転送制御の負担も軽くなる。同様の理由で、本実施形態では図4のデコード処理においても、ステップS21〜S23を、内蔵CPU70を用いたソフトウェア処理で実現し、ステップS24〜S27を、H/Wアクセラレータ80を用いたハードウェア処理で実現している。
また本実施形態では図3に示すように、フレーム内符号化(Iピクチャ)についてのスキャニング処理はソフトウェア処理で実現し、フレーム間符号化(Pピクチャ)についてのスキャニング処理はハードウェア処理で実現している。その理由は以下の通りである。
即ちフレーム内符号化の場合は、ステップS8のDC予測をソフトウェア処理で行うため、DC予測に続くステップS9のスキャニング処理についてもソフトウェア処理で実現するのが効率的である。これに対して、フレーム間符号化の場合には、DC予測は不要であり、ステップS7のスキャニング処理をソフトウェア処理ではなくハードウェア処理で行っても問題はない。またステップS7のスキャニング処理は、比較的単純な処理であるため、ハードウェア処理に向いている。このような理由で本実施形態ではステップS7のスキャニング処理についてはハードウェア処理で実現し、ステップS9のスキャニング処理についてはソフトウェア処理で実現している。同様の理由で、本実施形態では図4のデコード処理においても、ステップS22の逆スキャニング処理についてはソフトウェア処理で実現し、ステップS24のスキャニング処理についてはハードウェア処理で実現している。
以上のように本実施形態では、内蔵CPU70とH/Wアクセラレータ80によりバランス良く作業を分担することにより、クロック周波数をそれほど増加させることなく、低消費電力なシステムでマルチメディア処理を実現することに成功している。
3.FIFOバッファ
本実施形態では、図2のFIFO(First In First Out)バッファ92、デコードデータバッファ93、エンコードデータバッファ94、ホスト用バッファ96を、図6(A)(B)のように利用して、エンコード処理、デコード処理を実現している。
例えばメモリ90にロードされたマルチメディア処理用プログラムが動画のエンコード処理用プログラムである場合には、図6(A)に示すように、カメラ18で撮像された動画データ(1VOP分の動画データ)はエンコードデータバッファ94(MPEG4エンコードバッファ)に書き込まれる。そしてH/Wアクセラレータ80は、ホストCPU30からエンコード処理の実行開始を指示された場合に、エンコードデータバッファ94に書き込まれた動画データに対して、エンコード処理のハードウェア処理部分を実行する。そして実行後の動画データ(H/Wエンコード後の動画データ)をFIFOバッファ92に書き込む。
次に、内蔵CPU70は、ホストCPU30から、メモリ90にロードされたエンコード処理用プログラムの実行開始を指示された場合に、FIFOバッファ92に書き込まれた動画データ(1VOP分の動画データ)に対して、エンコード処理用プログラムに基づきエンコード処理のソフトウェア処理部分を実行する。そして実行後の動画データ(S/Wエンコード後の動画データ)をホスト用バッファ96(ハフマンFIFO)に書き込む。
またメモリ90にロードされたマルチメディア処理用プログラムが動画のデコード処理用プログラムである場合には、図6(B)に示すように、ホストCPU30が、ホスト用バッファ96に、デコード対象となる動画データ(1VOP分の動画データ)を書き込む。そして内蔵CPU70は、ホストCPU30からデコード処理用プログラムの実行開始を指示された場合に、ホスト用バッファ96に書き込まれた動画データに対して、デコード処理用プログラムに基づきデコード処理のソフトウェア処理部分を実行する。そして実行後の動画データ(S/Wデコード後の動画データ)をFIFOバッファ92に書き込む。
次に、H/Wアクセラレータ80は、ホストCPU30からデコード処理の実行開始を指示された場合に、FIFOバッファ92に書き込まれた動画データ(1VOP分の動画データ)に対して、デコード処理のハードウェア処理部分を実行する。そして実行後の動画データ(H/Wデコード後の動画データ)をデコードデータバッファ93に書き込む。そしてデコードデータバッファ93に書き込まれた動画データは、表示ドライバ16に転送され、表示パネル17の動画表示が行われる。
図6(A)(B)のように本実施形態では、内蔵CPU70とH/Wアクセラレータ80の間にFIFOバッファ92を介在させている。このようにすることで、ホストCPU30の制御の元で、ソフトウェア処理部分とハードウェア処理部分を内蔵CPU70とH/Wアクセラレータ80で効率良く分担して実行することが可能になる。
例えば図6(A)のエンコード処理において、エンコード後の符号量が多い場合には、ビットレートを遵守するためのレートコントロールが必要になる。この場合に本実施形態では、ホストCPU30がスキップフレームを作成することで、レートコントロールを実現する。具体的には、レートコントロールのために、例えば第Kのフレーム(第KのVOP)をスキップする場合には、ホストCPU30は、この第Kのフレームの動画データについてのH/Wエンコード処理の開始指示(H/Wアクセラレータ80に対する指示)を行わないようにする。これにより、H/Wエンコード処理後の第Kのフレームの動画データはFIFOバッファ92には書き込まれないようになり、内蔵CPU70も、この第Kのフレームの動画データに対するS/Wエンコード処理を行わないようになる。
そしてホストCPU30は、例えば次の第K+1のフレーム(第K+1のVOP)については、H/Wエンコード処理の開始指示をH/Wアクセラレータ80に対して行う。これにより、H/Wエンコード処理後の第K+1のフレームの動画データがFIFOバッファ92に書き込まれ、内蔵CPU70は、この第K+1のフレームの動画データに対するS/Wエンコード処理を行うことができる。この場合、FIFOバッファ92には、スキップされた第Kのフレームの動画データは書き込まれていない。従って、この第Kのフレームの動画データを廃棄したり無視したりする処理が不要になり、スムーズな処理を実現できる。
また図6(B)のデコード処理において、内蔵CPU70によるデコード処理にエラーが発生した場合に、本実施形態では、内蔵CPU70が、そのエラーの発生をホストCPU30にレジスタ等を用いて通知する。そして、このように内蔵CPU70によるデコード処理にエラーが発生した場合には、ホストCPU30が、内蔵CPU70に代わってデコード処理のソフトウェア処理部分を実行する。そしてホストCPU30は、S/Wデコード処理後の動画データをFIFOバッファ92に書き込む。これにより、H/Wアクセラレータ80は、書き込まれた動画データに対してH/Wデコード処理を実行できるようになる。
デコード処理にエラーが発生した場合には、動画データ(VOP)の解析を行う必要がある。しかしながら、ホストCPU30からの動画データは、FIFOであるホスト用バッファ96に格納されているため、内蔵CPU70は、任意のアドレスにアクセスして動画データのエラー解析を行うことができない。一方、この動画データは、ホストCPU30が送信したものであり、ホストCPU30は、自身のメモリ内に記憶された動画データの任意のアドレスにアクセスしてエラー解析を行うことができる。これにより、内蔵CPU70のデコード処理にエラーが発生した場合にも、そのエラーを回復して、デコード処理を完結させることが可能になる。
4.スタートアップ時の動作
次に、本実施形態のスタートアップ(立ち上げ)時の動作について図7のシーケンス図を用いて説明する。
まずホストCPU30が、内蔵CPU70によるアシスト処理の初期化設定を行う。そしてマルチメディア処理用プログラムをメモリ90のプログラムロード領域91にロードする。即ちホストメモリ40に記憶されたマルチメディア処理用プログラム群の中から所望のマルチメディア処理用プログラム(デコード用プログラム、エンコード用プログラム)を選択して、メモリ90にロードする。
次にホストCPU30は、メモリ90のプログラムロード領域91のプロテクト処理を行う。このようにすることで、プログラムロード領域91にロードされたマルチメディア処理用プログラムを保護することが可能になる。即ち、このようなプロテクト処理を行わないと、ホストCPU30や内蔵CPU70が、データ等を間違ってプログラムロード領域91に書き込んでしまう事態が生じ得る。このような事態が生じると、ロードされたプログラムが破壊され、システムがハングアップするなどの問題を招く。プログラムロード領域91のプロテクト処理を行うことで、このような問題の発生を未然に防止できる。
次にホストCPU30は、アシスト機能のイネーブルコマンド、クロックのイネーブルコマンド、リセット解除コマンドを送信し、スタートアップ完了ステータスの受信ウェイト状態に移行する。
内蔵CPU70は、リセット解除コマンドを受信すると、そのリセット状態を解除し、ブート処理などの初期化設定を行う。またメモリ90のワーク領域97の初期化(0クリア)を行う。そして内蔵CPU70は、スタートアップが完了すると、スタートアップ完了ステータスをホストCPU30に送信し、ACKの受信ウェイト状態に移行する。するとホストCPU30は、ACKを送信し、内蔵CPU70は、ACKを受信すると、デコード、エンコード開始コマンドのウェイト状態に移行する。
図7に示すように本実施形態では、ホストCPU30からリセット解除コマンドを受信するまで、内蔵CPU70はリセット状態に設定される。そしてリセット解除コマンドを受信すると、内蔵CPU70のリセット状態が解除されて、マルチメディア処理用プログラムが実行される。そしてその後にホストCPU30からリセットコマンドを受信すると、内蔵CPU70は再度リセット状態に設定される。このように本実施形態では、マルチメディア処理用プログラムを実行する時に、その都度、内蔵CPU70のリセット状態が解除され、それ以外の期間では、内蔵CPU70をリセット状態に設定できる。従って、動作する必要が無い期間において内蔵CPU70の動作を停止でき、省電力化を実現できる。なお図7では、ホストCPU30によるリセット解除指示によりマルチメディア処理用プログラムが実行される方式を採用しているが、ホストCPU30からの割り込みによりマルチメディア処理用プログラムが実行される方式を採用してもよい。
5.エンコード処理時の動作
次に、本実施形態のエンコード処理時の動作について図8のフローチャート及び図9のシーケンス図を用いて説明する。図8は主にホストCPU30の動作・処理を説明するフローチャートである。
図8に示すように、ホストCPU30は、エンコードデータバッファ94へのデータ(カメラ18からの動画データ)のライトが完了したか否かを判断する(ステップS31)。そしてデータのライトが完了すると、データのライト完了フラグをクリアし(ステップS32)、動き検出(ME)処理の開始を指示する(ステップS33)。そして動き検出が完了したと判断すると、動き検出完了フラグをクリアする(ステップS34、S35)。
次に、ホストCPU30は、レートコントロール処理を行う(ステップS36)。即ち符号化データサイズに基づいて、量子化処理(図3のステップS2)の量子化ステップを変化させる。例えば符号化データサイズが大きい場合には、量子化ステップを大きくする。これにより量子化後のDCT係数(図5(C))のゼロデータの数が増える。一方、符号化データサイズが小さい場合には、量子化ステップを小さくする。これにより量子化後のDCT係数のゼロデータの数が減る。
次に、ホストCPU30は、QP値(量子化パラメータ)を設定して、H/Wエンコード処理の開始を指示する(ステップS37)。これにより、H/Wアクセラレータ80によるH/Wエンコード処理が実行される。そしてH/Wエンコード処理が終了したと判断すると、内蔵CPU70によるS/Wエンコード処理の開始を指示する(ステップS38、S39)。そして、エンコードストップか否かを判断し、エンコードストップではない場合にはステップS31に戻り、エンコードストップの場合(所定フレーム数のエンコードが完了した場合)には処理を終了する(ステップS40)。
次に、図9のシーケンス図を説明する。まず、ホストCPU30は、QP値を設定して、H/Wアクセラレータ80によるH/Wエンコード処理の開始を指示し、エンコードの完了をウェイトする。そしてH/Wエンコード処理が完了すると、必要があればGOV(Group Of VOP)ヘッダを作成する。またVOP(Video Object Plane)ヘッダを作成して、メモリ90の情報領域99に、エンコードに必要な種々の情報を設定する。
図10(A)に、エンコード処理時に情報領域99に設定される情報の例を示す。内蔵CPU70等は、図10(A)に示す情報をホストCPU30から知らされることで、適切なエンコード処理を実現できる。
次に、ホストCPU30は、S/Wエンコード処理の開始コマンドを送信し、ACKの受信ウェイト状態に移行する。そして内蔵CPU70がACKを送信すると、ホストCPU30がそのACKを受信する。そして内蔵CPU70は、S/Wエンコード処理を開始し、処理後のデータ(動画データ)をホスト用バッファ96(FIFO)にライトする。そして1VOP分(広義には1フレーム分)のエンコード処理が終了したら、lastenc=1に設定する。
ホストCPU30は、ホスト用バッファ96(FIFO)をリードする。即ちlastenc=1になるまでホスト用バッファ96からデータ(ハフマンデータ)をリードする。そして、バイトアライメントのためのVOPのスタッフィングを行う。なおレートコントロールによるスキップフレーム(VOP)の作成はホストCPU30が行う。
6.デコード処理時の動作
次に、本実施形態のデコード処理時の動作について図11のフローチャート及び図12のシーケンス図を用いて説明する。図11は主にホストCPU30の動作・処理を説明するフローチャートである。
図11に示すように、ホストCPU30は、VOS(Video Object Sequence)ヘッダ、VO(Video Object)ヘッダ、VOL(Video Object Layer)ヘッダの解析を行う(ステップS51、S52、S53)。またスタートコードの検出を行い(ステップS54)、GOVヘッダがある場合にはGOVヘッダの解析を行う(ステップS55、S56)。
次に、ホストCPU30は、S/Wデコード処理の開始を指示する(ステップS57)。これにより、内蔵CPU70によるVOPヘッダ解析とVCL復号化、逆スキャニング、逆DC/AC予測が行われるようになる。
次に、全てのフレーム(VOP)のデコード処理が完了したか否かを判断し(ステップS58)、完了した場合には処理を終了する。一方、全てのフレームのデコード処理が完了していない場合には、1フレーム分のデコード処理が完了したか否かを判断し(ステップS59)、完了した場合にはデコード完了フラグをクリアする(ステップS60)。
次にインターバル値を取得し、インターバル値分の時間(フレームレートに応じた時間)が経過したか否かを判断する(ステップS61、S62)。そして経過した場合には、表示エリア(ダブルバッファ構造のデコードデータバッファ93の第1、第2のバッファのいずれか)の選択を行い(ステップS63)、選択された表示エリアの表示データ(画像データ)を表示ドライバ16に転送する(ステップS64)。
図11のステップS51〜S56に示すように、本実施形態では、MPEGストリーム(広義にはストリームデータ)の上位レイヤーのヘッダ解析(VOS、VO、VOL、GOVヘッダの解析)はホストCPU30が行う。一方、MPEGストリームの下位レイヤーのヘッダ解析(VOPヘッダの解析)は内蔵CPU70が行う。このように役割分担すれば、ホストCPU30の制御の元で、MPEGのデコード処理を効率化良く実施できるようになる。
次に、図12のシーケンス図を説明する。まず、ホストCPU30は、VOS、VO、VOL、GOVのヘッダを解析し、情報領域99に情報(データ、パラメータ)を設定する。そしてホスト用バッファ96(FIFO)の初期化処理を行う。
次にホストCPU30はデコードリセットコマンドを送信し、ACKの受信ウェイト態に移行する。一方、内蔵CPU70は、アシストテーブルの展開後、ホストCPU30からデコードリセットコマンドを受信すると、動作モードをデコードモードに設定する。またH/Wアクセラレータの初期化処理を行い、ACKを送信する。
ホストCPU30は、ACKを受信すると、データ(ハフマンデータ)をホスト用バッファ96にライトする。即ち1VOP分のデータをホスト用バッファ96にライトする。
次にホストCPU30は、S/Wデコード開始コマンドを送信し、ACKの受信ウェイト状態に移行する。一方、内蔵CPU70は、デコード開始コマンドを受信すると、情報領域99の情報を取得し、ACKを送信し、ホストCPU30がそのACKを受信する。
図10(B)に、デコード処理時に情報領域99に設定される情報の例を示す。内蔵CPU70は、図10(B)に示す情報をホストCPU30から知らされることで、適切なデコード処理を実現できる。
次に内蔵CPU70は、S/Wデコード処理を開始する。そして処理後のデータをFIFOバッファ92にライトする。そして1VOP分のデータのデコード処理が終了したら、lastdec=1に設定する。また、ハフマンデータの解析中にエラーを検出したら、decerr=1に設定する。
ホストCPU30は、lastdec=1になるのをウェイトする。そして、lastdec=1になった場合には、decerrを確認する。そして、decerr=1の場合には、FIFOバッファ92をクリアし、内蔵CPU70に代わってホストCPU30がS/Wデコード処理を実行する。
次にホストCPU30は、H/Wデコード処理の開始を指示する。そして開始の指示後、ホスト用バッファ96の初期化処理に戻る。
図12に示すように本実施形態では、S/Wデコード処理にエラーが発生した場合には、内蔵CPU70に代わってホストCPU30がS/Wデコード処理を実行する。このようにすることで、エラーが発生した場合にも、そのエラーを回復してH/Wデコード処理に移行し、デコード処理を完結できるようになる。
7.ハンドシェーク通信
本実施形態では、ホストCPU30、内蔵CPU70間でのコマンド、ステータスの転送を、レジスタ(出力レジスタ、入力レジスタ)を用いたハンドシェーク通信により実現している。これらのレジスタは、ホストI/F60内に設けることができる。
図13、図14のフローチャートを用いて本実施形態のハンドシェーク通信を説明する。なお、図15には、ハンドシェーク通信により転送されるコマンドやステータスの例を示す。
図13は、ホストCPU30から内蔵CPU70にデータ(コマンド、ステータス)を送信(出力)する場合のフローチャートである。まず、ホストCPU30が、出力レジスタ(ビット7〜0)にデータをライトする(ステップS71)。このライトにより出力ステータス(ビット8)=1に自動設定される。
次にホストCPU30は、タイマをスタートし(ステップS72)、出力ステータス=0になるのをウェイトする(ステップS73)。そして出力ステータス=0になった場合には処理を終了する。一方、出力ステータス=0にならない場合には、ステップS72でスタートしたタイマがタイムオーバーになったか否かを判断する(ステップS74)。そしてタイムオーバーになっていない場合にはステップS73に戻り、タイムオーバーになった場合には処理を終了する。
一方、内蔵CPU70は、出力レジスタ(ビット15〜0)をリードする(ステップS75)。このリードにより出力ステータス(ビット8)=0に自動設定される。
次に、ステップS75のリード時に出力ステータス=1になっていたか否かを判断する(ステップS76)。そして出力ステータス=1になっていなかった場合にはステップS75に戻り、出力レジスタ(ビット15〜0)を再度リードする。一方、ホストCPU30がステップS71で出力レジスタ(ビット7〜0)にデータをライトし、出力ステータス=1になると、ホストCPU30は出力レジスタのデータ(ビット7〜0)を取得する(ステップS77)。
図14は、ホストCPU30が内蔵CPU70からデータ(コマンド、ステータス)を受信(入力)する場合のフローチャートである。まず内蔵CPU70が入力レジスタ(ビット23〜16)にデータをライトする(ステップS81)。このライトにより入力ステータス(ビット24)=1に自動設定される。次に内蔵CPU70は出力レジスタ(ビット15〜0)をリードする(ステップS82)。そして出力ステータス=1か否かを判断し(ステップS83)、出力ステータス=1の場合には出力レジスタのデータ(ビット7〜0)を取得する(ステップS84)。次に、内蔵CPU70は入力ステータス=0か否かを判断し(ステップS85)、入力ステータス=0ではない場合にはステップS82に戻り、入力ステータス=0の場合には処理を終了する。
ホストCPU30は、入力レジスタ(ビット31〜16)をリードする(ステップS86)。このリードにより入力ステータス(ビット24)=0に自動設定される。次に、ホストCPU30は、入力ステータス=1か否かを判断する(ステップS87)。そして入力ステータス=1ではない場合にはステップS86に戻り、入力レジスタを再度リードする。一方、ステップS81で内蔵CPU70により入力レジスタにデータがライトされ、入力ステータス=1になった場合には、ホストCPU30は、入力レジスタのデータ(ビット23〜16)を取得する(ステップS88)。
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語(ホストプロセッサ、内蔵プロセッサ、フレーム、電子機器等)として引用された用語(ホストCPU、内蔵CPU、VOP、携帯電話機等)は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
また本発明の電子機器、マルチメディア処理システム、表示コントローラの構成は、図1、図2等で説明した構成に限定されず、種々の変形実施が可能である。例えばこれらの図の構成要素の一部を省略したり、その接続関係を変更してもよい。また本発明で実現されるエンコード処理、デコード処理も図3、図4に限定されず、MPEG等の規格に応じた種々の変形実施が可能である。
本実施形態の電子機器、マルチメディア処理システムの構成例。 本実施形態の表示コントローラの構成例。 エンコード処理の説明図。 デコード処理の説明図。 図5(A)〜図5(C)はDCT、量子化の説明図。 図6(A)、図6(B)はFIFOバッファを用いる手法の説明図。 スタートアップ時のシーケンス図。 エンコード処理のフローチャート。 エンコード処理のシーケンス図。 図10(A)、図10(B)は情報領域の説明図。 デコード処理のフローチャート。 デコード処理のシーケンス図。 レジスタを用いたハンドシェーク通信の説明図。 レジスタを用いたハンドシェーク通信の説明図。 ハンドシェーク通信により転送されるコマンド、ステータスの例。
符号の説明
10 アンテナ、12 変復調器、14 操作部、16 表示ドライバ、
17 表示パネル、18 カメラ、20 マルチメディア処理システム、
30 ホストCPU、40 ホストメモリ、50 表示コントローラ、
60 ホストI/F、70 内蔵CPU、72 第1のH/Wアクセラレータ、
80 第2のH/Wアクセラレータ、90 メモリ、91 プログラムロード領域91、92 FIFOバッファ、93 デコードデータバッファ、
94 エンコードデータバッファ、95 表示バッファ、96 ホスト用バッファ、
97 ワーク領域、98 テーブルアシスト用領域、99 情報領域、
100 メモリコントローラ、110 ドライバI/F、120 カメラI/F

Claims (10)

  1. 動画データ、静止画データ又は音データについてのエンコード又はデコード処理であるマルチメディア処理を行うための表示コントローラであって、
    ホストプロセッサとのインターフェース処理を行うホストインターフェースと、
    ホストメモリに記憶されるマルチメディア処理用のプログラム群の中から、前記ホストプロセッサがマルチメディア処理用プログラムをリードして送信してきた場合に、送信された前記マルチメディア処理用プログラムがロードされるメモリと、
    ロードされた前記マルチメディア処理用プログラムに基づいて、前記マルチメディア処理のうちソフトウェア処理に割り当てられたソフトウェア処理部分を実行する内蔵プロセッサと、
    前記マルチメディア処理のうちハードウェア処理に割り当てられたハードウェア処理部分を実行する第1のハードウェアアクセラレータとを含み、
    前記マルチメディア処理用プログラムは、動画データのエンコード処理のソフトウェア処理部分を実行するためのエンコード処理用プログラムであり、
    前記第1のハードウェアアクセラレータは、
    前記ホストプロセッサからエンコード処理の実行開始を指示された場合に、エンコードデータバッファに書き込まれた動画データに対して、エンコード処理のハードウェア処理部分を実行し、実行後の動画データをFIFOバッファに書き込み、
    前記内蔵プロセッサは、
    前記ホストプロセッサから前記エンコード処理用プログラムの実行開始を指示された場合に、前記FIFOバッファに書き込まれた動画データに対して、前記エンコード処理用プログラムに基づきエンコード処理のソフトウェア処理部分を実行し、実行後の動画データをホスト用バッファに書き込むことを特徴とする表示コントローラ。
  2. 請求項1において、
    前記内蔵プロセッサは、
    前記ホストプロセッサからリセット解除を指示された場合に、リセット状態が解除され、前記リセット状態の解除後に前記マルチメディア処理用プログラムを実行することを特徴とする表示コントローラ。
  3. 請求項2において、
    前記内蔵プロセッサは、
    前記リセット状態の解除後に、前記ホストプロセッサからのコマンドの受信をウェイトするコマンドウェイト状態に移行し、前記コマンドウェイト状態において前記マルチメディア処理用プログラムの実行開始を前記ホストプロセッサから指示された場合に、前記マルチメディア処理用プログラムを実行することを特徴とする表示コントローラ。
  4. 請求項1乃至3のいずれかにおいて、
    記第1のハードウェアアクセラレータは、
    ハードウェア処理部分である離散コサイン変換、量子化、逆量子化、逆離散コサイン変換、動き補償、動き検出の処理を行い、
    前記内蔵プロセッサは、
    ソフトウェア処理部分である可変長符号への符号化処理を行うことを特徴とする表示コントローラ。
  5. 請求項4において、
    前記第1のハードウェアアクセラレータは、
    フレーム間符号化の場合にはスキャニング処理を行い、
    前記内蔵プロセッサは、
    フレーム内符号化の場合にはDC予測、スキャニングの処理を行うことを特徴とする表示コントローラ。
  6. 動画データ、静止画データ又は音データについてのエンコード又はデコード処理であるマルチメディア処理を行うための表示コントローラであって、
    ホストプロセッサとのインターフェース処理を行うホストインターフェースと、
    ホストメモリに記憶されるマルチメディア処理用のプログラム群の中から、前記ホストプロセッサがマルチメディア処理用プログラムをリードして送信してきた場合に、送信された前記マルチメディア処理用プログラムがロードされるメモリと、
    ロードされた前記マルチメディア処理用プログラムに基づいて、前記マルチメディア処理のうちソフトウェア処理に割り当てられたソフトウェア処理部分を実行する内蔵プロセッサと、
    前記マルチメディア処理のうちハードウェア処理に割り当てられたハードウェア処理部分を実行する第1のハードウェアアクセラレータとを含み、
    前記マルチメディア処理用プログラムは、動画データのデコード処理のソフトウェア処理部分を実行するためのデコード処理用プログラムであり、
    前記内蔵プロセッサは、
    前記ホストプロセッサから前記デコード処理用プログラムの実行開始を指示された場合に、ホスト用バッファに書き込まれた動画データに対して、前記デコード処理用プログラムに基づきデコード処理のソフトウェア処理部分を実行し、実行後の動画データをFIFOバッファに書き込み、
    前記第1のハードウェアアクセラレータは、
    前記ホストプロセッサからデコード処理の実行開始を指示された場合に、前記FIFOバッファに書き込まれた動画データに対して、デコード処理のハードウェア処理部分を実行し、実行後の動画データをデコードデータバッファに書き込むことを特徴とする表示コントローラ。
  7. 動画データ、静止画データ又は音データについてのエンコード又はデコード処理であるマルチメディア処理を行うための表示コントローラであって、
    ホストプロセッサとのインターフェース処理を行うホストインターフェースと、
    ホストメモリに記憶されるマルチメディア処理用のプログラム群の中から、前記ホストプロセッサがマルチメディア処理用プログラムをリードして送信してきた場合に、送信された前記マルチメディア処理用プログラムがロードされるメモリと、
    ロードされた前記マルチメディア処理用プログラムに基づいて、前記マルチメディア処理のうちソフトウェア処理に割り当てられたソフトウェア処理部分を実行する内蔵プロセッサと、
    前記マルチメディア処理のうちハードウェア処理に割り当てられたハードウェア処理部分を実行する第1のハードウェアアクセラレータとを含み、
    前記マルチメディア処理用プログラムは、動画データのデコード処理のソフトウェア処理部分を実行するためのデコード処理用プログラムであり、
    前記内蔵プロセッサは、
    デコード処理にエラーが発生した場合には、エラーの発生を前記ホストプロセッサに通知し、デコード処理のソフトウェア処理部分を前記ホストプロセッサに実行させることを特徴とする表示コントローラ。
  8. 請求項6又は7において、
    記内蔵プロセッサは、
    前記デコード処理用プログラムに基づいて、ソフトウェア処理部分である可変長符号の復号化処理を行い、
    前記第1のハードウェアアクセラレータは、
    ハードウェア処理部分である逆量子化、逆離散コサイン変換、動き補償の処理を行うことを特徴とする表示コントローラ。
  9. 請求項において、
    前記内蔵プロセッサは、
    フレーム内符号化の場合には逆スキャニング、逆DC/AC予測の処理を行い、
    前記第1のハードウェアアクセラレータは、
    フレーム間符号化の場合には逆スキャニング処理を行うことを特徴とする表示コントローラ。
  10. 請求項1乃至のいずれかにおいて、
    前記内蔵プロセッサに制御され、前記マルチメディア処理のソフトウェア処理部分の一部をアシストする第2のハードウェアアクセラレータを含むことを特徴とする表示コントローラ。
JP2004380985A 2004-12-28 2004-12-28 表示コントローラ Expired - Fee Related JP4258469B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004380985A JP4258469B2 (ja) 2004-12-28 2004-12-28 表示コントローラ
US11/319,077 US7760198B2 (en) 2004-12-28 2005-12-27 Display controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004380985A JP4258469B2 (ja) 2004-12-28 2004-12-28 表示コントローラ

Publications (2)

Publication Number Publication Date
JP2006184793A JP2006184793A (ja) 2006-07-13
JP4258469B2 true JP4258469B2 (ja) 2009-04-30

Family

ID=36613096

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004380985A Expired - Fee Related JP4258469B2 (ja) 2004-12-28 2004-12-28 表示コントローラ

Country Status (2)

Country Link
US (1) US7760198B2 (ja)
JP (1) JP4258469B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3680846B2 (ja) * 2003-05-28 2005-08-10 セイコーエプソン株式会社 動画像の圧縮装置及びそれを用いた撮像装置
JP3680845B2 (ja) * 2003-05-28 2005-08-10 セイコーエプソン株式会社 圧縮動画像の伸張装置及びそれを用いた画像表示装置
US20070192393A1 (en) * 2006-02-14 2007-08-16 Taiyi Cheng Method and system for hardware and software shareable DCT/IDCT control interface
KR20140088924A (ko) * 2012-12-14 2014-07-14 삼성전자주식회사 이미지 데이터 표시장치 및 방법
JP6701747B2 (ja) * 2016-01-18 2020-05-27 セイコーエプソン株式会社 表示装置、及び、表示装置の制御方法
CN109656476B (zh) * 2018-12-05 2022-10-18 镕铭微电子(济南)有限公司 一种硬件加速模块及视频处理设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809245A (en) * 1995-01-24 1998-09-15 Kabushiki Kaisha Toshiba Multimedia computer system
JPH08340497A (ja) * 1995-06-14 1996-12-24 Hitachi Ltd テレビジョン信号の受信装置
JP3273926B2 (ja) 1999-02-12 2002-04-15 株式会社神戸製鋼所 ディジタル信号処理装置
US20040190625A1 (en) * 2003-03-13 2004-09-30 Motorola, Inc. Programmable video encoding accelerator method and apparatus
JP3680846B2 (ja) 2003-05-28 2005-08-10 セイコーエプソン株式会社 動画像の圧縮装置及びそれを用いた撮像装置
JP4367337B2 (ja) * 2004-12-28 2009-11-18 セイコーエプソン株式会社 マルチメディア処理システム及びマルチメディア処理方法

Also Published As

Publication number Publication date
JP2006184793A (ja) 2006-07-13
US20060143337A1 (en) 2006-06-29
US7760198B2 (en) 2010-07-20

Similar Documents

Publication Publication Date Title
JP4367337B2 (ja) マルチメディア処理システム及びマルチメディア処理方法
US7085320B2 (en) Multiple format video compression
KR101158345B1 (ko) 디블록킹 필터링을 수행하는 방법 및 시스템
JP4641892B2 (ja) 動画像符号化装置、方法、及びプログラム
US20100316123A1 (en) Moving image coding device, imaging device and moving image coding method
JP3680845B2 (ja) 圧縮動画像の伸張装置及びそれを用いた画像表示装置
US7760198B2 (en) Display controller
JP3680846B2 (ja) 動画像の圧縮装置及びそれを用いた撮像装置
JP3846490B2 (ja) 画像データ圧縮装置、電子機器及び画像データ圧縮方法
US8879629B2 (en) Method and system for intra-mode selection without using reconstructed data
JP2005159444A (ja) 画像データ圧縮装置及びエンコーダ
US8311123B2 (en) TV signal processing circuit
KR100685300B1 (ko) 인코딩된 데이터 전달 방법 및 그 방법을 수행하는 촬상장치
JP4891335B2 (ja) ハードウェア多標準対応ビデオデコーダ装置
JP3846487B2 (ja) 画像データ圧縮装置、エンコーダ、電子機器及び画像データ圧縮方法
JP2005159441A (ja) 画像データ圧縮装置及びエンコーダ
JP2008289105A (ja) 画像処理装置およびそれを搭載した撮像装置
KR100636911B1 (ko) 색도 신호의 인터리빙 기반 동영상 복호화 방법 및 그 장치
JP4312070B2 (ja) デジタルカメラ
JP2005056311A (ja) 情報処理装置及びそれを用いた電子機器
JP2005176001A (ja) 半導体装置及び画像処理装置
JP4338725B2 (ja) 画像処理装置
JP4338727B2 (ja) 画像処理装置
JP4338726B2 (ja) 画像処理装置
JP3877742B2 (ja) デジタルカメラ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080403

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080826

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081024

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20081024

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090113

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090126

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120220

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130220

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130220

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees