[go: up one dir, main page]

JP4335516B2 - 複数のプロセッサを用いた動画像符号化装置およびその方法 - Google Patents

複数のプロセッサを用いた動画像符号化装置およびその方法 Download PDF

Info

Publication number
JP4335516B2
JP4335516B2 JP2002324300A JP2002324300A JP4335516B2 JP 4335516 B2 JP4335516 B2 JP 4335516B2 JP 2002324300 A JP2002324300 A JP 2002324300A JP 2002324300 A JP2002324300 A JP 2002324300A JP 4335516 B2 JP4335516 B2 JP 4335516B2
Authority
JP
Japan
Prior art keywords
unit
processing
processor
encoding
moving image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002324300A
Other languages
English (en)
Other versions
JP2003244699A (ja
JP2003244699A5 (ja
Inventor
真 花木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2002324300A priority Critical patent/JP4335516B2/ja
Priority to US10/308,097 priority patent/US7302516B2/en
Priority to CNB021518793A priority patent/CN1279492C/zh
Publication of JP2003244699A publication Critical patent/JP2003244699A/ja
Publication of JP2003244699A5 publication Critical patent/JP2003244699A5/ja
Application granted granted Critical
Publication of JP4335516B2 publication Critical patent/JP4335516B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Multi Processors (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、動画像の符号化装置および符号化方法に関し、より特定的には、複数のプロセッサを用いて符号化処理を並列に実行する動画像符号化装置および動画像符号化方法に関する。
【0002】
【従来の技術】
従来から、MPEG(Moving Picture Experts Group)などに準拠した動画像符号化処理を、複数のプロセッサを用いて並列に実行し、処理時間を短縮する方法が知られている(例えば、特許文献1)。図34および図35は、それぞれ、特許文献1に記載された動画像符号化装置における、親プロセッサおよび子プロセッサの処理を示すフローチャートである。この符号化装置では、装置に含まれる複数のプロセッサのうち、選択された1台のプロセッサが親プロセッサとして動作し、他のプロセッサは子プロセッサとして動作する。各子プロセッサは、MPEG符号化処理のうちで並列に実行可能な処理を並列に実行する。例えば図35に示す例では、各子プロセッサは、マクロブロックを符号化し、可変長符号化し、局所復号化する処理(ステップS32、S34およびS35)を並列に実行する。親プロセッサは、ヘッダの生成(ステップS11〜S14)や子プロセッサの起動(ステップS15)など、主に符号化処理の実行を制御する。この際、親プロセッサは、自らも子プロセッサと同様の符号化処理を実行してもよい。このように親プロセッサによる実行制御のもとで、複数の子プロセッサを並列に動作させることにより、処理時間を短縮することができる。
【0003】
【特許文献1】
特開2000−30047号公報
【0004】
【発明が解決しようとする課題】
しかしながら、上記符号化装置には、符号化処理の実行制御、符号化処理の内容の切り替え、エラー処理、および、記憶装置の構成などの点において、次のような問題がある。まず、符号化処理の実行制御について言えば、第1に、符号化処理の実行制御が親プロセッサによって行われるため、親プロセッサによる逐次処理が子プロセッサによる並列処理を阻害するという問題がある。第2に、符号化処理中にプロセッサを動的に追加および削除する手段が設けられていないため、プロセッサが1台故障しただけでも、装置全体の動作が停止するという問題がある。第3に、符号化処理の実行制御は親プロセッサと子プロセッサとの間で同期を取ることによって行われるため、符号化処理中にプロセッサを追加または削除するには、追加/削除対象の子プロセッサと親プロセッサとの間で通信を行うか、追加/削除対象の子プロセッサに符号化処理の実行制御を一時的に行わせることが必要となり、これに伴い処理性能が一時的に低下するという問題がある。第4に、親プロセッサと子プロセッサとでは処理内容が異なるため、符号化処理の実行制御が複雑になるという問題もある。
【0005】
次に、符号化処理の内容の切り替えについて言えば、一般に、動画像符号化装置では、符号化対象となる動画像データの特性などに応じて、符号化処理の内容を切り替えられることが望ましい。例えば、動きの激しい動画像データには精度の高い動きベクトル探索を、動きの乏しい動画像データには簡易な動きベクトル探索をそれぞれ適用すれば、前者については再生画像を高画質化し、後者については処理時間を短縮することができる。
【0006】
ところが、上記符号化装置では、各プロセッサで実行される処理は固定化されているため、動画像データの特性に応じて符号化処理の内容を切り替えるためには、切り替えられる可能性があるすべての処理を子プロセッサに搭載した上で、親プロセッサが子プロセッサにおける処理の内容を動的に切り替える必要がある。しかし、この方法は、子プロセッサに搭載される機能の大半が無駄になり、親プロセッサと子プロセッサとの間の同期制御が複雑になるので、現実的ではない。また、符号化処理の内容を変更したり、新たな機能を追加するときには、装置本来の目的である符号化処理を中断し、各プロセッサのプログラムをすべて更新する必要が生じる。
【0007】
次に、エラー処理について言えば、上記符号化装置では、親プロセッサと複数の子プロセッサとが、それぞれ、異なるマクロブロックに対して符号化処理を行うため、符号化結果として生成されるビットストリームには、各プロセッサで求めた結果が混在して出現する。例えば、親プロセッサがスライス層以上のヘッダ生成処理とマクロブロック符号化処理とを行い、「子1」「子2」の2台の子プロセッサがマクロブロック符号化処理を行った場合には、図36に示すように、3台のプロセッサで求めた結果が混在したビットストリームが生成される。
【0008】
上記符号化装置では、各プロセッサで求めた結果は、検査することなく連結され、1本のビットストリームとなるため、いずれかのプロセッサで異常が発生すると、生成されたビットストリームを全く使用できないという問題が生じる。例えば、上述した例において「子2」のプロセッサで異常が発生すると、図36で斜線を付した部分に誤りが生じる。ところが、各プロセッサは任意に選択したマクロブロックを符号化し、各プロセッサにおける処理時間も一定ではないので、生成されたビットストリームにおける誤りの有無や、誤りの位置などを容易に求めることはできない。したがって、プロセッサで異常が発生すると、生成されたビットストリームは使用できなくなり、正しいビットストリームを得るためには、プロセッサに生じた異常の原因を除去した後に、再び符号化処理を行う必要がある。
【0009】
また、上記符号化装置では、生成されたビットストリームに基づき、いずれのプロセッサに異常が生じたかを容易に判断することができないため、異常プロセッサを検出するためには、符号化処理を一旦中断した上で、プロセッサごとに異常検出処理を行う必要がある。したがって、装置の保守には、プロセッサの個数に比例した時間が必要となる。また、子プロセッサを追加して符号化処理の高速化を図る場合、プロセッサの追加に伴い装置全体の故障率が上昇するので、信頼性の高い高価なプロセッサを使用しなければ、異常発生時の再符号化処理を含めた実際の処理時間が長くなってしまう。さらに、親プロセッサで異常が発生すると、符号化処理全体が停止し、代替の親プロセッサが準備できるまで符号化処理を再開できないという問題もある。
【0010】
次に、記憶装置の構成について言えば、上記符号化装置では、各プロセッサからアクセスされる記憶装置には特段の工夫がなされていない。このため、複数のプロセッサが記憶装置に対して並列にアクセスすると、データアクセスがボトルネックになり、動画像符号化処理の速度が低下するという問題がある。
【0011】
それ故に、本発明の第1の目的は、符号化処理の実行制御を行うプロセッサを備えることなく、符号化処理の実行中でもプロセッサを追加および削除できる動画像符号化装置および方法を提供することである。本発明の第2の目的は、実行中の符号化処理に影響を及ぼすことなく、符号化処理中に符号化処理の内容を切り替え、追加および変更することができる動画像符号化装置および方法を提供することである。本発明の第3の目的は、異常プロセッサを符号化処理中に検出することにより、プロセッサの修理や交換を容易に行え、少なくとも1個のプロセッサが正常に動作していれば符号化処理を継続できる動画像符号化装置および方法を提供することである。本発明の第4の目的は、複数のプロセッサから並列に高速アクセス可能な記憶装置を備え、符号化処理を高速に行える動画像符号化装置および方法を提供することである。
【0012】
【課題を解決するための手段および発明の効果】
第1の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを備えた動画像符号化装置であって、共有記憶部は、独立して処理を適用するために所定の単位に分割された動画像データと、分割された動画像データの各単位について、符号化処理に必要なデータと符号化処理の進行状態とを記憶し、各処理部は、共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する次処理選択手段と、次処理選択手段で選択された一単位の動画像データに対して、次処理選択手段で選択された処理を実行する処理実行手段とを含む。
このような第1の発明によれば、各処理部は、共有記憶部に記憶された符号化処理の進行状態に基づき、次の処理を選択して実行する。各処理部における処理の選択と実行とは、他の処理部の動作とは独立して、任意のタイミングで行われる。このように符号化処理の実行制御が複数の処理部によって分散して行われるので、符号化処理の実行制御を行う処理部を備える必要がなく、複数の処理部の間で同期を取る必要もない。したがって、逐次的に行われる符号化処理の実行制御によって、並列処理による高速化の効果が損われることがなく、装置の性能を向上させることができる。また、各処理部はいずれも同じ構成を有していればよいため、符号化処理の実行制御を簡素化することができる。
【0013】
第2の発明は、第1の発明において、次処理選択手段は、動画像符号化処理に含まれる複数の処理のうちから一の処理を、次に実行すべき処理として選択することを特徴とする。
このような第2の発明によれば、各処理部は、動画像符号化処理の一部を実行するごとに、次に実行すべき処理を選択する。このように動画像符号化処理を複数の処理に分割し、各処理部が分割された処理をそれぞれ実行することにより、各処理部の負荷を均等化し、各処理部が動画像符号化処理の全体を実行する場合と比べて、装置の性能を向上させることができる。
【0014】
第3の発明は、第1の発明において、各処理部は、各処理部における処理に必要なデータを記憶する個別記憶手段をさらに備え、処理実行手段は、次処理選択手段で選択された処理を実行する前に、当該処理に必要なデータを共有記憶部から読み出して個別記憶手段に記憶させ、個別記憶手段に記憶されたデータに対して当該処理を実行し、当該処理で得られたデータを個別記憶手段から読み出して共有記憶部に記憶させることを特徴とする。
このような第3の発明によれば、各処理部は、処理に必要なデータを共有記憶部から個別記憶手段に複写して、個別記憶手段に複写されたデータに対して選択した処理を実行する。これにより、処理部から共有記憶部に対するアクセスが減少し、各処理部におけるデータ待ち時間が短縮されるので、装置の性能を向上させることができる。
【0015】
第4の発明は、第3の発明において、処理実行手段は、次処理選択手段で選択された処理を実行する前に、当該処理に必要なデータが個別記憶手段に記憶されていない場合に、当該処理に必要なデータを共有記憶部から読み出して個別記憶手段に記憶させることを特徴とする。
このような第4の発明によれば、各処理部は、個別記憶手段に必要なデータが記憶されている場合には、データ取得のために共有記憶部にアクセスしない。これにより、処理部から共有記憶部に対するアクセスがさらに減少するので、装置の性能をさらに向上させることができる。
【0016】
第5の発明は、第1の発明において、共有記憶部は、処理部の識別情報を管理するための識別管理情報をさらに記憶し、各処理部は、識別管理情報に基づき、未使用の識別情報を取得する処理部追加手段と、処理部追加手段で取得された識別情報を解放する処理部削除手段とをさらに含み、次処理選択手段と処理実行手段とは、取得された識別情報が解放されるまでの間、動作することを特徴とする。
このような第5の発明によれば、各処理部は、共有記憶部に記憶された識別管理情報に基づき識別情報の取得と解放とを行い、識別情報を有している間だけ動作する。処理部による識別情報の取得と解放とは、他の処理部の動作とは独立して、任意のタイミングで行われる。したがって、他の処理部が符号化処理を実行中であっても、他の処理部に影響を及ぼすことなく、任意のタイミングで装置に処理部を追加および削除することができる。このため、処理部で障害が発生した場合などに、装置全体の符号化処理を中断することなく、処理部を保守することができる。
【0017】
第6の発明は、第5の発明において、処理部削除手段は、識別管理情報に基づき、処理部追加手段で取得された識別情報が失効していると判断したときに、当該識別情報を解放することを特徴とする。
このような第6の発明によれば、各処理部は、共有記憶部に記憶された識別管理情報に基づき、必要に応じて識別情報を解放し、処理の実行を停止する。処理部による識別情報を解放すべきか否かの判断は、他の処理部の動作とは独立して、任意のタイミングで行われる。したがって、他の処理部が符号化処理を実行中であっても、他の処理部に影響を及ぼすことなく、各処理部による判断に基づき、処理部を装置から削除することができる。このため、処理部で障害が発生した場合などに、装置全体の符号化処理を中断することなく、障害が発生した処理部を装置から削除することができる。
【0018】
第7の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを備えた動画像符号化装置であって、共有記憶部は、符号化対象の動画像データと、動画像データの符号化処理に必要なデータと、処理部の識別情報を管理するための識別管理情報とを記憶し、各処理部は、識別管理情報に基づき、未使用の識別情報を取得する処理部追加手段と、処理部追加手段で取得された識別情報を解放する処理部削除手段と、取得された識別情報が解放されるまでの間、共有記憶部に記憶された動画像データに対して符号化処理を実行する符号化実行手段とを含む。
このような第7の発明によれば、各処理部は、共有記憶部に記憶された識別管理情報に基づき識別情報の取得と解放とを行い、識別情報を有している間だけ動作する。処理部による識別情報の取得と解放とは、他の処理部の動作とは独立して、任意のタイミングで行われる。したがって、他の処理部が符号化処理を実行中であっても、他の処理部に影響を及ぼすことなく、任意のタイミングで装置に処理部を追加および削除することができる。このため、処理部で障害が発生した場合などに、装置全体の符号化処理を中断することなく、処理部を保守することができる。
【0019】
第8の発明は、第7の発明において、処理部削除手段は、識別管理情報に基づき、処理部追加手段で取得された識別情報が失効していると判断したときに、当該識別情報を解放することを特徴とする。
このような第8の発明によれば、各処理部は、共有記憶部に記憶された識別管理情報に基づき、必要に応じて識別情報を解放し、処理の実行を停止する。処理部による識別情報を解放すべきか否かの判断は、他の処理部の動作とは独立して、任意のタイミングで行われる。したがって、他の処理部が符号化処理を実行中であっても、他の処理部に影響を及ぼすことなく、各処理部による判断に基づき、処理部を装置から削除することができる。このため、処理部で障害が発生した場合などに、装置全体の符号化処理を中断することなく、障害が発生した処理部を装置から削除することができる。
【0020】
第9の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを備えた動画像符号化装置であって、共有記憶部は、処理部に転送され、処理部で実行される複数のプログラムと、複数のプログラムの機能を示す機能情報とを記憶し、各処理部は、動画像符号化処理に含まれる複数の処理のうちから一の処理を、次に実行すべき処理として選択する次処理選択手段と、共有記憶部に記憶された機能情報に基づき、共有記憶部に記憶された複数のプログラムから、次処理選択手段で選択された処理を実行するためのプログラムを選択し、選択したプログラムを共有記憶部から転送するプログラム更新手段と、共有記憶部から転送されたプログラムを記憶する個別記憶手段と、個別記憶手段に記憶されたプログラムを用いて、次処理選択手段で選択された処理を実行する処理実行手段とを含む。
このような第9の発明によれば、各処理部は、共有記憶部に記憶された機能情報に基づき、次の処理に必要なプログラムを選択し、選択したプログラムを転送して実行する。各処理部におけるプログラムの選択、転送および実行は、他の処理部の動作とは独立して、任意のタイミングで行われる。このため、各処理部は、他の処理部の動作に影響を及ぼすことなく、次の処理に必要なプログラムを選択し、実行することができる。したがって、実行中の符号化処理に影響を及ぼすことなく、符号化処理中に符号化処理の内容を切り替え、追加および変更することができる。
【0021】
第10の発明は、第9の発明において、共有記憶部は、独立して処理を適用するために所定の単位に分割された動画像データと、分割された動画像データの各単位について、符号化処理に必要なデータと符号化処理の進行状態とをさらに記憶し、次処理選択手段は、共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択し、処理実行手段は、次処理選択手段で選択された一単位の動画像データに対して、次処理選択手段で選択された処理を実行することを特徴とする。
このような第10の発明によれば、各処理部は、共有記憶部に記憶された符号化処理の進行状況に基づき、次の処理を選択して実行する。各処理部における処理の選択と実行とは、他の処理部の動作とは独立して、任意のタイミングで行われる。このように符号化処理の実行制御が複数の処理部によって分散して行われるので、符号化処理の実行制御を行う処理部を備えることなく、動画像符号化処理を行うことができる。
【0022】
第11の発明は、第9の発明において、プログラム更新手段は、共有記憶部に記憶された機能情報と次処理選択手段で選択された処理の機能とを比較して、当該処理を実行するためのプログラムを選択することを特徴とする。
このような第11の発明によれば、各処理部は、共有記憶部に記憶された機能情報と次の処理に必要な機能とを比較して、転送すべきプログラムを選択する。したがって、プログラム選択の際には、共有記憶部に記憶されたデータのうち機能情報のみが使用され、他の処理部は機能情報以外のデータに自由にアクセスできる。したがって、実行中の符号化処理に影響を及ぼすことなく、次の処理に必要なプログラムを選択することができる。
【0023】
第12の発明は、第9の発明において、プログラム更新手段は、個別記憶手段に記憶されたプログラムの機能と次処理選択手段で選択された処理の機能とを比較して、選択したプログラムを共有記憶部から転送するか否かを切り替えることを特徴とする。
このような第12の発明によれば、処理部は、以前に取得したプログラムを用いて次の処理を実行できる場合には、共有記憶部から個別記憶手段にプログラムを転送しない。これにより、処理部から共有記憶部に対するアクセスが減少し、各処理部におけるプログラム転送待ち時間が短縮されるので、装置の性能を向上させることができる。
【0024】
第13の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを備えた動画像符号化装置であって、共有記憶部は、独立して処理を適用するために所定の単位に分割された動画像データと、分割された動画像データの各単位について、符号化処理に必要なデータと符号化処理の進行状態とを記憶し、各処理部は、共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する次処理選択手段と、次処理選択手段で選択された一単位の動画像データに対して、次処理選択手段で選択された処理を実行する処理実行手段と、処理実行手段における処理で生じた異常を検出する異常検出手段と、異常検出手段で異常が検出されたときに、次処理選択手段および処理実行手段による符号化処理を停止させる処理停止手段とを備える。
このような第13の発明によれば、各処理部は、共有記憶部に記憶された符号化処理の進行状態に基づき、次の処理を選択して実行するとともに、選択した処理を実行した際に異常が生じたときには自ら停止する。各処理部における処理の選択、実行、異常検出および停止は、他の処理部とは独立して、任意のタイミングで行われる。したがって、符号化処理の実行制御を行う処理部を備えることなく、異常が生じた処理部を符号化処理中に検出することができる。よって、符号化処理中であっても処理部の修理や交換を容易に行うことができ、少なくとも1個の処理部が正常に動作していれば符号化処理を継続することができる。
【0025】
第14の発明は、第13の発明において、異常検出手段は、処理実行手段で求めた動画像データの符号化結果に基づき、処理実行手段における処理で生じた異常を検出することを特徴とする。
このような第14の発明によれば、動画像符号化処理で生成されたビットストリームに基づき、異常が生じた処理部が検出される。一般に動画像符号化処理で異常が生じたときには、ビットストリームに異常が生じるので、これにより、異常が生じた処理部を符号化処理中に容易に検出することができる。
【0026】
第15の発明は、第14の発明において、異常検出手段は、処理実行手段で求めた動画像データの符号化結果のサイズに基づき、処理実行手段における処理で生じた異常を検出することを特徴とする。
このような第15の発明によれば、動画像符号化処理で生成されたビットストリームのサイズに基づき、異常が生じた処理部が検出される。動画像符号化処理で異常が生じたときには、ビットストリームのサイズに異常が生じる場合があるので、これにより、異常が生じた処理部を容易に検出することができる。
【0027】
第16の発明は、第14の発明において、異常検出手段は、処理実行手段で求めた動画像データの符号化結果のシンタックスを検査することにより、処理実行手段における処理で生じた異常を検出することを特徴とする。
このような第16の発明によれば、動画像符号化処理で生成されたビットストリームのシンタックスを検査することにより、異常が生じた処理部が検出される。動画像符号化処理で異常が生じたときには、ビットストリームのシンタックスに異常が生じる場合があるので、これにより、異常が生じた処理部を容易に検出することができる。
【0028】
第17の発明は、第13の発明において、異常検出手段は、処理実行手段における処理時間に基づき、処理実行手段における処理で生じた異常を検出することを特徴とする。
このような第17の発明によれば、各処理の所要時間に基づき、異常が生じた処理部が検出される。動画像符号化処理に含まれる処理には、定型的な処理や、所要時間を予想可能な処理が多く含まれるので、これにより、異常が生じた処理部を容易に検出することができる。
【0029】
第18の発明は、第17の発明において、共有記憶部は、分割された動画像データの各単位について、異常検出用のカウント値をさらに記憶しており、各処理部は、カウント値を更新するカウント値更新手段をさらに備え、処理実行手段は、次処理選択手段で選択された一単位の動画像データに対して次処理選択手段で選択された処理を実行する前に、当該一単位の動画像データについてのカウント値を初期化し、異常検出手段は、処理実行手段における処理が完了したときに、処理実行手段で初期化したカウント値が所定値以上であるときに、処理実行手段における処理で異常が生じたと判断することを特徴とする。
このような第18の発明によれば、共有記憶部に記憶されたカウント値が各処理部によって更新され、これを用いて異常が生じた処理部が検出される。したがって、各処理部でタイマーを起動することなく処理の所要時間の概算値を算出し、異常が生じた処理部を検出することができる。
【0030】
第19の発明は、第13の発明において、異常検出手段は、処理実行手段における処理で異常が生じたと判断したときに、異常が生じた旨を、共有記憶部に記憶された符号化処理の進行状態に記録し、次処理選択手段は、共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する際に、異常が生じた旨が記録されている処理を優先的に選択することを特徴とする。
このような第19の発明によれば、処理部で異常が生じた旨は共有記憶部に記録され、各処理部は異常が生じた処理を優先的に実行する。このように異常が生じた処理を他の処理部が早期に実行することにより、動画像符号化処理を安全かつ確実に実行することができる。
【0031】
第20の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを備えた動画像符号化装置であって、共有記憶部は、独立して処理を適用するために所定の単位に分割された動画像データを分散して記憶する複数の画像記憶部と、各画像記憶部とは独立してアクセスできるように構成され、分割された動画像データの各単位について、符号化処理に必要なデータと処理の進行状態とを記憶するパラメータ記憶部とを含み、各処理部は、パラメータ記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する次処理選択手段と、次処理選択手段で選択された一単位の動画像データに対して、次処理選択手段で選択された処理を実行する処理実行手段とを含む。
このような第20の発明によれば、動画像データは複数の画像記憶部に分散して記憶され、各処理部は分散して記憶された動画像データにアクセスする。そこで、処理部からのアクセスが競合しないように動画像データを分散して記憶することにより、処理部からのアクセスが符号化処理のボトルネックになることを防止することができる。よって、動画像符号化処理を高速に行うことができる。
【0032】
第21の発明は、第20の発明において、符号化対象の動画像データを入力する画像入力部をさらに備え、次処理選択手段は、符号化処理の過程において少なくとも2段階に処理の選択方法を切り替え、第1段階では、次に実行すべき処理として動きベクトル探索を含む処理を選択し、第1段階に続く第2段階では、第1段階で求めた動きベクトル探索結果を利用することとして、次に実行すべき処理として既知の動きベクトル探索を含まない処理を選択し、処理実行手段は、次処理選択手段が第1段階にあるときは、次処理選択手段で選択された一単位の動画像データを画像入力部から読み出して、次処理選択手段で選択された処理を実行するとともに、読み出した動画像データを複数の画像記憶部のうち一の画像記憶部に書き込み、次処理選択手段が第2段階にあるときは、次処理選択手段で選択された一単位の動画像データを画像記憶部から読み出して、次処理選択手段で選択された処理を実行することを特徴とする。
このような第21の発明によれば、画像入力部から入力された動画像データは、動きベクトル探索実行中に複数の画像記憶部に分散して記憶される。その後、処理部は、分散して記憶された動画像データに対して符号化処理を実行する。動きベクトル探索では、計算が処理のボトルネックになるのに対して、動きベクトル探索後の処理では、入出力が処理のボトルネックになる。そこで、入出力に余裕がある動きベクトル探索実行中に、動画像データを複数の画像記憶部に分散して記憶させることにより、入出力に余裕がない動きベクトル探索後の処理を高速に行うための準備をする。これにより、動きベクトル探索後の処理において入出力が処理のボトルネックになることを防止することができる。よって、動画像符号化処理を高速に行うことができる。
【0033】
第22の発明は、第21の発明において、次処理選択手段は、画像入力から入力されるすべての動画像データについて第1段階における処理を選択した後に、第1段階から第2段階に処理の選択方法を切り替えることを特徴とする。
このような第22の発明によれば、すべての動画像データについて動きベクトル探索を実行した後に、動きベクトル探索後の処理を開始することができる。
【0034】
第23の発明は、第20の発明において、共有記憶部は、各画像記憶部およびパラメータ記憶部とは独立してアクセスできるように構成され、動画像データの符号化結果を記憶する符号化結果記憶部をさらに含み、処理実行手段は、動画像データの符号化結果を新たに求めたときに、求めた部分より前の部分の符号化結果がすべて符号化結果記憶部に記憶されている場合には、符号化結果記憶部に記憶された符号化結果に新たに求めた符号化結果を連結し、それ以外の場合には、新たに求めた符号化結果を、記憶された符号化結果と連結することなく、符号化結果記憶部に書き込むことを特徴とする。
このような第23の発明によれば、処理部は、新たに求めた符号化結果が符号化結果記憶部に記憶された符号化結果と連結可能か否かを判断し、連結可能である場合には連結し、連結不可である場合は新たに求めた符号化結果を後で連結すべきものとして符号化結果記憶部に書き込む。後で連結すべきとされた符号化結果の連結処理は、他の処理部によって実行される。したがって、符号化結果の連結順序と生成順序とが異なる場合でも、処理部は、他の処理部が符号化結果を生成するのを待つことなく、他の実行可能な処理を開始することができる。よって、動画像符号化処理を高速に行うことができる。
【0035】
第24の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを用いた動画像符号化方法であって、共有記憶部が、独立して処理を適用するために所定の単位に分割された動画像データと、分割された動画像データの各単位について、符号化処理に必要なデータと符号化処理の進行状態とを記憶するデータ記憶ステップを行ない、各処理部が、共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する次処理選択ステップと、次処理選択ステップで選択された一単位の動画像データに対して、次処理選択ステップで選択された処理を実行する処理実行ステップとを行う。
このような第24の発明によれば、各処理部は、共有記憶部に記憶された符号化処理の進行状態に基づき、次の処理を選択して実行する。各処理部における処理の選択と実行とは、他の処理部の動作とは独立して、任意のタイミングで行われる。このように符号化処理の実行制御が複数の処理部によって分散して行われるので、符号化処理の実行制御を行う処理部を備える必要がなく、複数の処理部の間で同期を取る必要もない。したがって、逐次的に行われる符号化処理の実行制御によって、並列処理による高速化の効果が損われることがなく、装置の性能を向上させることができる。また、各処理部はいずれも同じ構成を有していればよいため、符号化処理の実行制御を簡素化することができる。
【0036】
第25の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを用いた動画像符号化方法であって、共有記憶部が、符号化対象の動画像データと、動画像データの符号化処理に必要なデータと、処理部の識別情報を管理するための識別管理情報とを記憶するデータ記憶ステップを行い、各処理部が、識別管理情報に基づき、未使用の識別情報を取得する処理部追加ステップと、処理部追加ステップで取得された識別情報を解放する処理部削除ステップと、取得された識別情報が解放されるまでの間、共有記憶部に記憶された動画像データに対して符号化処理を実行する符号化実行ステップとを行う。
このような第25の発明によれば、各処理部は、共有記憶部に記憶された識別管理情報に基づき識別情報の取得と解放とを行い、識別情報を有している間だけ動作する。処理部による識別情報の取得と解放とは、他の処理部の動作とは独立して、任意のタイミングで行われる。したがって、他の処理部が符号化処理を実行中であっても、他の処理部に影響を及ぼすことなく、任意のタイミングで装置に処理部を追加および削除することができる。このため、処理部で障害が発生した場合などに、装置全体の符号化処理を中断することなく、処理部を保守することができる。
【0037】
第26の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを用いた動画像符号化方法であって、共有記憶部が、処理部に転送され、処理部で実行される複数のプログラムと、複数のプログラムの機能を示す機能情報とを記憶するプログラム記憶ステップを行い、各処理部が、動画像符号化処理に含まれる複数の処理のうちから一の処理を、次に実行すべき処理として選択する次処理選択ステップと、共有記憶部に記憶された機能情報に基づき、共有記憶部に記憶された複数のプログラムから、次処理選択ステップで選択された処理を実行するためのプログラムを選択し、選択したプログラムを共有記憶部から転送するプログラム更新ステップと、共有記憶部から転送されたプログラムを記憶する個別記憶ステップと、個別記憶ステップで記憶されたプログラムを用いて、次処理選択ステップで選択された処理を実行する処理実行ステップとを行う。
このような第26の発明によれば、各処理部は、共有記憶部に記憶された機能情報に基づき、次の処理に必要なプログラムを選択し、選択したプログラムを転送して実行する。各処理部におけるプログラムの選択、転送および実行は、他の処理部の動作とは独立して、任意のタイミングで行われる。このため、各処理部は、他の処理部の動作に影響を及ぼすことなく、次の処理に必要なプログラムを選択して、実行することができる。したがって、実行中の符号化処理に影響を及ぼすことなく、符号化処理中に符号化処理の内容を切り替え、追加および変更することができる。
【0038】
第27の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを用いた動画像符号化方法であって、共有記憶部が、独立して処理を適用するために所定の単位に分割された動画像データと、分割された動画像データの各単位について、符号化処理に必要なデータと符号化処理の進行状態とを記憶するデータ記憶ステップを行い、各処理部が、共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する次処理選択ステップと、次処理選択ステップで選択された一単位の動画像データに対して、次処理選択ステップで選択された処理を実行する処理実行ステップと、処理実行ステップにおける処理で生じた異常を検出する異常検出ステップと、異常検出ステップで異常が検出されたときに、次処理選択ステップおよび処理実行ステップによる符号化処理を停止させる処理停止ステップとを行う。
このような第27の発明によれば、各処理部は、共有記憶部に記憶された符号化処理の進行状態に基づき、次の処理を選択して実行するとともに、選択した処理を実行した際に異常が生じたときには自ら停止する。各処理部における処理の選択、実行、異常検出および停止は、他の処理部とは独立して、任意のタイミングで行われる。したがって、符号化処理の実行制御を行う処理部を備えることなく、異常が生じた処理部を符号化処理中に検出することができる。よって、符号化処理中であっても処理部の修理や交換を容易に行うことができ、少なくとも1個の処理部が正常に動作していれば符号化処理を継続することができる。
【0039】
第28の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを用いた動画像符号化方法であって、共有記憶部が、独立して処理を適用するために所定の単位に分割された動画像データを分散して記憶する画像記憶ステップと、画像記憶ステップで記憶された動画像データとは独立してアクセスできるように、分割された動画像データの各単位について、符号化処理に必要なデータと処理の進行状態とを記憶するパラメータ記憶ステップとを行い、各処理部が、パラメータ記憶ステップで記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する次処理選択ステップと、次処理選択ステップで選択された一単位の動画像データに対して、次処理選択ステップで選択された処理を実行する処理実行ステップとを行う。
このような第28の発明によれば、動画像データは複数の画像記憶部に分散して記憶され、各処理部は分散して記憶された動画像データにアクセスする。そこで、処理部からのアクセスが競合しないように動画像データを分散して記憶することにより、処理部からのアクセスが符号化処理のボトルネックになることを防止することができる。よって、動画像符号化処理を高速に行うことができる。
【0040】
第29の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを備えたコンピュータを動画像符号化装置として機能させるためのプログラムであって、共有記憶部に、独立して処理を適用するために所定の単位に分割された動画像データと、分割された動画像データの各単位について、符号化処理に必要なデータと符号化処理の進行状態とが記憶された状態で、各処理部によって実行されるべく、共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する次処理選択ステップと、次処理選択ステップで選択された一単位の動画像データに対して、次処理選択ステップで選択された処理を実行する処理実行ステップとを備える。
【0041】
第30の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを備えたコンピュータを動画像符号化装置として機能させるためのプログラムであって、共有記憶部に、符号化対象の動画像データと、動画像データの符号化処理に必要なデータと、処理部の識別情報を管理するための識別管理情報とが記憶された状態で、各処理部によって実行されるべく、識別管理情報に基づき、未使用の識別情報を取得する処理部追加ステップと、処理部追加ステップで取得された識別情報を解放する処理部削除ステップと、取得された識別情報が解放されるまでの間、共有記憶部に記憶された動画像データに対して符号化処理を実行する符号化実行ステップとを備える。
【0042】
第31の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを備えたコンピュータを動画像符号化装置として機能させるためのプログラムであって、共有記憶部に、処理部に転送され、処理部で実行される複数の処理プログラムと、複数の処理プログラムの機能を示す機能情報とが記憶された状態で、各処理部によって実行されるべく、動画像符号化処理に含まれる複数の処理のうちから一の処理を、次に実行すべき処理として選択する次処理選択ステップと、共有記憶部に記憶された機能情報に基づき、共有記憶部に記憶された複数の処理プログラムから、次処理選択ステップで選択された処理を実行するための処理プログラムを選択し、選択した処理プログラムを共有記憶部から転送するプログラム更新ステップと、共有記憶部から転送された処理プログラムを記憶する個別記憶ステップと、個別記憶ステップで記憶された処理プログラムを用いて、次処理選択ステップで選択された処理を実行する処理実行ステップとを備える。
【0043】
第32の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを備えたコンピュータを動画像符号化装置として機能させるためのプログラムであって、共有記憶部に、独立して処理を適用するために所定の単位に分割された動画像データと、分割された動画像データの各単位について、符号化処理に必要なデータと符号化処理の進行状態とが記憶された状態で、各処理部によって実行されるべく、共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する次処理選択ステップと、次処理選択ステップで選択された一単位の動画像データに対して、次処理選択ステップで選択された処理を実行する処理実行ステップと、処理実行ステップにおける処理で生じた異常を検出する異常検出ステップと、異常検出ステップで異常が検出されたときに、次処理選択ステップおよび処理実行ステップによる符号化処理を停止させる処理停止ステップとを備える。
【0044】
第33の発明は、並列に動作する複数の処理部と、処理部から共通してアクセスされる共有記憶部とを備えたコンピュータを動画像符号化装置として機能させるためのプログラムであって、共有記憶部に、独立して処理を適用するために所定の単位に分割された動画像データが分散して記憶され、さらに、動画像データとは独立してアクセスできるように、分割された動画像データの各単位について、符号化処理に必要なデータと処理の進行状態とが記憶された状態で、各処理部によって実行されるべく、共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する次処理選択ステップと、次処理選択ステップで選択された一単位の動画像データに対して、次処理選択ステップで選択された処理を実行する処理実行ステップとを備える。
【0045】
【発明の実施の形態】
(動画像符号化装置のシステム構成)
図1は、本発明の第1ないし第5の実施形態に係る動画像符号化装置の構成を示すブロック図である。図1に示す動画像符号化装置は、n個のプロセッサ1−1〜n、共有記憶部2、システム管理部3、ネットワーク4、画像入力部11、画像出力部12、および、ストリーム記憶部13を備える。n個のプロセッサ1−1〜n、共有記憶部2、および、システム管理部3は、いずれも、装置内に設けられたネットワーク4に接続される。この動画像符号化装置は、n個のプロセッサ1−1〜nを用いて、共有記憶部2に蓄積された動画像データを並列に符号化する。
【0046】
プロセッサ1には、例えば、パーソナルコンピュータが使用される。また、プロセッサ1は、動画像符号化専用のコンピュータや、汎用のエンジニアリングワークステーションなどであってもよい。共有記憶部2には、例えば、ハードディスク装置などが使用される。ネットワーク4には、例えば、バスやローカルエリアネットワークなどが使用される。
【0047】
共有記憶部2は、符号化処理に必要なプログラムとデータとを蓄積している。符号化処理実行前の共有記憶部2には、符号化処理用プログラムと、符号化対象の動画像データと、符号化処理中に参照される制御情報とが蓄積されている。共有記憶部2に蓄積されたプログラムは、各プロセッサ1にダウンロードされる。各プロセッサ1は、ダウンロードされたプログラムに従って、共有記憶部2から動画像データと制御情報とを読み出して所定の符号化処理を行い、符号化処理の中間結果や符号化結果のビットストリームを共有記憶部2に書き込む。符号化処理の中間結果には、例えば、GOP(Group of Pictures )構造や動きベクトルなどが含まれる。
【0048】
図2は、プロセッサ1の詳細な構成を示すブロック図である。プロセッサ1は、図2に示すように、CPU21、ネットワークインターフェイス部22、RAM23、および、ローカルバス24を備える。CPU21、ネットワークインターフェイス部22、および、RAM23は、いずれも、プロセッサ1内のローカルバス24に接続される。図1に示すn個のプロセッサ1−1〜nは、いずれも、図2に示す構成を有するものとする。
【0049】
CPU21は、プロセッサ1の演算処理装置であり、RAM23に蓄積された符号化処理用プログラム32に従って動作する。ネットワークインターフェイス部22は、ネットワーク4とローカルバス24とを接続する。RAM23は、各プロセッサ1ごとに設けられた記憶装置であり、プロセッサ識別情報31、符号化処理用プログラム32、および、符号化処理用データ33を蓄積している。プロセッサ識別情報31は、各プロセッサ1を識別するために割り当てられた識別情報である。符号化処理用プログラム32は、共有記憶部2からダウンロードされたプログラムである。符号化処理用データ33は、各プロセッサ1における符号化処理に必要なデータである。符号化処理用データ33には、符号化対象の動画像データ、符号化処理中に参照される制御情報、符号化処理の中間結果、および、符号化結果のビットストリームなどが含まれる。
【0050】
再び図1に戻ると、システム管理部3は、コマンド入力のための入力部(図示せず)を備え、入力されたコマンドに従いデータ入出力などの処理を行う。例えば、システム管理部3は、符号化対象の動画像データを画像入力部11から共有記憶部2へ転送する処理や、符号化結果のビットストリームを共有記憶部2から画像出力部12およびストリーム記憶部13へ転送する処理などを行う。図1では、システム管理部3をn個のプロセッサ1−1〜nとは別に設けたが、システム管理部3をn個のプロセッサ1−1〜nのいずれかに設けてもよい。
【0051】
画像入力部11は、デジタルVTR14とキャプチャ部15とを備えている。デジタルVTR14には、符号化対象の動画像データが記録されている。キャプチャ部15は、デジタルVTR14から出力された映像信号を所定の形式に変換する。変換後の映像信号は、システム管理部3の制御により、ネットワーク4経由で共有記憶部2に転送される。
【0052】
画像出力部12は、デコード部16とデジタルテレビ17とを備えている。共有記憶部2に蓄積されたビットストリームは、システム管理部3の制御により、ネットワーク4経由でデコード部16に転送される。デコード部16は、転送されたビットストリームを復号し、再生映像信号を出力する。デジタルテレビ17は、デコード部16から出力された再生映像信号を画面に表示する。これにより、動画像符号化装置のユーザは、再生映像信号の画質を評価することができる。
【0053】
ストリーム記憶部13は、記憶媒体(図示せず)を着脱可能に構成されている。共有記憶部2に蓄積されたビットストリームは、システム管理部3の制御により、ネットワーク4経由でストリーム記憶部13に転送される。ストリーム記憶部13は、転送されたビットストリームを着脱可能に構成された記憶媒体に書き込む。ストリーム記憶部13には、例えば、デジタルVTRやディスク記録装置などが使用される。
【0054】
図1に示す動画像符号化装置は、以下の特徴を有する。すなわち、図1に示す動画像符号化装置では、符号化対象の動画像データは、独立して符号化可能な単位に分割された状態で共有記憶部2に蓄積される。また、符号化処理は、特徴抽出、シーン検出、GOP構造決定、動きベクトル探索、仮符号化、ビット割当て、および、本符号化(仮符号化の後に行われる最終的な符号化)など、複数の処理(以下、各処理を総称して「単位処理」という)に分割される。各プロセッサ1は、ある単位処理を完了したときに、分割された動画像データを任意に選択し、選択した動画像データについてその時点で実行可能な単位処理を選択し、選択した単位処理を実行する。各プロセッサ1における単位処理の選択と実行とは、他のプロセッサの動作とは独立して、任意のタイミングで行われる。
【0055】
このように符号化処理の実行制御がn個のプロセッサ1−1〜nによって分散して行われるので、符号化処理の実行制御を行う管理用のプロセッサを備える必要がなく、n個のプロセッサ1−1〜nの間で同期を取る必要もない。したがって、逐次的に行われる符号化処理の実行制御によって、並列処理による高速化の効果が損われることがなく、装置の性能を向上させることができる。また、n個のプロセッサ1−1〜nはいずれも同じ構成を有していればよいため、符号化処理の実行制御を簡素化することができる。
【0056】
以下、図1に示す動画像符号化装置の特徴を5つの実施形態に分けて説明する。第1および第2の実施形態では、符号化処理中にプロセッサを追加および削除する機構について説明する。第3の実施形態では、符号化処理中に符号化処理の内容を切り替え、追加および変更する機構について説明する。第4の実施形態では、符号化処理中に異常プロセッサを検出する機構について説明する。第5の実施形態では、共有記憶部の詳細な構成について説明する。以下では、符号化方式としてMPEGを採用し、動画像データはMPEGで規定されたシーケンス単位に分割され、その結果s個のシーケンスが得られたとする。
【0057】
(第1の実施形態)
本発明の第1の実施形態に係る動画像符号化装置は、上述した符号化処理の実行制御の実現方式に加えて、プロセッサ識別情報を動的に割り当て、符号化処理中にプロセッサを追加および削除できること、並びに、世代番号を用いて故障したプロセッサを検出することを特徴とする。
【0058】
図3は、本実施形態に係る動画像符号化装置のデータ配置図である。図3において、n個のプロセッサ101−1〜nおよび共有記憶部102は、それぞれ、図1に示すプロセッサ1−1〜nおよび共有記憶部2を詳細化したものであり、システム管理部103は、図1に示すシステム管理部3に対応する。なお、図3では、本実施形態の特徴を説明するために必要なデータのみを示し、その他のデータについては図示を省略している。図3に示すように、各プロセッサ101には、プロセッサ識別情報110が蓄積される。プロセッサ識別情報110は、図に示すプロセッサ識別情報31を詳細化したものであり、識別番号111と世代番号112とを含んでいる。識別番号111は、装置全体で予め用意された1からmまでの番号のうち、当該プロセッサ101が取得した番号である。識別番号111は、符号化処理実行中は1からmまでのいずれかの値となり、符号化処理停止中は0となる。世代番号112は、後述するように、プロセッサ101に生じた故障を検出するために使用される。
【0059】
図3に示すように、共有記憶部102には、s個の各シーケンスについて、シーケンス処理用データ140が蓄積される。第iのシーケンス処理用データ140には、第iのシーケンスを符号化する際に必要とされるすべてのデータ、例えば、動画像データ、制御情報、中間結果、および、ビットストリームなどが含まれる。
【0060】
加えて、共有記憶部102には、シーケンス管理情報120と識別管理情報130とが蓄積される。シーケンス管理情報120は、s個の各シーケンスについて、プロセッサ番号121と処理状態122とを含んでいる。プロセッサ番号121は、当該シーケンスについて現在、単位処理を実行しているプロセッサの識別番号である。処理状態122は、当該シーケンスについて、現在実行されている単位処理を示す。
【0061】
識別管理情報130は、現世代番号131、世代検査値132、世代更新フラグ133、および、m個の世代情報134を含んでいる。現世代番号131は、現在の世代番号を示す。世代検査値132は、現世代番号131が有効であるか否かを検査するために使用される。世代更新フラグ133は、現世代番号131が更新されたか否かを示す。世代情報134は、m個(識別番号の個数)だけ存在する。第iの世代情報134には、値iの識別番号111がいずれかのプロセッサ101によって取得されたときの現世代番号131が設定される。
【0062】
図4は、各プロセッサ101によるメイン処理を示すフローチャートである。n個のプロセッサ101−1〜nは、いずれも、図2に示す符号化処理用プログラム32を実行することにより、図4に示すフローチャートに従って動作する。メイン処理の概要は、次のとおりである。プロセッサ101は、符号化処理開始前にプロセッサ追加処理(図5)を実行し、予め用意されたm個の識別番号から一の識別番号を取得する。その後、プロセッサ101は、次に実行すべき単位処理を選択し、選択した単位処理を実行する処理を繰り返す。すべてのシーケンスについて符号化処理を完了したときに、プロセッサ101は、プロセッサ削除処理(図6)を実行し、取得した識別番号を解放する。
【0063】
共有記憶部102に蓄積された現世代番号131は、適宜1ずつ更新される。プロセッサ101は、ある単位処理を完了した時点で現世代番号131が更新されていることを検出した場合には、自らの世代番号112を現世代番号131に合わせて更新する。現世代番号131の更新後に所定の時間経過しても、世代番号112を更新しないプロセッサ101は故障したものとして扱われ、故障したプロセッサが使用していた識別番号は解放される。
【0064】
図4に示す各ステップの詳細は、次のとおりである。プロセッサ101は、起動されると、まず、自プロセッサについて初期化処理を行う(ステップS1101)。初期化処理では、プロセッサ101は、RAM内の符号化処理用データ(図2に示す符号化処理用データ33)を初期化するなどの処理を行う。次に、プロセッサ101は、後述するプロセッサ追加処理(図5)によって識別番号111を取得する(ステップS1102)。
【0065】
次に、プロセッサ101は、取得した識別番号111が有効か否かを判断する(ステップS1103)。取得した識別番号111が有効でない場合には(ステップS1103のNO)、これ以上プロセッサを追加できないため、プロセッサ101は処理を終了する。取得した識別番号111が有効である場合には(ステップS1103のYES)、プロセッサ101は、ステップS1104へ進み、既に動作中の他のプロセッサとともに符号化処理を並列に実行する。
【0066】
次に、プロセッサ101は、所定の判断基準に従い、次の処理を選択する(ステップS1104)。すなわち、プロセッサ101は、各シーケンスに割当てられた優先度などの情報に基づき、次に処理すべきシーケンスを選択し、選択したシーケンスについて実行可能な単位処理のうち、一の単位処理を次の処理として選択する。
【0067】
次に、プロセッサ101は、次の処理が存在するか否かを判断する(ステップS1105)。次の処理が存在しない場合には(ステップS1105のNO)、すべてのシーケンスについて処理を完了したので、プロセッサ101は、後述するプロセッサ削除処理(図6)によって識別番号111を解放した後(ステップS1115)、処理を終了する。
【0068】
次の処理が存在する場合には(ステップS1105のYES)、プロセッサ101は、選択した処理を実行するために必要なデータを共有記憶部102から読み出し、自らのRAM(図2に示すRAM23)に書き込む(ステップS1106)。例えば、プロセッサ101は、選択したシーケンスについて、動画像データ、制御情報および中間結果などを、共有記憶部102から読み出して自らのRAMに書き込む。
【0069】
次に、プロセッサ101は、選択した処理を実行する(ステップS1107)。具体的には、プロセッサ101は、自らのRAM上のデータに対して、特徴抽出、シーン検出、GOP構造の決定、動きベクトル探索、仮符号化、ビット割当て、および、本符号化などの単位処理を実行し、その結果を自らのRAMに書き込む。
【0070】
次に、プロセッサ101は、求めた結果を共有記憶部102に書き込む前に、ステップS1108からS1113までの世代管理処理を実行する。世代管理処理では、プロセッサ101は、まず、識別管理情報130をロックする(ステップS1108)。次に、プロセッサ101は、現世代番号131が更新されているか否かを判断する(ステップS1109)。具体的には、プロセッサ101は、世代更新フラグ133が1であれば更新済み、それ以外の場合は未更新と判断する。現世代番号131が更新されていない場合には(ステップS1109のNO)、プロセッサ101は、直ちにステップS1113へ進む。
【0071】
現世代番号131が更新されている場合には(ステップS1109のYES)、プロセッサ101は、変数iに自らの識別番号111を代入し(ステップS1110)、自らの世代番号112が第iの世代情報134と一致するか否かを判断する(ステップS1111)。第iの世代情報134には、通常は、プロセッサ101が識別番号111を取得した際の現世代番号131が設定されており、プロセッサ101が故障した後は、0が設定されている。このため、世代番号112と第iの世代情報134とが一致した場合には(ステップS1111のYES)、プロセッサ101は、符号化処理を継続すべく、自らの世代番号112と第iの世代情報134とにいずれも現世代番号131を設定する(ステップS1112)。一方、世代番号112と第iの世代情報134とが一致しない場合には(ステップS1111のNO)、プロセッサ101は、符号化処理を停止すべく、自らの識別番号111と世代番号112とにいずれも0を設定し(ステップS1116)、識別管理情報130をアンロックした後(ステップS1117)、処理を終了する。
【0072】
符号化処理を継続する場合、プロセッサ101は、識別管理情報130をアンロックし(ステップS1113)、ステップS1107で求めた結果を自らのRAMから読み出して、共有記憶部102に書き込む(ステップS1114)。その後、プロセッサ101は、ステップS1104へ進み、再びステップS1104以降の処理を実行する。なお、ステップS1107で所定の処理を完了した後、求めた結果を共有記憶部102に書き込む前に世代管理処理を実行しているのは、故障したプロセッサによって求められた結果が共有記憶部102に書き込まれることを防止するためである。
【0073】
以下、本実施形態に係る動画像符号化装置におけるプロセッサ追加処理とプロセッサ削除処理とを説明する。図5に示すプロセッサ追加処理では、プロセッサ101は、まず、識別管理情報130をロックする(ステップS1201)。次に、プロセッサ101は、現世代番号131に対して所定の演算fを行い、求めた値と世代検査値132とを比較する(ステップS1202)。所定の演算fは、識別管理情報130が初期化されていない状態では、現世代番号131に演算fを施した結果と世代検査値132とが一致しないように決定される。例えば、演算fとして、ビットごとの否定(NOT)を用いることができる。このような演算fを選択すれば、現世代番号131に対して演算fを施した結果と世代検査値132とが一致する場合には、識別管理情報130は既に初期化されており、両者が一致しない場合には、識別管理情報130はまだ初期化されていないと判断することができる。プロセッサ101は、両者が一致する場合にはステップS1204へ、それ以外の場合はステップS1203へ進む。
【0074】
ステップS1202で両者が一致しない場合には(ステップS1202のNO)、プロセッサ101は、自プロセッサが装置全体で最初にプロセッサ追加処理を実行していると判断し、識別管理情報130を初期化する(ステップS1203)。具体的には、プロセッサ101は、現世代番号131には1を、世代検査値132には現世代番号(値は1)に演算fを施した結果を、世代更新フラグ133およびm個の世代情報134には0を、それぞれ設定する。
【0075】
次に、プロセッサ101は、ステップS1204からS1207の処理により、m個の世代情報134のうちで未使用のもの、すなわち、値が0であるものの番号を求める。より詳細に述べると、プロセッサ101は、変数iに1を設定し(ステップS1204)、第iの世代情報134が0であるか否かを調べる(ステップS1205)。第iの世代情報134が0である場合には(ステップS1205のYES)、プロセッサ101は、ステップS1208へ進む。それ以外の場合には(ステップS1205のNO)、プロセッサ101は、ステップS1206へ進み、変数iがm(識別番号の個数)未満であれば(ステップS1206のYES)、変数iに1を加算し(ステップS1207)、ステップS1205へ進む。
【0076】
未使用の世代情報134がある場合には(ステップS1205のYES)、プロセッサ101は、自らの識別番号111および世代番号112に求めた番号iおよび現世代番号131をそれぞれ設定し、第iの世代情報134に現世代番号131を設定する(ステップS1208)。未使用の世代情報134がない場合には(ステップS1206のNO)、プロセッサ101は、自らの識別番号111に0を設定する(ステップS1209)。この場合、他のプロセッサが既に番号iを識別番号として使用している可能性があるので、プロセッサ101は、第iの世代情報134には値を設定しない。
【0077】
最後に、プロセッサ101は、識別管理情報130をアンロックし(ステップS1210)、これをもってプロセッサ追加処理を完了する。上述したように、プロセッサ101は、プロセッサ追加処理で有効な識別番号を取得した場合、次の処理を選択して、選択した処理を実行する処理(図4のステップS1104からS1114の処理)を繰り返す。このようにして、有効な識別番号111を取得したプロセッサ101は、符号化装置に組み込まれる。
【0078】
図6に示すプロセッサ削除処理では、プロセッサ101は、まず、識別管理情報130をロックし(ステップS1301)、変数iに自らの識別番号111を代入する(ステップS1302)。次に、プロセッサ101は、自らの識別番号111および世代番号112、並びに、第iの世代情報134に、いずれも0を設定する(ステップS1303)。最後に、プロセッサ101は、識別管理情報130をアンロックし(ステップS1304)、これをもってプロセッサ削除処理を完了する。
【0079】
図6に示すプロセッサ削除処理または図4のステップS1116の処理により、プロセッサ101は、これまで使用していた識別番号111を解放する。このようにして、使用していた識別番号111を解放したプロセッサ101は、符号化装置から切り離される。装置から切り離されたプロセッサ101は、任意のタイミングでプロセッサ追加処理を実行し、有効な識別番号111を取得すれば、符号化装置に再び組込まれる。
【0080】
図5に示すプロセッサ追加処理、および、図6に示すプロセッサ削除処理によれば、プロセッサ101が識別管理情報130に対して排他制御を行うのは、プロセッサ追加処理またはプロセッサ削除処理を実行するときに限られる。このため、他のプロセッサが符号化処理を実行するために共有記憶部102の他のデータにアクセスしていても、プロセッサ追加/削除処理がそのアクセスを妨げることはない。したがって、各プロセッサは、他のプロセッサによる符号化処理に影響を及ぼすことなく、任意のタイミングでプロセッサ追加/削除処理を実行することができる。
【0081】
次に、世代番号を用いて、故障したプロセッサを検出する方法を説明する。図7は、本実施形態に係る動画像符号化装置における世代更新処理のフローチャートである。システム管理部103は、故障したプロセッサを装置から切り離すために、所定のコマンドが入力されたときに、あるいは、所定の時間間隔で世代更新処理を実行する。また、図4に示すフローチャートの好適な箇所に世代更新処理を呼び出すステップを挿入し、プロセッサ101が、所定の時間間隔で世代更新処理を実行してもよい。以下では、システム管理部103が世代更新処理を実行する場合を例示するが、プロセッサ101が世代更新処理を実行する場合も全く同様である。
【0082】
図7に示す世代更新処理では、システム管理部103は、まず、識別管理情報130をロックする(ステップS1401)。次に、システム管理部103は、現世代番号131に所定の演算fを施した結果と世代検査値132とを比較し、両者が一致するときはステップS1404へ、それ以外のときはステップS1403へ進む(ステップS1402)。
【0083】
両者が一致しない場合には(ステップS1402のNO)、システム管理部103は、世代番号はまだ初期化されていないと判断し、識別管理情報130を初期化し(ステップS1403)、ステップS1416へ進む。なお、図7のステップS1402およびS1403は、それぞれ、図5のステップS1202およびS1203と同じであるので、その説明を省略する。
【0084】
ステップS1402で両者が一致する場合には(ステップS1402のYES)、システム管理部103は、世代更新フラグ133が0か否かを判断する(ステップS1404)。世代更新フラグ133が0でない場合には(ステップS1404のNO)、システム管理部103は、自分以外が世代更新処理を実行中であると判断し、現世代番号131を更新することなく、ステップS1416へ進む。一方、世代更新フラグ133が0である場合には(ステップS1404のYES)、システム管理部103は、現世代番号131を更新すべく、ステップS1405へ進む。
【0085】
次に、システム管理部103は、世代更新処理を実行中であることを示すため、世代更新フラグ133に1を設定する(ステップS1405)。次に、システム管理部103は、現世代番号131に1を加算し、加算後の現世代番号131に演算fを施した結果を世代検査値132に設定する(ステップS1406)。これにより、現世代番号131は1ずつ更新され、これに伴い世代検査値132も更新される。
【0086】
次に、システム管理部103は、識別管理情報130をアンロックし(ステップS1407)、所定の時間だけ停止する(ステップS1408)。ステップS1408における所定の時間は、正常なプロセッサ101がその時間内に図4のステップS1104で選択した処理を完了できる値に設定される。このため、プロセッサ101の識別番号111をiとしたとき、システム管理部103がステップS1408に到達した時点における第iの世代情報134は、プロセッサ101が正常であれば、現世代番号131と一致する。一方、プロセッサ101が故障したために、システム管理部103がステップS1408に到達した時点で、プロセッサ101が選択した処理を完了していない場合には、第iの世代情報134は現世代番号131と一致しない。
【0087】
そこで、システム管理部103は、停止状態から動作を再開すると、識別管理情報130をロックした後(ステップS1409)、現世代番号131に一致しない各世代情報134に「データ無効」を示す値0を設定する。より詳細に述べると、システム管理部103は、変数iに1を代入し(ステップS1410)、第iの世代情報134が現世代番号131と一致しない場合には(ステップS1411のNO)、第iの世代情報134に0を設定する(ステップS1412)。次に、システム管理部103は、変数iがs(シーケンスの個数)未満である場合には(ステップS1413のYES)、変数iに1を加算して(ステップS1414)、ステップS1411へ進む。ステップS1410からS1413の処理により、自らの世代番号112を更新していないプロセッサ101があった場合、当該プロセッサ101の識別番号をiとしたとき、第iの世代情報134は0となる。プロセッサ101は、自らの世代番号112と第iの世代情報134とが一致しない場合には、取得した世代番号を解放して処理を終了する(図4のステップS1116およびS1117)。これにより、故障したプロセッサ101は、装置から切り離される。
【0088】
次に、システム管理部103は、世代更新処理を完了したことを示すため、世代更新フラグ133に0を設定する(ステップS1415)。最後に、システム管理部103は、識別管理情報130をアンロックし(ステップS1416)、これをもって世代更新処理を完了する。
【0089】
このように図7に示す世代更新処理によれば、システム管理部103またはプロセッサ101が現世代番号131を順次1ずつ更新し、現世代番号131を更新した後に所定の時間経過しても、自らの世代番号112を更新しないプロセッサ101が使用していた識別番号111は解放される。解放された識別番号は、その後に他のプロセッサ101によって使用される。したがって、符号化処理の実行中であっても、他のプロセッサ101による符号化処理に影響を与えることなく、プロセッサ101に生じた故障を検知し、故障したプロセッサ101を装置から削除することができる。
【0090】
なお、世代更新処理を行った際に、更新前の現世代番号131を有する第1のプロセッサと、更新後の現世代番号131を有する第2のプロセッサとが、同じ識別番号111を使用し、同時に符号化処理を実行する場合が考えられる。しかし、共有記憶部102は、符号化処理に必要なデータをシーケンスごとに記憶しているので、第1および第2のプロセッサは、それぞれ、共有記憶部102の異なる領域に求めた結果を書き込む。したがって、故障したプロセッサを検出するために行われる世代更新処理が、n個のプロセッサ101−1〜nによって行われる符号化処理に悪影響を与えることはない。
【0091】
以上に示すように、本実施形態に係る動画像符号化装置によれば、符号化処理の実行制御が複数のプロセッサによって分散して行われるので、符号化処理の実行制御を行う管理用のプロセッサを備える必要がなく、プロセッサ間で同期を取る必要もない。また、各プロセッサは、共有記憶部に記憶された識別管理情報に基づき識別情報の取得と解放とを行い、識別情報を有している間だけ動作する。プロセッサによる識別情報の取得と解放とは、他のプロセッサの動作とは独立して、任意のタイミングで行われる。したがって、他のプロセッサが符号化処理を実行中であっても、他のプロセッサに影響を及ぼすことなく、任意のタイミングで装置にプロセッサを追加および削除することができる。このため、プロセッサで障害が発生した場合などに、装置全体の符号化処理を中断することなく、プロセッサを保守することができる。
【0092】
(第2の実施形態)
第2の実施形態では、次処理選択処理および共有記憶部に記憶される処理状態の詳細について説明する。
【0093】
図8は、本実施形態に係る動画像符号化装置のデータ配置図である。図8において、n個のプロセッサ151−1〜nおよび共有記憶部152は、それぞれ、図1に示すプロセッサ1−1〜nおよび共有記憶部2を詳細化したものである。なお、図8では、本実施形態の特徴を説明するために必要なデータのみを示し、その他のデータについては図示を省略している。図8に示すように、各プロセッサ151には、プロセッサ識別情報161、選択シーケンス番号162、および、選択処理番号163が蓄積される。プロセッサ識別情報161は、図2に示すプロセッサ識別情報31に対応する。プロセッサ識別情報161は、各プロセッサ151に予め一意に割り当てられていてもよく、第1の実施形態で示したように、各プロセッサが動的に取得するものであってもよい。
【0094】
図8に示す動画像符号化装置では、符号化処理は複数の単位処理に分割され、各プロセッサ151は、一のシーケンスと当該シーケンスについて実行可能な単位処理とを選択して、選択した処理を実行する。選択シーケンス番号162は、プロセッサ151が選択したシーケンスの番号であり、選択処理番号163は、プロセッサ151が選択した単位処理の番号である。なお、本実施形態では、符号化処理はt個の単位処理に分割されるとする。
【0095】
図8に示すように、共有記憶部152には、s個の各シーケンスについて、第1から第sのシーケンス処理用データ180が蓄積される。本実施形態に係るシーケンス処理用データは、第1の実施形態と同じであるので、ここではその説明を省略する。
ここではその説明を省略する。
【0096】
また、共有記憶部152には、符号化処理の進行状況を監視制御するために、シーケンス管理情報170が蓄積される。シーケンス管理情報170は、s個の各シーケンスについて、現処理番号171、選択可能処理番号172、および、処理状態173を含んでいる。現処理番号171は、当該シーケンスについて現在実行されている単位処理の番号である。選択可能処理番号172は、当該シーケンスについて次のプロセッサが選択することができる単位処理の番号である。現処理番号171および選択可能処理番号172は、いずれも1からt(単位処理の個数)までのいずれかの値を取る。
【0097】
処理状態173は、各単位処理について、プロセッサ番号174、開始フラグ175、終了フラグ176、および、エラーフラグ177を含んでいる。各データの第jの要素について述べると、プロセッサ番号174は、第jの単位処理を実行するプロセッサ151のプロセッサ識別情報161である。開始フラグ175は、第jの単位処理が開始されるまでは0、開始後は1となる。終了フラグ176は、第jの単位処理が終了するまでは0、終了後は1となる。エラーフラグ177は、第jの単位処理でエラーが発生するまでは0、エラー発生後は1となる。これらのデータは、後述するように、いずれもプロセッサ151によって更新される。
【0098】
図9は、各プロセッサ151によるメイン処理を示すフローチャートである。n個のプロセッサ151−1〜nは、いずれも、図2に示す符号化処理用プログラム32を実行することにより、図9に示すフローチャートに従って動作する。図9に示すメイン処理は、第1の実施形態(図4)とほぼ同様であるが、次処理選択処理(図10)およびシーケンス状態更新処理(図11)において、処理状態173に含まれる単位処理ごとのデータを更新することを特徴とする。具体的には、プロセッサ151は、次処理選択処理では、プロセッサ番号174に自らのプロセッサ識別情報161を設定するとともに、開始フラグ175を1に設定し、シーケンス状態更新処理では、終了フラグ176を1に設定するとともに、故障発生時にはエラーフラグ177に1を設定する。
【0099】
図9に示す各ステップの詳細は、次のとおりである。なお、図9のステップS1501、S1504、S1505およびS1506は、それぞれ、図4のステップS1101、S1106、S1107およびS1114と同じであるので、その説明を省略する。プロセッサ151は、起動されると、まず、自プロセッサについて初期化処理を行う(ステップS1501)。次に、プロセッサ151は、後述する次処理選択処理(図10)を実行し、自らの選択シーケンス番号162および選択処理番号163、並びに、シーケンス管理情報170を更新する(ステップS1502)。
【0100】
次に、プロセッサ151は、次の処理が存在するか否かを判断する(ステップS1503)。次の処理が存在しない場合には(ステップS1503のNO)、すべてのシーケンスについて処理を完了したので、プロセッサ151は処理を終了する。次の処理が存在する場合には(ステップS1503のYES)、プロセッサ151は、必要なデータを共有記憶部102から読み出し(ステップS1504)、選択した処理を実行し(ステップS1505)、求めた結果を共有記憶部102に書き込む(ステップS1506)。
【0101】
次に、プロセッサ151は、後述するシーケンス状態更新処理(図11)を実行し、ステップS1505における処理結果に応じてシーケンス管理情報170を更新する(ステップS1507)。その後、プロセッサ151は、ステップS1502へ進み、ステップS1502からS1507の処理を繰り返し実行する。
【0102】
以下、本実施形態に係る動画像符号化装置における次処理選択処理とシーケンス状態更新処理とを説明する。図10に示す次処理選択処理では、プロセッサ151は、まず、シーケンス管理情報170をロックする(ステップS1601)。なお、シーケンス管理情報170がロックされていても、他のプロセッサは、シーケンス処理用データ180に対して自由にアクセスできる。
【0103】
次に、プロセッサ151は、ステップS1602からS1607の処理により、s個のシーケンスのうちから一のシーケンスを選択する。より詳細に述べると、プロセッサ151は、変数iに1を代入し(ステップS1602)、第iのシーケンスについて現処理番号171と選択可能処理番号172とを比較する(ステップS1603)。両者が一致する場合には(ステップS1603のYES)、第iのシーケンスについて選択可能な処理が存在しないため、プロセッサ151は、次のシーケンスを調べる。すなわち、プロセッサ151は、変数iがs(シーケンスの個数)未満であれば(ステップS1604のYES)、変数iに1を加算し(ステップS1605)、ステップS1603へ進む。
【0104】
ステップS1604で変数iがs以上となったときには(ステップS1604のNO)、いずれのシーケンスについても選択可能な処理が存在しないため、プロセッサ151は、シーケンス管理情報170を一旦アンロックし(ステップS1606)、所定の時間だけ停止した後(ステップS1607)、ステップS1601へ進む。このように、実行すべき処理は残っているが、その時点でいずれのシーケンスについても選択可能な処理が存在しない場合には、プロセッサ151は、所定の時間だけ待機した後に、選択可能な処理を再び探索する。
【0105】
ステップS1603において、現処理番号171が選択可能処理番号172と異なる場合には(ステップS1603のNO)、プロセッサ151は、第iのシーケンスについて現在実行されている単位処理の次の単位処理を、次に実行すべき処理として選択する。このため、プロセッサ151は、第iのシーケンスの現処理番号171に1を加算し(ステップS1608)、変数jに加算後の現処理番号171を代入する(ステップS1609)。次に、プロセッサ151は、自らの選択シーケンス番号162および選択処理番号163に、それぞれ、求めたiおよびjの値を設定する(ステップS1610)。次に、プロセッサ151は、第iのシーケンスの第jの単位処理について、プロセッサ番号174にプロセッサ識別情報161を、開始フラグ175に1を、終了フラグ176およびエラーフラグ177に0を、それぞれ設定する(ステップS1611)。最後に、プロセッサ151は、シーケンス管理情報170をアンロックし(ステップS1612)、これをもって次処選択処理を完了する。
【0106】
図11に示すシーケンス状態更新処理では、プロセッサ151は、まず、シーケンス管理情報170をロックし(ステップS1701)、変数iおよびjに自らの選択シーケンス番号162および選択処理番号163をそれぞれ代入する(ステップS1702)。次に、プロセッサ151は、第iのシーケンスの第jの単位処理について、終了フラグ176に1を、エラーフラグ177には故障発生状況に応じて0または1を、それぞれ設定する(ステップS1703)。
【0107】
次に、プロセッサ151は、第iのシーケンスの選択可能処理番号172を更新する(ステップS1704)。具体的には、第iのシーケンスについて第jの単位処理の実行が完了したことによって新たに選択可能となった単位処理の番号が、第iのシーケンスの選択可能処理番号172に設定される。
【0108】
次に、プロセッサ151は、第iのシーケンスについて処理完了を待機している他のプロセッサに対して、処理終了を通知する(ステップS1705)。これにより、第iのシーケンスについて処理完了を待機している他のプロセッサは、符号化処理を再開する。最後に、プロセッサ151は、シーケンス管理情報170をアンロックし(ステップS1706)、これをもってシーケンス状態更新処理を完了する。
【0109】
図12は、本実施形態に係る動画像符号化装置の各プロセッサが動作する様子を示すタイムチャートである。ここでは、説明を簡略化するために、5個のプロセッサを用いて6個のシーケンスを符号化するものとする。また、各シーケンスに対する符号化処理は、前処理および本符号化の2種類の単位処理からなり、すべてのシーケンスについて前処理を完了した後に、各シーケンスについて本符号化を行うものとする。
【0110】
図12において、5個のプロセッサは、時刻t0以降の任意の時刻でそれぞれ独立に動作を開始し、第4のプロセッサが、時刻t1に初期化処理を最も早く完了したとする。第4のプロセッサは、時刻t1からt2までの間に次処理選択処理を行い、次に実行すべき処理として前処理を選択する。その後、第2、第1、第3、第5の各プロセッサが、初期化処理を完了し、次処理選択処理により第1から第4のシーケンスの本符号化を順次選択する。第2、第1、第3、第5の各プロセッサは、次の処理を選択した後、第4のプロセッサによる前処理が完了するまで待機する。
【0111】
前処理を選択した第4のプロセッサは、各シーケンスについて前処理を完了するごとに、当該シーケンスに対する処理完了を待機していたプロセッサに対して、処理完了を通知する。例えば、第1のシーケンスに対する処理完了を待機していた第2のプロセッサは、第4のプロセッサから処理完了の通知を受けると、第1のシーケンスに対する本符号化を開始する。第1、第3、第5の各プロセッサについても同様である。第4のプロセッサは、時刻t3で第1から第6のシーケンスについて前処理を完了すると、時刻t3からt4までの間に次処理選択処理を行い、第5のシーケンスの本符号化を選択する。時刻t4以降、第4のプロセッサは、第5のシーケンスの本符号化を実行する。
【0112】
以上に示すように、本実施形態に係る動画像符号化装置によれば、共有記憶部には、各シーケンスの各単位処理について、処理を実行したプロセッサの識別情報と、処理の開始、終了およびエラーを示すフラグとを含んだ処理状態が記憶され、各プロセッサは、次処理選択処理およびシーケンス状態更新処理において処理状態を更新する。したがって、符号化処理の実行中または実行後に、共有記憶部に記憶された処理状態に基づき、プロセッサの故障を検出することができる。
【0113】
なお、第1および第2の実施形態では、各プロセッサは、共有記憶部から必要なデータを読み出し、RAM上のデータを用いて所定の処理を実行し、求めた結果を共有記憶部に書き込んでいる(図4、図9)。したがって、各プロセッサに含まれるRAMは、データキャッシュとして動作していると言える。このようにRAMをデータキャッシュとして用いることにより、共有記憶部に対するアクセスが減少し、各プロセッサにおけるデータ待ち時間が短縮されるので、動画像符号化装置の性能を向上させることができる。
【0114】
(第3の実施形態)
本発明の第3の実施形態に係る動画像符号化装置は、符号化処理中に符号化処理の内容を切り替え、追加および変更することを特徴とする。具体的には、共有記憶部には、プログラムコードとプログラム管理情報とが記憶され、各プロセッサは、自らのRAMに記憶されたプログラムを実行中にプログラム管理情報を参照し、必要に応じてプログラム更新処理を実行する。
【0115】
図13は、本実施形態に係る動画像符号化装置のデータ配置図である。図13において、n個のプロセッサ201−1〜nおよび共有記憶部202は、それぞれ、図1に示すプロセッサ1−1〜nおよび共有記憶部2を詳細化したものであり、システム管理部203は、図1に示すシステム管理部3に対応する。なお、図13では、本実施形態の特徴を説明するために必要なデータのみを示し、その他のデータについては図示を省略している。図13に示すように、共有記憶部202には、s個の各シーケンスについて、処理状態240とシーケンス処理用データ250とが蓄積される。第iの処理状態240は、第iのシーケンスの処理状態を示す。第iのシーケンス処理用データ250には、第iのシーケンスを符号化する際に必要とされるすべてのデータ、例えば、動画像データ、制御情報、中間結果、および、ビットストリームなどが含まれる。
【0116】
加えて、共有記憶部202には、プロセッサ201にダウンロードすべきp個のプログラムが蓄積される。具体的には、共有記憶部202には、異なる機能をサポートするp個の各プログラムについて、プログラム管理情報220とプログラムコード231とが蓄積される。プログラムコード231は、プロセッサ201にダウンロードされるプログラムコード自体である。プロセッサ201は、後述するように(図18)、p個のプログラムコード231のうちから選択した一のプログラムコードを、共有記憶部202から自らのRAM(図2に示すRAM23)にダウンロードする。ダウンロードされたプログラムコードは、図13に示す符号化処理用プログラム211となる。従前の符号化処理用プログラム211に従って動作していたプロセッサ201は、符号化処理用プログラム211が更新された後は、再起動することなく、更新後の符号化処理用プログラム211に従って動作する。
【0117】
プログラム管理情報220は、共有記憶部202に蓄積されたプログラムを管理するために使用される。図14は、1つのプログラムについてのプログラム管理情報220に含まれるデータの詳細を示す図である。図14に示すように、プログラム管理情報220は、プログラム更新情報260、プログラムコード情報270、および、プログラム機能情報280を含んでいる。
【0118】
プログラム更新情報260は、有効フラグ261、更新フラグ262、削除フラグ263、および、ダウンロード数264を含んでおり、プログラムの登録、更新およびダウンロードの管理に使用される。有効フラグ261は、このプログラムが有効である間は1となる。更新フラグ262は、このプログラムが更新されている間は1となる。削除フラグ263は、このプログラムが削除されている間は1となる。ダウンロード数264は、このプログラムを現在ダウンロードしているプロセッサの個数を示す。
【0119】
プログラムコード情報270は、プログラム名271、先頭アドレス272、および、プログラムサイズ273を含んでおり、プログラムをダウンロードする際に参照される。プログラム名271は、このプログラムの名称を示す。先頭アドレス272は、このプログラムのプログラムコード231が格納されている共有記憶部202の先頭アドレスを示す。プログラムサイズ273は、このプログラムのプログラムコード231の大きさを示す。
【0120】
プログラム機能情報280は、項目数281、および、a個の機能情報282を含んでいる。項目数281は、機能情報282の個数を示す。a個の機能情報282は、共有記憶部202に蓄積されたp個のプログラムの機能をa個に分類したときに、このプログラムがa個の各機能について、どのレベルの機能をサポートしているかを示す。ただし、プログラムがある機能をサポートしていないときには、当該機能に対応した機能情報282は0とする。
【0121】
例えば、a個の機能のうち、第1の機能がフェード機能(フェードする画像に対する機能)で、第2の処理が動きベクトル探索機能であるとする。また、各プログラムは、フェード機能をサポートするか否かのいずれかであり、動きベクトル探索機能については第1ないし第4の探索手法のいずれかをサポートするか、いずれの探索手法もサポートしないかのいずれかであるとする。この場合、フェード機能をサポートしていないプログラムの第1の機能情報は0となり、フェード機能をサポートしているプログラムの第1の機能情報は1となる。また、動きベクトル探索機能をサポートしていないプログラムの第2の機能情報は0となり、動きベクトル探索機能をサポートしているプログラムの第2の機能情報は1ないし4のいずれかの値となる。
【0122】
以下、本実施形態に係る動画像符号化装置における符号化処理について説明する。動画像データをMPEGに準拠して符号化するには、シーケンス層、GOP層、ピクチャ層、スライス層、マクロブロック層、および、ブロック層の各階層において、それぞれ所定の処理を行う必要がある。符号化処理を図15に示すように階層的に分類した場合、ある階層に含まれる処理の全部または一部を終了すれば、それ以下の階層における処理を並列に実行することができる。例えば、スライスヘッダ生成処理を終了した後は、当該スライスに含まれるすべてのマクロブロックについてマクロブロック符号化処理を並列に実行することができる。したがって、例えば、図15の右欄に示す各処理をそれぞれ、上述した単位処理としてもよい。あるいは、処理速度の向上を図るため、ピクチャ層以下の処理(ピクチャヘッダ生成、スライスヘッダ生成、および、マクロブロック符号化)をまとめて1つの単位処理としてもよい。
【0123】
図16は、各プロセッサ201によるメイン処理を示すフローチャートである。n個のプロセッサ201−1〜nは、いずれも、図2に示す符号化処理用プログラム32を実行することにより、図16に示すフローチャートに従って動作する。各プロセッサ201は、図16に示すように、次に実行すべき処理を選択し、必要に応じて自らの符号化処理用プログラム211を更新した後に、選択した処理を実行する。
【0124】
図16に示す各ステップの詳細は、次のとおりである。プロセッサ201は、起動されると、まず、初期化処理を行う(ステップS2101)。初期化処理では、プロセッサ201は、RAM内の符号化処理用データ(図2に示す符号化処理用データ33)を初期化するなどの処理を行う。次に、プロセッサ201は、後述する次処理選択処理(図17)によって、次に実行すべき処理を選択する(ステップS2102)。ステップS2102では、プロセッサ201は、次に処理すべきシーケンスおよびGOPを選択し、選択したGOPについて実行可能な処理のうち、一の単位処理を選択する。以下、ステップS2102で選択された処理を「次処理」という。
【0125】
次に、プロセッサ201は、現在実行中のプログラムがサポートしている機能と、次処理を実行するために必要な機能とを比較する。具体的には、プロセッサ201は、変数aに現在実行中のプログラムの項目数を、変数bに次処理の項目数を、配列型の変数Xに現在実行中のプログラムのa個の機能情報を、配列型の変数Yに次処理のb個の機能情報をそれぞれ代入し(ステップS2103)、後述する機能情報比較処理(図19)を実行する(ステップS2104)。なお、プロセッサ201は、共有記憶部202から自らのRAMに現在実行中のプログラムのプログラム機能情報280を複写した上で、複写したプログラム機能情報から現在実行中のプログラムの項目数および機能情報を求め、次処理選択処理では、次処理を実行するために必要な機能に関する情報(項目数および機能情報)をプログラム機能情報280と同じ形式で求めるものとする。
【0126】
次に、プロセッサ201は、機能情報比較処理で2つの機能情報が一致したか否かを判断する(ステップS2105)。両者が一致した場合には(ステップS2105のYES)、プロセッサ201はステップS2107へ進む。両者が一致しない場合には(ステップS2105のNO)、プロセッサ201は、後述するプロセッサプログラム更新処理(図18)を実行した後(ステップS2106)、ステップS2107へ進む。
【0127】
次に、プロセッサ201は、ステップS2102で選択した処理を実行する(ステップS2107)。より詳細には、プロセッサ201は、必要なデータを共有記憶部202から読み出して自らのRAMに書き込み、自らのRAM内のデータに対して選択した処理を実行し、その結果を自らのRAMから読み出して共有記憶部202に書き込む。次に、プロセッサ201は、すべての符号化処理を終了したか否かを判断し(ステップS2108)、すべての符号化処理を終了した場合には(ステップS2108のYES)、処理を終了する。一方、処理がまだ残っている場合には(ステップS2108のNO)、プロセッサ201は、ステップS2102へ進み、符号化処理を継続する。
【0128】
図17は、次処理選択処理のフローチャートである。次処理選択処理では、プロセッサ201は、まず、変数Sに直前に処理したシーケンスの番号を、変数Gに直前に処理したGOPの番号を代入する(ステップS2201)。次に、プロセッサ201は、第Sのシーケンスに含まれる第GのGOPについて、未だ選択されていない処理を探す(ステップS2202)。
【0129】
次に、プロセッサ201は、ステップS2202で未選択の処理を検出したか否かを判断する(ステップS2203)。未選択の処理があった場合には(ステップS2203のYES)、プロセッサ201は、その処理を次に実行すべき処理として選択し、次処理選択処理を終了する。
【0130】
一方、未選択の処理がない場合には(ステップS2203のNO)、プロセッサ201は、ステップS2204へ進み、次のGOPについて未だ選択されていない処理を探すため、変数SおよびGを更新する。より詳細には、以下のとおりである。プロセッサ201は、変数Gに1を加算し(ステップS2204)、変数Gが第SのシーケンスのGOP数以下である場合には(ステップS2205のYES)、ステップS2202へ進む。変数Gが第SのシーケンスのGOP数より大きい場合には(ステップS2205のNO)、プロセッサ201は、変数Sに1を加算し、変数Gに0を代入する(ステップS2206)。次に、プロセッサ201は、変数Sがシーケンス数以下である場合には(ステップS2207のYES)、ステップS2202へ進む。変数Sがシーケンス数より大きい場合には(ステップS2207のNO)、プロセッサ201は、すべての符号化処理を終了したか否かを判断する(ステップS2208)。すべての符号化処理を終了した場合には(ステップS2208のYES)、プロセッサ201は、次に実行すべき処理を選択することなく、次処理選択処理を終了する。実行すべき処理がまだ残っている場合には(ステップS2208のNO)、プロセッサ201は、変数Sに1を、変数Gに0を代入し(ステップS2209)、ステップS2202へ進む。
【0131】
図18は、プロセッサプログラム更新処理のフローチャートである。この処理では、プロセッサ201は、まず、プログラム管理情報220をロックし(ステップS2301)、変数iに1を代入する(ステップS2302)。
【0132】
次に、プロセッサ201は、ステップS2303からS2307の処理により、共有記憶部202に蓄積されたp個のプログラムから、次処理を実行するための機能をサポートしているプログラムを探す。具体的には、プロセッサ201は、第iのプログラムが有効でない場合(ステップS2303のNO)、または、第iのプログラムの機能と次処理を実行するために必要な機能とが一致しない場合には(ステップS2306のNO)、変数iに1を加算し(ステップS2307)、ステップS2303へ進む。一方、プロセッサ201は、第iのプログラムが有効で(ステップS2303のYES)、かつ、第iのプログラムの機能と次処理を実行するために必要な機能とが一致する場合には(ステップS2306のYES)、ステップS2308へ進む。
【0133】
なお、ステップS2303で第iのプログラムが有効であると判断されるのは、第iのプログラムの有効フラグ261が1で、更新フラグ262および削除フラグ263がともに0である場合である。また、ステップS2304からS2306の処理は、ステップS2103からS2105の処理(図16)において、比較対象のプログラムを現在実行中のプログラムから第iのプログラムに変更したものである。
【0134】
プロセッサ201がステップS2308に到達した時点で、変数iは、プロセッサ201にダウンロードすべきプログラムの番号となっている。そこで、プロセッサ201は、第iのプログラムのダウンロード数264に1を加算し(ステップS2308)、プログラム管理情報220を一旦アンロックした後(ステップS2309)、第iのプログラムのプログラムコード231を自らのRAMにダウンロードする(ステップS2310)。
【0135】
次に、プロセッサ201は、第iのプログラムのダウンロード数264から1を減算した後に(ステップS2312)、再初期化することなく、ダウンロードしたプログラムに制御を移す(ステップS2314)。なお、プロセッサ201は、ダウンロード数264から1を減算する際には、事前にプログラム管理情報220をロックし(ステップS2311)、事後にプログラム管理情報220をアンロックする(ステップS2313)。プロセッサ201は、これをもってプロセッサプログラム更新処理を完了する。
【0136】
図19は、機能情報比較処理のフローチャートである。機能情報比較処理は、図16のステップS2104、および、図18のステップS2305から呼び出される。この処理が呼び出される時点では、変数aには比較対象となるプログラムの項目数が、変数bには次処理の項目数が、配列型の変数Xには比較対象のプログラムのa個の機能情報が、配列型の変数Yには次処理のb個の機能情報が、それぞれ、設定されている。ただし、次処理を実行するために特定の機能をサポートする必要がない場合には、当該機能に対応した機能情報には0が設定されているものとする。
【0137】
機能情報比較処理では、プロセッサ201は、まず、変数iに1を代入する(ステップS2401)。次に、プロセッサ201は、ステップS2402からS2405の処理により、第1から第aの機能情報に不一致があるか否かを調べる。より詳細には、プロセッサ201は、変数Yのi番目の要素Y[i]が0でなく(ステップS2402のYES)、かつ、変数Xのi番目の要素X[i]とY[i]とが一致しない場合には(ステップS2403のYES)、ステップS2411へ進む。一方、プロセッサ201は、Y[i]が0である場合(ステップS2402のNO)、または、X[i]とY[i]とが一致する場合には(ステップS2403のNO)、ステップS2404へ進む。この場合、プロセッサ201は、変数iに1を加算し(ステップS2404)、変数iがa(比較対象となるプログラムの項目数)以下の場合はステップS2402へ、それ以外の場合はステップS2406へ進む。
【0138】
次に、プロセッサ201は、変数aと変数bとを比較し(ステップS2406)、aがbより小さい場合はステップS2407へ、それ以外の場合はステップS2410へ進む。前者の場合、プロセッサ201は、ステップS2407からS2409の処理により、変数Yの第(a+1)から第bの要素に0以外の要素があるか否かを調べる。より詳細には、プロセッサ201は、Y[i]が0でない場合には(ステップS2407のYES)、ステップS2411へ進む。一方、プロセッサ201は、Y[i]が0である場合には(ステップS2407のNO)、変数iに1を加算し(ステップS2408)、変数iがb(次処理の項目数)以下の場合はステップS2407へ、それ以外の場合はステップS2410へ進む。
【0139】
プロセッサ201は、ステップS2410に到達した場合には、比較対象のプログラムの機能と次処理に必要とされる機能とが一致すると判断し、ステップS2411に到達した場合には、両者は一致しないと判断する。プロセッサ201は、上記の判断を行った後、機能情報比較処理を終了する。
【0140】
図19に示す機能情報比較処理によれば、項目数が同じ場合は当然のこと、項目数が異なる場合でも、2つの機能情報を比較することができる。なお、図19の処理では、X[i]とY[i]とが異なる場合に2つの機能情報は一致しないと判断したが、これに代えて、例えば、Y[i]がX[i]より大きい場合に、2つの機能情報は一致しないと判断してもよい。
【0141】
次に、本実施形態に係る動画像符号化装置において、共有記憶部202にプログラムを登録、削除および更新する方法を説明する。共有記憶部202に対するこれらの操作は、システム管理部203によって行われる。システム管理部203は、入力されたコマンドに従い、以下に示すプログラム登録処理(図20)、プログラム削除処理(図21)、および、プログラム更新処理(図22)を実行する。図20から図22に示す処理は、プロセッサ201が符号化処理を実行している間も含めて、任意のタイミングで実行される。
【0142】
図20は、プログラム登録処理のフローチャートである。プログラム登録処理では、システム管理部203は、まず、プログラム管理情報220をロックし(ステップS2501)、変数iに1を代入する(ステップS2502)。次に、システム管理部203は、ステップS2503からS2505の処理により、有効フラグ261が0であるプログラム管理情報220を求める。より詳細には、システム管理部203は、第iの有効フラグ261が0でなく(ステップS2503のNO)、かつ、変数iがp(プログラムの個数)未満である場合には(ステップS2504のYES)、変数iに1を加算し(ステップS2505)、ステップS2503へ進む。また、システム管理部203は、第iの有効フラグ261が0でなく(ステップS2503のNO)、かつ、変数iがp以上である場合には(ステップS2504のNO)、ステップS2514へ進む。
【0143】
システム管理部203は、第iの有効フラグ261が0である場合には(ステップS2503のYES)、共有記憶部202内にプログラムコードを配置するための領域を確保する(ステップS2506)。システム管理部203は、領域の確保に失敗した場合には(ステップS2507のNO)、ステップS2514へ進む。
【0144】
システム管理部203は、領域の確保に成功した場合には(ステップS2507のYES)、第iの有効フラグ261および更新フラグ262をいずれも1に設定する(ステップS2508)。次に、システム管理部203は、プログラム管理情報220を一旦アンロックし(ステップS2509)、登録対象のプログラムのプログラムコードを共有記憶部202内に確保した領域に書き込み(ステップS2510)、登録対象のプログラムに関する情報を第iのプログラムコード情報270およびプログラム機能情報280に書き込む(ステップS2511)。
【0145】
次に、システム管理部203は、第iの更新フラグ262に0を設定する(ステップS2513)。この際、システム管理部203は、事前にプログラム管理情報220をロックし(ステップS2512)、事後にプログラム管理情報220をアンロックする(ステップS2514)。システム管理部203は、これをもってプログラム登録処理を完了する。
【0146】
図21は、プログラム削除処理のフローチャートである。プロセッサ削除処理では、システム管理部203は、まず、プログラム管理情報220をロックし(ステップS2601)、変数iに削除対象のプログラムの番号を代入する(ステップS2602)。
【0147】
次に、システム管理部203は、第iのダウンロード数264が0であるか否かを調べる(ステップS2603)。第iのダウンロード数264が0でない場合には(ステップS2603のNO)、いずれかのプロセッサ201がプロセッサプログラム更新処理(図18)により、削除対象のプログラムをダウンロードしている。そこでこの場合、システム管理部203は、指定されたプログラムを削除することなく、ステップS2610へ進む。したがって、プログラムを正しく削除するためには、システム管理部203は、プログラム削除処理を再び実行する必要がある。
【0148】
第iのダウンロード数が0である場合には(ステップS2603のYES)、システム管理部203は、第iの更新フラグ262および削除フラグ263に1を設定し(ステップS2604)、プログラム管理情報220を一旦アンロックする(ステップS2605)。次に、システム管理部203は、共有記憶部202内で第iのプログラムのプログラムコード231を配置するために使用していた領域を解放し(ステップS2606)、第iのプログラムコード情報270およびプログラム機能情報280を初期化する(ステップS2607)。
【0149】
次に、システム管理部203は、第iの有効フラグ261、更新フラグ262、および、削除フラグ263にいずれも0を設定する(ステップS2609)。この際、システム管理部203は、事前にプログラム管理情報220をロックし(ステップS2608)、事後にプログラム管理情報220をアンロックする(ステップS2610)。システム管理部203は、これをもってプログラム削除処理を完了する。
【0150】
図22は、プログラム更新処理のフローチャートである。このプログラム更新処理は、プログラム登録処理とプログラム削除処理と1つの処理で行うものである。プログラム更新処理では、システム管理部203は、まず、プログラム管理情報220をロックし(ステップS2701)、変数iに更新対象のプログラムの番号を代入する(ステップS2702)。
【0151】
次に、システム管理部203は、第iのダウンロード数264が0であるか否かを調べる(ステップS2703)。第iのダウンロード数264が0でない場合には(ステップS2703のNO)、いずれかのプロセッサ201がプロセッサプログラム更新処理(図18)により、更新対象のプログラムをダウンロードしている。この場合、システム管理部203は、指定されたプログラムを更新することなく、ステップS2713へ進む。したがって、プログラムを正しく更新するためには、システム管理部203は、プログラム更新処理を再び実行する必要がある。
【0152】
第iのダウンロード数が0である場合には(ステップS2703のYES)、システム管理部203は、共有記憶部202内にプログラムコードを配置するための領域を確保する(ステップS2704)。システム管理部203は、領域の確保に失敗した場合には(ステップS2705のNO)、ステップS2713へ進む。
【0153】
システム管理部203は、領域の確保に成功した場合には(ステップS2705のYES)、第iの更新フラグ262を1に設定する(ステップS2706)。次に、システム管理部203は、プログラム管理情報220を一旦アンロックし(ステップS2707)、共有記憶部202内で第iのプログラムのプログラムコード231を配置するために使用していた領域を解放する(ステップS2708)。次に、システム管理部203は、登録対象のプログラムのプログラムコードを共有記憶部202内に新たに確保した領域に書き込み(ステップS2709)、登録対象のプログラムに関する情報を用いて第iのプログラムコード情報270およびプログラム機能情報280を更新する(ステップS2710)。
【0154】
次に、システム管理部203は、第iの更新フラグ262に0を設定する(ステップS2712)。この際、システム管理部203は、事前にプログラム管理情報220をロックし(ステップS2711)、事後にプログラム管理情報220をアンロックする(ステップS2713)。システム管理部203は、これをもってプログラム更新処理を完了する。
【0155】
図20ないし図22に示すように、システム管理部203は、排他制御を行った上でプログラム管理情報220にアクセスする。また、図18に示すように、プロセッサ201も、排他制御を行った上でプログラム管理情報220にアクセスする。このようにプログラムコード231と分離してプログラム管理情報220に対する排他制御を行うことにより、複数のプロセッサが同時に共有記憶部202からプログラムをダウンロードすることができる。
【0156】
本実施形態に係る動画像符号化装置において、プロセッサ201が次処理を実行するためのプログラムを共有記憶部202から読み出して実行する一例を説明する。以下では、次のような状況を仮定する。動画像符号化装置のa個の機能のうち、第1の機能はフェード機能であるとし、共有記憶部202に蓄積されたp個のプログラムのうち、第8のプログラムのみがフェード機能をサポートしているものとする。また、共有記憶部202に蓄積されたs個のシーケンスについては、第4のシーケンスでは画像はフェードせず、第5のシーケンスでは画像がフェードするものとする。さらに、第3のプロセッサは、第7のプログラムを用いて、第4のシーケンスに関する処理(例えば、マクロブロック符号化処理)を完了し、次処理として第5のシーケンスに関する処理を選択したとする。
【0157】
この場合、第3のプロセッサが使用している第7のプログラムは、フェード機能をサポートしていないので、第4のシーケンスを処理できない。そこで、第3のプロセッサは、共有記憶部202に蓄積されたp個のプログラムから第8のプログラムを選択し、第8のプログラムのプログラムコード231を共有記憶部202から自らのRAMにダウンロードする。その後、第3のプロセッサは、ダウンロードした第8のプログラムに従って、第4のシーケンスに対してフェード機能を含んだ動画像符号化処理を実行する。
【0158】
以上に示すように、本実施形態に係る動画像符号化装置によれば、各プロセッサは、共有記憶部に記憶された機能情報に基づき、次の処理に必要なプログラムを選択し、選択したプログラムを転送して実行する。各プロセッサにおけるプログラムの選択、転送および実行は、他のプロセッサの動作とは独立して、任意のタイミングで行われる。このため、各プロセッサは、他のプロセッサの動作に影響を及ぼすことなく、次の処理に必要なプログラムを選択し、実行することができる。したがって、実行中の符号化処理に影響を及ぼすことなく、符号化処理中に符号化処理の内容を切り替えることができる。また、符号化処理の内容を変更したり、新たな機能を追加するときでも、符号化処理を中断することなく、これらの操作を行うことができる。
【0159】
(第4の実施形態)
本発明の第4の実施形態に係る動画像符号化装置は、各プロセッサが選択した処理を実行する際に異常を検出し、異常検出時には自ら停止することを特徴とする。具体的には、各プロセッサは、選択した処理を実行したときにビットストリームを生成した場合には、生成したビットストリームのサイズやシンタックスなどを検査し、これらの検査結果に基づき、選択した処理で異常が生じたか否かを判断する。
【0160】
図23は、本実施形態に係る動画像符号化装置のデータ配置図である。図23において、n個のプロセッサ301−1〜nおよび共有記憶部302は、それぞれ、図1に示すプロセッサ1−1〜nおよび共有記憶部2を詳細化したものである。なお、図23では、本実施形態の特徴を説明するために必要なデータのみを示し、その他のデータについては図示を省略している。図23に示すように、各プロセッサ301には、プロセッサ識別情報311が蓄積され、共有記憶部302には、s個の各シーケンスについて、シーケンス管理情報320とシーケンス処理用データ330とが蓄積される。第iのシーケンス処理用データ330には、第iのシーケンスを符号化する際に必要とされるすべてのデータ、例えば、動画像データ、制御情報、中間結果、および、ビットストリームなどが含まれる。
【0161】
シーケンス管理情報320は、プロセッサ番号321、開始フラグ322、終了フラグ323、エラーフラグ324、タイムアウトフラグ325、および、カウント値326を含んでいる。プロセッサ番号321は、このシーケンスについて現在、処理を実行しているプロセッサのプロセッサ識別情報31である。開始フラグ322、終了フラグ323、エラーフラグ324、タイムアウトフラグ325、および、カウント値326は、いずれも各プロセッサ301によって設定され、各プロセッサ301から参照される。開始フラグ322は、このシーケンスに対する処理が開始されたときに1に設定される。終了フラグ323は、このシーケンスに対する処理が終了したときに1に設定される。エラーフラグ324は、このシーケンスに対する処理で異常が検出されたときに1に設定される。タイムアウトフラグ325は、このシーケンスに対する処理でタイムアウトが生じたときに1に設定される。カウント値326は、異常が生じたプロセッサを検出するために使用される。シーケンス管理情報320に含まれる各データの使用方法の詳細は後述する。
【0162】
図24は、各プロセッサ301によるメイン処理を示すフローチャートである。n個のプロセッサ301−1〜nは、いずれも、図2に示す符号化処理用プログラム32を実行することにより、図24に示すフローチャートに従って動作する。各プロセッサ301は、図24に示すように、次処理選択処理(図25)により次に実行すべき処理を選択し、選択した処理でビットストリームが生成されたときは、ビットストリーム検査処理(図26)、シーケンス管理情報更新処理(図27)、および、カウント値更新処理(図28)を実行する。
【0163】
図24に示す各ステップの詳細は、次のとおりである。プロセッサ301は、起動されると、まず、初期化処理を行う(ステップS3101)。初期化処理では、プロセッサ301は、自らのRAM内の符号化処理用データ(図2に示す符号化処理用データ33)を初期化するなどの処理を行う。次に、プロセッサ301は、後述する次処理選択処理(図25)によって、次に実行すべき処理を選択する(ステップS3102)。ステップS3102では、プロセッサ301は、次に実行すべきシーケンスおよびGOPを選択し、選択したGOPについて実行可能な処理のうち、一の単位処理を選択する。
【0164】
次に、プロセッサ301は、ステップS3102で選択した処理を実行する(ステップS3103)。より詳細には、プロセッサ301は、必要なデータを共有記憶部302から読み出して自らのRAM(図2に示すRAM23)に書き込み、RAM内のデータに対して選択した処理を実行する。加えて、プロセッサ301は、選択した処理でビットストリームが生成された場合を除き、選択した処理で求めた結果を自らのRAMから読み出して共有記憶部302に書き込む。次に、プロセッサ301は、ステップS3103の処理でビットストリームが生成された場合はステップS3105へ、それ以外の場合にはステップS3111へ進む(ステップS3104)。
【0165】
ステップS3103の処理でビットストリームが生成された場合には(ステップS3104のYES)、プロセッサ301は、後述するビットストリーム検査処理(図26)により、生成されたビットストリームが正常であるか否かを検査する(ステップS3105)。次に、プロセッサ301は、後述するシーケンス管理情報更新処理(図27)により、ビットストリーム検査処理の結果に基づき、シーケンス管理情報320を更新する(ステップS3106)。この際、プロセッサ301は、ビットストリーム検査処理で異常を検出した場合には、その旨をシーケンス管理情報320に記録する。
【0166】
次に、プロセッサ301は、ステップS3103の処理が正常終了したか否かを判断し、正常終了と判断した場合にはステップS3108へ進む(ステップS3107)。この場合、プロセッサ301は、ステップS3103で生成されたビットストリームを、共有記憶部302のシーケンス処理用データ330に書き込み(ステップS3108)、後述するカウント値更新処理(図28)を実行する(ステップS3109)。なお、ステップS3107では、ビットストリーム検査処理で異常が検出された場合に加えて、後述するように、ステップS3103の処理はタイムアウトしたと他のプロセッサが判断した場合にも、正常終了でないと判断される。
【0167】
ステップS3103の処理でビットストリームが生成されなかった場合には(ステップS3104のNO)、プロセッサ301は、ステップS3106と同じシーケンス管理情報更新処理(図27)を行い(ステップS3111)、ステップS3110へ進む。なお、ステップS3111のシーケンス管理情報更新処理では、ステップS3103の処理は常に正常終了するとして扱うものとする。
【0168】
ステップS3103の処理が正常終了したと判断した場合には、プロセッサ301は、ステップS3110に到達する。この場合、プロセッサ301は、すべての符号化処理を終了したか否かを判断する(ステップS3110)。プロセッサ301は、すべての符号化処理を終了した場合には(ステップS3110のYES)、処理を終了する。一方、処理がまだ残っている場合には(ステップS3110のNO)、プロセッサ301は、ステップS3102へ進み、符号化処理を継続する。
【0169】
ステップS3103の処理が正常終了しなかったと判断した場合には(ステップS3107のNO)、プロセッサ301は、符号化処理を継続できないと判断し、処理を終了する。この場合、プロセッサ301は、ステップS3103の処理でビットストリームが生成されていても、そのビットストリームを共有記憶部302に書き込むことなく廃棄する。このように異常を検出して自ら停止したプロセッサ301は、保守点検などの作業を終え、ユーザから再起動の指示があるまで停止し続ける。
【0170】
図25は、次処理選択処理のフローチャートである。プロセッサ301は、図25に示すように、共有記憶部302に記憶されたs個のシーケンスから次に処理すべきシーケンスを選択し、選択したシーケンスのシーケンス管理情報320を初期化した上で、選択したシーケンスに対して実行可能な複数の処理から次に実行すべき処理を選択する。図25に示す処理は、他のプロセッサが実行した際に異常やタイムアウトが生じた処理(エラーフラグ324またはタイムアウトフラグ325が1である処理)を優先的に選択することを特徴とする。
【0171】
図25に示す各ステップの詳細は、次のとおりである。次処理選択処理では、プロセッサ301は、まず、シーケンス管理情報320をロックし(ステップS3201)、変数iに1を代入する(ステップS3202)。
【0172】
次に、プロセッサ301は、ステップS3203からS3205の処理により、s個の要素を有するシーケンス管理情報320から、エラーフラグ324またはタイムアウトフラグ325が1である要素を探す。より詳細には、プロセッサ301は、第iのエラーフラグ324または第iのタイムアウトフラグ325が1である場合には(ステップS3203のYES)、ステップS3211へ進む。この場合、第iのシーケンスに対する処理が、次に実行すべき処理として選択される。また、第iのエラーフラグ324と第iのタイムアウトフラグ325とがともに0であり(ステップS3203のNO)、かつ、変数iがs(シーケンスの個数)未満である場合には(ステップS3204のYES)、プロセッサ301は、変数iに1を加算して(ステップS3205)、ステップS3203へ進む。
【0173】
第iのエラーフラグ324と第iのタイムアウトフラグ325とがともに0であり(ステップS3203のNO)、かつ、変数iがs以上である場合には(ステップS3204のNO)、プロセッサ301は、ステップS3206へ進む。この場合、プロセッサ301は、変数iに1を代入した後(ステップS3206)、ステップS3207からS3209の処理により、s個の要素を有するシーケンス管理情報320から、開始フラグ322が0である要素を探す。より詳細には、プロセッサ301は、第iの開始フラグ322が1である場合には(ステップS3207のYES)、ステップS3211へ進む。この場合、第iのシーケンスに対する処理が、次に実行すべき処理として選択される。また、第iの開始フラグ322が1であり(ステップS3207のNO)、かつ、変数iがs(シーケンスの個数)未満である場合には(ステップS3208のYES)、プロセッサ301は、変数iに1を加算して(ステップS3209)、ステップS3207へ進む。
【0174】
第iの開始フラグ322が1であり(ステップS3207のNO)、かつ、変数iがs以上である場合には(ステップS3208のNO)、プロセッサ301は、ステップS3210へ進む。この場合、プロセッサ301は、次に実行すべき処理は存在しないと判断し、変数iに「次処理なし」を示す0を代入した後(ステップS3210)、ステップS3213へ進む。
【0175】
ステップS3203またはS3207において次に処理すべきシーケンスを選択した場合、プロセッサ301は、第iのシーケンス管理情報320を初期化する(ステップS3211)。すなわち、プロセッサ301は、第iのシーケンス管理情報320に対して、プロセッサ番号321に自らのプロセッサ識別情報31を、開始フラグ322に1を、終了フラグ323、エラーフラグ324、タイムアウトフラグ325、および、カウント値326にいずれも0を、それぞれ設定する。次に、プロセッサ301は、その時点で第iのシーケンスに対して実行可能な単位処理のうちから一の単位処理を、次に実行すべき処理として選択する(ステップS3212)。次に、プロセッサ301は、シーケンス管理情報320をアンロックし(ステップS3213)、これをもって次処理選択処理を完了する。
【0176】
図25に示す次処理選択処理では、エラーフラグ324またはタイムアウトフラグ325が1であるシーケンスおよび処理、すなわち、他のプロセッサが実行した際に異常が生じた処理が、優先的に選択される。そのような処理が存在しない場合には、開始フラグ322が0であるシーケンスおよび処理、すなわち、他のプロセッサによって実行されていない処理が選択される。このように異常が生じた処理を早期に実行することにより、動画像符号化処理を安全かつ確実に実行することができる。
【0177】
図26は、ビットストリーム検査処理のフローチャートである。ビットストリーム検査処理では、プロセッサ301は、まず、ステップS3103で生成されたビットストリームのサイズ(符号量)が所定の範囲内であるか否かを調べる。より詳細には、プロセッサ301は、符号量が所定の最大値以下で(ステップS3301のYES)、かつ、符号量が所定の最小値以上である場合には(ステップS3302のYES)ステップS3303へ、それ以外の場合はステップS3306へ進む。
【0178】
次に、プロセッサ301は、ステップS3103で生成されたビットストリームの詳細なシンタックス検査を行う(ステップS3303)。次に、プロセッサ301は、生成されたビットストリームがシンタックス検査を通過したと判断した場合にはステップS3305へ、それ以外の場合はステップS3306へ進む(ステップS3304)。
【0179】
プロセッサ301は、生成されたビットストリームが上記3つの検査をいずれも通過した場合には、ビットストリームは正常で、ステップS3103の処理は正常終了したと判断する(ステップS3305)。これに対し、生成されたビットストリームが上記3つの検査のいずれかを通過しなかった場合には、プロセッサ301は、ビットストリームは異常で、ステップS3103の処理は異常終了したと判断する(ステップS3306)。プロセッサ301は、S3305またはS3306のいずれかで上記判断を行った後、ビットストリーム検査処理を完了する。
【0180】
図27は、シーケンス管理情報更新処理のフローチャートである。シーケンス管理情報更新処理では、プロセッサ301は、まず、シーケンス管理情報320をロックし(ステップS3401)、変数iにステップS3103で処理したシーケンスのシーケンス番号を代入する(ステップS3402)。
【0181】
次に、プロセッサ301は、ステップS3403およびS3404の処理により、自分が処理したシーケンスを他のプロセッサが処理していないことを確認する。より詳細には、プロセッサ301は、第iのプロセッサ番号321が自らのプロセッサ識別情報311と一致し(ステップS3403のYES)、かつ、第iのタイムアウトフラグ325が0である場合には(ステップS3404のYES)ステップS3405へ、それ以外の場合はステップS3408へ進む。
【0182】
前者の場合には、プロセッサ301は、ステップS3103の処理の実行結果に応じて、第iのシーケンス管理情報320を更新する。より詳細には、プロセッサ301は、ステップS3103の処理が正常終了したか否かを判断する(ステップS3405)。処理が正常終了した場合には(ステップS3405のYES)、プロセッサ301は、第iの開始フラグ322に0を、第iの終了フラグ323に1をそれぞれ設定する(ステップS3406)。処理が正常終了しなかった場合には(ステップS3405のNO)、プロセッサ301は、第iのエラーフラグ324に1を設定する(ステップS3407)。次に、プロセッサ301は、シーケンス管理情報320をアンロックし(ステップS3408)、これをもってシーケンス管理情報更新処理を完了する。
【0183】
図27に示すシーケンス管理情報更新処理によれば、選択した処理を実行した際に異常が生じた場合には、異常が生じた旨が、共有記憶部302に記憶されたシーケンス管理情報320のエラーフラグ324に記録される。エラーフラグ324は、上述した次処理選択処理(図25)において、次に実行すべき処理を選択する際に参照される。
【0184】
図28は、カウント値更新処理のフローチャートである。カウント値更新処理では、プロセッサ301は、まず、シーケンス管理情報320をロックし(ステップS3501)、変数iに1を代入する(ステップS3502)。
【0185】
次に、プロセッサ301は、ステップS3503からS3509の処理により、各シーケンスのカウント値326を更新し、カウント値326を用いて、他のプロセッサにおける処理がタイムアウトしていることを検出する。その詳細は、次のとおりである。プロセッサ301は、第iの開始フラグ322が1で、かつ、第iの終了フラグ323が0である場合はステップS3504へ、それ以外の場合はステップS3508へ進む(ステップS3503)。ステップS3504では、プロセッサ301は、第iのエラーフラグ324または第iのタイムアウトフラグ325が1である場合はステップS3508へ、それ以外の場合はステップS3505へ進む。
【0186】
前者の場合、プロセッサ301は、第iのカウント値326に1を加算する(ステップS3505)。次に、プロセッサ301は、第iのカウント値326が所定の上限値以上である場合には(ステップS3506のYES)、第iのタイムアウトフラグ325に1を設定する(ステップS3507)。
【0187】
次に、プロセッサ301は、変数iがs(シーケンスの個数)未満である場合は(ステップS3508のYES)、変数iに1を加算した後(ステップS3509)、ステップS3503へ進む。この場合、プロセッサ301は、次のシーケンスに対してステップS3503からS3508の処理を行う。一方、変数iがs以上である場合は(ステップS3508のNO)、プロセッサ301は、シーケンス管理情報320をアンロックし(ステップS3510)、これをもってカウント値更新処理を完了する。
【0188】
図28に示すカウント値更新処理によれば、プロセッサで処理されているシーケンスのカウント値326が更新され、更新後のカウント値326が上限値以上であれば、そのシーケンスのタイムアウトフラグ325が1に設定される。タイムアウトフラグ325は、上述したシーケンス管理情報更新処理(図27)において、選択した処理が正常終了したか否かを判断する際に参照される。
【0189】
図24ないし図28に示すフローチャートによれば、プロセッサ301は、ビットストリームのサイズおよびシンタックス、並びに、処理時間を検査することにより、選択した処理を実行した際に生じた異常を検出し、異常検出時にはその旨をシーケンス管理情報320に記録した上で自ら停止する。また、プロセッサ301は、異常検出時には、生成されたビットストリームを共有記憶部302に書き戻すことなく廃棄し、保守点検後にユーザから再起動の指示があるまで停止し続ける。
【0190】
また、プロセッサ301は、各シーケンスのカウント値326を更新し、処理開始時に初期化されたカウント値326が所定値以上となっている場合には、その処理はタイムアウトしたと判断し、その旨をシーケンス管理情報320に記録する。加えて、プロセッサ301は、シーケンス管理情報320に基づき、自らの処理がタイムアウトしたと判断されたことを検知した場合には、ビットストリームの検査で異常を検出した場合と同様に、自ら停止する。この場合、タイムアウトしたと判断された処理は、停止したプロセッサ以外のプロセッサ301によって優先的に実行される。
【0191】
図29は、本実施形態に係る動画像符号化装置において各プロセッサが動作する様子を示すタイミングチャートである。図29に示す例では、動画像符号化装置は第1から第6のプロセッサを有し、このうち第1のプロセッサは故障のため停止していると仮定する。また、第2ないし第6のプロセッサは、それぞれ互いに独立して、異なるシーケンスに対して符号化処理を行い、ビットストリームを生成するものとする。図29に示す例では、第4のプロセッサが、動作中の5個のプロセッサのうちで最初に第1のシーケンスに対する符号化処理を完了している。第4のプロセッサは、符号化処理に続いて、生成したビットストリームが正常であるか否かを検査する。第4のプロセッサは、ビットストリームは正常であると判断し、時刻t1以降で次処理選択処理を行う。この時点では、第1のシーケンスに対する符号化処理は既に完了しており、第2ないし第5のシーケンスに対する符号化処理は他のプロセッサによって実行されている。そこで、第4のプロセッサは、第6のシーケンスに対する符号化処理を次に実行すべき処理として選択し、その処理を開始する。
【0192】
次に、第5のプロセッサが、第2のシーケンスに対する符号化処理を完了したとする。第5のプロセッサは、符号化処理に続いて、生成したビットストリームが正常であるか否かを検査する。第5のプロセッサは、ビットストリームは正常でないと判断し、時刻t2に自ら停止する。
【0193】
次に、第2のプロセッサが、第4のシーケンスに対する符号化処理を完了したとする。第2のプロセッサは、符号化処理に続いて、生成したビットストリームが正常であるか否かを検査する。第2のプロセッサは、ビットストリームは正常であると判断し、時刻t3以降で次処理選択処理を行う。この時点では、第2のシーケンスに対する処理で異常が生じたことが、共有記憶部302に記憶されたシーケンス管理情報320のエラーフラグ324に記録されている。そこで、第2のプロセッサは、他のプロセッサが実行した際に異常が生じた、第2のシーケンスに対する符号化処理を次に実行すべき処理として選択し、その処理を開始する。
【0194】
次に、第3のプロセッサが、第3のシーケンスに対する符号化処理を正常に完了したとする。第3のプロセッサは、時刻t4以降で次処理選択処理を行い、第7のシーケンスに対する符号化処理を開始する。次に、第6のプロセッサが、第5のシーケンスに対する符号化処理を正常に完了したとする。第6のプロセッサは、時刻t5以降で次処理選択処理を行い、第8のシーケンスに対する符号化処理を開始する。
【0195】
図29に示すように、各シーケンスの符号化処理で異常が生じた場合には、その処理を実行したプロセッサは停止し、他のプロセッサがその処理を代替して実行する。なお、図29では、生成したビットストリームに異常が生じた場合を示したが、符号化処理がタイムアウトした場合も同様である。
【0196】
以上に示すように、本実施形態に係る動画像符号化装置によれば、各プロセッサは、共有記憶部に記憶された符号化処理の進行状態に基づき、次の処理を選択して実行するとともに、選択した処理を実行した際に異常が生じたときには自ら停止する。各プロセッサにおける処理の選択、実行、異常検出および停止は、他のプロセッサとは独立して、任意のタイミングで行われる。したがって、符号化処理の実行制御を行うプロセッサを備えることなく、異常が生じたプロセッサを符号化処理中に検出することができる。よって、符号化処理中であってもプロセッサの修理や交換を容易に行うことができ、少なくとも1個のプロセッサが正常に動作していれば符号化処理を継続することができる。
【0197】
この際、生成されたビットストリームのサイズやシンタックス、あるいは、選択した処理の処理時間などに基づき異常検出を行うことにより、異常が生じたプロセッサを符号化処理中に容易に検出することができる。また、共有記憶部に記憶されたカウント値が各プロセッサによって更新され、カウント値を用いて異常が生じたプロセッサが検出されるので、各プロセッサでタイマーを起動することなく処理の所要時間を算出し、異常が生じたプロセッサを検出することができる。また、プロセッサで異常が生じた旨は共有記憶部に記録され、各プロセッサは異常が生じた処理を優先的に実行するので、動画像符号化処理を安全かつ確実に実行することができる。
【0198】
また、ビットストリームで異常が生じたときには、異常発生前に生成されたビットストリームはそのまま利用され、以後のビットストリームを求めるために必要最小限の符号化処理が再び実行される。この際、異常が生じた処理はシーケンス管理情報に記録されるので、これを解析すれば、異常プロセッサを容易に特定することができる。したがって、装置の保守管理を容易に行い、故障による装置全体の稼働率の低下を抑えることができる。
【0199】
また、共有記憶部に記憶されたシーケンスや各プロセッサに記憶されたプログラムに異常やバグなどがある場合には、すべてのプロセッサで同じ異常が生じ、装置全体の動作が停止する。したがって、この場合でも異常が生じた時点で処理が中断されるので、異常なビットストリームを出力することなく、異常の原因を容易に究明することができる。
【0200】
また、各プロセッサが選択した処理を実行した際の異常を自ら検査し、異常検出時には自ら停止するため、並列処理装置で必要とされる複雑な異常検出処理を行う必要がない。また、各プロセッサが独立して次に実行すべき処理を選択するので、異常発生時の再符号化処理を通常の次処理選択処理と同じ要領で容易に実行でき、任意のタイミングでプロセッサを追加および削除する機能を容易に追加することができる。
【0201】
(第5の実施形態)
本発明の第5の実施形態に係る動画像符号化装置は、分散ファイルシステム構成を有する共有記憶部を備えることを特徴とする。具体的には、共有記憶部は互いに独立してアクセスできる複数の画像記憶装置を含み、各画像記憶装置には、動きベクトル探索実行中に、符号化対象の動画像データが分散して記憶される。
【0202】
図30は、本実施形態に係る動画像符号化装置の共有記憶部の詳細な構成を示す図である。図30において、共有記憶部402およびスイッチングハブ404は、それぞれ、図1に示す共有記憶部2およびネットワーク4を詳細化したものである。また、n個のプロセッサ401−1〜nは、図1に示すプロセッサ1−1〜nに対応し、システム管理部403は、図1に示すシステム管理部3に対応し、画像入力部411は、図1に示す画像入力部11に対応する。
【0203】
画像入力部411は、デジタルビデオカセットレコーダ(DVCR)412とディスクレコーダ413とを含んでいる。デジタルビデオカセットレコーダ412には、符号化対象の動画像データを記録したカセット状の記録媒体が装着される。ディスクレコーダ413は、デジタルビデオカセットレコーダ412から出力された動画像データを、未符号化状態のまま1フレームずつ所定のファイル形式で記憶する。
【0204】
共有記憶部402は、パラメータ記憶装置421、q個の画像記憶装置422−1〜q、および、ビットストリーム記憶装置423を含んでいる。パラメータ記憶装置421は、各プロセッサ401における符号化処理に必要とされる制御パラメータを記憶しており、n個のプロセッサ401−1〜nのすべてからアクセスされる。q個の画像記憶装置422−1〜qは、各プロセッサ401における符号化処理に必要とされる動画像データを分散して記憶する。動画像データを分散して記憶する方法の詳細は後述する。ビットストリーム記憶装置423は、符号化結果のビットストリームを記憶する。
【0205】
共有記憶部402に含まれる記憶装置(図30では(q+2)個の記憶装置)は、いずれも、例えばNAS(Network Attached Storage)などを用いて構成され、スイッチングハブ404にそれぞれ独立に接続される。このため、各プロセッサ401は、共有記憶部402に含まれる記憶装置に対して独立にアクセスできる。また、画像記憶装置422は、プロセッサ401からのアクセスが符号化処理のボトルネックにならない数だけ設けられる。画像記憶装置422の個数qは、上記の条件を満たす限り、プロセッサ401の個数nより少なくてもよい。例えば、プロセッサ401の個数nが10〜20程度である場合に、画像記憶装置422の個数qが2〜6程度であってもよい。
【0206】
スイッチングハブ404は、ディスクレコーダ413と、n個のプロセッサ401−1〜nと、パラメータ記憶装置421と、q個の画像記憶装置422−1〜qと、ビットストリーム記憶装置423との間を、スイッチ構造で接続する。スイッチングハブ404は、プロセッサ401からのアクセスが符号化処理のボトルネックにならないよう十分なデータスイッチング容量を有するものとする。なお、スイッチングハブ404は、接続対象の装置間をすべてスイッチ構造で接続する必要はなく、少なくとも、動画像符号化処理を実行するためにデータを交換する必要がある装置間をスイッチ構造で接続すれば足りる。
【0207】
図31は、パラメータ記憶装置421に記憶される制御パラメータの詳細を示す図である。図31に示すように、制御パラメータは、s個の各シーケンスについて、シーケンス属性情報430とシーケンス管理情報440とを含んでいる。シーケンス管理情報440は、プロセッサ番号441、開始フラグ442、終了フラグ443、エラーフラグ444、タイムアウトフラグ445、および、カウント値446を含んでいる。シーケンス管理情報440に含まれるこれらの要素は第4の実施形態で述べたものと同じであるので(図23を参照)、ここではその説明を省略する。
【0208】
シーケンス属性情報430は、シーケンスの属性を示す情報として、シーケンス番号431、開始時刻432、終了時刻433、GOP構造情報434、サーバ名435、目標ビットレート436、画像記憶装置番号437、および、ビットストリーム作成フラグ438などを含んでいる。シーケンス番号431は、シーケンスの番号を示す。開始時刻432および終了時刻433は、それぞれ、シーケンスの開始時刻および終了時刻を1フレームを単位とした時間で示す。GOP構造情報434は、シーケンスのGOP構造を示す。図31に示す例では、第1のシーケンスについてのGOP構造情報は、GOPには3枚のIピクチャを含めて15枚のピクチャが含まれており、GOPの先頭にあるピクチャはIピクチャであることを示している。サーバ名435は、符号化処理前にシーケンスが蓄積されていたサーバの名称を示す。目標ビットレート436は、シーケンスを符号化するときに目標値して設定されるビットレートを示す。画像記憶装置番号437は、符号化処理中にシーケンスが記憶される画像記憶装置の番号を示す。図31に示す例では、画像記憶装置番号437は、1からqまでのいずれかの値を取る。ビットストリーム作成フラグ438は、ビットストリームが既に作成されているか否かを示す。ビットストリーム作成フラグ438は、ビットストリームが既に作成されている場合には1、それ以外の場合には0となる。
【0209】
一般に、動画像符号化処理において最も多くの計算量が必要とされる処理は、動きベクトル探索である。そこで、本実施形態に係る動画像符号化装置は、動きベクトル探索処理を含む処理を第1のパスで行い、動きベクトル探索処理後の処理を第2のパスで行う、2パス処理で動画像データを符号化する。より詳細には、第1のパスでは、動きベクトル探索の他に、特徴抽出、シーン検出、GOP構造決定、仮符号化、ビット割り当てなどの処理が行われ、第2のパスでは、第1のパスで求めた動きベクトル探索結果を用いて本符号化が行われる。本符号化には、フレーム間差分演算、直交変換、量子化、可変長符号化、ローカル復号化、符号化制御などの処理が含まれる。なお、第2のパスにおいて、第1のパスで動きベクトル探索結果が得られていない一部のマクロブロックについて、動きベクトル探索を行ってもよい。このように動画像符号化処理を2パス処理で行う場合、第1のパスでは動きベクトル探索における計算が処理のボトルネックになるのに対して、第2のパスでは共有記憶部402に対するアクセスが処理のボトルネックになる。そこで、本実施形態に係る動画像符号化装置は、第1のパスの処理を実行中に、第2のパスの処理を実行するための準備として、共有記憶部402に動画像データを分散して記憶させる処理を行う。
【0210】
図32は、各プロセッサ401によるメイン処理を示すフローチャートである。n個のプロセッサ401−1〜nは、いずれも、図2に示す符号化処理用プログラム32を実行することにより、図32に示すフローチャートに従って動作する。図32に示す処理を行う前に、システム管理部403の制御により、デジタルビデオカセットレコーダ412から動画像データが読み出され、ディスクレコーダ413にフレームごとにファイル形式で記憶されているものとする。図32は、システム管理部403から起動された後のプロセッサ401の動作を示している。
【0211】
プロセッサ401は、起動されると、まず、初期化処理を行う(ステップS4101)。初期化処理では、プロセッサ401は、自らのRAM内の符号化処理用データ(図2に示す符号化処理用データ33)を初期化するなどの処理を行う。次に、プロセッサ401は、第1のパスに含まれる処理を次処理として選択し(ステップS4102)、ディスクレコーダ413から処理すべきシーケンスを読み出す。次に、プロセッサ401は、ステップS4103で読み出したシーケンスに対して、ステップS4102で選択した処理を実行する(ステップS4104)。ステップS4104では、特徴抽出、シーン検出、GOP構造決定、動きベクトル検出、仮符号化、ビット割り当てなどの処理が行われる。
【0212】
次に、プロセッサ401は、q個の画像記憶装置422−1〜qのうちから一の画像記憶装置を選択し、選択した画像記憶装置にステップS4102で読み出したシーケンスを書き込む(ステップS4105)。画像記憶装置を選択する方法については、後述する。次に、プロセッサ401は、パラメータ記憶装置421に記憶された画像記憶装置番号437を更新する(ステップS4106)。例えば、第iのシーケンスを第jの画像記憶装置422−jに書き込んだ場合、プロセッサ401は、第iのシーケンスの画像記憶装置番号437に値jを設定する。次に、プロセッサ401は、第1のパスの処理をすべて終了したか否かを判断する(ステップS4107)。第1のパスの処理をすべて終了していない場合(ステップS4107のNO)、プロセッサ401は、ステップS4012へ進み、第1のパスの処理を再び選択して実行する。
【0213】
第1のパスの処理をすべて終了した場合(ステップS4107のYES)、プロセッサ401は、ステップS4108へ進む。この場合、プロセッサ401は、第2のパスに含まれている処理を次処理として選択し(ステップS4108)パラメータ記憶装置421から、次処理の対象となるシーケンスの画像記憶装置番号437を読み出して、その番号の画像記憶装置422からシーケンスを読み出す(ステップS4109)。次に、プロセッサ401は、ステップS4109で読み出した動画像データに対して、ステップS4108で選択した処理を実行する(ステップS4110)。ステップS4110では、フレーム間差分演算、直交変換、量子化、可変長符号化、ローカル符号化、符号化制御などの処理が行われる。
【0214】
次に、プロセッサ401は、ステップS4110の処理でビットストリームが生成されたか否かを判断し(ステップS4111)、ビットストリームが生成された場合(ステップS4111のYES)、生成されたビットストリームをビットストリーム記憶装置423に書き込む処理(図33)を行う(ステップS4112)。次に、プロセッサ401は、第2のパスの処理をすべて終了したか否かを判断する(ステップS4113)。第2のパスの処理をすべて終了していない場合(ステップS4113のNO)、プロセッサ401は、ステップS4018へ進み、第2のパスの処理を再び選択して実行する。第2のパスの処理をすべて終了している場合(ステップS4113のYES)、プロセッサ401は、処理を終了する。
【0215】
このようにステップS4102からS4107では第1のパスの処理が実行され、ステップS4108からS4113では第2のパスの処理が実行される。また、第1のパスの処理を実行中に、画像入力部411から入力された動画像データは、q個の画像記憶装置422−1〜qに分散して書き込まれる。このようにして、第1のパスの処理を実行中に、第2のパスの実行に必要な分散ファイルシステムが構築される。
【0216】
ステップS4105において、q個の画像記憶装置422−1〜qからシーケンスの書き込み先となる画像記憶装置を選択する方法には、次のような方法がある。第1の方法として、プロセッサごとに書き込み先の画像記憶装置を予め決めておく方法がある。第2の方法として、シーケンス番号ごとに書き込み先の画像記憶装置を予め決めておく方法がある。第3の方法として、各画像記憶装置に記憶されているシーケンスの個数あるいはフレームの枚数をパラメータ記憶装置421に記憶させておき、各プロセッサ401がこれらの情報に基づき、動画像データの記憶量が画像記憶装置間で均一になるように、動的に画像記憶装置を選択する方法がある。プロセッサ401は、ステップS4106において、パラメータ記憶装置421に含まれる画像記憶装置番号437を更新する。このため、上記いずれの方法を用いた場合でも、プロセッサ401は、第2のパスの処理を実行するときに、処理対象のシーケンスがどの画像記憶装置に記憶されているかを知ることができる。したがって、第1のパスでシーケンスを書き込んだプロセッサと、第2のパスでシーケンスを読み出すプロセッサとが異なっていても、動画像符号化処理を正しく実行することができる。
【0217】
図33は、プロセッサ401によるビットストリーム書き込み処理のフローチャートである。以下では、パラメータ記憶装置421に記憶されているi番目のシーケンスのビットストリーム作成フラグ438をC[i]と表す。ビットストリーム書き込み処理では、プロセッサ401は、まず、現在処理中のシーケンスのシーケンス番号431を変数kに代入し、第kのシーケンスのビットストリーム作成フラグ438に1を設定する(ステップS4201)。次に、プロセッサ401は、kが1であるか否かを判断する(ステップS4202)。kが1である場合(ステップS4202のYES)、プロセッサ401は、ビットストリームの先頭部分を書き込むために、ビットストリーム書き込み先ファイルBFを作成し、作成したファイルBFに生成されたビットストリームを書き込む(ステップS4203)。
【0218】
ステップS4202においてkが1でない場合(ステップS4202のNO)、プロセッサ401は、生成されたビットストリームより前の部分が既に生成されているか否かを調べるため、C[1]からC[k−1]がすべて1であるか否かを判断する(ステップS4204)。C[1]からC[k−1]がすべて1である場合(ステップS4204のYES)、プロセッサ401は、ビットストリーム書き込み先ファイルBFに生成されたビットストリームを連結する(ステップS4205)。それ以外の場合(ステップS4024のNO)、プロセッサ401は、ビットストリーム書き込み先ファイルBFとは別に新たにファイルFk を作成し、ファイルFk に生成されたビットストリームを書き込む(ステップS4206)。
【0219】
プロセッサ401は、ステップS4203、S4205およびS4206の後は、いずれもステップS4207へ進む。次に、プロセッサ401は、生成されたビットストリームより後の部分が既に生成されている否かを調べるため、C[k+1]からC[k+r]がすべて1であるようなrを求める(ステップS4207)。次に、プロセッサ401は、rが1以上であるか否かを調べる(ステップS4208)。rが1以上である場合(ステップS4208のYES)、プロセッサ401は、ビットストリーム書き込み先ファイルBFにファイルFk+1 からFk+r を正しい順序で連結し、その後にファイルFk+1 〜Fk+r を削除する(ステップS4209)。プロセッサ401は、これをもってビットストリーム書き込み処理を完了する。
【0220】
以下、本実施形態に係る動画像符号化装置の効果を説明する。一般に、複数のプロセッサを用いて動画像符号化処理を行う場合、データ(特に、原画像データ)に対するアクセスが処理のボトルネックになり、符号化処理時間が長くなる。このため、動画像符号化処理を並列で行うときの目標である実時間処理が行えなくなる。
【0221】
本実施形態に係る動画像符号化装置では、動画像データに含まれるシーケンスは、複数の画像記憶装置422−1〜qに分散して記憶される。また、各プロセッサ401は、分散して記憶されたシーケンスにそれぞれ独立にアクセスする。したがって、プロセッサ401からのアクセスが競合しないようにシーケンスを好適に分散して記憶することにより、プロセッサ401からのアクセスが符号化処理のボトルネックになることを防止することができる。
【0222】
また、本実施形態に係る動画像符号化装置では、ディスクレコーダ413から入力されたシーケンスは、動きベクトル探索実行中に共有記憶部402に分散して記憶される。動きベクトル探索終了後、プロセッサ401は、分散して記憶されたシーケンスに対して並列に符号化処理を実行する。動きベクトル探索では、計算が処理のボトルネックになるのに対して、動きベクトル探索後の処理では、入出力が処理のボトルネックになる。そこで、入出力に余裕がある動きベクトル探索実行中に、動画像データを複数の画像記憶装置に分散して記憶させることにより、入出力に余裕がない動きベクトル探索後の処理を高速に行うための準備をする。これにより、動きベクトル探索後の処理において入出力が処理のボトルネックになることを防止することができる。以上のことから、本実施形態に係る動画像符号化装置によれば、動画像符号化処理を高速に行うことができる。よって、プロセッサ401の台数を十分に多くすれば、動きベクトル探索以外の動画像符号化処理を実時間で行うことも可能となる。
【0223】
また、複数のプロセッサを用いて並列に動画像符号化処理を行う場合、符号化結果のビットストリームは、任意のタイミングで生成される。また、生成されるビットストリームは短く分割され、その長さも一定ではないため、生成されたビットストリームを連結して、1本のビットストリームを作成する必要がある。ところが、あるビットストリームを生成したプロセッサが、そのビットストリームを連結する方法では、ビットストリームの連結順序と生成順序とが異なる場合に、プロセッサ間で同期を取る必要が生じる。よって、この方法では、プロセッサが他のプロセッサの処理を待つ時間が生じ、処理時間が長くなる。
【0224】
本実施形態に係る動画像符号化装置では、プロセッサ401がビットストリームのある部分を生成したときに、その前の部分が未完成である場合には、プロセッサ401は、生成したビットストリームを後で連結すべきものとしてビットストリーム記憶装置423に書き込む。この場合、後で連結すべきとされたビットストリームの連結処理は、他のプロセッサによって行われる。したがって、ビットストリームの連結順序と生成順序とが異なる場合でも、プロセッサは他のプロセッサの処理を待つことなく、実行可能な他の処理を開始することができる。よって、動画像符号化処理を高速に行うことができる。
【0225】
なお、本発明は上記各実施形態に限られるものではなく、各種の改変が可能である。各実施形態では共通したハードウェア構成が使用されるので、各実施形態の特徴を任意に組み合せて動画像符号化装置を構成することができる。したがって、各実施形態の特徴のうち任意個の特徴を有する動画像符号化装置を構成することができる。例えば、第1および第3の実施形態の特徴を有する動画像符号化装置や、第1、第4および第5の実施形態の特徴を有する動画像符号化装置を構成することができる。また、動画像符号化装置には1以上の任意の数のプロセッサが含まれていてもよく、各プロセッサの演算処理能力が異なっていてもよい。また、第5の実施形態を除き、プロセッサと共有記憶部の間の接続方式や、共有記憶部の構成は、任意に決定してよい。
【0226】
第1および第2の実施形態では、各プロセッサで異なる内容の次処理選択処理を実行させてもよく、一部のプロセッサにおける処理を固定化してもよい。第3の実施形態では、一部のプロセッサのみが、選択した次処理に応じてプログラムを更新してもよい。あるいは、各プロセッサのRAMなどに、各プロセッサで過去に使用されたプログラムを幾つか蓄積し、選択した次処理に応じてプログラムを更新する際に、共有記憶部に蓄積されたプログラムに代えて、各プロセッサに個別に蓄積されたプログラムを使用してもよい。第4の実施形態では、選択した処理を実行してもビットストリームが生成されない場合でも、その処理が正常終了したか否かを検査してもよい。あるいは、カウント値更新処理を、ビットストリームを共有記憶部に書き込んだ直後だけでなく、各プロセッサによる処理全体の中から任意に選択した箇所で実行してもよい。
【図面の簡単な説明】
【図1】本発明の第1ないし第5の実施形態に係る動画像符号化装置の構成を示すブロック図である。
【図2】本発明の第1ないし第5の実施形態に係る動画像符号化装置の各プロセッサの詳細な構成を示す図である。
【図3】本発明の第1の実施形態に係る動画像符号化装置のデータ配置図である。
【図4】本発明の第1の実施形態に係る動画像符号化装置の各プロセッサによるメイン処理のフローチャートである。
【図5】本発明の第1の実施形態に係る動画像符号化装置の各プロセッサによるプロセッサ追加処理のフローチャートである。
【図6】本発明の第1の実施形態に係る動画像符号化装置の各プロセッサによるプロセッサ削除処理のフローチャートである。
【図7】本発明の第1の実施形態に係る動画像符号化装置における世代更新処理のフローチャートである。
【図8】本発明の第2の実施形態に係る動画像符号化装置のデータ配置図である。
【図9】本発明の第2の実施形態に係る動画像符号化装置の各プロセッサによるメイン処理のフローチャートである。
【図10】本発明の第2の実施形態に係る動画像符号化装置の各プロセッサによる次処理選択処理のフローチャートである。
【図11】本発明の第2の実施形態に係る動画像符号化装置の各プロセッサによるシーケンス状態更新処理のフローチャートである。
【図12】本発明の第2の実施形態に係る動画像符号化装置の各プロセッサが動作する様子を示すタイムチャートである。
【図13】本発明の第3の実施形態に係る動画像符号化装置のデータ配置図である。
【図14】本発明の第3の実施形態に係る動画像符号化装置におけるプログラム管理情報の詳細を示す図である。
【図15】本発明の第3の実施形態に係る動画像符号化装置において実行される処理の内容の一例を示す図である。
【図16】本発明の第3の実施形態に係る動画像符号化装置の各プロセッサによるメイン処理のフローチャートである。
【図17】本発明の第3の実施形態に係る動画像符号化装置の各プロセッサによる次処理選択処理のフローチャートである。
【図18】本発明の第3の実施形態に係る動画像符号化装置の各プロセッサによるプロセッサプログラム更新処理のフローチャートである。
【図19】本発明の第3の実施形態に係る動画像符号化装置の各プロセッサによる機能情報比較処理のフローチャートである。
【図20】本発明の第3の実施形態に係る動画像符号化装置におけるプログラム登録処理のフローチャートである。
【図21】本発明の第3の実施形態に係る動画像符号化装置におけるプログラム削除処理のフローチャートである。
【図22】本発明の第3の実施形態に係る動画像符号化装置におけるプログラム更新処理のフローチャートである。
【図23】本発明の第4の実施形態に係る動画像符号化装置のデータ配置図である。
【図24】本発明の第4の実施形態に係る動画像符号化装置の各プロセッサによるメイン処理のフローチャートである。
【図25】本発明の第4の実施形態に係る動画像符号化装置の各プロセッサによる次処理選択処理のフローチャートである。
【図26】本発明の第4の実施形態に係る動画像符号化装置の各プロセッサによるビットストリーム検査処理のフローチャートである。
【図27】本発明の第4の実施形態に係る動画像符号化装置の各プロセッサによるシーケンス管理情報更新処理のフローチャートである。
【図28】本発明の第4の実施形態に係る動画像符号化装置の各プロセッサによるカウント値更新処理のフローチャートである。
【図29】本発明の第4の実施形態に係る動画像符号化装置の各プロセッサが動作する様子を示すタイミングチャートである。
【図30】本発明の第5の実施形態に係る動画像符号化装置の共有記憶部の詳細な構成を示す図である。
【図31】本発明の第5の実施形態に係る動画像符号化装置における制御パラメータの詳細を示す図である。
【図32】本発明の第5の実施形態に係る動画像符号化装置の各プロセッサによるメイン処理のフローチャートである。
【図33】本発明の第5の実施形態に係る動画像符号化装置の各プロセッサによるビットストリーム書き込み処理のフローチャートである。
【図34】従来の動画像符号化装置における親プロセッサの処理を示すフローチャートである。
【図35】従来の動画像符号化装置における子プロセッサの処理を示すフローチャートである。
【図36】従来の動画像符号化装置によって生成された異常ビットストリームを示す図である。
【符号の説明】
1、101、151、201、301、401…プロセッサ
2、102、152、202、302、402…共有記憶部
3、103、203、403…システム管理部
4…ネットワーク
11、411…画像入力部
12…画像出力部
13…ストリーム記憶部
14…デジタルVTR
15…キャプチャ部
16…デコード部
17…デジタルテレビ
21…CPU
22…ネットワークインターフェイス部
23…RAM
24…ローカルバス
31、110、161、311…プロセッサ識別情報
32、211…符号化処理用プログラム
33…符号化処理用データ
111…識別番号
112…世代番号
120、170、320、440…シーケンス管理情報
121、174、321、441…プロセッサ番号
122、173、240…処理状態
130…識別管理情報
131…現世代番号
132…世代検査値
133…世代更新フラグ
134…世代情報
140、180、250、330…シーケンス処理用データ
162…選択シーケンス番号
163…選択処理番号
171…現処理番号
172…選択可能処理番号
175、322、442…開始フラグ
176、323、443…終了フラグ
177、324、444…エラーフラグ
220…プログラム管理情報
231…プログラムコード
260…プログラム更新情報
261…有効フラグ
262…更新フラグ
263…削除フラグ
264…ダウンロード数
270…プログラムコード情報
271…プログラム名
272…先頭アドレス
273…プログラムサイズ
280…プログラム機能情報
281…項目数
282…機能情報
325、445…タイムアウトフラグ
326、446…カウント値
404…スイッチングハブ
412…デジタルビデオカセットレコーダ
413…ディスクレコーダ
421…パラメータ記憶装置
422…画像記憶装置
423…ビットストリーム記憶装置
430…シーケンス属性情報
431…シーケンス番号
432…開始時刻
433…終了時刻
434…GOP構造情報
435…サーバ名
436…目標ビットレート
437…画像記憶装置番号
438…ビットストリーム作成フラグ

Claims (10)

  1. 並列に動作する複数の処理部と、前記処理部から共通してアクセスされる共有記憶部とを備えた動画像符号化装置であって、
    前記共有記憶部は、
    独立して処理を適用するために所定の単位に分割された動画像データと、
    分割された動画像データの各単位について、符号化処理に必要なデータと符号化処理の進行状態と、前記処理部の識別情報を管理するための識別管理情報とを記憶し、
    各前記処理部は、
    前記共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する次処理選択手段と、
    前記次処理選択手段で選択された一単位の動画像データに対して、前記次処理選択手段で選択された処理を実行する処理実行手段と
    前記識別管理情報に基づき、未使用の識別情報を取得する処理部追加手段と、
    前記処理部追加手段で取得された識別情報を解放する処理部削除手段とを含
    前記次処理選択手段と前記処理実行手段とは、前記取得された識別情報が解放されるまでの間、動作し、
    前記処理部削除手段は、前記識別管理情報に基づき、前記処理部追加手段で取得された識別情報が失効していると判断したときに、当該識別情報を解放する、動画像符号化装置。
  2. 記処理実行手段における処理で生じた異常を検出する異常検出手段と、
    前記異常検出手段で異常が検出されたときに、前記次処理選択手段および前記処理実行手段による符号化処理を停止させる処理停止手段とをさらに備えた、請求項1に記載の動画像符号化装置。
  3. 前記異常検出手段は、前記処理実行手段で求めた動画像データの符号化結果に基づき、前記処理実行手段における処理で生じた異常を検出することを特徴とする、請求項に記載の動画像符号化装置。
  4. 前記異常検出手段は、前記処理実行手段で求めた動画像データの符号化結果のサイズに基づき、前記処理実行手段における処理で生じた異常を検出することを特徴とする、請求項に記載の動画像符号化装置。
  5. 前記異常検出手段は、前記処理実行手段で求めた動画像データの符号化結果のシンタックスを検査することにより、前記処理実行手段における処理で生じた異常を検出することを特徴とする、請求項に記載の動画像符号化装置。
  6. 前記異常検出手段は、前記処理実行手段における処理時間に基づき、前記処理実行手段における処理で生じた異常を検出することを特徴とする、請求項13に記載の動画像符号化装置。
  7. 前記共有記憶部は、分割された動画像データの各単位について、異常検出用のカウント値をさらに記憶しており、
    各前記処理部は、前記カウント値を更新するカウント値更新手段をさらに備え、
    前記処理実行手段は、前記次処理選択手段で選択された一単位の動画像データに対して前記次処理選択手段で選択された処理を実行する前に、当該一単位の動画像データについての前記カウント値を初期化し、
    前記異常検出手段は、前記処理実行手段における処理が完了したときに、前記処理実行手段で初期化したカウント値が所定値以上であるときに、前記処理実行手段における処理で異常が生じたと判断することを特徴とする、請求項に記載の動画像符号化装置。
  8. 前記異常検出手段は、前記処理実行手段における処理で異常が生じたと判断したときに、異常が生じた旨を、前記共有記憶部に記憶された符号化処理の進行状態に記録し、
    前記次処理選択手段は、前記共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについ て次に実行すべき処理とを選択する際に、異常が生じた旨が記録されている処理を優先的に選択することを特徴とする、請求項に記載の動画像符号化装置。
  9. 並列に動作する複数の処理部と、前記処理部から共通してアクセスされる共有記憶部とを用いた動画像符号化方法であって、
    前記共有記憶部が、
    独立して処理を適用するために所定の単位に分割された動画像データと、
    分割された動画像データの各単位について、符号化処理に必要なデータと符号化処理の進行状態と、前記処理部の識別情報を管理するための識別管理情報とを記憶するデータ記憶ステップを行ない、
    各前記処理部が、
    前記共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する次処理選択ステップと、
    前記次処理選択ステップで選択された一単位の動画像データに対して、前記次処理選択ステップで選択された処理を実行する処理実行ステップと、
    前記識別管理情報に基づき、未使用の識別情報を取得する処理部追加ステップと、
    取得された識別情報を解放する処理部削除ステップとを行
    前記次処理選択ステップと前記処理実行ステップとは、前記取得された識別情報が解放されるまでの間、動作し、
    前記処理部削除ステップは、前記識別管理情報に基づき、前記取得された識別情報が失効していると判断したときに、当該識別情報を解放する、動画像符号化方法。
  10. 並列に動作する複数の処理部と、前記処理部から共通してアクセスされる共有記憶部とを備えたコンピュータを動画像符号化装置として機能させるためのプログラムであって、
    前記共有記憶部に、独立して処理を適用するために所定の単位に分割された動画像データと、分割された動画像データの各単位について、符号化処理に必要なデータと符号化処理の進行状態と、前記処理部の識別情報を管理するための識別管理情報とが記憶された状態で、各前記処理部によって実行されるべく、
    前記コンピュータに、
    前記共有記憶部に記憶された符号化処理の進行状態に基づき、分割された一単位の動画像データと、当該一単位の動画像データについて次に実行すべき処理とを選択する次処理選択ステップと、
    前記次処理選択ステップで選択された一単位の動画像データに対して、前記次処理選択ステップで選択された処理を実行する処理実行ステップと
    前記識別管理情報に基づき、未使用の識別情報を取得する処理部追加ステップと、
    取得された識別情報を解放する処理部削除ステップとを実行させ、
    前記次処理選択ステップと前記処理実行ステップとは、前記取得された識別情報が解放されるまでの間、動作し、
    前記処理部削除ステップは、前記識別管理情報に基づき、前記取得された識別情報が失効していると判断したときに、当該識別情報を解放する、という機能を実現させるための、プログラム。
JP2002324300A 2001-12-04 2002-11-07 複数のプロセッサを用いた動画像符号化装置およびその方法 Expired - Fee Related JP4335516B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2002324300A JP4335516B2 (ja) 2001-12-04 2002-11-07 複数のプロセッサを用いた動画像符号化装置およびその方法
US10/308,097 US7302516B2 (en) 2001-12-04 2002-12-03 Apparatus and method of moving picture encoding employing a plurality of processors
CNB021518793A CN1279492C (zh) 2001-12-04 2002-12-04 使用多个处理器的动图像编码装置及其方法

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
JP2001370153 2001-12-04
JP2001-370154 2001-12-04
JP2001-370153 2001-12-04
JP2001370154 2001-12-04
JP2001-381496 2001-12-14
JP2001381496 2001-12-14
JP2002324300A JP4335516B2 (ja) 2001-12-04 2002-11-07 複数のプロセッサを用いた動画像符号化装置およびその方法

Publications (3)

Publication Number Publication Date
JP2003244699A JP2003244699A (ja) 2003-08-29
JP2003244699A5 JP2003244699A5 (ja) 2005-10-27
JP4335516B2 true JP4335516B2 (ja) 2009-09-30

Family

ID=27482719

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002324300A Expired - Fee Related JP4335516B2 (ja) 2001-12-04 2002-11-07 複数のプロセッサを用いた動画像符号化装置およびその方法

Country Status (3)

Country Link
US (1) US7302516B2 (ja)
JP (1) JP4335516B2 (ja)
CN (1) CN1279492C (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
EP1538509A1 (fr) * 2003-12-04 2005-06-08 Axalto S.A. Procédé de sécurisation de l'éxécution d'un programme contre des attaques par rayonnement
JP3914212B2 (ja) * 2004-03-05 2007-05-16 日本電信電話株式会社 動画像符号化装置,動画像符号化方法,動画像符号化プログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2006031480A (ja) * 2004-07-16 2006-02-02 Sony Corp 情報処理システム及び情報処理方法、並びにコンピュータプログラム
CA2484694A1 (en) * 2004-10-14 2006-04-14 Alcatel Database ram cache
JPWO2006075457A1 (ja) * 2005-01-11 2008-06-12 松下電器産業株式会社 記録装置
WO2006078594A1 (en) * 2005-01-19 2006-07-27 Thomson Licensing Method and apparatus for real time parallel encoding
JP4789200B2 (ja) * 2006-08-07 2011-10-12 ルネサスエレクトロニクス株式会社 動画符号化と動画復号とのいずれかを実行する機能モジュールおよびそれを含む半導体集積回路
JP4517306B2 (ja) * 2007-05-17 2010-08-04 ソニー株式会社 情報処理装置および方法
US7986705B2 (en) 2007-06-13 2011-07-26 International Business Machines Corporation Determining a transmission order for frames based on bit reversals of sequence numbers
US20080310309A1 (en) * 2007-06-13 2008-12-18 Glenn Darrell Batalden Sending content from multiple queues to clients
US7890651B2 (en) * 2007-06-13 2011-02-15 International Business Machines Corporation Sending content from multiple content servers to clients at time reference points
EP2163100A1 (en) * 2007-06-14 2010-03-17 Thomson Licensing A system and method for time optimized encoding
JP5067361B2 (ja) * 2008-12-25 2012-11-07 ソニー株式会社 エンコーダ及びデコーダ、符号方法及び復号方法、並びに記録媒体
CN101576994B (zh) * 2009-06-22 2012-01-25 中国农业大学 遥感图像处理方法及装置
CN101860650B (zh) * 2009-08-24 2012-12-12 深圳市海云天科技股份有限公司 一种基于网络阅卷的图像采集处理系统
JP2011066843A (ja) * 2009-09-18 2011-03-31 Toshiba Corp 並列符号化装置及びプログラム並びに画像データの符号化方法
US8832403B2 (en) 2009-11-13 2014-09-09 International Business Machines Corporation Generation-based memory synchronization in a multiprocessor system with weakly consistent memory accesses
US8736695B2 (en) * 2010-11-12 2014-05-27 Qualcomm Incorporated Parallel image processing using multiple processors
JP5673178B2 (ja) * 2011-02-10 2015-02-18 富士通株式会社 ストレージ装置及びストレージ装置制御方法
CN102760083A (zh) * 2011-04-26 2012-10-31 精拓科技股份有限公司 多处理器的运作控制方法及其系统
WO2012160655A1 (ja) 2011-05-24 2012-11-29 富士通株式会社 データ処理方法及びデータ処理システム
JP6415016B2 (ja) * 2012-11-12 2018-10-31 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム
US10123028B2 (en) * 2014-09-17 2018-11-06 Mediatek Inc. Syntax parsing apparatus with multiple syntax parsing circuits for processing multiple image regions within same frame or processing multiple frames and related syntax parsing method
US9799089B1 (en) * 2016-05-23 2017-10-24 Qualcomm Incorporated Per-shader preamble for graphics processing
JP6481666B2 (ja) * 2016-07-12 2019-03-13 京セラドキュメントソリューションズ株式会社 画像処理装置
US10496329B2 (en) * 2017-06-02 2019-12-03 Cavium, Llc Methods and apparatus for a unified baseband architecture
CN109284410B (zh) * 2018-10-15 2022-08-16 五八有限公司 图像文件保存方法、装置、计算机设备及可读存储介质
JP2020078028A (ja) * 2018-11-09 2020-05-21 Jcc株式会社 録画装置
JP2021190013A (ja) * 2020-06-04 2021-12-13 株式会社東海理化電機製作所 制御装置、プログラム、およびシステム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567426B1 (en) * 1998-03-05 2003-05-20 Silicon Graphics, Inc. Preemptive timer multiplexed shared memory access
JPH11346366A (ja) 1998-06-01 1999-12-14 Sony Corp 符号化装置とその方法および復号化装置とその方法
JP4427827B2 (ja) 1998-07-15 2010-03-10 ソニー株式会社 データ処理方法、データ処理装置及び記録媒体
US7885340B2 (en) * 1999-04-27 2011-02-08 Realnetworks, Inc. System and method for generating multiple synchronized encoded representations of media data
US6507947B1 (en) * 1999-08-20 2003-01-14 Hewlett-Packard Company Programmatic synthesis of processor element arrays
JP4087072B2 (ja) * 2001-01-25 2008-05-14 株式会社日立製作所 ストレージシステム及び仮想プライベートボリューム制御方法
US7590742B2 (en) * 2003-12-16 2009-09-15 Nokia Corporation IP address management

Also Published As

Publication number Publication date
US20030103564A1 (en) 2003-06-05
CN1426023A (zh) 2003-06-25
JP2003244699A (ja) 2003-08-29
US7302516B2 (en) 2007-11-27
CN1279492C (zh) 2006-10-11

Similar Documents

Publication Publication Date Title
JP4335516B2 (ja) 複数のプロセッサを用いた動画像符号化装置およびその方法
US5699177A (en) Communication method in network system for performing information transmission among terminal equipments using light beams of a plurality of wavelengths, terminal equipment used in the method and network system using the method
JP4416361B2 (ja) マルチフォーマットトランスポートストリームデコーダ
CA2293255C (en) Multimedia multipoint telecommunications reservation acceptance systems and controllers
CN111294599B (zh) 视频解码方法、视频编码方法及装置
US6373523B1 (en) CCD camera with two CCDs having mutually different color filter arrays
JP2019525671A (ja) 映像符号化/復号化方法及びそのための装置
JPH09504147A (ja) 情報サービス制御点
EP2290985A1 (en) Image decoding device and image encoding device
US20130258147A1 (en) Image processing apparatus and image processing method
HUE033604T2 (en) Low delay picture coding
JPH06225266A (ja) 音声映像通信プロセツサシステム
CN102197647A (zh) 电视会议系统、电视会议装置、电视会议控制方法以及程序
JP2023166557A (ja) 動画圧縮装置
US8301866B2 (en) Processor delivering content information recovered upon sequence of processes performed by data path reconfigured based on received configuration information containing use frequency
US20070050299A1 (en) Media processing Method And Media Processing Program
US20030190154A1 (en) Method and apparatus for data compression of multi-channel moving pictures
US8970783B2 (en) Image processing apparatus and control method therefor
Nishitani et al. A real-time software programmable processor for HDTV and stereo scope signals
KR101157099B1 (ko) 보조 프로그램들 관리 방법 및 이에 대응하는 수신기 및시스템
WO2019189199A1 (ja) 生成装置、電子機器、生成プログラムおよびデータ構造
JP2946982B2 (ja) 画面分割符号化装置
JP2003198818A (ja) 画像処理装置
JPH0795178A (ja) 端末装置及びそれを用いるネットワークシステム
US20220256127A1 (en) Image encoding apparatus, method for controlling the same, and non-transitory computer-readable storage medium

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090318

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090512

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090603

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090625

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120703

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4335516

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120703

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130703

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees