(57)【要約】【課題】コントローラの処理負担を軽減させる。【解決手段】多重化システム１０では、エレメンタリストリームを生成する複数のエンコーダ１２〜１５と、ＣＰＵ１６と、多重化処理を行うマルチプレクサ１７と、インストラクションデータが格納される命令メモリ１８と、多重化対象となる複数本のエレメンタリデータが格納されるデータメモリ１９とを備えている。エンコーダ１２〜１５は、エレメンタリデータをユニットに分割してデータメモリ１９に格納する。ＣＰＵ１６は、ユニット毎にデータメモリ１９上の格納位置が示されたインストラクションデータを生成して命令メモリ１９内に格納する。マルチプレクサ１７は、命令メモリ１８からインストラクションデータを１つずつ読み出して、そのインストラクションデータに記述されているユニットをデータメモリ１９から順番に読み出して、多重化ストリームを生成する。【選択図】　図２
2004088735.tif 000002
【特許請求の範囲】
【請求項１】
複数本のエレメンタリデータストリームを多重化して１つの多重化ストリームを生成する多重化装置において、
複数本のエレメンタリデータストリームが入力され、入力された各エレメンタリデータストリームを格納するメモリと、
任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ１つに対応して生成し、生成した多重化インストラクションデータを対応するデータユニットの多重化順序に従って上記メモリに格納するインストラクション生成手段と、
上記多重化インストラクションデータを上記メモリから１つずつ順番に読み出し、読み出した多重化インストラクションデータに示されている格納位置からデータユニットを順番に読み出し、読み出したデータユニットを出力することによって１つの多重化ストリームを生成する多重化ストリーム生成手段と
を備える多重化装置。
【請求項２】
複数本のエレメンタリデータストリームを多重化して１つの多重化ストリームを生成する多重化装置において、
複数本のエレメンタリデータストリームが入力され、入力された各エレメンタリデータストリームを格納するメモリと、
任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ一つに対応して生成するとともに、多重化ストリーム上の任意の位置で実行されるデータ処理の実行命令が示されたコマンドインストラクションデータを生成し、生成した上記多重化インストラクションデータ及びコマンドインストラクションデータをデータユニット及び実行命令の多重化順序に従って上記メモリに格納するインストラクション生成手段と、
上記多重化インストラクションデータ及びコマンドインストラクションデータを上記メモリから１つずつ順番に読み出し、多重化インストラクションデータを読み出した場合には、その多重化インストラクションデータに示されている格納位置からデータユニットを読み出して出力し、コマンドインストラクションデータを読み出した場合には、そのコマンドインストラクションデータに示されている実行命令が記述されたコマンドデータを出力することにより、エレメンタリデータストリーム及びコマンドデータが含まれている１つの多重化ストリームを生成する多重化ストリーム生成手段と、
上記多重化ストリーム生成手段から出力された多重化ストリームが入力され、入力された多重化ストリーム中のデータ列がコマンドデータである場合には、当該コマンドデータに示されている命令内容に応じた処理を行い、入力された多重化ストリーム中のデータ列が上記エレメンタリデータストリームである場合には、入力された多重化ストリームをそのまま出力するコマンド実行手段と
を備える多重化装置。
【請求項３】
上記多重化ストリーム生成手段は、上記多重化ストリーム中のデータ列が、コマンドデータであるかエレメンタリデータストリームであるかを識別する識別フラグを、多重化ストリームに同期させて出力し、
上記コマンド実行手段は、上記識別フラグに基づき入力された多重化ストリームのデータ列がコマンドデータであるかエレメンタリデータストリームであるかを判断すること
を特徴とする請求項２記載の多重化装置。
【請求項４】
上記インストラクション生成手段は、出力する多重化ストリームにスタッフィングデータを挿入する場合には、スタッフィングデータを挿入する処理命令及びスタッフィングデータのデータ量を示したコマンドインストラクションデータを生成し、
上記多重化ストリーム生成手段は、読み出したコマンドインストラクションデータにスタッフィングデータを挿入する処理命令が示されている場合には、当該コマンドインストラクションデータに示されている内容が記述された上記コマンドデータを出力し、
上記コマンド実行手段は、コマンドデータにスタッフィングデータを挿入する処理命令が示されている場合には、多重化ストリーム中のそのコマンドデータの位置に、そのコマンドデータに示されているデータ量のスタッフィングデータを挿入すること
を特徴とする請求項２記載の多重化装置。
【請求項５】
上記インストラクション生成手段は、出力する多重化ストリームからデータを削除する場合には、データ削除処理命令及び削除するデータ量を示したコマンドインストラクションデータを生成し、
上記多重化ストリーム生成手段は、読み出したコマンドインストラクションデータにデータを削除する処理命令が示されている場合には、当該コマンドインストラクションデータに示されている内容が記述された上記コマンドデータを出力し、
上記コマンド実行手段は、コマンドデータにデータを削除する処理命令が示されている場合には、そのコマンドデータに続く多重化ストリームから、そのコマンドデータに示されているデータ量のデータを削除すること
を特徴とする請求項２記載の多重化装置。
【請求項６】
上記インストラクション生成手段は、出力する多重化ストリームに任意のデータを挿入する場合には、任意のデータを挿入する処理命令を示したコマンドインストラクションデータを生成し、
上記多重化ストリーム生成手段は、読み出したコマンドインストラクションデータに任意のデータを挿入する処理命令が示されている場合には、当該コマンドインストラクションデータに示されている内容が記述された上記コマンドデータを出力し、
上記コマンド実行手段は、コマンドデータに任意のデータを挿入する処理命令が示されている場合には、多重化ストリーム中のそのコマンドデータの位置に、そのコマンドデータに示されている任意のデータを挿入すること
を特徴とする請求項２記載の多重化装置。
【請求項７】
上記インストラクション生成手段は、出力する多重化ストリーム中の任意のタイミングでタイミング通知を発信する場合には、タイミング通知を発信する処理命令を示したコマンドインストラクションデータを生成し、
上記多重化ストリーム生成手段は、読み出したコマンドインストラクションデータにタイミング通知を発信する処理命令が示されている場合には、当該コマンドインストラクションデータに示されている内容が記述された上記コマンドデータを出力し、
上記コマンド実行手段は、コマンドデータにタイミング通知を発信する処理命令が示されている場合には、多重化ストリーム中のそのコマンドデータの位置で、タイミング通知を発信すること
を特徴とする請求項２記載の多重化装置。
【請求項８】
複数本のエレメンタリデータストリームを多重化して１つの多重化ストリームを生成する多重化装置において、
複数本のエレメンタリデータストリームが入力され、入力された各エレメンタリデータストリームを格納するメモリと、
上記メモリのデータ占有量を表すカウント値を示すカウント手段と、
任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ１つに対応して生成し、生成した多重化インストラクションデータをデータユニットの多重化順序に従って上記メモリに格納するインストラクション生成手段と、
上記多重化インストラクションデータを上記メモリから１つずつ順番に読み出し、読み出した多重化インストラクションデータに示されている格納位置からデータユニットを順番に読み出し、読み出したデータユニットを出力することによって１つの多重化ストリームを生成する多重化ストリーム生成手段とを備え、
上記インストラクション生成手段は、生成した多重化インストラクションデータに対応するデータユニットのデータ容量を上記カウント手段のカウント値に加算し、
上記カウント手段は、出力するデータユニットのデータ量を上記カウント値から減算すること
を特徴とする多重化装置。
【請求項９】
上記メモリは、エレメンタリデータストリームの種類に対応して記憶領域が複数に分割されており、入力されたエレメンタリストリームを対応する記憶領域に格納し、
上記カウント手段は、上記メモリの各記憶領域に対応した複数のカウント値を保持しており、
上記インストラクション生成手段は、生成した多重化インストラクションデータに対応するデータユニットのデータ容量を、そのデータユニットが格納された記憶領域に対応したカウント値に加算し、
上記カウント手段は、上記メモリから出力するデータユニットのデータ量を、そのデータユニットが記憶されている記憶領域に対応したカウント値から減算すること
を特徴とする請求項８に記載の多重化装置。
【請求項１０】
複数本のエレメンタリデータストリームを多重化して複数本の多重化ストリームを生成する多重化装置において、
複数本のエレメンタリデータストリームが入力され、入力された各エレメンタリデータストリームを格納するメモリと、
任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ１つに対応して生成し、生成した多重化インストラクションデータをデータユニットの多重化順序に従って上記メモリに格納するインストラクション生成手段と、
上記多重化インストラクションデータを上記メモリから１つずつ順番に読み出し、読み出した多重化インストラクションデータに示されている格納位置からデータユニットを順番に読み出し、読み出したデータユニットを出力することによって複数の多重化ストリームを生成する多重化ストリーム生成手段とを備え、
上記インストラクション生成手段は、生成した多重化インストラクションデータに対応するデータユニットが多重化される多重化ストリームの種別を、当該多重化インストラクションデータに記述し、
上記多重化ストリーム生成手段は、読み出した多重化インストラクションデータに記述された種別に応じて、読み出したデータユニットの出力を切り換えることによって、複数の多重化ストリームを生成すること
を特徴とする多重化装置。
【請求項１１】
複数本のエレメンタリデータストリームを多重化して１つの多重化ストリームを生成する多重化方法において、
複数本のエレメンタリデータストリームを入力し、入力した各エレメンタリデータストリームをメモリに格納し、
任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ１つに対応して生成し、生成した多重化インストラクションデータを対応するデータユニットの多重化順序に従って上記メモリに格納し、
上記多重化インストラクションデータを上記メモリから１つずつ順番に読み出し、読み出した多重化インストラクションデータに示されている格納位置からデータユニットを順番に読み出し、読み出したデータユニットを出力することによって１つの多重化ストリームを生成すること
を特徴とする多重化方法。
【請求項１２】
複数本のエレメンタリデータストリームを多重化して１つの多重化ストリームを生成する多重化方法において、
複数本のエレメンタリデータストリームを入力し、入力した各エレメンタリデータストリームをメモリに格納し、
任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ一つに対応して生成するとともに、多重化ストリーム上の任意の位置で実行されるデータ処理の実行命令が示されたコマンドインストラクションデータを生成し、生成した上記多重化インストラクションデータ及びコマンドインストラクションデータをデータユニット及び実行命令の多重化順序に従って上記メモリに格納し、
上記多重化インストラクションデータ及びコマンドインストラクションデータを上記メモリから１つずつ順番に読み出し、多重化インストラクションデータを読み出した場合には、その多重化インストラクションデータに示されている格納位置からデータユニットを読み出して出力し、コマンドインストラクションデータを読み出した場合には、そのコマンドインストラクションデータに示されている実行命令が記述されたコマンドデータを出力することにより、エレメンタリデータストリーム及びコマンドデータが含まれている１つの多重化ストリームを生成し、
上記多重化ストリームが入力され、入力された多重化ストリーム中のデータ列がコマンドデータである場合には、当該コマンドデータに示されている命令内容に応じた処理を行い、入力された多重化ストリーム中のデータ列が上記エレメンタリデータストリームである場合には、入力された多重化ストリームをそのまま出力すること
を特徴とする多重化方法。
【請求項１３】
上記多重化ストリーム中のデータ列が、コマンドデータであるかエレメンタリデータストリームであるかを識別する識別フラグを、多重化ストリームに同期させて出力し、
上記識別フラグに基づき入力された多重化ストリームのデータ列がコマンドデータであるかエレメンタリデータストリームであるかを判断すること
を特徴とする請求項１２記載の多重化方法。
【請求項１４】
出力する多重化ストリームにスタッフィングデータを挿入する場合には、スタッフィングデータを挿入する処理命令及びスタッフィングデータのデータ量を示したコマンドインストラクションデータを生成し、
読み出したコマンドインストラクションデータにスタッフィングデータを挿入する処理命令が示されている場合には、当該コマンドインストラクションデータに示されている内容が記述された上記コマンドデータを出力し、
コマンドデータにスタッフィングデータを挿入する処理命令が示されている場合には、多重化ストリーム中のそのコマンドデータの位置に、そのコマンドデータに示されているデータ量のスタッフィングデータを挿入すること
を特徴とする請求項１２記載の多重化方法。
【請求項１５】
出力する多重化ストリームからデータを削除する場合には、データ削除処理命令及び削除するデータ量を示したコマンドインストラクションデータを生成し、
読み出したコマンドインストラクションデータにデータを削除する処理命令が示されている場合には、当該コマンドインストラクションデータに示されている内容が記述された上記コマンドデータを出力し、
コマンドデータにデータを削除する処理命令が示されている場合には、そのコマンドデータに続く多重化ストリームから、そのコマンドデータに示されているデータ量のデータを削除すること
を特徴とする請求項１２記載の多重化方法。
【請求項１６】
出力する多重化ストリームに任意のデータを挿入する場合には、任意のデータを挿入する処理命令を示したコマンドインストラクションデータを生成し、
読み出したコマンドインストラクションデータに任意のデータを挿入する処理命令が示されている場合には、当該コマンドインストラクションデータに示されている内容が記述された上記コマンドデータを出力し、
コマンドデータに任意のデータを挿入する処理命令が示されている場合には、多重化ストリーム中のそのコマンドデータの位置に、そのコマンドデータに示されている任意のデータを挿入すること
を特徴とする請求項１２記載の多重化方法。
【請求項１７】
出力する多重化ストリーム中の任意のタイミングでタイミング通知を発信する場合には、タイミング通知を発信する処理命令を示したコマンドインストラクションデータを生成し、
読み出したコマンドインストラクションデータにタイミング通知を発信する処理命令が示されている場合には、当該コマンドインストラクションデータに示されている内容が記述された上記コマンドデータを出力し、
コマンドデータにタイミング通知を発信する処理命令が示されている場合には、多重化ストリーム中のそのコマンドデータの位置で、タイミング通知を発信すること
を特徴とする請求項１２記載の多重化方法。
【請求項１８】
複数本のエレメンタリデータストリームを多重化して１つの多重化ストリームを生成する多重化方法において、
複数本のエレメンタリデータストリームを入力し、入力した各エレメンタリデータストリームをメモリに格納し、
任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ１つに対応して生成し、生成した多重化インストラクションデータをデータユニットの多重化順序に従って上記メモリに格納し、
上記多重化インストラクションデータを上記メモリから１つずつ順番に読み出し、読み出した多重化インストラクションデータに示されている格納位置からデータユニットを順番に読み出し、読み出したデータユニットを出力することによって１つの多重化ストリームを生成し、
生成した多重化インストラクションデータに対応するデータユニットのデータ容量を上記メモリのデータ占有量を表すカウンタのカウント値に加算するとともに、上記メモリから出力するデータユニットのデータ量を上記カウント値から減算すること
を特徴とする多重化方法。
【請求項１９】
上記メモリは、エレメンタリデータストリームの種類に対応して記憶領域が複数に分割されており、
入力されたエレメンタリストリームを対応する記憶領域に格納し、
上記カウンタは、上記メモリの各記憶領域に対応した複数のカウント値を保持しており、
生成した多重化インストラクションデータに対応するデータユニットのデータ容量をそのデータユニットが格納された記憶領域に対応したカウント値に加算し、上記メモリから出力するデータユニットのデータ量をそのデータユニットが記憶されている記憶領域に対応したカウント値から減算すること
を特徴とする請求項１８記載の多重化方法。
【請求項２０】
複数本のエレメンタリデータストリームを多重化して複数本の多重化ストリームを生成する多重化方法において、
複数本のエレメンタリデータストリームを入力し、入力した各エレメンタリデータストリームをメモリに格納し、
任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ１つに対応して生成し、生成した多重化インストラクションデータをデータユニットの多重化順序に従って上記メモリに格納するとともに、生成した多重化インストラクションデータに対応するデータユニットが多重化される多重化ストリームの種別を当該多重化インストラクションデータに記述し、
上記多重化インストラクションデータを上記メモリから１つずつ順番に読み出し、読み出した多重化インストラクションデータに示されている格納位置からデータユニットを順番に読み出し、
読み出した多重化インストラクションデータに記述された種別に応じて、読み出したデータユニットの出力を切り換えることによって、複数の多重化ストリームを生成すること
を特徴とする多重化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
例えば、複数チャネルのビデオデータ、オーディオデータ等を多重化する多重化装置及び多重化方法に関するものである。
【０００２】
【従来の技術】
デジタルコンテンツのネットワーク配信を行う場合、一般に、複数のエンコーダから出力されたビデオデータ、オーディオデータ、テキストデータ、プログラムデータ、その他の伝送に必要なシステムデータといった複数のエレメンタリストリームを多重化装置により多重化して配信が行われる。
【０００３】
【特許文献１】
特開平９―２６１１９２号公報
【特許文献２】
特開平１１―３４０９３６号公報
【特許文献３】
特開平１１―２３４６３４号公報
【０００４】
【発明が解決しようとする課題】
ネットワーク配信に用いられる多重化装置は、通常、複数のエンコーダから出力されたエレメンタリストリームを格納するランダムアクセスメモリ（ＲＡＭ）と、ＲＡＭに格納されたエレメンタリストリームを読み出して出力端子へ出力するダイナミックメモリアクセス（ＤＭＡ）回路と、中央制御装置（ＣＰＵ）とから構成される（特許文献１〜３参照。）。このような構成の通常の多重化装置では、ＣＰＵが、ＲＡＭに格納されたエレメンタリストリームを常時監視し、ＲＡＭに格納されているデータが出力タイミングとなったときにＤＭＡに対してデータ転送命令を与える。ＤＭＡは、ＣＰＵから転送命令が与えられると、ＣＰＵにより指定されたアドレスからデータを読み出して外部に転送する。このように通常の多重化装置では、ＣＰＵがＲＡＭ内のデータの管理及びＤＭＡの制御を直接的且つ常時行って、多重化ストリームを生成している。
【０００５】
しかしながら、以上のような多重化装置では、ＣＰＵの処理負担が非常に大きくなってしまうという問題点がある。
【０００６】
また、多重化ストリームの出力タイミングに同期させて任意のデータ処理を行う場合がある。例えば、多重化ストリーム中の特定の位置にスタッフィングデータやパディングデータと呼ばれるダミーデータを挿入する処理、多重化ストリーム中の特定の位置のデータを出力直前に削除する処理、多重化ストリーム中の特定の位置にそのときの出力時間情報等の任意のデータを挿入する処理、及び、多重化ストリームの特定の位置の出力タイミングをＣＰＵや外部に発信する処理等の各種のデータ処理を行う場合がある。
【０００７】
このような場合、多重化装置では、多重化ストリーム中の特定の位置に予めエレメンタリデータ以外の識別子やコマンド等を挿入しておき、出力段においてこの識別子等を検出し、検出した識別子の位置で以上の処理を行うのが一般的である。
【０００８】
しかしながら、多重化ストリーム中に識別子を挿入した場合、本来のエレメンタリデータのデータ列を識別子として誤認識してしまう可能性がある。
【０００９】
このような誤認識を回避する方法として、例えばパケットやパックの先頭部分のみに識別子を挿入するといったように識別子の挿入位置を制限する方法も考えられるが、この回避方法の場合には、データ処理を行わせる位置の自由度が小さくなってしまうという問題点がある。さらに他の回避方法として、識別子の挿入位置のアドレスを別途レジスタなどに保持しておくという方法も考えられるが、この回避方法の場合、一定期間内に挿入できる識別子の数が装置内のレジスタ数に制限されてしまうという問題点がある。
【００１０】
また、多重化装置では、各エンコーダから出力されたエレメンタリストリームが格納されるＲＡＭがオーバーフローしたりアンダーフローしたりしないように、ＲＡＭの占有量をＣＰＵが、直接的且つ常時、管理している。
【００１１】
しかしながら、このようにＣＰＵが、直接的且つ常時、ＲＡＭの占有量を管理した場合、ＣＰＵの処理負担が非常に大きくなってしまうという問題点がある。
【００１２】
また、複数の多重化ストリームを同時に出力する場合、出力する多重化ストリーム数分の多重化装置が必要であった。例えば、多重化ストリームをハードディスクに記録しながら、同じコンテンツの他の多重化ストリームを同時にネットワークで配信する場合には、ハードディスクに転送する多重化ストリームを生成する多重化装置と、ネットワークに配信する多重化ストリームを生成する多重化装置との、２つを用いたシステムを構築しなければならない。
【００１３】
しかしながら、このように複数の多重化装置を用いたシステムは、ＣＰＵやＤＭＡ等も２つ必要となってしまい、ハードウェア規模が大きくなるという問題点がある。
【００１４】
本発明は、このような実情を鑑みてなされたものであり、コントローラの処理負担を軽減させた多重化装置及び多重化方法を提供することを目的とする。
【００１５】
また、本発明は、多重化ストリームの出力タイミングに同期させて行うデータ処理を確実に行い、且つ、その処理タイミングの自由度を大きくした多重化装置及び多重化方法を提供することを目的とする。
【００１６】
また、本発明は、複数の多重化ストリームを出力可能であり、回路規模を小さくした多重化装置及び多重化方法を提供することを目的とする。
【００１７】
【課題を解決するための手段】
本発明に係る多重化装置は、複数本のエレメンタリデータストリームを多重化して１つの多重化ストリームを生成する多重化装置であって、複数本のエレメンタリデータストリームが入力され、入力された各エレメンタリデータストリームを格納するメモリと、任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ１つに対応して生成し、生成した多重化インストラクションデータを対応するデータユニットの多重化順序に従って上記メモリに格納するインストラクション生成手段と、上記多重化インストラクションデータを上記メモリから１つずつ順番に読み出し、読み出した多重化インストラクションデータに示されている格納位置からデータユニットを順番に読み出し、読み出したデータユニットを出力することによって１つの多重化ストリームを生成する多重化ストリーム生成手段とを備える。
【００１８】
上記多重化装置では、多重化順序が示された多重化インストラクションデータを生成して上記メモリに格納し、当該メモリに格納された多重化インストラクションデータに従い順番に多重化処理を行う。
【００１９】
本発明に係る多重化装置は、複数本のエレメンタリデータストリームを多重化して１つの多重化ストリームを生成する多重化装置であって、複数本のエレメンタリデータストリームが入力され、入力された各エレメンタリデータストリームを格納するメモリと、任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ一つに対応して生成するとともに、多重化ストリーム上の任意の位置で実行されるデータ処理の実行命令が示されたコマンドインストラクションデータを生成し、生成した上記多重化インストラクションデータ及びコマンドインストラクションデータをデータユニット及び実行命令の多重化順序に従って上記メモリに格納するインストラクション生成手段と、上記多重化インストラクションデータ及びコマンドインストラクションデータを上記メモリから１つずつ順番に読み出し、多重化インストラクションデータを読み出した場合には、その多重化インストラクションデータに示されている格納位置からデータユニットを読み出して出力し、コマンドインストラクションデータを読み出した場合には、そのコマンドインストラクションデータに示されている実行命令が記述されたコマンドデータを出力することにより、エレメンタリデータストリーム及びコマンドデータが含まれている１つの多重化ストリームを生成する多重化ストリーム生成手段と、上記多重化ストリーム生成手段から出力された多重化ストリームが入力され、入力された多重化ストリーム中のデータ列がコマンドデータである場合には、当該コマンドデータに示されている命令内容に応じた処理を行い、入力された多重化ストリーム中のデータ列が上記エレメンタリデータストリームである場合には、入力された多重化ストリームをそのまま出力するコマンド実行手段とを備える。
【００２０】
上記多重化装置では、多重化順序が示された多重化インストラクションデータ及びを所定のデータ実行命令が示されたコマンドインストラクションデータを生成して上記メモリに格納し、当該メモリに格納された多重化インストラクションデータ及びコマンドインストラクションデータに従い順番に多重化及びデータ処理を行う。
【００２１】
本発明に係る多重化装置は、複数本のエレメンタリデータストリームを多重化して１つの多重化ストリームを生成する多重化装置であって、複数本のエレメンタリデータストリームが入力され、入力された各エレメンタリデータストリームを格納するメモリと、上記メモリのデータ占有量を表すカウント値を示すカウント手段と、任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ１つに対応して生成し、生成した多重化インストラクションデータをデータユニットの多重化順序に従って上記メモリに格納するインストラクション生成手段と、上記多重化インストラクションデータを上記メモリから１つずつ順番に読み出し、読み出した多重化インストラクションデータに示されている格納位置からデータユニットを順番に読み出し、読み出したデータユニットを出力することによって１つの多重化ストリームを生成する多重化ストリーム生成手段とを備え、上記インストラクション生成手段は、生成した多重化インストラクションデータに対応するデータユニットのデータ容量を上記カウント手段のカウント値に加算し、上記カウント手段は、出力するデータユニットのデータ量を上記カウント値から減算する。
【００２２】
上記多重化装置では、多重化順序が示された多重化インストラクションデータを生成して上記メモリに格納し、当該メモリに格納された多重化インストラクションデータに従い順番に多重化処理を行う。さらに、上記多重化装置では、生成した多重化インストラクションデータに対応するデータユニットのデータ容量を上記カウント値に加算し、出力するデータユニットのデータ量を上記カウント値から減算する。
【００２３】
本発明に係る多重化装置は、複数本のエレメンタリデータストリームを多重化して複数本の多重化ストリームを生成する多重化装置であって、複数本のエレメンタリデータストリームが入力され、入力された各エレメンタリデータストリームを格納するメモリと、任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ１つに対応して生成し、生成した多重化インストラクションデータをデータユニットの多重化順序に従って上記メモリに格納するインストラクション生成手段と、上記多重化インストラクションデータを上記メモリから１つずつ順番に読み出し、読み出した多重化インストラクションデータに示されている格納位置からデータユニットを順番に読み出し、読み出したデータユニットを出力することによって複数の多重化ストリームを生成する多重化ストリーム生成手段とを備え、上記インストラクション生成手段は、生成した多重化インストラクションデータに対応するデータユニットが多重化される多重化ストリームの種別を、当該多重化インストラクションデータに記述し、上記多重化ストリーム生成手段は、読み出した多重化インストラクションデータに記述された種別に応じて、読み出したデータユニットの出力を切り換えることによって、複数の多重化ストリームを生成する。
【００２４】
上記多重化装置では、多重化順序が示された多重化インストラクションデータを生成して上記メモリに格納し、当該メモリに格納された多重化インストラクションデータに従い順番に多重化処理を行う。さらに、上記多重化装置では、上記多重化インストラクションデータに対して多重化ストリームの種別を記述しておき、その種別に応じて出力を切り換える。
【００２５】
本発明に係る多重化方法は、複数本のエレメンタリデータストリームを多重化して１つの多重化ストリームを生成する多重化方法であって、複数本のエレメンタリデータストリームを入力し、入力した各エレメンタリデータストリームをメモリに格納し、任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ１つに対応して生成し、生成した多重化インストラクションデータを対応するデータユニットの多重化順序に従って上記メモリに格納し、上記多重化インストラクションデータを上記メモリから１つずつ順番に読み出し、読み出した多重化インストラクションデータに示されている格納位置からデータユニットを順番に読み出し、読み出したデータユニットを出力することによって１つの多重化ストリームを生成する。
【００２６】
上記多重化方法では、多重化順序が示された多重化インストラクションデータを生成して上記メモリに格納し、当該メモリに格納された多重化インストラクションデータに従い順番に多重化処理を行う。
【００２７】
本発明に係る多重化方法は、複数本のエレメンタリデータストリームを多重化して１つの多重化ストリームを生成する多重化方法であって、複数本のエレメンタリデータストリームを入力し、入力した各エレメンタリデータストリームをメモリに格納し、任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ一つに対応して生成するとともに、多重化ストリーム上の任意の位置で実行されるデータ処理の実行命令が示されたコマンドインストラクションデータを生成し、生成した上記多重化インストラクションデータ及びコマンドインストラクションデータをデータユニット及び実行命令の多重化順序に従って上記メモリに格納し、上記多重化インストラクションデータ及びコマンドインストラクションデータを上記メモリから１つずつ順番に読み出し、多重化インストラクションデータを読み出した場合には、その多重化インストラクションデータに示されている格納位置からデータユニットを読み出して出力し、コマンドインストラクションデータを読み出した場合には、そのコマンドインストラクションデータに示されている実行命令が記述されたコマンドデータを出力することにより、エレメンタリデータストリーム及びコマンドデータが含まれている１つの多重化ストリームを生成し、上記多重化ストリームが入力され、入力された多重化ストリーム中のデータ列がコマンドデータである場合には、当該コマンドデータに示されている命令内容に応じた処理を行い、入力された多重化ストリーム中のデータ列が上記エレメンタリデータストリームである場合には、入力された多重化ストリームをそのまま出力する。
【００２８】
上記多重化方法では、多重化順序が示された多重化インストラクションデータ及びを所定のデータ実行命令が示されたコマンドインストラクションデータを生成して上記メモリに格納し、当該メモリに格納された多重化インストラクションデータ及びコマンドインストラクションデータに従い順番に多重化及びデータ処理を行う。
【００２９】
本発明に係る多重化方法は、複数本のエレメンタリデータストリームを多重化して１つの多重化ストリームを生成する多重化方法であって、複数本のエレメンタリデータストリームを入力し、入力した各エレメンタリデータストリームをメモリに格納し、任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ１つに対応して生成し、生成した多重化インストラクションデータをデータユニットの多重化順序に従って上記メモリに格納し、上記多重化インストラクションデータを上記メモリから１つずつ順番に読み出し、読み出した多重化インストラクションデータに示されている格納位置からデータユニットを順番に読み出し、読み出したデータユニットを出力することによって１つの多重化ストリームを生成し、生成した多重化インストラクションデータに対応するデータユニットのデータ容量を上記メモリのデータ占有量を表すカウンタのカウント値に加算するとともに、上記メモリから出力するデータユニットのデータ量を上記カウント値から減算する。
【００３０】
上記多重化方法では、多重化順序が示された多重化インストラクションデータを生成して上記メモリに格納し、当該メモリに格納された多重化インストラクションデータに従い順番に多重化処理を行う。さらに、上記多重化方法では、生成した多重化インストラクションデータに対応するデータユニットのデータ容量を上記カウント値に加算し、出力するデータユニットのデータ量を上記カウント値から減算する。
【００３１】
本発明に係る多重化方法は、複数本のエレメンタリデータストリームを多重化して複数本の多重化ストリームを生成する多重化方法であって、複数本のエレメンタリデータストリームを入力し、入力した各エレメンタリデータストリームをメモリに格納し、任意量の連続したエレメンタリデータストリームから構成されるデータユニットの上記メモリ内における格納位置を示す多重化インストラクションデータをデータユニットの１つ１つに対応して生成し、生成した多重化インストラクションデータをデータユニットの多重化順序に従って上記メモリに格納するとともに、生成した多重化インストラクションデータに対応するデータユニットが多重化される多重化ストリームの種別を当該多重化インストラクションデータに記述し、上記多重化インストラクションデータを上記メモリから１つずつ順番に読み出し、読み出した多重化インストラクションデータに示されている格納位置からデータユニットを順番に読み出し、読み出した多重化インストラクションデータに記述された種別に応じて、読み出したデータユニットの出力を切り換えることによって、複数の多重化ストリームを生成する。
【００３２】
上記多重化方法では、多重化順序が示された多重化インストラクションデータを生成して上記メモリに格納し、当該メモリに格納された多重化インストラクションデータに従い順番に多重化処理を行う。さらに、上記多重化方法では、上記多重化インストラクションデータに対して多重化ストリームの種別を記述しておき、その種別に応じて出力を切り換える。
【００３３】
【発明の実施の形態】
第１の実施の形態
本発明の第１の実施の形態として、ビデオデータとオーディオデータとを多重化したネットワーク配信用の２本の多重化ストリーム（第１及び第２の多重化ストリームＭＳ０，　ＭＳ１）を生成して、これらを同時に出力する多重化システムについて説明をする。
【００３４】
なお、以下説明をする多重化システムでは、図１に示すように、多重化の要素となるシーケンシャルな複数本のデータストリームを所定のデータ単位に分割し、分割したデータ単位で時間方向に多重化することによって多重化ストリームを生成する。本実施の形態の説明では、分割したデータ単位を「ユニット」と定義するものとする。
【００３５】
（多重化システムの全体構成）
本発明の第１の実施の形態の多重化システム１０は、図２に示すように、データバス１１上に、第１及び第２のビデオエンコーダ１２，１３と、第１及び第２のオーディオエンコーダ１４，１５と、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）１６と、マルチプレクサ１７と、命令メモリ１８と、データメモリ１９とを備えている。
【００３６】
第１及び第２のビデオエンコーダ１２，１３は、映像ソースから出力されたベースバンドのビデオデータが入力され、そのビデオデータを例えばＭＰＥＧ−２やＭＰＥＧ−４等の所定の符号化方式で圧縮符号化し、ビデオエレメンタリストリームＶＥＳ０，ＶＥＳ１（以下、単にビデオストリームＶＥＳ０，ＶＥＳ１と言う。）を生成する。第１及び第２のビデオエンコーダ１２，１３は、生成したビデオストリームＶＥＳ０，ＶＥＳ１をユニットに分割し、分割した各ユニットをデータバス１１を介してデータメモリ１９に格納する。また、第１及び第２のビデオエンコーダ１２，１３は、多重化時に必要となる生成したビデオストリームＶＥＳ０，ＶＥＳ１のシステム情報も生成する。第１及び第２のビデオエンコーダ１２，１３は、システム情報、並びに、各ユニットのデータメモリ１９上の格納位置を示す格納位置情報（そのユニットの記録開始アドレス及びそのユニットのバイト長）を、データバス１１を介してＣＰＵ１６に供給する。
【００３７】
第１及び第２のオーディオエンコーダ１４，１５は、音声ソースから出力されたベースバンドのオーディオデータが入力され、そのオーディオデータを例えばＭＰＥＧ−２やＭＰＥＧ−４等の所定の符号化方式で圧縮符号化し、オーディオエレメンタリストリームＡＥＳ０，ＡＥＳ１（以下、単にオーディオストリームＡＥＳ０，ＡＥＳ１と言う。）を生成する。第１及び第２のオーディオエンコーダ１４，１５は、生成したオーディオストリームＡＥＳ０，ＡＥＳ１をユニットに分割し、分割した各ユニットをデータバス１１を介してデータメモリ１９に格納する。また、第１及び第２のオーディオエンコーダ１４，１５は、多重化時に必要となる生成したオーディオストリームＡＥＳ０，ＡＥＳ１のシステム情報も生成する。第１及び第２のオーディオエンコーダ１４，１５は、システム情報、並びに、各ユニットのデータメモリ１９上の格納位置を示す格納位置情報（そのユニットの記録開始アドレス及びそのユニットのバイト長）を、データバス１１を介してＣＰＵ１６に供給する。
【００３８】
ＣＰＵ１６は、多重化システム１０を統括的にコントロールする。ＣＰＵ１６は、第１及び第２の多重化ストリームＭＳ０，ＭＳ１の要素データとなるヘッダデータやインフォメーションデータ等を生成する。ヘッダデータとは、例えば、ＰＳヘッダ，ＩＰヘッダ，ＲＴＰヘッダ等のＭＰＥＧ−２やＭＰＥＧ−４に規定された各種のヘッダ情報であり、インフォメーションデータとは、例えばＰＳＩ（Ｐｒｏｇｒａｍ　Ｓｙｓｔｅｍ　Ｉｎｆｏｒｍａｔｉｏｎ）やＳＩ（Ｓｅｒｖｉｃｅ　Ｉｎｆｏｒｍａｔｉｏｎ）といった例えばＭＰＥＧ−２システム等の多重化方式上で定められた情報である。なお、ヘッダデータやインフォメーションデータ等のオーディオ及びビデオストリーム以外の要素データを、総称してヘッダデータとする。ＣＰＵ１６は、各エンコーダ１２〜１５から供給されたシステム情報を参照して、本装置から出力する第１の多重化ストリームＭＳ０のストリームタイプ（例えば、ＰＳ（Ｐｒｏｇｒａｍ　Ｓｔｒｅａｍ，），ＴＳ（Ｔｒａｎｓｐｏｒｔ　Ｓｔｒｅａｍ），ＲＴＰ（Ｒｅａｌ　Ｔｉｍｅ　Ｐａｃｋｅｔ）等）に応じたヘッダデータＨＳ０、及び、第２の多重化ストリームＭＳ１のストリームタイプに応じたヘッダデータＨＳ１を生成する。ＣＰＵ１６は、生成したヘッダデータＨＳ０，ＨＳ１をユニットに分割し、データバス１１を介してデータメモリ１９に格納する。
【００３９】
また、ＣＰＵ１６は、各エンコーダ１２〜１５から供給された各エレメンタリストリームの格納位置情報、並びに、自身で生成したヘッダデータのユニットの格納位置を示す格納位置情報に基づき、ユニットの格納位置及びユニットの多重化順序を記述したインストラクションセットを生成する。ＣＰＵ１６は、生成したインストラクションセットを、データバス１１を介して命令メモリ１８に格納する。なお、このインストラクションセットの詳細については後述する。
【００４０】
また、ＣＰＵ１６は、１つのインストラクションセットを生成すると、マルチプレクサ１７内のカウンタに対して所定の値を加算する処理を行う。なお、この加算処理の詳細については後述する。
【００４１】
マルチプレクサ１７は、ビデオストリームＶＥＳ０，オーディオストリームＡＥＳ０及びヘッダデータＨＳ０を多重化して第１の多重化ストリームＭＳ０を生成し、ビデオストリームＶＥＳ１，オーディオストリームＡＥＳ１及びヘッダデータＨＳ１を多重化して第２の多重化ストリームＭＳ１を生成する。マルチプレクサ１７は、第１の多重化ストリームＭＳ０及び第２の多重化ストリームＭＳ１を同時に生成して、同時にこれら二つのストリームを外部に出力する。
【００４２】
マルチプレクサ１７は、データバス１１を介して命令メモリ１８に格納されているインストラクションセットを読み出す。そして、マルチプレクサ１７は、そのインストラクションセットに記述されている情報に従って、データメモリ１９からエレメンタリデータをユニット単位で順番に読み出し、その順番に従いユニットを出力することにより、第１及び第２の多重化ストリームＭＳ０，ＭＳ１を生成する。
【００４３】
命令メモリ１８は、インストラクションセットを格納する回路である。インストラクションセットは、ＣＰＵ１６により書き込まれ、マルチプレクサ１７により読み出される。
【００４４】
データメモリ１９は、第１及び第２のビデオエンコーダ１２，１３により生成されたビデオストリームＶＥＳ０，ＶＥＳ１、第１及び第２のオーディオエンコーダ１４，１５により生成されたオーディオストリームＡＥＳ０，ＡＥＳ１、及び、ＣＰＵ１６により生成されたヘッダデータを格納する回路である。データメモリ１９内に格納されている各種データは、マルチプレクサ１７により読み出される。
【００４５】
なお、データメモリ１９は、エレメンタリストリーム及びヘッダデータの種類に対応して、記録領域が分割されている。本例の場合は、データメモリ１９の記録領域は、図３に示すように、第１のビデオ格納領域（Ｓｖ０）２１、第１のオーディオ格納領域（Ｓａ０）２２、第１のヘッダ格納領域（Ｓｈ０）２３、第２のビデオ格納領域（Ｓｖ１）２４、第２のオーディオ格納領域（Ｓａ１）２５、及び、第２のヘッダ格納領域（Ｓｈ１）２６の６個の領域に分割されている。第１のビデオ格納領域（Ｓｖ０）２１には第１のビデオエンコーダ１２から出力されたビデオストリームＶＥＳ０が格納され、第１のオーディオ格納領域（Ｓａ０）２２には第１のオーディオエンコーダ１４から出力されたオーディオストリームＡＥＳ０が格納され、第１のヘッダ格納領域（Ｓｈ０）２３にはビデオストリームＶＥＳ０及びオーディオストリームＡＥＳ０に関するヘッダデータが格納され、第２のビデオ格納領域（Ｓｖ１）２４には第２のビデオエンコーダ１３から出力されたビデオストリームＶＥＳ１が格納され、第２のオーディオ格納領域（Ｓａ１）２５には第２のオーディオエンコーダ１５から出力されたオーディオストリームＡＥＳ１が格納され、第２のヘッダ格納領域２６（Ｓｈ１）にはビデオストリームＶＥＳ１及びオーディオストリームＡＥＳ１に関するヘッダデータが格納される。
【００４６】
以上のような多重化システム１０では、図４に示すような各エンコーダ１２〜１５等がエレメンタリストリーム（ＶＥＳ０，ＶＥＳ１，ＡＥＳ０，ＡＥＳ１，ＨＳ０，ＨＳ１）を生成してデータメモリ１９に格納する一連のエンコード処理と、図５に示すようなマルチプレクサ１７がデータメモリ１９から各エレメンタリストリーム（ＶＥＳ０，ＶＥＳ１，ＡＥＳ０，ＡＥＳ１，ＨＳ０，ＨＳ１）を読み出して多重化ストリームをする一連の多重化処理とが、同時並行的に行われる。
【００４７】
また、ＣＰＵ１６は、図４に示すエンコード処理時に、各エンコーダ１２〜１５等から与えられた格納位置情報及びシステム情報に基づきユニットの多重化順序を算出し、ユニットの格納位置及び多重化順序を記述したインストラクションセットを生成する。そして、ＣＰＵ１６は、生成したインストラクションセットを命令メモリ１８に格納する。
【００４８】
また、マルチプレクサ１７は、図５に示すように、命令メモリ１８に格納されているインストラクションセットの記述を参照して、データメモリ１９内から必要なデータを所定の順序で読み出し、多重化処理を行う。
【００４９】
このように多重化システム１０では、ＣＰＵ１６がインストラクションセットを生成して一旦命令メモリ１８に格納し、マルチプレクサ１７が命令メモリ１８からインストラクションセットを読み出して実行することにより、ＣＰＵ１６が転送タイミングとなったときにマルチプレクサ１７に直接命令を転送する、といったような制御を行わなくてもよいため、命令の転送タイミングの制御を行う必要がなくなり、ＣＰＵ１６の処理負担を軽減させることができる。
【００５０】
（インストラクションセット）
つぎに、インストラクションセットについて説明をする。
【００５１】
インストラクションセットは、図６に示すように、インストラクション群３１と、１個のテーブル情報３２とから構成されている。
【００５２】
インストラクション群３１内には、１以上の多重化インストラクションデータ３３が記述されている。多重化インストラクションデータ３３には、ある１つのユニットをデータメモリ１９から読み出して多重化ストリームとして出力させるために必要な情報が記述されている。
【００５３】
具体的には、多重化インストラクションデータ３３には、当該データが多重化インストラクションデータ３３であることを示すＩＤ情報３４、転送するユニットのデータメモリ１９内の格納位置を示した情報（記録開始アドレス３５及びバイト数３６）、並びに、転送するユニットが格納されているデータメモリ１９上の領域を示す領域情報３７が記述されている。多重化インストラクションデータ３３にこのような情報が記述されていることによって、マルチプレクサ１７に対して、データメモリ１９上に１つのユニットを特定させ、特定したユニットを読み出して出力させることが可能となる。なお、領域情報３７は、後述するマルチプレクサ３７内のカウンタを選択する際に参照がされる。
【００５４】
また、複数の多重化インストラクションデータ３３は、一列に並べられて記述されており、その並び順がユニットの多重化順序を示している。多重化インストラクションデータ３３の並び順により多重化順序が特定されていることにより、マルチプレクサ１７に対してユニットの転送順序を制御させることができる。すなわち、マルチプレクサ１７が、上位に位置する多重化インストラクションデータ３３から下位に位置する多重化インストラクションデータ３３に向かって、１つずつ順番にユニットの読み出し及び出力を実行することにより、多重化インストラクションデータ３３の記述順に従ったユニットの並びの多重化ストリームを出力することができる。なお、多重化インストラクションデータ３３に順序付けがされていれば並び順により多重化順序を特定しなくてもよい。例えば、多重化インストラクションデータ３３に直接順序付けを示す番号を記述してもよい。
【００５５】
テーブル情報３２には、インストラクション数３８と出力ターゲット３９とが記述される。
【００５６】
インストラクション数３８は、当該インストラクションセット内に記述されている多重化インストラクションデータ３３の数が示されている。なお、インストラクションセット内に記述する多重化インストラクションデータ３３の数を固定とした場合には、インストラクション数３８を記述しなくてもよい。
【００５７】
出力ターゲット３９は、当該インストラクションセットに記述されている多重化インストラクションデータ３３が第１の多重化ストリームＭＳ０の転送命令であるか、第２の多重化ストリームＭＳ１の転送命令であるかを識別するための情報である。このような出力ターゲット３９を記述することによって、マルチプレクサ１７に対して複数の多重化ストリームを出力させることができる。すなわち、マルチプレクサ１７は、データメモリ１９から読み出したデータを出力するポートを、出力ターゲット３９の記述に応じて切り換えるのみで、複数の多重化ストリームを同時並行的に出力することが可能となる。なお、この出力ターゲット３９による制御がされるので、１つのインストラクションセット内には、１つの多重化ストリームのユニットに対する多重化インストラクションデータ３３のみしか記述されない。
【００５８】
以上のようなインストラクションセットは、ＣＰＵ１６が各エンコーダ１２〜１５によるエンコード処理に伴い生成する。ただし、１つのインストラクションセットに記述できる多重化インストラクションデータ３３の数には限界があるため、ＣＰＵ１６は、多数のインストラクションセットを連続的に命令メモリ１８に格納することによって、シーケンシャルな多重化ストリームに対応している。
【００５９】
例えば、ＣＰＵ１６は、図７に示すように、命令メモリ１８の開始アドレスから末尾アドレスへの方向に並ぶように、複数のインストラクションセットを連続的に記述していく（なお、図７中、＃ｎはインストラクションセットの順序を示す値である。）。命令メモリ１８に空き容量がなくなった場合には、再度開始アドレスからインストラクションセットに上書きしてゆき、記録領域を巡回的に利用する。それに対して、マルチプレクサ１７は、インストラクションセットを命令メモリ１８の開始アドレスから末尾アドレスに向かう方向へ１つずつ順番に読み出して実行する。
【００６０】
このようにインストラクションセットを連続的に命令メモリ１８に格納していくことによって、マルチプレクサ１７の動作制御の順序をＣＰＵ１６側で制御することができる。すなわち、ＣＰＵ１６が、インストラクションセット内での多重化インストラクションデータの順序、並びに、各インストラクションセットの順序を定めれば、ＣＰＵ１６が多重化ストリームのユニットの多重化順序を制御することができる。
【００６１】
ここで多重化システム１０の具体的な多重化例について、図８〜図１０を参照して説明をする。
【００６２】
図８は、データメモリ１９上のユニットの格納例、図９はインストラクションセットの記述例、図１０は多重化ストリームのデータ例を示している。
【００６３】
データメモリ１９には、図８に示すように、第１のビデオ格納領域（Ｓｖ０）２１にユニットＶ０（記録開始アドレスＡｖ０，バイト数Ｎｖ０）及びユニットＶ１（記録開始アドレスＡｖ１，バイト数Ｎｖ１）が記録され、第１のオーディオ格納領域（Ｓａ０）２２にユニットＡ０（記録開始アドレスＡａ０，バイト数Ｎａ０）及びユニットＡ１（記録開始アドレスＡａ１，バイト数Ｎａ１）が記録され、第１のヘッダ格納領域（Ｓｈ０）２３にユニットＨ０（記録開始アドレスＡｈ０，バイト数Ｎｈ０）及びユニットＨ１（記録開始アドレスＡｈ１，バイト数Ｎｈ１）が記録され、第２のビデオ格納領域（Ｓｖ１）２４にユニットＶ２（記録開始アドレスＡｖ２，バイト数Ｎｖ２）及びユニットＶ３（記録開始アドレスＡｖ３，バイト数Ｎｖ３）が記録され、第２のオーディオ格納領域（Ｓａ１）２５にユニットＡ２（記録開始アドレスＡａ２，バイト数Ｎａ２）及びユニットＡ３（記録開始アドレスＡａ３，バイト数Ｎａ３）が記録され、第２のヘッダ格納領域（Ｓｈ１）２６にユニットＨ２（記録開始アドレスＡｈ２，バイト数Ｎｈ２）及びユニットＨ３（記録開始アドレスＡｈ３，バイト数Ｎｈ３）が記録されている。
【００６４】
インストラクションセットとしては、図９に示すように、インストラクションセットＩＳＴ＃０及びインストラクションセットＩＳＴ＃１の二つがＣＰＵ１６により生成される。
【００６５】
インストラクションセットＩＳＴ＃０には、インストラクション数３８に“６”が記述され、出力ターゲット３９に第１の多重化ストリームＭＳ０が記述され、ユニットＨ０→ユニットＡ０→ユニットＶ０→ユニットＨ１→ユニットＡ１→ユニットＶ１の順序でこれらを特定する多重化インストラクションデータ３３が記述されている。インストラクションセットＩＳＴ＃１には、インストラクション数３８に“６”が記述され、出力ターゲット３９に第２の多重化ストリームＭＳ１が記述され、ユニットＨ２→ユニットＡ２→ユニットＶ２→ユニットＨ３→ユニットＡ３→ユニットＶ３の順序でこれらを特定する多重化インストラクションデータ３３が記述されている。
【００６６】
そして、以上のようなインストラクションセットを実行すると、図１０に示すような、２本の多重化ストリーム（第１及び第２の多重化ストリームＭＳ０，ＭＳ１）が出力される。
【００６７】
（マルチプレクサ）
つぎに、以上のようなインストラクションセットに記述されている制御を実行するマルチプレクサ１７の具体的な構成について説明をする。
【００６８】
マルチプレクサ１７は、図１１に示すように、ダイレクトメモリアクセス（ＤＭＡ）回路４１と、インストラクション実行回路４２と、ターゲットセレクタ４３と、第１のＦＩＦＯメモリ４４と、第２のＦＩＦＯメモリ４５と、第１〜第ｎのカウンタ４６−１〜４６−ｎ（ただし、ｎは自然数。）と、カウンタセレクタ４７とを有している。
【００６９】
ＤＭＡ回路４１は、ＣＰＵ１６を介さずにデータメモリ１９及び命令メモリ１８に対してダイレクトにアクセスしてデータを読み出す回路である。ＤＭＡ回路４１は、インストラクション実行回路４２から開始アドレス及びバイト数が指定され、指定された開始アドレスから指定されたバイト数分のデータを連続して読み出す。ＤＭＡ回路４１は、読み出したデータがエレメンタリストリーム（ビデオストリームＶＥＳ０，ＶＥＳ１、オーディオデータＡＥＳ０，ＡＥＳ１又はヘッダデータＨＳ０，ＨＳ１）であれば、そのデータをターゲットセレクタ４３に供給し、読み出したデータがインストラクションセットであれば、そのデータをインストラクション実行回路４２に供給する。
【００７０】
インストラクション実行回路４２は、インストラクションセットに基づき、ＤＭＡ回路４１、ターゲットセレクタ４３及びカウンタセレクタ４７を制御する回路である。インストラクション実行回路４２による具体的な実行制御処理については詳細を後述する。
【００７１】
ターゲットセレクタ４３は、ＤＭＡ回路４１からデータストリームが入力され、入力されたデータストリームを第１のＦＩＦＯメモリ４４又は第２のＦＩＦＯメモリ４５のいずれか一方に選択的に出力する回路である。どちらのＦＩＦＯメモリに対してデータストリームを出力するかは、インストラクション実行回路４２により切り換え制御がされる。
【００７２】
第１のＦＩＦＯメモリ４４及び第２のＦＩＦＯメモリ４５は、いわゆるファーストイン−ファーストアウトメモリである。つまり、所定のビット数を１ワードとし、ワード単位でデータをシフト転送するメモリである。第１のＦＩＦＯメモリ４４から出力されたデータストリームが第１の多重化ストリームＭＳ０として外部に出力され、第２のＦＩＦＯメモリ４５から出力されたデータストリームが第２の多重化ストリームＭＳ１として外部に出力される。
【００７３】
第１〜第ｎのカウンタ４６−１〜４６−ｎは、ＤＭＡ回路４１からターゲットセレクタ４３に転送されたデータのデータ量を、内部に保持しているカウント値から減算していく回路である。さらに、第１〜第ｎのカウンタ４６−１〜４６−ｎは、内部のカウント値がデータバス１１を介してＣＰＵ１６や各エンコーダ１２〜１５により参照及び更新が可能となっている。なお、各カウンタ４６−１〜４６−ｎの動作については、詳細を後述する。
【００７４】
カウンタセレクタ４７は、第１〜第ｎのカウンタ４６−１〜４６−ｎのうち、いずれか一つのカウンタを選択して動作させる回路である。選択されるカウンタは、多重化インストラクションデータの領域情報３７に応じて制御がされる。従って、カウンタセレクタ４７により選択されているカウンタはＤＭＡ回路４１からターゲットセレクタ４３に転送されるビット数を内部に保持しているカウント値から減算し、選択されていないその他のセレクタは、内部のカウント値を変更せずにそのまま保持している。
【００７５】
つぎに、インストラクション実行回路４２によるインストラクションセットの実行処理を、図１２のフローチャートを参照して説明する。
【００７６】
まず、インストラクション実行回路４２は、命令メモリ１８からインストラクションセットを読み出す転送命令を、ＤＭＡ回路４１に対して発行する（ステップＳ１１）。このとき、転送命令とともに、読み出し対象となるインストラクションセットの記録開始アドレスとそのインストラクションのバイト数もＤＭＡ回路４１に与える。ＤＭＡ回路４１は、ステップＳ１１の発行命令を受けると、命令メモリ１８の指定されたアドレスから指定されたバイト数分のデータを読み出す。ＤＭＡ回路４１により読み出されたデータは、インストラクションセットのデータ列であるので、ＤＭＡ回路４１からインストラクション実行回路４２に供給される。
【００７７】
続いて、インストラクション実行回路４２は、転送されてきたインストラクションセットのテーブル情報３２内の出力ターゲット３９を参照して、ターゲットセレクタ４３に対して切り換え命令を与える（ステップＳ１２）。すなわち、インストラクション実行回路４２は、出力ターゲット３９に第１の多重化ストリームＭＳ０を特定する値が記述されていれば、第１のＦＩＦＯメモリ４４の選択命令を発行し、出力ターゲット３９に第２の多重化ストリームを特定する値が記述されていれば、第２のＦＩＦＯメモリ４５の選択命令を発行する。ターゲットセレクタ４３は、ステップＳ１２の選択命令を受けると、入力されたデータストリームを出力する出力ポートを、その内容に従って第１のＦＩＦＯメモリ４４側又は第２のＦＩＦＯメモリ４５側のいずれかに切り換える。
【００７８】
続いて、インストラクション実行回路４２は、変数Ｘの値を“１”に初期化する（ステップＳ１３）。なお、この変数Ｘは、現在処理しているインストラクションの順番を示している。
【００７９】
続いて、インストラクション実行回路４２は、ステップＳ１１で読み出されたインストラクションセットの中の、Ｘ番目の多重化インストラクションデータを選択する（ステップＳ１４）。すなわち、上述したようにインストラクションセットの中には複数の多重化インストラクションデータが並べて記述されているので、その中の上位からＸ番目の多重化インストラクションデータを選択する。
【００８０】
続いて、インストラクション実行回路４２は、複数のカウンタ４６−１〜４６−ｎの中から、Ｘ番目の多重化インストラクションデータに記述されている領域情報３７に対応した１つのカウンタを選択する選択命令を、カウンタセレクタ４７に対して発行する（ステップＳ１５）。この選択命令が発行されると、カウンタセレクタ４７は、選択されたカウンタを動作可能な状態にする。なお、カウンタ４６−１〜４６−ｎの動作等については後で詳細に説明をする。
【００８１】
続いて、インストラクション実行回路４２は、データメモリ１９からユニットを読み出す転送命令を、ＤＭＡ回路４１に対して発行する（ステップＳ１６）。このとき、転送命令とともに、Ｘ番目の多重化インストラクションデータに記述されているユニットの記録開始アドレス３５と、そのユニットのバイト数３６も、ＤＭＡ回路４１に与える。ＤＭＡ回路４１は、ステップＳ１６の発行命令を受けると、データメモリ１９の指定されたアドレスから指定されたバイト数分のデータを読み出す。ＤＭＡ回路４１により読み出されたデータは、多重化対象となるエレメンタリストリーム（ビデオ、オーディオ又はヘッダ）であるので、ターゲットセレクタ４３に供給される。そして、ターゲットセレクタ４３に転送されたデータストリームは、ターゲットセレクタ４３が選択している第１のＦＩＦＯメモリ４４又は第２のＦＩＦＯメモリ４５のいずれかに転送され、これら第１又は第２のＦＩＦＯメモリ４４，４５から多重化ストリームが出力される。
【００８２】
続いて、インストラクション実行回路４２は、Ｘ＝Ｎであるか否かを判断する（ステップＳ１７）。ここで、Ｎは、インストラクション数３８に記述されている値である。つまり、インストラクション実行回路４２は、ステップＳ１７において１つのインストラクションセットの中の全ての多重化インストラクションデータに対する処理が終了したか否かを判断している。全ての処理を終えた場合には、ステップＳ１１に戻って処理を繰り返し行う。すなわち、命令メモリ１８に記録されている次のインストラクションセットの読み出しに処理を戻す。また、全ての処理をまだ終えていない場合には、Ｘを１つインクリメントした後（ステップＳ１８）、ステップＳ１４に戻る。すなわち、次の多重化インストラクションデータの選択処理に対して処理を行っていく。
【００８３】
インストラクション実行回路４２は、以上のステップＳ１１〜ステップＳ１８の処理を行うことによって、インストラクションセット内に記述されている多重化インストラクションデータを上位から順番に１つずつ実行するので、データメモリ１９に記録されているエレメンタリストリームをユニット単位で順番に読み出して、多重化ストリームを生成することができる。
【００８４】
また、さらに、インストラクション実行回路４２は、ステップＳ１２において、インストラクションセット内に記述されている出力ターゲット３９の記述内容に応じて、ターゲットセレクタ４３を切り換えるので、１つの実行回路で複数の多重化ストリームを出力することができる。
【００８５】
（カウンタ）
つぎに、カウンタ４６−１〜４６−ｎの動作について説明をする。
【００８６】
マルチプレクサ１７は複数のカウンタ４６−１〜４６−ｎを備えている。各カウンタは、それぞれがデータメモリ１９の各分割領域に一対一で対応している。例えば、第１のカウンタ４６−１は第１のビデオ格納領域２１に対応しており、第２のカウンタ４６−２は第１のオーディオ格納領域２２に対応しており、第２のカウンタ４６−３は第１のヘッダ格納領域２３に対応しており、第４のカウンタ４６−４は第２のビデオ格納領域２４に対応しており、第５のカウンタ４６−５は第２のオーディオ格納領域２５に対応しており、第６のカウンタ４６−６は第２のヘッダ格納領域２６に対応している。
【００８７】
また、カウンタ４６−１〜４６−ｎは、カウンタセレクタ４７により１つのみが選択がされる。選択されているカウンタ４６は、内部に保持しているカウント値から、ＤＭＡ回路４１からターゲットセレクタ４３に転送されるデータ量（例えばバイト数）を減算していく。なお、選択されるカウンタ４６は、多重化インストラクションデータの領域情報３７の記述内容により制御されている。すなわち、領域情報３７には現在転送中のユニットが記録されているデータメモリ１９上の分割領域が記述されているため、その分割領域に対応したカウンタが選択され、そのカウンタの値が減算されている。
【００８８】
このため、各カウンタ４６−１〜４６−ｎのカウント値は、対応する分割領域のデータ量を表していることとなる。
【００８９】
また、カウンタ４６−１〜４６−ｎのカウント値は、データバス１１を介してＣＰＵ１６や各エンコーダ１２〜１５により参照及び更新が可能となっている。
【００９０】
図１３、図１４を参照して、ある一つのカウンタ（第１のカウンタ４６−１）の具体的な動作例を説明する。
【００９１】
まず、図１３に示すように、時刻ｔ１に、第１のビデオ格納領域２１に対してＮｖ０バイトのユニットＶ０が記録されたとする。このとき、ＣＰＵ１６は、第１のカウンタ４６−１のカウント値Ｖｘに“Ｎｖ０”という値を加算する（カウント値Ｖｘの初期値は０であったものとする。）。なお、ＣＰＵ１６は、ユニットＶ０が第１のビデオ格納領域２１に記録されたことを、各エンコーダ１２〜１５から記録位置情報の通知により知ることができる。また、このとき、ＣＰＵ１６は、ユニットＶ０に対する多重化インストラクションデータを生成して、命令メモリ１８に格納している。
【００９２】
続いて、時刻ｔ２に第１のビデオ格納領域２１にＮｖ１バイトのユニットＶ１が記録されたとする。ＣＰＵ１６は、現在のカウント値Ｖｘ＝Ｎｖ０に“Ｎｖ１”という値を加算する。なお、このとき、ＣＰＵ１６は、ユニットＶ１に対する多重化インストラクションデータを生成して、命令メモリ１８に格納している。
【００９３】
続いて、時刻ｔ３に、マルチプレクサ１７がユニットＶ０，Ｖ１の多重化インストラクションの実行を開始し、ユニットＶ０，Ｖ１がデータメモリ１９から読み出される。ユニットＶ０，Ｖ１の読み出しが開始すると、第１のカウンタ４６−１のカウント値Ｖｘは、そのデータ転送量に応じて減少を開始する。
【００９４】
続いて、図１４に示すように、ユニットＶ０，Ｖ１の読み出し最中（時刻ｔ４、時刻ｔ５）に、第１のビデオ格納領域２１のユニットＶ４，Ｖ５の記録がされると（時刻ｔ４，時刻ｔ５）、ユニットＶ４，Ｖ５のデータ量がカウンタ４６−１のカウンタ値Ｖｘに加算される。
【００９５】
以上のようにカウンタ４６−１〜４６−ｎ内に保持されているカウント値は、ユニットの記録時にそのユニットのデータ量分増加し、ユニットの読み出し時にその読み出されるデータのデータ量分減少する。従って、カウンタ４６−１〜４６−ｎ内に保持されているカウント値は、対応する領域のビット占有量を表していることとなる。
【００９６】
さらに、カウンタ４６−１〜４６−ｎは、それぞれがデータメモリ１９内の各領域に対応しているので、その領域毎にビット占有量を表すことができる。
【００９７】
以上のように多重化システム１０では、データメモリ１９内の各領域のビット占有量を、ハードウェア的に管理するカウンタ４６−１〜４６−ｎを備えている。そのためデータメモリ１９内のビット占有量をＣＰＵ１６によりソフトウェア的に算出及び管理する必要がなくなり、ＣＰＵ１６の処理負担を軽減させることができる。
【００９８】
また、カウンタ４６−１〜４６−ｎ内のカウント値は、データバス１１を介して外部から参照が可能である。そのため、例えば各エンコーダ１２〜１５は、データメモリ１９に対して書き込みを行う際に、書き込みを行う領域のカウンタ４６のカウンタ値を参照して、書き込み可能であるか不可能であるかを高速に判断することができる。
【００９９】
第２の実施の形態
つぎに、本発明の第２の実施の形態の多重化システム５０について説明をする。
【０１００】
第２の実施の形態の多重化システムも、第１の実施の形態と同様に、ビデオデータとオーディオデータとを多重化したネットワーク配信用の２本の多重化ストリーム（第１及び第２の多重化ストリームＭＳ０，　ＭＳ１）を生成して、これらを同時に出力するシステムである。そのため、第２の実施の形態の多重化システム５０の説明をするにあたり、第１の実施の形態の多重化しシステム１０と同一の構成要素については、図面中に同一の符号を付けてその詳細な説明を省略する。
【０１０１】
多重化システム５０は、図１５に示すように、データバス１１上に、第１及び第２のビデオエンコーダ１２，１３と、第１及び第２のオーディオエンコーダ１４，１５と、ＣＰＵ５１と、マルチプレクサ５２と、命令メモリ１８と、データメモリ１９とを備えている。
【０１０２】
ＣＰＵ５１は、多重化システム１０を統括的にコントロールする。ＣＰＵ５１は、第１の実施の形態でのＣＰＵ１６と同様に、ヘッダデータＨＳ０，ＨＳ１を生成してユニットに分割し、データバス１１を介してデータメモリ１９に格納する。また、ＣＰＵ５１は、第１の実施の形態でのＣＰＵ１６と同様に、マルチプレクサ５２内のカウンタに対して所定の値を加算する処理を行う。
【０１０３】
また、ＣＰＵ５１は、エンコード処理と同時に、各エンコーダ１２〜１５等から与えられた格納位置情報及びシステム情報に基づきユニットの多重化順序を算出し、算出した多重化順序に基づきユニットの格納位置及び多重化順序等を記述したインストラクションセットを生成し、生成したインストラクションセットを命令メモリ１８に格納することも、第１の実施の形態と同様に行う。
【０１０４】
ただし、ＣＰＵ５１は、コマンドインストラクションデータを含んだインストラクションセットを生成する点において、第１の実施の形態と異なっている。
【０１０５】
（インストラクションセット）
コマンドインストラクションデータとは、多重化ストリームの出力時に、そのデータ列の任意の位置でマルチプレクサ５２に対してなんらかのデータ処理を行わせるための命令が記述されたデータである。
【０１０６】
図１６に、コマンドインストラクションデータ５３が含められたインストラクションセットを示す。
【０１０７】
コマンドインストラクションデータ５３は、インストラクション群３１内に、多重化インストラクションデータとともに並べて記述される。マルチプレクサ５２は、その並び順に従い多重化インストラクションデータ３３を実行していき、途中でコマンドインストラクションデータ５３が発生した場合には、ＤＭＡ回路４１のデータ転送処理を行わずに、そのコマンドインストラクションデータ５３に示されたデータ処理を行う。
【０１０８】
コマンドインストラクションデータ５３には、当該データがコマンドインストラクションデータであることを示すＩＤ情報５４、データ処理の内容５５、そのデータ処理を実行する場合に必要なデータ５６等が記述されている。
【０１０９】
コマンドインストラクションデータ５３に基づき行われるデータ処理には、例えば、多重化ストリーム中の任意の位置にスタッフィングデータやパディングデータと呼ばれるダミーデータを挿入する処理（スタッフィング挿入処理）、多重化ストリーム中の任意の位置のデータを出力直前に削除する処理（データ削除処理）、多重化ストリーム中の任意の位置にそのときの出力時間情報等の任意のデータを挿入する処理（データ挿入処理）、及び、多重化ストリームの任意の位置の出力タイミングをＣＰＵや外部に発信する処理（通知処理）等がある。
【０１１０】
以上のように、多重化インストラクションデータ３３及びコマンドインストラクションデータ５３を、ユニットの多重化位置及びデータ処理の実行処理の順序に従ってインストラクションセットに記述することによって、例えば任意のユニット間でデータ処理を行わせるといったような、マルチプレクサ５２に対して多重化のデータ列の任意の位置で所望のデータ処理を行わせることができる。
【０１１１】
なお、このようにコマンドインストラクションデータ５３を追加した場合には、インストラクション数３８には、当該インストラクションセット内に記述されている多重化インストラクションデータ３３及びコマンドインストラクションデータ５３の総数を記述する。
【０１１２】
（マルチプレクサ）
つぎに、以上のようなコマンドインストラクションデータ５３が含まれたインストラクションセットを実行するマルチプレクサ５２の具体的な構成について説明をする。
【０１１３】
マルチプレクサ５２は、ビデオストリームＶＥＳ０，オーディオストリームＡＥＳ０及びヘッダデータＨＳ０を多重化して第１の多重化ストリームＭＳ０を生成し、ビデオストリームＶＥＳ１，オーディオストリームＡＥＳ１及びヘッダデータＨＳ１を多重化して第２の多重化ストリームＭＳ１を生成する。マルチプレクサ５２は、第１の多重化ストリームＭＳ０及び第２の多重化ストリームＭＳ１を同時に生成して、同時にこれら二つのストリームを外部に出力する回路である点においては、第１の実施の形態のマルチプレクサ１７と同一である。ただし、コマンドインストラクションデータが含められたインストラクションセットを実行できるようにその内部構成は異なっている。
【０１１４】
以下、マルチプレクサ５２の内部構成についてさらに詳細に説明をする。
【０１１５】
マルチプレクサ５２は、図１７に示すように、ＤＭＡ回路６１と、インストラクション実行回路６２と、コマンド挿入回路６３と、ターゲットセレクタ６４と、第１のＦＩＦＯメモリ６５と、第２のＦＩＦＯメモリ６６と、第１のコマンド実行回路６７と、第２のコマンド実行回路６８と、第１の第１〜第ｎのカウンタ４６−１〜４６−ｎ（ただし、ｎは自然数。）と、カウンタセレクタ４７とを有している。
【０１１６】
ＤＭＡ回路６１は、ＣＰＵ５１を介さずにデータメモリ１９及び命令メモリ１８に対してダイレクトにアクセスしてデータを読み出す回路である。ＤＭＡ回路６１は、インストラクション実行回路６２から開始アドレス及びバイト数が指定され、指定された開始アドレスから指定されたバイト数分のデータを連続して読み出す。ＤＭＡ回路６１は、読み出したデータがエレメンタリストリーム（ビデオストリームＶＥＳ０，ＶＥＳ１、オーディオデータＡＥＳ０，ＡＥＳ１又はヘッダデータＨＳ０，ＨＳ１）であれば、そのデータをコマンド挿入回路６３に供給し、読み出したデータがインストラクションセットであれば、そのデータをインストラクション実行回路６２に供給する。
【０１１７】
インストラクション実行回路６２は、インストラクションセットに基づき、ＤＭＡ回路６１に対してデータの転送制御命令、コマンド挿入回路６３に対してコマンドの挿入命令、ターゲットセレクタ６４に対して切り換え命令、カウンタセレクタ４７に対してカウント選択命令を与える回路である。インストラクション実行回路６２による具体的な実行制御処理については詳細を後述する。
【０１１８】
コマンド挿入回路６３は、ＤＭＡ回路６１からエレメンタリデータが転送されてきたときには、そのままデータをターゲットセレクタ６４に転送する。コマンド挿入回路６３は、インストラクション実行回路６２から、コマンド挿入命令が与えられたときには、データ処理内容が記述されたコマンドデータを生成し、生成したコマンドデータをターゲットセレクタ６４に転送する。
【０１１９】
コマンド挿入回路６３により生成されるコマンドデータは、図１８に示すように、識別コード７１とコマンドコード７２とから構成されているデータである。識別コード７１は、続くデータがコマンドコード７２であることを識別するためのデータである。識別コード７１は、全てのコマンドデータで固定のデータパターンとなっている。コマンドコード７２には、データ処理内容を識別するＩＤと、そのデータ処理で用いられるパラメータとが記述される。コマンドデータは、コマンドコード７２に記述されるＩＤやパラメータの内容や数に関わらず、一定のデータ量となる。
【０１２０】
コマンド挿入回路６３は、インストラクション実行回路６２からコマンド挿入命令が与えられた場合、そのコマンド挿入命令とともに与えられたデータ処理内容に従い、以上のようなコマンドデータを生成する。そして、コマンド挿入回路６３は、生成したコマンドデータを、ターゲットセレクタ６４に転送する。
【０１２１】
ターゲットセレクタ６４は、ＤＭＡ回路６１からデータストリームが入力され、入力されたデータストリームを第１のＦＩＦＯメモリ６５又は第２のＦＩＦＯメモリ６６のいずれか一方に選択的に出力する回路である。どちらのＦＩＦＯメモリに対してデータストリームを出力するかは、インストラクション実行回路６２により切り換え制御がされる。
【０１２２】
第１のＦＩＦＯメモリ６５及び第２のＦＩＦＯメモリ６６は、いわゆるファーストイン−ファーストアウトメモリである。つまり、所定のビット数を１ワードとし、ワード単位でデータをシフト転送するメモリである。第１のＦＩＦＯメモリ６５から出力されたデータストリームは第１のコマンド実行回路６７に供給され、第２のＦＩＦＯメモリ６６から出力されたデータストリームが第２のコマンド実行回路６８に供給される。
【０１２３】
なお、コマンド挿入回路６３から第１のコマンド実行回路６７までのデータパスのバス幅（ワード幅）、コマンド挿入回路６３から第２のコマンド実行回路６８までのデータパスのバス幅（ワード幅）、並びに、第１のＦＩＦＯメモリ６５及び第２のＦＩＦＯメモリ６６のビット幅（ワード幅）は、通常のバス幅（ワード幅）から、フラグ用のビットラインが加えられ、１ビット分バス幅が拡張されている。
【０１２４】
例えば、本多重化システム５０が８ビット幅でデータ転送をするシステムであれば、図１９に示すように、バス幅を９ビットに拡張して、フラグビットの転送ラインを形成する。この場合、フラグビットの転送ラインに、コマンド挿入回路６３により生成されるフラグビットが転送され、残りの８ビットに多重化ストリームを構成するデータが転送される。また、例えば、本多重化システム５０が３２ビット幅でデータを転送するシステムであれば、図２０に示すように、バス幅を３３ビットに拡張して、フラグビットの転送ラインを形成する。この場合、フラグビットの転送ラインにコマンド挿入回路６３により生成されるフラグビットが転送され、残りの３２ビットに多重化ストリームを構成するデータが転送される。
【０１２５】
フラグビットは、コマンドデータの先頭ビットの位置を識別するために用いられる。コマンド挿入回路６３は、コマンドデータの識別コードの先頭ビットを送出する際に、フラグビットをハイ（例えば“１”）とする。コマンド挿入回路６３は、それ以外のデータを送出する場合には、フラグビットをロー（例えば“０”）とする。
【０１２６】
第１のコマンド実行回路６７は、第１のＦＩＦＯメモリ６５から多重化ストリームが転送され、第２のコマンド実行回路６８は、第２のＦＩＦＯメモリ６６から多重化ストリームが転送される。第１及び第２のコマンド実行回路６７，６８は、転送されてきた多重化ストリーム中のデータ列が、コマンドデータであるか否かを判断する。その判断は、まず、バスの拡張ビットであるフラグビットを検出し、フラグがハイ（例えば“１”）であれば、次に、そのフラグがハイとされているワードを読み出して、データ列から識別コードのデータパターンを検索する。識別コードのデータパターンが検索されれば、その識別コードに続くデータがコマンドコードである。第１及び第２のコマンド実行回路６７，６８は、そのコマンドコードに記述されたＩＤ及びパラメータを読み出し、そのＩＤ及びパラメータに従ったデータ処理を行う。
【０１２７】
第１及び第２のコマンド実行回路６７，６８は、転送されてきた多重化ストリームのデータ列が、コマンドデータでない場合には、つまり、通常のエレメンタリストリーム（ビデオ，オーディオ，ヘッダ等のストリーム）である場合には、そのデータをそのまま外部に出力する。なお、多重化ストリーム中にコマンドデータが含められていた場合には、そのコマンドデータのデータ列（識別コード、コマンド）は、除去して外部には出力しない。第１のコマンド実行回路６７から出力されたデータストリームが第１の多重化ストリームＭＳ０として外部に出力され、第２のコマンド実行回路６８から出力されたデータストリームが第２の多重化ストリームＭＳ１として外部に出力される。
【０１２８】
つぎに、インストラクション実行回路６２によるインストラクションセットの実行処理を、図２１のフローチャートを参照して説明する。
【０１２９】
まず、インストラクション実行回路６２は、命令メモリ１８からインストラクションセットを読み出す転送命令を、記録開始アドレス及びバイト数とともにＤＭＡ回路６１に対して発行する（ステップＳ２１）。ＤＭＡ回路６１は、ステップＳ２１の発行命令を受けると、命令メモリ１８の指定されたアドレスから指定されたバイト数分のデータを読み出す。ＤＭＡ回路６１により読み出されたデータは、インストラクションセットのデータ列であるので、ＤＭＡ回路６１からインストラクション実行回路６２に供給される。
【０１３０】
続いて、インストラクション実行回路６２は、転送されてきたインストラクションセットのテーブル情報３２内の出力ターゲット３９を参照して、ターゲットセレクタ６４に対して切り換え命令を与える（ステップＳ２２）。ターゲットセレクタ６４は、ステップＳ２２の選択命令を受けると、入力されたデータストリームを出力する出力ポートを、その内容に従って第１のＦＩＦＯメモリ６５側又は第２のＦＩＦＯメモリ６６側のいずれかに切り換える。
【０１３１】
続いて、インストラクション実行回路６２は、変数Ｘの値を“１”に初期化する（ステップＳ２３）。変数Ｘは、現在処理しているインストラクションの順番を示している。
【０１３２】
続いて、インストラクション実行回路６２は、ステップＳ２１で読み出されたインストラクションセットの中の、Ｘ番目のインストラクションデータを選択する（ステップＳ２４）。
【０１３３】
続いて、インストラクション実行回路６２は、Ｘ番目のインストラクションデータが、多重化インストラクションデータであるか、コマンドインストラクションデータであるかを判断する（ステップＳ２５）。多重化インストラクションデータであれば、ステップＳ２６に進み、コマンドインストラクションデータであればステップＳ２８に進む。
【０１３４】
ステップＳ２６において、インストラクション実行回路６２は、複数のカウンタ４６−１〜４６−ｎの中から、選択した多重化インストラクションデータに記述されている領域情報３７に対応した１つのカウンタを選択する選択命令を、カウンタセレクタ４７に対して発行する。続いて、インストラクション実行回路６２は、データメモリ１９からユニットを読み出す転送命令を、ユニットの記録開始アドレス３５及びバイト数３６とともにＤＭＡ回路６１に対して発行する（ステップＳ２７）。ＤＭＡ回路６１は、ステップＳ２６の発行命令を受けると、データメモリ１９の指定されたアドレスから指定されたバイト数分のデータを読み出す。ＤＭＡ回路６１により読み出されたデータは、コマンド挿入回路６３をそのまま通過して、ターゲットセレクタ６４が選択している第１のＦＩＦＯメモリ６５又は第２のＦＩＦＯメモリ６６のいずれかに転送される。インストラクション実行回路６２は、ステップＳ２７の処理を終えると、ステップＳ２９に進む。
【０１３５】
一方、ステップＳ２８において、インストラクション実行回路６２は、選択したコマンドインストラクションデータに対応した処理内容のコマンド挿入命令をコマンド挿入回路６３に与える。コマンド挿入命令が与えられたコマンド挿入回路６３は、コマンドデータを生成し、生成したコマンドデータをターゲットセレクタ６４に転送する。コマンドデータは、ターゲットセレクタ６４が選択している第１のＦＩＦＯメモリ６５又は第２のＦＩＦＯメモリ６６のいずれかに転送される。インストラクション実行回路６２は、ステップＳ２８の処理を終えると、ステップＳ２９に進む。
【０１３６】
続いて、インストラクション実行回路６２は、Ｘ＝Ｎであるか否かを判断することにより、１つのインストラクションセットの中の全ての多重化インストラクションデータに対する処理が終了したか否かを判断する（ステップＳ２９）。全ての処理を終えた場合には、ステップＳ２１に戻る。また、全ての処理をまだ終えていない場合には、Ｘを１つインクリメントした後（ステップＳ３０）、ステップＳ２４に戻る。
【０１３７】
インストラクション実行回路６２は、以上のステップＳ２１〜ステップＳ３０の処理を行うことによって、データメモリ１９に記録されているエレメンタリストリームをユニット単位で多重化することができる。
【０１３８】
つぎに、コマンド実行回路６７，６８により行われるスタッフィング処理、削除処理、通知処理及びデータ挿入処理の各処理内容について説明する。
【０１３９】
図２２にスタッフィング処理の内容を説明する図を示す。
【０１４０】
スタッフィング処理を行う場合、コマンド挿入回路６３は、コマンドインストラクションを実行することによって、多重化ストリーム中にスタッフィングデータを挿入することを示すコマンドデータを挿入する。スタッフィング処理を行う場合、コマンドコードには、例えば、ＩＤとしてスタッフィング処理を示す番号が記述され、パラメータとしてスタッフィングするデータ値及びスタッフィングするバイト数が記述される。
【０１４１】
コマンド実行回路６７，６８は、スタッフィング処理を示すコマンドデータを検出した場合、入力されたコマンドデータを削除し、そのコマンドデータが挿入されていた位置に、スタッフィングデータを挿入して出力する。例えば、コマンド実行回路６７，６８は、コマンドコードに、スタッフィングするデータの値として“０ｘｆｆ”が記述されており、スタッフィングするバイト数として“１０００”が記述されていれば、そのコマンドデータの挿入位置に“０ｘｆｆ”を１０００バイト分生成し、外部に出力する。
【０１４２】
この結果、多重化ストリーム中の任意の位置に、スタッフィングデータを挿入することができる。
【０１４３】
図２３に削除処理の内容を説明する図を示す。
【０１４４】
削除処理を行う場合、コマンド挿入回路６３は、コマンドインストラクションを実行することによって、多重化ストリーム中の削除するデータの直前に、コマンドデータを挿入する。削除処理を行う場合、コマンドコードには、ＩＤとして削除処理を示す番号が記述され、パラメータとして削除するバイト数が記述される。
【０１４５】
コマンド実行回路６７，６８は、削除処理を示すコマンドデータを検出した場合、入力されたコマンドデータを削除し、そのコマンドデータが挿入されていた位置の直後の所定バイト数分のデータを削除する。例えば、コマンドコードに削除するデータのバイト数が“６４バイト”と記述されていれば、コマンド実行回路６７，６８はこの記述どおりに、６４バイトのデータを削除する。
【０１４６】
このように多重化ストリームの出力直前に任意量のデータを削除することができれば、例えばＦＩＦＯメモリ６５，６６に格納されているデータの押し出しをすることが可能である。例えば、アクセスユニット単位、パケット単位或いはパック単位等の所定の単位毎に多重化ストリームを完全にＦＩＦＯメモリ６５，６６から出力しなければならないシステムの場合、その所定の単位の最終部分に削除コマンドとダミーデータとを挿入しておけば、ＦＩＦＯメモリ６５，６６内のデータを外部から監視することなく、必ずＦＩＦＯメモリ６５，６６からパケット等の最終データを出力することが可能となる。
【０１４７】
図２４に、通知処理の内容を説明する図を示す。
【０１４８】
通知処理を行う場合、コマンド挿入回路６３は、コマンドインストラクションを実行することによって、多重化ストリーム中の通知処理を行う位置にコマンドデータを挿入する。通知処理を行う場合、コマンドコードには、例えば、ＩＤとして通知処理を示す番号が記述され、パラメータとして通知する情報内容（例えば現在出力中のストリームに関する情報）が記述される。
【０１４９】
コマンド実行回路６７，６８は、通知処理を示すコマンドデータを検出した場合、入力されたコマンドデータを削除し、それとともにコマンドコード内にパラメータとして記述されている情報をＣＰＵ５１やその他の回路に発信する。
【０１５０】
この結果、例えばＣＰＵ５１等や、多重化ストリームの現在の出力状況を把握することができる。
【０１５１】
図２５に、データ挿入処理の内容を説明する図を示す。
【０１５２】
データ挿入処理を行う場合、コマンド挿入回路６３は、コマンドインストラクションを実行することによって、多重化ストリーム中のデータを挿入する位置にコマンドデータを挿入する。データ挿入処理を行う場合、コマンドコードには、例えば、ＩＤとしてデータ挿入処理を示す番号が記述され、パラメータとして挿入するデータの種類を識別する情報（挿入データＩＤ）が記述される。
【０１５３】
コマンド実行回路６７，６８は、データ挿入処理を示すコマンドデータを検出した場合、入力されたコマンドデータを削除し、そのコマンドデータが挿入されていた位置に、挿入データＩＤに示されているデータを挿入して出力する。例えば、コマンド実行回路６７，６８は、ＲＡＭ、レジスタ、その他のデータ生成回路により生成されたデータをそのコマンドデータの挿入位置に挿入し、外部に出力する。
【０１５４】
この結果、多重化ストリーム中の任意の位置に、例えば、時間情報等の出力タイミングによって値が変わるようなデータを簡易に挿入することができる。
【０１５５】
【発明の効果】
本発明に係る多重化装置及び方法では、多重化順序が示された多重化インストラクションデータを生成して上記メモリに格納し、当該メモリに格納された多重化インストラクションデータに従い順番に多重化処理を行う。
【０１５６】
このことにより上記多重化装置及び方法では、多重化時におけるコントローラの処理負担を軽減することができる。
【０１５７】
本発明に係る多重化装置及び方法では、多重化順序が示された多重化インストラクションデータ及びを所定のデータ実行命令が示されたコマンドインストラクションデータを生成して上記メモリに格納し、当該メモリに格納された多重化インストラクションデータ及びコマンドインストラクションデータに従い順番に多重化及びデータ処理を行う。
【０１５８】
このことにより上記多重化装置及び方法では、多重化ストリームの出力タイミングに同期させて行うデータ処理を確実に行い、且つ、その処理タイミングの自由度を大きくすることができる。
【０１５９】
本発明に係る多重化装置及び方法では、多重化順序が示された多重化インストラクションデータを生成して上記メモリに格納し、当該メモリに格納された多重化インストラクションデータに従い順番に多重化処理を行う。さらに、この多重化装置及び方法では、生成した多重化インストラクションデータに対応するデータユニットのデータ容量を上記カウント値に加算し、出力するデータユニットのデータ量を上記カウント値から減算する。
【０１６０】
このことにより上記多重化装置及び方法では、多重化時におけるコントローラの処理負担を軽減することができる。
【０１６１】
本発明に係る多重化装置及び方法では、多重化順序が示された多重化インストラクションデータを生成して上記メモリに格納し、当該メモリに格納された多重化インストラクションデータに従い順番に多重化処理を行う。さらに、この多重化装置及び方法では、上記多重化インストラクションデータに対して多重化ストリームの種別を記述しておき、その種別に応じて出力を切り換える。
【０１６２】
このことにより上記多重化装置及び方法では、複数の多重化ストリームを出力可能とするとともに回路規模を小さくすることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態の多重化システムによる多重化処理を説明するための図である。
【図２】本発明の第１の実施の形態の多重化システムのブロック図である。
【図３】上記多重化システムのデータメモリ内の各領域を説明するための図である。
【図４】上記多重化システムのエンコード処理の流れについて説明をする図である。
【図５】上記多重化システムの多重化処理の流れについて説明をする図である。
【図６】上記多重化システムで用いられるインストラクションセットを示す図である。
【図７】上記インストラクションセットを連続的に記録した状態を示す図である。
【図８】上記多重化システムのデータメモリ内の各領域に記録されたユニットを示す図である。
【図９】図８に示すユニットを多重化する場合のインストラクションセットを示す図である。
【図１０】図９に示すインストラクションセットを実行した場合の多重化ストリームを示す図である。
【図１１】上記第１の実施の形態の多重化システム内のマルチプレクサのブロック図である。
【図１２】上記マルチプレクサ内のインストラクション実行回路の処理フローを示す図である。
【図１３】上記マルチプレクサ内のカウンタの値の変化を示す図である。
【図１４】図１３に続くカウンタの値の変化を示す図である。
【図１５】本発明の第１の実施の形態の多重化システムのブロック図である。
【図１６】上記第２の実施の形態の多重化システムで用いられるインストラクションセットを示す図である。
【図１７】上記第２の実施の形態の多重化システム内のマルチプレクサのブロック図である。
【図１８】上記マルチプレクサのコマンド挿入回路で生成されるコマンドデータを示す図である。
【図１９】バス幅を８ビットから９ビットに拡張したコマンド挿入回路からコマンド実行回路までのデータ転送バスについて説明するための図である。
【図２０】バス幅を３２ビットから３３ビットに拡張したコマンド挿入回路からコマンド実行回路までのデータ転送バスについて説明するための図である。
【図２１】第２の実施の形態の多重化システムのマルチプレクサ内のインストラクション実行回路の処理フローを示す図である。
【図２２】多重化ストリーム中の任意の位置にスタッフィングデータやパディングデータと呼ばれるダミーデータを挿入する処理（スタッフィング挿入処理）について説明するための図である。
【図２３】多重化ストリーム中の任意の位置のデータを出力直前に削除する処理（データ削除処理）について説明するための図である。
【図２４】多重化ストリームの任意の位置の出力タイミングをＣＰＵや外部に発信する処理（通知処理）を説明するための図である。
【図２５】多重化ストリーム中の任意の位置にそのときの出力時間情報等の任意のデータを挿入する処理（データ挿入処理）について説明するための図である。
【符号の説明】
１，５０　多重化システム、１１　データバス、１２　第１のビデオエンコーダ、１３　第２のビデオエンコーダ、１４　第１のオーディオエンコーダ、１５第２のオーディオエンコーダ、１６，５１　ＣＰＵ、１７，５２　マルチプレクサ、１８　命令メモリ、１９　データメモリ、４１，６１　ＤＭＡ、４２，６２　インストラクション実行回路、４３，６４　ターゲットセレクタ、４４，４５，６５，６６　ＦＩＦＯメモリ、４６　カウンタ、４７　カウンタセレクタ、６３　コマンド挿入回路、６７，６８　コマンド実行回路
【図１】
2004088735.tif 000003
【図２】
2004088735.tif 000004
【図３】
2004088735.tif 000005
【図４】
2004088735.tif 000006
【図５】
2004088735.tif 000007
【図６】
2004088735.tif 000008
【図７】
2004088735.tif 000009
【図８】
2004088735.tif 000010
【図９】
2004088735.tif 000011
【図１０】
2004088735.tif 000012
【図１１】
2004088735.tif 000013
【図１２】
2004088735.tif 000014
【図１３】
2004088735.tif 000015
【図１４】
2004088735.tif 000016
【図１５】
2004088735.tif 000017
【図１６】
2004088735.tif 000018
【図１７】
2004088735.tif 000019
【図１８】
2004088735.tif 000020
【図１９】
2004088735.tif 000021
【図２０】
2004088735.tif 000022
【図２１】
2004088735.tif 000023
【図２２】
2004088735.tif 000024
【図２３】
2004088735.tif 000025
【図２４】
2004088735.tif 000026
【図２５】
2004088735.tif 000027