(57)【特許請求の範囲】
【請求項１】
各画像をマトリックス状に分割して生成されるｎ×ｎ画素のマクロブロック単位に符号化された動画像ストリームを入力する入力手段と、
前記マクロブロックを行方向に並べて構成されるスライス単位に動画像ストリームを復号するアクセラレータと、
前記入力手段が入力した動画像ストリームを前記スライス単位で前記アクセラレータに供給して、前記動画像ストリームの復号を前記アクセラレータに前記スライス単位で行わせる復号制御手段と、
を具備し、
前記復号制御手段は、
前記入力手段が入力した動画像ストリーム中の各スライスデータのヘッダ部に含まれる各スライスの画像内における位置を示す情報の値が適正か否かを判定する判定手段と、
前記判定手段により処理対象のスライスデータについて前記画像内における位置を示す情報の値が適正な値ではないと判定された場合、処理対象のスライスの上段に隣接するスライスのスライスデータに対し、前記画像内における位置を示す情報を前記処理対象のスライス用に編集して前記アクセラレータに供給して復号させる第１のリカバリ手段と、
前記入力手段が入力した動画像ストリーム中の各スライスのスライスデータを前記マクロブロック単位に検査する検査手段と、
前記検査手段がエラーを検出した場合、前記検査手段がエラーを検出したマクロブロックを含むスライスデータについて、前記検査手段がエラーを検出したマクロブロックおよびその後続のマクロブロックのデータを、復号対象の画像内において前記検査手段がエラーを検出したマクロブロックを含むスライスの上段に隣接するスライス中の前記検査手段がエラーを検出したマクロブロックおよびその後続のマクロブロックの上段に隣接するマクロブロックのデータに置き換え、かつ、画像内における位置を示す情報を処理対象のスライス内の各マクロブロック用にそれぞれ編集して前記アクセラレータに供給して復号させる第２のリカバリ手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記復号制御手段の前記第１のリカバリ手段は、前記判定手段により適正な値ではないと判定された前記画像内における位置を示す情報が、復号対象の画像内で処理対象のスライスよりも下段に位置するいずれのスライスについても適合しない値である場合、そのスライスデータを破棄することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記復号制御手段の前記第１のリカバリ手段は、前記判定手段が適正な値ではないと判定した前記画像内における位置を示す情報が、復号対象の画像内で処理対象のスライスよりも下段に位置するいずれかのスライスについて適合する値である場合、処理対象のスライスから前記画像内における位置を示す情報の値が適合するスライスの上段に隣接するスライスまでについて、前記処理対象のスライスの上段に隣接するスライスデータを用いたリカバリ処理を行うことを特徴とする請求項１記載の情報処理装置。
【請求項４】
各画像をマトリックス状に分割して生成されるｎ×ｎ画素のマクロブロック単位に符号化された動画像ストリームを入力する入力手段と、
前記マクロブロック単位に動画像ストリームを復号するアクセラレータと、
前記入力手段が入力した動画像ストリームを前記マクロブロック単位で前記アクセラレータに供給して、前記動画像ストリームの復号を前記アクセラレータに前記マクロブロック単位で行わせる復号制御手段と、
を具備し、
前記復号制御手段は、
前記入力手段が入力した動画像ストリームを前記マクロブロック単位に検査する検査手段と、
前記検査手段がエラーを検出した場合、復号対象の画像内において前記エラーが検出されたマクロブロックの上段に隣接するマクロブロックのデータを、前記エラーが検出されたマクロブロック用に復号対象の画像内における位置を示す情報を編集して前記アクセラレータに供給して復号させるリカバリ手段と、
を有することを特徴とする情報処理装置。
【請求項５】
前記復号制御手段の前記リカバリ手段は、前記検査手段がエラーを検出したマクロブロックの後続マクロブロックであって、前記検査手段がエラーを検出したマクロブロックと復号対象の画面内において同一行のマクロブロックについて、復号対象の画像内において各マクロブロックの上段に隣接するマクロブロックのデータを用いたリカバリ処理を行うことを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記復号制御手段の前記検査手段は、可変長データのハフマン符号化時にテーブルを外れるハフマン符号化テーブルエラーの有無を検査することを特徴とする請求項４記載の情報処理装置。
【請求項７】
前記復号制御手段の前記検査手段は、スキップマクロブロック値が規格を越える値となるスキップマクロブロックエラーの有無を検査することを特徴とする請求項４記載の情報処理装置。
【請求項８】
前記入力手段は、テレビジョン放送信号によって放送されるデジタル放送番組データを前記動画像ストリームとして入力することを特徴とする請求項１または４記載の情報処理装置。
【請求項９】
前記入力手段は、コンピュータネットワークを介して接続されるサーバから前記動画像ストリームを入力することを特徴とする請求項１または４記載の情報処理装置。
【請求項１０】
前記動画像ストリームは、ＭＰＥＧ（Moving Picture Experts Group）２規格に準拠した方式で動画像が圧縮符号化されたものであることを特徴とする請求項１または４記載の情報処理装置。
【請求項１１】
各画像をマトリックス状に分割して生成されるｎ×ｎ画素のマクロブロック単位に符号化された動画像ストリームを、前記マクロブロックを行方向に並べて構成されるスライス単位に復号するグラフィックスアクセラレータを搭載する情報処理装置のリカバリ処理方法であって、
前記情報処理装置は、
入力した動画像ストリーム中の各スライスのスライスデータを前記マクロブロック単位で検査し、
エラーを検出した場合、前記エラーを検出したマクロブロックを含むスライスデータについて、前記エラーを検出したマクロブロックおよびその後続のマクロブロックのデータを、復号対象の画像内においてエラーを検出したマクロブロックを含むスライスの上段に隣接するスライス中の前記エラーを検出したマクロブロックおよびその後続のマクロブロックの上段に隣接するマクロブロックのデータに置き換え、かつ、画像内における位置を示す情報を処理対象のスライス内の各マクロブロック用にそれぞれ編集して前記グラフィックスアクセラレータに供給して復号させる、
ことを特徴とするリカバリ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えばテレビジョン放送信号によって放送されるデジタル放送番組データを記録・再生するＴＶ機能を有するパーソナルコンピュータ等に適用して好適な動画像ストリームの復号制御技術に関する。
【背景技術】
【０００２】
近年、バッテリ駆動可能で携行容易なノートブックタイプのパーソナルコンピュータが広く普及している。この種のコンピュータは、薄型軽量化と並行して高機能化が日々図られており、デジタルテレビジョン放送番組を視聴するためのＴＶ機能を搭載するものも登場してきている。従って、この種のコンピュータを携行すれば、ユーザは、外出先や移動中においても、デジタルテレビジョン放送番組を楽しむことができる。
【０００３】
また、無線通信環境の整備に伴い、外出先や移動中においても、インターネットに接続することが容易になり、インターネットを介して接続したサーバからデジタルテレビジョン放送番組データを受信して視聴するといったことも可能となっている。
【０００４】
デジタル放送番組データは、例えばＭＰＥＧ（Moving Picture Experts Group）２規格に準拠した方式などで圧縮符号化された動画像ストリームである。そして、このような圧縮符号化された動画像ストリームの一部が転送中に欠落したりエラーを発生させたりした場合であっても画像を再生できるようにするためのリカバリの仕組みが、これまで種々提案されている（例えば特許文献１等参照）。
【特許文献１】特開平９−１５４１３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
通常、コンピュータは、各種アプリケーションプログラムが表示しようとする画像をＣＰＵに代わって描画するグラフィックスアクセラレータ（以下、アクセラレータ）を標準的に搭載する。そして、最近では、圧縮符号化された動画像ストリームを復号するためのデコード処理の一部を実行する機能を持つアクセラレータが登場し始めている。ＴＶ機能を搭載するコンピュータの中には、このＴＶ機能をソフトウェアによって実現しているものも少なくない。この場合、動画像ストリームのデコード処理もＣＰＵ上で動作する当該ソフトウェア内の１モジュールによって実行されることになるが、その一部をアクセラレータに代行させることにより、ＣＰＵの負荷を大幅に軽減することが期待される。
【０００６】
ところで、ＭＰＥＧ２規格に準拠した方式で圧縮符号化された動画像ストリームは、シーケンス層、ＧＯＰ（Group Of Picture）層、ピクチャ層、スライス層、マクロブロック層およびブロック層の６層の階層構造となっている。このうち、ピクチャ層は、動画像中の各画像と一対に設けられるものであり、その下層のスライス層は、各画像を水平方向に分割して生成される部分画像データの集合体（スライス）である。また、マクロブロックは、各画像をマトリックス状に分割して生成されるものであり、即ち、このマクロブロックを行方向に並べたものがスライスとなる。そして、前述の、圧縮符号化された動画像ストリームを復号するためのデコード処理の一部を実行する機能を持つアクセラレータの代表的なものの１つに、このスライス単位またはマクロブロック単位にデータを受け取って、デコード処理を実行するものが存在する。
【０００７】
スライス単位またはマクロブロック単位にデータを受け取ってデコード処理を実行するアクセラレータでは、前述の特許文献１に記載されたエラー処理装置のような周辺のデータを利用したリカバリ処理を実行することは不可能である。よって、スライス単位またはマクロブロック単位でのデコード処理を当該アクセラレータに代替させようとするソフトウェアは、圧縮符号化された動画像ストリームの一部が転送中に欠落したりエラーを発生させたりした場合でも、アクセラレータがデコード処理を正常終了させることのできるデータを補完して当該アクセラレータに供給する仕組みを備えることが求められる。
【０００８】
この発明は、このような事情を考慮してなされたものであり、符号化された動画像ストリームの復号処理の一部をアクセラレータに代行させる場合におけるリカバリ処理を実現した情報処理装置およびリカバリ処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前述の目的を達成するために、この発明の情報処理装置は、各画像をマトリックス状に分割して生成されるｎ×ｎ画素のマクロブロック単位に符号化された動画像ストリームを入力する入力手段と、前記マクロブロックを行方向に並べて構成されるスライス単位に動画像ストリームを復号するアクセラレータと、前記入力手段が入力した動画像ストリームを前記スライス単位で前記アクセラレータに供給して、前記動画像ストリームの復号を前記アクセラレータに前記スライス単位で行わせる復号制御手段と、を具備し、前記復号制御手段は、前記入力手段が入力した動画像ストリーム中の各スライスデータのヘッダ部に含まれる各スライスの画像内における位置を示す情報の値が適正か否かを判定する判定手段と、前記判定手段により処理対象のスライスデータについて前記画像内における位置を示す情報の値が適正な値ではないと判定された場合、処理対象のスライスの上段に隣接するスライスのスライスデータに対し、前記画像内における位置を示す情報を前記処理対象のスライス用に編集して前記アクセラレータに供給して復号させる第１のリカバリ手段と、前記入力手段が入力した動画像ストリーム中の各スライスのスライスデータを前記マクロブロック単位に検査する検査手段と、前記検査手段がエラーを検出した場合、前記検査手段がエラーを検出したマクロブロックを含むスライスデータについて、前記検査手段がエラーを検出したマクロブロックおよびその後続のマクロブロックのデータを、復号対象の画像内において前記検査手段がエラーを検出したマクロブロックを含むスライスの上段に隣接するスライス中の前記検査手段がエラーを検出したマクロブロックおよびその後続のマクロブロックの上段に隣接するマクロブロックのデータに置き換え、かつ、画像内における位置を示す情報を処理対象のスライス内の各マクロブロック用にそれぞれ編集して前記アクセラレータに供給して復号させる第２のリカバリ手段と、を有することを特徴とする。
【００１０】
また、この発明の情報処理装置は、各画像をマトリックス状に分割して生成されるｎ×ｎ画素のマクロブロック単位に符号化された動画像ストリームを入力する入力手段と、前記マクロブロック単位に動画像ストリームを復号する復号手段と、前記入力手段が入力した動画像ストリームの復号を前記復号手段に前記マクロブロック単位で行なわせる復号制御手段と、を具備し、前記復号制御手段は、前記入力手段が入力した動画像ストリームを前記マクロブロック単位に検査する検査手段と、前記検査手段がエラーを検出した場合、復号対象の画像内において前記エラーが検出されたマクロブロックの上段に隣接するマクロブロックのデータを、前記エラーが検出されたマクロブロック用に復号対象の画像内における位置を示す情報を編集して前記復号手段に供給して復号させるリカバリ手段と、を有することを特徴とする。
【００１１】
また、この発明のリカバリ処理方法は、符号化された動画像ストリームを所定の部分単位に復号するグラフィックスアクセラレータを搭載する情報処理装置のリカバリ処理方法であって、前記情報処理装置は、入力した動画像ストリームを前記所定の部分単位で検査し、エラーを検出した場合、復号対象の画像内においてエラーを検出した部分の上段に隣接する部分のデータを、エラーを検出した部分用に復号対象の画像内における位置を示す情報を編集して前記グラフィックスアクセラレータに供給して復号させる、ことを特徴とする。
【発明の効果】
【００１２】
この発明によれば、符号化された動画像ストリームの復号処理の一部をアクセラレータに代行させる場合におけるリカバリ処理を実現した情報処理装置およびリカバリ処理方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して、本発明の実施形態を説明する。
【００１４】
まず、図１および図２を参照して、本発明の一実施形態に係る情報処理装置の構成を説明する。本実施形態の情報処理装置は、例えばノートブックタイプのパーソナルコンピュータ１０として実現されている。
【００１５】
このコンピュータ１０は、テレビジョン放送信号によって放送される放送番組データの視聴および録画を実行するためのテレビジョン（ＴＶ）機能を有している。このＴＶ機能は、例えば、コンピュータ１０に予めインストールされているＴＶアプリケーションプログラムによって実現されている。
【００１６】
図１は、このコンピュータ１０のディスプレイユニットを開いた状態における斜視図である。本コンピュータ１０は、コンピュータ本体１１と、ディスプレイユニット１２とから構成される。ディスプレイユニット１２には、ＬＣＤ（Liquid Crystal Display）１７によって構成される表示装置が組み込まれている。
【００１７】
ディスプレイユニット１２は、コンピュータ本体１１に対し、コンピュータ本体１１の上面が露出される開放位置とコンピュータ本体１１の上面を覆う閉塞位置との間を回動自在に取り付けられている。コンピュータ本体１１は薄い箱形の筐体を有しており、その上面にはキーボード１３、本コンピュータ１０をパワーオン／パワーオフするためのパワーボタン１４、入力操作パネル１５、タッチパッド１６、スピーカ１８Ａ，１８Ｂなどが配置されている。
【００１８】
入力操作パネル１５は、押下されたボタンに対応するイベントを入力する入力装置であり、複数の機能をそれぞれ起動するための複数のボタンを備えている。これらボタン群には、ＴＶ機能を制御するための操作ボタン群も含まれている。
【００１９】
また、コンピュータ本体１１の正面には、本コンピュータ１０のＴＶ機能をリモート制御するリモコンユニットとの通信を実行するためのリモコンユニットインタフェース部２０が設けられている。リモコンユニットインタフェース部２０は、赤外線信号受信部などから構成される。さらに、コンピュータ本体１１の例えば右側面には、ＴＶ放送用のアンテナ端子１９が設けられている。
【００２０】
次に、図２を参照して、本コンピュータ１０のシステム構成について説明する。
【００２１】
本コンピュータ１０は、図２に示されているように、ＣＰＵ１０１、ノースブリッジ１０２、主メモリ１０３、サウスブリッジ１０４、グラフィクスプロセシングユニット（ＧＰＵ）１０５、ビデオメモリ（ＶＲＡＭ）１０５Ａ、サウンドコントローラ１０６、ＢＩＯＳ−ＲＯＭ１０７、ＬＡＮコントローラ１０８、ハードディスクドライブ（ＨＤＤ）１０９、ＤＶＤドライブ１１０、無線ＬＡＮコントローラ１１１、IEEE 1394コントローラ１１２、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１１３、ＴＶチューナ１１４、ＥＥＰＲＯＭ１１５等を備えている。
【００２２】
ＣＰＵ１０１は、本コンピュータ１０の動作を制御するプロセッサであり、ハードディスクドライブ（ＨＤＤ）１０９から主メモリ１０３にロードされる、オペレーティングシステム（ＯＳ）２０１や、このＯＳ２０１の配下で動作するＴＶアプリケーションプログラム２０２のような各種アプリケーションプログラムを実行する。ＴＶアプリケーションプログラム２０２は、前述のＴＶ機能を実行するためのソフトウェアである。このＴＶアプリケーションプログラム２０２は、ＴＶチューナ１１４が符号化された動画像ストリームとして受信する放送番組データを視聴するためのライブ再生処理、受信された放送番組データをＨＤＤ１０９に記録する録画処理およびＨＤＤ１０９に記録された放送番組データ／ビデオデータを再生する再生処理等を実行する。なお、ＴＶアプリケーションプログラム２０２の他の利用形態として、ＬＡＮコントローラ１０８や無線ＬＡＮコントローラ１１１を介して取得される放送番組データを視聴等することも考えられる。また、ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１０７に格納されたＢＩＯＳ（Basic Input/Output System）も実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００２３】
ノースブリッジ１０２は、ＣＰＵ１０１のローカルバスとサウスブリッジ１０４との間を接続するブリッジデバイスである。ノースブリッジ１０２には、主メモリ１０３をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ１０２は、PCI EXPRESS規格のシリアルバスなどを介してＧＰＵ１０５との通信を実行する機能も有している。
【００２４】
ＧＰＵ１０５は、本コンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１７を制御する表示コントローラである。このＧＰＵ１０５によって生成される表示信号はＬＣＤ１７に送られる。このＧＰＵ１０５は、各種アプリケーションプログラムが表示しようとする画像をＣＰＵ１０１に代わって描画するアクセラレータを搭載する。このＧＰＵ１０５が搭載するアクセラレータは、ＴＶチューナ１１４によって受信される符号化された動画像ストリームの復号処理の一部をＴＶアプリケーションプログラム２０２に代わって実行する機能を有している。より具体的には、アクセラレータは、動画像ストリーム中のデータをＴＶアプリケーションプログラム２０２から所定の単位毎に受け取って、当該所定の単位でデコード処理を実行する。そして、本コンピュータ１０は、動画像ストリームの一部が転送中に欠落したりエラーを発生させたりした場合でも、このアクセラレータに供給すべき所定の単位のデータを効率的に補完することで（アクセラレータがデコード処理を異常終了させてしまうようなことがないように）リカバリできるように工夫したものであり、この点については後述する。
【００２５】
サウスブリッジ１０４は、ＬＰＣ（Low Pin Count）バス上の各デバイスおよびＰＣＩ（Peripheral Component Interconnect）バス上の各デバイスを制御する。また、サウスブリッジ１０４は、ＨＤＤ１０９およびＤＶＤドライブ１１０を制御するためのＩＤＥ（Integrated Drive Electronics）コントローラを内蔵している。さらに、サウスブリッジ１０４は、サウンドコントローラ１０６との通信を実行する機能も有している。
【００２６】
サウンドコントローラ１０６は音源デバイスであり、再生対象のオーディオデータをスピーカ１８Ａ，１８Ｂに出力する。
【００２７】
無線ＬＡＮコントローラ１１１は、たとえばIEEE 802.11規格の無線通信を実行する無線通信デバイスである。IEEE 1394コントローラ１１２は、IEEE 1394規格のシリアルバスを介して外部機器との通信を実行する。
【００２８】
ＥＣ／ＫＢＣ１１３は、電力管理を行うためのエンベデッドコントローラと、キーボード（ＫＢ）１３およびタッチパッド１６を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。このＥＣ／ＫＢＣ１１３は、ユーザによるパワーボタン１４の操作に応じて本コンピュータ１０をパワーオン／パワーオフする機能を有している。さらに、ＥＣ／ＫＢＣ１１３は、リモコンユニットインタフェース部２０との通信を実行する機能を有している。
【００２９】
ＴＶチューナ１１４はテレビジョン放送信号によって放送される放送番組データを受信する受信装置であり、アンテナ端子１９に接続されている。このＴＶチューナ１１４は、例えば、地上波デジタルＴＶ放送のようなデジタル放送番組データを受信可能なデジタルＴＶチューナとして実現されている。また、ＴＶチューナ１１４は、外部機器から入力されるビデオデータをキャプチャする機能も有している。
【００３０】
以上のような構成をもつ本コンピュータ１０上で動作する、放送番組データ（動画像ストリーム）を再生するＴＶアプリケーションプログラム２０２は、図３に示すように、その復号処理を司るソフトウェアデコーダ２０２１が、ＧＰＵ１０５のアクセラレータ１０５１に対して、動画像ストリーム中のデータを所定の単位（後述するストリーム単位またはマクロブロック単位）で供給する。ここで、図４を参照して、このソフトウェアデコーダ２０２１とアクセラレータ１０５１とによる動画像ストリームの復号処理のための協働動作の概要について説明する。
【００３１】
動画像の圧縮符号化の主要な方式であるＭＰＥＧ２規格では、各画像を１６×１６画素のマクロブロックに分割し、このマクロブロック単位に符号化を行う。そして、このマクロブロックを行方向に並べてスライスを構成する。図４は、この各画像（フレーム）、スライス、マクロブロックの関係を示す概念図である。
【００３２】
図４に示すように、各フレームａは、複数のスライスｂに分割され、各スライスｂは、複数のマクロブロックｃから構成される。ＭＰＥＧ２規格に準拠した方式で圧縮符号化された動画像ストリームは、シーケンス層、ＧＯＰ層、ピクチャ層、スライス層、マクロブロック層およびブロック層の６層の階層構造となり、各フレームａ毎にピクチャ層が設けられる。また、各スライスｂ毎に、ピクチャ層の下層としてスライス層が設けられ、各マクロブロックｃ毎に、スライス層の下層としてマクロブロック層が設けられる。例えば３０ｆｐｓの動画像ストリームの場合、ソフトウェアデコーダ２０２１は、ピクチャ層単位の復号処理を、１／３０秒以内に完了させる必要がある。
【００３３】
一方、アクセラレータ１０５１は、この動画像ストリームの復号処理をスライス層単位またはマクロブロック層単位で行う機能を有している。そこで、ソフトウェアデコーダ２０２１は、スライス層またはマクロブロック層以下のデータを順次に渡して、その復号処理をアクセラレータに代行させる。
【００３４】
次に、図５乃至図９を参照して、以上のようにソフトウェアデコーダ２０２１とアクセラレータ１０５１とが協働して動画像ストリームを復号する本コンピュータ１０が、動画像ストリームの一部が転送中に欠落したりエラーを発生させたりした場合に実行するリカバリ処理の基本原理について説明する。
【００３５】
図５および図６は、ソフトウェアデコーダ２０２１が動画像ストリームの復号処理をスライス単位でアクセラレータ１０５１に代行させる場合におけるリカバリ処理を説明するための概念図である。
【００３６】
まず、図５（Ａ）に示すように、あるフレームの４番目のスライス（ｄ１）がエラーを発生させた場合を想定する。図示の例では、スライスの番号を示す値が”４”から”１００”に変化してしまっている。アクセラレータ１０５１に対してスライス層以下のデータを順次に渡していくソフトウェアデコーダ２０２１は、データ供給時に、各スライスの各フレーム内における垂直位置を示す値が適正な値か否かをチェックする。図７は、ＭＰＥＧ２規格に準拠した方式で圧縮符号化された動画像ストリームの構造を示す図であり、前述したように、ＭＰＥＧ２規格に準拠した方式で圧縮符号化された動画像ストリームは、この図７に示すように、シーケンス層（Ａ）、ＧＯＰ層（Ｂ）、ピクチャ層（Ｃ）、スライス層（Ｄ）、マクロブロック層（Ｅ）、ブロック層（Ｆ）の６層の階層構造となっている。各スライスの各フレーム内における垂直位置を示す値は、スライス層（Ｄ）のヘッダ部（ｆ１）に含まれているので、これを参照して、ソフトウェアデコーダ２０２１は、このデータは４番目のスライスとして不適格であることを検出することができる。
【００３７】
また、図５（Ａ）で例示した”１００”という値は、後続のスライスのいずれにおいても適合しない値であるので、ソフトウェアデコーダ２０２１は、このデータはエラーを発生させていると判断して当該データを破棄する。そして、ソフトウェアデコーダ２０２１は、図５（Ｂ）に示すように、４番目のスライスの上段に隣接する、直前にアクセラレータ１０５１に供給した３番目のスライスのヘッダ部（ｆ１）を４番目のスライス用に編集し、この編集後の本来は３番目のスライスのデータで４番目のスライスのデータを補完して（ｄ２）アクセラレータ１０５１に供給する。
【００３８】
次に、図６（Ｂ）に示すように、あるフレームの４番目のスライスが欠落した場合を想定する。この場合、ソフトウェアデコーダ２０２１は、５番目のスライス（ｅ１）のデータに対して４番目のスライスであることを前提としたチェックを行うことになり、スライスの番号を示す値が”４”ではなく”５”であることから、まず、このデータは４番目のスライスとして不適格であることを検出する。また、この”５”という値は、後続のスライスにおいて適合する値であるので、ソフトウェアデコーダ２０２１は、４番目のスライスのデータが欠落したと判断し、当該データを破棄せずに保持しておきながら、前述した上段に隣接するスライスのデータを用いた補完（ｅ２）を行い、続いて、この保持しておいたデータをアクセラレータ１０５１に供給する。
【００３９】
また、図８は、ソフトウェアデコーダ２０２１が動画像ストリームの復号処理をマクロブロック単位でアクセラレータ１０５１に代行させる場合におけるリカバリ処理を説明するための概念図である。
【００４０】
アクセラレータ１０５１に対してマクロブロック層以下のデータを順次に渡していくソフトウェアデコーダ２０２１は、データ供給時に、（動きベクトルなどの）可変長データのハフマン符号化時にテーブルを外れるハフマン符号化テーブルエラーや、スキップマクロブロック値が規格を越える値となるスキップマクロブロックエラー等のエラー有無を検査する。ここでは、図８（Ａ）においてハッチングを施したマクロブロック（ｇ１）についてエラーを検出したものと想定する。
【００４１】
この場合、ソフトウェアデコーダ２０２１は、マクロブロック（ｇ１）と、同一スライス内のすべての後続マクロブロックとのデータを破棄する。そして、ソフトウェアデコーダ２０２１は、図８（Ｂ）に示すように、このデータを破棄したそれぞれのマクロブロックについて、上段に隣接するマクロブロックのデータを用いた補完（ｇ２〜ｇ４）を実行する。この際、ソフトウェアデコーダ２０２１は、図７に示すマクロブロック層（Ｅ）のＭＢＡＩ（マクロブロックアドレスインクリメント：ｆ２）の値が、先行マクロブロックとの間で矛盾しない値となるようにするための編集を行う。このＭＢＡＩには、符号量が殆ど発生しなかったマクロブロック（隣接する部分からの変化が殆どない等）に関する情報を動画像ストリーム内から排除できるようにするために、直前のマクロブロック層に対応するマクロブロックからの相対的な位置を示す値（スキップ数）が格納される。
【００４２】
つまり、本コンピュータ１０は、図９に示すように、あるフレームの例えばあるスライスのデータが欠落し、またはエラーを発生させた場合（図９（Ｂ１）のｈ１）、１つ前のフレームのデータ（図９（Ａ））を用いることなく、同一フレーム内の上段に隣接するスライスのデータを用いた補完を行う（図９（Ｂ２）のｈ２）。つまり、ＶＲＡＭ１０５Ａに格納されているであろう（復号済みの）１つ前のフレームのデータを探し出して取り込むような手間を掛けることがないので、高速性を維持したままのリカバリを実現する。また、同一フレーム内の上段に隣接するスライスのデータを用いるにあたっても、ＶＲＡＭ１０５Ａに格納された復号済みのデータによらず、復号前のデータを編集することによるので、この点においても、高速性の維持が図られることになる。そして、このような部分的な瑕疵を含む動画像ストリームを復号しなければならない状況下においても、スライス単位またはマクロブロック単位といった部分毎に動画像ストリームの復号処理を代行するアクセラレータ１０５１を正常に動作させることを可能とする。
【００４３】
図１０は、動画像ストリームの復号処理をスライス単位でアクセラレータ１０５１に代行させる場合におけるソフトウェアデコーダ２０２１のフレーム単位の動作手順を示すフローチャートである。
【００４４】
ソフトウェアデコーダ２０２１は、アクセラレータ１０５１に渡すスライスの番号を検査し（ステップＡ１）、その値が適正な値か否かを判定する（ステップＡ２）。この値が適正なものであれば（ステップＡ２のＹＥＳ）、ソフトウェアデコーダ２０２１は、そのスライスのデータをアクセラレータ１０５１に供給する（ステップＡ７）。
【００４５】
一方、スライスの番号の値が適正なものでなかった場合（ステップＡ２のＮＯ）、ソフトウェアデコーダ２０２１は、続いて、その値が後続スライスのいずれにおいても適合しない値であるか否かを判定する（ステップＡ３）。そして、その値が後続スライスのいずれにおいても適合しない値であれば（ステップＡ３のＹＥＳ）、ソフトウェアデコーダ２０２１は、当該スライスの上段に隣接する前行のスライスのデータを当該スライス用に編集してアクセラレータ１０５１に供給する（ステップＡ８）。
【００４６】
一方、その値が後続スライスのいずれかにおいて適合する値であった場合（ステップＡ３のＮＯ）、ソフトウェアデコーダ２０２１は、当該スライスの上段に隣接する前行のスライスのデータを当該スライス用に編集してアクセラレータ１０５１に供給した後（ステップＡ４）、その値が次のスライスにおいて適合するか否かを判断し（ステップＡ５，ステップＡ６）、適合したら（ステップＡ６のＹＥＳ）、そのスライスのデータをアクセラレータ１０５１に供給する（ステップＡ７）。また、適合しなければ（ステップＡ６のＮＯ）、ソフトウェアデコーダ２０２１は、ステップＡ４からの処理、即ち、前行のスライスのデータを用いた補完を繰り返す。
【００４７】
アクセラレータ１０５１に対するスライスのデータの供給後、ソフトウェアデコーダ２０２１は、そのスライスがフレーム内の最終スライスであったか否かを判定し（ステップＡ９）、最終スライスでなければ（ステップＡ９のＮＯ）、次のスライスについてステップＡ１からの処理を繰り返し、最終スライスであれば（ステップＡ９のＹＥＳ）、当該フレームについての処理を終了する。
【００４８】
また、図１１は、動画像ストリームの復号処理をマクロブロック単位でアクセラレータ１０５１に代行させる場合におけるソフトウェアデコーダ２０２１のフレーム単位の動作手順を示すフローチャートである。
【００４９】
ソフトウェアデコーダ２０２１は、アクセラレータ１０５１に渡すマクロブロックについて、ハフマン符号化テーブルエラーやスキップマクロブロックエラー等のエラー有無を検査する（ステップＢ１）。エラーが検出されなければ（ステップＢ２のＮＯ）、ソフトウェアデコーダ２０２１は、そのマクロブロックのデータをアクセラレータ１０５１に供給する（ステップＢ６）。
【００５０】
一方、エラーが検出された場合（ステップＢ２のＹＥＳ）、ソフトウェアデコーダ２０２１は、そのマクロブロックが存在するスライスの上段に隣接する前行のスライス内において当該マクロブロックに対応する位置のマクロブロックのデータを当該マクロブロック用に編集してアクセラレータ１０５１に供給する（ステップＢ３）。
【００５１】
この補完を行った場合、ソフトウェアデコーダ２０２１は、そのマクロブロックがスライス内の最終マクロブロックであったか否かを判定し（ステップＢ４）、最終マクロブロックでなければ（ステップＢ４のＮＯ）、後続マクロブロックすべてについて（ステップＢ５）、ステップＢ４からの処理、即ち、前行のスライス内において当該マクロブロックに対応する位置のマクロブロックのデータを用いた補完を繰り返す。
【００５２】
アクセラレータ１０５１に対するマクロブロックのデータの供給後、ソフトウェアデコーダ２０２１は、そのマクロブロックがフレーム内の最終マクロブロックであったか否かを判定し（ステップＢ７）、最終マクロブロックでなければ（ステップＢ７のＮＯ）、次のマクロブロックについてステップＢ１からの処理を繰り返し、最終マクロブロックであれば（ステップＢ７のＹＥＳ）、当該フレームについての処理を終了する。
【００５３】
このように、本コンピュータ１０においては、ソフトウェアデコーダ２０２１が動画像ストリームの復号処理の一部をアクセラレータ１０５１に代行させる場合におけるリカバリ処理を実現することができる。
【００５４】
ところで、以上では、ソフトウェアデコーダ２０２１が動画像ストリームの復号処理をマクロブロック単位でアクセラレータ１０５１に代行させる場合におけるリカバリ処理として、エラーを検出したマクロブロックのデータを上段のマクロブロックのデータを用いて補完する例を説明したが、この手法を、ソフトウェアデコーダ２０２１が動画像ストリームの復号処理をスライス単位でアクセラレータ１０５１に代行させる場合におけるリカバリ処理として組み合わせることも当然に可能である。
【００５５】
より具体的に説明すると、スライス番号が不適合であった場合、その時点で上段のスライスのデータを用いた補完を実行し、スライス番号が適合する場合には、続いて、各マクロブロックについてエラー有無を検査する。そして、エラーが検知された場合、そのマクロブロックおよび後続のマクロブロックを上段のマクロブロックのデータを用いて置き換えたスライスのデータを生成して、この部分的な置き換えが施されたスライスのデータをアクセラレータ１０５１に供給するようにする。
【００５６】
このように、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００５７】
【図１】本発明の一実施形態に係る情報処理装置の概観の例を示す斜視図
【図２】同実施形態の情報処理装置のシステム構成の例を示すブロック図
【図３】同実施形態の情報処理装置上で動作するＴＶアプリケーションプログラムのソフトウェアデコーダとＧＰＵのアクセラレータとの関係を示す概念図
【図４】ＭＰＥＧ２規格に準拠した方式で圧縮符号化された動画像ストリームにおけるフレーム、スライス、マクロブロックの関係を示す概念図
【図５】同実施形態の情報処理装置で実行される、ソフトウェアデコーダが動画像ストリームの復号処理をスライス単位でアクセラレータに代行させる場合におけるリカバリ処理を説明するための第１の概念図
【図６】同実施形態の情報処理装置で実行される、ソフトウェアデコーダが動画像ストリームの復号処理をスライス単位でアクセラレータに代行させる場合におけるリカバリ処理を説明するための第２の概念図
【図７】ＭＰＥＧ２規格に準拠した方式で圧縮符号化された動画像ストリームの構造を示す図
【図８】同実施形態の情報処理装置で実行される、ソフトウェアデコーダが動画像ストリームの復号処理をマクロブロック単位でアクセラレータに代行させる場合におけるリカバリ処理を説明するための概念図
【図９】同実施形態の情報処理装置で実行される動画像ストリームの復号時におけるリカバリ処理の基本原理を表した概念図
【図１０】同実施形態の情報処理装置で実行される、動画像ストリームの復号処理をスライス単位でアクセラレータに代行させる場合におけるソフトウェアデコーダのフレーム単位の動作手順を示すフローチャート
【図１１】同実施形態の情報処理装置で実行される、動画像ストリームの復号処理をマクロブロック単位でアクセラレータに代行させる場合におけるソフトウェアデコーダのフレーム単位の動作手順を示すフローチャート
【符号の説明】
【００５８】
１０…情報処理装置（パーソナルコンピュータ）、１１…コンピュータ本体、１２…ディスプレイユニット、１３…キーボード（ＫＢ）、１４…パワーボタン、１５…入力操作パネル、１６…タッチパッド、１７…ＬＣＤ、１８Ａ，１８Ｂ…スピーカ、１９…アンテナ端子、２０…リモコンユニットインタフェース部、１０１…ＣＰＵ、１０２…ノースブリッジ、１０３…主メモリ、１０４…サウスブリッジ、１０５…グラフィクスプロセシングユニット（ＧＰＵ）、１０５Ａ…ビデオメモリ、１０６…サウンドコントローラ、１０７…ＢＩＯＳ−ＲＯＭ、１０８…ＬＡＮコントローラ、１０９…ハードディスクドライブ（ＨＤＤ）、１１０…ＤＶＤドライブ、１１１…無線ＬＡＮコントローラ、１１２…IEEE 1394コントローラ、１１３…エンベデッド／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）、１１４…ＴＶチューナ、１１５…ＥＥＰＲＯＭ、２０１…オペレーティングシステム（ＯＳ）、２０２…ＴＶアプリケーションプログラム、１０５１…アクセラレータ、２０２１…ソフトウェアデコーダ。
【図１】
0004519929.tif 000002
【図２】
0004519929.tif 000003
【図３】
0004519929.tif 000004
【図４】
0004519929.tif 000005
【図５】
0004519929.tif 000006
【図６】
0004519929.tif 000007
【図７】
0004519929.tif 000008
【図８】
0004519929.tif 000009
【図９】
0004519929.tif 000010
【図１０】
0004519929.tif 000011
【図１１】
0004519929.tif 000012