(57)【要約】      （修正有）【課題】ヘッダにエラーが発生時ヘッダに続く符号化データを復号可能とする。【解決手段】ヘッダ復号部はエラーが非検知時、ヘッダを復号し、符号化データ復号部でヘッダに続くデータを復号し、ヘッダ推定部に伝達する。エラーが検出時、ヘッダ推定部で推定し、ヘッダ長をヘッダ読み飛ばし部に通知する。また推定したヘッダの情報をヘッダ復号部に伝える。ヘッダ読み飛ばし部では、通知されたヘッダ長だけ読み飛ばしヘッダ復号部に伝える。ヘッダ復号部は、ヘッダをエラーなく復号時点もしくは読み飛ばした時点で、データ復号部に対して、ヘッダの情報を伝える。このとき、エラーなく復号できた場合にはヘッダの情報を符号化データ復号部に伝え、エラーが生じてヘッダを推定した場合にはヘッダ推定部から伝達されたヘッダの情報を符号化データ復号部に伝え符号化データ部から伝達されたヘッダの情報を用いて読み飛ばされた後の符号化データを継続して復号する。【選択図】図１
2006166079.tif 000002
【特許請求の範囲】
【請求項１】
ヘッダと該ヘッダに続くデータから構成される符号化データを復号する符号化データ復号装置であって、
前記ヘッダを復号する手段と、
該ヘッダを復号する手段により復号したヘッダの情報に基づいて、前記ヘッダの少なくとも一部の範囲を推定する推定手段と、
該推定手段により推定された範囲のヘッダの符号化データを読み飛ばす手段と、
前記ヘッダに続くデータを復号する手段と
を備えることを特徴とする符号化データ復号装置。
【請求項２】
ヘッダと該ヘッダに続くデータから構成される符号化データを復号する符号化データ復号装置であって、
前記ヘッダを復号する手段と、
前記ヘッダの少なくとも一部の範囲を推定する推定手段と、
該推定手段により推定された範囲のヘッダの符号化データを読み飛ばす手段と、
前記ヘッダに続くデータを復号する手段と
を備え、
前記、ヘッダを復号する手段は、前記ヘッダの復号エラーを検出する復号エラー検出手段を含み、
前記推定手段は、前記復号エラー検出手段が復号エラーを検出した場合に、予め設定されているシンボル候補のうちのいずれかを、ヘッダを構成するシンボル毎に選択することによりヘッダを推定する手段であることを特徴とする符号化データ復号装置。
【請求項３】
前記、ヘッダを復号する手段によりヘッダを復号する際に復号して得られるシンボルとその度数とを記憶しておき、
前記推定手段によりヘッダを推定する際には、前記シンボル候補のうちの前記度数が最大となるシンボルをヘッダとして推定することを特徴とする請求項１又は２に記載の符号化データ復号装置。
【請求項４】
前記推定手段は、過去のシンボルのパターンが与えられている場合に、次に生起するシンボルの生起確率を定めておき、エラーが生じた時点で、過去に復号された前記シンボルのパターンにおいて最も生起確率の高いシンボルをヘッダとして推定することを特徴とする請求項１又は２に記載の符号化データ復号装置。
【請求項５】
さらに選択したシンボルを符号化して得られるビット列と、符号化データ中のビット列と、を比較してビット違いの数を計算して得られたビット違いの数演算手段を備え、該ビット違い数演算手段により得られるビット違い数がある値以下であるシンボルをヘッダとして推定することを特徴とする請求項１又は２に記載の符号化データ復号装置。
【請求項６】
前記推定手段は、エラーが検出された位置より所定数以上前に位置するシンボルについては復号した値を用い、その後のシンボルについてはシンボルの生起確率に基づいて推定することによりヘッダの推定を行うことを特徴とする請求項１又は２に記載の符号化データ復号装置。
【請求項７】
前記推定手段は、ヘッダの一部を推定する場合に、エラーを検出した位置から所定数前のシンボルからエラーを検出した位置の所定数後のシンボルまでを推定することを特徴とする請求項１又は２に記載の符号化データ復号装置。
【請求項８】
ヘッダと該ヘッダに続くデータから構成される符号化データを復号する符号化データ復号方法であって、
前記ヘッダを復号するとともに、前記ヘッダの復号エラーを検出するステップを含み、
前期ヘッダの少なくとも一部の範囲を推定するステップであって、予め設定されているシンボル候補のうちのいずれかを、ヘッダを構成するシンボル毎に選択することによりヘッダを推定するステップと、
該推定ステップにより推定された範囲のヘッダの符号化データを読み飛ばすステップと、
前記ヘッダに続くデータを復号するステップとを備えることを特徴とする符号化データ復号方法。
【請求項９】
ヘッダと該ヘッダに続くデータから構成される符号化データを復号する符号化データ復号装置であって、
前記ヘッダを復号する手段と、
前記ヘッダの少なくとも一部の範囲を推定する推定手段と、
該推定手段により推定された範囲のヘッダの符号化データを読み飛ばす手段と、
前記ヘッダに続くデータを復号する手段を備え、
さらに前記、ヘッダを復号する手段及び前記、ヘッダに続くデータを復号する手段は、復号エラーを検出する復号エラー検出手段を含み、
前記、ヘッダに続くデータを復号する手段の備える該復号エラー検出手段で復号エラーが検出された場合には、前記推定手段にてヘッダを推定することを特徴とする符号化データ復号装置。
【請求項１０】
ヘッダと該ヘッダに続くデータから構成される符号化データを復号する符号化データ復号装置であって、
前記ヘッダを復号する手段と、
前記ヘッダの少なくとも一部の範囲を推定する推定手段と、
該推定手段により推定された範囲のヘッダの符号化データを読み飛ばす手段と、
前記ヘッダに続くデータを復号する手段を備え、
さらに前記、ヘッダを復号する手段及び前記、ヘッダに続くデータを復号する手段は、復号エラーを検出する復号エラー検出手段を含み、
前記、ヘッダに続くデータを復号する手段の備える該復号エラー検出手段で復号エラーを検出した場合において、該復号エラーを検出した位置のビット位置がヘッダの直後のビット位置から数えて所定ビット以内であれば、前記推定手段にてヘッダを推定することを特徴とする符号化データ復号装置。
【請求項１１】
ヘッダと該ヘッダに続くデータから構成される符号化データを復号する符号化データ復号装置であって、
前記ヘッダを復号する手段と、
前記ヘッダの少なくとも一部の範囲を推定する推定手段と、
該推定手段により推定された範囲のヘッダの符号化データを読み飛ばす手段と、
前記ヘッダに続くデータを復号する手段を備え、
さらに前記、ヘッダを復号する手段及び前記、ヘッダに続くデータを復号する手段は、復号エラーを検出する復号エラー検出手段を含み、
前記、ヘッダに続くデータを復号する手段の備える該復号エラー検出手段で復号エラーを検出した場合で、ヘッダに続くデータがマクロブロックである場合において、該復号エラーを検出した位置のマクロブロック番号がヘッダの直後のマクロブロック番号から数えて所定数以内であれば、前記推定手段にてヘッダを推定することを特徴とする符号化データ復号装置。 
【請求項１２】
ヘッダと該ヘッダに続くデータから構成される符号化データを復号する符号化データ復号方法であって、
前記ヘッダを復号するステップと、
前記ヘッダの少なくとも一部の範囲を推定するステップと、
該推定ステップにより推定された範囲のヘッダの符号化データを読み飛ばすステップと、
前記ヘッダに続くデータを復号するステップを備え、
さらに前記、ヘッダを復号するステップ及び前記、ヘッダに続くデータを復号するステップは、復号エラーを検出するステップを含み、
前記、ヘッダに続くデータを復号するステップに含まれる該復号エラー検出ステップで復号エラーが検出された場合には、前記、ヘッダを推定するステップに戻ることを特徴とする符号化データ復号方法。
【請求項１３】
ヘッダと該ヘッダに続くデータから構成される符号化データを復号する符号化データ復号方法であって、
前記ヘッダを復号するステップと、
前記ヘッダの少なくとも一部の範囲を推定するステップと、
該推定ステップにより推定された範囲のヘッダの符号化データを読み飛ばすステップと、
前記ヘッダに続くデータを復号するステップを備え、
さらに前記、ヘッダを復号するステップ及び前記、ヘッダに続くデータを復号するステップは、復号エラーを検出するステップを含み、
前記、ヘッダに続くデータを復号するステップに含まれる該復号エラー検出ステップで復号エラーが検出された場合において、該復号エラーを検出した位置のビット位置がヘッダの直後のビット位置から数えて所定ビット以内であれば、前記、ヘッダを推定するステップに戻ることを特徴とする符号化データ復号方法。
【請求項１４】
ヘッダと該ヘッダに続くデータから構成される符号化データを復号する符号化データ復号方法であって、
前記ヘッダを復号するステップと、
前記ヘッダの少なくとも一部の範囲を推定するステップと、
該推定ステップにより推定された範囲のヘッダの符号化データを読み飛ばすステップと、
前記ヘッダに続くデータを復号するステップを備え、
さらに前記、ヘッダを復号するステップ及び前記、ヘッダに続くデータを復号するステップは、復号エラーを検出するステップを含み、
前記、ヘッダに続く符号化データを復号するステップに含まれる該復号エラー検出ステップで復号エラーが検出された場合で、前記ヘッダに続くデータがマクロブロックである場合において、該復号エラーを検出した位置のマクロブロック番号がヘッダの直後のマクロブロック番号から数えて所定数以内であれば、前記、ヘッダを推定するステップに戻ることを特徴とする符号化データ復号方法。 
【請求項１５】
請求項８、及び請求項１２から１４までのいずれか１項に記載のステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声や動画像などを符号化してできる符号化データの復号方法に関する。
【背景技術】
【０００２】
従来から音声や動画像などを符号化した符号化データを復号する種々の方法が知られている。例えば、動画像の符号化データの復号方法としては、H.261/H.263/H.264や、MPEG-1/2/4などが知られている。これらの符号化データは、階層（レイヤー）構造を有し各々の階層はヘッダ部、データ部から構成されている。
【０００３】
例えば、MPEG−４ビデオの符号化データは、図１１に示すようにビデオ・オブジェクト・シーケンス・レイヤ（ＶＯＳ）、ビデオ・オブジェクト・レイヤ（ＶＯＬ）、ビデオ・オブジェクト・プレーン・レイヤ（ＶＯＰ）、ビデオ・パケット・レイヤ（ＶＰ）の階層構造からなる。各階層の先頭には、ヘッダが存在する。ＶＯＳ先頭にはＶＯＳヘッダが、ＶＯＬ先頭にはＶＯＬヘッダが、ＶＯＰ先頭にはVOPヘッダが、ＶＰ先頭にはVPヘッダが存在する。
【０００４】
さらに、各ヘッダの先頭には、ユニークな同期ワードとしてスタートコードが存在する。ＶＯＳヘッダ先頭にはＶＯＳスタートコードが、ＶＯＬヘッダ先頭にはＶＯＬスタートコードが、VOPヘッダ先頭にはＶＯＰスタートコードが、ＶＰ先頭ヘッダにはＶＰスタートコードが存在する。このような形式の符号化データでは、ヘッダ部分に、その後に続く符号化データを復号するために必要な情報が格納されている。そのため、エラーの発生によってヘッダ部分の復号ができない場合、その後のデータも復号できないという問題がある。
【０００５】
特許文献１では、ヘッダ復号処理においてエラーが検出された場合には次のヘッダまで読み飛ばしを行うことにより、ヘッダにエラーが発生しても処理を停止しないようにしている。この場合、エラーが生じたヘッダに続くデータは破棄する必要がある。
【０００６】
この技術の動作を、図１３を参照して説明する。図１３に示すように、符号化データは、同期ワード、ヘッダ情報、符号化データという繰り返しにより構成される。ここで、符号化データには、図中×印の位置にエラーが存在する場合を仮定する。この場合、特許文献１に記載の方法によると、復号は、（１）の実線の矢印、（２）の破線の矢印、（３）の実線の矢印の順に処理が進む。矢印（１）で示される処理は、ヘッダの復号処理であるが、途中のＸ点ではエラーを検出できずに復号を続ける。
【０００７】
途中A点でエラーを検出し復号を停止する。続く（２）では、同期ワードを順に探索することにより、図１１に示すレイヤ構造のうち同じレイヤの次のヘッダまでデータを読み飛ばす。
【０００８】
例えば、図１１のＶＯＰヘッダの復号途中でエラーを検知した場合には、同じレイヤのヘッダである次のＶＯＰヘッダまでデータを読み飛ばす。図１３において、同期ワードが見つかった後の処理が（３）である。この処理では、見つかったヘッダから継続して符号化データの復号を行う。
【０００９】
すなわち、図１３においての実線の矢印（１）及び（３）は復号処理を行う範囲を示し、点線の矢印（２）は読み飛ばしを行う範囲を示している。
【００１０】
これに対し、特許文献２では、ヘッダ情報に欠陥があった場合にもその後のデータ復号を可能にしている。以下、図１４を参照して特許文献２の誤り訂正装置（特許文献２では符号化データ保護回路））について説明する。特許文献２の装置は、誤り訂正回路１４１と、遅延回路１４２、メモリ回路１４３、セレクタ回路１４４、エラー制御回路１４５から構成される。誤り訂正回路１４１は、入力された符号化データについて誤り訂正を行い、ヘッダ情報に訂正しきれない誤りがあったときにはエラー制御回路１４５にヘッダエラー信号を出力する。
【００１１】
遅延回路１４２は、バッファメモリ等で構成され、誤り訂正済みの符号化データを一定時間遅延させる。メモリ回路１４３もバッファメモリ等で構成され、遅延符号化データを部分的に記憶する。メモリ回路１４３がどのタイミングでデータを記憶するか、また、どのタイミングでデータを読み出して出力するかは、エラー制御回路１４５により制御される。具体的には、ヘッダ情報部分にエラーが無いとき（エラー制御回路１４５からエラーが通知されないとき）には、メモリ回路１４３ではヘッダ情報の書き込みを行う。ヘッダ情報部分にエラーがある場合には、以前に記憶したエラーの無いヘッダ情報の読み出しを行う。セレクタ回路１４４は、遅延回路１４２からの符号化データと、メモリ回路１４３からの読み出しデータと、をエラー制御回路１４５からのセレクト信号に従って選択する。エラー制御回路１４５は、ヘッダに続く符号化データがセレクタ回路１４４を通過するタイミングでは、常に遅延回路１４２から符号化データを選択するようなセレクト信号を出力し、ヘッダがセレクタ回路１４４を通過するタイミングでは、誤り訂正回路１４１からヘッダエラー信号が通知されたかによって次のようにセレクト信号を変える。すなわち、誤り訂正回路１４１からヘッダエラー信号が通知された場合には、遅延回路１４２からのデータを選択するようにセレクト信号を出力し、ヘッダエラーが通知されない場合には、メモリ回路１４３からのデータを選択するようにセレクト信号を出力する。
【００１２】
従って、セレクタ回路１４４は、ヘッダにエラーがない通常の場合は、遅延回路１４２からの符号化データを選択し、ヘッダにエラーがある場合には、当該ヘッダが通過するタイミングにおいてメモリ回路１４３からの符号化データを選択して出力する。
【００１３】
図１４に示す回路構成により、ヘッダ情報にエラーが無い場合（より正確には誤り訂正回路１４１で訂正しきれない量のエラーがない場合）には、ヘッダ情報をメモリ回路１４３に記憶させておき、ヘッダ情報にエラーがある場合（より正確には誤り訂正回路１４１で訂正しきれない量のエラーがある場合）には、記憶させておいたヘッダ情報をメモリ回路１４３から読み出し出力することが可能になる。
【００１４】
ヘッダに誤り訂正不可能なエラーが出力した場合にも、メモリ回路１４３に記憶させたエラーのないヘッダを復号に用いることができるため、ヘッダに誤り訂正不能なエラーがあった場合にも復号を停止する必要がない。
【特許文献１】特開平９−２７１０２５公報
【特許文献２】特開平８−３３１１０３公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
特許文献１に記載の技術は、ヘッダの復号でエラーが生じた場合には、次のヘッダまで読み飛ばすというものであり、ヘッダにエラーが生じた場合には、エラーの生じたヘッダに続くデータ（エラーの生じたヘッダと、その次のヘッダの間にあるデータ）を利用することができないという問題があった。
【００１６】
特許文献２に記載の技術では、ヘッダの通過するタイミングで出力するセレクト信号を変更するためにエラー制御回路１４５の外部から、符号化データのどの部分がヘッダであるかを示す信号を入力している（特許文献２の説明では基準同期信号からタイミング信号発生回路を用いてヘッダゲート信号を発生している）が、この信号を得るためには、ヘッダの先頭位置やヘッダの長さが、予め（符号化データを復号する前に）既知でなくてはならないという問題があった。
【００１７】
また、ヘッダ情報に訂正しきれない誤りがあったときには、誤り訂正手段１４１がエラー制御回路１４５にヘッダエラー信号を出力するが、これを可能にするには、誤り訂正手段もまた、データのどの部分がヘッダ部分であるのかを判定する必要がある。
【００１８】
しかしながら、特許文献２では、この判定方法についての記載がない。この判定のために、エラー制御回路１４５と同様に外部から、符号化データのどの部分がヘッダであるかを示す信号を入力する場合、前述したように、ヘッダの先頭位置やヘッダの長さが予め既知でなくてはならないという問題がある。またエラーの検出に誤り訂正手段を用いるために、符号化装置側で符号化データに誤り訂正符号を付加しておかなくてはならないという問題があった。さらに誤り訂正手段を用いるために、誤り訂正手段を用いない場合に比べて回路規模やソフトウェア規模が増大するという問題があった。
【００１９】
さらに、特許文献２では、誤り訂正手段で訂正しきれないようなエラーがヘッダで発生した場合に、エラーの発生したヘッダを直前のヘッダで置き換えるという方法をとっているため、エラーの発生したヘッダが直前のヘッダと完全に一致していない場合には、ヘッダ後に続くデータを復号できないという問題があった。
【００２０】
本発明の目的は、ヘッダにエラーが発生した場合にも、ヘッダに続く符号化データを復号できる技術を提供することである。
【課題を解決するための手段】
【００２１】
本発明の一観点によれば、ヘッダと該ヘッダに続くデータとを復号する符号化データ復号装置であって、前記ヘッダを復号する手段と、該ヘッダを復号する手段により復号したヘッダの情報に基づいて、前記ヘッダの少なくとも一部の範囲を推定する推定手段と、該推定手段により推定された範囲のヘッダの符号化データを読み飛ばす手段と、前記ヘッダに続くデータを復号する手段とを備えることを特徴とする符号化データ復号装置が提供される。
【００２２】
また、ヘッダと該ヘッダに続くデータとを復号する符号化データ復号装置であって、前記ヘッダを復号する手段と、前記ヘッダの少なくとも一部の範囲を推定する推定手段と、該推定手段により推定された範囲のヘッダの符号化データを読み飛ばす手段と、前記ヘッダに続くデータを復号する手段とを備え、前記、ヘッダを復号する手段は、ヘッダの復号エラーを検出する復号エラー検出手段を含み、前記推定手段は、前記復号エラー検出手段が復号エラーを検出した場合に、予め設定されているシンボル候補のうちのいずれかを、ヘッダを構成するシンボル毎に選択することによりヘッダを推定する手段であることを特徴とする符号化データ復号装置が提供される。
【００２３】
ヘッダの推定は、ヘッダを復号する手段が復号エラー検出を通知された場合に動作する。続くヘッダの読み飛ばしは、推定したヘッダのビット長を算出し、そのビット長分を読み飛ばし手段に伝達し、読み飛ばしを精度良く行う。
【００２４】
より具体的には、ヘッダの推定は、例えば以下の手段によって行うこともできる。
（１）ヘッダを復号する際に、復号して得られるシンボルとその度数とを記憶しておき、ヘッダを推定する際には、度数最大となるシンボルに基づいてヘッダの推定を行う。
（２）過去のシンボルのパターンが与えられた場合に次に生起するシンボルの生起確率を定めておき、エラーが生じた時点で、過去に復号されたシンボルのパターンにおいて最も生起確率の高いシンボルを選択することにより、ヘッダの推定を行う。
（３）選択したシンボルを符号化して得られるビット列と、符号化データ中のビット列とを比較してビット違いの数を計算し、計算して得られたビット違いの数が所定数以下であることを条件にシンボルを選択することによって、ヘッダの推定を行う。
（４）エラーが検出された位置より所定数以上前に位置するシンボルについては、復号した値を使い、その後のシンボルについてはシンボルの生起確率に基づいて推定することにより、ヘッダの推定を行う。
（５）ヘッダの一部を推定する場合には、エラーを検出した位置から所定数前のシンボルからエラーを検出した位置の所定数後のシンボルまでを推定する。
【００２５】
これにより、ヘッダ復号処理中にエラーが発生した場合に、エラーが発生したヘッダ直後の符号化データの復号を行うことが可能となる。また、誤り訂正回路を必要としない。
【００２６】
本発明の他の観点によれば、ヘッダと該ヘッダに続くデータから構成される符号化データを復号する符号化データ復号装置であって、前記ヘッダを復号する手段と、前記ヘッダの少なくとも一部の範囲を推定する推定手段と、該推定手段により推定された範囲のヘッダの符号化データを読み飛ばす手段と、前記ヘッダに続くデータを復号する手段を備え、さらに前記、ヘッダを復号する手段及び前記、ヘッダに続くデータを復号する手段は、復号エラーを検出する復号エラー検出手段を含み、前記、ヘッダに続くデータを復号する手段の備える該復号エラー検出手段で復号エラーが検出された場合には、前記推定手段にてヘッダを推定することを特徴とする。
【００２７】
推定手段にてヘッダを推定する場合を制限する方法として、ヘッダと該ヘッダに続くデータから構成される符号化データを復号する符号化データ復号装置であって、前記ヘッダを復号する手段と、前記ヘッダの少なくとも一部の範囲を推定する推定手段と、該推定手段により推定された範囲のヘッダの符号化データを読み飛ばす手段と、前記ヘッダに続くデータを復号する手段を備え、さらに前記、ヘッダを復号する手段及び前記、ヘッダに続くデータを復号する手段は、復号エラーを検出する復号エラー検出手段を含み、前記、ヘッダに続くデータを復号する手段の備える該復号エラー検出手段で復号エラーが検出された場合で、ヘッダに続くデータの復号において、エラーを検出した位置のビット位置がヘッダの直後のビット位置から数えて所定ビット以内である場合は、前記推定手段にてヘッダを推定するのが好ましい。
【００２８】
また、ヘッダに続くデータがマクロブロックである場合において、エラーを検出した位置のマクロブロック番号がヘッダの直後のマクロブロック番号から数えて所定数以内であれば、前記推定手段にてヘッダを推定することも可能である。
【００２９】
本発明の別の観点によれば、ヘッダと該ヘッダに続くデータから構成される符号化データを復号する符号化データ復号方法であって、前記ヘッダを復号するとともに、前記ヘッダの復号エラーを検出するステップを含み、前期ヘッダの少なくとも一部の範囲を推定するステップであって、予め設定されているシンボル候補のうちのいずれかを、ヘッダを構成するシンボル毎に選択することによりヘッダを推定するステップと、該推定ステップにより推定された範囲のヘッダの符号化データを読み飛ばすステップと、前記ヘッダに続くデータを復号するステップとを備えることを特徴とする特徴とする符号化データ復号方法が提供される。
【発明の効果】
【００３０】
本発明のデータ復号装置及びデータ復号方法によれば、
（１）ヘッダの復号中にエラーを検出した場合に、ヘッダを推定し推定された範囲のヘッダの符号化データを読み飛ばすことで、正常な復号処理を継続することができる。これにより、ヘッダ中にエラーが発生した場合にも、エラーが発生したヘッダ直後の符号化データの復号を行うことが可能となり、特許文献１の課題を解決することができる。また、特許文献２のような誤り訂正回路を必要としないため、符号化装置側に誤り訂正符号を付加する必要がなく、また回路規模の削減および処理量の削減が可能となる。
（２）符号化データの復号を行う装置の一部であるヘッダ復号部がエラーを検出するので、ヘッダの先頭位置が、符号化データ復号前に既知である必要がない。また、エラー推定部でエラーの発生したヘッダの推定を行い、そこでヘッダの長さを算出するため、符号化データ復号前に、ヘッダの長さが予め既知である必要もない。これにより、ヘッダの先頭位置やヘッダの長さが予め既知でなくてはならないという特許文献２の問題を解決できる。
（３）エラーが生じたヘッダを以前のエラーの無いヘッダでそのまま置き換えるのではなく、ヘッダを構成するシンボル毎に、シンボル候補から値を選択することによりヘッダの推定を行うため、エラーの発生したヘッダが直前のヘッダと完全に一致していない場合にも、ヘッダ後に続くデータを復号できる。
【発明を実施するための最良の形態】
【００３１】
まず、本発明の第１の実施の形態による符号化データ復号装置について図面を参照しつつ説明を行う。図１は、本発明の第１の実施の形態による符号化データ復号装置の一構成例を示す図である。図１に示すように、本実施の形態による符号化データ復号装置は、ヘッダを復号するヘッダ復号部１１と、ヘッダに続くデータを復号する符号化データ復号部１２と、ヘッダ復号部１１でヘッダ中にエラーを検出した場合にヘッダを推定するヘッダ推定部１３と、ヘッダ推定部１３で決定されたビット数だけ符号化データを読み飛ばすヘッダ読み飛ばし部１４と、を有している。このデータ復号装置は、ヘッダ復号部１１でエラーが検知されない場合は、ヘッダ復号部１１でヘッダを復号し符号化データ復号部１２でヘッダに続くデータを復号する。ヘッダ復号部１１は、復号したヘッダの情報をヘッダ推定部１３に伝達する。ヘッダ復号部１１でエラーが検出された場合には、ヘッダ推定部１３においてヘッダを推定し、ヘッダの長さをヘッダ読み飛ばし部１４に通知する。ヘッダ推定部１３は、また、推定したヘッダの情報をヘッダ復号部１１に伝える。ヘッダ読み飛ばし部１４では、通知されたヘッダ長だけ符号化データを読み飛ばす。ヘッダ読み飛ばし部１４は、ヘッダを読み飛ばすとヘッダ復号部１１にヘッダを読み飛ばしたことを伝える。ヘッダ復号部１１は、ヘッダをエラーなく復号した時点もしくはヘッダ読み飛ばし部１４でヘッダを読み飛ばした時点で、符号化データ復号部１２に対して、ヘッダの情報を伝える。このとき、ヘッダがエラーなく復号できた場合には復号したヘッダの情報を符号化データ復号部１２に伝え、ヘッダの復号でエラーが生じてヘッダを推定した場合にはヘッダ推定部１３から伝達されたヘッダの情報を符号化データ復号部１２に伝える。符号化データ復号部１２では、ヘッダ復号部１１から伝達されたヘッダの情報を用いて読み飛ばされた後の符号化データを継続して復号する。
【００３２】
なお、第１の実施の形態は、エラーが検知された場合においてヘッダ全体を推定しヘッダ全体分のビット長の符号化データを読み飛ばす例である。ヘッダの所定の部分（一部分）だけを推定し所定の部分のみを読み飛ばす方法については第２の実施の形態で説明する。
【００３３】
図２は、本発明の第１の実施の形態による符号化データ復号方法を示すフローチャート図である。処理を開始すると（開始）、ステップＳ２０１では、入力したデータのヘッダを復号する。ステップＳ２０２では、ヘッダ復号においてエラーが検出されたか否かを判定する。エラーが検出されない場合には（Ｎ）、ステップＳ２０３に移行しヘッダに続くデータを復号する。エラーが検出された場合には（Ｙ）、ステップＳ２０４に移行しヘッダを推定する。ステップＳ２０５では推定されたヘッダの長さ分だけ、符号化データを読み飛ばす。続いてＳ２０３に移行する。ステップＳ２０３では、エラーが検出されなかった場合と同様ヘッダに続くデータを復号する。
【００３４】
上記の場合の動作を、図３を参照して説明する。図３に示すように、符号化データは、同期ワード、ヘッダ情報、符号化データの繰り返しにより構成される。ここで、符号化データ中には図中×印の位置にエラーが存在する場合を仮定する。この場合、本実施の形態では、復号は（１）、（３）、（４）の順に進む。（１）では、ヘッダの復号を行うが途中のＸ点ではエラーを検出できずに復号を続ける。途中A点でエラーを検出し復号を停止する。この時点でヘッダを推定する。続く（３）では推定されたヘッダ長だけデータを読み飛ばす。続く（４）ではエラーになったヘッダの直後の符号化データから継続して復号を行う。図中実線の矢印（１）、（４）は復号を示し、点線の矢印（３）は読み飛ばしを意味する。
【００３５】
ヘッダ復号部１１（図１）の動作の詳細を、MPEG−４ビデオ符号化データにおけるVOPヘッダの復号とVPヘッダの復号を例に説明する。VOPヘッダの構造を図１２に示す。VOPヘッダの復号では、VOPスタートコードの確認の後、vop_coding_type、modulo_time_base、vop_time_increment、vop_coded、vop_codedがゼロの場合next_start_code、vop_rounding_type、complexity_estimation_header、intra_dc_vlc_thr、vop_quant、IVOP以外の場合vop_fcode_forward、next_start_codeの順に復号を行う。
【００３６】
ここで、vop_coding_typeはフレームのタイプを示し、modulo_time_baseと、vop_time_incrementは時間情報、vop_codedはフレームが符号化されているかどうか、next_start_codeは符号化データのアライメントを取るためのパディングデータ、vop_rounding_typeは予測画像の生成時の計算における丸めの方向、complexity_estimation_headerは各種情報、intra_dc_vlc_thrはどの符号表を用いるかを判定するための閾値、vop_quantは量子化係数、vop_fcode_forwardは動きベクトルの範囲を示す。各情報の詳細は、公知文献のISO/IEC 14496-2に記載されているのでここでは省略する。
【００３７】
復号時において、
・     vop_time_incrementがvop_time_increment_resolution以上である場合
・     vop_codedがゼロであるのに次にnext_start_codeが無い場合
・     vop_quantがゼロの場合
・     vop_fcode_forwardがゼロの場合
・     marker_bitがゼロの場合
・     next_start_codeが規格で規定されているビット列と異なる場合
は、規格上禁止されている場合である。よってこのような場合にはエラーが発生したと判定できる。
【００３８】
また符号化データが全ての値の範囲を使うことは少なく、ある一定の範囲の値を使うものと仮定できることもある。この場合には、復号された値が所定の範囲に入っているかどうかを基準にしてエラーを判定することができる。例えば、フレームの時間間隔を示すmodulo_time_baseは、実時間動作を必要とするテレビ電話や監視カメラでは２秒よりも大きい値を取ることはないと見做せることがある。この場合、復号された値をこの閾値（ここでは２秒）と比較することでエラーを検出できる。また、ＭＰＥＧ−４ビデオは、使用可能な機能をプロファイルという形で示しており、示されたプロファイルによって使用できる機能が制限される。プロファイルの１つであるシンプルプロファイルでは、vop_coding_typeがIフレーム（フレーム内符号化フレーム）もしくはPフレーム（片方向予測フレーム）に制限されているので、シンプルプロファイルという条件で符号化されている場合にIフレームやPフレーム以外が復号された場合もエラーと検出できる。
【００３９】
VPヘッダの復号では、VPスタートコードの確認の後、macroblock_number（マクロブロック番号）、quant_scale、header_extention_code(以後HECと呼ぶ)を復号する。ここでHECが１の場合にはヘッダ拡張情報があるので、続いてmodulo_time_base、vop_time_increment、vop_coding_type、intra_dc_vlc_thr、vop_fcode_forwardを復号する。これらのヘッダ拡張の値は、VOPヘッダにおいて既に符号化されているものを再度符号化したものであるので、VOPヘッダの復号において既に値が得られている。なお、macroblock_numberはパケットに格納されているマクロブロックデータの先頭マクロブロック番号、quant_scaleは量子化係数、header_extention_codeは、ヘッダ拡張情報の有無を示す。各情報の詳細は、公知文献であるISO/IEC 14496-2に記載されているのでここでは省略する。
【００４０】
VPヘッダの復号においては、ヘッダを復号して得られたマクロブロック番号が、画像の大きさで決まる範囲を超えている場合にはエラーであると判断できる。さらに、マクロブロック番号が、直前までに復号したマクロブロック数＋１ではない場合にもヘッダにエラーがあったものと判定することができる（VPヘッダではなくマクロブック層でエラーが発生した可能性もあるが、本実施例ではヘッダにエラーがあったものと判定する）。またHECが１の場合は、VOPヘッダの復号で得られている値と、今回VPヘッダの復号で得られた値とを比較する。VOPヘッダで復号された値とVPヘッダで復号された値とが異なる場合にはVPヘッダにエラーがあったものと判定する。このように同じ値が複数回伝送される場合には、前回復号した値を記録しておき、今回復号した値と比較することでエラーを検出することができる。
【００４１】
続いて、ヘッダ推定部１３の動作について説明する。ヘッダ推定部１３はヘッダ復号部１１からエラー検出を通知された場合に動作し、エラーとなったヘッダを推定する。さらに推定したヘッダのビット長を算出し、そのビット長をヘッダ読み飛ばし部１４に伝達する。
【００４２】
以下、ヘッダの推定方法を説明する。まず、ヘッダの符号化データは、シンボルを符号化して得られる符号（ビット列）を並べたものである。シンボルS1、シンボルS2・・・を符号化して得られるヘッダの符号化データHencは、次式のように表現できる。
Henc ＝  E1(S1)、E2(S2)、E3(S3)、・・・、En(Sn)
【００４３】
ここで、E1()、E2()、・・・En()は、シンボルから対応する符号化データを得る関数を示す。さらに、シンボルとシンボルを符号化して得られる符号は１対１対応をしているので、ヘッダＨは、以下の式のようにシンボルS1、シンボルS2・・・を順に並べた形で表現できる。
H ＝  S1、S2、S3、・・・、Sn
【００４４】
シンボルSiが、シンボル候補Si1、Si2、・・・、Simのいずれかを値とする場合、ヘッダを推定するとは、各iについて、シンボルの候補Si1、Si2、・・・、Simから最適なシンボルを選択することと等しい。例えば、１番目のシンボルではS12を選択し、２番目ではS24を、３番目ではS31、n番目ではSn5を選択した場合、ヘッダHは
H ＝  S12、S24、S31、・・・、Sn5
と推定される。
【００４５】
なお、ヘッダの符号化データを得るためには、シンボルを選択した後にシンボルを符号化する必要がある。しかしながら、本実施の形態におけるヘッダの推定は、ヘッダの読み飛ばしを可能にするために行うものである。そのため、必ずしもヘッダの符号化データは必要ではなく、ヘッダの長さだけ得られれば良い。従って、本実施の形態のヘッダ推定部１３は内部にシンボル符号化部を持つものであるが、このシンボル符号化部は符号化したシンボルの長さだけが得られれば良い。
【００４６】
ヘッダを推定するためには、ヘッダを構成する各シンボルにおいて、シンボル候補の中から適切な値を選択する必要があるが、このシンボル候補からシンボルを選択する方法として以下の方法がある。
（ａ）固定値を選択する。
（ｂ）直前に復号した値を選択する。
（ｃ）周期的パターンに従って選択する。
（ｄ）前に位置するシンボルに基づいて選択する。
（ｅ）位置に基づいて選択する。
（ｆ）確率に基づいて選択する。
【００４７】
ここで、（ａ）の固定値を選択する方法は、単純に予め決められた値を選択する方法である。例えばMPEG−４ビデオのフレームタイプを示すvop_coding_typeは、シンプルプロファイルの場合、片方向予測フレームのＰフレームであることが多い。このためＰフレームを固定的に選択する方法が好適である。
【００４８】
他にもMPEG−４ビデオのvop_codedは“１”であることが多いため“１”を選択するのが好適であり、marker_bitは“１”であることが規格で決まっているので“１”とするのが好適である。
【００４９】
（ｂ）の直前に復号した値を選択する方法とは、前回、復号された値を用いて今回の値を推定する方法である。例えばＭＰＥＧ−４ビデオの量子化係数を示すvop_quantは、直前のフレームでの値と同じことが多い。そのため、直前のフレームで復号した値を選択する方法が好適である。
【００５０】
（ｃ）の周期的パターンに従って選択する方法とは、周期的なパターンに従って符号化されることが多い場合に使用される。例えばMPEG−４ビデオのフレームタイプを示すvop_coding_typeは、基本的には、片方向予測フレームのＰフレームで符号化し、定期的にフレーム内符号化フレームのＩフレームを挿入する方法で符号化されることが多い。この場合、定期的にＩフレームが現れることになる。この場合には、復号する間にＩフレームの挿入間隔を測定しておき、推定するときには、前回のＩフレームとの間隔がその挿入間隔に等しい場合はＩフレームを選択し、それ以外の場合はＰフレームを選択する方法が好適である。
【００５１】
（ｄ）の前に位置するシンボルに基づいて選択する方法とは、前に位置するシンボルの値によって、後に位置するシンボルが存在するかどうか（もしくはシンボルの値）が決まる場合に使用される。例えば、MPEG−４ビデオのVOPヘッダを推定する場合において、シンボルvop_coding_typeをＩフレームとした場合には、後に位置するシンボルの動きベクトルの範囲を示すvop_fcode_forwardは規格上存在しないので、選択しないという方法が好適である。この場合、このシンボルは符号化されないので、この部分のヘッダ長はゼロになる。
【００５２】
他にも、例えば、VＰヘッダを推定する場合において、シンボルHECを１とした場合は、その後に位置するシンボルであるmodulo_time_base、vop_time_increment、vop_coding_type、intra_dc_vlc_thr、vop_fcode_forwardは、直前のVOPヘッダで復号された値を選択するのが好適である。
【００５３】
（ｅ）の位置に基づいて選択する方法とは、そのシンボルを符号化する位置に応じて値を選択する方法である。例えば、ＭＰＥＧ−４ビデオのnext_start_codeは、next_start_codeを挿入する位置におけるバイト内ビット位置に応じて決まる符号であるため、next_start_codeを挿入する位置でのバイト内ビット位置が決まれば自動的に選択すべき値が決まる。ここでバイト内ビット位置とは、符号化データ中での位置を、Ｎバイト目＋Ｍビットとして表した場合のＭビットのことである。つまり、符号化データ中での位置がバイトアライメントされていればバイト内ビット位置は０、バイトアライメントされている位置から３ビット進んだ位置にあればバイト内ビット位置は３となる。
【００５４】
他にも、例えば、MPEG−４ビデオのVPヘッダで符号化されるマクロブロック番号を推定する方法として（ｅ）の方法が使える。VPヘッダで符号化されるマクロブロック番号は、符号化されている位置でのマクロブロック番号を示す。そのためMPEG−４ビデオのVPヘッダを推定する場合は、マクロブロック番号として、直前までに復号したマクロブロック数＋１を選択するのが好適である。この場合には、マクロブロック数に基づいて定めた位置という意味で、シンボルを符号化する位置に基づいて値を選択している。
【００５５】
以下、（ｆ）の確率に基づいて選択する方法を説明する。既に説明したように、ヘッダＨは、以下の式のようにシンボルS1、シンボルS2・・・を順に並べた形で表現できる。
H ＝  S1、S2、S3、・・・、Sn
【００５６】
シンボルSiが、シンボル候補Si1、Si2、・・・、Simのいずれかを値とする場合、ヘッダを推定するとは、各iについて、シンボルの候補Si1、Si2、・・・、Simから最適なシンボルを選択することと等しい。
【００５７】
ここでシンボルSiについてシンボルの候補Sijが生起する確率をPijとする。
本発明の１つの推定方法は、確率Pijが既知である場合に、各iについて最もPijが大きいシンボルを選択しヘッダを推定することである。この方法を用いる場合には、各iについて最大のPijとなるシンボルをヘッダ推定部１３に記憶させておけば良く、必ずしも確率Pijをヘッダ推定部１３に記憶させておく必要は無い。
【００５８】
尚、確率Pijは実験などにより前もって求めておく方法と、データを復号しながら動的に求める方法と、がある。
【００５９】
まず実験により確率Pijを求めておく方法を説明する。１つの求め方は、復号装置に、復号して得られるシンボルとその度数とを測定する手段を設けておき、用意しておいた符号化データをその復号装置で復号することにより求める方法である。もう１つの求め方は、符号化装置に、符号化しようとするシンボルとその度数を測定する手段を設けておき、用意しておいたデータをその復号装置で符号化することで求める方法である。
【００６０】
確率Pijは上述のように実験的に求めなくとも、既知である場合がある。例えばMPEG−２ビデオのvop_coding_typeの場合、フレーム内符号化フレームをI、片方向予測フレームをP、両方向予測フレームをBと呼べば、I、B、B、P、B、B、P、B、B、P、B、B、P、B、Bの順で符号化する方法が知られている。対象となる符号化データがこのようなデータである場合、Bとなる確率が１０／１５と最も高いことが予め判明しているため、確率が最大のシンボルを選択する場合には、Bを選択すれば良い。これは前述した固定値を選択する方法（ａ）と同じである。
【００６１】
次に、現在復号している符号化データに対しデータを復号しながら動的に確率Pijを求める場合について説明する。動的に確率Pijを求める方法では、ヘッダ推定部１３は、エラーの検知が通知されない通常時に、ヘッダ復号部１１から通知された復号したヘッダの情報を元に生起したシンボルとその度数を記録する。エラーの検知が通知された場合には、記録しておいた度数を元に、最大の度数となるシンボルを選択することでヘッダの推定を行う。例えば、MPEG−４ビデオのVOPヘッダを推定するためにヘッダ情報の一つのvop_coding_typeを選択する場合、現在までに復号したvop_coding_typeの各シンボルの度数が、Iが２回、Pが２０回、Bが０回であった場合、最大の度数となるシンボルはPであるためヘッダ推定部１３ではPを選択する。
【００６２】
上記では確率Pijが一定であることを仮定していたが、実際にはPijが動的に変化する場合も考えられる。この場合に対応するため、ここではPijが前回までに復号したシンボルの関数であると考える。すなわち、シンボルSiについて、k回目に復号されるシンボルの生起確率が、過去に復号されたシンボルにより決まると仮定する。k回目に復号されるシンボルをSi(k)、k回目にシンボルSijが復号される確率をPij(k)と表現すると、確率Pij(k)は過去に復号されたシンボルの関数として表現できる。
Pij(k) = f(Sij, Si(k-1), Si(k-2), Si(k-3)…., Si(k-l))
【００６３】
この関数fの最も単純な場合は、
Pij(k) = f(Sij, Si(k-1))
の場合、すなわち前回復号されたシンボルに依存して、今回発生するシンボルの生起確率が決まる場合である。たとえば、関数fとしては、
f  = 0.9  (Sij=Si(k-1) の場合)
が考えられる。
【００６４】
この関数fの意味は、生起確率Pij(k)は前回復号されたシンボルに依存し、前回のシンボルと同じシンボルである確率が０．９、前回と異なるシンボルである確率が０．１ということである。このシンボルを推定する場合は、前回のシンボルを選択することになる。例えば、MPEG−４ビデオのVOPヘッダ中の情報である量子化係数vop_quantは、前回復号した値と同じである確率が高く、この方法を用いるのが好適である。これは前述した直前に復号した値を選択する方法（ｂ）と同一である。
【００６５】
Pij(k)はデータを復号しながら求めることもできる。MPEG−４ビデオのVOPヘッダ中の情報のvop_rounding_type は、０又は１を取る情報である。例えば、vop_rounding_typeが、0,0,1,1,0,0,1,1,0,0,1,1,・・・のように0,0,1,1を周期的に繰り返すパターンにより符号化されているとする。この場合、vop_rounding_typeを復号するときに、過去３回の値のパターン毎に今回復号した値となる場合の度数を測定しておけばPij(k)を求めることができる。このパターンのデータを４１回復号した場合の度数は図４のようになる。図４より、過去３回のvop_rounding_typeの値のパターンが{0, 0, 1}の場合の度数を見ると、次が0である場合の度数が0、次が1である場合の度数は9である。このことから過去３回のvop_rounding_typeの値のパターンが{0, 0, 1}の場合に対して、
Pij(k) = 1 (＝9/9)   (Sij=0の場合)、 Pij(k) = 0  (Sij=1の場合)というようにPij(k)が得られる。このように、一般に過去Ｎ回の値のパターン毎に今回復号した値となる場合の度数を測定しておけばPij(k)を求めることができる。
【００６６】
ところで、ディジタル放送では、トランスポートストリームレベルで第１の誤り訂正符号を付加し、さらにインターリーブして第２の誤り訂正符号を付加した上で伝送する。復号時には第２の誤り訂正符号により訂正したデータを、逆インターリーブし、さらに第１の誤り訂正符号により訂正して符号化データが得られる。このような場合、伝送時にバースト誤りが生じても逆インターリーブされた後のデータではランダム誤り（ビット誤り）となる。そのため、符号化データに訂正されずに残るエラーはランダム誤り（ビット誤り）である確率が高い。この性質を考慮すると、シンボルを選択する際に、該シンボルを符号化して得られるビット列と符号化データのビット列とを比較し、ビット違いの少ないものを選ぶ（符号化データ中のビット列に近いものを選ぶ）と有利である。
【００６７】
上記の性質を考慮してシンボルを選択する方法を図５のフローチャートを用いて説明する。ここではシンボルの生起確率がPijであることが分かっているものとする。処理を開始し、ステップＳ５０１では、Pijの中で確率が最も高いものから順にシンボルを仮に選び出す（仮選択）。ステップＳ５０２ではステップＳ５０１で仮選択されたシンボルを符号化する。ステップＳ５０３では、ステップＳ５０２で符号化して得られるビット列と符号化データのビット列を比較しビットが異なる数を数える。ステップＳ５０４で、ビット違いが所定ビットN（例えば１ビット）以内であるか否かを判定する。N以内であればステップＳ５０５に移行し仮選択したシンボルを選択する。ステップＳ５０４において、所定ビットより大きい場合と判定された場合には、ステップＳ５０１に移行し次に確率の高いシンボルを仮選択する。このようなステップを行うことにより、符号化した場合のビット列が、符号化データ中のビット列と比較して違いがNビット以下の違いとなるシンボルの中で最も確率の高いものを選択することができる。
【００６８】
次に、シンボルを符号化して得られるビット列と符号化データとのビット列を比較し、ビット違いの少ないものを選ぶことによりシンボルを選択する他の方法を説明する。この方法では、生起確率を用いない。ヘッダを復号する際に、あるシンボルについて復号された値を過去Ｌ回分、記録しておくものとする。こうしておけば、図６のフローチャートで示される以下の方法により、このシンボルを推定できる。まず、ステップＳ６０１で過去に復号されたＬ個のシンボルのうち最近復号されたシンボルを仮選択する。次に、ステップＳ６０２で仮選択されたステップシンボルを符号化する。ステップＳ６０３で、符号化して得られるビット列と符号化データのビット列を比較しビットが異なる数を数える。ステップＳ６０４で、ビット違いが所定ビットN（例えば１ビット）以内であるかを判定する。N以内であればステップＳ６０５に移行し仮選択したシンボルを選択する。ステップＳ６０４において、所定ビットより大きい場合と判定された場合には、ステップＳ６０１に移行し次に最近復号されたシンボルを仮選択する。このようなステップを行うことにより、符号化した場合のビット列が、符号化データ中のビット列と比較して違いがNビット以下の違いとなるシンボルの中で直近に復号されたものを選択することができる。
【００６９】
以上ヘッダの推定におけるシンボルの選択方法を幾つか説明したが、推定対象となるヘッダの全てのシンボルについて同じ選択方法を用いる必要はなく、シンボル毎に異なる選択方法を用いても良い。例として、MPEG−４ビデオのVOPヘッダを推定する方法を以下に示す。まずフレームタイプを示すvop_coding_typeは、符号化データ毎に割合が異なるので、復号する度に出現度数を数えておき、推定する時点で最大の度数であったシンボルを選択する。続くmodulo_time_baseとvop_time_incrementについては、同じ時間情報を２つのシンボルに分けて符号化したものなので、復号時にはmodulo_time_baseとvop_time_incrementを組にして出現度数を数えておく。推定する時点では図５で説明したフローに従いビット違いが１ビット以内の候補の中で最も度数の大きいものを選択する。フレームが符号化されているかを示すvop_codedは１である可能性が高いと分かっているので固定的に１を選択し、丸め方向を示すvop_rounding_typeは一定パターンで符号化されることが多いので、過去３回のパターンと今回の値の度数を記録しておいて、推定する時点以前の３回のパターンから最大の度数となるシンボルを選択する。各種情報のcomplexity_estimation_headerは存在しない可能性が高いので無しとし、符号表を選択するための閾値intra_dc_vlc_thr及び量子化係数vop_quantは前回の値との相関が高いために前回復号して得られた値を用いる。動きベクトルの範囲を示すvop_fcode_forwardは符号化データ毎に異なるが、ストリーム中では一定であることが多いため、復号するたびにvop_fcode_forwardの生起度数を記録しておき、その中で最大となる値を選択する。next_start_codeは、挿入する場所のビット位置に応じて値を選択する。上記の方法で、ヘッダ中の各シンボルを選択し符号化することでVOPヘッダが推定できる。
【００７０】
上記の例において、modulo_time_baseとvop_time_incrementとを組にして出現度数を求め、それに基づいてシンボルの組を推定する方法を説明したように、シンボルの組を一まとまりと考え、そのシンボルの組に対して、シンボルの組の候補から値を選択することによりヘッダの推定を行っても良い。
【００７１】
また、エラーの発生した位置は、エラーを検知した位置もしくはその前に存在していることから、エラーの検知された位置によって推定方法を変えることもできる。具体的には、エラーが検出された位置より前に復号された値については、復号された値をそのまま用いて推定し、エラーの検出された位置及びその後の情報のみをシンボル候補から選択して推定することでヘッダを推定することができる。なお、エラーの検出された位置の前と後とで区間を分けるのではなく、エラーが検出された位置より所定数以上前に位置するシンボルについては、復号した値を使い、その後のシンボルについては推定するという様に区間を分けることもできる。
【００７２】
最後に、ヘッダ読み飛ばし部１４（図１）の動作を説明する。ヘッダ読み飛ばし部１４では、ヘッダ推定部１３から通知されたヘッダのビット数Phから、ヘッダ先頭を基準とした現在のビット位置Pnを引いて、必要な読み飛ばしビット数Lを計算する。L = Ph − Pn
次に、Ｌビットだけ符号化データを読み飛ばす。現在位置がPnのところ、Ph − Pnだけ読み飛ばすので、読み飛ばした後のビット位置はPh、すなわちヘッダが終了した後の位置（ヘッダに続く符号化データの先頭）となる。
【００７３】
なお、ヘッダ復号部１２が内部に符号化データを一時的に記憶しておくバッファを持ち、ヘッダ復号中に符号化データを巻き戻すことができる場合においては、ヘッダ復号部１２でエラー検知した場合に、ヘッダ復号部１２で予めヘッダ先頭まで巻き戻しておき、ヘッダ読み飛ばし部１４では推定されたビット数Phだけ読み飛ばすという方法にしても良い。
【００７４】
次に、本発明の第２の実施の形態について説明する。本実施の形態は、図１で示される第１の実施の形態と同じ装置で実現できる。
【００７５】
第１の実施の形態においては、エラーが検知された場合においてヘッダ全体を推定し、ヘッダ全体分のビット長の符号化データを読み飛ばす例を説明した。これに対し、第２の実施の形態では、ヘッダの所定の部分（一部分）を推定し所定の部分のみを読み飛ばす方法を説明する。
【００７６】
ヘッダの復号でエラーを検知した場合にもエラーがヘッダ全体で生じている可能性は低く、エラーを検知した位置もしくはその直前にのみエラーが存在している可能性が高い。この仮定が正しい場合、エラーが発生した部分以外のヘッダについては通常通り復号することができる。この性質を考慮すると、エラーが実際に発生したと考えられるエラーを検知した位置及びその前の部分にあるヘッダの一部のみを推定して読み飛ばし、他のエラーがないと考えられる部分のヘッダについてはそのまま復号する方法が好適であると考えられる。第２の実施の形態はこの方法を実現するものである。
【００７７】
本実施の形態による方法は以下の手順により実現できる。ヘッダ中のシンボルSiの復号においてエラーが検出された場合には、シンボルSiの位置の所定数前のシンボルSi-aから所定数後のシンボルSi+bまでの部分的についてヘッダの推定を行い、推定された部分のビット長だけ読み飛ばす。この後のシンボルSi+b+1から後のシンボルについては読み飛ばした後の位置から符号化データを復号して値を得る。
【００７８】
この動作を図７に示すフローチャート図を用いて説明する。処理を開始し、ステップＳ７０１では、入力したデータのヘッダを復号する。ステップＳ７０２では、ヘッダ復号においてエラーが検出されたか否かを判定する。エラーが検出されない場合には（Ｎ）、ステップＳ７０３に移行しヘッダに続くデータを復号する。次いで、ステップＳ７０４では、復号されたデータを出力する。ステップＳ７０２でエラーが検出された場合には（Ｙ）、ステップＳ７０５に移行する。ステップＳ７０５では、エラーが検出された位置のa個前のシンボルからb個後のシンボルまでのヘッダを推定する。ステップＳ７０６では、推定したヘッダ長だけ符号化データを読み飛ばす。ステップＳ７０７では、ヘッダの続きを復号する。ヘッダの復号が終わるとステップＳ７０３に移行しヘッダに続くデータを復号し、ステップＳ７０４で復号されたデータを出力する。
【００７９】
例えば、MPEG−４ビデオのVOPヘッダのvop_time_incrementでエラーが検出された場合で、ヘッダを推定する範囲(a, b)が(1, 0)の場合には、エラーを検知したシンボルの１つ前のシンボルのmodulo_time_baseとエラーを検知した位置のシンボルのvop_time_incrementを推定し、その推定されたヘッダのビット長だけ読み飛ばす。エラーを検知した位置の次のシンボルであるvop_coded及びそれ以降のシンボルについては、読み飛ばした後のヘッダを復号することで値を得る。
【００８０】
ところで、推定する範囲のシンボルが複数の場合、個々のシンボルについて生起確率Pijの最も高いものを選択する方法によりヘッダの部分を推定しても良いが、この場合推定する範囲のシンボルを全て変更することになる。しかしながらエラーが発生したシンボルは高々１つであることが多いことを考えると、予め定めた範囲の全てのシンボルを変更するのは好適ではない。
【００８１】
ヘッダを復号して得られたシンボルの生起確率は、確率Pijを元に求めることができるが、エラーを検出したシンボルの前に位置するシンボルの中でこの確率が特に低いシンボルがある場合には、そのシンボルでエラーが発生した可能性が高い。
【００８２】
しかしながら、ヘッダが可変長符号化されている場合、エラーが発生したシンボルだけでなく、エラーが発生したシンボルの後に位置するシンボルも正しい値では復号できない。よって、生起確率が低くエラーが発生したと考えられるシンボルより後に復号されたシンボルは信頼できない。そのため、生起確率が低いシンボルが複数ある場合には、生起確率が低いシンボル群の内、後に位置するシンボルの生起確率が低かったのは、前に位置するシンボルでエラーが発生したためと考えられる。従って、生起確率の低いシンボルが複数ある場合には、そのシンボル群の中で最も前に位置するシンボルにおいてエラーが発生したと考えるのが好ましい。
【００８３】
このように考えると、推定する範囲のシンボルが複数ある場合に、ヘッダを復号して得られたシンボルの生起確率を、推定する範囲の先頭のシンボルから後のシンボルの順に求めていき、この生起確率が所定値未満であると判定された時点で、この生起確率の低かったシンボルを推定し直すことでヘッダを推定すると良い。
【００８４】
この方法は以下のようにして実現する。エラーを検出したシンボルSiから所定数前のシンボルSi-aを起点として、シンボルSi-aから後のシンボルの順に、ヘッダを復号して得られたシンボルの生起確率を求めていき、この生起確率が所定値未満であると判定された時点で、この生起確率の低かったシンボル（ここではScとする）をエラーが発生したシンボルと推測する。このとき、ヘッダを推定する範囲をシンボルScの前後とする。例えばSc-2からSc+1の範囲とする方法や、Scのみを推定する方法などがある。尚、推定し直すシンボルの範囲が、エラーを検知したシンボルSiの前に位置するときには、シンボルSiの位置からの読み飛ばすのではなく、巻き戻す必要がある。従って、この方法では、ヘッダ復号部１１において符号化データを一度巻き戻した上で、ヘッダ読み飛ばし部で推定したヘッダの部分を読み飛ばす。
【００８５】
エラーが発生したと考えられるシンボルを推測する方法としては以下の方法も好適である。エラーを検知したシンボルSiと、その所定数前のシンボルSaの範囲のシンボルについて、ヘッダを復号して得られたシンボルの生起確率を求める。エラーを検知したシンボルSiを除くシンボルの中で、生起確率が所定の閾値よりも小さいものがあれば、そのシンボル群の中で最も生起確率が小さいものをエラーの発生したシンボルScと推測する。ここでエラーを検知したシンボルSiを除外しているのは、エラーを検知したシンボルは、有り得ない値であるはずなので、この場合の生起確率が最低であるはずであるからである。所定の閾値よりも小さい生起確率となるシンボルがない場合には、エラーを検知したシンボルSiをエラーが発生したシンボルScと推測する。
【００８６】
また、シンボル候補の数が相対的に多いシンボルの場合、そのシンボルに対するシンボル候補の生起確率が平均的に低くなってしまい、そのため上記の方法でエラーの発生したシンボルを推測すると、シンボル候補の数が相対的に多いシンボルが常に推測されてしまうこともありうる。この問題を避けるために、生起確率をそのまま用いてエラーが発生したと考えられるシンボルを推測するのではなく、正規化された生起確率を用いて、エラーのシンボルを推測しても良い。
【００８７】
ここで正規化された生起確率を求める一つの方法は、シンボル候補のうち生起確率が最大となるシンボルの生起確率をQとした場合に、各シンボルの生起確率PijをQで割ることによって求める方法である。例えば、シンボル候補が0、1、2であり、各生起確率が0.6、0.3、0.1であった場合、各シンボルの正規化された生起確率は、1(=0.6/0.6)、0.5(0.3/0.6)、0.16(=0.1/0.6)となる。ヘッダを復号して得られたシンボルが1であった場合、エラーのシンボルを推測するために用いられる正規化された生起確率は0.5となる。
【００８８】
さらに、シンボル候補が極めて多いために、どのシンボル候補の生起確率も非常に低くなってしまうシンボルについては、生起確率が意味をなさないので、エラーと推測するシンボルの候補から除外しても良い。例えば、シンボル候補のうち生起確率が最大となるシンボルの生起確率Ｑが０．１を超えない場合には、このシンボル候補をエラーと推測するシンボル候補から除外する方法が好適である。
【００８９】
第２の実施の形態は、ヘッダの所定の部分を推定し読み飛ばすものである。上記に説明したように、所定の部分を定める方法としては、１）エラーが発生した位置の所定数前のシンボルSi-aから所定数後のシンボルSi+bまでの部分を所定の部分とする方法と、２）エラーが発生した位置の所定数前のシンボルSi-aから生起確率に基づいてエラーの発生した確率が最も高いと判断されるシンボルScを推定し、シンボルScの前後所定の範囲のシンボルを推定する方法と、がある。
【００９０】
次に、本発明の第３の実施の形態による符号化データ復号装置について図面を参照しつつ説明を行う。図８は、本実施の形態による符号化データ復号装置の構成を示す図である。本実施の形態による符号化データ復号装置は、ヘッダを復号するヘッダ復号部８１と、ヘッダに続くデータを復号する符号化データ復号部８２と、ヘッダ復号部８１でヘッダ中にエラーを検出した場合にヘッダを推定するヘッダ推定部８３と、ヘッダ復号部で決定されたビット数だけ符号化データを読み飛ばすヘッダ読み飛ばし部８４と、エラー制御部８５と、を備える。このデータ復号装置は、第１の実施の形態と同様に、エラーが検出されない場合は、ヘッダ復号部８１でヘッダを復号し符号化データ復号部８２でヘッダに続くデータを復号する。ヘッダ復号部８１はまた、復号したヘッダの情報をヘッダ推定部８３に伝達する。エラーのある場合で、ヘッダ復号部８１でエラーが検出された場合には、ヘッダ推定部８３においてヘッダを推定し、ヘッダの長さをヘッダ読み飛ばし部８４に通知する。ヘッダ推定部８３は、ヘッダ復号部８１に、推定したヘッダの情報を伝える。ヘッダ読み飛ばし部８４では通知されたヘッダ長だけ符号化データを読み飛ばす。ヘッダ復号部８１は、ヘッダをエラーなく復号した時点、もしくはヘッダ読み飛ばし部８４でヘッダを読み飛ばした時点で、符号化データ復号部８２に対して、ヘッダの情報を伝える。このとき、ヘッダがエラーなく復号できた場合には復号したヘッダの情報を符号化データ復号部８２に伝え、ヘッダの復号でエラーが生じてヘッダを推定した場合にはヘッダ推定部８３から伝達されたヘッダの情報を符号化データ復号部８２に伝える。符号化データ復号部８２では、ヘッダ復号部８１から伝達されたヘッダの情報を用いて読み飛ばされた後の符号化データを継続して復号する。このように、エラーの検出されたヘッダを読み飛ばす動作は、第１の実施の形態と同じである。
【００９１】
以下、第１の実施の形態と異なる点に重点をおいて説明する。符号化データ復号部８２は、第１の実施の形態では備えていなかったエラー検出手段８２ａを内部に備え、符号化データ復号中のエラーを検出することができる。
【００９２】
本実施の形態の符号化データ復号装置では、符号化データ復号部８２でエラーが検出された場合、データをヘッダ先頭まで巻き戻した上で、ヘッダ推定部８３を用いてヘッダを推定し直し、続くヘッダ読み飛ばし部８４においてヘッダを読み飛ばす。さらに符号化データ復号部８２で復号を行う。このヘッダの推定・読み飛ばし・符号化データ復号を制御するのがエラー制御部８５である。このように、ヘッダに続く符号化データの復号でエラーが検出された場合でも、ヘッダの推定、読み飛ばしを行うことが本実施の形態の特徴である。
【００９３】
第１の実施の形態の場合には、ヘッダの推定に誤りがあった場合には符号化データの復号でエラーになりこれ以上復号することができない。しかし、第３の実施の形態では、符号化データの復号でエラーを検出した際にヘッダの推定を再度行うようにするため、ヘッダの推定の失敗により復号できない問題を解決することができる。尚、エラー制御部８５は、ヘッダ推定部８３において、所定回数もしくは所定方法の推定が終了した後は、推定を停止することとする。これにより無限ループを避けることができる。
【００９４】
ヘッダ推定部８３の詳細な動作について説明する。ヘッダ推定部８３は、エラーの検知が通知される度に、ヘッダの推定をやり直すことになる。そのため１回目の推定と２回目の推定、３回目の推定などと、推定する度に別のシンボルを選択してヘッダを推定する必要がある。一つの方法は、第１の実施の形態で説明したようにシンボルの生起確率Ｐijを用いて、１回目の推定では最も確率の高いシンボルを選択し、２回目の選択ではその次に高い確率のシンボル、３回目ではその次に高い確率のシンボルというように選択する方法である。
【００９５】
例えばMPEG−４ビデオのVOPヘッダを推定する場合では、フレームタイプを示すvop_coding_typeの生起確率が、B、P、Iの順に高いという知見がある場合には、１回目の推定では、vop_coding_typeをBフレームとして推定し、２回目の推定ではPフレームとして推定、３回目の推定ではIフレームとすれば推定する毎に異なった推定を行うことができる。また別の方法では、VOPヘッダを復号するたびに時間情報を示すmodulo_time_baseの値とその度数を記憶しておき、１回目の推定では最も多く現れた値を使って推定し、２回目の推定ではその次の頻度で現れた値を使って推定するなどの処理を行う。また、VPヘッダを推定する場合は、１回目の推定ではHECである０として推定し、２回目の推定ではHECが１であるとして推定を行う方法がある。
【００９６】
上記では、ヘッダ中のある位置のシンボルについて、推定する度に値を変更して推定し直していたが、どのシンボルを推定し直すたびに変更するシンボルとして用いるかという課題がある。一つの方法では、最も重要な位置の情報を変更することである。MPEG−４ビデオのVOPヘッダであればフレームタイプを示すvop_coding_typeが最も重要な情報あるので、このシンボルを変更する方法がある。また別の方法では、エラーを検知した位置のシンボルについて変更する方法である。またエラーを検知した位置の一つ前のシンボルを変更する方法もある。
【００９７】
また、第２の実施の形態では、推定する範囲のシンボルが複数ある場合において、ヘッダを復号して得られたシンボルの生起確率を、確率Pijを元に求めておき、この確率が、推定する範囲のシンボルの中で最も小さいシンボルをエラーの発生したシンボルとして推定する方法を説明した。この方法と同様の方法でエラーの発生したシンボルを推定し、このシンボルを変更対象とする方法は好適である。
【００９８】
ところで、ヘッダだけではなく、ヘッダに続く符号化データにもエラーが発生する可能性があることを考慮すると、エラー制御部８５の動作を以下のようにすることができる。
【００９９】
ヘッダに続く符号化データが、動画像や画像を符号化する単位であるマクロブロックである場合について、エラーを検出した位置のマクロブロック番号がヘッダの直後のマクロブロック番号から数えて所定数以内であれば、ヘッダを推定する動作に戻ることとする。これは、ヘッダに続く符号化データにもエラーが検出される可能性があることを考慮し、ヘッダを検出してから所定数より多くのマクロブロックをエラーの検出無しで復号できる場合にはヘッダにはエラーが無かったと見做し、所定数以内にエラーが検出された場合にはヘッダにエラーが有ったと見做すものであり、この場合のみヘッダの推定を再度行う。すなわち、エラーを検出した時点のマクロブロック番号をMe、ヘッダ直後のマクロブロック番号をMh、ある閾値をTmとした場合、Me - Mh <= Tmの場合は、ヘッダの推定を行い、
Me - Mh ＞ Tmの場合には、ヘッダの推定は行わない。ヘッダの推定を行わない場合には、次のヘッダまで符号化データを読み飛ばし、次のヘッダから復号を再開すれば良い。
【０１００】
また、ヘッダにエラーが発生した場合にもヘッダの復号においてエラーが検出されず、ヘッダに続く符号化データの復号においてエラーが検出されることがある。このようにヘッダの復号でエラーが検出されなかった場合についても、ヘッダに続く符号化データの復号において所定数以内のマクロブロックでエラーが検出された場合には、実際にはヘッダが正しく復号されていなかったと見做し、ヘッダの推定を行う。これにより、ヘッダでのエラーを符号化データの復号において検出した場合にも符号化データを復号し直すことが可能になる。
【０１０１】
ところで、上記ではマクロブロック番号が所定数以内であるかを用いて判定を行ったが、エラーを検出した位置のビット位置がヘッダの直後のビット位置から数えて所定ビット以内かどうかを用いて判定を行ってもよい。すなわち、エラーを検出した時点のビット位置をPe、ヘッダ直後のビット位置をPh、ある閾値をTbとした場合、Pe - Ph <= Tbの場合は、ヘッダの推定を行い、  Pe - Ph ＞ Tbの場合には、ヘッダの推定は行わない。ヘッダの推定を行わない場合には、マクロブロック番号で判定したときと同様でよい。
【０１０２】
ここで、符号化データ復号部８２でエラーを検出する方法の１つを説明する。符号化データがMPEG−４ビデオである場合には、ヘッダに続くデータはマクロブロックから構成され、そのマクロブロックはマクロブロックヘッダとマクロブロック内のデータから構成される。ここで、マクロブロック内のデータの一つは、DCT係数の係数データである。この係数の数は必ずブロック内の係数の最大個数である６４個以下であるので、復号された係数の数が６４個を越えた場合にはエラーがあったと検出することができる。
【０１０３】
図９は、本発明の第３の実施の形態による符号化データ復号方法の流れを示すフローチャート図である。ステップＳ９０１では、入力したデータのヘッダを復号する。ステップＳ９０２では、ヘッダ復号においてエラーが検出されたかどうかを判定する。ステップＳ９０２でエラーが検出されない場合には（Ｎ）、ステップＳ９０３に移行しヘッダに続くマクロブロックを復号する。エラーが検出された場合には（Ｙ）、ステップＳ９０４に移行しヘッダを推定する。ステップＳ９０５では推定されたヘッダの長さを元に、符号化データを読み飛ばす。続いてステップＳ９０３に移行する。ステップＳ９０３では、ヘッダに続く符号化データを復号する。ステップＳ９０３の符号化データ復号においてエラーが検出された場合には（Ｙ）、ステップＳ９０６の分岐で、ステップＳ９０４に移行しヘッダを推定する。ステップＳ９０５では推定されたヘッダの長さを元に、符号化データを読み飛ばす。ここで再度、ステップＳ９０３に移行し符号化データを復号する。復号が完了したら最後にステップＳ９０７で、復号データを出力する。
【０１０４】
上記の場合の動作を、図１０を参照しつつ説明を行う。図１０に示すように、符号化データは、同期ワード、ヘッダ情報、符号化データの繰り返しにより構成される。ここで、符号化データ中には図中×印の位置にエラーが存在するものとする。この場合、本実施の形態では、復号は（１）（２）（３）（４）（５）の順に進む。（１）では、ヘッダの復号を行うが途中のＸ点ではエラーを検出できずに復号を続ける。途中A点でエラーを検出し復号を停止する。ここでヘッダを推定する。続く（２）では推定されたヘッダ長だけデータを読み飛ばす。続く（３）ではエラーになったヘッダの直後のマクロブロックから継続して復号を行う。符号化データの復号途中、点Ｂでエラーを検知したため復号を停止する。エラーを検知したため（４）に進み再度ヘッダの推定及びヘッダの読み飛ばしを行う。続く（５）では正しいヘッダの推定が行なわれたため、ヘッダの直後の符号化データがエラーなく復号できる。図中実線の矢印（１）（３）（５）は復号を示し、点線の矢印（２）（４）は、巻き戻し及び読み飛ばしを意味する。
【０１０５】
以上に説明したように、本発明の各実施の形態によるデータ復号装置及びデータ復号方法によれば、
（１）ヘッダの復号中にエラーを検出した場合に、ヘッダを推定しそのヘッダ長だけ符号化データを読み飛ばすことで、正常な復号処理を継続することができる。これにより、ヘッダ中にエラーが発生した場合にもヘッダ直後の符号化データから復号を行うことが可能となり、特許文献１の課題を解決することができる。また、特許文献２のような誤り訂正回路を必要としないため、符号化装置側に誤り訂正符号を付加する必要がなく、また回路規模の削減および処理量の削減が可能となる。
（２）符号化データの復号を行う装置の一部であるヘッダ復号部がエラーを検出するので、ヘッダの先頭位置が、符号化データ復号前に既知である必要がない。また、エラー推定部でエラーの発生したヘッダの推定を行い、そこでヘッダの長さを算出するため、符号化データ復号前に、ヘッダの長さが予め既知である必要もない。これにより、ヘッダの先頭位置やヘッダの長さが予め既知でなくてはならないという特許文献２の問題を解決できる。
（３）エラーが生じたヘッダを以前のエラーの無いヘッダでそのまま置き換えるのではなく、ヘッダを構成するシンボル毎に、シンボル候補から値を選択することによりヘッダの推定を行うため、エラーの発生したヘッダが直前のヘッダと完全に一致していない場合にも、ヘッダ後に続くデータを復号できる。
という利点がある。
【産業上の利用可能性】
【０１０６】
本発明は、データ復号装置として利用することができる。
【図面の簡単な説明】
【０１０７】
【図１】本発明の第１の実施の形態の符号化データ復号装置の構成を示す図である。
【図２】本発明の第１の実施の形態の符号化データ復号方法の動作を示すフローチャート図である。
【図３】本発明の第１の実施の形態の動作を説明するための図である。
【図４】本実施の形態によるシンボルの選択に用いるシンボルの生起確率を示す図である。
【図５】本実施の形態のシンボルの選択方法を示すフローチャート図である。
【図６】本実施の形態のシンボルの選択方法を示すフローチャート図である。
【図７】本発明の第２の実施の形態の符号化データ復号方法の動作を示すフローチャート図である。
【図８】本発明の第３の実施の形態の符号化データ復号装置の構成を示す図である。
【図９】本発明の第３の実施の形態の符号化データ復号方法の動作を示すフローチャート図である。
【図１０】本発明の第３の実施の形態の動作を説明するための図である。
【図１１】MPEG−４ビデオの符号化データの構造例を示す図である。
【図１２】MPEG−４ビデオのＶＯＰヘッダの構造を示す図である。
【図１３】特許文献１の符号化データの復号方法を説明するための図である。
【図１４】特許文献２の符号化データ保護回路を説明するための図である。
【符号の説明】
【０１０８】
１１  ヘッダ復号部、１２  符号化データ復号部、１３  ヘッダ推定部、１４  ヘッダ読み飛ばし部、８１  ヘッダ復号部、８２  符号化データ復号部、８３  ヘッダ推定部、８４  ヘッダ読み飛ばし部、８５  エラー制御部、１４１  誤り訂正回路、１４２  遅延回路、１４３  メモリ回路、１４４  セレクタ回路、１４５  エラー制御回路。
【図１】
2006166079.tif 000003
【図２】
2006166079.tif 000004
【図３】
2006166079.tif 000005
【図４】
2006166079.tif 000006
【図５】
2006166079.tif 000007
【図６】
2006166079.tif 000008
【図７】
2006166079.tif 000009
【図８】
2006166079.tif 000010
【図９】
2006166079.tif 000011
【図１０】
2006166079.tif 000012
【図１１】
2006166079.tif 000013
【図１２】
2006166079.tif 000014
【図１３】
2006166079.tif 000015
【図１４】
2006166079.tif 000016