(57)【特許請求の範囲】
【請求項１】
逆方向予測および順方向予測を行なう動き補償付予測を用いてビデオストリームをデコードするビデオデコーダであって、
前記逆方向予測に用いられる前方参照用輝度データの格納領域と、前記順方向予測に用いられる後方参照用色差データの格納領域とが設けられた第１フレームバッファと、
前記逆方向予測に用いられる前方参照用色差データの格納領域と、前記順方向予測に用いられる後方参照用輝度データの格納領域とが設けられた第２フレームバッファと、
前記ビデオデコーダの動作を制御するための制御回路とを備え、
前記制御回路は、前記第１フレームバッファに対するメモリアクセス動作と前記第２フレームバッファに対するメモリアクセス動作との少なくとも一部分の動作を、並列処理で行なう、ビデオデコーダ。
【請求項２】
前記第１および第２のフレームバッファから読み出されたデータのデコードのために、逆離散コサイン変換処理を行なう離散コサイン変換処理回路をさらに備える、請求項１に記載のビデオデコーダ。
【請求項３】
前記制御回路は、書込み動作において、前方参照用輝度データおよび後方参照用色差データを前記第１フレームバッファにおける所定の格納領域に格納させるとともに、前方参照用色差データおよび後方参照用輝度データを前記第２フレームバッファにおける所定の格納領域に格納させる、請求項１に記載のビデオデコーダ。
【請求項４】
前記第１および第２のフレームバッファは、読出コマンドを与えてから所定時間経過後にデータ出力が開始される第１および第２のメモリ回路をそれぞれ含む、請求項３に記載のビデオデコーダ。
【請求項５】
前記第１および第２のメモリ回路は、それぞれ、互いに入出力のデータバス幅の等しいシンクロナスダイナミック型ランダムアクセスメモリを含む、請求項４に記載のビデオデコーダ。
【請求項６】
前記ビデオストリームは、離散コサイン変換と、逆方向および順方向予測を行なう動き補償予測とを併用するＭＰＥＧビデオストリームである、請求項４に記載のビデオデコーダ。
【請求項７】
前記制御回路は、読出動作において、前記第１フレームバッファと前記第２フレームバッファとに対するメモリアクセスを並列処理で行ない、
ｉ）前記第１フレームバッファから前方参照用輝度データを読出しているときに、前記第２フレームバッファから前方参照用色差データを読出し、
ｉｉ）前記第１フレームバッファから後方参照用色差データを読出しているときに、前記第２フレームバッファから後方参照用輝度データを読出すように読出動作を制御する、請求項１に記載のビデオデコーダ。
【請求項８】
前記制御回路は、書込み動作において、前方参照用輝度データおよび後方参照用色差データを前記第１フレームバッファにおける所定の格納領域に格納させるとともに、前方参照用色差データおよび後方参照用輝度データを前記第２フレームバッファにおける所定の格納領域に格納させる、請求項７に記載のビデオデコーダ。
【請求項９】
前記第１および第２のフレームバッファは、読出コマンドを与えてから所定時間経過後にデータ出力が開始される第１および第２のメモリ回路をそれぞれ含む、請求項８に記載のビデオデコーダ。
【請求項１０】
前記第１および第２のメモリ回路は、それぞれ、互いに入出力のデータバス幅の等しいシンクロナスダイナミック型ランダムアクセスメモリを含む、請求項９に記載のビデオデコーダ。
【請求項１１】
前記ビデオストリームは、離散コサイン変換と、逆方向および順方向予測を行なう動き補償予測とを併用する、ＭＰＥＧビデオストリームである、請求項９に記載のビデオデコーダ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はＭＰＥＧ等の画像圧縮方式を用いたビデオデコーダに関するものである。
【０００２】
【従来の技術】
マルチメディアで扱われる情報は、膨大な量であり、かつ多種多様であって、これらの情報を高速に処理することがマルチメディアの実用化を図る上で必要となってくる。情報を高速に処理するためには、データの圧縮・伸長技術が不可欠となる。
【０００３】
そのようなデータの圧縮伸長技術として「ＭＰＥＧ（Moving Picture Expert Group）」方式が挙げられる。このＭＰＥＧ方式は、ＩＳＯ（International Organization for Standardization）／ＩＥＣ(International Electro-technical Commission）傘下のＭＰＥＧ委員会（ISO/IEC JTC1/SC29/WG11）によって標準化されている。
【０００４】
ＭＰＥＧは３つのパートから構成されている。パート１の「ＭＰＥＧシステムパート」（ISO/IEC IS 11172 Part1:Systems）では、ビデオデータとオーディオデータの多重化構造（マルチプレクス・ストラクチャ）および同期方式が規定される。パート２の「ＭＰＥＧビデオパート」（ISO/IEC IS 11172 Part2:Video）では、ビデオデータの高能率符号化方式およびビデオデータのフォーマットが規定される。パート３の「ＭＰＥＧオーディオパート」（ISO/IEC IS 11172 Part3:Audio）では、オーディオデータの高能率符号化方式およびオーディオデータのフォーマットが規定される。
【０００５】
ＭＰＥＧビデオパートで取り扱われるビデオデータは動画に関するものであり、その動画は１秒間に数十枚（たとえば、３０枚）のフレーム（静止画、コマ）によって構成されている。ビデオデータは、シーケンス(Sequence)、ＧＯＰ(Group Of Pictures)、ピクチャ(Picture)、スライス(Slice)、マクロブロック(Macroblock)、ブロック(Block)の順に６層の階層構造からなる。１枚のピクチャを構成するスライスの個数は一定ではなく、１個のスライスを合成するマクロブロックの個数も一定ではない。
【０００６】
また、ＭＰＥＧには主にエンコードレートの違いにより、ＭＰＥＧ−１、ＭＰＥＧ−２の２つの方式がある。ＭＰＥＧ−１においてフレームは、ピクチャに対応している。ＭＰＥＧ−２においては、フレームまたはフィールドをピクチャに対応させることもできる。フィールドは、２枚で１枚のフレームを構成している。
【０００７】
ちなみに、ピクチャにフレームが対応している構造はフレーム構造と呼ばれ、ピクチャにフィールドが対応している構造はフィールド構造と呼ばれる。
【０００８】
ＭＰＥＧでは、フレーム間予測と呼ばれる圧縮技術を用いる。フレーム間予測は、フレーム間のデータを時間的な相関に基づいて圧縮する。フレーム間予測では双方向予測が行なわれる。双方向予測とは、過去の再生画像（または、ピクチャ）から現在の再生画像を予測する順方向予測と、未来の再生画像から現在の再生画像を予測する逆方向予測とを併用することである。
【０００９】
この双方向予測は、Ｉピクチャ(Intra-Picture)、Ｐピクチャ(Predictive-Picture)、Ｂピクチャ(Bidirectionally predictive-Picture)と呼ばれる３つのタイプのピクチャを規定している。
【００１０】
Ｉピクチャは、過去や未来の再生画像とは無関係に独立して生成される。ランダムアクセスを行なうために、ＧＯＰ内には最低１枚のＩピクチャが必要である。Ｉピクチャ内のすべてのマクロブロック・タイプは、フレーム内予測画面(IntraFrame)である。
【００１１】
Ｐピクチャは、順方向予測（過去のＩピクチャまたはＰピクチャからの予測）により生成される。Ｐピクチャ内のマクロブロック・タイプは、フレーム内予測画面と順方向予測画面(Forward Inter Frame)の両方を含む。
【００１２】
Ｂピクチャは双方向予測により生成される。双方向予測においてＢピクチャは、以下に示す３つの予測のうちいずれか１つにより生成される。
【００１３】
・順方向予測；過去のＩピクチャまたはＢピクチャからの予測。
・逆方向予測；未来のＩピクチャまたはＰピクチャからの予測。
【００１４】
・双方向予測；過去および未来のＩピクチャまたはＰピクチャからの予測。
Ｂピクチャ内のマクロブロック・タイプは、フレーム内予測画面、順方向予測画面、逆方向予測画面(Backward Inter Frame)、内挿的予測画面(Interpolative Inter Frame)の４つのタイプを含む。
【００１５】
そして、これらＩ、Ｐ、Ｂピクチャがそれぞれエンコードされる。つまり、Ｉピクチャは過去や未来のピクチャがなくても生成される。これに対し、Ｐピクチャは過去のピクチャがないと生成されず、Ｂピクチャは過去または未来のピクチャがないと生成されない。
【００１６】
ただし、ＰピクチャやＢピクチャでも、マクロブロック・タイプが内挿的予測画面の場合、そのマクロブロックは過去や未来のピクチャがなくても生成される。
【００１７】
フレーム間予測では、まず、Ｉピクチャが周期的に生成される。次に、Ｉピクチャよりも数フレーム先のフレームがＰピクチャとして生成される。このＰピクチャは、過去から現在への一方向（順方向）の予測により生成される。続いて、Ｉピクチャの前、Ｐピクチャの後に位置するフレームがＢピクチャとして生成される。このＢピクチャを生成するとき、順方向予測、逆方向予測、双方向予測の３つの中から最適な予測方法が選択される。連続した動画では一般的に、現在の画像とその前後の画像とはよく似ており、異なっているのは、そのごく一部分にすぎない。そこで、前にフレーム（たとえば、Ｉピクチャ）と次のフレーム（たとえば、Ｐピクチャ）とはほとんど同じであると仮定し、両フレーム間に変化があればその差分（Ｂピクチャのデータ）のみを抽出して圧縮する。これにより、フレーム間のデータを時間的な相関に基づいて圧縮することができる。
【００１８】
このようにＭＰＥＧビデオパートに準拠してエンコードされたビデオデータのデータ列（ビットストリーム）は、ＭＰＥＧビデオストリーム（以下、ビデオストリームと略す）と呼ばれる。
【００１９】
ところで、ＭＰＥＧ−１は主に、ビデオＣＤ(Compact Disc)やＣＤ−ＲＯＭ(CD-Read Only Memory)などの蓄積メディアに対応している。ＭＰＥＧ−２は、ビデオＣＤ、ＣＤ−ＲＯＭ、ＤＶＤ（Digital Video Disc）、ビデオテープ、不揮発性半導体メモリを用いたメモリカードなどの蓄積メディアだけでなく、ＬＡＮ（Local Area Network）などの通信メディア、地上波放送や衛星放送およびＣＡＴＶ(Community Antenna Television)などの放送メディアをも含む伝達メディア全般に対応している。
【００２０】
ＭＰＥＧビデオパートで用いられる技術の核となるのが、動き補償付予測（ＭＣ; Motion Compensated prediction）と離散コサイン変換(DCT ; Discrete Cosine Transform)である。ＭＣとＤＣＴを併用した符号化技術は、ハイブリッド符号化技術と呼ばれる。ＭＰＥＧビデオパートでは、エンコード時にＤＣＴ符号を用い、画像（ビデオ信号）を周波数成分に分解して処理する。そして、デコード時にＤＣＴの逆変換（離散コサイン逆変換：ＩＤＣＴ;Inverse DCT）を用い、周波数成分を再び画像（ビデオ信号）に戻す。
【００２１】
図４は、従来のＭＰＥＧビデオデコーダ１０１のブロック回路図である。
ＭＰＥＧビデオデコーダ１０１は、制御コア回路１０２、ビットバッファ１０３、フレームバッファ１０４、ＭＰＥＧデコードコア回路１０５、データバス１０６、表示回路１０７、メモリコントローラ１０８、ＦＩＦＯ(First-In-First-Out)構成のバッファ１０９〜１１５から構成されている。なお、ＭＰＥＧビデオデコーダ１０１を構成する各回路１０２〜１１５は、１チップのＬＳＩに搭載されている。
【００２２】
制御コア回路１０２は、各回路１０３〜１１５を制御する。
伝達メディア１３０から転送されてきたビデオストリームは、まずバッファ１０９に入力され、バッファ１０９→データバス１０６→メモリコントローラ１０８→ビットバッファ１０３の順序で転送されて、ビットバッファ１０３に書込まれる。なお、伝達メディア１３０には、蓄積メディア（ビデオＣＤ、ＣＤ−ＲＯＭ、ＤＶＤ、ビデオテープ、メモリカード等）、通信メディア（ＬＡＮ等）、放送メディア（地上波放送、衛星放送、ＣＡＴＶ等）などが含まれる。
【００２３】
ビットバッファ１０３は、ＦＩＦＯ構成のＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）からなるリングバッファによって構成され、伝達メディア１３０から伝送されてくるビデオストリームを順次蓄積する。
【００２４】
ビットバッファ１０３が設けられているのは、Ｉ、Ｐ、Ｂの各ピクチャのデータ量が異なっているためである。Ｉピクチャのデータ量は約３０ｋバイト、Ｐピクチャのデータ量は約１０〜１５ｋバイト、Ｂピクチャのデータ量は０〜約６ｋバイトである。それに対して、伝達メディア１３０から転送されてくるビデオストリームのビットレートは一定である。ＭＰＥＧデコードコア回路１０５は、各ピクチャごとに処理を行ない、その処理時間は各ピクチャのデータ量によって異なる。そのため、伝達メディア１３０から伝送されてきたビデオストリームをＭＰＥＧデコードコア回路１０５へ直接転送すると、ＭＰＥＧデコードコア１０５において処理できないピクチャが出てくる。これを防止するため、伝達メディア１３０から転送されてくるビデオストリームに対するバッファメモリとしてのビットバッファ１０３を設けることで、Ｉ、Ｐ、Ｂの各ピクチャのデータ量の相違を吸収しているわけである。
【００２５】
フレームバッファ１０４は、ＳＤＲＡＭからなり、その内部は３つの領域（前方参照領域１２０、後方参照領域１２１、Ｂピクチャ格納領域１２２）に分けられている。
【００２６】
なお、ビットバッファ１０３とフレームバッファ１０４とは、部品点数を少なくしてＭＰＥＧビデオデコーダ１０１の部品コストを減少させるために、１つのＳＤＲＡＭ内に領域を分けて設けられている。
【００２７】
また、ビットバッファ１０３とフレームバッファ１０４とが設けられるＳＤＲＡＭの入出力のデータバス幅（ビット幅）は、３２ｂｉｔに設定されている。そのため、メモリコントローラ１０８の入出力のデータバス幅およびデータバス１０６のデータバス幅についても、３２ｂｉｔに設定されている。
【００２８】
メモリコントローラ１０８は、ビットバッファ１０３およびフレームバッファ１０４の読出動作および書込動作を制御する。
【００２９】
ビットバッファ１０３に蓄積されたビデオストリームは、メモリコントローラ１０８により、１フレーム期間ごとに１枚のピクチャ分ずつのビデオストリームが読出され、そのビデオストリームは、メモリコントローラ１０８→データバス１０６→バッファ１１０の順番で転送されて、ＭＰＥＧデコードコア回路１０５に入力される。
【００３０】
ＭＰＥＧデコードコア回路１０５は、入力された１ピクチャ分のビデオストリームに対して、まず、ハフマンコードに基づいた可変長デコード処理を行ない、次に、可変長デコード処理結果に対して量子化しきい値に基づいた逆量子化処理を行なってＤＣＴ(Discrete Cosine Transform)係数を求め、続いて、求めたＤＣＴ係数に対してＩＤＣＴ処理を行ない、最後に、ＩＤＣＴ（Inverse DCT）処理結果に対してＭＣ(Motion Compensated prediction)処理を行なう。
【００３１】
そして、ＭＰＥＧデコードコア回路１０５によるＭＣ処理結果は、バッファ１１４→データバス１０６→メモリコントローラ１０８→フレームバッファ１０４の順番で転送されて、メモリコントローラ１０８によりフレームバッファ１０４のいずれかの領域１２０〜１２２に格納される。
【００３２】
また、メモリコントローラ１０８により、フレームバッファ１０４の各領域１２０〜１２２から読出されたデータは、メモリコントローラ１０８→データバス１０６→各バッファ１１１〜１１３のいずれかの順番で転送されて、ＭＰＥＧデコードコア回路１０５に入力される。ここで、前方参照領域１２０から読出されたデータはバッファ１１１を介して転送され、後方参照領域１２１から読出されたデータはバッファ１１２を介して転送され、Ｂピクチャ格納領域１２２から読出されたデータはバッファ１１３を介して転送される。
【００３３】
前方参照領域１２０には、ＭＰＥＧデコードコア回路１０５によるＭＣ処理において逆方向予測を行なう際に用いられる未来のＩピクチャまたはＰピクチャが格納される。後方参照領域１２１には、ＭＣ処理において順方向予測を行なう際に用いられる過去のＩピクチャまたはＰピクチャが格納される。Ｂピクチャ格納領域１２２には、Ｂピクチャが格納される。
【００３４】
前方参照領域１２０および後方参照領域１２１に格納されるＩピクチャまたはＰピクチャは、順方向予測または逆方向予測を行なうための基データとして使われるため、必要がなくなるまで、各領域１２０、１２１に格納し続けなければならない。Ｂピクチャ格納領域１２２に格納されるＢピクチャについては、基データとして扱われないため、ＭＰＥＧビデオデコーダ１０１の外部へ出力されたら不要になる。なお、各領域１２０〜１２２はプレーン(Plane)とも呼ばれる。
【００３５】
そして、メモリコントローラ１０８により、フレームバッファ１０４の各領域１２０〜１２２のいずれか１つから読出されたピクチャのデータは、メモリコントローラ１０８→データバス１０６→バッファ１１５の順番で転送されて、表示回路１０７に入力される。
【００３６】
表示回路１０７は、ピクチャのデータからビデオ信号（映像信号）を生成し、そのビデオ信号をＭＰＥＧビデオデコーダ１０１に接続された外部機器１３１へ出力する。たとえば、外部機器１３１としてディスプレイを接続した場合、当該ディスプレイはビデオ信号を画像として表示する。また、外部機器１３１として蓄積メディア（ビデオテープ、メモリカード等）を接続した場合、当該蓄積メディアにはビデオ信号が記憶蓄積される。
【００３７】
このように構成されたＭＰＥＧビデオデコーダ１０１は、ムービーカメラ、スチールカメラ、テレビジョン、ビデオＣＤ再生装置、ＤＶＤ再生装置などに組み込まれる。なお、ＭＰＥＧビデオデコーダ１０１をムービーカメラまたはスチールカメラに組み込む場合は、伝達メディア１３０がＣＣＤ(Charge Coupled Device)などの撮像デバイスおよびその信号処理回路に置き換えられる。
【００３８】
【発明が解決しようとする課題】
図５は、ＳＤＲＡＭからなるフレームバッファ１０４の前方参照領域１２０および後方参照領域１２１に格納される輝度（Ｙ）データおよび色差（Ｃ）データの格納状態を模式的に示す模式図である。
【００３９】
前方参照領域１２０には、前方参照用の輝度データｙｆの格納領域１４０と、前方参照用の色差データｃｆの格納領域１４１とが設けられている。また、後方参照領域１２１には、後方参照用の輝度データｙｒの格納領域１４２と、後方参照用の色差データｃｒの格納領域１４３とが設けられている。
【００４０】
なお、色差データのデータ量は輝度データのデータ量のほぼ半分である。そのため、各格納領域１４１、１４３のデータ量は各格納領域１４０、１４２のデータ量のほぼ半分に設定されている。
【００４１】
ちなみに、上記のように、フレームバッファ１０４の各領域１２０、１２１に各データｙｆ、ｃｆ、ｙｒ、ｃｒを格納するための各格納領域１４０〜１４３を設けることは、メモリマッピングと呼ばれる。
【００４２】
一般に、ＳＤＲＡＭにアクセスする際には、ＳＤＲＡＭに規定されたキャストリーケンシーおよびバーストレンジにより決定される所定のコマンドを設定する必要があり、そのように所定のコマンドを設定することはコマンドオーバーヘッドと呼ばれる。そのため、アクセスを開始した時点からデータの書込または読出が実際に開始される時点までの間に、コマンドオーバーヘッドに要する時間分の遅延時間が生じることになる。このコマンドオーバーヘッドに要する時間（遅延時間）は、ＳＤＲＡＭの動作クロックの６〜７クロック分以下にはできない。
【００４３】
図６は、入出力のデータバス幅が３２ｂｉｔのＳＤＲＡＭからなるフレームバッファ１０４の各領域１２０、１２１から１つのマクロブロック分のデータを読出す場合におけるメモリアクセスの順番を模式的に示す模式図である。
【００４４】
メモリアクセスは、格納領域１４０に対するコマンドオーバーヘッドｃｏｍ→格納領域１４０からの前方参照用輝度データｙｆの読出→格納領域１４１に対するコマンドオーバーヘッドｃｏｍ→格納領域１４１からの前方参照用色差データｃｆの読出→格納領域１４２に対するコマンドオーバーヘッドｃｏｍ→格納領域１４２からの後方参照用輝度データｙｒの読出→格納領域１４３に対するコマンドオーバーヘッドｃｏｍ→格納領域１４３からの後方参照用色差データｃｒの読出の順番で行なわれる。
【００４５】
したがって、この場合のメモリアクセスに要する時間Ｔ１は、以下の式（１）により求められる。
【００４６】
Ｔ１＝４×ｔ１＋２×ｔ２＋２×ｔ３        …（１）
ただし、ｔ１；コマンドオーバーヘッドｃｏｍに要する時間
ｔ２；各輝度データｙｆ、ｙｒの読出に要する時間
ｔ３；各色差データｃｆ、ｃｒの読出に要する時間
ところで、ＭＰＥＧデコードコア回路１０５によるＭＣ処理では、１つのマクロブロックの半分（ハーフマクロブロック）の輝度データを復元するために、ＳＤＲＡＭからなるフレームバッファ１０４の前方参照領域１２０または後方参照領域１２１からハーフマクロブロック分の輝度データを読出す場合がある。
【００４７】
図７は、従来のＭＰＥＧビデオデコーダの動作を説明するための模式図であり、図７Ａは、ハーフマクロブロック分の輝度データを復元するのに必要のあるデータを示し、図７Ｂは、フレームバッファ１０４からハーフマクロブロック分の輝度データを読出す際に読み出されるデータを示し、図７Ｃは、フレームバッファからハーフマクロブロック分の輝度データを読出す動作を示す。
【００４８】
図７Ａに示すように、このハーフマクロブロック分の輝度データを復元するのに前方参照領域１２０または後方参照領域１２１から読出す必要のある輝度データは、９ピクセル（画素）×１７ピクセル（画素）分のデータである。
【００４９】
一般に、ＳＤＲＡＭにアクセスできる最小単位は、ＳＤＲＡＭに規定されたバーストレンジに入出力のデータバス幅を乗算した値になる。
【００５０】
バーストレンジの最小値は「２」であるため、入出力のデータバス幅が３２ｂｉｔのＳＤＲＡＭにアクセスできる最小単位は、２×３２ｂｉｔになる。ところで、１つのピクセル（画素）のデータ量は８ｂｉｔである。したがって、入出力のデータバス幅が３２ｂｉｔのＳＤＲＡＭにアクセスできる最小単位は、水平方向に配置された８ピクセル分になる。
【００５１】
そのため、図７Ｂに示すように、入出力のデータバス幅が３２ｂｉｔのＳＤＲＡＭからなるフレームバッファ１０４からハーフマクロブロック分の輝度データ（９ピクセル×１７ピクセル分のデータ）を読出すには、９ピクセル×２４ピクセル分のデータを読出す必要がある。すなわち、入出力のデータバス幅が３２ｂｉｔのＳＤＲＡＭにアクセスできる最小単位は水平８ピクセル分であるため、水平１７ピクセル分のデータを読出すには、水平８ピクセルの３倍の２４ピクセル分のデータを読出さなければならない。そして、読出した９ピクセル×２４ピクセル分のデータのうち、９ピクセル×１７ピクセル分の必要なデータを除いた残りのデータである９ピクセル×７ピクセル分は無駄なデータとなる。
【００５２】
近年、ＭＰＥＧビデオデコーダ１０１の動作速度を高速化することが要求されている。それには、フレームバッファ１０４とデータバス１０６を高速化して動作周波数を高くする方法と、フレームバッファ１０４とデータバス１０６の入出力のデータバス幅（ビット幅）を３２ｂｉｔよりもさらに拡げる（たとえば、４８ｂｉｔ、６４ｂｉｔ、１２８ｂｉｔ等）方法とがある。しかし、動作周波数の高いフレームバッファ１０４は高価（たとえば、ＳＤＲＡＭよりも高速なランバスＤＲＡＭはＳＤＲＡＭより高価）である上に、消費電力も大きくなる。また、入出力のデータバス幅をさらに拡げると、ＬＳＩの端子数が増加するとともにフレームバッファ１０４を構成するＳＤＲＡＭのチップ数が増加するため、ＭＰＥＧビデオデコーダ１０１の基板実装面積の増大やコストアップを招くことになる。そこで、フレームバッファ１０４の動作周波数を高くしたり、入出力のデータバス幅を拡げることなく、ＭＰＥＧビデオデコーダ１０１の動作速度を高速化することが求められている。
【００５３】
本発明の目的は、動作速度を高速化することが可能なＭＰＥＧ等の画像圧縮方式を用いたビデオデコーダを提供することにある。
【００５４】
【課題を解決するための手段】
係る目的を達成するために本願発明は、離散コサイン変換と、逆方向予測および順方向予測を行なう動き補償予測とを併用してビデオストリームをデコードするビデオデコーダにおいて、上記逆方向予測に用いられる前方参照用輝度データの格納領域と、上記順方向予測に用いられる後方参照用色差データの格納領域とが設けられた第１フレームバッファと、上記逆方向予測に用いられる前方参照用色差データの格納領域と、上記順方向予測に用いられる後方参照用輝度データの格納領域とが設けられた第２フレームバッファと、上記第１フレームバッファに対するメモリアクセス動作と上記第２フレームバッファに対するメモリアクセス動作との少なくとも一部分の動作を並列処理で行なう読出制御回路とを備える。
【００５５】
したがって、本発明においては、第１および第２フレームバッファとして入出力のデータバス幅が小さなものを用いれば、各フレームバッファからハーフマクロブロック分の輝度データ（例えば、９ピクセル×１７ピクセル分のデータ）を読出す際にも、無駄なデータの読出を少なくすることが可能になり、その分だけメモリアクセスに要する時間を短縮することができる。そのため、各フレームバッファの動作周波数を高くしたり入出力のデータバス幅を拡げることなく、ビデオデコーダの動作速度を高速化することができる。
【００５６】
本発明の他の局面に従うと、離散コサイン変換と、逆方向予測および順方向予測を行なう動き補償付予測とを併用してビデオストリームをデコードするビデオデコーダにおいて、上記逆方向予測に用いられる前方参照用輝度データの格納領域と、上記順方向予測に用いられる後方参照用色差データの格納領域とが設けられた第１フレームバッファと、上記逆方向予測に用いられる前方参照用色差データの格納領域と、上記順方向予測に用いられる後方参照用輝度データの格納領域とが設けられた第２フレームバッファと、第１フレームバッファと第２フレームバッファとに対するメモリアクセスを並列処理で行ない、第１フレームバッファから前方参照用輝度データを読出しているときに、第２フレームバッファから前方参照用色差データを読出すとともに、第１フレームバッファから後方参照用色差データを読出しているときに、第２フレームバッファから後方参照用輝度データを読出すようにする読出制御回路とを備える。
【００５７】
したがって、本発明によれば、メモリアクセスに要する時間を極めて効果的に短縮することができる。
【００５８】
さらに、好ましくは、ビデオデコーダにおいては、前方参照用輝度データおよび後方参照用色差データを上記第１フレームバッファにおける所定の格納領域に格納させるとともに、前方参照用色差データおよび後方参照用輝度データを上記第２フレームバッファにおける所定の格納領域に格納させる書込制御回路を備える。
【００５９】
さらに好ましくは、ビデオデコーダにおいて、上記第１および第２フレームバッファはともに入出力のデータバス幅の等しいＳＤＲＡＭを含む。
【００６０】
したがって、本発明によれば、第１フレームバッファと第２フレームバッファとに対するメモリアクセスが並列処理で行なわれる。このため、各フレームバッファから１つのマクロブロック分の輝度データおよび色差データを読出す際のメモリアクセスに要する時間を、ＳＤＲＡＭ等のバッファメモリに規定されたコマンドオーバーヘッドの２回分に要する時間だけ短縮することができる。そのため、ビデオデコーダの動作速度をさらに高速化することが可能である。
【００６１】
【発明の実施の形態】
以下、本発明の実施例を図面とともに説明する。
【００６２】
なお、実施例において、図４〜図７Ｃに示した従来のＭＰＥＧビデオデコーダと同一の構成部分については同一符号を付してその説明を繰返さない。
【００６３】
図１は、実施例１のＭＰＥＧビデオデコーダ１の構成を示すブロック回路図である。
【００６４】
ＭＰＥＧビデオデコーダ１は、制御コア回路２、切換回路３、ビットバッファ１０３ａ、１０３ｂ、フレームバッファ１０４ａ、１０４ｂ、ＭＰＥＧデコードコア回路１０５、データバス１０６ａ、１０６ｂ、表示回路１０７、メモリコントローラ１０８ａ、１０８ｂ、ＦＩＦＯ構成のバッファ１０９、１１０ａ〜１１５ｂから構成されている。なお、ＭＰＥＧビデオデコーダ１を構成する各回路２、１０３ａ〜１１５ｂは１チップのＬＳＩに搭載されている。
【００６５】
制御コア回路２は、各回路３、１０３ａ〜１１５ｂを制御する。
伝達メディア１３０から転送されてきたビデオストリームは、まずバッファ１０９に入力され、バッファ１０９→各データバス１０６ａ、１０６ｂ→各メモリコントローラ１０８ａ、１０８ｂ→各ビットバッファ１０３ａ、１０３ｂの順番で転送されて、各ビットバッファ１０３ａ、１０３ｂに書込まれる。
【００６６】
各ビットバッファ１０３ａ、１０３ｂはＦＩＦＯ構成のＳＤＲＡＭからなるリングバッファによって構成され、伝達メディア１３０から転送されてくるビデオストリームを順次蓄積する。
【００６７】
各ビットバッファ１０３ａ、１０３ｂが設けられているのは、従来のＭＰＥＧビデオデコーダ１０１においてビットバッファ１０３が設けられている理由と同じである。
【００６８】
各フレームバッファ１０４ａ、１０４ｂはＳＤＲＡＭからなり、それぞれの内部は３つの領域（前方参照領域１２０ａ、１２０ｂ、後方参照領域１２１ａ、１２１ｂ、Ｂピクチャ格納領域１２２ａ、１２２ｂ）に分けられている。
【００６９】
なお、部品点数を少なくしてＭＰＥＧビデオデコーダ１の部品コストを減少させるため、ビットバッファ１０３ａとフレームバッファ１０４ａとが１つのＳＤＲＡＭ内に領域を分けて設けられ、ビットバッファ１０３ｂとフレームバッファ１０４ｂとが１つのＳＤＲＡＭ内に領域を分けて設けられている。
【００７０】
また、ビットバッファ１０３ａ、１０３ｂとフレームバッファ１０４ａ、１０４ｂとが設けられるそれぞれのＳＤＲＡＭの入出力のデータバス幅（ビット幅）はともに、１６ｂｉｔに設定されている。そのため、各メモリコントローラ１０８ａ、１０８ｂの入出力のデータバス幅および各データバス１０６ａ、１０６ｂのデータバス幅についても、１６ｂｉｔに設定されている。
【００７１】
メモリコントローラ１０８ａは、ビットバッファ１０３ａおよびフレームバッファ１０４ａの読出動作および書込動作を制御する。また、メモリコントローラ１０８ｂは、ビットバッファ１０３ｂおよびフレームバッファ１０４ｂの読出動作および書込動作を制御する。
【００７２】
各ビットバッファ１０３ａ、１０３ｂに蓄積されたビデオストリームは、各メモリコントローラ１０８ａ、１０８ｂにより、１フレーム期間ごとに１枚のピクチャ分ずつのビデオストリームが読出される。そして、ビットバッファ１０３ａから読出された１枚のピクチャ分のビデオストリームは、メモリコントローラ１０８ａ→データバス１０６ａ→バッファ１１０ａの順番で転送されて、ＭＰＥＧデコードコア回路１０５に入力される。また、ビットバッファ１０３ｂから読出された１枚のピクチャ分のビデオストリームは、メモリコントローラ１０８ｂ→データバス１０６ｂ→バッファ１１０ｂの順番で転送されて、ＭＰＥＧデコードコア回路１０５に入力される。
【００７３】
ＭＰＥＧデコードコア回路１０５は、従来のＭＰＥＧビデオデコーダ１０１と同様に、入力された１ピクチャ分のビデオストリームに対して、可変長デコード処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理を順次行なう。
【００７４】
そして、ＭＰＥＧデコードコア回路１０５によるＭＣ処理結果は、切換回路３に転送される。切換回路３は、各ノード３ａ、３ｂのいずれかの側に切換えられる。切換回路３がノード３ａ側に切換えられた場合、ＭＣ処理結果は、バッファ１１４ａ→データバス１０６ａ→メモリコントローラ１０８ａ→フレームバッファ１０４ａの順番で転送されて、メモリコントローラ１０８ａにより、フレームバッファ１０４ａのいずれかの領域１２０ａ〜１２２ａに格納される。また、切換回路３がノード３ｂ側に切換えられた場合、ＭＣ処理結果は、バッファ１１４ｂ→データバス１０６ｂ→メモリコントローラ１０８ｂ→フレームバッファ１０４ｂの順番で転送されて、メモリコントローラ１０８ｂにより、フレームバッファ１０４ｂのいずれかの領域１２０ｂ〜１２２ｂに格納される。
【００７５】
そして、メモリコントローラ１０８ａにより、フレームバッファ１０４ａの各領域１２０ａ〜１２２ａから読出されたデータは、メモリコントローラ１０８ａ→データバス１０６ａ→各バッファ１１１ａ〜１１３ａのいずれかの順番で転送されて、ＭＰＥＧデコードコア回路１０５に入力される。ここで、前方参照領域１２０ａから読出されたデータはバッファ１１１ａを介して転送され、後方参照領域１２１ａから読出されたデータはバッファ１１２ａを介して転送され、Ｂピクチャ格納領域１２２ａから読出されたデータはバッファ１１３ａを介して転送される。
【００７６】
また、メモリコントローラ１０８ｂにより、フレームバッファ１０４ｂの各領域１２０ｂ〜１２２ｂから読出されたデータは、メモリコントローラ１０８ｂ→データバス１０６ｂ→各バッファ１１１ｂ〜１１３ｂのいずれかの順番で転送されて、ＭＰＥＧデコードコア回路１０５に入力される。ここで、前方参照領域１２０ｂから読出されたデータはバッファ１１１ｂを介して転送され、後方参照領域１２１ｂから読出されたデータはバッファ１１２ｂを介して転送され、Ｂピクチャ格納領域１２２ｂから読出されたデータはバッファ１１３ｂを介して転送される。
【００７７】
各前方参照領域１２０ａ、１２０ｂには、ＭＰＥＧデコードコア回路１０５によるＭＣ処理において逆方向予測を行なう際に用いられる未来のＩピクチャまたはＰピクチャが格納される。各後方参照領域１２１ａ、１２１ｂには、ＭＣ処理において順方向予測を行なう際に用いられる過去のＩピクチャまたはＰピクチャが格納される。各Ｂピクチャ格納領域１２２ａ、１２２ｂにはＢピクチャが格納される。
【００７８】
各前方参照領域１２０ａ、１２０ｂおよび各後方参照領域１２１ａ、１２１ｂに格納されるＩピクチャまたはＰピクチャは、順方向予測または逆方向予測を行なうための元データとして使われるため、必要がなくなるまで、各領域１２０ａ、１２０ｂ、１２１ａ、１２１ｂに格納し続けなければならない。Ｂピクチャ格納領域１２２ａ、１２２ｂに格納されるＢピクチャについては元データとして扱われないため、ＭＰＥＧビデオデコーダ１の外部へ出力されたら不要になる。なお、各領域１２０ａ〜１２２ｂはプレーンとも呼ばれる。
【００７９】
そして、メモリコントローラ１０８ａにより、フレームバッファ１０４ａの各領域１２０ａ〜１２２ａのいずれか１つから読出されたピクチャのデータは、メモリコントローラ１０８ａ→データバス１０６ａ→バッファ１１５ａの順番で転送されて、表示回路１０７に入力される。
【００８０】
また、メモリコントローラ１０８ｂにより、フレームバッファ１０４ｂの各領域１２０ｂ〜１２２ｂのいずれか１つから読出されたピクチャのデータは、メモリコントローラ１０８ｂ→データバス１０６ｂ→バッファ１１５ｂの順番で転送されて、表示回路１０７に入力される。
【００８１】
表示回路１０７は、各バッファ１１５ａ、１１５ｂから転送されたピクチャのデータからビデオ信号（映像信号）を生成し、そのビデオ信号をＭＰＥＧビデオデコーダ１に接続された外部機器１３１へ出力する。
【００８２】
このように構成されたＭＰＥＧビデオデコーダ１は、従来のＭＰＥＧビデオデコーダ１０１と同様に、ムービーカメラ、スチールカメラ、テレビジョン、ビデオＣＤ再生装置、ＤＶＤ再生装置などに組み込まれる。なお、ＭＰＥＧビデオデコーダ１をムービーカメラまたはスチールカメラに組み込む場合は、伝達メディア１３０がＣＣＤなどの撮像デバイスおよびその信号処理回路に置き換えられる。
【００８３】
図２は、ＳＤＲＡＭからなる各フレームバッファ１０４ａ、１０４ｂの前方参照領域１２０ａ、１２０ｂおよび後方参照領域１２１ａ、１２１ｂに格納される輝度（Ｙ）データおよび色差（Ｃ）データの格納状態を模式的に示す模式図である。
【００８４】
フレームバッファ１０４ａにおいては、前方参照領域１２０ａには前方参照用の輝度データｙｆの格納領域１４０が設けられ、後方参照領域１２１ａには後方参照用の色差データｃｒの格納領域１４３が設けられている。
【００８５】
フレームバッファ１０４ｂにおいては、前方参照領域１２０ｂには前方参照用の色差データｃｆの格納領域１４１が設けられ、後方参照領域１２１ｂには後方参照用の輝度データｙｒの格納領域１４２が設けられている。
【００８６】
前述したように、色差データのデータ量は輝度データのデータ量のほぼ半分であるため、各格納領域１４１、１４３のデータ量は各格納領域１４０、１４２のデータ量のほぼ半分に設定されている。
【００８７】
このように、各フレームバッファ１０４ａ、１０４ｂの各領域１２０ａ、１２１ａ、１２０ｂ、１２１ｂに各データｙｆ、ｃｒ、ｃｆ、ｙｒを振り分けて格納することは、上記切換回路３の切換動作により容易かつ確実に行なうことができる。
【００８８】
ちなみに、上述のように、各フレームバッファ１０４ａ、１０４ｂの各領域１２０ａ、１２１ａ、１２０ｂ、１２１ｂに各データｙｆ、ｃｆ、ｙｒ、ｃｒを格納するための各格納領域１４０〜１４３を設けることは、メモリマッピングと呼ばれる。
【００８９】
図３は、入出力のデータバス幅が１６ｂｉｔのＳＤＲＡＭからなるフレームバッファ１０４ａ、１０４ｂの各領域１２０ａ、１２１ａ、１２０ｂ、１２１ｂから１つのマクロブロック分のデータを読出す場合におけるメモリアクセスの順番を模式的に示す模式図である。
【００９０】
クレームバッファ１０４ａに対するメモリアクセスは、格納領域１４０に対するコマンドオーバーヘッドｃｏｍ→格納領域１４０からの前方参照用輝度データｙｆの読出→格納領域１４３に対するコマンドオーバーヘッドｃｏｍ→格納領域１４３からの後方参照用色差データｃｒの読出の順番で行なわれる。
【００９１】
フレームバッファ１０４ｂに対するメモリアクセスは、格納領域１４１に対するコマンドオーバーヘッドｃｏｍ→格納領域１４１からの前方参照用色差データｃｆの読出→格納領域１４２に対するコマンドオーバーヘッドｃｏｍ→格納領域１４２からの前方参照用輝度データｙｒの読出の順番で行なわれる。
【００９２】
そのため、ＭＰＥＧデコードコア回路１０５には、格納領域１４０から読出された前方参照用輝度データｙｆが転送されているときに、格納領域１４１から読出された前方参照用色差データｃｆが転送される。そのため、ＭＰＥＧデコードコア回路１０５では、従来のＭＰＥＧビデオデコーダ１０１と同様に、前方参照用輝度データｙｆおよび前方参照用色差データｃｆに基づいて、ＭＣ処理による逆方向予測が行なわれる。
【００９３】
また、ＭＰＥＧデコードコア回路１０５には、格納領域１４３から読出された後方参照用色差データｃｆが転送されているときに、格納領域１４２から読出された後方参照用輝度データｙｒが転送される。そのため、ＭＰＥＧデコードコア回路１０５では、従来のＭＰＥＧビデオデコーダ１０１と同様に、後方参照用色差データｃｒおよび後方参照用輝度データｙｒに基づいて、ＭＣ処理による順方向予測が行なわれる。
【００９４】
つまり、各フレームバッファ１０４ａ、１０４ｂ、各メモリコントローラ１０８ａ、１０８ｂ、各バッファ１１１ａ、１１２ａと各バッファ１１１ｂ、１１２ｂは同時に動作し、各フレームバッファ１０４ａ、１０４ｂに対するメモリアクセスは並列処理される。
【００９５】
したがって、この場合のメモリアクセスに要する時間Ｔ２は、式（２）により求められる。
【００９６】
Ｔ２＝２×ｔ１＋ｔ４＋ｔ５        …（２）
ただし、ｔ１；コマンドオーバーヘッドｃｏｍに要する時間
ｔ４；各輝度データｙｆ、ｙｒの読出に要する時間
ｔ５；各色差データｃｆ、ｃｒの読出に要する時間
ここで、各フレームバッファ１０４ａ、１０４ｂのデータバス幅は１６ｂｉｔである。それに対して、従来のＭＰＥＧビデオデコーダ１０１のフレームバッファ１０４のデータバス幅は３２ｂｉｔである。そのため、前記時間ｔ１、ｔ３、ｔ４、ｔ５の関係は式（３）に示すようになる。
【００９７】
ｔ４＝２×ｔ２
ｔ５＝２×ｔ３      …（３）
その結果、上記式（１）により求められる従来のＭＰＥＧビデオデコーダ１０１のメモリアクセスに要する時間Ｔ１と、本実施例のＭＰＥＧビデオデコーダ１のメモリアクセスに要する時間Ｔ２との関係は式（４）に示すようになる。
【００９８】
Ｔ２＝Ｔ１−２×ｔ１    …（４）
したがって、本実施例にＭＰＥＧビデオデコーダ１によれば、従来のＭＰＥＧビデオデコーダ１０１に比べて、フレームバッファ１０４ａ、１０４ｂから１つのマクロブロック分の輝度データおよび色差データを読出す際のメモリアクセスに要する時間を、２回分のコマンドオーバーヘッドｃｏｍに要する時間（＝２×ｔ１）分だけ短縮することができる。
【００９９】
また、図７Ｃに示すように、入出力のデータバス幅が１６ｂｉｔのＳＤＲＡＭからなる各フレームバッファ１０４ａ、１０４ｂからハーフマクロブロック分の輝度データ（９ピクセル×１７ピクセル分のデータ）を読出すには、９ピクセル×２０ピクセル分のデータを読出せばよい。すなわち、入出力のデータバス幅が１６ｂｉｔのＳＤＲＡＭにアクセスできる最少単位は水平４ピクセル分であるため、水平１７ピクセル分のデータを読出すには、水平４ピクセルの５倍の２０ピクセル分のデータを読出させればよい。そして、読出した９ピクセル×２０ピクセル分のデータのうち、９ピクセル×１７ピクセル分の必要なデータを除いた残りのデータである、９ピクセル×３ピクセル分は無駄なデータとなる。
【０１００】
上述したように、従来のＭＰＥＧビデオデコーダ１０１では、９ピクセル×２４ピクセル分のデータを読出さなければならず、そのうち、９ピクセル×１７ピクセル分の必要なデータを除いた残りのデータである９ピクセル×７ピクセル分は無駄なデータとなる。
【０１０１】
したがって、本実施例のＭＰＥＧビデオデコーダ１によれば、従来のＭＰＥＧビデオデコーダ１０１に比べて、フレームバッファ１０４ａ、１０４ｂからハーフマクロブロック分の輝度データを読出す際に、９ピクセル×４ピクセル分の無駄なデータの読出を行なう必要がなくなり、その分だけメモリアクセスに要する時間を短縮することができる。
【０１０２】
以上詳述したように、本実施例のＭＰＥＧビデオデコーダ１によれば、従来のＭＰＥＧビデオデコーダ１０１に比べて、ＭＰＥＧデコードコア回路１０５にてＭＣ処理を行なうときに、フレームバッファ１０４ａ、１０４ｂからデータを読出す際のメモリアクセスに要する時間を短縮することが可能になる。
【０１０３】
したがって、本実施例によれば、フレームバッファ１０４ａ、１０４ｂの動作周波数をさらに高くしたり入出力のデータバス幅をさらに広げることなく、ＭＰＥＧビデオデコーダ１の動作速度を高速化することができる。ちなみに、本実施例のＭＰＥＧビデオデコーダ１の動作速度は、従来のＭＰＥＧビデオデコーダ１０１に比べて１．３〜１．５倍高速になる。
【０１０４】
そして、フレームバッファ１０４ａ、１０４ｂとして動作周波数の高い高価で消費電力の大きなものを使用することなく、動作速度の高速なＭＰＥＧビデオデコーダ１を実現することが可能になり、ＭＰＥＧビデオデコーダ１の動作速度の高速化に際して、コストアップならびに消費電力の増大を回避することができる。
【０１０５】
本実施例では、フレームバッファ１０４ａ、１０４ｂを構成するＳＤＲＡＭ、メモリコントローラ１０８ａ、１０８ｂ、データバス１０６ａ、１０６ｂのデータバス幅（ビット幅）をすべて１６ｂｉｔに設定することにより、全体として１６ｂｉｔ＋１６ｂｉｔの３２ｂｉｔとしている。ところで、より高速な処理が要求される場合には、６４ｂｉｔ化が必要となるが、この場合には、フレームバッファ１０４ａ、１０４ｂを構成するＳＤＲＡＭ、メモリコントローラ１０８ａ、１０８ｂ、データバス１０６ａ、１０６ｂのデータバス幅をすべて３２ｂｉｔに設定することにより、全体として３２ｂｉｔ＋３２ｂｉｔの６４ｂｉｔとすればよく、このようにすれば本実施例と同様の効果を得ることができる。
【０１０６】
なお、本発明は上記実施例に限定されるものではなく、以下のように変更してもよく、その場合でも上記実施例と同等もしくはそれ以上の作用効果を得ることができる。
【０１０７】
（１）  ＭＰＥＧビデオデコーダ１において、各バッファ１１３ａ、１１３ｂは適宜省略することができる。また、各バッファ１１１ａ、１１２ａの機能を１つのバッファで兼用してもよく、同様に、各バッファ１１１ｂ、１１２ｂの機能を１つのバッファで兼用してもよい。
【０１０８】
（２）  フレームバッファ１０４ａ、１０４ｂを、ＳＤＲＡＭではなく、書換え可能な他の形式の半導体メモリ（たとえば、ＤＲＡＭ、ランバスＤＲＡＭ等）によって構成してもよい。
【０１０９】
この発明を詳細に説明し示してきたが、これは例示のためのみであって、限定となってはならず、発明の精神と範囲は添付の請求の範囲によってのみ限定されることが明らかに理解されるであろう。
【図面の簡単な説明】
【図１】  本発明の実施例１のＭＰＥＧビデオデコーダのブロック回路図である。
【図２】  実施例１の動作を説明するための第１の模式図である。
【図３】  実施例１の動作を説明するための第２の模式図である。
【図４】  従来のＭＰＥＧビデオデコーダのブロック回路図である。
【図５】  従来のＭＰＥＧビデオデコーダの動作を説明するための第１の模式図である。
【図６】  従来のＭＰＥＧビデオデコーダの動作を説明するための第２の模式図である。
【図７】  従来のＭＰＥＧビデオデコーダの動作を説明するための模式図である。
【符号の説明】
１  ＭＰＥＧビデオデコーダ、２  制御コア回路、３  切換回路、１０３ａ，１０３ｂ  ビットバッファ、１０４ａ，１０４ｂ  フレームバッファ、１０５  ＭＰＥＧデコードコア回路、１０６ａ，１０６ｂ  データバス、１０７  表示回路、１０８ａ，１０８ｂ  メモリコントローラ、１０９，１１０ａ〜１１５ｂ  ＦＩＦＯ構成のバッファ、１２０ａ，１２０ｂ  前方参照領域、１２１ａ，１２１ｂ  後方参照領域、１２２ａ，１２２ｂ  Ｂピクチャ格納領域、１３０  伝達メディア。
【図１】
0003813444.tif 000002
【図２】
0003813444.tif 000003
【図３】
0003813444.tif 000004
【図４】
0003813444.tif 000005
【図５】
0003813444.tif 000006
【図６】
0003813444.tif 000007
【図７Ａ】
0003813444.tif 000008
【図７Ｂ】
0003813444.tif 000009
【図７Ｃ】
0003813444.tif 000010