以下、実施の形態について、図面を参照しながら具体的に説明する。
以下で説明する実施の形態は、いずれも本発明の好ましい一具体例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、本発明の最上位概念を示す独立請求項に記載されていない構成要素については、より好ましい形態を構成する任意の構成要素として説明される。なお、同一の構成要素には同一の符号を付し、説明を省略する場合がある。
(実施の形態)
本実施の形態において、ネットワークに送信される符号化データのデータ量を削減する符号化装置等について説明する。
図1は、本実施の形態に係るコンテンツ再生システムSの構成を示す構成図である。
図1に示されるように、コンテンツ再生システムSは、送信装置1と再生装置2とを備える。送信装置1と再生装置2とは、ネットワーク3により通信可能に接続されている。
コンテンツ再生システムSは、送信装置1が保有している動画像コンテンツ(以降、単にコンテンツともいう)を、1以上の再生装置2により再生するコンテンツ再生システムである。
送信装置1は、コンテンツを保有しており、コンテンツをネットワーク3を通じて再生装置2に送信する送信装置である。送信装置1は、コンテンツを圧縮符号化(以降、単に符号化ともいう)する符号化装置10を備える。符号化装置10は、符号化によりコンテンツのデータ量を削減した符号化データを生成し、生成した符号化データをネットワーク3に送信する。
再生装置2は、ネットワーク3を通じて送信装置1からコンテンツを受信し、受信したコンテンツを再生する再生装置である。再生装置2は、送信装置1が保有しているコンテンツをもとに符号化装置10が生成した符号化データを、ネットワーク3を通じて受信する。再生装置2は、符号化データを復号する復号装置20を備える。復号装置20は、ネットワーク3から受信した符号化データを復号することでコンテンツを復元し、復元したコンテンツを再生装置2により再生する。
ネットワーク3は、送信装置1と再生装置2とを通信可能に接続するネットワークである。ネットワーク3は、具体的には、IEEE802.11a、b、g、n規格等に適合する無線LAN(Local Area Network)、又は、IEEE802.3規格等に適合する有線LANである。
なお、コンテンツ再生システムSは、2以上の再生装置2を備えていてもよい。その場合、2以上の再生装置2それぞれがネットワーク3に接続し、送信装置1が送信する符号化データを受信することができることを要する。送信装置1は、再生装置2が2以上存在する場合には、2以上の再生装置2それぞれに対してユニキャスト送信してもよいし、2以上の再生装置2が受信できるようにブロードキャスト送信してもよい。
図2は、本実施の形態に係る符号化装置10のハードウェア構成を示すブロック図である。なお、復号装置20も、符号化装置10と同じハードウェア構成を有する。
図2に示されるように、符号化装置10は、CPU11と、メインメモリ12と、ストレージ13とを備える。
CPU11は、メインメモリ12又はストレージ13に格納された制御プログラムを実行するプロセッサである。符号化装置10が実行する処理は、CPU11が制御プログラムを実行することで実現され得る。
メインメモリ12は、CPU11が制御プログラムを実行するときに使用するワークエリアとして用いられる揮発性の記憶領域である。
ストレージ13は、コンテンツを構成するフレームのデータを記憶している不揮発性の記憶装置である。なお、ストレージ13は、例えばHDD(Hard Disk Drive)、又は、SSD(Solid State Drive)等であり、符号化装置10に内蔵されたものであってもよいし、USB(Universal Serial Bus)規格等により外付けされるものであってもよい。
以降において、本実施の形態に係る符号化装置及び復号装置の構成について説明する。なお、符号化装置については、最初に関連技術に係る符号化装置を説明した後で、本実施の形態に係る符号化装置を説明する。ここで、関連技術とは、ネットワークにおいて行われている他の通信の通信量を圧迫したり、ネットワークにおいて生じ得る通信ロスにより他の通信に悪影響を及ぼしたりすることがある従来技術の一例である。復号装置については、関連技術に係る復号装置と、本実施の形態の復号装置とに差異はない。
図3は、関連技術に係る符号化装置50の構成を示すブロック図である。符号化装置50は、本実施の形態における符号化装置10の位置に配置される。
図3に示されるように、符号化装置50は、フレーム保持部100と、取得部101と、ブロッキングフィルタ102と、変換部103と、差分部104と、量子化部105と、符号化部106と、逆量子化部107と、参照用保持部108とを備える。
フレーム保持部100は、符号化対象のコンテンツを構成するフレームのデータを保持している記憶部である。フレーム保持部100は、例えばメインメモリ12等により実現される。
取得部101は、符号化対象フレームを取得する処理部である。取得部101は、フレーム保持部100に格納されているコンテンツに含まれるフレームのうちの符号化対象フレームを読み出すことで取得する。符号化対象フレームは、例えば、コンテンツを構成する複数のフレームのうち、符号化装置50が管理している現在時刻情報に対応付けられるフレームが順次割り当てられる。
ブロッキングフィルタ102は、取得部101が取得した符号化対象フレームに含まれる処理単位であるブロック境界に対してブロッキングフィルタ処理を施す処理部である。ブロッキングフィルタ処理は、変換処理(後述)の処理単位であるブロックの境界で生じ得る不連続性を抑制するために、変換処理の前に施すべき処理である。
変換部103は、ブロッキングフィルタ102がブロッキングフィルタ処理を施した後のフレームに対してブロックごとに変換処理を施す処理部である。変換処理の一例は、周波数変換処理である。周波数変換は、符号化対象フレームを、基底となる複数の三角関数の足し合わせとして表現する場合の係数(周波数係数)に変換する。なお、変換処理は、次数変換(例えば、アダマール変換)処理等を採用することもできる。
差分部104は、変換部103が変換処理を施した後の符号化対象フレーム(周波数係数)と、参照用保持部108が保持している参照用フレームとの差分を算出することで、差分フレームを生成する処理部である。差分部104は、上記差分を算出する前に、参照用保持部108から参照用フレームを読み出す。差分部104は、符号化対象フレームがキーフレームでない場合に上記差分を算出し、キーフレームである場合には上記差分を算出しない。なお、符号化対象フレームがキーフレームであるか、又は、キーフレームでないかは、差分部104が変換部103から符号化対象フレームを取得した時点までに決定されていてもよいし、何らかの制御に基づいて差分部104が決定してもよい。この制御には、例えば、後述する制御部111による制御がある。
差分部104が参照用フレームを読み出すタイミングは、取得部101がフレーム保持部100から符号化対象フレームを読み出すタイミングより後になる。なぜなら、取得部101がフレーム保持部100から符号化対象フレームを読み出した後に、ブロッキングフィルタ102及び変換部103の処理が実行され、その後に、差分部104が参照用フレームを読み出すからである。言い換えれば、ブロッキングフィルタ102及び変換部103が、取得部101による符号化対象フレームの読み出しに対して、差分部104による参照用フレームの読み出しを遅延させる遅延部として機能するとも言える。
量子化部105は、変換部103が変換処理を施した後の符号化対象フレーム、又は、差分部104が生成した差分フレームを量子化する(つまり、上記フレームを量子化係数に変換する)処理部である。
符号化部106は、量子化部105が量子化したフレームを符号化することで符号化データを生成する処理部である。符号化部106が生成した符号化データが、送信装置1が送信するコンテンツデータに相当する。
逆量子化部107は、量子化部105による量子化後のフレームを逆量子化する処理部である。逆量子化部107は、量子化部105による量子化後のフレームがキーフレームである場合に逆量子化を行う。逆量子化部107は、逆量子化したフレームを参照用フレームとして参照用保持部108に格納する。
参照用保持部108は、逆量子化部107が逆量子化した後のキーフレームを参照用フレームとして保持する記憶部である。参照用保持部108が保持するキーフレームは、差分部104に参照され、差分を算出する処理に用いられる。参照用保持部108は、例えばメインメモリ12により実現される。
以上のように構成された符号化装置50の処理について説明する。
図4は、関連技術に係る符号化装置50の処理を示すフロー図である。
ステップS101において、取得部101は、符号化対象フレームをフレーム保持部100から読み出すことで取得する。
ステップS102において、ブロッキングフィルタ102は、取得部101が取得した符号化対象フレームにおけるブロック境界に対してブロッキングフィルタ処理を施す。
ステップS103において、変換部103は、ブロッキングフィルタ102によるブロッキングフィルタ処理後のフレームに対してブロックごとに変換処理を施す。
ステップS104において、符号化装置50は、符号化対象フレームがキーフレームであるか否かに応じて処理を分岐する。符号化対象フレームがキーフレームである場合(ステップS104でYes)にはステップS105に進み、そうでない場合(ステップS104でNo)には、ステップS111に進む。
ステップS105において、量子化部105は、変換部103が変換処理を施した後の符号化対象フレームに量子化処理を施す。
ステップS106において、逆量子化部107は、量子化部105による量子化後のキーフレームに逆量子化処理を施す。
ステップS107において、逆量子化部107は、ステップS106で逆量子化したフレームを参照用保持部108に格納する。
ステップS111において、差分部104は、変換部103が変換処理を施した後の符号化対象フレームと、参照用保持部108から読み出した参照用フレームとの差分を、差分フレームとして生成する。
ステップS112において、量子化部105は、差分部104が変換処理を施した後の差分フレームを量子化する。
ステップS108において、符号化部106は、量子化部105が量子化したキーフレームを符号化して符号化データを生成する。生成された符号化データは、送信装置1により再生装置2に送信される。
図5は、本実施の形態に係る復号装置20の構成を示すブロック図である。
図5に示されるように、復号装置20は、復号部201と、加算部202と、逆量子化部203と、参照用保持部204と、逆変換部205と、デブロッキングフィルタ206と、生成部207とを備える。
復号部201は、送信装置1が送信したコンテンツデータである符号化データを復号対象フレームとして受信して復号する処理部である。復号部201が復号により生成するフレームは、符号化部106による符号化の対象となった元データである符号化対象フレーム(量子化係数)である。
加算部202は、復号部201が復号した復号対象フレームと、参照用保持部204が保持している参照用フレームとを加算することで、加算フレーム(量子化係数)を生成する処理部である。加算部202は、上記の加算処理をする前に、参照用保持部204から参照用フレームを読み出す。加算部202が生成した加算フレームは、変換部103が符号化対象フレームに基づいて生成した周波数係数である。
逆量子化部203は、加算部202が加算処理により生成した加算フレームを逆量子化することで、復号対象フレーム(周波数係数)を算出する処理部である。逆量子化部203の処理は、符号化装置50の逆量子化部107と同じである。
参照用保持部204は、逆量子化部203が生成した復号対象フレームのうちのキーフレームを、参照用フレームとして保持する記憶部である。参照用保持部204が保持するキーフレームは、加算部202に参照され、加算処理に用いられる。参照用保持部204は、例えばメインメモリ12等により実現される。
逆変換部205は、逆量子化部203が逆量子化により生成した復号対象フレーム(周波数係数)に対して、逆変換処理を施す処理部である。逆変換処理は、符号化装置50の変換部103による変換とは逆の変換を行う。具体的には、逆変換処理は、変換部103が周波数変換を行う場合には逆周波数変換処理であり、変換部103が次数変換を行う場合には逆次数変換処理である。
デブロッキングフィルタ206は、逆変換部205が逆変換処理を施した後の復号対象フレームにおけるブロック境界に対してデブロッキングフィルタ処理を施す処理部である。
生成部207は、デブロッキングフィルタ206によるデブロッキングフィルタ処理が施された加算フレームを取得し、取得した加算フレームに属性情報等を付加することでフレームを生成し、後段の処理に渡す処理部である。
以上のように構成された復号装置20の処理について説明する。
図6は、関連技術に係る復号装置20の処理を示すフロー図である。
ステップS201において、復号部201は、符号化データを受信して復号することで復号対象フレームを取得する。
ステップS202において、復号装置20は、復号対象フレームがキーフレームであるか否かに応じて処理を分岐する。復号対象フレームがキーフレームである場合(ステップS202でYes)にはステップS203に進み、そうでない場合(ステップS202でNo)には、ステップS211に進む。
ステップS203において、逆量子化部203は、復号対象フレームであるキーフレームを逆量子化する。
ステップS204において、逆量子化部203は、ステップS203で逆量子化したキーフレームを参照用保持部204に格納する。
ステップS205において、逆変換部205は、逆量子化部203が逆量子化した加算フレームに対して、逆変換処理を施す。
ステップS206において、デブロッキングフィルタ206は、逆変換部205が逆変換処理を施した後の加算フレームにおけるブロック境界に対してデブロッキングフィルタ処理を施す。
ステップS207において、生成部207は、フレームを生成し、後段の処理に渡す。
ステップS211において、加算部202は、復号部201が復号により生成したフレームと、参照用保持部204から読み込んだ参照用フレームとを加算することで、加算フレームを生成する。
ステップS212において、逆量子化部203は、加算部202が加算処理により生成した加算フレームを逆量子化する。
以上の関連技術に係る符号化装置では、映像内の動きがない場合でも、激しく映像が動いている場合でも、符号化対象フレームの直前のキーフレームからの差分に相当するデータ量を有するフレーム間符号化フレームが生成され、ネットワークに送信される。そのため、ネットワークにおいて行われている他の通信の通信量を圧迫したり、ネットワークにおいて生じ得る通信ロスにより他の通信に悪影響を及ぼしたりすることがある。
以降において、本実施の形態に係る符号化装置において、符号化データのサイズを削減する技術についてより詳細に説明する。より具体的には、本実施の形態に係る符号化装置は、符号化処理結果に応じて、符号化されたフレームを出力するか否かを制御することで、ネットワークに送信される符号化データのデータ量を削減する。
図7は、本実施の形態に係る符号化装置の構成を示すブロック図である。図8は、静止画を含むスライドショーのコンテンツの一例の説明図である。
図7に示されるように、符号化装置10は、フレーム保持部100と、取得部101と、ブロッキングフィルタ102と、変換部103と、差分部104Aと、量子化部105と、符号化部106と、逆量子化部107と、参照用保持部108と、制御部111と、切替部112とを備える。
ここで、フレーム保持部100と、取得部101と、ブロッキングフィルタ102と、変換部103と、量子化部105と、符号化部106と、逆量子化部107と、参照用保持部108とについては、上記符号化装置50の同名の構成要素と同じ機能を有するので、詳細な説明を省略する。
差分部104Aは、上記符号化装置50における差分部104と同様、変換部103が変換処理を施した後の符号化対象フレームと、参照用保持部108が保持している参照用フレームとの差分を、差分フレームとして生成する処理部である。差分部104Aが変換部103からフレームを取得する時点では、このフレームがキーフレームであるか又は差分フレームであるかは決定されておらず、後段の制御部111により切替部112の状態が制御されることで、このフレームがキーフレームになるか、差分フレームになるかが決定される。差分部104Aに入力されたフレームがフレーム間符号化される(差分フレームになる)場合には、後段の切替部112を通じて量子化部105に提供される。一方、差分部104Aに入力されたフレームがフレーム内符号化される(キーフレームになる)場合には、差分部104Aに入力されたフレームが量子化部105に提供され、差分部104Aが生成した差分フレームは後段の処理に使われない。
制御部111は、符号化部106が符号化により生成した符号化データに基づく判定を行い、判定結果に応じて、上記符号化データを出力するか否かを制御するとともに、新たな符号化対象フレームの符号化を制御する処理部である。
具体的には、制御部111は、コンテンツに含まれる一連のフレームのうちの第一フレームと、第一フレームの次の第二フレームとの両方を符号化部106がフレーム間符号化した場合に、(a)符号化された第二フレームのフレームサイズが、符号化された第一フレームのフレームサイズを含む所定範囲に属さないときに、符号化された第二フレームを出力するよう制御し、(b)符号化された第二フレームのフレームサイズが、符号化された第一フレームのフレームサイズを含む所定範囲に属するときに、符号化された第二フレームを出力しないよう制御する。ここで所定範囲は、第一フレーム及び第二フレームが実質的に同一とみなされる範囲として定められる範囲であり、例えば、符号化された直前のキーフレームのデータサイズの1/100又は1/1000程度とすることができる。なお、「フレームのフレームサイズ」という場合、「フレームのデータサイズ」を意味する。以降でも同様とする。
制御部111は、符号化部106が符号化により生成した符号化データを取得して、符号化データに含まれるフレームがキーフレームであるか否かを示す情報と、符号化データのデータサイズとを得る。そして、制御部111は、上記情報と上記データサイズとに基づく判定を行い、判定の結果に応じて、符号化装置10が次に符号化する新たな符号化対象フレームを、フレーム内符号化するか、又は、フレーム間符号化するか(言い換えれば、どのフレームをキーフレームにし、どのフレームを差分フレームにするか)を決定する。また、制御部111は、上記判定の結果に応じて、符号化部106が生成した符号化データを出力するか否か、つまり、上記符号化データを送信装置1から再生装置2へ送信するか否かを決定する。そして、制御部111は、決定結果に応じて、切替部112の状態を制御し、また、符号化部106が生成した符号化データを出力するかしないかを制御する。
制御部111による判定は、主としてフレームに対する静止画検出に基づいてなされる。ここで、静止画検出とは、コンテンツに含まれる複数の連続したフレームが、同一、又は、実質的に同一の静止画であることを検出する処理をいう。複数の連続したフレームが同一の静止画になるのは、例えば、連続した複数のフレームそれぞれが、コンピュータグラフィックスにより写真、文字又は図形などが配置された画像である場合であり、例えば、コンピュータのプレゼンテーション用アプリケーションで生成された、静止画が数秒〜数分間ごとに切り替わるスライドショーのコンテンツである。スライドショーコンテンツの一例を図8に示す。図8に示されるコンテンツは、順次切り替えられる3つの静止画を含む。3つの静止画のうち1つ目の静止画がフレーム1〜6に含まれ、2つ目の静止画がフレーム7〜10に含まれ、3つ目の静止画がフレーム11〜16に含まれている。
また、複数の連続したフレームが同一ではなく実質的に同一の静止画になるのは、例えば、連続した複数のフレームそれぞれが、動きが極めて少ない風景を動画カメラにより撮影した動画を構成するフレームである場合である。この場合、風景に含まれる極めて少ない動き、又は、撮影時に撮像素子が取得するセンサ値に含まれるノイズ等の影響により、複数の連続したフレームが厳密に同一にはならない可能性がある。なお、どの程度の大きさの静止画の動きを実質的に同一とみなすかを、上記の所定範囲を増減させることで調整することができる。
なお、制御部111は、上記(a)において、符号化された第二フレームのフレームサイズが、符号化された第一フレームのフレームサイズと異なるときに、符号化された第二フレームを出力するよう制御し、上記(b)において、符号化された第二フレームのフレームサイズが、符号化された第一フレームのフレームサイズに一致するときに、符号化された第二フレームを出力しないよう制御してもよい。これは、上記所定範囲の大きさをゼロとした場合に相当する。つまり、符号化された2つのフレームのデータサイズが厳密に同一である場合に相当する。以降の説明では、この場合を例として説明する。
なお、制御部111は、一連のフレームのうちの第三フレームを符号化部106がフレーム内符号化した場合には、一連のフレームのうち第三フレームの次の第四フレームをフレーム間符号化するよう制御してもよい。これにより、符号化装置10は、フレーム内符号化した後のフレームをフレーム間符号化することで符号化データのサイズを削減することができる。
また、制御部111は、第三フレームを符号化部106がフレーム内符号化した場合には、一連のフレームのうちの第四フレーム以降のフレームを、再生順に順次にフレーム間符号化するよう制御し、第四フレーム以降のフレームのうちの第五フレームをフレーム間符号化した時点において、フレーム間符号化された第五フレームのデータサイズが閾値以上であるときには、一連のフレームのうち第五フレームの次の第六フレームをフレーム内符号化するよう制御してもよい。これにより、符号化装置10は、フレーム間符号化されたフレームのデータサイズが比較的大きい場合に、新たなフレームをフレーム内符号化する。フレーム間符号化されたフレームとキーフレームとの差分が比較的大きい場合に、新たなフレームを新たなキーフレームとしてフレーム内符号化することで、それ以降のフレームと新たなキーフレームとの差分を比較的小さくする効果がある。
切替部112は、後段の量子化部105に提供されるフレームを、変換部103が変換処理を施した後のフレームとするか、又は、差分部104Aが差分処理により生成した差分フレームとするかを切り替える切替部である。切替部112が、変換部103が変換処理を施した後のフレームを量子化部105に提供する状態、つまり、図7において端子aと端子cとが接続される状態を状態Aという。また、切替部112が、差分部104Aが差分処理により生成した差分フレームを量子化部105に提供する状態、つまり、図7において端子bと端子cとが接続される状態を状態Bという。切替部112が状態Aをとるか、状態Bをとるかは、制御部111により制御される。
なお、上記の差分部104A及び切替部112の動作は、上記符号化装置50の差分部104による、符号化対象フレームがキーフレームでない場合に上記差分を算出し、キーフレームである場合には上記差分を算出しないという動作と同様である。つまり、差分部104A及び切替部112は、上記符号化装置50の差分部104を、2つの構成要素に分けてより具体的に記載したものである。
以上のように構成された符号化装置10の処理についてフロー図を用いて説明する。
図9は、本実施の形態に係る符号化装置10の処理を示すフロー図である。
図9に示されるように、符号化装置10は、符号化処理S301を実行し、実行した符号化処理S301の結果に応じて符号化制御処理S302を実行する。そして、符号化処理S301により生成され、符号化制御処理S302により生成された符号化データについての出力制御処理S303を行う。出力制御処理S303では、符号化制御処理S302における制御、より具体的には、符号化制御処理S302で記憶する情報(後述)に基づいて、符号化処理S301で符号化により生成された符号化データを出力するか、又は、出力しない(つまり廃棄する)。なお、符号化データを出力しない場合に、符号化データを出力しないことを示す情報、又は、直前のフレームが連続していることを示す情報を出力してもよい。再生装置2(復号装置20)が一定時間符号化データを受信しない場合、送信装置1又はネットワーク3に問題が生じてコンテンツの再生を継続できないと判断し、再生を中止することを回避するためである。
符号化処理S301及び符号化制御処理S302について、以下で詳しく説明する。
図10は、本実施の形態に係る符号化装置10の符号化処理S301を示すフロー図である。
図10におけるステップS101からS108の処理については、図4に示されるステップS101からS108の処理と実質的に同じである。ここで、ステップS104Aは、ステップS104の処理の内容をより具体的にしたものである。
ステップS104Aにおいて、制御部111は、符号化対象フレームをフレーム内符号化するか又はフレーム間符号化するかを、切替部112の状態に応じて切り替える。すなわち、切替部112が状態Aである場合(ステップS104Aで「フレーム内符号化」)には、符号化対象フレームをフレーム内符号化する一連の処理(ステップS105〜S107)を行う。一方、切替部112が状態Bである場合(ステップS104Aで「フレーム間符号化」)には、符号化対象フレームをフレーム間符号化する一連の処理(ステップS111〜S112)を行う。
図11は、本実施の形態に係る符号化装置10の符号化制御処理S302を示すフロー図である。
図11に示されるように、ステップS401において、制御部111は、符号化部106により符号化されたフレームがキーフレームであるか否か、言い換えれば、符号化部106がフレームをフレーム内符号化したか、又は、フレーム間符号化したかを判定する。符号化部106により符号化されたフレームがキーフレームであると判定した場合(ステップS401でYes)には、ステップS402に進み、そうでない場合(ステップS401でNo)には、ステップS411に進む。
ステップS402において、制御部111は、カウンタをリセットする。このカウンタは、フレーム間符号化されたフレームのデータサイズが、その直前にフレーム間符号化されたフレームのデータサイズと同一であることが、何フレーム連続して生じているかを計数するためのカウンタであり、後述するステップS423等で用いられる。符号化されたフレームがキーフレームである場合、上記の連続性が途絶えるので上記カウンタをリセットする。
ステップS403において、制御部111は、本符号化制御処理S302の後に行う出力制御処理S303において、ステップS401の判定の対象となった符号化されたフレームの出力をするよう制御する。具体的には、制御部111は、上記フレームを出力することを示す情報(例えばフラグ情報)を記憶しておく。
ステップS404において、制御部111は、一連のフレームのうちの次のフレームをフレーム間符号化するよう制御する。具体的には、制御部111は、切替部112を状態Bに変更する。ステップS404の処理を終えたら、本フロー図に示される一連の処理を終了する。
ステップS411において、制御部111は、符号化部106が符号化により生成した符号化データのデータサイズが閾値より大きいか否かを判定する。符号化データのデータサイズが閾値より大きいと判定した場合(ステップS411でYes)にはステップS412に進み、そうでない場合(ステップS411でNo)には、ステップS421に進む。なお、閾値は、例えば、当該フレームの直前にフレーム内符号化されたキーフレームのデータサイズの4/5とする。フレーム間符号化されたフレームのデータサイズが比較的大きい場合に、新たなフレームをフレーム内符号化することで、以降のフレーム間符号化されたフレームのデータサイズを小さくするためである。
ステップS412において、制御部111は、本符号化制御処理S302の後に行う出力制御処理S303において、ステップS401の判定の対象となった符号化されたフレームの出力をするよう制御する。
ステップS413において、制御部111は、一連のフレームのうちの次のフレームをフレーム内符号化するよう制御する。具体的には、制御部111は、切替部112を状態Aに変更する。ステップS413の処理を終えたら、本フロー図に示される一連の処理を終了する。
ステップS421において、制御部111は、符号化部106がフレーム間符号化により生成した符号化データのデータサイズが、前回フレーム間符号化により生成した符号化データのデータサイズと一致するか否かを判定する。一致すると判定した場合(ステップS421でYes)には、ステップS422へ進み、一致しないと判定した場合(ステップS421でNo)には、ステップS431に進む。なお、前回の符号化がフレーム内符号化である場合は、上記「一致しないと判定した場合」に含むとする。
ステップS422において、制御部111は、本符号化制御処理S302の後に行う出力制御処理S303において、ステップS401の判定の対象となった符号化されたフレームの出力を禁止するよう制御する。
ステップS431において、制御部111は、本符号化制御処理S302の後に行う出力制御処理S303において、ステップS401の判定の対象となった符号化されたフレームの出力をするよう制御する。
ステップS423において、制御部111は、カウンタをインクリメントする。このカウンタは、フレーム間符号化されたフレームのデータサイズが、その直前にフレーム間符号化されたフレームのデータサイズと同一である連続フレーム数を計数するためのカウンタである。
ステップS424において、制御部111は、カウンタが所定値より大きいか否か、つまり、カウンタが所定値を超えたか否かを判定する。カウンタが所定値より大きいと判定した場合(ステップS424でYes)には、ステップS425に進み、そうでない場合(ステップS424でNo)には、ステップS436に進む。所定値は、フレーム間符号化されたフレームのデータサイズが、その直前にフレーム間符号化されたフレームのデータサイズと同一であることが何フレーム連続して生じると、その次のフレームをフレーム内符号化するかを示す値であり、例えば、30又は150程度とすることができ、また、1秒又は5秒程度に含まれるフレーム数というように再生時間により定めてられてもよい。再生時間により定められる場合には、フレームレート(fps)を用いてフレーム数に換算される。
ステップS425において、制御部111は、一連のフレームのうちの次のフレームをフレーム内符号化するよう制御する。具体的には、制御部111は、切替部112を状態Aに変更する。ステップS425の処理を終えたら、本フロー図に示される一連の処理を終了する。本ステップの処理により、制御部111は、一連のフレームのうちの連続した所定値の個数のフレーム間符号化されたフレームのデータサイズが閾値以下であるときには、所定値の個数のフレームの次のフレームをフレーム内符号化するよう制御する。これにより、フレーム間符号化されたフレームの送信を禁止する制御(ステップS422)を連続的に行う場合であっても、所定値の個数のフレームごとにフレーム内符号化されたフレームを含む符号化データを再生装置2に受信させることができる。これにより、たとえネットワーク3で符号化データが失われた場合であっても、その次に送信されるフレーム内符号化されたフレームにより、再生装置2によるコンテンツの再生を継続することができる利点がある。
ステップS436において、制御部111は、一連のフレームのうちの次のフレームをフレーム間符号化するよう制御する。具体的には、制御部111は、切替部112を状態Bに変更する。ステップS436の処理を終えたら、本フロー図に示される一連の処理を終了する。
以上の一連の処理により、符号化装置10は、静止画検出に基づいて、符号化データのサイズを削減することができる。
以降では、符号化装置10が行う静止画検出に基づく符号化データのデータサイズの削減効果についてのシミュレーション評価を、静止画検出に関わる処理とともに説明する。なお、以降の説明におけるグラフでは、一連のフレームを再生順に並べた場合のフレーム(フレームナンバ)を横軸に示し、フレームそれぞれが符号化されて生成されるフレームサイズを縦軸に示す。また、グラフ上のデータサイズ等に対応するシンボルを結ぶ直線は、同種のシンボルの推移を分かりやすく示すための説明用の直線である。データサイズ等は、横軸の整数値に対応する各シンボルだけが意味をもち、直線のうち、隣接する整数値の間の部分は意味をもたないものとする。
図12及び図13は、本実施の形態に係る符号化装置10による静止画検出の効果を説明する説明図である。
まず、図12を参照しながら、符号化装置10の動作と比較されるイントラモードとインターモードとについて説明する。イントラモードとは、コンテンツに含まれるフレームそれぞれをフレーム内符号化するモードである。また、インターモードとは、コンテンツに含まれるフレームを、一定間隔のフレームごとにフレーム内符号化し、それ以外のフレームをフレーム間符号化するモードである。
図12は、3つの静止画が順次切り替わるスライドショーのコンテンツ(図8参照)を符号化する場合の、イントラモード及びインターモードのそれぞれの場合における、符号化データのデータサイズを示している。
イントラモードの場合、符号化されたフレーム1〜6それぞれのデータサイズが約300バイトである。フレーム1〜6それぞれは、同一の静止画を含むので、符号化されたフレーム1〜6それぞれのデータサイズが一致している。同様に、符号化されたフレーム7〜10それぞれのデータサイズが約500バイトで一致しており、また、符号化されたフレーム11〜16それぞれのデータサイズが約200バイトで一致している。
インターモードの場合、最初のフレームであるフレーム1はフレーム内符号化され、符号化されたフレーム1のデータサイズは約300バイトである。フレーム2以降のフレームそれぞれは、当該フレームの直前にフレーム内符号化されたフレームであるフレーム1からの差分を用いてフレーム間符号化される。その結果、符号化されたフレーム2〜6それぞれのデータサイズが約50バイトになる。フレーム2〜6それぞれは、同一の静止画を含むので、符号化されたフレーム2〜6それぞれのデータサイズが一致している。ここで、フレーム2〜6それぞれは、同一の静止画を含むフレームにもかかわらず、フレームのデータサイズがゼロでなく、50バイト生じている。なぜなら、インターモードでは、最初にフレーム1がフレーム内符号化され、その後、フレーム2以降のフレームが再生順に順次に、直前にフレーム内符号化されたフレームであるフレーム1からの差分を用いてフレーム間符号化されるので、フレーム2〜6それぞれが同量の差分データを有するからである。
また、上記と同様に、符号化されたフレーム7〜10それぞれのデータサイズが約200バイトで一致しており、また、符号化されたフレーム11〜16それぞれのデータサイズが約100バイトで一致している。
イントラモードの場合よりもインターモードの場合の方が、符号化されたフレームのデータサイズを抑制することができていると言える。しかしながら、イントラモードにおいて、同一の静止画を連続的に再生する部分において同一データサイズのデータを送信する必要がある。このデータの通信により、ネットワーク3において行われている他の通信の通信量を圧迫したり、ネットワーク3において生じ得る通信ロスにより他の通信に悪影響を及ぼしたりするという問題がある。
図13には、図12で示したイントラモード及びインターモードに加えて、静止画判定モードで出力されるフレームのデータサイズと、各フレームについての閾値とが示されている。閾値は、当該フレームの直前にフレーム内符号化されたキーフレームのデータサイズの4/5としている。
静止画判定モードでは、符号化装置10は、フレーム1をフレーム内符号化する。フレーム内符号化されたフレーム1は、出力制御処理S303で出力するよう制御される(ステップS403)。また、符号化装置10は、次のフレーム2をフレーム間符号化するよう制御する(ステップS404)。
次に、符号化装置10は、フレーム2をフレーム間符号化する。フレーム間符号化されたフレーム2のデータサイズは閾値以下であり(ステップS411でNo)、また、前回フレーム間符号化されたフレームが存在しない(ステップS421でNo)ので、出力制御処理S303で出力するよう制御される(ステップS431)。また、符号化装置10は、次のフレーム3をフレーム間符号化するよう制御する(ステップS436)。なお、フレーム1が第三フレームに相当し、フレーム2が第四フレームに相当する。
次に、符号化装置10は、フレーム3をフレーム間符号化する。フレーム間符号化されたフレーム3のデータサイズは閾値以下であり(ステップS411でNo)、また、符号化されたフレーム3のデータサイズが前回フレーム間符号化されたフレーム2のデータサイズと一致する(ステップS421でYes)ので、符号化装置10は、出力制御処理S303で出力を禁止するよう制御する(ステップS422)。その後、符号化装置10は、フレーム4〜6それぞれについて、フレーム3と同様の処理をし、符号化されたフレーム4〜6それぞれの出力を禁止するよう制御する。ここで、フレーム2が第一フレームに相当し、フレーム3が第二フレームに相当する。
次に、符号化装置10は、フレーム7をフレーム間符号化する。フレーム間符号化されたフレーム7のデータサイズは閾値以下であり(ステップS411でNo)、また、符号化されたフレーム7のデータサイズが前回フレーム間符号化されたフレーム6のデータサイズと異なる(ステップS421でNo)ので、出力制御処理S303で出力するよう制御される(ステップS431)。その後、符号化装置10は、フレーム8〜10それぞれについて、フレーム3と同様の処理をし、符号化されたフレーム8〜10それぞれの出力を禁止するよう制御する。フレーム11以降については、フレーム7〜10と同様である。
このように、静止画判定モードでは、フレーム間符号化された各フレームについて、前回フレーム間符号化されたフレームと同一のデータサイズになる場合に出力を禁止する。このようにして、同一の静止画についての同一の差分データを含むデータ、より具体的には、図13におけるフレーム3〜6、8〜10及び12〜16がネットワーク3に送信されることを回避し、ネットワーク3に送信されるデータ量を削減することができる。
以上のように本実施の形態に係る符号化装置は、一連のフレームの中で連続する、同一又は実質的に同一の画像である2つのフレームがフレーム間符号化された場合に、上記2つのフレームのうちの2番目のフレームが符号化された符号化データを、ネットワークに送信しなくなる。これら2つのフレームは、同一又は実質的に同一の画像を有するので、上記2番目のフレームの符号化データが送信されなくても、再生されるコンテンツへの影響が比較的小さい。これにより、符号化装置は、ネットワークに送信される符号化データのデータ量を削減することができる。
また、符号化装置は、一連のフレームの中で連続する同一の画像である2つのフレームがフレーム間符号化された場合に、上記2つのフレームのうちの上記2番目のフレームが符号化された符号化データをネットワークに送信しなくなる。これにより、符号化装置は、ネットワークに送信される符号化データのデータ量を削減することができる。
また、符号化装置は、フレーム内符号化したフレームの後のフレームをフレーム間符号化することで符号化データのサイズを削減することができる。
また、符号化装置は、フレーム間符号化されたフレームの送信を禁止する制御を連続的に行う場合であっても、所定値の個数のフレームごとにフレーム内符号化されたフレームを含む符号化データを出力する。これにより、たとえ符号化データがネットワークでの通信中に失われた場合であっても、その次に送信されるフレーム内符号化されたフレームにより、再生装置によるコンテンツの再生を継続することができる。
また、符号化装置が送信する符号化データを受信する復号装置が一定時間符号化データを受信しない場合、再生装置によるコンテンツの再生の中止を回避することができる。再生装置は、一定時間符号化データを受信しない場合、送信装置又はネットワークに問題が生じてコンテンツの再生を継続できないと判断し、再生を中止することがあるからである。
以上、本発明の符号化装置、及び、コンテンツ再生システム等について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。