(57)【要約】  現行スレッドおよび参照スレッドを並列に実行する同期制御部と、現行スレッドが第１同期点に達したときに参照スレッドが第２同期点に達していない場合に参照スレッドが第２同期点に到達するまでの所要時間を現行スレッドの待機時間として求める待機時間計算部と、現行スレッドが参照スレッドの第２同期点での処理データを参照して生成するデータと現行スレッドが当該処理データを参照せずに生成するデータとの間の品質差分を推定する品質差分計算部と、待機時間および品質差分の大きさに応じて現行スレッドを参照スレッドが第２同期点に達するまで待機させるか否かを判定する同期判定部とを備える。
2009090964.tif 000002
【特許請求の範囲】
【請求項１】
現行スレッドと、当該現行スレッドによりデータが参照される参照スレッドとを並列に実行し、
前記現行スレッドが第１の同期点に達したとき、前記参照スレッドが第２の同期点に達したか否かを判別し、
前記判別が否の場合、前記参照スレッドが前記第２の同期点に到達するまでの所要時間を前記現行スレッドの待機時間として求め、
前記現行スレッドが前記参照スレッドの前記第２の同期点での処理データを参照して生成するデータと、前記現行スレッドが前記処理データを参照せずに生成するデータとの間の品質差分を推定し、
前記待機時間および品質差分の大きさに応じて、前記現行スレッドを前記参照スレッドが前記第２の同期点に達するまで待機させるか否かを判定することを特徴とする同期制御方法。
【請求項２】
前記品質差分が上限を下回る場合、前記現行スレッドを待機させないと判定することを特徴とする請求項１記載の同期制御方法。
【請求項３】
さらに、前記待機時間が上限を超える場合は前記現行スレッドを待機させないと判定し、当該待機時間が上限を下回る場合は前記現行スレッドを待機させると判定する請求項２記載の同期制御方法。
【請求項４】
前記品質差分が上限を超える場合は前記待機時間に所定値を加算したタイムアウト値を設定し、前記品質差分が上限を下回る場合は前記待機時間から所定値を減算したタイムアウト値を設定し、
前記設定したタイムアウト値の満了まで前記現行スレッドを待機させると判定することを特徴とする請求項１記載の同期制御方法。
【請求項５】
さらに、前記現行スレッドの待機中に前記待機時間を再計算し、
前記再計算の結果を用いて前記参照スレッドの遅延の有無を判定し、
前記参照スレッドが遅延していると判定した場合、前記現行スレッドの待機を中止することを特徴とする請求項１乃至４のいずれか１項に記載の同期制御方法。
【請求項６】
前記現行スレッドおよび前記参照スレッドが画像フレームに対する画像処理であることを特徴とする請求項１乃至５のいずれか１項に記載の同期制御方法。
【請求項７】
前記現行スレッドおよび前記参照スレッドが、同一の画像フレーム内の異なる画像ブロックに対するデブロッキングフィルタ処理であることを特徴とする請求項６記載の同期制御方法。
【請求項８】
前記現行スレッドおよび前記参照スレッドが、同一の画像フレーム内の異なる画像ブロックに対するイントラ予測処理であることを特徴とする請求項６記載の同期制御方法。
【請求項９】
前記現行スレッドが画像ブロックに対する動き予測処理であり、前記参照スレッドが当該画像ブロックに対するデブロッキングフィルタ処理であることを特徴とする請求項６記載の同期制御方法。
【請求項１０】
前記現行スレッドが画像フレームにおける動き予測処理であり、
前記参照スレッドが、前記動き予測処理における動きベクトルが探索される画像フレームの参照画像を作成する処理であることを特徴とする請求項６記載の同期制御方法。
【請求項１１】
さらに、前記待機時間および前記品質差分について、それぞれをＮ段階で評価するための評価値を求め、
前記各評価値を用いて前記現行スレッドの待機に関する前記判定を行うことを特徴とする請求項１乃至１０のいずれか１項に記載の同期制御方法。
【請求項１２】
前記処理データを参照せずに生成する前記データは、前記参照スレッドの現時点でのデータを参照して生成したデータであることを特徴とする請求項１乃至１１のいずれか１項に記載の同期制御方法。
【請求項１３】
前記処理データを参照せずに生成する前記データは、前記参照スレッドによる処理済みのデータを参照して生成したデータであることを特徴とする請求項１乃至１１のいずれか１項に記載の同期制御方法。
【請求項１４】
現行スレッドと該現行スレッドによりデータが参照される参照スレッドとを並列に実行する同期制御部と、
前記現行スレッドが第１の同期点に達したときに前記参照スレッドが第２の同期点に達していない場合、前記参照スレッドが前記第２の同期点に到達するまでの所要時間を前記現行スレッドの待機時間として求める待機時間計算部と、
前記現行スレッドが前記参照スレッドの前記第２の同期点での処理データを参照して生成するデータと、前記現行スレッドが前記処理データを参照せずに生成するデータとの間の品質差分を推定する品質差分計算部と、
前記待機時間および品質差分の大きさに応じて、前記現行スレッドを前記参照スレッドが前記第２の同期点に達するまで待機させるか否かを判定する同期判定部とを備えることを特徴とする情報処理装置。
【請求項１５】
前記同期判定部は、前記品質差分が上限を下回る場合、前記現行スレッドを待機させないと判定することを特徴とする請求項１４記載の情報処理装置。
【請求項１６】
前記同期判定部は、さらに、前記待機時間が上限を超える場合は前記現行スレッドを待機させないと判定し、当該待機時間が上限を下回る場合は前記現行スレッドを待機させると判定する請求項１５記載の情報処理装置。
【請求項１７】
前記同期判定部は、前記品質差分が上限を超える場合は前記待機時間に所定値を加算したタイムアウト値を設定し、前記品質差分が上限を下回る場合は前記待機時間から所定値を減算したタイムアウト値を設定し、前記設定したタイムアウト値の満了まで前記現行スレッドを待機させると判定することを特徴とする請求項１４記載の情報処理装置。
【請求項１８】
前記待機時間計算部は、さらに、前記現行スレッドの待機中に前記待機時間を再計算し、
前記同期判定部は、前記再計算の結果を用いて前記参照スレッドの遅延の有無を判定し、前記参照スレッドが遅延していると判定した場合、前記現行スレッドの待機を中止することを特徴とする請求項１４乃至１７のいずれか１項に記載の情報処理装置。
【請求項１９】
前記現行スレッドおよび前記参照スレッドが画像フレームに対する画像処理であることを特徴とする請求項１４乃至１８のいずれか１項に記載の情報処理装置。
【請求項２０】
前記現行スレッドおよび前記参照スレッドが、同一の画像フレーム内の異なる画像ブロックに対するデブロッキングフィルタ処理であることを特徴とする請求項１９記載の情報処理装置。
【請求項２１】
前記現行スレッドおよび前記参照スレッドが、同一の画像フレーム内の異なる画像ブロックに対するイントラ予測処理であることを特徴とする請求項１９記載の情報処理装置。
【請求項２２】
前記現行スレッドが画像ブロックに対する動き予測処理であり、前記参照スレッドが当該画像ブロックに対するデブロッキングフィルタ処理であることを特徴とする請求項１９記載の情報処理装置。
【請求項２３】
前記現行スレッドが画像フレームにおける動き予測処理であり、
前記参照スレッドが、前記動き予測処理における動きベクトルが探索される画像フレームの参照画像を作成する処理であることを特徴とする請求項１９記載の情報処理装置。
【請求項２４】
前記同期判定部は、さらに、前記待機時間および前記品質差分について、それぞれをＮ段階で評価するための評価値を求め、前記各評価値を用いて前記現行スレッドの待機に関する前記判定を行うことを特徴とする請求項１４乃至２３のいずれか１項に記載の情報処理装置。
【請求項２５】
コンピュータを請求項１４乃至２４のいずれか１項に記載の情報処理装置として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のスレッドを並列処理する際の同期制御に関する。
【背景技術】
【０００２】
情報処理装置にて１つのアプリケーションに対応したプロセスを実行する手法として、そのプロセスの複数のスレッド（単位処理）を並列的に実行するマルチスレッドと称されるものがある。【０００３】
マルチスレッドでは、複数のスレッドのうち関連するスレッド同士を同期させるようプログラムが設計される。これにより、プロセスを効率よく実行することができる。かかるマルチスレッドに関する技術は、例えば、後述の特許文献１に記載されている。
【特許文献１】特開平１０−１８７４６５号公報
【非特許文献１】ITU-T Recommendation H.264, Advanced Video Coding for Generic Audiovisual Services, Mar. 2003
【非特許文献２】K.-P. Lim, G. Sullivan, T. Wiegand, Text description of joint model reference encoding methods and decoding concealment methods, Joint Video Team of ISO/IEC MPEG and ITU-T VCEG Document, JVT-X101, Geneva, June. 2007
【非特許文献３】森吉達治，宮崎孝著、“ソフトウェアH.264エンコーダの並列化”、D-11-33、電子情報通信学会総合大会、RM-9310，２００６年
【発明の開示】
【発明が解決しようとする課題】
【０００４】
マルチスレッドによれば、前述したように、スレッドの並列処理によりプロセス全体の効率化が図られる。しかしながら、他のスレッドとの同期を伴うスレッドの場合、処理時間が規定より長引く可能性がある。その一例を以下に挙げる。【０００５】
いま、並列処理される２つのスレッドＡ,Ｂがあり、そのうちのスレッドＡが、このスレッドの同期点ａにおいて、他方のスレッドＢにおける同期点ｂでのデータを参照することを想定する。かかる想定において、スレッドＡが先に同期点ａに到着した、すなわち、スレッドＡの同期点ａまでの処理がスレッドＢの同期点ｂまでの処理よりも先に完了したとする。この場合、スレッドＡは、スレッドＢが同期点ｂに到着するまで待機することになるが、スレッドＢの進行が遅れるほど、スレッドＡの待機時間が長引く。その結果、プロセス全体の処理時間が長引く。【０００６】
一方で、処理時間の長期化を防止するために、例えば、前述の特許文献１で採用されているようなタイマを事前に設定することが考えられる。しかしながら、上記の例において、スレッドＡがタイマ満了を待って処理を再開しても、このスレッドＡから適切な処理結果が得られるとは限らない。なぜなら、タイマ満了の時点でスレッドＢから参照するデータが、スレッドＡにとって有益かどうかは不明だからである。適切な処理結果が得られない場合、スレッドＡによる待機は、結果的に無駄なものとなる。【０００７】
そこで、本発明の目的は、マルチスレッドにおいてスレッドの並列処理を効率よく行うための同期制御方法および情報処理装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明に係る同期制御方法は、現行スレッドと、当該現行スレッドによりデータが参照される参照スレッドとを並列に実行し、前記現行スレッドが第１の同期点に達したとき、前記参照スレッドが第２の同期点に達したか否かを判別し、前記判別が否の場合、前記参照スレッドが前記第２の同期点に到達するまでの所要時間を前記現行スレッドの待機時間として求め、前記現行スレッドが前記参照スレッドの前記第２の同期点での処理データを参照して生成するデータと、前記現行スレッドが前記処理データを参照せずに生成するデータとの間の品質差分を推定し、前記待機時間および品質差分の大きさに応じて、前記現行スレッドを前記参照スレッドが前記第２の同期点に達するまで待機させるか否かを判定するという方法である。【０００９】
本発明に係る情報処理装置は、現行スレッドと該現行スレッドによりデータが参照される参照スレッドとを並列に実行する同期制御部と、前記現行スレッドが第１の同期点に達したときに前記参照スレッドが第２の同期点に達していない場合、前記参照スレッドが前記第２の同期点に到達するまでの所要時間を前記現行スレッドの待機時間として求める待機時間計算部と、前記現行スレッドが前記参照スレッドの前記第２の同期点での処理データを参照して生成するデータと、前記現行スレッドが前記処理データを参照せずに生成するデータとの間の品質差分を推定する品質差分計算部と、前記待機時間および品質差分の大きさに応じて、前記現行スレッドを前記参照スレッドが前記第２の同期点に達するまで待機させるか否かを判定する同期判定部とを備える。
【発明の効果】
【００１０】
本発明によれば、マルチスレッドにおいてスレッドの並列処理を効率よく行うことが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１実施形態における情報処理装置の構成を示すブロック図である。
【図２】本発明の第１実施形態におけるスレッドの並列処理に関する説明図である。
【図３】本発明の第１実施形態の動作に関するフローチャートである。
【図４】本発明の第１実施形態における同期判定に関する説明図である。
【図５】本発明の第１実施形態の変形例に関するフローチャートである。
【図６】本発明の第２実施形態の動作に関するフローチャートである。
【図７】本発明の第３実施形態の動作に関するフローチャートである。
【図８】本発明の第４実施形態に関する説明図である。
【図９】本発明の第４実施形態における待機時間の評価値に関する説明図である。
【図１０】本発明の第４実施形態におけるスレッドの並列処理に関する説明図である。
【図１１】本発明の第４実施形態の具体例に関する説明図である。
【符号の説明】
【００１２】
400  情報処理装置
401  現行スレッド
402  参照スレッド
403  同期制御部
404  待機時間計算部
405  同期判定部
406  品質差分計算部
【発明を実施するための最良の形態】
【００１３】
《第１の実施形態》
図１に、本発明の第１実施形態の情報処理装置400を示す。情報処理装置400は、現行スレッド401、参照スレッド402、同期制御部403、待機時間計算部404、同期判定部405、及び、品質差分計算部406を備える。情報処理装置400は、マルチスレッド対応のコンピュータであり、現行スレッド401及び参照スレッド402を並列に実行する。【００１４】
現行スレッド401は、参照スレッド402の処理結果や処理対象のデータなど、参照スレッド402が取り扱うデータを参照して処理を進める。また、現行スレッド401には同期点Ａ、参照スレッド402には同期点Ｂが、それぞれ設定されている。同期点Ａは、本発明における第１の同期点に対応し、同期点Ｂは第２の同期点に対応する。【００１５】
待機時間計算部404は、現行スレッド401が同期点Ａに達したときに参照スレッド402が同期点Ｂに達していない場合に、参照スレッド402が同期点Ｂに達するまでの現行スレッド401の待機時間を計算する。待機時間は、例えば、参照スレッド402における同期点Ｂまでの残りの処理ブロック数と、そのブロック１つあたりの処理の所要時間との積から求めることができる。【００１６】
品質差分計算部406は、同期点Ａに達した現行スレッド401が参照スレッド402の同期点Ｂでのデータを参照した場合のデータと、現行スレッド401が現時点の参照スレッド402のデータを参照した場合のデータとの品質差分を推定する。品質差分は、現行スレッド401の進行状況や、各スレッドが処理するブロックの制御パラメータ、処理ブロック間の関係などに依存する。例えば、現行スレッド401において、参照スレッド402の同期点Ｂでのデータなしでは良好な処理結果が得られない場合、品質差分は大きくなる。逆に、そのデータがなくても現行スレッド401から良好な処理結果が得られる場合は、品質差分は小さい。【００１７】
同期判定部405は、待機時間計算部404にて計算された待機時間と、品質差分計算部406にて推定された品質差分とに基づいて、現行スレッド401を、参照スレッド402との同期のために待機させるかどうかを決定する。【００１８】
同期制御部403は、同期判定部405による決定に従って、現行スレッド401の進行を制御する。すなわち、同期判定部405が同期を行うと決定した場合、参照スレッド402が所定の同期点に達するまで、現行スレッド401を待機させる。また、同期判定部405が同期を行わないと決定した場合は、現行スレッド401を待機させずに処理を続行させる。【００１９】
図２に、現行スレッド401と参照スレッド402との同期の様子を模式的に示す。現行スレッド401が同期点Ａ421に達したときに同期をとると判定された場合、参照スレッド402が同期点Ｂ421に達するまで、現行スレッド401を待機させる。【００２０】
図２において、同期点Ａ421から同期点Ｂ421までの参照スレッド402の所要時間が、待機時間431に相当する。参照スレッド402が同期点Ｂ421に達すると、その時点のデータ441を参照して現行スレッド401が処理を再開させる。このデータ441は、本発明における第１の同期点での処理データに対応するものである。【００２１】
図３に示すフローチャートと、図１及び図２に沿って、本実施形態の動作を説明する。同期制御部403は、参照スレッド402と並列で実行されている現行スレッド401が同期点Ａ421に達すると（ステップS101）、他方の参照スレッド402が同期点Ｂ422に達したか否かを確認する。参照スレッド402が同期点Ｂ422に達している場合（ステップS102：Yes）、この同期点Ｂ422でのデータ411を参照して処理を継続するよう現行スレッド401を制御する（ステップS107）。【００２２】
一方、参照スレッド402が同期点Ｂ422に達していない場合は（ステップS102：No）、待機時間計算部404が、参照スレッド402が同期点Ｂ421に到達するまでの時間、すなわち待機時間431を算出する（ステップS103）。前述したように、同期点Ａ421から同期点Ｂ421までの時間差が待機時間431に相当する。【００２３】
品質差分計算部406は、現行スレッド401が参照スレッド402の同期点Ｂ422でのデータ441を参照して生成するデータと、現行スレッド401が参照スレッド402の現時点のデータを参照して生成するデータとの品質差分を推定する（ステップS104）。【００２４】
同期判定部405は、品質差分計算部406により推定された品質差分を、予め設定されている上限と比較する。比較の結果、品質差分が上限を超える場合（ステップS105：Yes）、同期を行う、すなわち参照スレッド402が同期点Ｂ422に達するまで現行スレッド401を待機させると判定する（ステップS106）。これは即ち、品質差分が比較的大きいので、現行スレッド401による同期点Ａ421以降の処理品質を劣化させないためには、データ441の参照が必要であるとの判定である（判定I）。【００２５】
同期制御部403は、上記判定を認識すると、参照スレッド402が同期点Ｂ422に達するまで、現行スレッド401の実行を中断させる。その後、参照スレッド402からデータ441が得られると、このデータ441を参照して処理を再開させるよう現行スレッド401を制御する（ステップS107）。【００２６】
一方、推定された品質差分が上限を下回る場合（ステップS105：No）、同期判定部405は、待機時間計算部404により算出された待機時間431を、予め設定されている上限と比較する。比較の結果、待機時間431が上限を下回る場合（ステップS107：No）、現行スレッド401を待機させると判定する（ステップS106）。これは即ち、品質差分が小さいので現行スレッド401にデータ441の参照は必須ではないが、参照スレッド402が間もなく同期点Ｂ422に達するので、現行スレッド401を待機させるという判定である（判定II）。【００２７】
また、待機時間が上限を超える場合（ステップS107：Yes）、同期判定部405は、現行スレッド401を待機させないと判定する（ステップS109）。これは即ち、現行スレッド401にデータ441の参照は必須ではないので、長い待機時間431を省略して処理を続行させるという判定である（判定III）。この判定を認識した同期制御部403は、参照スレッド402の現時点のデータを参照して現行スレッド401を続行させるよう制御する（ステップS110）。【００２８】
図４に、上記の判定I，II，IIIについての具体例を示す。図示のグラフは、現行スレッド401における４つの同期点461,462,463,464で得られた待機時間（431）及び品質差分の度合いを示すものである。待機時間閾値451及び品質差分閾値452は、待機時間及び品質差分に関する前述の上限に対応する。【００２９】
同期点461及び462では、いずれも品質差分が上限を超えることから、上記判定Iに基づき現行スレッド401を待機させる。また、同期点463では、品質差分が上限を超えないものの、待機時間が短いことから、上記判定IIに基づき現行スレッド401を待機させる。これらのケースにおいて、現行スレッド401は、待機後、同期点Ｂ422でのデータ441を参照した処理により、良好な品質のデータを生成することができる。【００３０】
一方、同期点464では、品質差分が小さいにもかかわらず、待機時間が長い。この場合は、上記判定IIIにより、現行スレッド401を待機させずに続行させる。これにより、現行スレッド401が参照スレッド402の現時点のデータを参照して処理を進めることになるが、事前に推定された品質差分が小さいことから、処理結果のデータ品質が著しく劣化することはない。かかる制御により、参照スレッド402との同期を要因とした現行スレッド401の処理遅延を防止することができる。【００３１】
なお、同期判定部405による判定は、品質差分のみに基づくものであってもよい。この場合、情報処理装置400から待機時間計算部404を省略することができる。かかる判定の手順を図５に示す。ステップS1051，S1061，S1071は、図３のステップS105，S106，S107と同様である。すなわち、品質差分が上限を超える場合は、現行スレッド401を待機させる。【００３２】
図５の制御では、同期判定部405は、品質差分が小さいことを以て（ステップS1051：No）、現行スレッド401を待機させないと判定する（ステップS1091）。これにより、現行スレッド401が、参照スレッド402の現時点のデータをもとに処理を続行する（ステップS1101）。図４に示す同期点463は、図３の制御では現行スレッド401を待機させると判定されたが（判定II）、図５の制御では、待機させないと判定される（判定II´）。よって、図５の手順は、現行スレッド401の遅延防止を重視する用途に好適である。【００３３】
なお、上記説明では、現行スレッド401が、参照スレッド402を待機しない場合、参照スレッド402の現時点のデータを参照したが、この形態に限らず、例えば、参照スレッド402により既に処理されたデータや、予め用意されたデータを参照するようにしてもよい。【００３４】
《第２の実施形態》
本発明の第２の実施形態を説明する。本実施形態の情報処理装置400の構成は、基本的には前述の実施形態のもの（図１）と同様である。前述の実施形態との差異は、同期判定部405の動作にある。本実施形態の同期判定部405は、待機時間計算部404が算出した待機時間を、品質差分の大きさに応じて短縮あるいは延長する。そして、調整した値を現行スレッド401の待機時間に適用する。以下、調整後の待機時間をタイムアウト値と記す。【００３５】
図６に示すフローチャートと、図１及び図２に沿って、本実施形態の動作を説明する。現行スレッド401が同期点Ａ421に達したとき、前述の実施形態におけるステップS101〜S104と同様な処理を行う（ステップS201）。すなわち、現時点で参照スレッド402が同期点Ｂ422に達していない場合、待機時間および品質差分が推定される。【００３６】
同期判定部405は、推定された品質差分が上限を超える場合（ステップS202：Yes）、待機時間Ｔに所定値α（α＞０）を加算し、それをタイムアウト値として設定する（ステップS203）。同期制御部403は、このタイムアウト値（Ｔ＋α）が満了するまで現行スレッド401を待機させる（ステップS204）。その後、前述の実施形態でのステップS107と同様にして、参照スレッド402のデータ441を用いて現行スレッド401を再開させる（ステップS205）。【００３７】
一方、品質差分が上限を下回る場合（ステップS202：No）、同期判定部405は、待機時間Ｔに所定値β（０＜β＜Ｔ）を減算し、それをタイムアウト値として設定する（ステップS206）。タイムアウト値（Ｔ−β）がゼロより大きい場合は（ステップS202：No）は、タイムアウトするまで現行スレッド401を待機させる（ステップS204）。【００３８】
また、タイムアウト値（Ｔ−β）がゼロの場合（ステップS207：Yes）、同期判定部405は、現行スレッド401を待機させないと判定する（ステップS208）。この場合、同期制御部403が、前述の実施形態でのステップS110と同様にして、現行スレッド401を待機させずに続行させる（ステップS209）。【００３９】
本実施形態によれば、品質差分が大きい場合に待機時間を延長することから、現行スレッド401が同期点Ｂ422でのデータ441を確実に捉えることができる。これは、例えば、何らかの原因で参照スレッド402が遅延している場合に有益である。また、品質差分が小さい場合は、待機時間を短縮するよう微調整することができる。これにより、現行スレッド401の処理が長期化することを防止できる。また、現行スレッド401が、同期点Ａ421から同期点Ｂ422までに参照スレッド402で処理されたデータを参照して処理することができる。【００４０】
《第３の実施形態》
本発明の第３の実施形態を説明する。本実施形態の情報処理装置400の構成は、基本的には前述の実施形態のもの（図１）と同様である。本実施形態は、待機時間計算部404が、現行スレッド401の待機中に待機時間の再計算を行う点が第１実施形態と相違する。【００４１】
図７に示すフローチャートと、図１及び図２に沿って、本実施形態の動作を説明する。ここでは、同期判定部405が現行スレッド401を待機させると判定したステップ（図３：ステップS106，図５：ステップS1061）以降を説明する。【００４２】
現行スレッド401の待機中（ステップS301）、待機時間計算部404は、待機時間を再計算する（ステップS302）。この再計算により得られる値は、同期点Ａ421から所定時間が経過した時点において、参照スレッド402が同期点Ｂ422に達するまでの所要時間に相当する。よって、同期点Ａ421以降、参照スレッド402の進行に遅延がない場合、再計算による待機時間ＴＲは、次式（１）で表すことができる。ここで、「Ｔ０」は同期点Ａ421で算出された待機時間431であり、「ＴＰ」は、その同期点Ａ421からの経過時間を表す。【００４３】
ＴＲ＝Ｔ０−ＴＰ  …（１）【００４４】
再計算値ＴＲが算出されると、同期判定部405は、参照スレッド402の進行が遅延しているかどうかを確認する。これは、次式（２）及び（３）を用いて判定することができる。【００４５】
ＴＲ≦Ｔ０−ＴＰ  …（２）
ＴＲ＞Ｔ０−ＴＰ  …（３）【００４６】
同期判定部405は、ゼロ以上の値を持つ再計算値ＴＲが上記式（２）を満たす場合、参照スレッド402が遅延せずに進行していると判断する（ステップS303：No，S304：No）。この場合は、そのまま現行スレッド401を待機しつつ、所定期間ごとに再計算を行う（ステップS301,S302）。そして、再計算値ＴＲがゼロになったら（ステップS303：Yes）、同期点Ｂ422のデータ441を参照して現行スレッド401を再開させる（ステップS305）。この処理は、前述の第１の実施形態におけるステップS107（図３）と同様である。【００４７】
一方、再計算値ＴＲが上記式（３）を満たす場合、同期判定部405は、参照スレッド402に遅延が発生していると判断する（ステップS304：Yes）。この場合、現行スレッド401の再開が遅れることを防ぐために待機を中止し（ステップS306）、参照スレッド402の現時点のデータを参照して現行スレッド401を再開させる（ステップS307）。この再開時の動作は、前述の第１の実施形態におけるステップS110（図３）と同様である。【００４８】
このように、本実施形態によれば、割り込み処理のような予期しない事象が発生して参照スレッド402の進行が遅延している状況であっても、待機中の現行スレッド401の再開が遅れることを防止できる。【００４９】
《第４の実施形態》
本発明の第４の実施形態を説明する。本実施形態の情報処理装置400の構成は、基本的には前述の実施形態のもの（図１）と同様である。本実施形態は、情報処理装置400が画像処理に関するスレッドを実行することを想定したものである。【００５０】
図８に、情報処理装置400にて処理される画像フレームを示す。処理対象の画像は、連続するｎ個の画像フレーム（第１フレーム610-1〜第ｎフレーム610-n）から構成される。各フレーム610-1〜610-nは、ｍ個のブロック611-1〜611-mに分割されている。フレーム内の各ブロック（611-1〜611-m）は、複数のスレッドの何れかに割り当てられて処理される。例えば、フレームを複数の領域に分割し、分割した領域単位でスレッドに割り当てることができる。【００５１】
図９に、フレームの分割の一例を示す。図示の例では、フレームの走査方向に沿って、すなわちフレームの横方向に沿ってフレームを一列ずつ分割して、上方から順に第１分割領域631及び第２分割領域632が形成されている。そして、第１分割領域631に参照スレッド（402）、第２分割領域632に現行スレッド（401）がそれぞれ割り当てられている。この割り当ては、第２分割領域632を、第１分割領域631の処理結果を参照しながら処理することを意図したものである。【００５２】
本実施形態の動作には、上記の各実施形態の手順（図３，図５〜図７）を適用することができる。待機時間計算部404は、例えば、現行スレッド401で処理中のブロックと、参照スレッド402で処理中のブロックとの番号又は位置を基に、待機時間を計算することができる。品質差分計算部406は、例えば、処理中のブロックの空間的な位置や、前フレームまでの同期制御状況をもとに、品質差分を計算することができる。【００５３】
本実施形態における同期判定部405の動作例を説明する。待機時間及び品質差分をＮ段階（Ｎは２以上の整数）で評価することを考える。品質差分については、品質差分が最も大きいときを「Ｎ」とし、最も小さいときを「１」と評価する。待機時間については、最も長いときを「Ｎ」とし、最も短いときを「１」と評価する。【００５４】
同期判定部405は、例えば、待機時間の評価が品質差分の評価を超えないときに、同期を取る、すなわち現行スレッド401を待機させると判断する。具体的には、待機時間の評価値が「２」で、品質差分の評価値が「１」であれば、同期を行わないと判断する。また、待機時間の評価値が「４」で、品質差分の評価値が「５」のときは、同期を行うと決定する。かかる制御により、画像品質の低下を抑制しつつ、全体の処理時間の増加を回避することができる。【００５５】
なお、待機時間の評価は、処理の進行状況やユーザーからの指示に応じて、オフセット値を適宜加えることができる。これにより、同期の判断を柔軟に制御することができる。【００５６】
ところで、リアルタイム動画処理などでは、画像処理に制限時間が設けられている。例えば、１秒間に３０枚の画像フレームを生成する場合は、１枚につき1/30秒以内にデコード処理する必要がある。処理時間に余裕があるときは、待機時間が多少長くても問題にはならない。しかし、処理時間に余裕がないときは、短い待機時間でも問題となる。従って、待機時間の評価は、絶対的な待機時間の値によって行うのではなく、制限時間との兼ね合いで評価することが好ましい。【００５７】
制限時間を用いた待機時間の評価手法の例を挙げる。まず、フレーム処理の制限時間からスレッドの制限時間を求める。例えば、１フレームが５×２個のブロックを有し、それらを２つのスレッドで５ブロックずつ並列処理する場合、各スレッドの制限時間はフレームの制限時間と同じである。次いで、スレッドの制限時間から、現在ブロックまでの経過時間を差し引いて、残り時間を算出する。そして、残り時間を、残りのブロック数で割って、１ブロックの制限時間、すなわち、残りブロックの処理に使える処理時間を計算する。例えば、１スレッドで５つのブロックを処理する場合、３つめブロックまで処理を終えていれば、残り時間を、残り処理ブロック数「２」で割った値が、１ブロック分の制限時間となる。【００５８】
一方、待機時間の計算では、現在までの経過時間と、処理済みブロック数とから、参照スレッド402における１ブロックあたりの処理時間を計算する。そして、算出した処理時間に、現行スレッド401が待機すべきブロック数を掛けた時間が、現行スレッド401の待機時間となる。例えば、参照スレッド402が同期点Ｂ422に達するまでにあと２ブロック残っている場合、１ブロックあたりの処理時間の２倍が、現行スレッド401の待機時間となる。このように求めた待機時間を評価する際は、その待機時間と、１ブロック分の制限時間（１ブロックあたりの処理時間）とを比較する。【００５９】
図９に、待機時間の評価値の設定例を示す。図示の例は、待機時間を５段階で評価することを想定したものである。待機時間と１ブロックの制限時間とが同等のときの評価値を「３」とする。また、待機時間が制限時間よりも長く、その差が制限時間と同等のときの評価値を「４」とし、差が制限時間の２倍以上あるときの評価値を「５」とする。逆に、待機時間が制限時間よりも短く、その差が制限時間と同等のときの評価値を「２」とし、差がブロック処理時間の２倍以上あるときの評価値を「１」とする。【００６０】
なお、上記の例では、残り時間を残りのブロック数で割ることで、１ブロック分の制限時間を求めたが、これに替えて、スレッド全体の処理時間をそのスレッドのブロック数で割った値を、１ブロックの制限時間としてもよい。前者の場合は、フレーム処理の進行に合わせて制限時間が変化する。後者の場合は、フレーム終了まで制限時間は不変である。【００６１】
図１０に、１つのフレームにおける第１分割領域631及び第２分割領域632（図８）の並列処理の様子を示す。第３ブロック611-3、及び、それに続く第４ブロック611-4は、現行スレッド401により処理される。また、第１ブロック611-1、及び、それに続く第２ブロック611-2は、参照スレッド402により処理される。【００６２】
第３ブロック611-3は、同期点621以降の処理で、第１ブロック611-1の同期点622でのデータ641が必要であるとする。この場合、同期制御部403は、第３ブロック611-3が同期点621に到達すると、第３ブロック611-3を同期点622まで待機させるかどうかを決定する。ここでは、待機させると決定したとする。待機後、第３ブロック611-3が、同期点622で第１ブロック611-1のデータ641を参照して処理を再開する。【００６３】
第２分割領域632において、第３ブロック611-3の処理が終了すると、第４ブロック611-4の処理が開始する。第４ブロック611-4は、同期点623以降の処理で、同期点624での第２ブロック611-2のデータ642を必要とする。同期制御部403は、第４ブロック611-4が同期点623に到達すると、待機の要否を判定する。ここでは、待機させないと決定する。この場合、現行スレッド401が、第２ブロック611-2のデータ642を待たずに、参照スレッド402の現時点のデータ642を参照して同期点623以降の処理を継続する。【００６４】
なお、現行スレッド401が待機しない場合に参照するデータは、上記のような参照スレッド402の現時点のデータ642に限らず、参照スレッド402での処理済みのデータであってもよい。具体的には、第２ブロック611-2のデータ642に代えて、例えば、第１ブロック611-1にてデータ642と同様な位置にあるデータ、あるいは、同期点622のデータを参照するようにしてもよい。【００６５】
本実施形態によれば、画像フレーム内の並列処理において、スレッドの処理品質と処理時間との兼ね合いを考慮した制御が可能となる。【００６６】
第４の実施形態について、具体例を挙げて詳細に説明する。ここでは、情報処理装置400が、非特許文献１及び２に記載されているような、H.264/MPEG-4 AVC方式の画像処理を行うことを想定する。【００６７】
《具体例１》
本例の現行スレッド及び参照スレッドは、マクロブロックに施すデブロッキングフィルタ処理である。デブロッキングフィルタ処理に関する技術は、例えば、非特許文献３に記載されている。以下、デブロッキングフィルタ処理を単に「フィルタ処理」と記す。【００６８】
本例において、フレームの分割形式およびスレッドの割り当ては、図８と同様とする。すなわち、第１分割領域631を参照スレッド402に割り当て、第２分割領域632を現行スレッド401に割り当てる。現行スレッド401が参照しようとする参照スレッド402のデータは、フィルタ処理後の画素値であるとする。【００６９】
待機時間計算部404は、現行スレッド401によるフィルタ処理が依存する、参照スレッド402によるフィルタ処理が終了するまでの待機時間を算出する。品質差分計算部406は、現行スレッド401が参照スレッド402を待機する場合としない場合との品質の差を求める。画像品質は、その画像の画質を主観的に、又は、ＰＳＮＲ値等を用いて客観的に評価する。【００７０】
現行スレッド401は、同期を取らない場合、つまりは、参照スレッド402を待機しない場合は、参照スレッド402におけるフィルタ処理前の画素値を用いてフィルタ処理を進める。【００７１】
品質差分計算部406は、マクロブロックの空間的な位置や、前フレームまでの同期制御状況だけではなく、フィルタ処理の強度を用いて品質差分を算出する。フィルタ処理は、フィルタの強度や、量子化ステップに依存する。従って、品質差分の計算に、量子化ステップを含めることもできるが、以下では、フィルタの強度のみを用いて制御する例を説明する。【００７２】
図１１に、フィルタ処理におけるブロック間の依存関係を矢印にて示す。フィルタ処理は、基本的に、既にフィルタ処理が施された上及び左のブロックの画素データを用いる。例えば、第２ブロック（＃２）のフィルタ処理652は、第１ブロック（＃１）のフィルタ処理651の結果に依存する。また、第３ブロック（＃３）のフィルタ処理653も、第１ブロック（＃１）のフィルタ処理651に依存する。【００７３】
本来、第２ブロック（＃２）及び第３ブロック（＃３）の各フィルタ処理652,653は、第１ブロック（＃１）のフィルタ処理651の終了を待機すべきである。そこで、現行スレッドにて第３ブロック（＃３）のフィルタ処理653を行う際に、参照スレッドでの第１ブロック（＃１）のフィルタ処理651の処理終了を待つか否かを判断する。【００７４】
参照スレッドを待機しない場合の画質の低下の度合いは、例えば、非特許文献３に記載されているように、フィルタの強度（Boundary Strength値：Ｂｓ値）に関連する。マクロブロック境界の強度が４（Bs=4）であった場合、その影響は、最大で、境界から１４画素分にまで及ぶ。一方で、フィルタ強度が弱い場合は、他のマクロブロックへの影響は少ない。従って、フィルタ処理の強度を基に処理の品質を求めることで、適切な品質差分を見積もることができる。【００７５】
品質差分の評価に用いるＢｓ値は、マクロブロックの最も左上の境界に適用する垂直方向のフィルタのＢｓ値とする。この境界は、マクロブロック間の境界であるため、Ｂｓ値として「４」，「２」，「１」，「０」の４つの値を取り得る。上方ブロックのフィルタ処理の終了を待たず、フィルタ処理前の画素を用いてフィルタ処理を行った場合、「Bs=4」の時に最も品質低下が著しい。品質差分の簡単な評価例として、Ｂｓ値が「４」の場合に評価値を「５」とし、Ｂｓ値が「２」，「１」，「０」の場合の評価値を、それぞれ「４」，「３」，「２」とする。【００７６】
待機時間の評価値については、図９に示すような形態で決定することができる。同期判定部405は、待機時間の評価値と品質差分の評価値とを比較して、現行スレッド401による待機の要否を決定する。例えば、待機時間の評価値が品質差分の評価値以下の場合に、同期を取ると決定する。【００７７】
なお、本例では、品質差分の評価値は、フィルタ処理の強度を基に決定されたが、他の要素をもとに決定してもよい。例えば、フィルタ処理を適用するブロックの空間的な位置、前フレームまでの同期制御状況を考慮してもよい。【００７８】
一般に、フレームの右端や下端に位置するマクロブロックは、画質低下の影響が伝播しにくいので、そのようなマクロブロックについては、品質差分の評価値から「１」を差し引く。このような調整により、待機時間のしきい値が下がるので、待機しないとの判定に導くことができる。また、前フレームと同じ位置のブロックに対し、待機しないと判定した場合、その位置での画質が著しく低下するおそれがある。よって、このような場合は、現フレームでの品質評価の際、評価値に「１」を加えてもよい。かかる調整により、待機時間のしきい値が上がるので、待機するとの判定に導くことができる。【００７９】
《具体例２》
第４の実施形態に関する他の具体例について説明する。スレッドの内容に関し、前述の具体例１ではデブロッキングフィルタ処理であったが、本例では、イントラ予測処理であるとする。本例の同期判定部405は、同一フレームにおいて、現行スレッド401が参照しようとする参照スレッド402での画素にイントラ予測処理が施されていない場合に、そのイントラ予測処理の終了を待つか否かを判断する。待たない場合は、参照スレッド402の現時点の（イントラ予測が未処理の）画素、あるいは、イントラ予測済みであり且つ参照画素と同じ位置の前フレームの画素値を用いてイントラ予測を進める。【００８０】
H.264の輝度に関するイントラ予測は、４×４ブロック、又は、１６×１６ブロック単位で行う。４×４ブロック単位のイントラ予測では９種類の予測モードを用意し、１６×１６ブロック単位のイントラ予測では、４種類の予測モードを用意する。【００８１】
品質差分は、用意された予測モードと、現行スレッド401のマクロブロックが参照スレッド402のマクロブロックを参照するか否かを基に推定される。この品質差分は、同期を行った場合と行わない場合とで、フレーム内での画質低下の影響がどれほど異なるかを表す。４×４ブロック単位の場合、マクロブロックの１６個の４×４ブロックに異なる予測モードが適用されるため、画質低下の影響がフレーム全体に広がらず、数個のブロックだけに抑えられる。【００８２】
品質差分の簡単な評価例として、現行スレッド401で処理中のマクロブロックの画質低下の影響が、他のマクロブロックまで伝播する場合の評価値を「４」とし、マクロブロック内に留まる場合を「３」とし、マクロブロック内の８×８ブロック内に納まる場合を「２」とすることができる。【００８３】
本例では、上記のようにして求めた品質差分の評価値と、待機時間の評価値とを基に、現行スレッド401が参照スレッド402でのイントラ予測処理の終了を待ち合わせるかどうかを決定する。これにより、出力画質の低下を抑えつつ、処理時間を短縮する同期制御ができる。【００８４】
《具体例３》
第４の実施形態に関する他の具体例について説明する。本例では、マクロブロックに対する動き予測処理を現行スレッド401とし、マクロブロックに対するデブロッキングフィルタ処理を参照スレッド402とするものである。本例では、現行スレッド401の動き予測処理が参照する画素に、参照スレッド402のフィルタ処理が施されていない場合に、そのフィルタ処理の完了を待つか否かを判断する。待たない場合は、フィルタ処理前の画素値を用いて現行スレッド401の動き予測処理を進める。【００８５】
また、本例では、動き予測処理の予測ベクトルを用いて品質差分を算出する。参照スレッド402に割り当てられる分割領域は、現行スレッド401に割り当てられる分割領域が属するフレームの直前のフレームの分割領域とする。【００８６】
一般に、人間の認知特性によれば、高速に動く物体に対する認知精度は低い。このため、高速移動物体の画質低下の影響は、停止している物体のそれより少ない。そこで、動きベクトルの長さと物体の移動速度とに関連があると仮定し、動きベクトルの長さを用いて画像の品質を評価する。【００８７】
品質差分の簡単な評価例として、動きベクトル長がゼロの場合を「４」とし、動きベクトル長がゼロより大きく、かつフレーム内での平均より小さい場合を「３」とし、フレーム内の平均より大きい場合を「２」とする。かかる品質差分の評価値と、待機時間に対する評価値を基に、フィルタ処理の終了を待ち合わせるか否かを決定する。このようにすることで、出力画質の低下を抑えつつ、処理時間を短縮する同期制御が実現できる。【００８８】
《具体例４》
第４の実施形態に関する他の具体例について説明する。本例では、あるフレームでの動きベクトル探索処理を現行スレッド401とし、動きベクトルの探索に参照される別のフレームにおける探索領域の参照画像を作成する処理を参照スレッド402とする。【００８９】
動画像の符号化処理では、一般に、符号化された画像をいったん復号して、これを後続フレームの参照画像として用いる。動きベクトル探索処理では、その参照画像を用いて、イントラ予測画像を生成する際に用いる動きベクトルを求める。本例では、ベクトル探索領域の参照画像が作成されていない場合に、その作成処理の終了を待つか否かを判断する。待たない場合は、現時点で参照できる領域を用いてベクトル探索を行う。【００９０】
また、本例では、周辺ブロックの動きベクトルと、現時点で参照可能な領域を用いた探索評価値とを用いて、品質差分を算出する。現行スレッド401及び参照スレッド402に割り当てるブロックは、前述の具体例では、同一フレーム内の分割領域とした。本例では、参照スレッド402に割り当てる分割領域は、動きベクトルの探索で参照されるフレーム内の分割領域とする。すなわち、現行スレッド401のフレームとは異なる。また、画像品質は、探索で得られた動きベクトルを用いてマクロブロックを符号化した際に生成される符号量をもとに推定する。【００９１】
一般に、あるブロックの動きベクトルは、その周辺ブロックの動きベクトルと強い相関がある。このため、まずは、周辺ブロックの動きベクトルを用いて、そのブロックの動きベクトルを予測する。そして、予測された動きベクトルが参照スレッド402の割り当て領域を指しているかどうかを調べる。次に、現時点で参照可能な領域で差分絶対値和などの探索評価を行い、それにより得られた最善の値が上限を超えるか否かを調べる。このとき、探索評価値の傾向から動きベクトルを予測し、それが、参照スレッド402の割り当て領域を指しているかどうかを見積もってもよい。【００９２】
品質差分の簡単な評価例として、予測された動きベクトルが参照スレッド402の割り当て領域を指しており、かつ、現在参照可能な領域での差分絶対値和の評価値が上限より小さい場合を「４」とする。また、差分絶対値和の評価値が上限より小さいだけの場合を「３」とし、差分絶対値和の評価値は上限を超えるが、予測された動きベクトルが参照スレッド402の割り当て領域を指している場合を「２」とする。かかる品質差分の評価値と、待機時間に対する評価値とを基に、ベクトル探索領域の参照画像の作成完了を待機するかどうかを決定する。このようにすることで、生成される符号量を抑えつつ、処理時間を短縮する同期制御が可能となる。【００９３】
本発明は、上記実施の形態に限定されるものではない。本発明の実施は、本願の請求の範囲内において、適宜変更が可能である。例えば、本発明は、情報処理装置400の動作に対応したコンピュータプログラム、及び、そのプログラムを記憶した記録媒体として実施することができる。【００９４】
本出願は、２００８年１月１７日に日本出願された特願２００８−００８３２１を基礎とする優先権を主張し、その開示の内容を全て本明細書に取り込むものである。
【図１】
2009090964.tif 000003
【図２】
2009090964.tif 000004
【図３】
2009090964.tif 000005
【図４】
2009090964.tif 000006
【図５】
2009090964.tif 000007
【図６】
2009090964.tif 000008
【図７】
2009090964.tif 000009
【図８】
2009090964.tif 000010
【図９】
2009090964.tif 000011
【図１０】
2009090964.tif 000012
【図１１】
2009090964.tif 000013
【手続補正書】
【提出日】平成22年7月20日(2010.7.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
現行スレッドと、当該現行スレッドによりデータが参照される参照スレッドとを並列に実行し、
前記現行スレッドが第１の同期点に達したとき、前記参照スレッドが第２の同期点に達したか否かを判別し、
前記判別が否の場合、前記参照スレッドが前記第２の同期点に到達するまでの所要時間を前記現行スレッドの待機時間として求め、
前記現行スレッドが前記参照スレッドの前記第２の同期点での処理データを参照して生成するデータと、前記現行スレッドが前記処理データを参照せずに生成するデータとの間の品質差分を推定し、
前記待機時間および品質差分の大きさに応じて、前記現行スレッドを前記参照スレッドが前記第２の同期点に達するまで待機させるか否かを判定することを特徴とする同期制御方法。
【請求項２】
現行スレッドと該現行スレッドによりデータが参照される参照スレッドとを並列に実行する同期制御部と、
前記現行スレッドが第１の同期点に達したときに前記参照スレッドが第２の同期点に達していない場合、前記参照スレッドが前記第２の同期点に到達するまでの所要時間を前記現行スレッドの待機時間として求める待機時間計算部と、
前記現行スレッドが前記参照スレッドの前記第２の同期点での処理データを参照して生成するデータと、前記現行スレッドが前記処理データを参照せずに生成するデータとの間の品質差分を推定する品質差分計算部と、
前記待機時間および品質差分の大きさに応じて、前記現行スレッドを前記参照スレッドが前記第２の同期点に達するまで待機させるか否かを判定する同期判定部とを備えることを特徴とする情報処理装置。
【請求項３】
前記同期判定部は、前記品質差分が上限を下回る場合、前記現行スレッドを待機させないと判定することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記同期判定部は、さらに、前記待機時間が上限を超える場合は前記現行スレッドを待機させないと判定し、当該待機時間が上限を下回る場合は前記現行スレッドを待機させると判定することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記同期判定部は、前記品質差分が上限を超える場合は前記待機時間に所定値を加算したタイムアウト値を設定し、前記品質差分が上限を下回る場合は前記待機時間から所定値を減算したタイムアウト値を設定し、前記設定したタイムアウト値の満了まで前記現行スレッドを待機させると判定することを特徴とする請求項２記載の情報処理装置。
【請求項６】
前記待機時間計算部は、さらに、前記現行スレッドの待機中に前記待機時間を再計算し、
前記同期判定部は、前記再計算の結果を用いて前記参照スレッドの遅延の有無を判定し、前記参照スレッドが遅延していると判定した場合、前記現行スレッドの待機を中止することを特徴とする請求項２乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記現行スレッドおよび前記参照スレッドが画像フレームに対する画像処理であることを特徴とする請求項２乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記現行スレッドおよび前記参照スレッドが、同一の画像フレーム内の異なる画像ブロックに対するデブロッキングフィルタ処理であることを特徴とする請求項７記載の情報処理装置。
【請求項９】
前記現行スレッドおよび前記参照スレッドが、同一の画像フレーム内の異なる画像ブロックに対するイントラ予測処理であることを特徴とする請求項７記載の情報処理装置。
【請求項１０】
前記同期判定部は、さらに、前記待機時間および前記品質差分について、それぞれをＮ段階で評価するための評価値を求め、前記各評価値を用いて前記現行スレッドの待機に関する前記判定を行うことを特徴とする請求項２乃至９のいずれか１項に記載の情報処理装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００９４
【補正方法】変更
【補正の内容】
【００９４】
本出願は、２００８年１月１７日に日本出願された特願２００８−００８３２１を基礎とする優先権を主張し、その開示の内容を全て本明細書に取り込むものである。
なお、上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限らない。
（付記１）現行スレッドと、当該現行スレッドによりデータが参照される参照スレッドとを並列に実行し、
前記現行スレッドが第１の同期点に達したとき、前記参照スレッドが第２の同期点に達したか否かを判別し、
前記判別が否の場合、前記参照スレッドが前記第２の同期点に到達するまでの所要時間を前記現行スレッドの待機時間として求め、
前記現行スレッドが前記参照スレッドの前記第２の同期点での処理データを参照して生成するデータと、前記現行スレッドが前記処理データを参照せずに生成するデータとの間の品質差分を推定し、
前記待機時間および品質差分の大きさに応じて、前記現行スレッドを前記参照スレッドが前記第２の同期点に達するまで待機させるか否かを判定することを特徴とする同期制御方法。
（付記２）前記品質差分が上限を下回る場合、前記現行スレッドを待機させないと判定することを特徴とする付記１記載の同期制御方法。
（付記３）さらに、前記待機時間が上限を超える場合は前記現行スレッドを待機させないと判定し、当該待機時間が上限を下回る場合は前記現行スレッドを待機させると判定する付記２記載の同期制御方法。
（付記４）前記品質差分が上限を超える場合は前記待機時間に所定値を加算したタイムアウト値を設定し、前記品質差分が上限を下回る場合は前記待機時間から所定値を減算したタイムアウト値を設定し、
前記設定したタイムアウト値の満了まで前記現行スレッドを待機させると判定することを特徴とする付記１記載の同期制御方法。
（付記５）さらに、前記現行スレッドの待機中に前記待機時間を再計算し、
前記再計算の結果を用いて前記参照スレッドの遅延の有無を判定し、
前記参照スレッドが遅延していると判定した場合、前記現行スレッドの待機を中止することを特徴とする付記１乃至４のいずれか１項に記載の同期制御方法。
（付記６）前記現行スレッドおよび前記参照スレッドが画像フレームに対する画像処理であることを特徴とする付記１乃至５のいずれか１項に記載の同期制御方法。
（付記７）前記現行スレッドおよび前記参照スレッドが、同一の画像フレーム内の異なる画像ブロックに対するデブロッキングフィルタ処理であることを特徴とする付記６記載の同期制御方法。
（付記８）前記現行スレッドおよび前記参照スレッドが、同一の画像フレーム内の異なる画像ブロックに対するイントラ予測処理であることを特徴とする付記６記載の同期制御方法。
（付記９）前記現行スレッドが画像ブロックに対する動き予測処理であり、前記参照スレッドが当該画像ブロックに対するデブロッキングフィルタ処理であることを特徴とする付記６記載の同期制御方法。
（付記１０）前記現行スレッドが画像フレームにおける動き予測処理であり、
前記参照スレッドが、前記動き予測処理における動きベクトルが探索される画像フレームの参照画像を作成する処理であることを特徴とする付記６記載の同期制御方法。
（付記１１）さらに、前記待機時間および前記品質差分について、それぞれをＮ段階で評価するための評価値を求め、
前記各評価値を用いて前記現行スレッドの待機に関する前記判定を行うことを特徴とする付記１乃至１０のいずれか１項に記載の同期制御方法。
（付記１２）前記処理データを参照せずに生成する前記データは、前記参照スレッドの現時点でのデータを参照して生成したデータであることを特徴とする付記１乃至１１のいずれか１項に記載の同期制御方法。
（付記１３）前記処理データを参照せずに生成する前記データは、前記参照スレッドによる処理済みのデータを参照して生成したデータであることを特徴とする付記１乃至１１のいずれか１項に記載の同期制御方法。
（付記１４）現行スレッドと該現行スレッドによりデータが参照される参照スレッドとを並列に実行する同期制御部と、
前記現行スレッドが第１の同期点に達したときに前記参照スレッドが第２の同期点に達していない場合、前記参照スレッドが前記第２の同期点に到達するまでの所要時間を前記現行スレッドの待機時間として求める待機時間計算部と、
前記現行スレッドが前記参照スレッドの前記第２の同期点での処理データを参照して生成するデータと、前記現行スレッドが前記処理データを参照せずに生成するデータとの間の品質差分を推定する品質差分計算部と、
前記待機時間および品質差分の大きさに応じて、前記現行スレッドを前記参照スレッドが前記第２の同期点に達するまで待機させるか否かを判定する同期判定部とを備えることを特徴とする情報処理装置。
（付記１５）
前記同期判定部は、前記品質差分が上限を下回る場合、前記現行スレッドを待機させないと判定することを特徴とする付記１４記載の情報処理装置。
（付記１６）前記同期判定部は、さらに、前記待機時間が上限を超える場合は前記現行スレッドを待機させないと判定し、当該待機時間が上限を下回る場合は前記現行スレッドを待機させると判定する付記１５記載の情報処理装置。
（付記１７）前記同期判定部は、前記品質差分が上限を超える場合は前記待機時間に所定値を加算したタイムアウト値を設定し、前記品質差分が上限を下回る場合は前記待機時間から所定値を減算したタイムアウト値を設定し、前記設定したタイムアウト値の満了まで前記現行スレッドを待機させると判定することを特徴とする付記１４記載の情報処理装置。
（付記１８）前記待機時間計算部は、さらに、前記現行スレッドの待機中に前記待機時間を再計算し、
前記同期判定部は、前記再計算の結果を用いて前記参照スレッドの遅延の有無を判定し、前記参照スレッドが遅延していると判定した場合、前記現行スレッドの待機を中止することを特徴とする付記１４乃至１７のいずれか１項に記載の情報処理装置。
（付記１９）前記現行スレッドおよび前記参照スレッドが画像フレームに対する画像処理であることを特徴とする付記１４乃至１８のいずれか１項に記載の情報処理装置。
（付記２０）前記現行スレッドおよび前記参照スレッドが、同一の画像フレーム内の異なる画像ブロックに対するデブロッキングフィルタ処理であることを特徴とする付記１９記載の情報処理装置。
（付記２１）前記現行スレッドおよび前記参照スレッドが、同一の画像フレーム内の異なる画像ブロックに対するイントラ予測処理であることを特徴とする付記１９記載の情報処理装置。
（付記２２）前記現行スレッドが画像ブロックに対する動き予測処理であり、前記参照スレッドが当該画像ブロックに対するデブロッキングフィルタ処理であることを特徴とする付記１９記載の情報処理装置。
（付記２３）前記現行スレッドが画像フレームにおける動き予測処理であり、
前記参照スレッドが、前記動き予測処理における動きベクトルが探索される画像フレームの参照画像を作成する処理であることを特徴とする付記１９記載の情報処理装置。
（付記２４）前記同期判定部は、さらに、前記待機時間および前記品質差分について、それぞれをＮ段階で評価するための評価値を求め、前記各評価値を用いて前記現行スレッドの待機に関する前記判定を行うことを特徴とする付記１４乃至２３のいずれか１項に記載の情報処理装置。
（付記２５）コンピュータを付記１４乃至２４のいずれか１項に記載の情報処理装置として機能させることを特徴とするプログラム。
【国際調査報告】
2009090964.tif 000014
2009090964.tif 000015
2009090964.tif 000016
2009090964.tif 000017