(57)【要約】【課題】従来のシステム構成においても、ＣＰＵや高性能の専用ハードウエアを必要とせず、複数のストリームに対する処理時間の効率を低下させることなく、複数のオーディオやビデオストリームを高効率でかつ精度よく再生することができるストリーム制御装置を提供する。【解決手段】ストリーム処理に優先度を付与するストリーム管理手段１０７と、ストリーム処理の優先度を基に、ストリーム処理の起動時刻がマスタ処理から一意の順序になるように、データ要求を再スケジューリングする要求管理手段１０６とを設け、データ要求の競合を無くし、ＣＰＵ上で実行されるストリーム処理が待ち状態になることを防ぐ。【選択図】図３
2006005685.tif 000002
【特許請求の範囲】
【請求項１】
複数のストリームをそれぞれ形成するストリームデータを蓄積するメモリと、前記メモリに蓄積された前記複数のストリームに対してストリーム処理するストリーム処理手段と、前記ストリーム処理手段によりストリーム処理された複数のストリームに対してデコード処理するデコーダと、前記メモリと前記ストリーム処理手段と前記デコーダの間で前記ストリームデータを転送するデータ転送装置とを有し、前記複数のストリームに対するデコード処理を、前記ストリーム処理を経由して同時に並列実行するストリーム制御装置において、前記ストリーム処理手段によりストリーム処理される各ストリームに優先順位を付与し、その優先順位と前記複数のストリームの各識別情報とを対応させてテーブル化したストリーム管理テーブルを生成するとともに、前記ストリーム管理テーブルに基づくストリーム管理情報と前記ストリーム処理手段に対するストリーム処理の開始要求とを送出するストリーム管理手段と、前記ストリーム管理手段からの前記ストリーム処理の開始要求を、前記ストリーム管理テーブルの優先順位に従って再スケジューリングする要求管理手段とを備え、前記要求管理手段からの再スケジューリングに従って、前記ストリーム処理手段による前記ストリーム処理を実行するよう構成したことを特徴とするストリーム制御装置。
【請求項２】
請求項１記載のストリーム制御装置であって、前記要求管理手段は、前記ストリーム処理手段による前記ストリーム処理の開始後に、最も高い優先順位が割り当てられたストリーム処理に対する前記デコーダからのデータ要求の時刻を基準にして、前記ストリーム処理手段に他の全てのストリーム処理に対するデータ要求を行うことを特徴とするストリーム制御装置。
【請求項３】
請求項２記載のストリーム制御装置であって、前記要求管理手段は、前記ストリーム処理手段により最も高い優先順位が割り当てられていないストリーム処理を開始する際に、前記ストリーム処理手段へのデータ要求の出力を、前記ストリーム処理手段により既に起動されているストリーム処理の終了時刻まで待つように、スケジューリングすることを特徴とするストリーム制御装置。
【請求項４】
複数のストリームをそれぞれ形成するストリームデータを蓄積するメモリと、前記メモリに蓄積された前記複数のストリームに対してストリーム処理するストリーム処理手段と、前記ストリーム処理手段によりストリーム処理された複数のストリームに対してデコード処理するデコーダと、前記メモリと前記ストリーム処理手段と前記デコーダの間で前記ストリームデータを転送するデータ転送装置とを有し、前記複数のストリームに対するデコード処理を、前記ストリーム処理を経由して同時に並列実行するストリーム制御装置において、前記ストリーム処理手段によりストリーム処理される各ストリームに優先順位を付与し、その優先順位と前記各ストリームの帯域情報とを前記複数のストリームの各識別情報に対応させてテーブル化したストリーム管理テーブルを生成するとともに、前記ストリーム管理テーブルに基づくストリーム管理情報と前記ストリーム処理手段に対するストリーム処理の開始要求とを送出するストリーム管理手段と、前記ストリーム管理手段からの前記ストリーム処理の開始要求を、前記ストリーム管理テーブルの優先順位に従って再スケジューリングする要求管理手段と、前記ストリーム管理手段からの前記ストリーム管理情報における各ストリームの帯域情報に従って、前記データ転送装置により前記ストリームデータを前記デコーダへ転送する際のデータ量を可変とする帯域管理手段とを備え、前記要求管理手段からの再スケジューリングおよび前記帯域管理手段からの前記デコーダへの転送データ量に従って、前記ストリーム処理手段による前記ストリーム処理を実行するよう構成したことを特徴とするストリーム制御装置。
【請求項５】
請求項４記載のストリーム制御装置であって、前記ストリーム管理手段は、前記ストリーム処理手段による前記ストリーム処理の開始前に、前記ストリーム処理が開始された場合の時刻が、既に起動されているストリーム処理の終了時刻より以前にならないように、前記帯域管理手段により可変される前記デコーダへの転送データ量を制御して、前記ストリーム処理のデッドライン時刻を延期させることを特徴とするストリーム制御装置。
【請求項６】
請求項５記載のストリーム制御装置であって、前記帯域管理手段は、前記ストリーム管理手段からの前記ストリーム管理情報に基づいて、ストリームが削除されたことを検出すると、一時的に前記デコーダへの転送データ量を変化させ、前記ストリーム処理手段による前記ストリーム処理の起動を再スケジューリングすることを特徴とするストリーム制御装置。
【請求項７】
請求項１から請求項６のいずれかに記載のストリーム制御装置であって、前記ストリーム管理手段は、前記ストリーム処理手段による前記ストリーム処理の開始前に、前記トリーム処理が開始された場合の処理時間が、各ストリーム処理のデッドライン時刻に影響を与える場合、アラーム信号を出力することを特徴とするストリーム制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチメディア蓄積装置やネットワーク等を通じて取得した音声データや映像データからなる多種フォーマットの複数のストリームを同時に処理するマルチデコード機能を有するストリーム制御装置に関するものである。
【背景技術】
【０００２】
近年、情報圧縮技術や通信技術の進歩によって、音声データや映像データからなるストリームのフォーマットは多様化し、このような多種なフォーマットのストリームに対する処理を１つのシステムで扱うような技術が発達している。また、ＤＳＰのような複数のストリームを並列処理できる専用プロセッサも進歩し、ＣＰＵだけでなくＤＳＰも搭載したシステム構成も多く見受けられるようになっている。
【０００３】
例えば、複数のデコーダとＣＰＵ等で構成されるシステムにおいて、マルチメディア蓄積装置やネットワークを通じて複数のストリームを取得し、それらのストリームを同時に処理する場合に、ＣＰＵ上のソフトウェアでストリームの多重分離や暗号化処理を行った場合、それらの処理がストリームの時間的制約（例えば、ストリーム再生処理におけるリアルタイム性）に対して大きな割合を占めることとなる。このようなシステム上では、商用のリアルタイムＯＳが利用されベストエフォート型のスケジューリング（例えば、非特許文献１を参照）が行われるため、ＣＰＵに対する処理負荷が高くなり、この結果として、ストリーム再生処理におけるリアルタイム性に影響を及ぼす場合がある。
【０００４】
このようにＣＰＵの処理負荷が高くなるという問題を解決するストリーム制御技術（例えば、特許文献１を参照）として、複数のストリームを同時処理する場合において、ＣＰＵ性能に依存せずに複数のストリームを同時処理できるストリーム制御技術があり、このストリーム制御技術では、上記のように複数のストリームをＣＰＵ性能に依存せずに同時に処理することができＣＰＵの処理負荷を低減するが、ＣＰＵ以外の専用のハードウエア（以下、ＨＷと略記）が別途必要となり、コストアップにつながっている。
【０００５】
一方で、ＣＰＵとして利用される汎用的なプロセッサの進歩はめざましく、コストも安価であり、汎用プロセッサが将来的にさらに進歩していくことは間違いなく、コストやソフトウェア資産等を考えた場合、ＣＰＵ上でストリームに対する多重分離処理や暗号化処理等のストリーム処理を分散させることが有効である。
【特許文献１】特開２００１−４５０２５号公報
【非特許文献１】藤倉  俊之著、「リアルタイム／マルチタスクシステムの徹底研究」、平成１５年１月１日  、ＣＱ出版株式会社、ｐ．１８３−１９８
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、前述のようにＣＰＵの処理性能が向上した場合でも、上記のようなリアルタイムＯＳを利用したシステム構成で複数のストリームを扱う場合は、次のような問題点がある。すなわち、各ストリームに対して、それぞれデコーダでのストリーム処理の開始時刻はユーザからのランダムな要求によって決まり、ストリーム処理の開始時刻に対応してデコーダからＣＰＵへのデータ要求時刻も決定される。さらに、デコーダからデータが要求される間隔は、各ストリームごとのビットレートによって異なるため、複数のストリームを扱う場合、これらの非同期なデータ要求はＣＰＵ上で競合し、この現象は扱うストリームが増加する程、顕著となる。
【０００７】
以上の問題点について、図面を用いて以下に説明する。
図１は従来のストリーム制御装置を形成するシステムの構成を示すブロック図およびスケジューリング結果を示すタイムチャートであり、複数のストリーム処理を同時に扱う場合を示す。この場合、図１（ａ）に示すように、複数のデコーダ１０４からのデータ要求を１つのＣＰＵ１０１上で扱い、各データ要求に応じて、メモリ１００に置かれる各ストリームデータを、データ転送装置１０２を制御することで、データ要求ごとに対応するデコーダ１０４へ転送する。デコーダ１０４内部では、内部バッファ１０４へ転送されたストリームデータをデコードし、内部バッファ１０４のデータ残量が所定の閾値以下になったことを検出すると、ＣＰＵ１０１に対してデータ要求を行う。図１（ｂ）はＣＰＵ１０１上で実際にリアルタイムＯＳを動作させ、複数のストリーム処理（Ａ、Ｂ、Ｃ）をスケジューリングした結果を示すものである。図１（ｂ）に示すように、ＣＰＵ１０１上では同時に１つのストリーム処理しか起動できないため、ある１つのストリーム処理が実行されている間は、他のストリーム処理は待たされることになる。
【０００８】
従って、図１（ａ）のような従来のストリーム制御装置を形成するシステム構成では、複数のデコーダ１０４からの非同期な要求をリアルタイムＯＳで受け、これらの要求を利用してストリーム処理を扱う。この場合、データ要求が競合した際のストリーム処理は、図１（ｂ）のように、待ち状態（Ｗａｉｔ）を引き起こし、待たされたストリーム処理におけるデコーダ１０４へのデータ転送時刻がデッドライン時刻を越えてしまう可能性がある。デッドライン時刻はデータ要求があった時刻から決定されるため、このような構成におけるリアルタイムＯＳでのスケジューリングでは、上記の問題を回避することはできない。そのため、複数のストリームに対する全てのストリーム処理がデッドライン時刻より以前に完了させることができなくなる。
【０００９】
以上により、複数のオーディオやビデオストリームを再生する場合に、その時間効率や再生精度が低下してしまう。
本発明は、上記従来の問題点を解決するもので、従来のシステム構成においても、ＣＰＵや高性能の専用ＨＷを必要とせず、複数のストリームに対する処理時間の効率を低下させることなく、複数のオーディオやビデオストリームを高効率でかつ精度よく再生することができるストリーム制御装置を提供する。
【課題を解決するための手段】
【００１０】
上記の課題を解決するために、本発明の請求項１に記載のストリーム制御装置は、複数のストリームをそれぞれ形成するストリームデータを蓄積するメモリと、前記メモリに蓄積された前記複数のストリームに対してストリーム処理するストリーム処理手段と、前記ストリーム処理手段によりストリーム処理された複数のストリームに対してデコード処理するデコーダと、前記メモリと前記ストリーム処理手段と前記デコーダの間で前記ストリームデータを転送するデータ転送装置とを有し、前記複数のストリームに対するデコード処理を、前記ストリーム処理を経由して同時に並列実行するストリーム制御装置において、前記ストリーム処理手段によりストリーム処理される各ストリームに優先順位を付与し、その優先順位と前記複数のストリームの各識別情報とを対応させてテーブル化したストリーム管理テーブルを生成するとともに、前記ストリーム管理テーブルに基づくストリーム管理情報と前記ストリーム処理手段に対するストリーム処理の開始要求とを送出するストリーム管理手段と、前記ストリーム管理手段からの前記ストリーム処理の開始要求を、前記ストリーム管理テーブルの優先順位に従って再スケジューリングする要求管理手段とを備え、前記要求管理手段からの再スケジューリングに従って、前記ストリーム処理手段による前記ストリーム処理を実行するよう構成したことを特徴とする。
【００１１】
また、本発明の請求項２に記載のストリーム制御装置は、請求項１記載のストリーム制御装置であって、前記要求管理手段は、前記ストリーム処理手段による前記ストリーム処理の開始後に、最も高い優先順位が割り当てられたストリーム処理に対する前記デコーダからのデータ要求の時刻を基準にして、前記ストリーム処理手段に他の全てのストリーム処理に対するデータ要求を行う構成としたことを特徴とする。
【００１２】
また、本発明の請求項３に記載のストリーム制御装置は、請求項２記載のストリーム制御装置であって、前記要求管理手段は、前記ストリーム処理手段により最も高い優先順位が割り当てられていないストリーム処理を開始する際に、前記ストリーム処理手段へのデータ要求の出力を、前記ストリーム処理手段により既に起動されているストリーム処理の終了時刻まで待つように、スケジューリングする構成としたことを特徴とする。
【００１３】
また、本発明の請求項４に記載のストリーム制御装置は、複数のストリームをそれぞれ形成するストリームデータを蓄積するメモリと、前記メモリに蓄積された前記複数のストリームに対してストリーム処理するストリーム処理手段と、前記ストリーム処理手段によりストリーム処理された複数のストリームに対してデコード処理するデコーダと、前記メモリと前記ストリーム処理手段と前記デコーダの間で前記ストリームデータを転送するデータ転送装置とを有し、前記複数のストリームに対するデコード処理を、前記ストリーム処理を経由して同時に並列実行するストリーム制御装置において、前記ストリーム処理手段によりストリーム処理される各ストリームに優先順位を付与し、その優先順位と前記各ストリームの帯域情報とを前記複数のストリームの各識別情報に対応させてテーブル化したストリーム管理テーブルを生成するとともに、前記ストリーム管理テーブルに基づくストリーム管理情報と前記ストリーム処理手段に対するストリーム処理の開始要求とを送出するストリーム管理手段と、前記ストリーム管理手段からの前記ストリーム処理の開始要求を、前記ストリーム管理テーブルの優先順位に従って再スケジューリングする要求管理手段と、前記ストリーム管理手段からの前記ストリーム管理情報における各ストリームの帯域情報に従って、前記データ転送装置により前記ストリームデータを前記デコーダへ転送する際のデータ量を可変とする帯域管理手段とを備え、前記要求管理手段からの再スケジューリングおよび前記帯域管理手段からの前記デコーダへの転送データ量に従って、前記ストリーム処理手段による前記ストリーム処理を実行するよう構成したことを特徴とする。
【００１４】
また、本発明の請求項５に記載のストリーム制御装置は、請求項４記載のストリーム制御装置であって、前記ストリーム管理手段は、前記ストリーム処理手段による前記ストリーム処理の開始前に、前記ストリーム処理が開始された場合の時刻が、既に起動されているストリーム処理の終了時刻より以前にならないように、前記帯域管理手段により可変される前記デコーダへの転送データ量を制御して、前記ストリーム処理のデッドライン時刻を延期させる構成としたことを特徴とする。
【００１５】
また、本発明の請求項６に記載のストリーム制御装置は、請求項５記載のストリーム制御装置であって、前記帯域管理手段は、前記ストリーム管理手段からの前記ストリーム管理情報に基づいて、ストリームが削除されたことを検出すると、一時的に前記デコーダへの転送データ量を変化させ、前記ストリーム処理手段による前記ストリーム処理の起動を再スケジューリングする構成としたことを特徴とする。
【００１６】
また、本発明の請求項７に記載のストリーム制御装置は、請求項１から請求項６のいずれかに記載のストリーム制御装置であって、前記ストリーム管理手段は、前記ストリーム処理手段による前記ストリーム処理の開始前に、前記トリーム処理が開始された場合の処理時間が、各ストリーム処理のデッドライン時刻に影響を与える場合、アラーム信号を出力する構成としたことを特徴とする。
【００１７】
以上により、ストリームに対する多重分離や暗号化等の時間的制約に対して比較的高い割合を占めるストリーム処理において、要求管理手段で、複数のデコーダのデータ要求、およびストリーム処理の開始・終了要求に対応させるとともに、１つのＣＰＵからストリームデータを複数のデコーダへ供給する際に、各ストリーム処理の起動時間をスケジューリングすることにより、データ要求の競合を回避して、ＣＰＵ上で実行されるストリーム処理が待ち状態になることを防ぐことができる。
【００１８】
また、ビットレートに差がある複数のストリームを扱う場合に、帯域管理手段により、デコーダへ転送するデータ量を可変にし、デッドライン時刻を設定することにより、複数のストリームに対する全てのストリーム処理がデッドライン時刻より以前に完了するようにスケジューリングを行うことができる。
【発明の効果】
【００１９】
以上のように本発明によれば、ストリームに対する多重分離や暗号化等の時間的制約に対して比較的高い割合を占めるストリーム処理において、要求管理手段で、複数のデコーダのデータ要求、およびストリーム処理の開始・終了要求に対応するとともに、１つのＣＰＵからストリームデータを複数のデコーダへ供給する際に、各ストリーム処理の起動時間をスケジューリングすることにより、データ要求の競合を回避して、ＣＰＵ上で実行されるストリーム処理が待ち状態になることを防ぐことができる。
【００２０】
また、ビットレートに差がある複数のストリームを扱う場合に、帯域管理手段により、デコーダへ転送するデータ量を可変にし、デッドライン時刻を設定することにより、複数のストリームに対する全てのストリーム処理がデッドライン時刻より以前に完了するようにスケジューリングを行うことができる。
【００２１】
以上により、従来のシステム構成においても、ＣＰＵや高性能の専用ＨＷを必要とせず、複数のストリームに対する処理時間の効率を低下させることなく、複数のオーディオやビデオストリームを高効率でかつ精度よく再生することができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施の形態を示すストリーム制御装置について、図面を参照しながら具体的に説明する。
（実施の形態１）
本発明の実施の形態１のストリーム制御装置を説明する。
【００２３】
図２は本実施の形態１のストリーム制御装置を形成するシステム構成を示すブロック図である。このシステム構成におけるストリーム制御装置は、ＣＰＵ１０１と、外部ＩＯ装置１０３と、デコーダ１０４と、ストリームデータを蓄積するメモリ１００と、データ転送装置１０２と、ストリーム管理手段１０７と、ストリーム管理テーブル１０８と、要求管理手段１０６とで構成される。
【００２４】
このストリーム制御装置では、図２に示すように、外部ＩＯ装置１０３から入力されたストリームデータはメモリ１００に蓄積され、ＣＰＵ１０１上で動作するソフトウェアによる処理を介して、デコーダ１０４で扱われるフォーマットに変換され、データ転送装置１０２の動作によりデコーダ１０４の内部バッファ１０５へ転送が行われる。デコーダ１０４では、内部バッファ１０５の残量がある一定の閾値以下になったことを検出すると、ＣＰＵ１０１に対してデータ要求を行う。
【００２５】
ストリーム管理手段１０７は、ＣＰＵ１０１上で実行されるストリーム処理の開始要求とストリーム情報を入力とし、実行されているストリーム処理を管理するためのストリーム管理テーブル１０８を生成し、開始要求を受けたストリームが既に実行されているストリーム処理のリアルタイム性に与える影響を検出する機能を備えている。
【００２６】
要求管理手段１０６は、各デコーダ１０４からのデータ要求と、ストリーム管理手段１０７からの開始要求およびストリーム管理テーブル１０８で管理されるストリーム管理情報を入力とし、複数のデコーダ１０４からの非同期な要求を一意の順序になるように再スケジューリングする機能を備えている。
【００２７】
図３は本実施の形態１のストリーム制御装置を形成するシステムにおけるストリーム処理実行のための構成を示すブロック図である。このシステムにおけるストリーム制御装置は、デコーダ１０４と、ストリームデータを蓄積するメモリ１００と、データ転送装置１０２と、ストリーム管理手段１０７と、ストリーム管理テーブル１０８と、要求管理手段１０６と、アプリケーションプログラム１１０と、ストリーム処理部１０９とで構成されている。
【００２８】
このストリーム制御装置では、図３に示すように、アプリケーションプログラム１１０は、映像データや音声データ等で構成されたストリームを選択し、ストリーム管理手段１０７に対して再生開始および終了要求を行う。ストリーム管理手段１０７は、アプリケーションプログラム１１０からの再生開始要求を入力とし、要求されたストリーム処理が既に実行されているストリーム処理のリアルタイム性に影響が無い場合、ストリームに優先順位を付与して要求管理手段１０６にストリーム処理の開始要求を通知する。
【００２９】
要求管理手段１０６は、ストリーム管理手段１０７からストリーム処理開始の通知を受けて、受理したストリーム処理で最も優先度が高いストリーム処理を基準として、ＣＰＵ上で実行されるストリーム処理部（Ａ、Ｂ、Ｃ）１０９が順次起動されるように、ストリーム処理部１０９に対して処理開始要求を通知する。さらに、要求管理手段１０６は、処理開始後の動作として、複数のデコーダ１０４からのデータ要求を受けて、最も高いストリーム処理を基準として、ストリーム処理部（Ａ、Ｂ、Ｃ）１０９が順次起動されるようにデータ要求を通知する。
【００３０】
各ストリーム処理部１０９は、ＡＳＦ、ＭＰＥＧ２等のフォーマットで多重化されたストリームから音声データや映像データを分離し、１サイクル当たりの処理量としてシステムで決められたデータ転送量分のデータを準備し、データ転送装置１０２に対してデータ転送要求を行うことで処理を中断する。
【００３１】
デコーダ１０４では、処理が開始されると内部バッファ１０５のデータが消費され、内部バッファ１０５内のデータ残量が予め設定された所定の閾値以下になったことを検出し、再びデータ要求を行う。なおここでは、ＣＰＵ上で実行されるストリーム処理としては、多重分離処理を例として説明をしたが、暗号処理等の他の処理でも良い。
【００３２】
図４は本実施の形態１のストリーム制御装置におけるストリーム管理手段１０７の動作を示すフローチャートであり、以下、このフローチャートを参照しつつ、ストリーム管理手段１０７の動作について説明する。
【００３３】
ユーザによってストリーム処理が開始・終了されたことをアプリケーションプログラム１１０からストリーム管理手段１０７へ通知し、付加情報として後述するストリーム管理テーブル１０８へ登録するためのストリーム情報も同時に通知する。ストリーム管理手段１０７は、アプリケーションプログラム１１０から開始要求を受けると、既に起動されているストリームの時間的な制約条件から、処理の起動が可能かどうか判定を行う。ここで起動可能な場合は、スケジューリングに必要なストリームの付加情報をストリーム管理テーブル１０８に登録する。終了要求を受けた場合には、ストリーム管理テーブル１０８からストリーム情報を削除する。
【００３４】
ストリーム管理手段１０７は、Ｓ４００での判定で受信した要求種別が開始要求であり、Ｓ４０１で既に開始されているストリーム処理が無いと判定された場合、Ｓ４０６でストリームを識別するためのストリームＩＤ及びスケジューリングのための優先度を付加し、このＩＤを元に後述するストリーム管理テーブル１０８にストリーム情報を登録する。この場合、優先度は高いものから付与されるため、ここで登録されるストリーム処理がマスタ処理となることに注意する。要求管理手段１０６に処理開始の通知を行い、実際にストリーム処理を起動する。
【００３５】
さらにストリーム管理手段１０７は、Ｓ４０１で開始されているストリーム処理が存在した場合、Ｓ４０２でストリーム情報を取得した後に、Ｓ４０３で通知された付加情報とストリーム管理テーブル１０８の情報を元に後述するストリームＣｈｅｃｋ処理を行い、この結果、ストリーム処理を開始した場合のスケジューリングがリアルタイム性に影響しない場合、Ｓ４０６でストリーム情報をストリーム管理テーブル１０８に登録してストリーム処理を開始する。
【００３６】
図５は本実施の形態１のストリーム制御装置におけるストリーム管理テーブル１０８の構造図であり、ストリーム管理テーブル１０８では、ストリームＩＤと関連付けられるストリーム処理部１０９の１サイクル当たりの処理時間とビットレート、さらにデータ要求周期が管理される。データ要求周期は、データ要求時刻から次のデータ要求時刻までの時間差、つまり転送したデータがデコーダ１０４で消費される時間量であり、データ転送量とビットレートで求まる。
【００３７】
図４におけるストリーム開始Ｃｈｅｃｋ処理Ｓ４０３は、これから開始されるストリーム処理の１サイクル当たりの処理時間と、既に実行されているストリーム処理時間との合計時間が、データ要求周期を越えないか判定する処理であり、もし越えた場合は、ストリーム処理を開始したときにストリーム処理のリアルタイム性に影響することを意味するため、ステップＳ４０５において、アラームをアプリケーションに通知する。
【００３８】
ストリーム管理手段１０７では、終了通知を受けた場合は要求管理手段１０６に終了通知を行い、要求管理手段１０６からの処理完了応答を受けた後、対応するストリームＩＤの情報をストリーム管理テーブル１０８から削除する。マスタ要求が削除された場合、優先順位も更新する。
【００３９】
図６は本実施の形態１のストリーム制御装置における要求管理手段１０６の開始および終了要求受信動作を示すフローチャートであり、図７は本実施の形態１のストリーム制御装置における要求管理手段１０６のデータ要求受信動作を示すフローチャートである。
【００４０】
以下、図６および図７に示す要求管理手段１０６の各動作を説明する。
要求管理手段１０６は、ストリーム管理手段１０７から開始・終了要求、またはデコーダ１０４からのデータ要求を受け、マスタ処理かその他の処理かによって、それぞれストリーム処理部１０９にデータを要求する時刻をスケジューリングする。
【００４１】
まず、図６に示す開始要求もしくは終了要求を受理した場合の処理を説明する。Ｓ５００でストリーム管理手段１０７から開始要求を受けた場合、Ｓ５０１でストリーム管理テーブル１０８からストリーム管理情報を取得し、このストリーム管理情報を基に、Ｓ５０２では既に起動されているストリーム処理があるかどうかの判定を行う。これはマスタ処理に同期させて処理を開始させるためであり、開始されているストリーム処理が無い場合は、図８で示されるスケジューリングテーブルに、マスタ処理としてストリーム処理の登録を行い、ストリーム処理部１０９に開始要求を行うだけである。登録に必要な情報はストリームＩＤ、処理時間、優先度であり、これらの情報をストリーム管理テーブル１０８から取得する。
【００４２】
Ｓ５０２で既に開始されたストリーム処理が存在する場合、Ｓ５０３でスケジューリングテーブルにストリーム処理を追加し、開始要求があったことを示すＳフラグをセット（ＯＮ）することで処理を終了する。Ｓフラグはマスタ処理に処理開始を同期させるためのフラグであり、開始時刻をマスタ処理に同期させた後は、ストリーム処理部１０９にデータ要求するタイミングは、全てマスタ処理のデータ要求をトリガにして行われる。
【００４３】
Ｓ５００でストリーム管理手段１０７から終了要求を受けた場合、Ｓ５０５でマスタ処理かどうかの判定を行う。マスタ処理の場合はＳ５０８でストリーム情報をスケジューリングテーブルから削除し、優先度を更新する。その後に次のマスタ処理を決定する必要がある。それ以外の場合はＳ５０６で終了要求があったことを示すＥフラグをセットすることで処理を終了する。Ｅフラグはスケジューリングテーブルを初期化するために必要なフラグである。
【００４４】
次に、図７に示すデータ要求を受理した場合の処理を説明する。図６のＳ５００でデコーダ１０４からデータ要求を受信した場合、Ｓ６００でデータ要求がマスタ要求かそれ以外の通知か判定する。これは全てのデータ要求をマスタ処理に同期させるためであり、データ要求がマスタ要求以外の場合、そのまま何もせずに処理は終了する。データ要求がマスタ要求の場合、Ｓ６０１でストリーム処理部１０９にマスタ処理に対するデータ要求の通知を行う。
【００４５】
さらに、Ｓ６０２でスケジューリングテーブルにその他のストリーム処理が登録されている場合、他の登録されている全てのストリーム処理に対してデータ要求を行う。ストリームデータを要求する時刻はＳ６０３において、スケジューリングテーブルのストリーム処理時間を利用して、処理完了待ちタイマを起動した後に行われる。タイマ処理終了後、Ｓ６０４でＳフラグとＥフラグをチェックし、フラグがセットされていない場合、次のストリーム処理に対するデータ要求をストリーム処理部１０９に通知する。タイマの待ち時間はひとつ前に起動したストリーム処理の終了時刻に相当するため、マスタ処理の終了時に同期して、次のストリーム処理が順次前の処理の終了を待って起動されることになる。
【００４６】
Ｓ６０４でＳフラグがセットされている場合、ストリーム処理の起動時間を、既に起動されているストリーム処理の終了時刻に対して同期させるために、Ｓ６０５でイニシャル情報をストリーム処理部に通知する。イニシャル情報を受信したストリーム処理部１０９は、ストリーム処理終了後に自らのストリーム処理に相当する時間待った後、データ転送装置１０２に対してデータ転送要求を行う。開始時にイニシャル処理としてデータ転送時刻を前の処理に同期させることで、次からのデータ要求時刻はマスタ処理に対して一定の間隔、つまり予測可能な時刻となる。
【００４７】
このように、本実施の形態１によれば、要求管理手段１０６によりＣＰＵ上で動作するストリーム処理１０９では、優先順位に従って図９のようにマスタ処理とされたストリーム処理Ａに対してストリーム処理Ｂとストリーム処理Ｃが順次起動されるため、複数のデコーダ１０４からの非同期な要求に対して、ストリーム処理の開始が競合するケースが無くなり、タスクの優先順位等でストリーム処理に待ちが発生することを防ぐことができ、結果として複数のデコーダに対してデッドライン時刻より以前にデータ転送を完了させることが可能となる。
【００４８】
また、ストリーム管理手段１０７により、起動されているストリーム処理の実行状態を正確に管理できるため、アプリケーションに対して適切なアラーム情報を通知することができる。アプリケーションはアラーム情報を取得することで、無作為にストリームを再生する場合であっても、映像や音声が乱れる前に内部の状態を知ることができるため、状況に応じて映像品質等の変更や必要の無いストリームの削除が可能となる。
（実施の形態２）
本発明の実施の形態２のストリーム制御装置を説明する。
【００４９】
図１０は本実施の形態２のストリーム制御装置を形成するシステムにおけるストリーム処理実行のための構成を示すブロック図である。本実施の形態２の処理ブロックは、実施の形態１の構成に加え、帯域管理手段１１１を備えている。帯域管理手段１１１は、要求管理手段１０６からのデータ要求及び開始・終了要求と、ストリーム管理手段１０７からのストリーム管理情報とを入力とし、１サイクル当たりのデータ転送量をストリームのビットレートに基づいて決定し、ストリーム処理部１０９に各種要求の通知を行う。ストリーム処理部１０９は通知されたデータ転送量分のデータを準備し、データ転送要求をデータ転送装置１０２に対して行う。
【００５０】
実施の形態１においては、ストリーム管理手段１０７はストリーム処理を開始する際に、ストリーム処理のデータ要求間隔とストリーム処理の処理時間の合計を比較してストリーム処理開始可否の判断を行っていたが、この場合、扱う複数のストリームにおいて、それらのビットレート、つまり単位時間当たりにデコーダで消費されるデータ量に大きな差がある場合、図１３（ａ）で示すように、ビットレートの大きなストリームに対するストリーム処理（ストリーム処理Ｂ）は、ストリーム処理のデッドライン時刻がストリーム処理が終了する以前になってしまう。このようなケースは、実施の形態１におけるストリーム管理手段１０７の開始条件を満たすことができなかった。
【００５１】
一方、本実施の形態２においては、図１３（ｂ）で示すように、ストリーム管理手段１０７で扱われる各ストリーム処理のデータ要求間隔は、マスタ処理（ストリーム処理Ａ）のデータ要求間隔Ｔｒを基準とし、各ストリームでデータ要求間隔を一定値として扱うために、実施の形態１で扱うことのできなかったビットレートの差が大きいストリームを扱うことができる。
【００５２】
図１１は本実施の形態２のストリーム制御装置における帯域管理手段１１１の動作を示すフローチャートであり、以下、帯域管理手段１１１の動作を説明する。
帯域管理手段１１１は、ストリーム管理手段１０７から開始要求を受けた場合、ストリーム処理部１０９で処理するデータ量すなわちデコーダ１０４へ転送するデータ量を計算し、後述する帯域管理テーブルで管理する。さらにこの情報を開始・データ要求とともにストリーム処理部１０９へ通知する。上記のデータ量は、デコーダ１０４における消費時間（ビットレートの大きさ）から、マスタ処理のデータ要求間隔と等価となるように計算される。終了要求を受けた場合は後述する帯域管理テーブルから該当するストリームの情報を削除する。
【００５３】
帯域管理手段１１１は、Ｓ１１００でストリーム管理手段１０７から開始要求を受けた場合、Ｓ１１０１でストリーム管理手段１０７のストリーム管理テーブル１０８の情報を参照し、ストリーム情報として、マスタ処理のデータ要求周期と開始するストリームのビットレートを取得する。
【００５４】
Ｓ１１０２では、取得した各種情報からデコーダ１０４で、１サイクル当たりのデータ消費時間がマスタ処理のデータ要求間隔と等価になるように、ストリーム処理部１０９で生成するデータ量を計算し、このデータ転送量を元に図１２で示される帯域管理テーブルを生成する。テーブル生成後、Ｓ１１０３でストリーム処理部１０９へデータ転送量と開始要求の通知を行う。
【００５５】
Ｓ１１００でデータ要求を受信した場合は、帯域管理テーブルのデータ転送量とデータ要求をストリーム処理部１０９に通知する。開始またはデータ要求を受信したストリーム処理部１０９は、通知された量に対するストリームデータを生成して、デコーダ１０４へデータの転送を行う。
【００５６】
Ｓ１１００で終了要求を受信した場合は、Ｓ１１０５で終了されるストリーム情報を帯域管理テーブルから削除し、Ｓ１１０６でストリーム管理手段１０７がストリーム管理テーブル１０８を更新するための処理完了応答を通知する。
【００５７】
このように、本実施の形態２によれば、ビットレートに差があるストリームを扱うことを可能とし、ビットレートが大きなストリーム、つまりデッドラインの厳しい高画質動画のようなストリームを同時に処理した場合でも、図１３（ｂ）のように、他のストリーム処理に影響無く、かつデッドライン時刻より以前にデータ転送を終えられるように、スケジューリングが可能である。図１３（ｂ）において、デコーダからの要求周期Ｔｒをマスタ処理の周期と一致させるために扱うデータ処理量を可変にしているが、データ量の決定方法は他の方法でも良い。
（実施の形態３）
本発明の実施の形態３のストリーム制御装置を説明する。なお、基本的な構成は実施の形態２と同様であるが、帯域管理手段１１１内に図１４に示す帯域管理テーブルを追加した点が異なっている。
【００５８】
実施の形態１、２においては、ストリーム処理が複数起動された場合、図１６（ａ）で示されるように、不要なストリームを削除し、その後に新たにストリームを追加する処理は、マスタ処理に対してしか実行できなかった。そこで、本実施の形態３では、データ転送量を可変にすることで、ストリームが削除された場合に発生する前段と後段のストリーム処理の間にできる処理時間の隙間を無くすように、ストリーム処理の起動を再スケジューリングするため、ストリームの追加と削除を動的に行うことが可能となる。
【００５９】
図１５は本実施の形態３のストリーム制御装置における帯域管理手段１１１の動作を示すフローチャートであり、このフローチャートを用いて、帯域管理手段１１１の動作を以下に説明する。
【００６０】
帯域管理手段１１１がストリーム管理手段１０７から開始要求を受けたときの処理は、実施の形態２で示した図１１のフローチャートの場合と同様であり、終了要求を受けた場合と、データ要求を受けた場合に対する処理が異なる。ストリーム管理手段１０７から終了要求を受けた場合、前後のストリーム処理が存在している時に限り、後段のストリーム処理の開始時刻が前段のストリーム処理の終了時刻と同期するように、一時的に後段のストリームのデータ転送量を変更する。
【００６１】
帯域管理手段１１１は、Ｓ１４００で終了要求を受信した場合は、マスタ処理以外で、さらに優先度の低いストリーム処理が存在するかの判定を行う。これはマスタ処理や最後尾のストリームを削除した場合には、図１６（ａ）のように、処理と処理の間に隙間ができず、リスケジューリングを行う必要が無いためである。リスケジューリングが必要なストリームがある場合、Ｓ１４０８で終了されるストリーム処理の１サイクルの当たりの処理時間に相当するデコーダ１０４で消費されるデータ量を計算し、通常のデータ転送量から減算した値を一次領域に記憶して保存する。さらに、Ｒフラグをセットすることで処理を終了する。Ｒフラグはリスケジューリングが必要かどうかを示すフラグである。従って、終了されるストリーム処理より優先度の低いものは全て一次領域のデータ設定とＲフラグのセットが行われる。
【００６２】
Ｓ１４００でデータ要求を受信し、Ｓ１４０４でＲフラグがセットされていることを検出した場合、一次領域に記憶されているデータ転送量をストリーム処理部１０９に通知することで、図１６（ｂ）で示されるように、次回のデコーダ１０４からのデータ要求は削除されたストリーム処理時間分早く行われることになり、結果として、ストリーム処理が順次起動されるように再スケジューリングを行ったことになる。
【００６３】
ストリーム処理量はマスタ処理のデータ要求Ｔｒから削除されたストリーム処理、例えば図１６（ｂ）では、ストリーム処理Ｂの処理時間Ｔｂを引いた時間から算出される。また、要求管理手段１０６では、ストリームの終了時にＥフラグを利用せずに行え、ストリームの優先度も常時更新される。
【００６４】
このように本実施の形態３によれば、ストリーム処理の追加、削除が動的に可能となり、他のストリームを再生中であっても、アプリケーションによってストリームの追加と削除を、ストリームの再生状態に影響を与えることなく行うことができる。
【００６５】
なお、実施の形態１における要求管理手段１０６、実施の形態２における帯域管理手段１１１において、データ要求、開始要求の通知によりストリーム処理部１０９を起動する構成にすることで、従来のリアルタイムＯＳが利用されているシステムに対して、本発明に記載される手段をそのまま追加するだけで、適応できるというメリットがある。
【００６６】
また、図２、図１０では複数のデコーダ１０４で構成される例を示しているが、この例にとらわれることなく、ＤＳＰで複数のデコード処理を並列実行するものでも良い。また、データ転送装置１０２の代わりに共有メモリを利用しても良い。
【００６７】
以上のように、本発明を実施の形態に基づいて説明をしたが、本発明は上記の各実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で変更可能である。
【産業上の利用可能性】
【００６８】
本発明のストリーム制御装置は、従来のシステム構成においても、ＣＰＵや高性能の専用ＨＷを必要とせず、複数のストリームに対する処理時間の効率を低下させることなく、複数のオーディオやビデオストリームを高効率でかつ精度よく再生することができ、複数のストリームに対してリアルタイム性を保証した上で同時に扱うことができるため、マルチ画面対応の映像端末や、ＰＣ上のアプリケーションでリアルタイムに複数の映像や音声を再生する用途などに有用である。
【図面の簡単な説明】
【００６９】
【図１】従来のストリーム制御装置を形成するシステムの構成を示すブロック図およびスケジューリング結果を示すタイムチャート
【図２】本発明の実施の形態１のストリーム制御装置を形成するシステム構成を示すブロック図
【図３】同実施の形態１のストリーム制御装置を形成するシステムにおけるストリーム処理実行のための構成を示すブロック図
【図４】同実施の形態１のストリーム制御装置におけるストリーム管理手段の動作を示すフローチャート
【図５】同実施の形態１のストリーム制御装置におけるストリーム管理テーブルの構造図
【図６】同実施の形態１のストリーム制御装置における要求管理手段の開始、終了要求受信動作を示すフローチャート
【図７】同実施の形態１のストリーム制御装置における要求管理手段のデータ要求受信動作を示すフローチャート
【図８】同実施の形態１のストリーム制御装置におけるスケジューリングテーブルの構造図
【図９】同実施の形態１のストリーム制御装置におけるスケジューリング結果を示すタイムチャート
【図１０】本発明の実施の形態２のストリーム制御装置を形成するシステムにおけるストリーム処理実行のための構成を示すブロック図
【図１１】同実施の形態２のストリーム制御装置における帯域管理手段の動作を示すフローチャート
【図１２】同実施の形態２のストリーム制御装置における帯域管理テーブルの構造図
【図１３】同実施の形態２のストリーム制御装置におけるスケジューリング結果を示すタイムチャート
【図１４】本発明の実施の形態３のストリーム制御装置における帯域管理テーブルの構造図
【図１５】同実施の形態３のストリーム制御装置における帯域管理手段の動作を示すフローチャート
【図１６】同実施の形態３のストリーム制御装置におけるスケジューリング結果を示すタイムチャート
【符号の説明】
【００７０】
１００    メモリ
１０１    ＣＰＵ
１０２    データ転送装置
１０３    外部ＩＯ装置
１０４    デコーダ
１０５    内部バッファ
１０６    要求管理手段
１０７    ストリーム管理手段
１０８    ストリーム管理テーブル
１０９    ストリーム処理部
１１０    アプリケーションプログラム
１１１    帯域管理手段
【図１】
2006005685.tif 000003
【図２】
2006005685.tif 000004
【図３】
2006005685.tif 000005
【図４】
2006005685.tif 000006
【図５】
2006005685.tif 000007
【図６】
2006005685.tif 000008
【図７】
2006005685.tif 000009
【図８】
2006005685.tif 000010
【図９】
2006005685.tif 000011
【図１０】
2006005685.tif 000012
【図１１】
2006005685.tif 000013
【図１２】
2006005685.tif 000014
【図１３】
2006005685.tif 000015
【図１４】
2006005685.tif 000016
【図１５】
2006005685.tif 000017
【図１６】
2006005685.tif 000018