(57)【要約】圧縮データ及び非圧縮データをホストシステムと符号化復号化装置間で同時に転送する際に、転送速度が低下しても、ホストシステム側や符号化復号化装置側のバッファがオーバーフローするのを防止するタスクスケジューリング方法を提供する。ホストシステムと符号化復号化装置間で圧縮データ及び非圧縮データを同時転送する際に、圧縮オーディオ・ビデオデータの転送優先度を、非圧縮ビデオデータや非圧縮オーディオデータの転送優先度より高く設定する。
2004093446.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムと符号化復号化装置間で圧縮データ及び非圧縮データを同時に転送する際に、前記ホストシステムのバッファから外部へ圧縮オーディオ・ビデオデータを第１の転送優先度で転送する手順と、
非圧縮オーディオ・ビデオデータを前記バッファから外部へ、前記第１の転送優先度より低い第２の転送優先度で転送する手順と
を有することを特徴とするタスクスケジューリング方法。
【請求項２】
外部からの圧縮オーディオ・ビデオデータを、前記バッファを介して前記符号化復号化装置側へ、前記第１の転送優先度より低く、前記第２の転送優先度より高い第３の転送優先度で転送する手順を有することを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項３】
前記非圧縮オーディオ・ビデオデータは非圧縮オーディオデータと非圧縮ビデオデータの少なくとも一方を含み、かつ、前記非圧縮オーディオデータの前記バッファから外部への転送優先度は前記非圧縮ビデオデータの前記バッファから外部への転送優先度以上となるように設定されることを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項４】
前記ホストシステムの前記バッファに保持される圧縮オーディオ・ビデオデータ量が所定の閾値を超えているか否かを判定する手順を有し、前記閾値を超えている場合には、前記非圧縮オーディオ・ビデオデータの前記ホストシステム側の前記バッファから外部への転送を制限もしくは停止することを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項５】
前記符号化復号化装置のバッファに保持される圧縮オーディオ・ビデオデータ量が所定の閾値を超えているか否かを判定する手順を有し、前記閾値を超えている場合には、前記非圧縮オーディオ・ビデオデータの前記ホストシステム側の前記バッファから外部への転送を制限もしくは停止することを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項６】
前記ホストシステムと前記符号化復号化装置間の圧縮データ及び非圧縮データの転送を、ＵＳＢ、ＩＥＥＥ１３９４等のシリアルバスを用いて行うことを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項７】
前記ホストシステムと前記符号化復号化装置間の圧縮データ及び非圧縮データの転送を、ＰＣＩ等のパラレルバスを用いて行うことを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項８】
前記符号化復号化装置内のバッファから前記ホストシステム側の前記バッファへの圧縮オーディオ・ビデオデータの転送を要求する頻度を、非圧縮オーディオ・ビデオデータの転送頻度より高く設定することにより、前記第１の転送優先度を前記第２の転送優先度より高くすることを特徴とする請求項６記載のタスクスケジューリング方法。
【請求項９】
前記符号化復号化装置側のスイッチの切替え動作を制御することにより、前記第１の転送優先度を前記第２の転送優先度より高くすることを特徴とする請求項６記載のタスクスケジューリング方法。
【請求項１０】
前記ホストシステム側の前記バッファ内の圧縮オーディオ・ビデオデータを保持するための第１の領域が所定の閾値を超えた場合に、前記第１の領域を拡大して、前記ホストシステム側の前記バッファ内の非圧縮オーディオ・ビデオデータを保持するための第２の領域を縮小することを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項１１】
前記圧縮オーディオ・ビデオデータを前記バッファから外部へ所定のデータ量だけ転送する毎に設定する第１のスリープ時間を、前記非圧縮オーディオ・ビデオデータを前記バッファから外部へ所定のデータ量だけ転送する毎に設定する第２のスリープ時間より小さく設定することにより、前記第１の転送優先度を前記第２の転送優先度より高くすることを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項１２】
ホストシステムと符号化復号化装置間で圧縮データ及び非圧縮データを同時に転送する際に、前記ホストシステムのバッファから外部へ圧縮オーディオ・ビデオデータを第１の転送優先度で転送する第１の手段と、
非圧縮オーディオ・ビデオデータを前記バッファから外部へ、前記第１の転送優先度より低い第２の転送優先度で転送する第２の手段と
を備えることを特徴とするデータ処理装置。
【請求項１３】
ホストシステムと符号化復号化装置間で圧縮オーディオ・ビデオデータ及び非圧縮オーディオ・ビデオデータの転送を行う転送手段と、
前記ホストシステムからの指示もしくは前記符号化復号化装置内のバッファの状態に応じて、前記転送手段の転送優先度を変更して圧縮データのバッファオーバーフローを回避する手段と
を備えることを特徴とするデータ処理装置。
【請求項１４】
前記符号化復号化装置側の圧縮オーディオ・ビデオデータを保持する第１の領域が所定の閾値を超えた場合に、前記第１の領域を拡大して、前記符号化復号化装置側の圧縮オーディオ・ビデオデータを保持する第２の領域を縮小することを特徴とする請求項１３記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】  本発明は、圧縮ビデオ・オーディオデータと非圧縮のビデオ・オーディオデータをホストシステムと符号化復号化装置間で同時転送する場合のタスクスケジューリング方法に関するものである。
【背景技術】  従来のシステムにおいて、圧縮符号化されたデータである圧縮ビデオ・オーディオデータと、圧縮符号化前のデータ、又は分離復号化されたデータである非圧縮ビデオ・オーディオデータを、ホストシステム（ＰＣ等）と符号化復号化装置（ＭＰＥＧ２＿ＰＳ／ＴＳ＿ＣＯＤＥＣ等）間で転送する際に、下記の４種類の転送を同時に実行する場合がある。
１）符号化復号化装置側から非圧縮のビデオデータを、ＵＳＢ（ｕｎｉｖｅｒｓａｌ＿ｓｅｒｉａｌ＿ｂｕｓ）等のバスを介してホストシステムのメインメモリ内のバッファへ転送する。
２）符号化復号化装置側から非圧縮のオーディオデータを、ＵＳＢ等のバスを介してホストシステムのメインメモリ内のバッファへ転送する。
３）符号化復号化装置から圧縮されたオーディオ・ビデオデータ（ＡＶストリーム）を、ＵＳＢ等のバスを介してホストシステムのメインメモリ内のバッファへ転送する。
４）ホストシステムのメインメモリ内のバッファ側から圧縮されたオーディオ・ビデオデータを、ＵＳＢ等のバスを介して符号化復号化装置側へ転送する。
各転送は、ＵＳＢ等のバス上で別々のエンドポイントを使用して、バルク転送／インタラプト転送／アイソクロナス転送等により実行される。
上記した従来のシステムにおいて、符号化復号化装置の動作制御は次のように実行される。
ＵＳＢホストシステムがユーザー定義の制御コマンドをバルク転送やコントロール転送を使用してＵＳＢデバイスコントローラへ出力する。この制御コマンドを受信すると、ＵＳＢデバイスコントローラは、受信した制御コマンドに従って、ＡＳＩＣ回路、ＭＰＥＧ２＿ＣＯＤＥＣ、ビデオエンコーダ／デコーダ、オーディオＡＤＣ／ＤＡＣ等の制御をそれぞれ行う。
以下の説明では、便宜上、圧縮されたオーディオ・ビデオデータを単に圧縮データといい、圧縮されていないオーディオ・ビデオデータを単に非圧縮データという。
従来のシステムでは、圧縮データと非圧縮データをホストシステムと符号化復号化装置間で同時に転送する場合に、ホストシステム上のＣＰＵの負荷が増大するとホストシステムのバッファから外部への転送速度が低下したり、ＵＳＢ等のバス上での転送速度が低下する場合がある。このように転送速度が低下した場合に、ホストシステム側や符号化復号化装置側のバッファがオーバーフローして、転送すべき情報を全て転送できなくなるという問題があった。
非圧縮データは主にリアルタイムの視聴を目的としているのに対し、圧縮データはＨＤＤ等に記録して、後から何度も復号化して視聴することが主な目的である。このため、ホストシステム上のＣＰＵの負荷が増大してバッファがオーバーフローしデータが失われた場合、非圧縮データに関してはリアルタイムで視聴している映像や音声が一時的に途切れることになる。また、圧縮データに関しては、ＨＤＤ等に記録すべきデータが一部失われることになる。
データが失われないことが理想であるが、システム能力的にそれが困難な場合、圧縮してＨＤＤ等に記録したデータが正しく残っていれば、リアルタイムの視聴が一時的に途切れても許容しうる。
【発明の開示】
本発明は、上記の課題に鑑みてなされたものであって、圧縮データと非圧縮データをホストシステムと符号化復号化装置間で同時に転送する際に、転送速度が低下した場合でも、ホストシステム側や符号化復号化装置側のバッファにおける圧縮データのオーバーフローを防止することができるタスクスケジューリング方法を提供することを目的とする。
上記課題を解決するために、本発明のタスクスケジューリング方法は、ホストシステムと符号化復号化装置間で圧縮データ及び非圧縮データを同時に転送する際に、前記ホストシステムのバッファから外部へ圧縮オーディオ・ビデオデータを第１の転送優先度で転送する手順と、非圧縮オーディオ・ビデオデータを前記バッファから外部へ、前記第１の転送優先度より低い第２の転送優先度で転送する手順とを有することを特徴とする。
本発明のタスクスケジューリング方法によれば、圧縮データと非圧縮データを同時に転送する際に、ホストシステムのＣＰＵ負荷が増大して転送速度が低下した場合でも、ホストシステム側や符号化復号化装置側のバッファにおける圧縮データのオーバーフローを防止することができる。したがって、重要な圧縮データが失われるという問題が解消される。
【図面の簡単な説明】  本発明の他の目的、特徴及び利点については、添付の図面に基づき下記の発明の詳細な説明を参照することにより明確となる。
図１は、本発明のタスクスケジューリング方法が適用される、ホストシステムと符号化復号化装置を含むシステムの一例を示すブロック図である。
図２は、図１のシステムにおけるＭＰＥＧ２＿ＣＯＤＥＣを示すブロック図である。
図３は、図１のシステムにおけるＡＳＩＣ回路を示すブロック図である。
図４は、図１のシステムにおけるホストシステムのバッファの構成を示す図である。
図５は、本発明のタスクスケジューリング方法が適用される、ホストシステムと符号化復号化装置を含むシステムの他の例を示すブロック図である。
図６Ａは、圧縮データと非圧縮データを同じ転送優先度で転送する場合の例を説明するためのフロー図である。
図６Ｂは、本発明のタスクスケジューリング方法の一実施例を説明するためのフロー図である。
図７Ａは、本発明のタスクスケジューリング方法の他の実施例を説明するためのフロー図である。
図７Ｂは、マルチタスクＯＳの場合にスリープ時間を変更することで転送優先度を調整する例を説明するためのフロー図である。
図８Ａは、本発明のタスクスケジューリング方法の他の実施例を説明するためのフロー図である。
図８Ｂは、マルチタスクＯＳの場合にスリープ時間を変更することで転送優先度を調整する例を説明するためのフロー図である。
図９Ａは、本発明のタスクスケジューリング方法の他の実施例を説明するためのフロー図である。
図９Ｂは、マルチタスクＯＳの場合にスリープ時間を変更することで転送優先度を調整する例を説明するためのフロー図である。
図１０Ａは、本発明のタスクスケジューリング方法の他の実施例を説明するためのフロー図である。
図１０Ｂは、マルチタスクＯＳの場合にスリープ時間を変更することで転送優先度を調整する例を説明するためのフロー図である。
図１１は、本発明のタスクスケジューリング方法の他の実施例を説明するための図である。
図１２Ａ、図１２Ｂ及び図１２Ｃは、ホストシステム側のバッファの圧縮データのための領域サイズを変更する場合を説明するための図である。
図１３Ａは、図５のシステムに適用した場合の例を説明するためのフロー図である。
図１３Ｂは、マルチタスクＯＳの場合にスリープ時間を変更することで転送優先度を調整する例を説明するためのフロー図である。
【発明を実施するための最良の形態】  本発明の実施の形態を添付の図面を用いて説明する。
図１は、本発明のタスクスケジューリング方法が適用される、ホストシステムと符号化復号化装置を含むシステムの一例を示す。
図１のシステムは、ホストシステム側の構成と、符号化復号化装置（ＣＯＤＥＣデバイス）側の構成とを含む。ホストシステム側には、ホストシステムのＣＰＵ（図示なし）を含むＵＳＢホストシステム１６と、ホストシステムのメインメモリ内のバッファ１８とが設けてある。
図１の符号化復号化装置側には、ビデオデコーダ（ＮＴＳＣ＿ＤＥＣＯＤＥＲ等）２と、オーディオＡＤＣ（ａｎａｌｏｇ−ｔｏ−ｄｉｇｉｔａｌ＿ｃｏｎｖｅｒｔｅｒ）４と、オーディオＤＡＣ（ｄｉｇｉｔａｌ−ｔｏ−ａｎａｌｏｇ＿ｃｏｎｖｅｒｔｅｒ）６と、ビデオエンコーダ（ＮＴＳＣ＿ＥＮＣＯＤＥＲ等）８と、ＭＰＥＧ２＿ＣＯＤＥＣ（ＭＰＥＧ２＿ＰＳ／ＴＳ＿ＣＯＤＥＣ等）１０と、ＡＳＩＣ回路１２と、ＵＳＢデバイスコントローラ１４とが設けてある。
ビデオデコーダ２は、カメラ等の入力装置（図示なし）からのアナログビデオ信号を受取って非圧縮ビデオデータＶを出力する。オーディオＡＤＣ４は、マイク等の入力装置（図示なし）からのアナログオーディオ信号を受取って非圧縮オーディオデータＡを出力する。
オーディオＤＡＣ６は、非圧縮オーディオデータＡを受取ってアナログオーディオ信号を外部へ出力する。ビデオエンコーダ８は、非圧縮ビデオデータＶを受取ってアナログビデオ信号を外部へ出力する。
図１のシステムにおいては、ＵＳＢホストシステム１６とＵＳＢデバイスコントローラ１４は、ＵＳＢバスで互いに接続されている。ＵＳＢホストシステム１６のＣＰＵは、ユーザー定義の制御コマンドをバルク転送やコントロール転送を使用してＵＳＢデバイスコントローラ１４へ出力する。
あるいは、ＵＳＢバスの代わりに、ＩＥＥＥ１３９４等のシリアルバスを用いてホストシステム１６とデバイスコントローラ１４を互いに接続するシステムに、本発明のタスクスケジューリング方法を適用することも可能である。
ＵＳＢデバイスコントローラ１４は、ＵＳＢホストシステム１６から受取った制御コマンドに従って、ＡＳＩＣ回路１２、ＭＰＥＧ２＿ＣＯＤＥＣ１０、ビデオデコーダ２、ビデオエンコーダ８、オーディオＡＤＣ４及びオーディオＤＡＣ６の制御をそれぞれ行う。
ＭＰＥＧ２＿ＣＯＤＥＣ１０については、図２を用いて後述する。また、ＡＳＩＣ回路１２についても、図３を用いて後述する。
図１において、Ｖは非圧縮ビデオデータ（ＹＵＶビデオ信号等）を示し、Ａは非圧縮オーディオデータ（ＬＰＣＭオーディオ信号等）を示し、Ｍ１はＭＰＥＧ２＿ＣＯＤＥＣ１０で圧縮符号化された圧縮オーディオ・ビデオデータ（ＭＰＥＧ２＿ＰＳ又はＴＳ等）を示し、Ｍ２は外部からバッファ１８を介してＭＰＥＧ２＿ＣＯＤＥＣ１０へ転送される圧縮オーディオ・ビデオデータ（ＭＰＥＧ２＿ＰＳ又はＴＳ等）を示す。
図２は、図１のシステムにおけるＭＰＥＧ２＿ＣＯＤＥＣ１０を示す。
図２のＭＰＥＧ２＿ＣＯＤＥＣ１０は、ＭＰＥＧ２エンコーダ２１と、ＭＰＥＧ２デコーダ２２と、スイッチＳＷ１と、スイッチＳＷ２と、スイッチＳＷ３と、スイッチＳＷ４とを含む。
ＭＰＥＧ２エンコーダ２１は、ビデオデコーダ２からの非圧縮ビデオデータＶと、オーディオＡＤＣ４からの非圧縮オーディオデータＡを受取って圧縮符号化し、圧縮オーディオ・ビデオデータＭ１を出力する。非圧縮ビデオデータＶと非圧縮オーディオデータＡは、スイッチＳＷ１とスイッチＳＷ２により適宜選択されて、ＭＰＥＧ２エンコーダ２１に入力される。
ＭＰＥＧ２デコーダ２２は、外部からバッファ１８を介してＭＰＥＧ２＿ＣＯＤＥＣ１０へ転送される圧縮オーディオ・ビデオデータＭ２を受取って復号化して、非圧縮ビデオデータＶと非圧縮オーディオデータＡを出力する。
また、ＭＰＥＧ２デコーダ２２から出力される、非圧縮ビデオデータＶと非圧縮オーディオデータＡは、スイッチＳＷ３とスイッチＳＷ４により適宜選択されて、ビデオエンコーダ８とオーディオＤＡＣ６へ出力されると共に、ＡＳＩＣ回路１２へも出力される。
図３は、図１のシステムにおけるＡＳＩＣ回路１２を示す。
図３のＡＳＩＣ回路１２は、マルチプレクサに設けられた、スイッチＳＷ５と、スイッチＳＷ５の切替え動作を制御するためのレジスタ２３とを含む。このＡＳＩＣ回路１２の動作については、後述する。
図１のシステムにおいて、ＵＳＢデバイスコントローラ１４へ転送されるデータの選択は、ＡＳＩＣ回路１２内のマルチプレクサで行われる。このマルチプレクサは、スイッチＳＷ５とレジスタ２３とを含み、どのデータが選択されるかは、端子（図示なし）によってＵＳＢデバイスコントローラ１４へ通知される。
図４は、図１のシステムにおけるＵＳＢホストシステム１６のメインメモリ内のバッファ１８の構成を示す。
図４に示したように、ＵＳＢホストシステム１６のメインメモリ内のバッファ１８は、保持するデータの種類に応じて、所定のサイズ（記録容量）をもつバッファ領域がそれぞれ割当てられている。バッファ１８は、非圧縮オーディオデータＡを保持するためのバッファ領域（Ａ＿ＢＵＦ）であるオーディオバッファ部１８ａと、非圧縮ビデオデータＶを保持するためのバッファ領域（Ｖ＿ＢＵＦ）であるビデオバッファ部１８ｂと、符号化復号化装置側からの圧縮オーディオ・ビデオデータＭ１を保持するためのバッファ領域（Ｍ１＿ＢＵＦ）であるＭ１バッファ部１８ｃと、外部からの圧縮オーディオ・ビデオデータＭ２を保持するためのバッファ領域（Ｍ２＿ＢＵＦ）であるＭ２バッファ部１８ｄとを含む。
図１のシステムにおいて、ＵＳＢコントローラは、各データに対し割当てられたエンドポイントを使用して、ＵＳＢホストシステム１６とＵＳＢデバイスコントローラ１４間のデータ転送を行う。
図５は、本発明のタスクスケジューリング方法が適用される、ホストシステムと符号化復号化装置を含むシステムの他の例を示す。
図１のシステムはＵＳＢインターフェイスを利用して、ＵＳＢホストシステム１６とＵＳＢデバイスコントローラ１４をＵＳＢバスで接続することにより、ホストシステムと符号化復号化装置間のデータ転送を行っている。本発明のタスクスケジューリング方法は、前述の実施例のみに限られるものではない。例えば、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ＿ｃｏｍｐｏｎｅｎｔ＿ｉｎｔｅｒｃｏｎｎｅｃｔ）インターフェイス等を利用する他のシステムにも同様に適用することができる。
図５のシステムにおいて、ＰＣＩバスを用いて、ホストシステム側のＰＣＩインターフェイス（ＰＣＩ＿Ｉ／Ｆ）３６と符号化復号化装置側のＰＣＩインターフェイス（ＰＣＩ＿Ｉ／Ｆ）３４間が接続されている。図５のシステムでは、このＰＣＩバスを使用して、ホストシステムと符号化復号化装置間のデータ転送を行う。
図５のシステムのその他の構成は、図１のシステムと同一であるので、同一の構成要素には同じ参照番号を付し、それらの構成についての説明は省略する。
図６Ａは、圧縮データと非圧縮データを同じ転送優先度で転送する場合の例を説明するためのフロー図である。図６Ｂは、本発明のタスクスケジューリング方法の一実施例を説明するためのフロー図である。
マルチタスクＯＳなどでは、各データについての転送優先度の調整方法は、各ＯＳによって異なる。
図６Ａ及び図６Ｂの処理手順では、典型的な例として、図１のＵＳＢホストシステム１６のＣＰＵがシングルタスクＯＳの下で処理を実行する場合を想定して説明する。
しかし、この実施例に限定されるものではなく、マルチタスクＯＳの下で実行する場合にも、本発明のタスクスケジューリング方法は図６Ｂの処理手順と同様の原理で実現できる。
以下の各ステップにおいて、ＵＳＢホストシステム１６のＣＰＵ（以下、単にＣＰＵという）がバッファ１８内の転送可能なデータの有無について判定する場合は、１回で転送されるデータ量の単位を、例えば３２Ｋｂｙｔｅとした場合に、バッファ１８内に保持されているデータ量が３２Ｋｂｙｔｅに満たないときは、転送可能なデータがない（ＮＯ）と判定される。バッファ１８内に保持されているデータ量が３２Ｋｂｙｔｅを超えるときは、転送可能なデータがある（ＹＥＳ）と判定される。
図６Ａに示した、圧縮データと非圧縮データを同じ転送優先度で転送する場合の処理手順について説明する。
図６Ａの処理手順は、図１のＵＳＢホストシステム１６のＣＰＵが、圧縮データと非圧縮データをＵＳＢホストシステムと符号化復号化装置間で同時に転送する要求を受け付けると開始される。
まず、ステップＳ１１において、ＣＰＵはバッファ１８のＭ１バッファ部１８ｃに転送可能なデータがあるか否かを判定する。
ステップＳ１１の判定結果がＹＥＳである場合、ステップＳ２において、ＣＰＵはＭ１バッファ部１８ｃのデータを外部のハードディスクドライブ（ＨＤＤ）等へ転送する。ステップＳ２が終了すると、次のステップＳ１３を実行する。
ステップＳ１１の判定結果がＮＯである場合、上記ステップＳ２を行わずに次のステップＳ１３を実行する。
ステップＳ１３において、ＣＰＵはバッファ１８のＭ２バッファ部１８ｄに転送可能な空きがあるか否かを判定する。
ステップＳ１３の判定結果がＹＥＳである場合、ステップＳ４において、ＣＰＵは外部のＨＤＤからデータを読み出してＭ２バッファ部１８ｄへ転送する。ステップＳ４が終了すると、次のステップＳ１５を実行する。
ステップＳ１３の判定結果がＮＯである場合、上記ステップＳ４を行わずに次のステップＳ１５を実行する。
ステップＳ１５において、ＣＰＵはバッファ１８のオーディオバッファ部１８ａに転送可能なデータがあるか否かを判定する。
ステップＳ１５の判定結果がＹＥＳである場合、ステップＳ６において、ＣＰＵはオーディオバッファ部１８ａのデータを外部のオーディオカード（Ａｕｄｉｏ＿Ｃａｒｄ）等へ転送する。ステップＳ６が終了すると、次のステップＳ１７を実行する。
ステップＳ１５の判定結果がＮＯである場合、上記ステップＳ６を行わずに次のステップＳ１７を実行する。
ステップＳ１７において、ＣＰＵはバッファ１８のビデオバッファ部１８ｂに転送可能なデータがあるか否かを判定する。
ステップＳ１７の判定結果がＹＥＳである場合、ステップＳ８において、ＣＰＵはビデオバッファ部１８ｂのデータを外部のビデオカード（Ｖｉｄｅｏ＿Ｃａｒｄ）等へ転送する。ステップＳ８が終了すると、次のステップＳ１９を実行する。
ステップＳ１７の判定結果がＮＯである場合、上記ステップＳ８を行わずに次のステップＳ１９を実行する。
ステップＳ１９において、ＣＰＵは、上記した以外の、その他の処理を実行する。ステップＳ１９が終了すると、上記のステップＳ１１に戻って同様の処理手順を繰り返し実行する。
図６Ａの処理手順では、Ｍ１バッファ部１８ｃのデータの転送処理の後、Ｍ２バッファ部１８ｄ、オーディオバッファ部１８ａ及びビデオバッファ部１８ｂの各データの転送処理が終了するまで、Ｍ１バッファ部１８ｃのデータは転送処理の機会がない。この間に、ＵＳＢバスからの圧縮データがバッファ１８へ転送されると、バッファ１８がオーバーフローしてしまう可能性がある。バッファ１８のオーバーフローが発生した場合、転送すべき情報を全て転送できないという問題がある。
次に、図６Ｂの処理手順について説明する。図６Ｂの処理手順は、本発明のタスクスケジューリング方法の一実施例を示す。
図６Ｂの処理手順は、図１のＵＳＢホストシステム１６のＣＰＵが、圧縮データと非圧縮データをＵＳＢホストシステムと符号化復号化装置間で同時に転送する要求を受け付けると開始される。
まず、ステップＳ１１において、ＣＰＵはバッファ１８のＭ１バッファ部１８ｃに転送可能なデータがあるか否かを判定する。
ステップＳ１１の判定結果がＹＥＳである場合、ステップＳ１２において、ＣＰＵはＭ１バッファ部１８ｃのデータを外部のハードディスクドライブ（ＨＤＤ）等へ転送する。ステップＳ１２が終了すると、ステップＳ１９において、ＣＰＵは、その他の処理を実行する。ステップＳ１９が終了すると、上記のステップＳ１１に戻って同様の処理手順を繰り返し実行する。
ステップＳ１１の判定結果がＮＯである場合、上記ステップＳ１２を行わずに次のステップＳ１３を実行する。ステップＳ１３において、ＣＰＵはバッファ１８のＭ２バッファ部１８ｄに転送可能な空きがあるか否かを判定する。
ステップＳ１３の判定結果がＹＥＳである場合、ステップＳ１４において、ＣＰＵは外部のＨＤＤからデータを読み出してＭ２バッファ部１８ｄへ転送する。ステップＳ１４が終了すると、上記のステップＳ１９を実行する。
ステップＳ１３の判定結果がＮＯである場合、上記ステップＳ１４を行わずに次のステップＳ１５を実行する。ステップＳ１５において、ＣＰＵはバッファ１８のオーディオバッファ部１８ａに転送可能なデータがあるか否かを判定する。
ステップＳ１５の判定結果がＹＥＳである場合、ステップＳ１６において、ＣＰＵはオーディオバッファ部１８ａのデータを外部のオーディオカード（Ａｕｄｉｏ＿Ｃａｒｄ）等へ転送する。ステップＳ１６が終了すると、上記のステップＳ１９を実行する。
ステップＳ１５の判定結果がＮＯである場合、上記ステップＳ１６を行わずに次のステップＳ１７を実行する。ステップＳ１７において、ＣＰＵはバッファ１８のビデオバッファ部１８ｂに転送可能なデータがあるか否かを判定する。
ステップＳ１７の判定結果がＹＥＳである場合、ステップＳ１８において、ＣＰＵはビデオバッファ部１８ｂのデータを外部のビデオカード（Ｖｉｄｅｏ＿Ｃａｒｄ）等へ転送する。ステップＳ１８が終了すると、上記のステップＳ１９を実行する。
ステップＳ１７の判定結果がＮＯである場合、上記ステップＳ１８を行わずに上記のステップＳ１９を実行する。
図６Ｂの処理手順では、Ｍ１バッファ部１８ｃに転送可能な圧縮データＭ１がある限り、圧縮データＭ１の外部への転送が優先して処理される。ここで、Ｍ１バッファ部１８ｃに転送可能な圧縮データＭ１がない場合に、他のデータＭ２、Ａ、Ｖの転送処理が行われたと仮定する。その場合にも、他のデータが転送された後に必ず、Ｍ１バッファ部１８ｃに転送可能な圧縮データＭ１の有無を判定する。圧縮データＭ１があると再度判定した場合には、他のデータＭ２、Ａ、Ｖの転送処理の後、直ちにその圧縮データＭ１を外部へ転送する。
従って、図６Ｂの処理手順を実行することにより、圧縮オーディオ・ビデオデータＭ１の転送優先度（ＡＶＣＯＭＰ１）を、非圧縮ビデオデータＶの転送優先度（ＶＲＡＷ）や非圧縮オーディオデータＡの転送優先度（ＡＲＡＷ）より高く設定するタスクスケジューリング方法が実現される。
この実施例のタスクスケジューリング方法によれば、圧縮データと非圧縮データをホストシステムと符号化復号化装置間で同時転送する際に、バッファ１８から外部のハードディスクドライブ等へ圧縮データを転送する場合の転送優先度を高くすることができ、バッファ１８からハードディスクドライブ等へ記録すべき圧縮データを全て記録することが確実に行える。また、バッファ１８のオーバーフローを確実に防止することができる。
また、一般に、転送すべき非圧縮ビデオデータＶのデータ量は、転送すべき非圧縮オーディオデータＡのデータ量より格段に大きいため、バッファ１８のオーバーフローを防止する目的を達成するためには、非圧縮オーディオデータＡの転送優先度ＡＲＡＷを、非圧縮ビデオデータＶの転送優先度ＶＲＡＷ以上に設定することが望ましい。
図６Ｂの処理手順においては、ステップＳ１１−Ｓ１２、ステップＳ１５−Ｓ１６、ステップＳ１７−Ｓ１８をこの順序で実行することにより、ＡＶＣＯＭＰ１＞ＡＲＡＷ≧ＶＲＡＷの条件を満足するように、圧縮データと非圧縮データをホストシステムと符号化復号化装置間で同時転送することができる。
さらに、図６Ｂの処理手順においては、ステップＳ１１−Ｓ１２、ステップＳ１３−Ｓ１４をこの順序で実行することにより、圧縮オーディオ・ビデオデータＭ１の転送優先度ＡＶＣＯＭＰ１を、外部からの圧縮オーディオ・ビデオデータＭ２をバッファ１８を介して符号化復号化装置側へ転送するタスクの転送優先度ＡＶＣＯＭＰ２より高く設定される。
すなわち、図６Ｂの処理手順を実行することにより、ＡＶＣＯＭＰ１＞ＡＶＣＯＭＰ２の条件を満足するように、圧縮データと非圧縮データをホストシステムと符号化復号化装置間で同時転送することができる。
図７Ａは、本発明のタスクスケジューリング方法の他の実施例を説明するためのフロー図である。
前述の図６Ｂの処理手順の場合、バッファ１８に転送可能なデータがあれば、そのデータを次々に転送することになり、転送優先度の低い非圧縮ビデオデータＶの転送機会が少なくなり過ぎる場合がある。
この問題を回避するため、１回のデータ転送単位を、例えば３２Ｋｂｙｔｅ等の、所定のデータサイズ（バイト数）に制限して、残りのデータは次の転送機会に転送することで、各データの転送効率を向上させることができる。優先した転送については、バッファ１８におけるデータの有無を判定する機会を増やすことにより、圧縮データと非圧縮データの各転送について異なる転送優先度をつける方法がある。図７Ａの処理手順はこの方法を用いた例である。
図７Ａの処理手順では、まず、ステップＳ２１において、ＣＰＵはバッファ１８のＭ１バッファ部１８ｃに転送可能なデータがあるか否かを判定する。
ステップＳ２１の判定結果がＹＥＳである場合、ステップＳ２２において、ＣＰＵはＭ１バッファ部１８ｃのデータをｎＭ１バイトだけ、外部のハードディスクドライブ（ＨＤＤ）等へ転送する。ステップＳ２２が終了すると、次のステップＳ２３を実行する。
ステップＳ２１の判定結果がＮＯである場合、上記ステップＳ２２を行わずに次のステップＳ２３を実行する。
ステップＳ２３において、ＣＰＵはバッファ１８のＭ２バッファ部１８ｄに転送可能な空きがあるか否かを判定する。
ステップＳ２３の判定結果がＹＥＳである場合、ステップＳ２４において、ＣＰＵはＨＤＤからデータを読み出してｎＭ２バイトだけ、Ｍ２バッファ部１８ｄへ転送する。ステップＳ２４が終了すると、次のステップＳ２５を実行する。
ステップＳ２３の判定結果がＮＯである場合、上記ステップＳ２４を行わずに次のステップＳ２５を実行する。
ステップＳ２５において、ＣＰＵはバッファ１８のオーディオバッファ部１８ａに転送可能なデータがあるか否かを判定する。
ステップＳ２５の判定結果がＹＥＳである場合、ステップＳ２６において、ＣＰＵはオーディオバッファ部１８ａのデータをｎＡバイトだけ外部のオーディオカード（Ａｕｄｉｏ＿Ｃａｒｄ）等へ転送する。ステップＳ２６が終了すると、次のステップＳ２７を実行する。
ステップＳ２５の判定結果がＮＯである場合、上記ステップＳ２６を行わずに次のステップＳ２７を実行する。
ステップＳ２７において、ＣＰＵはバッファ１８のＭ１バッファ部１８ｃに転送可能なデータがあるか否かを判定する。
ステップＳ２７の判定結果がＹＥＳである場合、ステップＳ２８において、ＣＰＵはＭ１バッファ部１８ｃのデータをｎＭ１バイトだけ、外部のハードディスクドライブ（ＨＤＤ）等へ転送する。ステップＳ２８が終了すると、次のステップＳ２９を実行する。
ステップＳ２７の判定結果がＮＯである場合、上記ステップＳ２８を行わずに次のステップＳ２９を実行する。
ステップＳ２９において、ＣＰＵはバッファ１８のビデオバッファ部１８ｂに転送可能なデータがあるか否かを判定する。
ステップＳ２９の判定結果がＹＥＳである場合、ステップＳ３０において、ＣＰＵはビデオバッファ部１８ｂのデータをｎＶバイトだけ、外部のビデオカード（Ｖｉｄｅｏ＿Ｃａｒｄ）等へ転送する。ステップＳ３０が終了すると、次のステップＳ１９を実行する。
ステップＳ２９の判定結果がＮＯである場合、上記ステップＳ３０を行わずに次のステップＳ１９を実行する。
ステップＳ１９において、ＣＰＵは、上記した以外の、その他の処理を実行する。ステップＳ１９が終了すると、上記のステップＳ２１に戻って同様の処理手順を繰り返し実行する。
図７Ａの処理手順では、圧縮データＭ１の転送機会を他のデータの転送機会より多く設定することにより、圧縮データＭ１の転送優先度を最も高く設定している。ここで、各データの１回のデータ転送単位（バイト数）である、ｎＭ１、ｎＭ２、ｎＡ、ｎＶの具体的な数値は、処理の都合や処理バランス等により決定される。
図７Ｂは、マルチタスクＯＳの場合にスリープ時間を変更することで転送優先度を調整する例を説明するためのフロー図である。
マルチタスクＯＳの場合は、一般に、各転送処理ごとにタスクを割り当て、各々のタスクで１回の転送処理が終了したら、そのタスクに所定のスリープ時間を設定して、他の転送処理のタスクにＣＰＵ時間を割当てる方式がとられている。各転送処理ごとのタスクについて、このスリープ時間を、転送優先度の高いものは短く、転送優先度の低いものは長く設定することにより、圧縮データと非圧縮データの各転送について異なる転送優先度をつける方法がある。
図７Ｂの処理手順はこの方法を用いた例であり、圧縮データＭ１の転送処理の手順のみ示している。
図７Ｂの処理手順では、ステップＳ２１Ａにおいて、ＣＰＵはバッファ１８のＭ１バッファ部１８ｃに転送可能なデータがあるか否かを判定する。
ステップＳ２１Ａの判定結果がＹＥＳである場合、ステップＳ２２Ａにおいて、ＣＰＵはＭ１バッファ部１８ｃのデータをｎＭ１バイトだけ、外部のハードディスクドライブ（ＨＤＤ）等へ転送する。ステップＳ２２Ａが終了すると、ステップＳ２２Ｂにおいて、ＣＰＵは、ｔＭ１時間のスリープ時間を圧縮データＭ１の転送処理のタスクに設定する。
ステップＳ２１Ａの判定結果がＮＯである場合、上記ステップＳ２２Ａを行わずに上記のステップＳ２２Ｂを実行する。ステップＳ２２Ｂで設定されたｔＭ１時間のスリープ時間が経過すると、上記のステップＳ２１Ａに戻って同様の処理手順を繰り返し実行する。
図７Ｂの処理手順と同様に、ＣＰＵはマルチタスクＯＳの下で、圧縮データＭ２、非圧縮オーディオデータＡ、非圧縮ビデオデータＶの各転送処理の手順を実行して、それぞれｔＭ２、ｔＡ、ｔＶ時間のスリープ時間を設定する。これらのスリープ時間を、条件ｔＭ１＜ｔＭ２＜ｔＡ≦ｔＶを満足するように設定しておくことにより、単位時間あたりに実行される各転送処理の頻度が変わる。このようにして、図６Ｂの実施例と同様に、圧縮データと非圧縮データの各転送について異なる転送優先度を設定することができる。
図８Ａは、本発明のタスクスケジューリング方法の他の実施例を説明するためのフロー図である。図７Ａの処理手順のように、最優先の転送処理以外の転送処理も少しづつ行う方式の場合、転送処理量の総和がＣＰＵの能力を超えなければ問題ない。しかし、その他の処理の負荷が増大するなどして、全てのデータの転送処理を並行して実行することが困難となる場合がある。
このような場合に、緊急の措置として、最優先の転送処理以外の転送処理を一時停止する制御を行う方式が望ましい。これを実現するため、最優先の転送処理に係るＭ１バッファ部１８ｃのデータ量について所定の閾値を設定しておき、Ｍ１バッファ部１８ｃのデータ量がこの閾値を超えているか否かを判定する手順を追加する。この方式では、閾値を超えている（緊急状態）という判定結果が出された場合に、最優先の転送処理以外の転送処理を一時停止する。
図８Ａの処理手順はこの方式を用いた例である。
図８Ａの処理手順において、ステップＳ３１−Ｓ３４及びステップＳ３６−Ｓ４１は、図７ＡのステップＳ２１−Ｓ２４及びステップＳ２５−Ｓ３０とそれぞれ同一であるので、それらの説明は省略する。
図８Ａの処理手順では、ステップＳ３３−Ｓ３４の転送処理が終了すると、ステップＳ３５において、ＣＰＵは、Ｍ１バッファ部１８ｃのデータ量が所定の閾値を超えているか否かを判定する。ステップＳ３５の判定結果がＮＯである場合、ステップＳ３６−Ｓ４１の各転送処理を実行する。
逆に、ステップＳ３５の判定結果がＹＥＳである場合、ステップＳ３６−Ｓ４１の各転送処理を行わずに、次のステップＳ１９（図７Ａと同一のステップＳ１９）を実行する。すなわち、最優先の転送処理（ステップＳ３１−Ｓ３４）以外の転送処理（ステップＳ３６−Ｓ４１）を一時停止する。
上記した図８Ａの処理手順では、ステップＳ３５をステップＳ３３−Ｓ３４の転送処理の後に追加している。しかし、本発明のタスクスケジューリング方法はこの実施例に限定されるものではない。例えば、上記のステップＳ３５をステップＳ３６−Ｓ３７の転送処理の後に追加すれば、緊急状態でも、オーディオバッファ部１８ａから外部への非圧縮オーディオデータの転送処理は一時停止されずに続行される。
非圧縮オーディオデータは非圧縮ビデオデータよりもはるかにデータ量が少ないため、緊急状態でも非圧縮オーディオデータの転送はあまり負荷にならない。このため、このような対応も可能である。また、ステップＳ３３−Ｓ３４及びステップＳ３６−Ｓ３７の両方に閾値比較を入れ、ステップＳ３３−Ｓ３４の間の閾値比較の閾値よりステップＳ３６−Ｓ３７の間の閾値比較の閾値を低く設定し、最初にステップＳ３６−Ｓ３７の間の閾値比較で閾値を超えたら、非圧縮ビデオデータの転送をやめ、それでもＭ１−ＢＵＦのデータ量が増え続け、次のステップＳ３３−Ｓ３４の間の閾値比較でも閾値を超えるようなら、非圧縮オーディオデータの転送も停止するような構成も可能である。
図８Ｂは、マルチタスクＯＳの場合にスリープ時間を変更することで転送優先度を調整する例を説明するためのフロー図である。
図８Ｂの処理手順は、非圧縮ビデオデータＶの転送処理の手順のみ示している。
図８Ｂの処理手順では、ステップＳ４０Ａにおいて、ＣＰＵはバッファ１８のビデオバッファ部１８ｂに転送可能なデータがあるか否かを判定する。
ステップＳ４０Ａの判定結果がＹＥＳである場合、ステップＳ４１Ａにおいて、ＣＰＵはビデオバッファ部１８ｂのデータをｎＶバイトだけ、外部のビデオカード（Ｖｉｄｅｏ＿Ｃａｒｄ）等へ転送する。ステップＳ４１Ａが終了すると、ＣＰＵは次のステップＳ４２を実行する。
ステップＳ４０Ａの判定結果がＮＯである場合、上記のステップＳ４１Ａを行わずに、次のステップＳ４２を実行する。
ステップＳ４２において、ＣＰＵはビデオバッファ部１８ｂのデータ量が所定の閾値を超えているか否かを判定する。ステップＳ４２の判定結果がＮＯである場合、ステップＳ４３において、ＣＰＵは、ｔＶ１時間のスリープ時間を非圧縮ビデオデータＶの転送処理のタスクに設定する。ステップＳ４３で設定されたｔＶ１時間のスリープ時間が経過すると、上記のステップＳ４０Ａに戻って同様の処理手順を繰り返し実行する。
ステップＳ４２の判定結果がＹＥＳである場合（緊急状態）、ステップＳ４４において、ＣＰＵは、ｔＶ２時間のスリープ時間を非圧縮ビデオデータＶの転送処理のタスクに設定する。ステップＳ４４で設定されたｔＶ２時間のスリープ時間が経過すると、上記のステップＳ４０Ａに戻って同様の処理手順を繰り返し実行する。
図８Ｂの処理手順と同様に、ＣＰＵはマルチタスクＯＳの下で、圧縮データＭ１、圧縮データＭ２、非圧縮オーディオデータＡの各転送処理の手順を実行して、それぞれｔＭ１、ｔＭ２、ｔＡ時間のスリープ時間を設定する。これらのスリープ時間を、条件ｔＭ１＜ｔＭ２＜ｔＡ≦ｔＶ１を満足するように設定しておくことにより、単位時間あたりに実行される各転送処理の頻度が変わる。
図８Ｂの処理手順では、緊急状態でない場合のスリープ時間ｔＶ１と、緊急状態である場合のスリープ時間ｔＶ２を、条件ｔＶ１＜＜ｔＶ２を満足するように設定している。この設定を行うことで、緊急状態にはビデオバッファ部１８ｂから外部への非圧縮ビデオデータＶの転送処理の頻度を下げて、相対的に他のデータの転送処理の優先度を上げている。
また、図８Ｂの処理手順におけるステップＳ４２−Ｓ４４と同様の判定ステップを、圧縮データＭ２や非圧縮オーディオデータＡの各転送処理に追加することにより、圧縮データＭ１の転送優先度をさらに上げることも可能である。
図９Ａは、本発明のタスクスケジューリング方法の他の実施例を説明するためのフロー図である。
前述の図８Ａの処理手順では、ステップＳ３５においてホストシステム側のバッファ１８のＭ１バッファ部１８ｃ内のデータ量が閾値を超えるか否かを判定している。これに対し、図９Ａの処理手順の違いは、ステップＳ５５において符号化復号化装置側（ＭＰＥＧ２＿ＣＯＤＥＣ１０、ＡＳＩＣ回路１２、ＵＳＢデバイスコントローラ１４等を含む）の内部バッファ内の圧縮データＭ１のデータ量が所定の閾値を超えるか否かを判定している点のみである。
ホストシステム側のＣＰＵ負荷が増大して、符号化復号化装置からの転送自体が停滞するような場合、Ｍ１−ＢＵＦのデータ量が増えないため、図８のようなＭ１−ＢＵＦの閾値比較ではチェックできず、符号化復号化装置側のバッファがオーバーフローしてやはりデータが失われる恐れがある。このため、符号化復号化装置側のバッファを監視して、閾値を超えたら転送を制限するように構成したのが図９Ａである。ＰＣＩバスでのバスマスタ転送のように、符号化復号化装置からの転送がＣＰＵ負荷と関係しないようなシステム構成では、図８でも実用的な場合がある。
図９Ａの処理手順における、その他のステップＳ５１−Ｓ５４及びステップＳ５６−Ｓ６１は、図８Ａの処理手順におけるステップＳ３１−Ｓ３４及びステップＳ３６−Ｓ４１とそれぞれ同一であるので、それらの説明は省略する。
前述の図８Ａと同様に、図９Ａの処理手順において、上記のステップＳ５５をステップＳ５６−Ｓ５７の転送処理の後に追加すれば、緊急状態でも、オーディオバッファ部１８ａから外部への非圧縮オーディオデータの転送処理は一時停止されずに続行される。
図９Ｂは、マルチタスクＯＳの場合にスリープ時間を変更することで転送優先度を調整する例を説明するためのフロー図である。
図９Ｂの処理手順は、非圧縮ビデオデータＶの転送処理の手順のみ示している。
図９Ｂの処理手順では、ステップＳ６０Ａにおいて、ＣＰＵはバッファ１８のビデオバッファ部１８ｂに転送可能なデータがあるか否かを判定する。
ステップＳ６０Ａの判定結果がＹＥＳである場合、ステップＳ６１Ａにおいて、ＣＰＵはビデオバッファ部１８ｂのデータをｎＶバイトだけ、外部のビデオカード（Ｖｉｄｅｏ＿Ｃａｒｄ）等へ転送する。ステップＳ６１Ａが終了すると、ＣＰＵは次のステップＳ６２を実行する。
ステップＳ６０Ａの判定結果がＮＯである場合、上記のステップＳ６１Ａを行わずに、次のステップＳ６２を実行する。
ステップＳ６２において、ＣＰＵは符号化復号化装置側（ＭＰＥＧ２＿ＣＯＤＥＣ１０、ＡＳＩＣ回路１２、ＵＳＢデバイスコントローラ１４等を含む）の内部バッファ内の圧縮データＭ１のデータ量が所定の閾値を超えるか否かを判定する。ステップＳ６２の判定結果がＮＯである場合、ステップＳ６３において、ＣＰＵは、ｔＶ１時間のスリープ時間を非圧縮ビデオデータＶの転送処理のタスクに設定する。ステップＳ４３で設定されたｔＶ１時間のスリープ時間が経過すると、上記のステップＳ６０Ａに戻って同様の処理手順を繰り返し実行する。
ステップＳ６２の判定結果がＹＥＳである場合（緊急状態）、ステップＳ６４において、ＣＰＵは、ｔＶ２時間のスリープ時間を非圧縮ビデオデータＶの転送処理のタスクに設定する。ステップＳ６４で設定されたｔＶ２時間のスリープ時間が経過すると、上記のステップＳ６０Ａに戻って同様の処理手順を繰り返し実行する。
図９Ｂの処理手順と同様に、ＣＰＵはマルチタスクＯＳの下で、圧縮データＭ１、圧縮データＭ２、非圧縮オーディオデータＡの各転送処理の手順を実行して、それぞれｔＭ１、ｔＭ２、ｔＡ時間のスリープ時間を設定する。これらのスリープ時間を、条件ｔＭ１＜ｔＭ２＜ｔＡ≦ｔＶ１を満足するように設定しておくことにより、単位時間あたりに実行される各転送処理の頻度が変わる。
図９Ｂの処理手順では、緊急状態でない場合のスリープ時間ｔＶ１と、緊急状態である場合のスリープ時間ｔＶ２を、条件ｔＶ１＜＜ｔＶ２を満足するように設定している。この設定を行うことで、緊急状態にはビデオバッファ部１８ｂから外部への非圧縮ビデオデータＶの転送処理の頻度を下げて、相対的に他のデータの転送処理の優先度を上げている。
図１０Ａは、本発明のタスクスケジューリング方法の他の実施例を説明するためのフロー図である。
図１０Ａの処理手順は、ＵＳＢデバイスコントローラ１４側で保持している圧縮データＭ１、非圧縮ビデオデータＶ、非圧縮オーディオデータＡを、ホストシステム側のバッファ１８へ転送する際の転送優先度を調整する方法である。
図１０Ａの処理手順では、まず、ステップＳ７１において、ＣＰＵは、ＵＳＢデバイスコントローラ１４側からホストシステム側のバッファ１８への圧縮データＭ１の転送処理を試みる。
ＵＳＢインターフェイスの特徴として、転送を試みて、有効な転送データがあれば、ＡＣＫ信号（ａｃｋｎｏｗｌｅｄｇｅ）が、有効な転送データがなければ、ＮＡＫ信号（ｎｅｇａｔｉｖｅ−ａｃｋｎｏｗｌｅｄｇｅ）が返される。
ステップＳ７２において、ホストシステム側のバッファ１８からＵＳＢデバイスコントローラ１４側への圧縮データＭ２の転送処理を試みる。
ステップＳ７３において、ＣＰＵは、ＵＳＢデバイスコントローラ１４側からホストシステム側のバッファ１８への圧縮データＭ１の転送処理を試みる。
ステップＳ７４において、ＣＰＵは、ＵＳＢデバイスコントローラ１４側からホストシステム側のバッファ１８への非圧縮オーディオデータＡの転送処理を試みる。
ステップＳ７５において、ＣＰＵは、ＵＳＢデバイスコントローラ１４側からホストシステム側のバッファ１８への圧縮データＭ１の転送処理を試みる。
ステップＳ７６において、ＣＰＵは、ＵＳＢデバイスコントローラ１４側からホストシステム側のバッファ１８への非圧縮ビデオデータＶの転送処理を試みる。
ステップＳ１９において、ＣＰＵは、その他の処理を実行する。ステップＳ１９が終了すると、上記のステップＳ７１に戻って同様の処理手順を繰り返し実行する。
図１０Ａの処理手順では、予めデータの有無は不明であるため、ステップＳ７１、Ｓ７３及びＳ７５のように、圧縮データＭ１の転送処理を試みる回数を増やすことによって、圧縮データＭ１の転送優先度を上げている。
前述の実施例と同様に、ホストシステム側のバッファ１８のＭ１バッファ部１８ｃのデータ量が閾値を超えているか否かの判定を行う方式や、ＵＳＢデバイスコントローラ１４側の内部バッファの圧縮データＭ１のデータ量過多の通知（緊急状態）に応じて、その他のデータの転送処理を一時停止する方式を用いることも可能である。
図１０Ｂは、マルチタスクＯＳの場合にスリープ時間を変更することで転送優先度を調整する例を説明するためのフロー図である。
図１０Ｂの処理手順では、ステップＳ７１Ａにおいて、ＣＰＵはＵＳＢデバイスコントローラ１４側からホストシステム側のバッファ１８への圧縮データＭ１の転送処理を試みる。
ステップＳ７１Ｂにおいて、ＣＰＵは、ｔＭ１時間のスリープ時間を圧縮データＭ１の転送処理のタスクに設定する。ステップＳ７１Ｂで設定されたｔＭ１時間のスリープ時間が経過すると、上記のステップＳ７１Ａに戻って同様の処理手順を繰り返し実行する。
図１０Ｂの処理手順と同様に、ＣＰＵはマルチタスクＯＳの下で、圧縮データＭ２、非圧縮オーディオデータＡ、非圧縮ビデオデータＶの各転送処理の手順を実行して、それぞれｔＭ２、ｔＡ、ｔＶ時間のスリープ時間を設定する。これらのスリープ時間を、条件ｔＭ１＜ｔＭ２＜ｔＡ≦ｔＶを満足するように設定しておくことにより、単位時間あたりに実行される各転送処理の頻度を変えることができる。
前述の実施例と同様に、ホストシステム側のバッファ１８のＭ１バッファ部１８ｃのデータ量が閾値を超えているか否かの判定を行う方式や、ＵＳＢデバイスコントローラ１４側の内部バッファの圧縮データＭ１のデータ量過多の通知（緊急状態）に応じて、その他のデータの転送処理を一時停止する方式を用いることも可能である。
図１１は、本発明のタスクスケジューリング方法の他の実施例を説明するための図である。
図１のシステムにおいて、符号化復号化装置側のＡＳＩＣ回路１２内のスイッチＳＷ５とレジスタ２３を制御することによって、各データの転送優先度を変えることが可能である。ＵＳＢデバイスコントローラ１４は、レジスタ設定信号をレジスタ２３へ出力することによって、スイッチＳＷ５の切替え動作を制御する。
図１１に示したように、スイッチＳＷ５の切替え動作は、ＭＰＥＧ２＿ＣＯＤＥＣ１０側の、圧縮データＭ１の入力端子Ｔ１、非圧縮オーディオデータＡの入力端子Ｔ３、非圧縮ビデオデータＶの入力端子Ｔ４の中のいずれか１つを選択して、ＵＳＢデバイスコントローラ１４側への出力端子Ｔ２と導通状態にする機能を有する。このスイッチＳＷ５の切替え動作は、ＵＳＢデバイスコントローラ１４から出力され、レジスタ２３に保持されるスイッチ切替え情報に基づいて行われる。ＵＳＢデバイスコントローラ１４からレジスタ２３へ出力されるレジスタ設定信号に応じて、上記のスイッチ切替え情報がレジスタ２３に保持される。
レジスタ２３の設定モードとしては、定期的にスイッチＳＷ５を切り替えるモードと、圧縮データＭ１の転送を優先にするモードと、圧縮データＭ１の転送を最優先にするモード等がある。
レジスタ２３に保持されたスイッチ切替え情報に基づいて、圧縮データＭ１、非圧縮オーディオデータＡ、非圧縮ビデオデータＶの中のどのデータをＵＳＢデバイスコントローラ１４側へ転送するかが決定される。
例えば、ＵＳＢホストシステム１６から圧縮データＭ１の転送要求が来ている状態で、スイッチＳＷ５が端子Ｔ１と端子Ｔ２を導通状態にする切替え動作が設定されていると、圧縮データＭ１がＵＳＢホストシステム１６側へ転送される。このとき、圧縮データＭ１の転送要求に対し、ＡＣＫ信号が返される。
また、ＵＳＢホストシステム１６から、圧縮データＭ１、非圧縮オーディオデータＡ、非圧縮ビデオデータＶの各転送要求が均等に来ている状態でも、スイッチＳＷ５が端子Ｔ１と端子Ｔ２を導通状態にする切替え動作が設定されていると、圧縮データＭ１が優先されてＵＳＢホストシステム１６側へ転送される。このとき、非圧縮オーディオデータＡ、非圧縮ビデオデータＶの各転送要求に対しては、ＮＡＫ信号が返され、これらのデータの転送は行われない。結果として、圧縮データＭ１のＵＳＢホストシステム１６側への転送が優先される。
なお、データ転送の優先度を変えるレジスタ設定をホストシステム側から制御するということには限定されず、符号化復号化装置内で、装置内のバッファを監視してデータ転送の優先度を自立的に変える構成も可能である。
図１２Ａ、図１２Ｂ及び図１２Ｃは、ホストシステム側のバッファの圧縮データのための領域サイズを変更する場合を説明するための図である。
ホストシステム（ＰＣ）側のバッファ１８内における、非圧縮オーディオデータＡを保持するオーディオバッファ部１８ａと、非圧縮ビデオデータＶを保持するビデオバッファ部１８ｂと、外部からの圧縮オーディオ・ビデオデータＭ２を保持するＭ２バッファ部１８ｄと、符号化復号化装置側からの圧縮オーディオ・ビデオデータＭ１を保持するＭ１バッファ部１８ｃの各領域のサイズは、本来、単位時間あたりに発生するデータ量の比率に応じて割当てるべきである。
具体的なデータ量を一例として挙げれば、非圧縮ビデオデータＶは約２００Ｍｂｉｔ／ｓｅｃ、非圧縮オーディオデータＡは約１．５Ｍｂｉｔ／ｓｅｃ、圧縮データＭ１、Ｍ２は圧縮率により異なるが、約１−３０Ｍｂｉｔ／ｓｅｃである。従って、通常状態において、非圧縮オーディオデータＡのサイズを１とすれば、非圧縮ビデオデータＶは１３３程度、圧縮データＭ１、Ｍ２はそれぞれ２０程度が目安となる。
図１２Ａは、通常状態におけるバッファ１８内の各領域のサイズ配分を示す。
しかし、各データの転送処理以外の、他の処理の負荷増大などによって、バッファ１８から外部のＨＤＤ、Ａｕｄｉｏ＿ＣａｒｄやＶｉｄｅｏ＿Ｃａｒｄへ転送されていく処理が停滞する場合が生じる。このような場合、バッファ１８内のデータ量が増加していく。
前述の各実施例のタスクスケジューリング方法は、非圧縮ビデオデータＶや非圧縮オーディオデータＡの転送処理の頻度を低下させて（もしくは、一時停止させて）、Ｍ１バッファ部１８ｃから外部への圧縮データＭ１の転送を優先することで、バッファ１８がオーバーフローするのを防止することを目的としている。
しかし、上記のように、他の処理の負荷増大などによって、Ｍ１バッファ部１８ｃの所定の領域サイズ（容量）を超えそうな場合（緊急状態）に、この実施例のタスクスケジューリング方法では、バッファ１８において最も優先度の低いビデオバッファ部１８ｂの領域サイズを減少させて、その分をＭ１バッファ部１８ｃの領域サイズを拡大させるのに使用する。
図１２Ｂは、この実施例のタスクスケジューリング方法に従い、緊急状態においてＭ１バッファ部１８ｃの領域サイズを拡大させた場合の、バッファ１８内の各領域のサイズ配分を示す。図１２Ｂに示した、ビデオバッファ部１８ｂの領域サイズが１００、Ｍ１バッファ部１８ｃの領域サイズが１５３といった数値は単に一例を示したものである。
図１２Ｃは、この実施例のタスクスケジューリング方法に従い、緊急状態においてＭ１バッファ部１８ｃの領域サイズをさらに拡大させた場合の、バッファ１８内の各領域のサイズ配分を示す。図１２Ｃに示した数値も単に一例を示したものであり、ビデオバッファ部１８ｂの領域サイズを０にすることや、オーディオバッファ部１８ａやＭ２バッファ部１８ｄをＭ１バッファ部１８ｃに再配分することも可能である。
同様に、符号化復号化装置内のバッファについても、圧縮データ用のデータ領域を拡大することで、バッファオーバーフローを回避する機構をもつことも可能である。
図１３Ａは、図５のシステムに適用した場合の例を説明するためのフロー図である。
図５のシステムにおいて、図示を省略するが、ＰＣＩインターフェイス３６はバスマスタＤＭＡ（ｄｉｒｅｃｔ＿ｍｅｍｏｒｙ＿ａｃｃｅｓｓ）を有し、このＤＭＡがホストシステムのＣＰＵを介さずに、符号化復号化装置側とホストシステムのバッファ１８間の圧縮データ及び非圧縮データの各転送を制御する。
ＰＣＩバスを使用した図５のシステムの場合、バスマスタＤＭＡを起動（ｋｉｃｋ）したら、ＤＭＡの完了をポーリングで待つか、ＤＭＡの完了の割り込みに応じて当該タスクが起動するように設定して、その他の処理の実行を開始する方式が適用されている。
この実施例のタスクスケジューリングの転送優先度の変更方法は、基本的に、ＵＳＢバスを使用した前述の実施例の場合と同様である。図１３Ａの処理手順は、ホストシステムのＣＰＵが実行する。
図１３Ａの処理手順では、ステップＳ８１において、ＣＰＵはＤＭＡがＭ１バッファ部１８ｃの圧縮データＭ１を外部のハードディスクドライブ（ＨＤＤ）等へ転送を実行中であるか否かを判定する。
ステップＳ１１の判定結果がＮＯである場合、ステップＳ８２において、ＣＰＵはＤＭＡを起動して、Ｍ１バッファ部１８ｃのデータの、ハードディスクドライブ等への転送を開始させる。ステップＳ８２が終了すると、次のステップＳ８３を実行する。
ステップＳ８１の判定結果がＹＥＳである場合、上記ステップＳ８２を行わずに次のステップＳ８３を実行する。
ステップＳ８３において、ＣＰＵはＤＭＡが外部からの圧縮データＭ２をＭ２バッファ部１８ｄへ転送を実行中であるか否かを判定する。
ステップＳ８３の判定結果がＮＯである場合、ステップＳ８４において、ＣＰＵはＤＭＡを起動して、外部のＨＤＤから圧縮データＭ２を読み出し、Ｍ２バッファ部１８ｄへの転送を開始させる。ステップＳ８４が終了すると、次のステップＳ８５を実行する。
ステップＳ８３の判定結果がＹＥＳである場合、上記ステップＳ８４を行わずに次のステップＳ８５を実行する。
ステップＳ８５において、ＣＰＵはＤＭＡがバッファ１８のオーディオバッファ部１８ａのデータＡを外部のＨＤＤへ転送を実行中であるか否かを判定する。
ステップＳ８５の判定結果がＮＯである場合、ステップＳ８６において、ＣＰＵは、Ｍ１バッファ部１８ｃのデータ量が所定の閾値を超えているか否かを判定する。ステップＳ８６の判定結果がＮＯである場合、ステップＳ８７において、ＣＰＵはＤＭＡを起動して、オーディオバッファ部１８ａのデータＡの、外部のＨＤＤへの転送を開始させる。ステップＳ８７が終了すると、次のステップＳ８８を実行する。
ステップＳ８５又はステップＳ８６の判定結果がＹＥＳである場合、上記のステップＳ８７を行わずに、次のステップＳ８８を実行する。
ステップＳ８８において、ＣＰＵはＤＭＡがバッファ１８のビデオバッファ部１８ｂのデータＶを外部のＨＤＤへ転送を実行中であるか否かを判定する。
ステップＳ８８の判定結果がＮＯである場合、ステップＳ８９において、ＣＰＵは、Ｍ１バッファ部１８ｃのデータ量が所定の閾値を超えているか否かを判定する。ステップＳ８９の判定結果がＮＯである場合、ステップＳ９０において、ＣＰＵはＤＭＡを起動して、ビデオバッファ部１８ｂのデータＶの、外部のＨＤＤへの転送を開始させる。ステップＳ９０が終了すると、次のステップＳ１９を実行する。
ステップＳ８８又はステップＳ８９の判定結果がＹＥＳである場合、上記のステップＳ９０を行わずに、次のステップＳ１９を実行する。
ステップＳ１９において、ＣＰＵは、上記した以外の、その他の処理を実行する。ステップＳ１９が終了すると、上記のステップＳ８１に戻って同様の処理手順を繰り返し実行する。
図１３Ｂは、マルチタスクＯＳの場合にスリープ時間を変更することで転送優先度を調整する例を説明するためのフロー図である。
図１３Ｂの処理手順は、非圧縮ビデオデータＶの転送処理の手順のみ示している。
図１３Ｂの処理手順では、ステップＳ９１において、ＣＰＵはＤＭＡを起動して、ビデオバッファ部１８ｂのデータＶの、外部のＨＤＤへの転送を開始させる。
ステップＳ９２において、ＣＰＵは、無限（ｉｎｆｉｎｉｔｅ）のスリープ時間を非圧縮ビデオデータＶの転送処理のタスクに設定する。
ステップＳ９３において、ＣＰＵは、Ｍ１バッファ部１８ｃのデータ量が所定の閾値を超えているか否かを判定する。ステップＳ９３の判定結果がＮＯである場合、上記のステップＳ９１に戻って同じ処理手順を繰り返し実行する。
ステップＳ９３の判定結果がＹＥＳである場合、ステップＳ９４において、ＣＰＵは、ｔＶ時間のスリープ時間を非圧縮ビデオデータＶの転送処理のタスクに設定する。ステップＳ９３で設定されたｔＶ時間のスリープ時間が経過すると、上記のステップＳ９３に戻って同様の処理手順を繰り返し実行する。
図１３Ｂの処理手順と同様に、ＣＰＵはマルチタスクＯＳの下で、圧縮データＭ１、圧縮データＭ２、非圧縮オーディオデータＡの各転送処理の手順を実行して、それぞれ無限のスリープ時間、無限のスリープ時間、ｔＡ時間のスリープ時間を設定する。この実施例の処理手順では、ｔＡ時間とｔＶ時間だけ、ＤＭＡの起動を遅らせることで、非圧縮オーディオデータＡと非圧縮ビデオデータＶの各転送処理の頻度を下げて、相対的に圧縮データデータＭ１、Ｍ２の転送処理の優先度を上げている。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、下記請求項に記載した範囲内で様々な変形が可能である。
【図１】
2004093446.tif 000003
【図２】
2004093446.tif 000004
【図３】
2004093446.tif 000005
【図４】
2004093446.tif 000006
【図５】
2004093446.tif 000007
2004093446.tif 000008
2004093446.tif 000009
2004093446.tif 000010
2004093446.tif 000011
2004093446.tif 000012
2004093446.tif 000013
2004093446.tif 000014
2004093446.tif 000015
2004093446.tif 000016
2004093446.tif 000017
【図１１】
2004093446.tif 000018
2004093446.tif 000019
2004093446.tif 000020
2004093446.tif 000021
【手続補正書】
【提出日】平成17年3月1日(2005.3.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホストシステムと符号化復号化装置間で圧縮データ及び非圧縮データを同時に転送する際に、前記ホストシステムのバッファから外部へ圧縮オーディオ・ビデオデータを第１の転送優先度で転送する手順と、
非圧縮オーディオ・ビデオデータを前記バッファから外部へ、前記第１の転送優先度より低い第２の転送優先度で転送する手順と
を有することを特徴とするタスクスケジューリング方法。
【請求項２】
外部からの圧縮オーディオ・ビデオデータを、前記バッファを介して前記符号化復号化装置側へ、前記第１の転送優先度より低く、前記第２の転送優先度より高い第３の転送優先度で転送する手順を有することを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項３】
前記非圧縮オーディオ・ビデオデータは非圧縮オーディオデータと非圧縮ビデオデータの少なくとも一方を含み、かつ、前記非圧縮オーディオデータの前記バッファから外部への転送優先度は前記非圧縮ビデオデータの前記バッファから外部への転送優先度以上となるように設定されることを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項４】
前記ホストシステムの前記バッファに保持される圧縮オーディオ・ビデオデータ量が所定の閾値を超えているか否かを判定する手順を有し、前記閾値を超えている場合には、前記非圧縮オーディオ・ビデオデータの前記ホストシステム側の前記バッファから外部への転送を制限もしくは停止することを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項５】
前記符号化復号化装置のバッファに保持される圧縮オーディオ・ビデオデータ量が所定の閾値を超えているか否かを判定する手順を有し、前記閾値を超えている場合には、前記非圧縮オーディオ・ビデオデータの前記ホストシステム側の前記バッファから外部への転送を制限もしくは停止することを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項６】
前記ホストシステムと前記符号化復号化装置間の圧縮データ及び非圧縮データの転送を、ＵＳＢ、ＩＥＥＥ１３９４等のシリアルバスを用いて行うことを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項７】
前記ホストシステムと前記符号化復号化装置間の圧縮データ及び非圧縮データの転送を、ＰＣＩ等のパラレルバスを用いて行うことを特徴とする請求項１記載のタスクスケジューリング方法。
【請求項８】
ホストシステムと符号化復号化装置間で圧縮データ及び非圧縮データを同時に転送する際に、前記ホストシステムのバッファから外部へ圧縮オーディオ・ビデオデータを第１の転送優先度で転送する第１の手段と、
非圧縮オーディオ・ビデオデータを前記バッファから外部へ、前記第１の転送優先度より低い第２の転送優先度で転送する第２の手段と
を備えることを特徴とするデータ処理装置。
【請求項９】
ホストシステムと符号化復号化装置間で圧縮オーディオ・ビデオデータ及び非圧縮オーディオ・ビデオデータの転送を行う転送手段と、
前記ホストシステムからの指示もしくは前記符号化復号化装置内のバッファの状態に応じて、前記転送手段の転送優先度を変更して圧縮データのバッファオーバーフローを回避する手段と
を備えることを特徴とするデータ処理装置。
【請求項１０】
前記符号化復号化装置側の圧縮オーディオ・ビデオデータを保持する第１の領域が所定の閾値を超えた場合に、前記第１の領域を拡大して、前記符号化復号化装置側の圧縮オーディオ・ビデオデータを保持する第２の領域を縮小することを特徴とする請求項９記載のデータ処理装置。
【国際調査報告】
2004093446.tif 000022
2004093446.tif 000023
2004093446.tif 000024