以下、図面を参照して、この発明の一実施の形態に係る画像情報のエンコード/デコードシステムを説明する。なお、重複説明を避けるために、複数の図面に渡り機能上共通する部分には共通の参照符号が用いられている。
図1〜図27は、この発明の一実施の形態に係る画像情報のエンコード/デコードシステムを説明するための図である。
図1は、この発明を適用できる情報保持媒体の一例としての光ディスクODの記録データ構造を略示している。
この光ディスクODは、たとえば片面約5Gバイトの記憶容量をもつ両面貼合せディスクであり、ディスク内周側のリードインエリアからディスク外周側のリードアウトエリアまでの間に多数の記録トラックが配置されている。各トラックは多数の論理セクタで構成されており、それぞれのセクタに各種情報(適宜圧縮されたデジタルデータ)が格納されている。
図2は、図1の光ディスクODに記録される映像(ビデオ)用ファイルのデータ構造を例示している。
図2に示すように、この映像用ファイルは、ファイル管理情報1および映像用データ2を含んでいる。映像用データ2は、ビデオデータユニット(ブロック)、オーディオデータユニット(ブロック)、副映像データユニット(ブロック)、そしてこれらのデータ再生を制御するために必要な情報(DSI;Disk Search Information )を記録したDSIユニット(ブロック)から構成されている。各ユニットは、たとえばデータの種類毎に一定のデータサイズのパケットに、それぞれ分割される。ビデオデータユニット、オーディオデータユニットおよび副映像データユニットは、これらユニット群の直前に配置されたDSIを基に、それぞれ同期をとって再生される。
すなわち、図1の複数論理セクタの集合体の中に、ディスクODで使用されるシステムデータを格納するシステムエリアと、ボリューム管理情報エリアと複数ファイルエリアが、形成される。
上記複数のファイルエリアのうち、たとえばファイル1は、主映像情報(図中のVIDEO)、主映像に対して補助的な内容を持つ副映像情報(図中のSUB−PICTURE)、音声情報(図中のAUDIO)、再生情報(図中のPLAYBACK INFO.)等を含んでいる。
図3は、図2で例示したデータ構造のうち、エンコード(ランレングス圧縮)された副映像情報のパックの論理構造を例示している。
図3の上部に示すように、ビデオデータに含まれる副映像情報の1パックはたとえば2048バイト(2kB)で構成される。この副映像情報の1パックは、先頭のパックのヘッダのあとに、1以上の副映像パケットを含んでいる。パックヘッダには、それぞれファイル全体の再生を通じて基準となる時刻(SCR; System Clock Reference)が付与されており、同じ時刻のSCRが付与されている副映像情報のパック内の副映像パケットが後述するデコーダへ転送されるようになっている。第1の副映像パケットは、そのパケットのヘッダのあとに、ランレングス圧縮された副映像データ(SP DATA1)を含んでいる。同様に、第2の副映像パケットは、そのパケットのヘッダのあとに、ランレングス圧縮された副映像データ(SP DATA2)を含んでいる。
このような複数の副映像データ(SP DATA1、SP DATA2、…)をランレングス圧縮の1ユニット(1単位)分集めたもの、すなわち副映像データユニット30に、副映像ユニットヘッダ31が付与される。この副映像ユニットヘッダ31のあとに、1ユニット分の映像データ(たとえば2次元表示画面の1水平ライン分のデータ)をランレングス圧縮した画素データ32、および各副映像パックの表示制御シーケンス情報を含むテーブル33が続く。
換言すると、1ユニット分のランレングス圧縮データ30は、1以上の副映像パケットの副映像データ部分(SP DATA1、SP DATA2、…)の集まりで形成されている。この副映像データユニット30は、副映像表示用の各種パラメータが記録されている副映像ユニットヘッダSPUH31と、ランレングス符号からなる表示データ(圧縮された画素データ)PXD32と、表示制御シーケンステーブルDCSQT33とで構成されている。
図4は、図3で例示した1ユニット分のランレングス圧縮データ30のうち、副映像ユニットヘッダ31の内容の一部を例示している(SPUH31の他部については図19参照)。ここでは、主映像(たとえば映画の映像本体)とともに記録・伝送(通信)される副映像(たとえば主映像の映画のシーンに対応した字幕)のデータに関して、説明を行なう。
図4に示すように、副映像ユニットヘッダSPUH31には、画素データ32のTV画面上での表示サイズすなわち表示開始位置および表示範囲(幅と高さ)SPDSZと、副映像データパケット内の表示制御シーケンステーブル33の記録開始位置SPDCSQTAとが、記録されている。
もう少し具体的にいうと、副映像ユニットヘッダSPUH31には、図4に示すように、以下の内容を持つ種々なパラメータ(SPDDADRなど)が記録されている:
(1)この表示データのモニタ画面上における表示開始位置および表示範囲 (幅および高さ)を示す情報(SPDSZ)と;
(2)パケット内の表示制御シーケンステーブル33の記録開始位置情報(副映像の表示制御シーケンステーブル開始アドレスSPDCSQTA)。
図3または図4に示す副映像の画素データ(ランレングスデータ)32は、図5に示すランレングス圧縮規則1〜6によって、その1単位のデータ長(可変長)が決まる。そして、決まったデータ長でエンコード(ランレングス圧縮)およびデコード(ランレングス伸張)が行われる。
図5は、図4で例示した副映像画素データ(ランレングスデータ)32部分が2ビットの画素データで構成される場合において、一実施の形態に係るエンコード方法で採用されるランレングス圧縮規則1〜6を説明するものである。
また、図6は、図4で例示した副映像画素データ(ランレングスデータ)32部分が2ビットの画素データで構成される場合において、上記圧縮規則1〜6を具体的に説明するための図である。
図5の1列目に示す規則1では、同一画素が1〜3個続く場合、4ビットデータでエンコード(ランレングス圧縮)のデータ1単位を構成する。この場合、最初の2ビットで継続画素数を表し、続く2ビットで画素データ(画素の色情報など)を表す。
たとえば、図6の上部に示される圧縮前の映像データPXDの最初の圧縮データ単位CU01は、2個の2ビット画素データd0、d1=(0000)bを含んでいる(bはバイナリであることを指す)。この例では、同一の2ビット画素データ(00)bが2個連続(継続)している。
この場合、図6の下部に示すように、継続数「2」の2ビット表示(10)bと画素データの内容(00)bとを繋げたd0、d1=(1000)bが、圧縮後の映像データPXDのデータ単位CU01*となる。
換言すれば、規則1によってデータ単位CU01の(0000)bがデータ単位CU01*の(1000)bに変換される。この例では実質的なビット長の圧縮は得られていないが、たとえば同一画素(00)bが3個連続するCU01=(000000)bならば、圧縮後はCU01*=(1100)bとなって、2ビットの圧縮効果が得られる。
図5の2列目に示す規則2では、同一画素が4〜15個続く場合、8ビットデータでエンコードのデータ1単位を構成する。この場合、最初の2ビットで規則2に基づくことを示す符号化ヘッダを表し、続く4ビットで継続画素数を表し、その後の2ビットで画素データを表す。
たとえば、図6の上部に示される圧縮前の映像データPXDの2番目の圧縮データ単位CU02は、5個の2ビット画素データd2、d3、d4、d5、d6=(0101010101)bを含んでいる。この例では、同一の2ビット画素データ(01)bが5個連続(継続)している。
この場合、図6の下部に示すように、符号化ヘッダ(00)bと、継続数「5」の4ビット表示(0101)bと画素データの内容(01)bとを繋げたd2〜d6=(00010101)bが、圧縮後の映像データPXDのデータ単位CU02*となる。
換言すれば、規則2によってデータ単位CU02の(0101010101)b(10ビット長)がデータ単位CU02*の(00010101)b(8ビット長)に変換される。この例では実質的なビット長圧縮分は10ビットから8ビットへの2ビットしかないが、継続数がたとえば15(CU02の01が15個連続するので30ビット長)の場合は、これが8ビットの圧縮データ(CU02*=00111101)となり、30ビットに対して22ビットの圧縮効果が得られる。つまり、規則2に基づくビット圧縮効果は、規則1のものよりも大きい。しかし、解像度の高い微細な画像のランレングス圧縮に対応するためには、規則1も必要となる。
図5の3列目に示す規則3では、同一画素が16〜63個続く場合、12ビットデータでエンコードのデータ1単位を構成する。この場合、最初の4ビットで規則3に基づくことを示す符号化ヘッダを表し、続く6ビットで継続画素数を表し、その後の2ビットで画素データを表す。
たとえば、図6の上部に示される圧縮前の映像データPXDの3番目の圧縮データ単位CU03は、16個の2ビット画素データd7〜d22=(101010………1010)bを含んでいる。この例では、同一の2ビット画素データ (10)bが16個連続(継続)している。
この場合、図6の下部に示すように、符号化ヘッダ(0000)bと、継続数「16」の6ビット表示(010000)bと画素データの内容(10)bとを繋げたd7〜d22=(000001000010)bが、圧縮後の映像データPXDのデータ単位CU03*となる。
換言すれば、規則3によってデータ単位CU03の(101010………1010)b(32ビット長)がデータ単位CU03*の(000001000010)b(12ビット長)に変換される。この例では実質的なビット長圧縮分は32ビットから12ビットへの20ビットであるが、継続数がたとえば63(CU03の10が63個連続するので126ビット長)の場合は、これが12ビットの圧縮データ(CU03*=000011111110)となり、126ビットに対して114ビットの圧縮効果が得られる。つまり、規則3に基づくビット圧縮効果は、規則2のものよりも大きい。
図5の4列目に示す規則4では、同一画素が64〜255個続く場合、16ビットデータでエンコードのデータ1単位を構成する。この場合、最初の6ビットで規則4に基づくことを示す符号化ヘッダを表し、続く8ビットで継続画素数を表し、その後の2ビットで画素データを表す。
たとえば、図6の上部に示される圧縮前の映像データPXDの4番目の圧縮データ単位CU04は、69個の2ビット画素データd23〜d91=(111111………1111)bを含んでいる。この例では、同一の2ビット画素データ(11)bが69個連続(継続)している。
この場合、図6の下部に示すように、符号化ヘッダ(000000)bと、継続数「69」の8ビット表示(00100101)bと画素データの内容(11)bとを繋げたd23〜d91=(0000000010010111)bが、圧縮後の映像データPXDのデータ単位CU04*となる。
換言すれば、規則4によってデータ単位CU04の(111111………1111)b(138ビット長)がデータ単位CU04*の(0000000010010111)b(16ビット長)に変換される。この例では実質的なビット長圧縮分は138ビットから16ビットへの122ビットであるが、継続数がたとえば255(CU01の11が255個連続するので510ビット長)の場合は、これが16ビットの圧縮データ(CU04*=0000001111111111)となり、510ビットに対して494ビットの圧縮効果が得られる。つまり、規則4に基づくビット圧縮効果は、規則3のものよりも大きい。
図5の5列目に示す規則5では、エンコードデータ単位の切換点からラインの終わりまで同一画素が続く場合に、16ビットデータでエンコードのデータ1単位を構成する。この場合、最初の14ビットで規則5に基づくことを示す符号化ヘッダを表し、続く2ビットで画素データを表す。
たとえば、図6の上部に示される圧縮前の映像データPXDの5番目の圧縮データ単位CU05は、1個以上の2ビット画素データd92〜dn=(000000………0000)bを含んでいる。この例では、同一の2ビット画素データ(00)bが有限個連続(継続)しているが、規則5では継続画素数が1以上いくつでも良い。
この場合、図6の下部に示すように、符号化ヘッダ(00000000000000)bと、画素データの内容(00)bとを繋げたd92〜dn=(0000000000000000)bが、圧縮後の映像データPXDのデータ単位CU05*となる。
換言すれば、規則5によってデータ単位CU05の(000000………0000)b(不特定ビット長)がデータ単位CU05*の(0000000000000000)b(16ビット長)に変換される。規則5では、ラインエンドまでの同一画素継続数が16ビット長以上あれば、圧縮効果が得られる。
図5の6列目に示す規則6では、エンコード対象データが並んだ画素ラインが1ライン終了した時点で、1ライン分の圧縮データPXDの長さが8ビットの整数倍でない(すなわちバイトアラインでない)場合に、4ビットのダミーデータを追加して、1ライン分の圧縮データPXDがバイト単位になるように(すなわちバイトアラインされるように)している。
たとえば、図6の下部に示される圧縮後の映像データPXDのデータ単位CU01*〜CU05*の合計ビット長は、必ず4ビットの整数倍にはなっているが、必ずしも8ビットの整数倍になっているとは限らない。
たとえばデータ単位CU01*〜CU05*の合計ビット長が1020ビットでありバイトアラインとするために4ビット不足しているなら、図6の下部に示すように、4ビットのダミーデータCU06*=(0000)bを1020ビットの末尾に付加して、バイトアラインされた1024ビットのデータ単位CU01*〜CU06*を出力する。
なお、2ビット画素データは、必ずしも4種類の画素色を表示するものに限定されない。たとえば、画素データ(00)bで副映像の背景画素を表し、画素データ(01)bで副映像のパターン画素を表し、画素データ(10)bで副映像の第1強調画素を表し、画素データ(11)bで副映像の第2強調画素を表わすようにしても良い。
画素データの構成ビット数がもっと多ければ、より他種類の副映像画素を指定できる。たとえば画素データが3ビットの(000)b〜(111)bで構成されているときは、ランレングスエンコード/デコードされる副映像データにおいて、最大8種類の画素色+画素種類(強調効果)を指定できるようになる。
図7は、エンコードされた画像情報(図3の31+32+33)を持つ高密度光ディスクの、量産からユーザサイドにおける再生までの流れを説明するとともに;エンコードされた画像情報の、放送/ケーブル配信からユーザ/加入者における受信/再生までの流れを説明するブロック図である。
たとえば圧縮前ランレングスデータが図7のエンコーダ200に入力されると、エンコーダ200は、たとえば図5の圧縮規則1〜6に基づくソフトウエア処理により、入力されたデータがランレングス圧縮(エンコード)される。
図1に示すような光ディスクODに図2に示すような論理構成のデータが記録される場合は、図7のエンコーダ200によるランレングス圧縮処理(エンコード処理)は、図3の副映像データに対して実施される。
図7のエンコーダ200には、上記光ディスクODを完成させるに必要な種々なデータも入力される。これらのデータは、たとえばMPEG(Mortion Picture Expert Group)の規格に基づき圧縮され、圧縮後のデジタルデータがレーザカッティングマシン202または変調器/送信器210に送られる。
レーザカッティングマシン202において、図示しないマザーディスクにエンコーダ200からのMPEG圧縮データがカッティングされて、光ディスクマスタ204が製造される。
2枚貼合せ高密度光ディスク量産設備206では、このマスタ204を雛形にして、たとえば厚さ0. 6ミリのポリカーボネート基板上のレーザ光反射膜に、マスタの情報が転写される。それぞれ別のマスタ情報が転写された大量2枚のポリカーボネート基板は、張り合わされて、厚さ1. 2ミリの両面光ディスク(あるいは片面読み取り形両面ディスク)となる。
設備206で量産された貼合せ高密度光ディスクODは各種市場に頒布され、ユーザの手元に届く。
頒布されたディスクODは、ユーザの再生装置300で再生される。この装置300は、エンコーダ200でエンコードされたデータを元の情報に復元するデコーダ101を備えている。デコーダ101でデコードされた情報は、たとえばユーザのモニタTVに送られ、映像化される。こうして、エンドユーザは大量頒布されたディスクODから、元の映像情報を観賞することができるようになる。
一方、エンコーダ200から変調器/送信器210に送られた圧縮情報は、所定の規格に沿って変調され、送信される。たとえば、エンコーダ200からの圧縮映像情報は、対応する音声情報とともに衛星放送(212)される。あるいは、エンコーダ200からの圧縮映像情報は、対応する音声情報とともにケーブル伝送(212)される。
放送あるいはケーブル伝送された圧縮映像/音声情報は、ユーザあるいは加入者の受信器/復調器400で受信される。この受信器/復調器400は、エンコーダ200でエンコードされたデータを元の情報に復元するデコーダ101を備えている。デコーダ101でデコードされた情報は、たとえばユーザのモニタTVに送られ、映像化される。こうして、エンドユーザは放送あるいはケーブル伝送された圧縮映像情報から、元の映像情報を観賞することができるようになる。
図8は、この発明に基づく画像デコード(ランレングス伸張)を実行するデコーダのハードウエアの一実施形態(ノンインターレース仕様)を示すブロック図である。ランレングス圧縮された副映像データSPD(図3のデータ32相当)をデコードするデコーダ101(図7参照)は、図8のように構成することができる。このデコーダ101には、同じ時刻のSCRが付与されている副映像情報のパック内の副映像パケットが順次転送されるようになっており、上記SCRも供給されており、このSCRに応じて後述するメインSTC120aの計数が所定時間後に零となる値から開始されるようになっている。この所定時間とは、上記SCRに対応する1副映像ユニット(最大サイズ)のものの転送時間分に対応している。たとえば、1副映像ユニットの最大サイズが65535バイトで転送レートが740nsec/1バイトの場合、65535×740/1000000≒48.5msecとなり、約48.5msec後に零となる値から開始されるようになっている。
以下、図8を参照しながら、図4に示すようなフォーマットのランレングス圧縮された画素データを含む信号をランレングス伸張する副映像データデコーダについて、説明する。
図8に示すように、この副映像デコーダ101は、副映像データSPDが入力されるデータI/O102と;副映像データSPDを保存するメモリ108と;このメモリ108の読み書き動作を制御するメモリ制御部105と;メモリ108から読み出された符号データ(ランレングス圧縮された画素データ)のラン情報から1単位(1ユニット)の継続コード長(符号化ヘッダ)を検知し、その継続コード長の切り分け情報を出力する継続コード長検知部106と;この継続コード長検知部106からの情報にしたがって1ユニット分の符号データを取り出す符号データ切分部103と;この符号データ切分部103から出力されるものであって1圧縮単位のラン情報を示す信号と、継続コード長検知部106から出力されるものであってデータビットの「0」が1ユニット分の符号データの先頭から幾つ連続しているかという「0」ビット連続数を示す信号(期間信号)とを受け取り、これらの信号から1ユニットの継続画素数を計算するラン長設定部107と;符号データ切分部103からの画素色情報とラン長設定部107から出力された期間信号とを受け取り、その期間だけ色情報を出力する画素色出力部104(Fast-in/Fast-outタイプ)と;メモリ108から読み出された副映像データSPD中のヘッダデータ(図4参照)を読み込み、読み込んだデータに基づき各種処理設定および制御を行なうマイクロコンピュータ112と;メモリ108の読み書きアドレスを制御するアドレス制御部109と;ラン情報が存在しないラインに対する色情報がマイクロコンピュータ112により設定される不足画素色設定部111と;TV画面などに副映像を表示するときの表示エリアを決定する表示有効許可部110などで、構成されている。
なお、図24〜図27の説明で言及されるが、デコーダ101のMPU112には、タイマ120およびバッファ121が接続されている。タイマ120は、メインSTC(システムタイマ)120aとサブSTC(サブタイマ)120bから構成されている。
上記説明を別の言い方で再度説明すると、次のようになる。すなわち、図8に示すように、ランレングス圧縮された副映像データSPDは、データI/O102を介して、デコーダ101内部のバスに送り込まれる。バスに送り込まれたデータSPDは、メモリ制御部105を介してメモリ108へ送られ、そこに記憶される。また、デコーダ101の内部バスは、符号データ切分部103と、継続コード長検知部106と、マイクロコンピュータ(MPUまたはCPU)112とに接続されている。
メモリ108から読み出された副映像データの副映像ユニットヘッダ31は、マイクロコンピュータ112により読み取られる。マイクロコンピュータ112は、読み出したヘッダ31から、図4に示す各種パラメータに基づいて、アドレス制御部109にデコード開始アドレス(SPDDADR)を設定し、表示有効許可部110に副映像の表示開始位置と表示幅と表示高との情報(SPDSZ)を設定し、符号データ切分部103に副映像の表示幅(ライン上のドット数)を設定する。設定された各種情報は各部(109、110、103)の内部レジスタに保存される。それ以後、レジスタに保存された各種情報は、マイクロコンピュータ112によりアクセスできるようになる。
アドレス制御部109は、レジスタに設定されたデコード開始アドレス(SPDDADR)に基づき、メモリ制御部105を介しメモリ108にアクセスして、デコードしようとする副映像データの読み出しを開始する。こうしてメモリ108から読み出された副映像データは、符号データ切出部103および継続コード長検知部106に与えられる。
ランレングス圧縮された副映像データSPDの符号化ヘッダ(図5の規則2〜5では2〜14ビット)は継続コード長検知部106により検出され、データSPD内における同一画素データの継続画素数が継続コード長検知部106からの信号を基にラン長設定部107により検出される。
すなわち、継続コード長検知部106は、メモリ108から読み込んだデータの”0”ビットの数を数えて、符号化ヘッダ(図5参照)を検知する。この検知部106は、検知した符号化ヘッダの値にしたがって、符号データ切分部103に切り分け情報SEP.INFO.を与える。
符号データ切分部103は、与えられた切り分け情報SEP.INFO.にしたがって、継続画素数(ラン情報)をラン長設定部107に設定するとともに、画素データ(SEPARATED DATA;ここでは画素色)をFIFOタイプの画素色出力部104に設定する。その際、符号データ切分部103は、副映像データの画素数をカウントし、画素数カウント値と副映像の表示幅(1ラインの画素数)とを比較している。
1ライン分のデコードが終了した時点でバイトアラインされていない(つまり1ライン分のデータビット長が8の倍数でない)場合は、符号データ切分部103は、そのライン上の末尾4ビットデータをエンコード時に付加されたダミーデータであるとみなして、切り捨てる。
ラン長設定部107は、前記継続画素数(ラン情報)と画素ドットクロック(DOTCLK)と水平/垂直同期信号(H−SYNC/V−SYNC)とに基づいて、画素色出力部104に、画素データを出力させるための信号(PERIOD SIGNAL)を与える。すると、画素色出力部104は、画素データ出力信号(PERIOD SIGNAL)がアクティブである間(つまり同じ画素色を出力する期間中)、符号データ切分部103からの画素データを、デコード
された表示データとして出力する。
その際、マイクロコンピュータ112からの指示によりデコード開始ラインが変更されている場合には、ラン情報のないラインが存在することがある。その場合には、不足画素色設定部111が、予め設定された不足の画素色のデータ(COLOR INFO.)を画素色出力部104に与える。すると、ラン情報のないラインデータが符号データ切分部103に与えられている間、画素色出力部104は、不足画素色設定部111からの不足画素色データ(COLOR INFO.)を出力する。
すなわち、図8のデコーダ101の場合、入力された副映像データSPD中に画像データがないと、マイクロコンピュータ112はその分不足する画素色情報を不足画素色設定部111に設定するようになっている。
この画素色出力部104へは、図示しないモニタ画面上のどの位置にデコードされた副映像を表示させるかを決定する表示許可(Display Enable)信号が、副映像画像の水平/垂直同期信号に同期して、表示有効許可部(Display Activator )110から与えられる。また、マイクロコンピュータ112からの色情報指示に基づいて、許可部110から出力部104へ、色切換信号が送られる。
アドレス制御部109は、マイクロコンピュータ112による処理設定後、メモリ制御部105、継続コード長検知部106、符号データ切分部103およびラン長設定部107に対して、アドレスデータおよび各種タイミング信号を送出する。
データI/O部102を介して副映像データSPDのパックが取り込まれ、それがメモリ108に格納される際、このデータSPDのパックヘッダの内容(デコード開始アドレス、デコード終了アドレス、表示開始位置、表示幅、表示高さなど)がマイクロコンピュータ112により読み取られる。マイクロコンピュータ112は、読み取った内容に基づいて、表示有効許可部110に、デコード開始アドレス、デコード終了アドレス、表示開始位置、表示幅、表示高さなどを設定する。
以下、圧縮された画素データが2ビット構成(使用規則は図5の規則1〜6)の場合について、図8のデコーダ101の動作を説明する。
マイクロコンピュータ112によりデコードスタートアドレスが設定されると、アドレス制御部109は、メモリ制御部105に対応するアドレスデータを送るとともに、継続コード長検知部106に読込開始信号を送る。
継続コード長検知部106は、送られてきた読込開始信号に応答してメモリ制御部105にリード信号を送って符号化データ(圧縮された副映像データ32)を読み込む。そして、この検知部106において、読み込んだデータのうち上位2ビット全てが「0」かどうかがチェックされる。
それらが「0」でない場合は、圧縮単位のブロック長が4ビットであると判定される(図5の規則1参照)。
それら(上位2ビット)が「0」であれば、さらに続く2ビット(上位4ビット)がチェックされる。それらが「0」でない場合は、圧縮単位のブロック長が8ビットであると判定される(図5の規則2参照)。
それら(上位4ビット)が「0」であれば、さらに続く2ビット(上位6ビット)がチェックされる。それらが「0」でない場合は、圧縮単位のブロック長が12ビットであると判定される(図5の規則3参照)。
それら(上位6ビット)が「0」であれば、さらに続く8ビット(上位14ビット)がチェックされる。それらが「0」でない場合は、圧縮単位のブロック長が16ビットであると判定される(図5の規則4参照)。
それら(上位14ビット)が「0」であれば、圧縮単位のブロック長が16ビットであるとともに、ラインエンドまで同じ画素データが連続していると判定される(図5の規則5参照)。
また、ラインエンドまで読み込んだ画素データのビット数が8の整数倍であればそのままとし、8の整数倍でなければ、バイトアラインを実現するために、読み込んだデータの末尾に4ビットのダミーデータが必要であると判定される(図5の規則6参照)。
符号データ切分部103は、継続コード長検知部106による上記判定結果に基づいて、メモリ108から副映像データ32の1ブロック分(1圧縮単位)を取り出す。そして、切分部103において、取り出された1ブロック分データが、継続画素数と画素データ(画素の色情報など)に切り分けられる。切り分けられた継続画素数のデータ(RUN INFO.)はラン長設定部107に送られ、切り分けられた画素データ(SEPARATED DATA)は画素色出力部104に送られる。
一方、表示有効許可部110は、マイクロコンピュータ112から受け取った表示開始位置情報、表示幅情報および表示高情報にしたがい、装置外部から供給される画素ドットクロック(PIXELーDOT CLK)、水平同期信号(H−SYNC)および垂直同期信号(V−SYNC)に同期して、副映像表示期間を指定する表示許可信号(イネーブル信号)を生成する。この表示許可信号は、ラン長設定部107に出力される。
ラン長設定部107には、継続コード長検知部106から出力されるものであって現在のブロックデータがラインエンドまで連続するかどうかを示す信号と、符号データ切分部103からの継続画素データ(RUN INFO.)とが送られる。ラン長設定部107は、検知部106からの信号および切分部103からのデータに基づいて、デコード中のブロックが受け持つ画素ドット数を決定し、このドット数に対応する期間中、画素色出力部104へ表示許可信号(出力イネーブル信号)を出力するように構成されている。
画素色出力部104は、ラン長設定部107からの期間信号受信中イネーブルとなり、その期間中、符号データ切分部103から受け取った画素色情報を、画素ドットクロック(PIXELーDOT CLK)に同期して、デコードされた表示データとして、図示しない表示装置などへ送出する。すなわち、デコード中ブロックの画素パターン連続ドット数分の同じ表示データが、画素色出力部104から出力される。
また、継続コード長検知部106は、符号化データがラインエンドまで同じ画素色データであると判定すると、符号データ切分部103へ継続コード長16ビット用の信号を出力し、ラン長設定部107にはラインエンドまで同じ画素色データであることを示す信号を出力する。
ラン長設定部107は、検知部106から上記信号を受け取ると、水平同期信号H−SYNCが非アクティブになるまで符号化データの色情報がイネーブル状態を保持し続けるように、画素色出力部104へ出力イネーブル信号(期間信号)を出力する。
なお、マイクロコンピュータ112が副映像の表示内容をスクロールさせるためにデコード開始ラインを変更した場合は、予め設定していた表示領域内にデコード使用とするデータラインが存在しない(つまりデコードラインが不足する)可能性がある。
図8のデコーダ101は、このような場合に対処するために、不足したラインを埋める画素色データを予め用意している。そして、実際にライン不足が検知されると、不足画素色データの表示モードに切り換えられる。具体的にいえば、データエンド信号がアドレス制御部109から表示有効許可部110に与えられると、許可部110は画素色出力部104に色切換信号(COLOR SW SIGNAL)を送る。画素色出力部104は、この切換信号に応答して、符号データからの画素色データのデコード出力を、不足画素色設定部110からの色情報(COLOR INFO.)のデコード出力に切り換える。この切換状態は、不足ラインの表示期間中(DISPLAY ENABLE=アクティブ)、維持される。
なお、上記ライン不足が生じた場合、不足画素色データを用いる代わりに、その間、デコード処理動作を中止することもできる。
具体的には、例えばデータエンド信号がアドレス制御部109から表示有効許可部110へ入力されたときに、許可部110から画素色出力部104へ表示中止を指定する色切換信号を出力すればよい。すると、画素色出力部104は、この表示中止指定色切換信号がアクティブの期間中、副映像の表示を中止するようになる。
図9は、エンコードされた画素データ(副映像データ)のうち、文字パターン「A」がどのようにデコードされるかを、2例(ノンインターレース表示およびインターレース表示)説明するものである。
図8のデコーダ101は、図9の上部で示すような圧縮データを図9の左下部に示すようなノンインターレース表示データにデコードする場合に用いることができる。
これに対し、図9の上部で示すような圧縮データを図9の右下部に示すようなインターレース表示データにデコードする場合は、同一画素ラインを二度スキャンするラインダブラ(たとえば、奇数フィールドのライン#1と同じ内容のライン#10を、偶数フィールドにおいて再スキャンする;V−SYNC単位の切換)が必要になる。
また、インターレース表示と同等の画像表示量をノンインターレース表示する場合は、別のインダブラ(たとえば、図9右下部のライン#1と同じ内容を持つライン#10をライン#1に連続させる;H−SYNC単位の切換)が必要になる。
図10は、この発明の一実施の形態に係る画像デコード(ランレングス伸張)を実行するものであって、たとえば図11あるいは図12マイクロコンピュータ112により実行されるソフトウエアを説明するフローチャートである。(ここでは、図3の表示制御シーケンステーブルDCSQT33のデコードについては触れない。DCSQT33部分のデコードについては、図25〜図27を参照して後述する。)
また、図11は、図10のソフトウエアで使用されるデコードステップ(ST105)の内容の一例を説明するフローチャートである。
すなわち、マイクロコンピュータ112は、ランレングス圧縮された副映像データ(画素データは2ビット構成)の初めのヘッダ31部分を読み込んで、その内容(図4参照)を解析する。そして、解析されたヘッダの内容に基づいて、デコードされる画像データのライン数およびドット数が指定される。これらライン数およびドット数が指定されると(ステップST101)、ラインカウント数およびドットカウント数が「0」に初期化される(ステップST102〜ステップST103)。
マイクロコンピュータ112は、副映像ユニットヘッダ31の後に続くデータビット列を順次取り込んで行き、ドット数およびドットカウント数を計数する。そしてドット数からドットカウント数を引き算して、継続画素数を算出する(ステップST104)。
こうして継続画素数が算出されると、マイクロコンピュータ112は、この継続画素数の値に応じてデコード処理を実行する(ステップST105)。
ステップST105のデコード処理後、マイクロコンピュータ112はドットカウント数と継続画素数とを加算し、これを新たなドットカウント数とする(ステップST106)。
そして、マイクロコンピュータ112はデータを順次とりこんではステップST105のデコード処理を実行し、累積したドットカウント数が初めに設定したライン終了数(ラインエンドの位置)と一致したとき、1ライン分のデータについてのデコード処理を終了する(ステップST107イエス)。
次に、デコードしたデータがバイトアラインされておれば(ステップST108Aイエス)、ダミーデータ分を取り除く(ステップST108B)。そしてラインカウント数を+1インクリメントし(ステップST109)、最終ラインに到達するまで(ステップST1010ノー)、ステップST102〜ステップST109の処理を反復する。最終ラインに到達すれば(ステップST1010イエス)、デコードは終了する。
図10のデコード処理ステップST105の処理内容は、たとえば図11に示すようになっている。
この処理では、初めから2ビットを取得しては、そのビットが「0」か否かを判定する織りを繰り返す(ステップST111〜ステップST119)。これにより、図5のランレングス圧縮規則1〜6に対応した継続画素数、つまりラン連続数が決定される(ステップST120〜ステップST123)。
そしてラン連続数が決定された後、そのあとに続けて読み込んだ2ビットが画素パターン(画素データ;画素の色情報)とされる(ステップST124)。
画素データ(画素の色情報)が決まると、インデックスパラメータ「i」を0とし(ステップST125)、パラメータ「i」がラン連続数と一致するまで(ステップST126)、2ビット画素パターンを出力しては(ステップST127)、パラメータ「i」を+1インクリメントし(ステップST128)、同じ画素データの1単位分の出力を終えて、デコード処理を終了する。
このように、この副映像データのデコード方法によれば、副映像データのデコード処理が、数ビットの判定処理とデータブロックの切り分け処理とデータビットの計数処理だけという、簡単な処理で済む。このため、従来のMH符号化方法などで使用される大掛かりなコード表は必要なくなり、エンコードされたビットデータを元の画素情報にデコードする処理・構成が簡単になる。
なお、上記実施の形態では、データデコード時に最大16ビットのビットデータを読み取れば、同じ画素の1単位分の符号ビット長を決定できるものとしたが、この符号ビット長はこれに限定されない。たとえばこの符号ビット長は32ビットでも64ビットでもよい。ただしビット長が増えれば、その分容量の大きなデータバッファが必要になる。
また、上記実施の形態では画素データ(画素の色情報)を、たとえば16色のカラーパレットから選択された3色の色情報としたが、これ以外に、色の3原色(赤成分R、緑成分G、青成分B;または輝度信号成分Y、クロマ赤信号成分Cr、クロマ青信号成分Cbなど)それぞれの振幅情報を、2ビットの画素データで表現することもできる。つまり、画素データは特定種類の色情報に限定されることはない。
図12は、エンコード(図3のSPUH+PXD+DCSQTのエンコード)およびデコード(SPUH+PXD+DCSQTのデコード)が実行される光ディスク記録再生装置の概要を説明するブロック図である。
図12において、光ディスクプレーヤ300は、基本的には従来の光ディスク再生装置(コンパクトディスクプレーヤあるいはレーザディスクプレーヤ)と同様な構成を持つ。ただし、この光ディスクプレーヤ300は、挿入された光ディスクOD(ランレングス圧縮された副映像データを含む画像情報が記録されたもの)から、ランレングス圧縮された画像情報をデコードする前のデジタル信号 (エンコードされたままのデジタル信号)を出力できるようになっている。このエンコードされたままのデジタル信号は圧縮されているので、必要な伝送帯域幅は非圧縮データを伝送する場合に比べて少なくて良い。
光ディスクプレーヤ300からの圧縮デジタル信号は変調器/送信器210を介してオンエアされ、または通信ケーブルに送出される。
オンエアされた圧縮デジタル信号、あるいはケーブル送信された圧縮デジタル信号は、受信者あるいはケーブル加入者の受信器/復調器400により、受信される。この受信器400は、たとえば図8に示すような構成のデコーダ101を備えている。受信器400のデコーダ101は、受信し復調した圧縮デジタル信号をデコードして、エンコードされる前の原副映像データを含む画像情報を出力する。
図12の構成において、送受信の伝送系がおよそ5Mビット/秒以上の平均ビットレートを持つものであれば、高品位なマルチメディア映像・音声情報の放送ができる。
図13は、この発明に基づきエンコードされた画像情報が、通信ネットワーク(インターネットなど)を介して、任意の2コンピュータユーザ間で送受される場合を説明するブロック図である。
図示しないホストコンピュータで管理する自己情報#1を持つユーザ#1はパーソナルコンピュータ5001を所有しており、このパーソナルコンピュータ5001には、種々な入出力機器5011および種々な外部記憶装置5021が接続されている。また、このパーソナルコンピュータ5001の内部スロット(図示せず)には、この発明に基づくエンコーダおよびデコーダが組み込まれ、通信に必要な機能を持つモデムカード5031が装着されている。
同様に、別の自己情報#Nを持つユーザ#Nはパーソナルコンピュータ500Nを所有しており、このパーソナルコンピュータ500Nには、種々な入出力機器501Nおよび種々な外部記憶装置502Nが接続されている。また、このパーソナルコンピュータ500Nの内部スロット(図示せず)には、この発明に基づくエンコーダおよびデコーダが組み込まれ、通信に必要な機能を持つモデムカード503Nが装着されている。
いま、あるユーザ#1がコンピュータ5001を操作し、インターネットなどの回線600を介して別のユーザ#Nのコンピュータ500Nと通信を行なう場合を想定してみる。この場合、ユーザ#1およびユーザ#Nは双方ともエンコーダおよびデコーダが組み込まれたモデムカード5031および503Nを持っているので、この発明により効率よく圧縮された画像データを短時間で交換できる。
図24は、エンコードされた画像情報(図3のSPUH+PXD+DCSQT)を光ディスクODに記録し、記録された情報(SPUH+PXD+DCSQT)をこの発明に基づきデコードする記録再生装置の概要を示している。
図24のエンコーダ200は、図7のエンコーダ200と同様なエンコード処理(図13〜図14に対応する処理)を、ソフトウエアあるいはハードウエア(ファームウエアあるいはワイアードロジック回路を含む)で実行するように構成されている。
エンコーダ200でエンコードされた副映像データその他を含む記録信号は、変調器/レーザドライバ702において、たとえば(2、7)RLL変調される。変調された記録信号は、レーザドライバ702から光ヘッド704の高出力レーザダイオードに送られる。この光ヘッド704からの記録用レーザにより、記録信号に対応したパターンが、光磁気記録ディスクまたは相変化光ディスクODに、書き込まれる。
ディスクODに書き込まれた情報は、光ヘッド706のレーザピックアップにより読み取られ、復調器/エラー訂正部708において復調され、かつ必要に応じてエラー訂正処理を受ける。復調されエラー訂正された信号は、音声/映像用データ処理部710において種々なデータ処理を受けて、記録前の情報が再生される。
このデータ処理部710は、図8のデコーダ101に対応するデコード処理部を含んでいる。このデコード処理部により、図10〜図11に対応するデコード処理(圧縮された副映像データの伸張)が実行される。
ここで、図2または図3に示される副映像データは、図15に示すように複数チャネルで構成されている。副映像データユニットは、これら複数チャネルの中から任意に選択されたチャネルの、複数副映像データパケットで構成される。ここでの副映像は、文字あるいは図形などの情報を持ち、ビデオデータやオーディオデータと同時に再生処理されて、ビデオデータの再生画面上にスーパーインポーズ表示される。
図16は、副映像パケットのデータ構造を示す。図16に示すように、副映像のパケットデータは、パケットヘッダ3と、副映像ヘッダ31と、副映像データ32と、表示制御シーケンステーブル33とで構成されている。
パケットヘッダ3には、再生システムがその副映像データユニットの表示制御を開始すべき時刻がプレゼンテーションタイムスタンプ(PTS;Presentation Time Stamp )として記録されている。ただし、このPTSは、図17に示すように、各副映像データユニット(Y,W)内の先頭の副映像データパケットのヘッダ3にだけ記録されるようになっている。このPTSは、所定の再生時刻SCRにより再生される複数の副映像データユニットにおいて、その再生順に沿った値が各副映像データユニットに対して記述されている。
図18は、1以上の副映像パケットで構成される副映像ユニット(図3の30参照)の直列配列状態(n、n+1)と、そのうちの1ユニット(n+1)のパケットヘッダに記述されたタイムスタンプPTSと、このPTSに対応したユニット(n+1)の表示制御の状態(それ以前の副映像の表示クリアと、これから表示する副映像の表示制御シーケンスの指定)とを、例示している。
副映像ヘッダ31には、副映像データパケットのサイズ(2バイトのSPCSZ)と、パケット内の表示制御シーケンステーブル33の記録開始位置(2バイトのSPDCSQTA)とが記録されている。
表示制御シーケンステーブル33には、映像データの表示開始時刻/表示終了時刻を示す副映像表示制御タイムスタンプ(SPDCTS;Sub-Picture Display Control Time Stamp)と、表示すべき副映像データ(PXD)32の記録位置(SPNDCSQA;Sub-Picture Next Display Control Sequence Address )、副映像データの表示制御コマンド(COMMAND)とを1グループとする表示制御シーケンス情報(DCSQT;Display Control Sequence Table)が、1以上記録される。
ここで、パケットヘッダ3内のタイムスタンプPTSは、たとえばファイル (図2)先頭の再生開始時刻のような、ファイル全体の再生を通じて基準となる時刻(SCR;System Clock Reference)からの相対時間で規定されている。このSCRは、パケットヘッダ3の手前に付与されているパックヘッダ内に記述されている。一方、表示制御シーケンステーブル33内の各タイムスタンプSPDCTSは、上記PTSからの相対時間で規定される。
最初に表示処理されるシーケンスの副映像表示制御タイムスタンプSPDCTSには「0」を記述される。
次に、再生システムにおける副映像データパケットのタイムスタンプPTS処理について説明する。ここでは、再生システム内の副映像プロセサ(たとえば図8のMPU112およびその周辺回路)において、このPTS処理が実行されるものとする。
図15は、副映像データをデコードする場合において、副映像データユニットのバッファリング状態が、タイムスタンプPTSのある副映像チャネルによってどのように変化するかを説明するための図である。
(1)副映像プロセサ(図8その他)は、外部(光ディスクあるいは放送局など)から送られてくる副映像データパケットの中から、予め選択されたチャネルの副映像データパケットをデコードし、そのパケット内にPTSがあるかどうかを調べる。
たとえば図15のチャネル*4fに示すようにPTSが存在する場合は、そのPTSがパケットヘッダ3から切り離される。その後、たとえば図17に示すように副映像データの頭にPTSが付けられ、PTSヘッダ付きの副映像データが副映像バッファ(たとえば図8のバッファ121)にバッファリング(格納)される。
なお、図15のグラフは、PTS付きチャネル*4fの副映像データパケットがバッファリングされるにつれて、副映像バッファ121へのバッファリング量が累積して行く様子を例示している。
(2)システムリセット後、副映像プロセサは、PTSを含んだ最初のパケットを受け取った直後の垂直ブランキング期間中(ある表示画面フレーム/フィールドから次の表示画面フレーム/フィールドへの切り換わり期間中)にこのPTSを取り込み、取り込んだPTSを基準タイムカウンタとしてのメインSTC120a(副映像プロセサ内のカウンタ例えば図8のタイマ120の一部)のカウント値と比較する。このメインSTC120aは、たとえばファイル先頭の再生開始時刻などファイル全体の再生を通じて基準となる時刻SCRからの経過時間を計るものであるが、上述した所定時間後に零となる値から開始されるようになっている。これにより、上記PTS(副映像ユニットの最初のパケットに付与されている)には、この副映像ユニットの転送時間を考慮することなく、「0」を記述することができる。
(3)上記PTSとSTC120aのカウント値との比較の結果、STC120aのカウント値がPTSより大きい場合には、その副映像データは直ちに表示処理される。一方、STC120aのカウント値がPTSより小さい場合には何の処理も行われない。この比較は、次の垂直ブランキング期間中に、再度実行される。
(4)副映像データの処理に入ると、同じ垂直ブランキング期間中に、その副映像データパケット内の表示制御シーケンステーブル33に記録されている最初の副映像表示制御タイムスタンプSPDCTSが、副映像プロセサ内のサブ基準タイムカウンタ(サブSTC)のカウント値と比較される。このサブSTCは、副映像データユニットの再生開始時刻からの経過時間を計る、副映像プロセサ内のサブ基準タイムカウンタ(例えば図8のタイマ120の他部)サブSTC120bで構成される。したがって、このサブSTC120bは、次の(後続の)副映像データユニットに表示が切り替わる度に、全ビットが”0”にクリアされ、その後再びインクリメント(タイムカウント)を開始する。
(5)サブSTC120bのカウント値と副映像表示制御タイムスタンプSPDCTSとの比較の結果、サブSTC120bのカウント値がSPDCTSよりも大きい場合は、表示制御シーケンステーブル33の先頭の表示制御シーケンスの制御データ(DCSQT;たとえば図16のDCSQT0)が直ちに実行され、副映像の表示処理が開始される。
(6)一旦表示処理が開始されると、垂直ブランキング期間毎に、現在表示している副映像データユニットの次の副映像データユニットの先頭パケットに付加されているPTSが読み込まれ、この読み込まれたPTSとメインSTC120aのカウント値とが比較される。
この比較の結果、メインSTC120aのカウント値がPTSよりも大きければ、図16のチャネルポインタが次の副映像データユニットのPTSのアドレス値に設定され、処理すべき副映像データユニットが次のものに切り替えられる。たとえば、図17を例にとると、上記チャネルポインタの設定変更により、副映像データユニットYから次の副映像データユニットWに切り替わる。この時点で、副映像データユニットYのデータはもう必要ないので、副映像バッファ(たとえば図8ではメモリ108)には副映像データユニットYの大きさの空き領域が生じる。このため、新たに副映像データパケットをこの空き領域に転送することができる。
これによって、副映像データユニット(たとえば図17のユニットW)のサイズおよびその切り換わり時刻(ユニットYからユニットWへの切り換わり時刻)から、副映像データパケットのバッファリング状態(図15参照)を、(ユニットWの)副映像データのエンコード時点で、事前に一意的に規定することができるようになる。したがって、映像・音声・副映像のパケットをシリアル転送したときに、それぞれのデコーダ部のバッファ(副映像デコーダの場合は図8その他のメモリ108)においてオーバーフローあるいはアンダーフローが生じないようなビットストリームの生成が可能になる。
また、上記PTSとメインSTC120aのカウント値との比較の結果、メインSTC120aのカウント値がPTSよりも大きくない場合は副映像データユニットの切り替えは行われず、表示制御シーケンステーブルポインタ(図16のDCSQTポインタ)が次の表示制御シーケンステーブルDCSQTのアドレス値に設定される。そして、現在の副映像データパケット内の次のDCSQTの副映像表示制御タイムスタンプSPDCTSとサブSTC120bのカウント値とが比較される。この比較結果を基に、次のDCSQTを実行するかどうかが判定される。この動作については、後に詳述する。
なお、副映像データパケット内の最後のDCSQTは、次の表示制御シーケンステーブルDCSQTとして自分自身を指し示しているので、前記(5)のDCSQT処理は基本的には変わらない。
(7)通常再生では、前記(4)、(5)、(6)の処理が繰り返される。
なお、前記(6)の処理において、次の副映像データユニットのPTSを読み込む際にそのPTSを指し示すチャネルポインタ(図16参照)の値は、現在の副映像データユニット内のパケットサイズ(SPCSZ)を用いることで、求めるられる。
同様に、表示制御シーケンステーブル33内で次のDCSQTの副映像表示制御タイムスタンプSPDCTSを指し示すDCSQTポインタの値は、このテーブル33内に記述されているDCSQTのサイズ情報(次の副映像表示制御シーケンスのアドレスSPNDCSQTA)を用いて求められる。
次に、副映像ヘッダ31、副映像データ32、および表示制御シーケンステーブル33それぞれの詳細について説明する。
図19は、副映像ユニットヘッダ(SPUH)31の構造を示す。副映像ユニットヘッダSPUHは、副映像データパケットのサイズ(SPDSZ)およびパケット内の表示制御シーケンステーブル33の記録開始位置情報(副映像の表示制御シーケンステーブル開始アドレスSPDCSQTA;DCSQの相対アドレスポインタ)を含んでいる。
なお、アドレスSPDCSQTAで指し示される副映像表示制御シーケンステーブルSPDCSQTの内容は、図20に示すように、複数の表示制御シーケンスDCSQ1〜DCSQnで構成されている。
また、各表示制御シーケンスDCSQ(1〜n)は、図21に示すように、副映像の表示制御開始時間を示す副映像表示制御タイムスタンプSPDCTSと、次の表示制御シーケンスの位置を示すアドレスSPNDCSQAと、1以上の副映像表示制御コマンドSPDCCMDとを含んでいる。
副映像データ32は、個々の副映像データパケットと1対1で対応するデータ領域(PXDエリア)の集まりで構成されている。
ここで、副映像データユニットが切り替わるまでは、同じデータ領域中の任意のアドレスの副映像画素データPXDを読み出せるようになっている。これにより、1つの副映像表示イメージに固定されない、任意の副映像表示(たとえば副映像のスクロール表示)が可能となる。この任意のアドレスは、副映像データ(画素データPXD)の表示開始アドレスを設定するコマンド(図22のコマンドテーブル中のSETDSPXA)により設定される。
図23は、表示制御シーケンステーブル33の具体例を示す。前述したように、表示制御シーケンステーブル33内の1つの表示制御シーケンス情報(DCSQT)には、副映像表示制御タイムスタンプ(SPDCTS)および副映像データ記録位置(SPNDCSQA)の後に、複数の表示制御コマンド(COMMAND3、COMMAND4など)とそのコマンドにより設定される各種パラメータデータが配置されている。そして、表示制御の終了を示す終了コマンド(エンドコード)が最後に付加されている。
次に、表示制御シーケンステーブル33の処理手順を説明する。
(1)まず、表示制御シーケンステーブル33の最初のDCSQT(図16ではDCSQT0)に記録されているタイムスタンプ(SPDCTS)が、副映像プロセサのサブSTC120b(たとえば図8のタイマ120の一機能)のカウント値と比較される。
(2)比較の結果、サブSTC120bのカウント値がタイムスタンプSPDCTSよりも大きい場合には、表示制御シーケンステーブル33内の全ての表示制御コマンドCOMMANDが、表示制御終了コマンドCMDEND(図22)が現れるまで実行される。
(3)表示制御が開始されたあとは、一定時間毎(たとえば垂直ブランキング期間毎)に、次の表示制御シーケンステーブルDCSQTに記録されている副映像表示制御タイムスタンプSPDCTSとサブSTC120bのカウント値とを比較することにより、次のDCSQTに更新するか(つまり図16のDCSQTポインタを次のDCSQTに移すか)どうかが、判定される。
ここで、表示制御シーケンステーブル33内のタイムスタンプSPDCTS
は、PTSが更新されてから(つまり副映像データユニットが更新されてから)の相対時間で記録されているので、副映像データユニットのPTSが変わってもSPDCTSを書き替える必要はない。したがって、同じ副映像データ32を複数の異なる時刻で表示する場合でも全く同じ表示制御シーケンステーブルDCSQTを用いることができる。すなわち、表示制御シーケンステーブルDCSQTをリロケータブルとすることができる。
次に、副映像の表示制御コマンドの詳細について説明する。図22は、副映像表示制御コマンドSPDCCMDの一覧を示す。主な副映像表示制御コマンドとしては、次のようなものがある。
(1)副映像画素データの表示開始タイミングをセットするコマンドSTADSP
これは、副映像データ32の表示開始制御を実行するコマンドである。すなわち、あるDCSQTからこのコマンドSTADSPを含むDCSQTに切り替わったときに、副映像データ32の表示が、このコマンドを含むDCSQTのタイムスタンプSPDCTSで示された時刻から開始されることになる。
副映像プロセサ(たとえば図8のMPU112)は、このコマンドをデコードすると、(このコマンドをアクセスした時点ではこのコマンドが属するDCSQTのSPDCTSで示された時刻はすぎているので)直ちに、副映像プロセサ内部の表示制御系のイネーブルビットを、アクティブ状態にする。
(2)副映像画素データの表示終了タイミングをセットするコマンドSTPDSP
これは、副映像データ32の表示終了制御を実行するためのコマンドである。副映像プロセサは、このコマンドをデコードすると、(このコマンドをアクセスした時点ではこのコマンドが属するDCSQTのSPDCTSで示された時刻はすぎているので)直ちに、副映像プロセサ内部の表示制御系のイネーブルビットを、アクティブ状態にする。
(3)副映像画素データのカラーコードをセットするコマンドSETCOLOR
これは、副映像画素データの色コードを設定するためのコマンドである。このコマンドによって、副映像は、文字あるいは模様などのパターン画素と、パターン画素のふちどり等の強調画素と、副映像が表示される範囲領域でパターン画素および強調画素以外の領域の画素である背景画素とに分けて、色情報を設定することができる。
(4)主映像に対する副映像画素データのコントラストをセットするコマンドSETCONTR
これは、コマンドSETCOLORと同様、図40で例示した4種類の画素に対して色コードデータの代わりにコントラストデータを設定するためのコマンドである。
(5)主映像上における副映像画素データの表示エリアをセットするコマンドSETDAREA
これは、副映像画素データ32を表示する位置を指定するためのコマンドである。
(6)副映像画素データの表示開始アドレスをセットするコマンドSETDSPXA
これは、副映像画素データ32の表示開始アドレスを設定するためのコマンドである。
(7)副映像画素データのカラーコードおよび主映像に対する副映像画素データのコントラストの切換をセットするコマンドCHGCOLCON
これは、副映像画素データ32の色コードおよび主映像に対する副映像画素データ32のコントラストを表示中に変更するためのコマンドである。
なお、図22のコマンドテーブルは、上述したコマンドの他に、副映像画素データの表示開始タイミングを強制的にセットするコマンドFSTADSPと、および副映像の表示制御を終了するコマンドCMDENDを含んでいる。
図24は、図3に示すような副映像ユニット30を生成する方法の一例を説明するフローチャートである。
副映像として、たとえばビデオ(主映像)の台詞に対応した字幕および/またはイメージが使用される場合、この台詞字幕/イメージがビットマップデータ化される(ステップST10)。このビットマップデータを作成するときには、字幕部分をビデオの画面のどの位置のどの領域に表示するかを、決定しなければならない。そのために、表示制御コマンドSETDAREA(図22参照)のパラメータが決定される(ステップST12)。
副映像の表示位置(空間的パラメータ)が決定されると、副映像を構成する画素データPXDのエンコードに移る(主映像全体をエンコードするわけではない)。その際、字幕(副映像)の色、字幕領域の背景色、字幕色・背景色のビデオ主映像に対する混合比が決定される。そのために、表示制御コマンドSETCOLORおよびSETCONTR(図22参照)のパラメータが決定される(ステップST14)。
次に、作成したビットマップデータをビデオの台詞に合わせて表示すべきタイミングが決定される。このタイミング決定は副映像タイムスタンプPTSにより行なわれる。その際、タイムスタンプPTSの最大限度時刻と、表示制御コマンドSTADSP、STPDSPおよびCHGCOLCON(図22参照)の各パラメータ(時間的パラメータ)が決定される(ステップST16)。
ここで、副映像タイムスタンプPTSは、MPEG2システムレイヤのターゲットデコーダバッファの消費モデルから、最終的に決定される。ここでは、字幕の表示を開始する時刻が、副映像タイムスタンプPTSの最大限度時刻として決められる。
表示制御コマンドSTADSPおよびSTPDSPは、副映像タイムスタンプPTSからの相対時刻として記録される。そのため、PTSが決まるまではコマンドSTADSPおよびSTPDSPを決定することはできない。そこで、この実施形態では、絶対時刻を決めておき、PTSの絶対時間が決まってから、その相対値を決定するようにしている。
また、作成した字幕に対して、空間的・時間的に表示色や表示領域を変化させたい場合には、その変化に基づいたコマンドCHGCOLCONのパラメータが決定される。
副映像の表示位置(空間的パラメータ)および表示タイミング(時間的パラメータ)が(仮に)決定されると、副映像表示制御シーケンステーブルDCSQTの内容(DCSQ)が作成される(ステップST18)。具体的には、表示制御シーケンステーブルDCSQの表示制御開始時間SPDCTS(図21参照)の値は、表示制御コマンドSTADSP(表示開始タイミング)の発効時刻および表示制御コマンドSTPDSP(表示終了タイミング)の発効時刻に準拠して、決定される。
作成された画素データPXD32および表示制御シーケンステーブルDCSQT33を合わせると、副映像データユニット30(図3参照)のサイズを決定することができる。そこで、そのサイズを元に副映像ユニットヘッダSPUH31のパラメータSPDSZ(副映像サイズ;図19参照)およびSPDCSQTA(表示制御シーケンステーブルの開始アドレス;図19参照)を決めて、副映像ユニットヘッダSPUH31を作成する。その後、SPUH31とPXD32とDCSQT33とを結合することにより、1つの字幕に対する副映像ユニットが作成される(ステップST20)。
作成された副映像ユニット30のサイズが所定値(2048バイトあるいは2kバイト)を超える場合は(ステップST22イエス)、2kバイト単位で複数パケットに分割される(ステップST24)。この場合、タイムスタンプPTSは、副映像ユニット30の先頭になるパケットにのみ記録される(ステップST26)。
作成された副映像ユニット30のサイズが所定値(2kバイト)以内である場合は(ステップST22ノー)、1つだけパケットが生成され(ステップST23)、タイムスタンプPTSはそのパケットの頭に記録される(ステップST26)。
こうして出来上がった1以上のパケットはパック化され、ビデオその他のパックと合わされて、1本のデータストリームが出来上がる(ステップST28)。このとき、各パックのならび順は、MPEG2システムレイヤのターゲットデコーダバッファの消費モデルから、そのシーケンス記録コードSRCと副映像タイムスタンプPTSとを基に決定される。ここで初めてPTSが確定し、これにより図21の各パラメータ(SPDCTS等)が最終的に決定されることになる。
図25は、図24の処理手順にしたがって生成された副映像データストリームのパック分解およびデコードを並列処理する手順の一例を説明するフローチャートである。
まず、デコードシステムは、転送されてくるストリームのIDを読み取って、選択された副映像パック(データストリームから分離されたもの)だけを副映像デコーダ(たとえば図8の副映像デコーダ101)に転送する(ステップST40)。
最初のパック転送が行われると、インデックスパラメータ”i”が「1」にセットされ(ステップST42)、1番目の副映像パックの分解処理(ステップST44;図26を参照して後述する)が実行される。
分解されたパック(図6下部に示すような圧縮された副映像データPXDを含む)は、副映像バッファ(図8ではメモリ108)に一時格納され(ステップST46)、インデックスパラメータ”i”が1つインクリメントされる(ステップST50)。
インクリメントされたi番目のパックが存在すれば、すなわちステップST44で分解処理したパックが最終パックでなければ(ステップST52ノー)、インクリメントされたi番目の副映像パックに対する分解処理(ステップST44)が実行される。
分解されたi番目の副映像パック(ここでは2番目のパック)は、1番目に分解されたパックと同様に副映像バッファ(メモリ108)に一時格納され(ステップST46)、インデックスパラメータ”i”がさらに1つインクリメントされる(ステップST50)。
以上のようにして、インデックスパラメータ”i”をインクリメントしながら複数の副映像パックが連続的に分解され(ステップST44)、副映像バッファ(メモリ108)に格納される(ステップST46)。
連続してインクリメントされたi番目のパックが存在しなくなれば、すなわちステップST44で分解処理したパックが最終パックであれば(ステップST52イエス)、デコードしようとするストリームの副映像パック分解処理が終了する。
上記副映像パック分解処理(ステップST44〜ST52)が連続的に実行されている最中に、この副映像パック分解処理と独立・並行して、副映像バッファ(メモリ108)に一時格納された副映像パックのデコード処理が行われる。
すなわち、インデックスパラメータ”j”が「1」にセットされると(ステップST60)、1番目の副映像パックを副映像バッファ(メモリ108)から読み出す動作に入る(ステップST62)。この時点で、まだメモリ108に1番目の副映像パックが格納されていないならば(ステップST63ノー;ステップST46の処理がまだ行われていないとき)、読出対象のパックデータがメモリ108に格納されるまで、デコード処理は、パック読出動作の空ループ(ステップST62〜ST63)を実行している。
メモリ108に1番目の副映像パックが格納されておれば(ステップST63イエス)、その副映像パックが読み出され、デコード処理される(ステップST64;デコード処理の具体例は図24〜図27を参照して後述する)。
このデコード処理の結果(たとえば図6上部に示すような圧縮前の副映像データPXDを含む)は、デコード処理中に図8の副映像デコーダ101から表示系(図示せず)へ送られ、デコードデータに対応する副映像の表示がなされる。
上記デコード処理において表示制御終了コマンド(図22のCMDEND)が実行されていなければ(ステップST66ノー)、インデックスパラメータ”j”が1つインクリメントされる(ステップST67)。
インクリメントされたj番目のパック(ここでは2番目)がメモリ108に存在すれば、そのパックがメモリ108から読み出され、デコードされる(ステップST64)。デコードされたj番目の副映像パック(ここでは2番目のパック)は、1番目にデコードされたパックと同様に表示系に送られ、インデックスパラメータ”j”がさらに1つインクリメントされる(ステップST67)。
以上のようにして、インデックスパラメータ”j”をインクリメントしながら(ステップST67)、メモリ108に格納されている1以上の副映像パックが連続的にデコードされ(ステップST64)、デコードされた副映像データ(PXD)に対応する副映像の画像表示が実行される。
上記デコード処理において表示制御終了コマンド(図22のCMDEND)が実行されれば(ステップST66イエス)、副映像バッファ(メモリ108)内の副映像データのデコード処理が終了する。
以上のデコード処理(ステップST62〜ST64)は、終了コマンドCMDENDが実行されない限り(ステップST66ノー)反復される。この実施の形態では、デコード処理は、終了コマンドCMDENDの実行(ステップST66イエス)をもって終了するようになっている。
図26は、図25のパック分解処理の一例を説明するフローチャートである。副映像デコーダ101は、転送されてくるパックからパックヘッダ(図3参照)を読み飛ばして、パケットを得る(ステップST72)。このパケットにタイムスタンプPTSがないときは(ステップST74ノー)、パケットヘッダ(PH)を削除して、副映像ユニットデータ(PXD)だけを、副映像デコーダのバッファ(たとえば121)に格納する(ステップST76)。
上記パケットにタイムスタンプPTSがあるときは(ステップST74イエス)、パケットヘッダ(PH)からPTSだけが抜き取られ、抜き取られたPTSが副映像ユニットデータ(30)に接続されて、副映像デコーダ101のバッファ121に格納される(ステップST78)。
図27、図28は、図25の副映像デコード処理の一例を説明するフローチャートである。このデコード処理のうち、たとえば図6の下部に示す圧縮データPXDを図6の上部に示す非圧縮データPXDに戻す処理については、図10、図11その他を参照して説明済みである。
すなわち、所定の再生時刻に対応するつまり同じ時刻のSCRが付与されている副映像情報のパック内の副映像パケットが1副映像ユニット分、副映像デコーダ101に順次転送され、そのSCRに応じて副映像デコーダ101は、メインSTC120aの計数が所定時間後に零となる値から開始し、副映像データユニットの先頭パケットに付加されているPTSが転送されているか否かを調べる (ステップST80)。この結果、副映像デコーダ101は、そのPTSが転送されている場合、そのPTSとメインSTC120aのカウント値とが比較され(ステップST81)、そのPTSが転送されていない場合、転送されるまで待機している。
この比較の結果、副映像デコーダ101は、メインSTC120aのカウント値がPTSよりも大きい場合、次の副映像データユニットの先頭パケットに付加されているPTSが転送されているか否かを調べ(ステップST82)、メインSTC120aのカウント値がPTSよりも小さい場合、同じになるまで待機している。
この結果、次の副映像データユニットの先頭パケットに付加されているPTSが転送されている場合、副映像デコーダ101は、そのPTSとメインSTC120aのカウント値とが比較される(ステップST83)。
ステップ82で次の副映像データユニットのPTSが転送されていない場合、あるいはステップ83でメインSTC120aのカウント値が次の副映像データユニットのPTSよりも小さい場合、副映像デコーダ101は、デコードする副映像データユニットを現在のものに決定し(ステップST84)、ステップ86へ進む。
すなわち、最初の副映像データユニットのPTSは「0」のため、メインSTC120aのカウント値が「0」となった際に、デコードする副映像データユニットを決定し、ステップ86へ進む。
ステップ83でメインSTC120aのカウント値が次の副映像データユニットのPTSよりも大きい場合、副映像デコーダ101は、デコードする副映像データユニットを次のものに決定し(ステップST85)、ステップ86へ進む。
次に、副映像デコーダ101は、表示制御シーケンステーブル33の最初のDCSQT(図16ではDCSQT0)に記録されているタイムスタンプSPDCTS(「0」)が転送されているか否かを調べる(ステップST86)。このタイムスタンプSPDCTSが転送されている場合、副映像デコーダ101は、このタイムスタンプSPDCTSとサブSTC120bのカウント値とが比較され(ステップST87)、転送されていない場合、ステップ81に戻る。
そして、ステップ87の比較の結果、サブSTC120bのカウント値がタイムスタンプSPDCTSよりも大きい場合、副映像デコーダ101は、次の表示制御シーケンスDCSQのタイムスタンプSPDCTSが転送されているか否かを調べる(ステップST88)。この結果、そのタイムスタンプSPDCTSが転送されている場合、副映像デコーダ101は、そのタイムスタンプSPDCTSとサブSTC120bのカウント値とが比較される(ステップST89)。
ステップ88で次の表示制御シーケンスDCSQのタイムスタンプSPDCTSが転送されていない場合、あるいはステップ89でサブSTC120bのカウント値が次の表示制御シーケンスDCSQのタイムスタンプSPDCTSよりも小さい場合、副映像デコーダ101は、デコードする表示制御シーケンスDCSQを現在のものに決定し(ステップST90)、ステップ92へ進む。
ステップ89でサブSTC120bのカウント値が次の表示制御シーケンスDCSQのタイムスタンプSPDCTSよりも大きい場合、副映像デコーダ101は、デコードする表示制御シーケンスDCSQを次のものに決定し(ステップST91)、ステップ92へ進む。
次に、副映像デコーダ101は、デコードする表示制御シーケンスDCSQに対応する画素データのデコードをその各コマンドを用いて開始する(ステップST92)。
たとえば、コマンドSETDAREAにより副映像の表示位置および表示領域が設定され、コマンドSETCOLORにより副映像の表示色が設定され、コマンドSETCONTRによりビデオ主映像に対する副映像のコントラストが設定される。
そして、表示開始タイミングコマンドSTADSPを実行してから別の表示制御シーケンスDCSQで表示終了タイミングコマンドSTPDSPが実行されるまで、切換コマンドCHGCOLCONに準拠した表示制御を行いつつ、ランレングス圧縮されている画素データPXD(32)のデコードが行われる。
また、副映像デコーダ101は、表示制御シーケンスDCSQに対応する全ての表示制御コマンドCOMMANDが表示制御終了コマンドCMDENDまですべて転送されているか否かを調べる(ステップST93)。
この結果、副映像デコーダ101は、転送されていない場合、サブSTC120bのカウント値をクリアし、ステップ81に戻り、再び、最初の表示制御シーケンスDCSQに対するデコードが行われ、転送されている場合、ステップ94に進む。
このステップ94において、副映像デコーダ101は、次の表示制御シーケンスDCSQがあるか否かを調べ、次の表示制御シーケンスDCSQがある場合、ステップ88に戻り、次の表示制御シーケンスDCSQに対するデコードが行われ、次の表示制御シーケンスDCSQがない場合、ステップ82に戻り、次の副映像データユニットに対する処理が行われる。
上記したように、メインタイマの初期値が画素データの転送時間を考慮して所定時間後に「0」となる値となっているため、再生を行う最初の副映像データユニットにおけるプレゼンテーションタイムスタンプPTSを画素データの転送時間を考慮せずに零を記述することができる。
また、メインタイマが最初に零に変化するまで副映像の表示が禁止されているため、メインタイマの負の値と正の値の区別をする機能を省くことができる。
さらに、所望の表示制御シーケンスDCSQに対する処理の途中で、デコード処理が中断してしまった場合に、再び最初の表示制御シーケンスDCSQ0からデコード処理を行うことにより、デコード処理が中断することによる表示抜け等の表示崩れが発生するのを防ぐことができる。
また、上記例では、メインタイマの初期値を画素データの転送時間を考慮して所定時間後に「0」となる値としたが、これに限らず、サブタイマの初期値を画素データの転送時間を考慮して所定時間後に「0」となる値とするようにしても良い。この場合も上記同様な効果が達成できる。
1…ファイル管理情報 2…映像用データ PH…パケットヘッダ 30…副映像ユニット 31…副映像ユニットヘッダSPUH 32…副映像の画素データPXD 33…表示制御シーケンステーブルDCSQT 101…デコーダ 102…データI/O 103…符号データ切分部 104…画素色出力部(FIFOタイプ) 105…メモリ制御部 106…継続コード長検知部 107…ラン長設定部 108…メモリ 109…アドレス制御部 110…表示有効許可部 111…不足画素色設定部 112…マイクロコンピュータ(MPUまたはCPU) 113…ヘッダ切分部 114…ラインメモリ 115…セレクタ 118…セレクト信号生成部 120…システムタイマ 120a…メインSTC 120b…サブSTC 121…バッファメモリ