以下、実施形態を図面を用いて説明する。
図1は、一実施形態における映像・音声データ処理装置10の例を示している。
映像・音声データ処理装置10は、例えば、MP4ファイルを生成するシステムに、搭載される。MP4ファイルフォーマットは、MPEG4システム規格(ISO/IEC 14496−1)で規定されている。例えば、映像・音声データ処理装置10は、MPEG−4(ISO/IEC 14496)等に準拠した符号化方式で符号化された映像データおよび音声データを、外部装置にチャンク単位で交互に出力する。そして、外部装置は、例えば、映像・音声データ処理装置10から受けた映像データおよび音声データをMP4ファイルに格納し、MP4ファイルを生成する。
映像・音声データ処理装置10は、チャンク確定部20およびメモリ30を有している。メモリ30は、例えば、MPEG−4等に準拠した符号化方式で符号化された映像データおよび音声データを順次記憶する。なお、メモリ30に記憶された映像データおよび音声データは、順次出力される。すなわち、メモリ30は、符号化された映像データおよび音声データを一時的に記憶する。
例えば、メモリ30は、符号化された映像データを一時的に記憶する映像領域32と、符号化された音声データを一時的に記憶する音声領域34とを有している。すなわち、メモリ30の映像領域32は、符号化された映像データを一時的に記憶する記憶部として機能する。また、メモリ30の音声領域34は、符号化された音声データを一時的に記憶する記憶部として機能する。なお、映像領域32および音声領域34は、互いに異なるメモリに設けられてもよい。
チャンク確定部20は、映像領域32の占有量および音声領域34の占有量をそれぞれ監視する。例えば、チャンク確定部20は、映像データや音声データの符号化に関する情報を用いて、映像領域32や音声領域34の占有量を算出する。符号化に関する情報は、例えば、符号化された映像データや音声データのサイズ等であり、映像データや音声データを符号化する際に生成される。なお、チャンク確定部20は、メモリ30の映像領域32や音声領域34に対する書き込みアドレスや読み出しアドレスに基づいて、映像領域32や音声領域34の占有量を算出してもよい。
そして、チャンク確定部20は、例えば、映像領域32の占有量と所定の第1閾値とを比較するとともに、音声領域34の占有量と所定の第2閾値とを比較する。そして、チャンク確定部20は、映像領域32の占有量が第1閾値以上である第1条件および音声領域34の占有量が第2閾値以上である第2条件の少なくとも一方を満たすとき、チャンクのフレーム数(サンプル数)をGOP(Group of Picture)のフレーム数より少なくする。GOPは、複数のピクチャを有するデータ単位であり、少なくとも1つのIピクチャ(Iフレーム)を有している。
このように、チャンク確定部20は、映像領域32および音声領域34の少なくとも一方の空き容量が小さいとき、チャンクのフレーム数をGOPのフレーム数より少なくする。例えば、映像・音声データ処理装置10は、符号化された映像データおよび音声データを、チャンク確定部20により設定されたチャンクのフレーム数に基づいて多重化する。
なお、映像データおよび音声データの符号化は、映像・音声データ処理装置10で実施されてもよいし、映像・音声データ処理装置10の外部で実施されてもよい。したがって、映像・音声データ処理装置10は、映像データおよび音声データを符号化する機能を有してもよいし、映像データおよび音声データを符号化する機能を有していなくてもよい。例えば、映像・音声データ処理装置10は、映像データおよび音声データを符号化する機能を有していなとき、外部のコーデックLSI等で符号化された映像データおよび音声データを順次受ける。そして、映像・音声データ処理装置10は、符号化された映像データおよび音声データを映像領域32および音声領域34に順次記憶する。
図2は、MP4ファイルフォーマットの概要を示している。MP4ファイルFILは、例えば、ボックスB10、B20、B30を有している。ファイルタイプボックス(ftyp)B10は、ファイルの先頭に1つのみ存在する。ファイルタイプボックス(ftyp)B10には、MP4ファイルFILの構造を示すブランド名が格納される。ムービーボックス(moov)B20は、1つのファイルに1つのみ存在する。ムービーボックス(moov)B20には、mdatに関する全てのヘッダ情報が格納される。例えば、各サンプルのサイズ、各サンプルの再生期間、ファイル全体の再生期間および各チャンクの位置情報等がムービーボックス(moov)B20に格納される。メディアデータボックス(mdat)B30には、例えば、符号化された映像データおよび音声データが格納される。なお、メディアデータボックス(mdat)B30は、1つのファイルに複数存在してもよい。
図3は、図1に示した映像・音声データ処理装置10から出力されるデータの一例を示している。なお、図中の網掛けは、映像データのチャンクCNKおよび映像データのメッセージMESを示している。また、メッセージMESの括弧内の数字およびチャンクCNKの括弧内の数字は、出力された順番を示している。
映像・音声データ処理装置10は、映像領域32および音声領域34のそれぞれに記憶された映像データおよび音声データを、外部装置100に、チャンクCNK単位で交互に出力する。チャンクCNKは、複数のサンプルを有している。サンプルは、映像データおよび音声データを管理する際の最小単位である。例えば、映像データのチャンクCNKの1サンプルは、1映像フレームFRMである。また、例えば、音声データのチャンクCNKの1サンプルは、1音声フレームである。
すなわち、チャンクCNKは、複数のフレームFRMを有している。例えば、映像データのチャンクCNK(1)は、フレームFRM(1)−FRM(n)を有している。また、例えば、音声データのチャンクCNK(2)は、フレームFRM(n+1)−FRM(m)を有している。
また、映像・音声データ処理装置10は、各チャンクCNKに対応するメッセージMESを外部装置100に出力する。例えば、映像・音声データ処理装置10は、映像データおよび音声データを出力するインターフェースとは別のインターフェースからメッセージMESを出力する。
MP4ファイルでは、映像データおよび音声データは、サンプル(フレームFRM)およびチャンクCNKの単位で管理される。このため、例えば、映像・音声データ処理装置10は、メッセージMESを、チャンクCNK毎に生成する。メッセージMESは、例えば、チャンクCNKに関するヘッダ情報である。したがって、例えば、映像・音声データ処理装置10は、各メッセージMESを、各チャンクCNKに対応付けて出力する。図の破線は、各メッセージMESが各チャンクCNKに対応付けされていることを示している。
外部装置100は、映像・音声データ処理装置10からチャンクCNK単位で受けた映像データおよび音声データとメッセージMESとを元に、MP4ファイルを生成する。例えば、外部装置100は、映像・音声データ処理装置10から受けたメッセージMESを、図2に示したムービーボックス(moov)B20に格納する。また、例えば、外部装置100は、映像・音声データ処理装置10から受けた映像データおよび音声データを、図2に示したメディアデータボックス(mdat)B30に格納する。なお、MP4ファイルでは、同一のチャンクCNK内のサンプル(フレームFRM)は、メディアデータボックス(mdat)B30に連続して配置される。
このため、映像・音声データ処理装置10は、映像領域32および音声領域34のそれぞれに記憶された映像データおよび音声データを、チャンクCNK単位で交互に出力する。したがって、映像データおよび音声データの出力待機時間(出力待ちの期間)は、例えば、チャンクのフレーム数を少なくすることにより、短くなる。例えば、映像・音声データ処理装置10は、図1で説明したように、映像領域32および音声領域34の少なくとも一方の空き容量が小さいとき、チャンクのフレーム数をGOPのフレーム数より少なくする。
すなわち、この実施形態では、映像領域32および音声領域34の少なくとも一方の空き容量が小さいとき、チャンクのフレーム数をGOPのフレーム数より少なくすることにより、映像データおよび音声データの出力待ちの期間を短くできる。これにより、この実施形態では、映像領域32および音声領域34の一方からデータが出力されている期間(他方の出力待ちの期間)に、映像領域32および音声領域34の他方がオーバーフローすることを低減できる。すなわち、この実施形態では、映像データおよび音声データのオーバーフローを低減できる。
図4は、チャンクCNKとランダムアクセスポイントRAPとの関係の一例を示している。なお、図4は、2つのGOPのフレームFRMvが1つのチャンクCNKvにまとめられたときの例を示している。図の太線で示したフレームFRMvは、IDRピクチャおよびIピクチャを示している。また、フレームFRMvは、映像データのフレームFRMを示し、フレームFRMaは、音声データのフレームFRMを示している。チャンクCNKvは、映像データのチャンクCNKを示し、チャンクCNKaは、音声データのチャンクCNKを示している。
なお、フレームFRMaの括弧内の数字は、括弧内の数字が同じフレームFRMvに対応していることを示している。例えば、フレームFRMa(1)は、フレームFRMv(1)に対応する音声データのフレームFRMである。また、チャンクCNKaの括弧内の数字は、括弧内の数字が同じチャンクCNKvに対応していることを示している。例えば、チャンクCNKa(1)は、チャンクCNKv(1)に対応する音声データのチャンクCNKである。
ランダムアクセスポイントRAPは、特定の位置からMP4ファイルを再生する際の復帰ポイントおよび再生ポイントを意味する。例えば、早送り再生の際に、ランダムアクセスポイントRAPが探索される。ランダムアクセスポイントRAPのフレームFRMv(サンプル)は、映像データの参照画像が不要なIDRピクチャやIピクチャに対応するフレームFRMである。また、ランダムアクセスポイントRAPのフレームFRMa(サンプル)は、映像データのIDRピクチャやIピクチャに対応する音声データのフレームFRMである。
例えば、フレームFRMv(1)、FRMv(n+1)、FRMv(m+1)は、映像データのランダムアクセスポイントRAPである。また、フレームFRMa(1)、FRMa(n+1)、FRMa(m+1)は、音声データのランダムアクセスポイントRAPである。ランダムアクセスポイントRAPの情報は、図2に示したムービーボックス(moov)B20内の“STSS”と呼ばれるボックスに格納される。
ボックス“STSS”に格納される情報(ランダムアクセスポイントRAPの情報)は、ランダムアクセスポイントRAPに対応するフレームFRMのサンプル番号(ファイルの先頭から数えた順番)である。例えば、映像データでは、フレームFRMv(1)、FRMv(n+1)等のサンプル番号(“1”、“n+1”等)がボックス“STSS”に格納される。また、例えば、音声データでは、フレームFRMa(1)、FRMa(n+1)等のサンプル番号(“チャンクCNKv(1)のフレーム数+1”、“チャンクCNKv(1)のフレーム数+n+1”等)がボックス“STSS”に格納される。
図5は、チャンクCNKとランダムアクセスポイントRAPとの関係の別の例を示している。なお、図5は、1つのGOPのフレームFRMvが1つのチャンクCNKvにまとめられたときの例を示している。図の太線で示したフレームFRMvの意味は、図4と同じである。また、フレームFRMの括弧内の数字およびチャンクCNKの括弧内の数字の意味は、図4と同じである。
図5の例では、1つのGOPのフレームFRMvが1つのチャンクCNKvにまとめられているため、チャンクCNKの先頭フレームFRMがランダムアクセスポイントRAPに対応する。MP4ファイルでは、チャンクCNKの先頭フレームFRMの位置を示す情報(ファイルの先頭からのオフセットアドレス)が、図2に示したムービーボックス(moov)B20内の“STCO”と呼ばれるボックスに格納される。このため、1つのチャンクCNKが1つのGOPに対応しているMP4ファイルでは、ランダムアクセスポイントRAPの探索を効率よく実施できる。
したがって、例えば、映像領域32および音声領域34の空き容量が大きいときには、チャンク確定部20は、1つのチャンクCNKが1つのGOPに対応するように、各チャンクCNKのフレームFRMの数を設定する。なお、チャンクCNKのフレームFRMの数をGOPのフレーム数より少なくするとき、チャンク確定部20は、ランダムアクセスポイントRAPがチャンクCNKの先頭フレームFRMに対応するように、各チャンクCNKのフレームFRMの数を設定する。
例えば、チャンク確定部20は、IピクチャあるいはIDRピクチャがチャンクCNKの先頭フレームFRMになるように、各チャンクCNKのフレームFRMの数を設定する。これにより、この実施形態では、ランダムアクセスポイントRAPの探索効率を向上できる。例えば、MP4ファイルを再生する装置では、ランダムアクセスポイントRAPを効率よく探索できる。
また、チャンク確定部20は、チャンクCNKのフレームFRMの数をGOPのフレーム数より少なくするとき、MP4ファイルを再生する際の表示順序と符号化の処理順序との関係がチャンクCNK内で閉じるように、各チャンクCNKのフレームFRMの数を設定する。例えば、チャンク確定部20は、MP4ファイルを再生する際の表示順序にフレームFRMの順序を各チャンクCNK内で変更できるように、チャンクCNKのフレームFRMの数を設定する。これにより、この実施形態では、順序変更の対象フレームFRMの探索効率を向上できる。例えば、MP4ファイルを再生する装置では、フレームFRMの順序を表示順序にする際に、順序変更の対象フレームFRMを効率よく探索できる。
図6は、メモリ30の占有量が閾値以上のときのチャンクCNKの一例を示している。すなわち、図6は、映像領域32の占有量が第1閾値以上である第1条件および音声領域34の占有量が第2閾値以上である第2条件の少なくとも一方を満たすときのチャンクCNKの一例を示している。なお、図6は、GOPがIBBP構造のときのチャンクCNKvの一例を示している。図の太線で示したフレームFRMvは、Iピクチャを示している。また、フレームFRMvの括弧内の数字は、符号化の処理順序を示している。
図6の例では、GOPは、15個のフレームFRMを有している。IBBP構造のGOPでは、先ず、IピクチャのフレームFRMv(1)が符号化される。次に、BピクチャのフレームFRMv(2)、FRMv(3)が順次符号化される。そして、Pピクチャ、Bピクチャ、Bピクチャの順に符号化される処理が、フレームFRMv(4)−FRMv(15)まで繰り返される。例えば、フレームFRMv(3)の次に、PピクチャのフレームFRMv(4)が符号化される。フレームFRMv(4)の次に、BピクチャのフレームFRMv(5)、FRMv(6)が順次符号化される。
また、IBBP構造のGOPでは、MP4ファイルを再生したとき、BピクチャのフレームFRMvは、先に符号化処理が実施されたIピクチャやPピクチャのフレームFRMvより先に表示される。例えば、IピクチャのフレームFRMv(1)は、BピクチャのフレームFRMv(3)の次に表示される。そして、PピクチャのフレームFRMv(4)は、BピクチャのフレームFRMv(6)の次に表示される。
したがって、IBBP構造のGOPでは、チャンクCNKvのフレームFRMvの数は、3の倍数に設定される。例えば、チャンク確定部20は、3の倍数のうち、2以上の最小値(図6では、“3”)に、チャンクCNKvのフレームFRMvの数を設定する。これにより、例えば、フレームFRMv(1)、FRMv(2)、FRMv(3)は、チャンクCNKv(1)として管理される。また、フレームFRMv(4)、FRMv(5)、FRMv(6)は、チャンクCNKv(2)として管理される。そして、フレームFRMv(13)、FRMv(14)、FRMv(15)は、チャンクCNKv(5)として管理される。
このように、チャンク確定部20は、MP4ファイルを再生する際の表示順序にフレームFRMvの順序をチャンクCNKv内で変更可能なフレーム数のうち、2以上の最小値に、チャンクCNKvのフレーム数を設定する。なお、チャンクCNKvのフレーム数の設定は、この例に限定されない。例えば、1つのGOPは、フレームFRMv(1)−FRMv(6)のチャンクCNKvと、フレームFRMv(7)−FRMv(12)のチャンクCNKvと、フレームFRMv(13)−FRMv(15)のチャンクCNKvとにより管理されてもよい。
また、音声データのチャンクCNKaは、映像データのチャンクCNKvに対応するように設定される。例えば、チャンク確定部20は、チャンクCNKaのフレームFRMaの数を、チャンクCNKvのフレームFRMvの数と同じ数に設定する。
図7は、メモリ30の占有量が閾値以上のときのチャンクCNKの別の例を示している。なお、図7は、GOPがIPPP構造でGOPのフレーム数が奇数のときのチャンクCNKvの一例を示している。図の太線で示したフレームFRMvの意味は、図6と同じである。また、フレームFRMvの括弧内の数字の意味は、図6と同じである。
図7の例では、GOPは、15個のフレームFRMを有している。IPPP構造のGOPでは、先ず、IピクチャのフレームFRMv(1)が符号化される。次に、PピクチャのフレームFRMv(2)−FRMv(15)が順次符号化される。また、IPPP構造のGOPでは、MP4ファイルを再生する際の表示順序は、符号化の処理順序と同じである。
したがって、IPPP構造のGOPでは、例えば、チャンク確定部20は、チャンクCNKvのフレームFRMvの数を3に設定する。これにより、1つのGOPに含まれる複数のチャンクCNKvは、互いに同じ数のフレーム数に設定される。例えば、フレームFRMv(1)、FRMv(2)、FRMv(3)は、チャンクCNKv(1)として管理される。また、フレームFRMv(4)、FRMv(5)、FRMv(6)は、チャンクCNKv(2)として管理される。そして、フレームFRMv(13)、FRMv(14)、FRMv(15)は、チャンクCNKv(5)として管理される。
なお、チャンクCNKvのフレームFRMvの数は、3以外の2以上の値に設定されてもよい。例えば、チャンク確定部20は、チャンクCNKvのフレームFRMvの数を5に設定してもよい。この実施形態では、チャンクCNKvのフレームFRMvの数を2以上に設定することにより、MP4ファイルのサイズが増加することを抑制している。
例えば、メッセージMESは、図3で説明したように、チャンクCNK毎に生成される。このため、チャンクCNKvのフレームFRMvの数を1に設定したとき、メッセージMESの数が増加し、メッセージMESの合計のサイズが増加する。メッセージMESは、図2に示したムービーボックス(moov)B20に格納される。このため、ムービーボックス(moov)B20のサイズが増加し、MP4ファイルのサイズが増加する。なお、この実施形態では、チャンクCNKvのフレームFRMvの数を2以上に設定するため、MP4ファイルのサイズが増加することを抑制できる。
また、音声データのチャンクCNKaは、映像データのチャンクCNKvに対応するように設定される。例えば、チャンク確定部20は、チャンクCNKaのフレームFRMaの数を、チャンクCNKvのフレームFRMvの数と同じ数に設定する。
図8は、メモリ30の占有量が閾値以上のときのチャンクCNKの別の例を示している。なお、図8は、GOPがIPPP構造でGOPのフレーム数が偶数のときのチャンクCNKvの一例を示している。図の太線で示したフレームFRMvの意味は、図6と同じである。また、フレームFRMvの括弧内の数字の意味は、図6と同じである。
図8の例では、GOPは、16個のフレームFRMを有している。IPPP構造のGOPでは、先ず、IピクチャのフレームFRMv(1)が符号化される。次に、PピクチャのフレームFRMv(2)−FRMv(16)が順次符号化される。また、IPPP構造のGOPでは、MP4ファイルを再生する際の表示順序は、符号化の処理順序と同じである。
したがって、IPPP構造のGOPでは、例えば、チャンク確定部20は、チャンクCNKvのフレームFRMvの数を2に設定する。これにより、1つのGOPに含まれる複数のチャンクCNKvは、互いに同じ数のフレーム数に設定される。例えば、フレームFRMv(1)、FRMv(2)は、チャンクCNKv(1)として管理される。また、フレームFRMv(3)、FRMv(4)は、チャンクCNKv(2)として管理される。フレームFRMv(5)、FRMv(6)は、チャンクCNKv(3)として管理される。そして、フレームFRMv(15)、FRMv(16)は、チャンクCNKv(8)として管理される。
なお、チャンクCNKvのフレームFRMvの数は、2以外の2以上の値に設定されてもよい。例えば、チャンク確定部20は、チャンクCNKvのフレームFRMvの数を4に設定してもよいし、チャンクCNKvのフレームFRMvの数を8に設定してもよい。このように、この実施形態では、チャンクCNKvのフレームFRMvの数を2以上に設定するため、MP4ファイルのサイズが増加することを抑制できる。
また、音声データのチャンクCNKaは、映像データのチャンクCNKvに対応するように設定される。例えば、チャンク確定部20は、チャンクCNKaのフレームFRMaの数を、チャンクCNKvのフレームFRMvの数と同じ数に設定する。
図9は、メモリ30の占有量が閾値以上のときのチャンクCNKの別の例を示している。なお、図9は、GOPがIBP構造のときのチャンクCNKvの一例を示している。図の太線で示したフレームFRMvの意味は、図6と同じである。また、フレームFRMvの括弧内の数字の意味は、図6と同じである。
図9の例では、GOPは、16個のフレームFRMを有している。IBP構造のGOPでは、先ず、IピクチャのフレームFRMv(1)が符号化される。次に、BピクチャのフレームFRMv(2)が符号化される。そして、Pピクチャ、Bピクチャの順に符号化される処理が、フレームFRMv(3)−FRMv(16)まで繰り返される。例えば、フレームFRMv(2)の次に、PピクチャのフレームFRMv(3)が符号化される。フレームFRMv(3)の次に、BピクチャのフレームFRMv(4)が符号化される。
また、IBP構造のGOPでは、MP4ファイルを再生したとき、BピクチャのフレームFRMvは、先に符号化処理が実施されたIピクチャやPピクチャのフレームFRMvより先に表示される。例えば、IピクチャのフレームFRMv(1)は、BピクチャのフレームFRMv(2)の次に表示される。そして、PピクチャのフレームFRMv(3)は、BピクチャのフレームFRMv(4)の次に表示される。
したがって、IBP構造のGOPでは、チャンクCNKvのフレームFRMvの数は、2の倍数に設定される。例えば、チャンク確定部20は、2の倍数のうち、2以上の最小値(図9では、“2”)に、チャンクCNKvのフレームFRMvの数を設定する。これにより、例えば、フレームFRMv(1)、FRMv(2)は、チャンクCNKv(1)として管理される。また、フレームFRMv(3)、FRMv(4)は、チャンクCNKv(2)として管理される。フレームFRMv(5)、FRMv(6)は、チャンクCNKv(3)として管理される。そして、フレームFRMv(15)、FRMv(16)は、チャンクCNKv(8)として管理される。
なお、チャンクCNKvのフレームFRMvの数は、2以外の2の倍数に設定されてもよい。例えば、チャンク確定部20は、チャンクCNKvのフレームFRMvの数を4に設定してもよいし、チャンクCNKvのフレームFRMvの数を8に設定してもよい。このように、この実施形態では、チャンクCNKvのフレームFRMvの数を2以上に設定するため、MP4ファイルのサイズが増加することを抑制できる。
また、音声データのチャンクCNKaは、映像データのチャンクCNKvに対応するように設定される。例えば、チャンク確定部20は、チャンクCNKaのフレームFRMaの数を、チャンクCNKvのフレームFRMvの数と同じ数に設定する。
図6−図9で説明したように、チャンク確定部20は、チャンクCNKのフレームFRMの数をGOPのフレーム数より少なくするとき、GOPの構造およびGOPのサイズ(フレーム数)に基づいて、チャンクCNKのフレーム数を設定する。
なお、映像・音声データ処理装置10の動作は、この例に限定されない。例えば、チャンク確定部20は、映像領域32および音声領域34の空き容量に応じて、チャンクCNKのフレーム数を段階的に変更してもよい。例えば、映像領域32の第1閾値および音声領域34の第2閾値の少なくとも一方は、複数の値を有してもよい。そして、チャンク確定部20は、複数の値と比較される占有量に応じて、チャンクCNKのフレーム数を段階的に変更してもよい。
例えば、チャンク確定部20は、映像領域32の閾値に複数の値を設定し、映像領域32の占有量と複数の値との比較結果に応じて、チャンクCNKのフレーム数を段階的に変更してもよい。あるいは、チャンク確定部20は、音声領域34の閾値に複数の値を設定し、音声領域34の占有量と複数の値との比較結果に応じて、チャンクCNKのフレーム数を段階的に変更してもよい。
以上、この実施形態では、映像・音声データ処理装置10は、映像領域32および音声領域34の少なくとも一方の空き容量が小さいとき、チャンクのフレーム数をGOPのフレーム数より少なくする。例えば、チャンクCNKのフレーム数は、MP4ファイルを再生する際の表示順序と符号化の処理順序との関係がチャンクCNK内で閉じる条件と、IピクチャあるいはIDRピクチャがチャンクCNKの先頭フレームFRMになる条件との両方を満たす数に設定される。これにより、この実施形態では、ランダムアクセスポイントRAPの探索効率と順序変更の対象フレームFRMの探索効率とを向上できる。この結果、例えば、MP4ファイルを再生する装置では、ランダムアクセスポイントRAPを効率よく探索できる。また、例えば、MP4ファイルを再生する装置では、フレームFRMの順序を表示順序にする際に、順序変更の対象フレームFRMを効率よく探索できる。
図10は、別の実施形態における映像・音声データ処理装置12の一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。映像・音声データ処理装置12は、例えば、MP4ファイルを生成するシステムに、搭載される。
映像・音声データ処理装置12は、例えば、システム部22、メモリ30、データ符号化部40および多重化部50を有している。メモリ30は、例えば、映像領域32、音声領域34、設定領域36および付属情報領域38を有している。映像領域32および音声領域34は、上述した実施形態と同じである。設定領域36には、例えば、外部ホスト等により指定されるGOPの構造等が記憶される。付属情報領域38は、符号化された映像データVDAおよび音声データADAに関するヘッダ情報等が記憶される。なお、付属情報領域38は、映像データVDA用と音声データADA用とに分けられてもよい。
データ符号化部40は、例えば、映像データVDAおよび音声データADAを順次受け、受けた映像データVDAおよび音声データADAをMPEG−4等に準拠した符号化方式で順次符号化する。例えば、データ符号化部40は、符号化制御部42、映像符号化部44および音声符号化部46を有している。
符号化制御部42は、外部ホスト等により指定されたGOPの構造等を、メモリ30の設定領域36から取得する。そして、符号化制御部42は、取得したGOPの構造等を、映像符号化部44および音声符号化部46の符号化処理に反映させる。また、符号化制御部42は、例えば、映像データVDAの符号化に関するヘッダ情報を、映像符号化部44による1映像フレームの符号化に同期させて、メモリ30の付属情報領域38に格納する。映像データVDAの符号化に関するヘッダ情報は、例えば、GOPの構造、ピクチャタイプおよび1映像フレームのサイズである。さらに、符号化制御部42は、例えば、1映像フレームの符号化が完了したとき、1映像フレームの符号化が完了したことをシステム部22のシステム制御部26に通知する。
また、符号化制御部42は、例えば、音声データADAの符号化に関するヘッダ情報を、音声符号化部46による1音声フレームの符号化に同期させて、メモリ30の付属情報領域38に格納する。さらに、符号化制御部42は、例えば、1音声フレームの符号化が完了したとき、1音声フレームの符号化が完了したことをシステム部22のシステム制御部26に通知する。
映像符号化部44は、例えば、映像データVDAを順次受け、受けた映像データVDAをMPEG−4等に準拠した符号化方式で順次符号化し、符号化映像データVED(符号化された映像データVDA)を生成する。例えば、映像符号化部44は、符号化制御部42がメモリ30の設定領域36から取得したGOPの構造等に基づいて、映像データVDAを符号化する。そして、映像符号化部44は、符号化映像データVEDをメモリ30の映像領域32に格納する。
音声符号化部46は、例えば、音声データADAを順次受け、受けた音声データADAをMPEG−4等に準拠した符号化方式で順次符号化し、符号化音声データAED(符号化された音声データADA)を生成する。そして、音声符号化部46は、符号化音声データAEDをメモリ30の音声領域34に格納する。
システム部22は、例えば、多重化部50の制御およびメッセージMESの生成を実施する。例えば、システム部22は、チャンク確定部24、システム制御部26およびメッセージ生成部28を有している。システム制御部26は、1映像フレームの符号化の完了通知を符号化制御部42から受けたとき、映像データVDAの符号化に関するヘッダ情報を、メモリ30の付属情報領域38から取得する。すなわち、システム制御部26は、1映像フレームの符号化の完了に応答して、GOPの構造、ピクチャタイプおよび1映像フレームのサイズ等を取得する。そして、システム制御部26は、例えば、映像データVDAの符号化に関するヘッダ情報(GOPの構造、ピクチャタイプおよび1映像フレームのサイズ等)を、チャンク確定部24およびメッセージ生成部28に通知する。
また、システム制御部26は、1音声フレームの符号化の完了通知を符号化制御部42から受けたとき、音声データADAの符号化に関するヘッダ情報を、メモリ30の付属情報領域38から取得する。そして、システム制御部26は、例えば、音声データADAの符号化に関するヘッダ情報を、チャンク確定部24およびメッセージ生成部28に通知する。
チャンク確定部24は、映像領域32の占有量および音声領域34の占有量をそれぞれ監視する。そして、チャンク確定部24は、映像領域32および音声領域34の少なくとも一方の空き容量が小さいとき、図6−図9で説明したように、GOPの構造およびピクチャタイプ等に基づいて、チャンクのフレーム数を設定する。
例えば、チャンク確定部24は、システム制御部26から受けた映像データVDAの符号化に関するヘッダ情報および音声データADAの符号化に関するヘッダ情報に基づいて、チャンクのフレーム数を設定する。そして、チャンク確定部24は、例えば、設定したチャンクのフレーム数の情報(以下、チャンク設定通知とも称する)を、多重化部50の多重化制御部52にシステム制御部26を介して通知する。
メッセージ生成部28は、例えば、システム制御部26から受けた情報(GOPの構造、ピクチャタイプおよび1映像フレームのサイズ等)に基づいて、チャンクに対応するメッセージMESを生成する。そして、メッセージ生成部28は、生成したメッセージMESを、対応するチャンクの出力に同期させて、外部(例えば、図3に示した外部装置100)に出力する。
多重化部50は、映像領域32および音声領域34にそれぞれ記憶された符号化映像データVEDおよび符号化音声データAEDを多重化して、外部(例えば、図3に示した外部装置100)に出力する。例えば、多重化部50は、多重化制御部52、入力部54、多重化バッファ56、暗号化部58および出力バッファ60を有している。
多重化制御部52は、例えば、システム部22からの情報に基づいて入力部54等を制御する。例えば、多重化制御部52は、システム制御部26から受けるチャンク設定通知に応答して、入力部54を起動する。入力部54は、例えば、1チャンク分の符号化映像データVEDを映像領域32から読み出す処理と1チャンク分の符号化音声データAEDを音声領域34から読み出す処理とを、交互に実施する。なお、映像領域32および音声領域34から読み出された符号化映像データVEDおよび符号化音声データAEDは、多重化バッファ56に順次出力される。
多重化バッファ56は、入力部54から受けた符号化映像データVEDおよび符号化音声データAEDを、暗号化部58に順次出力する。これにより、暗号化部58は、1チャンク分の符号化映像データVEDおよび1チャンク分の符号化音声データAEDを交互に受ける。暗号化部58は、多重化バッファ56から受ける符号化映像データVEDおよび符号化音声データAEDを、順次暗号化する。暗号化の方式等は、例えば、システム部22により予め指定される。例えば、暗号化部58は、システム部22のシステム制御部26から多重化制御部52を介して、暗号化の方式等に関する情報を受ける。
暗号化部58で暗号化された符号化映像データVEDおよび符号化音声データAEDは、出力バッファ60に順次出力される。すなわち、出力バッファ60は、暗号化された1チャンク分の符号化映像データVEDおよび暗号化された1チャンク分の符号化音声データAEDを交互に受ける。出力バッファ60は、暗号化された1チャンク分の符号化映像データVEDと暗号化された1チャンク分の符号化音声データAEDとを交互に出力する。
すなわち、出力バッファ60は、1チャンク分の符号化映像データVEDと1チャンク分の符号化音声データAEDとを多重化したストリームデータSDAを、外部(例えば、図3に示した外部装置100)に出力する。例えば、ストリームデータSDAおよびメッセージMESを受けた外部装置は、ストリームデータSDAおよびメッセージMESをMP4ファイルに格納し、MP4ファイルを生成する。
このように、映像・音声データ処理装置12は、MPEG−4等に準拠したエンコーダとして機能する。なお、映像・音声データ処理装置12の構成は、この例に限定されない。例えば、映像・音声データ処理装置12は、符号化された映像データおよび音声データを復号する機能を有してもよい。すなわち、映像・音声データ処理装置12は、コーデックやトランスコーダとして機能するように形成されてもよい。
図11は、図10に示した映像・音声データ処理装置12の動作の一例を示している。図11の動作は、ハードウエアのみで実現されてもよく、ハードウエハをソフトウエアにより制御することにより実現されてもよい。
処理S100では、データ符号化部40は、入力データ(映像データVDAおよび音声データADA)を符号化し、符号化した入力データをメモリ30に書き込む。例えば、データ符号化部40の映像符号化部44は、映像データVDAを符号化して生成した符号化映像データVEDを、メモリ30の映像領域32に書き込む。また、例えば、データ符号化部40の音声符号化部46は、音声データADAを符号化して生成した符号化音声データAEDを、メモリ30の音声領域34に書き込む。
処理S110では、チャンク確定部24は、映像領域32および音声領域34の占有量が閾値以上か否かを判定する。例えば、チャンク確定部24は、システム制御部26から受けた1映像フレームのサイズ情報(符号化されたフレームのサイズ情報)を用いて、映像領域32の占有量を算出する。なお、チャンク確定部24は、映像領域32や音声領域34に対する書き込みアドレスや読み出しアドレスに基づいて、映像領域32や音声領域34の占有量を算出してもよい。
そして、チャンク確定部24は、算出した占有量と映像領域32の閾値(以下、第1閾値とも称する)とを比較する。第1閾値は、例えば、映像領域32のサイズに基づいて、予め設定されている。なお、音声領域34の占有量と閾値(以下、第2閾値とも称する)との比較も、映像領域32の占有量と第1閾値との比較と同様の方法により実施される。第2閾値は、例えば、音声領域34のサイズに基づいて、予め設定されている。
映像領域32の占有量が第1閾値以上である第1条件および音声領域34の占有量が第2閾値以上である第2条件の少なくとも一方を満たすとき(処理S110のYes)、チャンク確定部24の動作は、処理S130に移る。すなわち、映像領域32および音声領域34の空き容量が小さいとき、チャンク確定部24の動作は、処理S130に移る。第1条件および第2条件のいずれも満たさないとき(処理S110のNo)、チャンク確定部24の動作は、処理S120に移る。すなわち、映像領域32および音声領域34の空き容量が大きいとき、チャンク確定部24の動作は、処理S120に移る。
処理S120では、チャンク確定部24は、チャンクのフレーム数を、1GOPのフレーム数と同じ数に設定する。例えば、処理S120で設定されたチャンクのフレーム数の情報(チャンク設定通知)は、多重化部50に通知される。このように、映像領域32および音声領域34の空き容量が大きいときには、チャンクのフレーム数は、1GOPのフレーム数と同じ数に設定される。一方、映像領域32および音声領域34の空き容量が小さいときには、処理S130、S140において、チャンクのフレーム数は、1GOPのフレーム数より少ない数に設定される。
処理S130では、チャンク確定部24は、例えば、システム制御部26から受けた情報(GOPの構造、ピクチャタイプおよび1映像フレームのサイズ等)に基づいて、1チャンク当たりのフレーム数(“j”)を決定する。処理S140では、チャンク確定部24は、処理S130で決定したフレーム数(“j”)に、チャンクのフレーム数を設定する。例えば、チャンク確定部24は、処理S130で決定したチャンクのフレーム数の情報(チャンク設定通知)を、多重化部50に通知する。
処理S150では、例えば、多重化部50は、処理S120、S140で設定されたチャンクに基づいて、符号化データ(符号化映像データVEDあるいは符号化音声データAED)を順次出力する。そして、例えば、システム制御部26は、1チャンク分の符号化データの出力が終了したか否かを判定する。1チャンク分の符号化データの出力が終了したとき(処理S150のYes)、処理S180において、メッセージ生成部28は、出力したチャンクに対応するメッセージMESを出力する。一方、1チャンク分の符号化データの出力が終了していないとき(処理S150のNo)、映像・音声データ処理装置12の動作は、処理S160に移る。
処理S160では、例えば、システム制御部26は、メモリ30の映像領域32および音声領域34のいずれかがオーバーフローしたか否かを判定する。なお、オーバーフローの判定は、システム制御部26以外のモジュール(例えば、チャンク確定部24)により実施されてもよい。メモリ30の映像領域32および音声領域34のいずれかがオーバーフローしたとき(処理S160のYes)、処理S170において、オーバーフローした領域(映像領域32や音声領域34)のデータが削除される。一方、メモリ30がオーバーフローしていないとき処理S160のNo)、映像・音声データ処理装置12の動作は、処理S150に戻る。
このように、映像・音声データ処理装置12は、映像領域32および音声領域34の少なくとも一方の空き容量が小さいとき、チャンクのフレーム数をGOPのフレーム数より少なくする。なお、チャンクのフレーム数の条件は、上述した実施形態と同じである。また、映像・音声データ処理装置12の動作は、この例に限定されない。例えば、チャンク確定部24は、映像領域32および音声領域34の空き容量に応じて、チャンクのフレーム数を段階的に変更してもよい。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。