(57)【特許請求の範囲】
【請求項１】
第１の領域および第２の領域に、送信するデータを順次格納する格納手段と、
前記第１の領域または前記第２の領域毎に、前記データの送信を制御する送信制御手段と、
前記第１の領域に格納された前記データの送信が終了した場合、前記データの送信が終了した時刻を取得する取得手段と、
前記データの送信が終了した時刻、および前記第２の領域に格納されている前記データの送信に要する時間を基に、前記第１の領域に格納されている前記データの次の送信の時刻を算出する算出手段と
を含むことを特徴とする送信装置。
【請求項２】
前記送信制御手段は、IEEE1394に規定される方式により前記データの送信を制御する
ことを特徴とする請求項１に記載の送信装置。
【請求項３】
前記データは、DVCR方式のデータを含む
ことを特徴とする請求項１に記載の送信装置。
【請求項４】
前記データは、MPEG方式のデータを含む
ことを特徴とする請求項１に記載の送信装置。
【請求項５】
第１の領域および第２の領域に、送信するデータを順次格納する格納ステップと、
前記第１の領域または前記第２の領域毎に、前記データの送信を制御する送信制御ステップと、
前記第１の領域に格納された前記データの送信が終了した場合、前記データの送信が終了した時刻を取得する取得ステップと、
前記データの送信が終了した時刻、および前記第２の領域に格納されている前記データの送信に要する時間を基に、前記第１の領域に格納されている前記データの次の送信の時刻を算出する算出ステップと
を含むことを特徴とする送信方法。
【請求項６】
第１の領域および第２の領域に、送信するデータを順次格納する格納ステップと、
前記第１の領域または前記第２の領域毎に、前記データの送信を制御する送信制御ステップと、
前記第１の領域に格納された前記データの送信が終了した場合、前記データの送信が終了した時刻を取得する取得ステップと、
前記データの送信が終了した時刻、および前記第２の領域に格納されている前記データの送信に要する時間を基に、前記第１の領域に格納されている前記データの次の送信の時刻を算出する算出ステップと
を含むことを特徴とするコンピュータが読み取り可能なプログラムが格納されているプログラム格納媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、送信装置および送信方法、並びにプログラム格納媒体に関し、特に、タイムスタンプが付されたデータを送信する送信装置および送信方法、並びにプログラム格納媒体に関する。
【０００２】
【従来の技術】
図１は、従来のIEEE（Institute of Electrical and Electronic Engineers）1394の規定に基づくバス（以下、1394バスと称する）を介して、アイソクロナス伝送によりデータを送信する装置の１部の構成を示すブロック図である。
【０００３】
送信バッファ１は、アイソクロナス伝送により送信されるアイソクロナス送信用データを一時的に記憶する。送信バッファ１に記憶されているアイソクロナス送信用データが、アイソクロナスパケットとして、1394バスを介して送信されたとき、専用CPU２は、アイソクロナスパケットが送信された、サイクルタイム（1394バス上の時刻）を取得する。
【０００４】
専用CPU２は、取得したサイクルタイムを基に、タイムスタンプを生成して、生成したタイムスタンプを送信バッファ１に記憶されているアイソクロナス送信用データに付加する。
【０００５】
タイムスタンプは、アイソクロナスパケットにDVデータが格納されている場合、CIP（Common Isochronous Packet）内のSYTフィールドに設定される値、またはアイソクロナスパケットがMPEG（Moving Picture Experts Group）-2の規格に基づくトランスポートストリームパケットである場合、SPH（Source Packet Header）に格納される値である。
【０００６】
【発明が解決しようとする課題】
このように、パケットに格納されたデータに正しいタイムスタンプを設定して、送信するためには、バッファと専用のCPUとが必要とされ、機器構成が複雑になり、また高価になるという問題があった。
【０００７】
本発明はこのような状況に鑑みてなされたものであり、簡単な構成で、送信するデータに正しいタイムスタンプである時刻を設定できるようにすることを目的とする。
【０００８】
【課題を解決するための手段】
請求項１に記載の送信装置は、第１の領域および第２の領域に、送信するデータを順次格納する格納手段と、第１の領域または第２の領域毎に、データの送信を制御する送信制御手段と、第１の領域に格納されたデータの送信が終了した場合、データの送信が終了した時刻を取得する取得手段と、データの送信が終了した時刻、および第２の領域に格納されているデータの送信に要する時間を基に、第１の領域に格納されているデータの次の送信の時刻を算出する算出手段とを含むことを特徴とする。
【０００９】
送信制御手段は、IEEE1394に規定される方式によりデータの送信を制御するようにすることができる。
【００１０】
送信装置は、データに、DVCR方式のデータを含むようにすることができる。
【００１１】
送信装置は、データに、MPEG方式のデータを含むようにすることができる。
【００１２】
請求項５に記載の送信方法は、第１の領域および第２の領域に、送信するデータを順次格納する格納ステップと、第１の領域または第２の領域毎に、データの送信を制御する送信制御ステップと、第１の領域に格納されたデータの送信が終了した場合、データの送信が終了した時刻を取得する取得ステップと、データの送信が終了した時刻、および第２の領域に格納されているデータの送信に要する時間を基に、第１の領域に格納されているデータの次の送信の時刻を算出する算出ステップとを含むことを特徴とする。
【００１３】
請求項６に記載のプログラム格納媒体のプログラムは、第１の領域および第２の領域に、送信するデータを順次格納する格納ステップと、第１の領域または第２の領域毎に、データの送信を制御する送信制御ステップと、第１の領域に格納されたデータの送信が終了した場合、データの送信が終了した時刻を取得する取得ステップと、データの送信が終了した時刻、および第２の領域に格納されているデータの送信に要する時間を基に、第１の領域に格納されているデータの次の送信の時刻を算出する算出ステップとを含むことを特徴とする。
【００１４】
請求項１に記載の送信装置、請求項５に記載の送信方法、および請求項６に記載のプログラム格納媒体においては、第１の領域および第２の領域に、送信するデータが順次格納され、第１の領域または第２の領域毎に、データの送信が制御され、第１の領域に格納されたデータの送信が終了した場合、データの送信が終了した時刻が取得され、データの送信が終了した時刻、および第２の領域に格納されているデータの送信に要する時間を基に、第１の領域に格納されているデータの次の送信の時刻が算出される。
【００１５】
【発明の実施の形態】
図２は、本発明に係る送信装置の一実施の形態の構成を示すブロック図である。
【００１６】
CPU１１は、送信装置全体を制御する。CPU１１は、送信プログラムを実行して、ハードディスクコントローラ１２を制御し、AV（Audio Video）データをハードディスク１３から読み出させて、読み出したAVデータをアイソクロナス送信用データとして、送信バッファメモリ１４に格納させる。CPU１１は、1394DMA（Direct Memory Access）コントローラ１５から受信したサイクルタイム（1394バス上の時刻）、および送信バッファ１４に格納されているアイソクロナス送信用データの送信に必要な時間を基に、送信バッファ１４に格納されているアイソクロナス送信用データにタイムスタンプを設定する。
【００１７】
ハードディスクコントローラ１２は、ハードディスク１３のデータの記録または読み出しを制御する。例えば、ハードディスクコントローラ１２は、CPU１１の制御に基づいて、CPU１１またはインタフェース１６から供給されたデータをハードディスク１３に記録させ、ハードディスク１３から読み出したデータを、CPU１１、インタフェース１６、または送信バッファメモリ１４に供給する。
【００１８】
送信バッファメモリ１４は、CPU１１が実行するプログラムなどが格納されるメインメモリの１部の領域が確保されて形成される。送信バッファメモリ１４は、専用の半導体メモリで構成するようにしてもよい。
【００１９】
送信バッファメモリ１４は、図３に示すように、バッファ５１−１乃至５１−４から構成されている。バッファ５１−１乃至５１−４は、CPU１１が管理するリンクリストにより、Circular Buffer（循環バッファ）を構成する。
【００２０】
すなわち、送信バッファメモリ１４にデータが格納される場合、バッファ５１−１の最後にデータが格納されたとき、次のデータは、バッファ５１−２の先頭に格納される。送信バッファメモリ１４にデータが格納される場合、バッファ５１−２の最後にデータが格納されたとき、次のデータは、バッファ５１−３の先頭に格納される。送信バッファメモリ１４にデータが格納される場合、バッファ５１−３の最後にデータが格納されたとき、次のデータは、バッファ５１−４の先頭に格納される。送信バッファメモリ１４にデータが格納される場合、バッファ５１−４の最後にデータが格納されたとき、次のデータは、バッファ５１−１の先頭に格納される。
【００２１】
送信バッファメモリ１４からデータが読み出される場合、バッファ５１−１の最後からデータが読み出されたとき、次のデータは、バッファ５１−２の先頭から読み出される。送信バッファメモリ１４からデータが読み出される場合、バッファ５１−２の最後からデータが読み出されたとき、次のデータは、バッファ５１−３の先頭から読み出される。送信バッファメモリ１４からデータが読み出される場合、バッファ５１−３の最後からデータが読み出されたとき、次のデータは、バッファ５１−４の先頭から読み出される。送信バッファメモリ１４からデータが読み出される場合、バッファ５１−４の最後からデータが読み出されたとき、次のデータは、バッファ５１−１の先頭から読み出される。
【００２２】
1394DMAコントローラ１５は、送信バッファメモリ１４に格納されているデータを、1394バスのアイソクロナス伝送のサイクル毎に指定された量ずつDMA転送し（読み出して）、転送されたデータに後述する1394パケットヘッダを付して、1394バス上をアイソクロナスパケットとして伝送する。
【００２３】
図４は、DVCR（Digital Video Cassette Recording）方式のデータを格納するアイソクロナスパケットの例を示す図である。
【００２４】
アイソクロナスパケットは、例えば、1394パケットヘッダ、header CRC（Cyclic Redundancy Check ）、CIP（Common Isochronous Packet）ヘッダ、n個のデータブロック、およびdata CRCから構成される。なお、送信バッファメモリ１４に格納されているデータは、CIPヘッダ、n個のデータブロック、およびdata CRCから構成される。すなわち、1394パケットヘッダおよびheader CRCは、1394DMAコントローラ１５により付加される。
【００２５】
アイソクロナスパケットの先頭に配置される1394パケットヘッダには、送信されるパケットのバイト数が格納されるdata lengthフィールド、アイソクロナスパケットのフォーマットに関するラベルが格納されるtagフィールド、アイソクロナスパケットが伝送されるチャネルの番号が格納されるchannelフィールド、アイソクロナスパケットの種類およびトランザクションのタイプを指定するコードが格納されるtcodeフィールド、およびアプリケーション特有の制御に利用されるシンクロナイゼーションコードが格納されるsyフィールドが配置される。
【００２６】
header CRCには、ヘッダのエラー検出用のコードが格納される。
【００２７】
CIPヘッダには、送信ノードIDが格納されるSIDフィールド、データブロックサイズが格納されるDBSフィールド、データの分割数が格納されるFNフィールド、パディングのサイズが格納されるQPCフィールド、ソースパケットのヘッダのフラグが格納されるSPHフィールド、データブロックの計数値を格納するDBCフィールド、およびデータブロックに格納されているデータ形式を示すフォーマットタイプが格納されるFMTフィールドなどが配置される。
【００２８】
データブロックに格納されているデータがDVCRフォーマットであるとき、CIPヘッダには、更に、１秒間のフィールド数、ビデオフォーマット、フレーム同期用のタイムスタンプが格納される。
【００２９】
フレーム同期用のタイムスタンプは、図４に示すSYTフィールドに格納される。
【００３０】
SYTフィールドに格納されるDVCRのフレーム同期用のタイムスタンプには、フレームの先頭に対応するサイクルタイム（1394バス上の時刻）に、固定ディレイ（450μｓ）を加算した値が設定される。受信装置は、SYTフィールドに格納されるDVCRのフレーム同期用のタイムスタンプと、1394バスのサイクルタイムとを基に、固定ディレイに対応したフレーム同期信号を生成することができる。
【００３１】
データブロックには、送信すべき画像または音声のデータが格納される。アイソクロナスパケットにおいては、データブロックの数を０とすることができる。すなわち、アイソクロナスパケットにデータブロックが含まれないようにすることができ、このときアイソクロナスパケットは、1394パケットヘッダ、header CRC、およびCIPヘッダのみから構成される。
【００３２】
data CRCには、データブロックのエラー検出用のコードが格納される。
【００３３】
図５は、1394バスのデータ伝送のサイクル構造を示す図である。1394バスでは、データは、パケットに分割され、125μＳの長さのサイクルを基準として時分割にて伝送される。このサイクルは、サイクルマスタ機能を有するノード（1394バスに接続されている機器の内のいずれか）から供給されるサイクルスタート信号によって作り出される。アイソクロナスパケットは、全てのサイクルの先頭から伝送に必要な帯域（チャンネルに対応する。時間単位であるが帯域と呼ばれる）を確保する。このため、アイソクロナス伝送では、データの一定時間内の伝送が保証される。ただし、伝送エラーが発生した場合は、保護する仕組みが無く、データは失われる。各サイクルのアイソクロナス伝送に使用されてない時間に、アービトレーションの結果、1394バスを確保したノードが、アシンクロナスパケットを送出する。アシンクロナス伝送では、アクノリッジ、およびリトライを用いることにより、確実な伝送は保証されるが、伝送のタイミングは一定とはならない。
【００３４】
1394DMAコントローラ１５は、バッファ５１−１乃至５１−４毎に、アイソクロナス送信用データのDMA転送が終了すると、CPU１１に割り込みし、DMA転送終了割り込みの処理を実行させる。1394DMAコントローラ１５は、CPU１１に割り込みするとき、伝送が終了したときの1394バスのサイクルタイムを取得して、取得したサイクルタイムをCPU１１に供給する。
【００３５】
続いて、1394DMAコントローラ１５は、次のバッファ５１−１乃至５１−４のいずれかに格納されているアイソクロナス送信用データを読み出して、1394バスの各サイクルにおけるアイソクロナスパケットを途切れさせることなく、アイソクロナスパケットとして伝送する。
【００３６】
CPU１１は、1394DMAコントローラ１５から1394バス上での伝送が終了したときの、1394バスのサイクルタイムを取得し、取得したサイクルタイム、および、他のバッファ５１−１乃至５１−４に格納されているデータをDMA転送するために必要な1394バスのサイクル数から、転送が終了したバッファに格納されるデータが次にDMA転送され始めるサイクルタイムを算出する。
【００３７】
CPU１１は、転送が終了したバッファに格納されるデータが次にDMA転送され始めるサイクルタイムを基に、そのバッファに格納されているデータに設定すべきタイムスタンプを算出する。
【００３８】
例えば、送信バッファメモリ１４が４つのバッファ５１−１乃至５１−４から構成され、バッファ５１−１乃至５１−４のそれぞれに格納されているデータが、1394バスの200サイクルで伝送される場合、バッファ５１−２乃至５１−４に格納されているデータが伝送されるためには、600サイクルが必要とされる。
【００３９】
バッファ５１−１に格納されているデータの伝送が終了したときの1394バスのサイクルタイムがｎであるとき、バッファ５１−１に格納されているデータの次の伝送は、サイクルタイムが（n+600*（サイクルの周期））のときに、開始される。
【００４０】
CPU１１は、ハードディスクコントローラ１２を介して、ハードディスク１３からアイソクロナス送信用データを読み出して、バッファ５１−１に書き込む。CPU１１は、バッファ５１−１に書き込まれたデータのタイムスタンプを、（n+600*（サイクルの周期））を基準として生成して、生成したタイムスタンプを設定する。
【００４１】
このようにすることで、CPU１１は、アイソクロナスパケットに格納されているデータに正確なタイムスタンプを設定することができる。
【００４２】
ドライブ１７は、装着されている磁気ディスク３１、光ディスク３２、光磁気ディスク３３、または半導体メモリ３４に記録されているデータまたはプログラムを読み出して、そのデータまたはプログラムを、インターフェース１６を介して、CPU１１またはメインメモリに供給する。
【００４３】
これらのCPU１１乃至インターフェース１６は、内部バスにより相互に接続されている。
【００４４】
次に、送信プログラムを実行する送信装置によるアイソクロナス伝送の処理について説明する。
【００４５】
図６は、CPU１１および1394DMAコントローラ１５が実行する、アイソクロナス伝送の処理を説明するフローチャートである。ステップＳ１１において、CPU１１は、送信バッファメモリ１４を構成するバッファ５１−１乃至５１−４に、エンプティパケットを格納する。エンプティパケットは、データブロックを含まず、CIPヘッダのみから構成される。
【００４６】
ステップＳ１２において、1394DMAコントローラ１５は、送信バッファメモリ１４に格納されているデータのDMA転送の処理を実行し、処理は終了する。
【００４７】
送信装置が送信したエンプティパケットを受信した受信装置は、受信したエンプティパケットを捨てる。エンプティパケットを送信することにより、1394DMAコントローラ１５は、伝送すべきデータを送信することなく、サイクルタイムを取得することができる。また、1394DMAコントローラ１５は、伝送すべきデータを誤ったタイムスタンプで送信することがない。
【００４８】
図７は、1394DMAコントローラ１５が実行するDMA転送の処理の詳細を説明するフローチャートである。ステップＳ３１において、1394DMAコントローラ１５は、バッファ５１−１乃至５１−４のいずれかに格納されているアイソクロナス伝送用データを転送し、1394バスを介して、アイソクロナスパケットとして伝送する。
【００４９】
バッファ５１−１乃至５１−４のいずれかについて、初めに、ステップＳ３１の処理が実行されるとき、1394DMAコントローラ１５は、エンプティパケットを1394バスに伝送する。
【００５０】
ステップＳ３２において、1394DMAコントローラ１５は、バッファ５１−１乃至５１−４のいずれか１つに格納されている全てのデータを転送したか否かを判定し、バッファ５１−１乃至５１−４のいずれかに１つ格納されている全てのデータを転送していないと判定された場合、ステップＳ３１に戻り、データの転送の処理を繰り返す。
【００５１】
ステップＳ３２において、バッファ５１−１乃至５１−４のいずれか１つに格納されている全てのデータを転送したと判定された場合、ステップＳ３３に進み、1394DMAコントローラ１５は、1394バス上のサイクルタイムを取得して、取得したサイクルタイムをCPU１１に通知する。
【００５２】
ステップＳ３４において、1394DMAコントローラ１５は、DMA終了割り込みを実行し、ステップＳ３１に戻り、処理を繰り返す。
【００５３】
送信すべきデータを伝送する前に、エンプティパケットを送信して、送信すべきデータを伝送するときには、正しい1394バス上のサイクルタイムが取得されるので、1394DMAコントローラ１５は、常に、正しい、1394バス上のサイクルタイムを取得することができる。
【００５４】
次に、バッファ５１−１に格納されているデータの転送が終了したときに実行される、送信プログラムを実行するCPU１１による、DMA終了割り込みの処理を、図８のフローチャートを参照して、説明する。
【００５５】
ステップＳ５１において、CPU１１は、1394DMAコントローラ１５から供給された、伝送が終了したときの、1394バスのサイクルタイムを取得する。
【００５６】
ステップＳ５２において、CPU１１は、他のバッファ、バッファ５１−２乃至５１−４に格納されているデータの転送に必要なサイクル数を求める。
【００５７】
ステップＳ５３において、CPU１１は、DMA転送終了時のサイクルタイム、およびステップＳ５２の処理で算出したサイクル数を基に、次にバッファ５１−１からデータが伝送され始めるサイクルタイムを求める。
【００５８】
ステップＳ５４において、CPU１１は、ハードディスクコントローラ１２に、ハードディスク１３に記録されているデータを読み出させ、読み出したデータをアイソクロナス送信用データとしてバッファ５１−１に格納する。
【００５９】
ステップＳ５５において、CPU１１は、ステップＳ５３の処理で求めた、次に伝送され始めるサイクルタイムを基準に、バッファ５１−１に格納されているアイソクロナス送信用データにタイムスタンプを設定し、処理は終了する。
【００６０】
バッファ５１−２乃至５１−４に格納されているデータの転送が終了したときも、CPU１１は、同様の処理で、バッファ５１−２乃至５１−４に格納されているアイソクロナス送信用データにタイムスタンプを設定する。
【００６１】
このように、CPU１１は、送信バッファ１４に格納されているアイソクロナス送信用データに正しいタイムスタンプを設定することができる。
【００６２】
従って、本発明に係る送信装置は、専用のCPUを設ける必要がなく、簡単な構成で、アイソクロナスパケットに正しいタイムスタンプを設定できる。
【００６３】
なお、本発明に係る送信装置は、DVCRのSYTフィールドにタイムスタンプを設定するとして説明したが、MPEG-2のトランスポートストリームパケットのSPHなど、タイムスタンプを設定するデータであれば、いずれの方式のデータにもタイムスタンプを設定することができる。
【００６４】
なお、1394DMAコントローラ１５は、伝送を終了したときのサイクルタイムを取得して、CPU１１は、伝送を終了したときのサイクルタイムを基に、タイムスタンプを生成すると説明したが、1394DMAコントローラ１５は、伝送を開始したときのサイクルタイムを取得して、CPU１１は、伝送を開始したときのサイクルタイムを基に、タイムスタンプを生成するようにしてもよい。
【００６５】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
【００６６】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム格納媒体は、図２に示すように、磁気ディスク３１（フロッピディスクを含む）、光ディスク３２（CD-ROM(Compact Disc-Read Only Memory)、ＤＶＤ(Digital Versatile Disc)を含む）、光磁気ディスク３３（ＭＤ(Mini-Disc)を含む）、若しくは半導体メモリ３４などよりなるパッケージメディア、または、プログラムが一時的若しくは永続的に格納されるROMや、ハードディスク１３などにより構成される。プログラム格納媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【００６７】
なお、本明細書において、プログラム格納媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【００６８】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【００６９】
【発明の効果】
請求項１に記載の送信装置、請求項５に記載の送信方法、および請求項６に記載のプログラム格納媒体によれば、第１の領域および第２の領域に、送信するデータが順次格納され、第１の領域または第２の領域毎に、データの送信が制御され、第１の領域に格納されたデータの送信が終了した場合、データの送信が終了した時刻が取得され、データの送信が終了した時刻、および第２の領域に格納されているデータの送信に要する時間を基に、第１の領域に格納されているデータの次の送信の時刻が算出されるようにしたので、簡単な構成で、送信するデータに正しい時刻を設定できるようになる。
【図面の簡単な説明】
【図１】従来の装置の構成の概略を示すブロック図である。
【図２】本発明に係る送信装置の一実施の形態の構成を示すブロック図である。
【図３】送信バッファメモリ１４の構成を説明する図である。
【図４】  DVCR方式のデータの例を示す図である。
【図５】  1394バスのデータ伝送のサイクル構造を示す図である。
【図６】アイソクロナス伝送の処理を説明するフローチャートである。
【図７】  DMA転送の処理の詳細を説明するフローチャートである。
【図８】  DMA終了割り込みの処理を説明するフローチャートである。
【符号の説明】
１１  CPU，  １４  送信用バッファメモリ，  １５  1394DMAコントローラ，３１  磁気ディスク，  ３２  光ディスク，  ３３  光磁気ディスク，  ３４半導体メモリ，  ５１−１乃至５１−４  バッファ
【図１】
0004415231.tif 000002
【図２】
0004415231.tif 000003
【図３】
0004415231.tif 000004
【図４】
0004415231.tif 000005
【図５】
0004415231.tif 000006
【図６】
0004415231.tif 000007
【図７】
0004415231.tif 000008
【図８】
0004415231.tif 000009