以下、図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
<実施形態1>
[ハードウェア構成]
図1は、メディアファイル生成装置100の構成の一例を示す。メディアファイル生成装置100では、システムバス101にCPU102、システムプログラム実行時の一時記憶装置であるRAM103、システムプログラムが格納される不揮発性記憶装置であるROM104が接続されている。システムプログラムやアプリケーションプログラムが、ROM104からRAM103に読み込まれ、CPU102によって実行される。また、システムバス101には、符号化/復号化部105、メタデータ処理部106、表示部107、ユーザーインターフェース部108、通信制御部109、音声復号化処理部110、音声出力部111が接続されている。システムバス101は、これらの各ブロック間でデータを伝達する。またRAM103は、出力バッファを有し、メディアファイルの生成処理のデータバッファや、メディアファイルに格納するデータの出力先としても使用される。
画像符号化/復号化処理部105は、H.265(HEVC)、H.264(AVC)、AV1、JPEGなどに従う動画や静止画のビデオコーデックであり、静止画や動画のデータの符号化および復号化の処理を実行する。音声符号化・復号化処理部110はMP3、AAC、AC-3、FLAC、LPCM、WMAなどに従う音声コーデックであり、音声データの符号化および復号化の処理を実行する。メタデータ処理部106は、画像符号化/復号化処理部105によって符号化されたデータ(符号化データ)及び音声符号化/復号化処理部110によって符号化されたデータを取得する。そして、所定のファイルフォーマット(例えばHEIF)に準拠したメディアファイルを生成する。具体的には、メタデータ処理部106は、静止画や動画、オーディオ等を含むメディアファイルに格納されるメタデータの解析処理を実行し、静止画や動画、オーディオに関する情報の生成や、符号化データに関するパラメータ情報の取得を行う。そして、メタデータ処理部106は、これらの情報をメタデータとして、符号化データと共にファイルに格納する処理を実行する。なお、取得する符号化データはあらかじめROM104に格納されたデータや通信制御部109を介して取得しRAM103のバッファに保存されたデータでもよい。また、メタデータ処理部106は、ファイルに格納されたメタデータを解析し静止画や動画、音声の再生時のメタデータ処理を行う。
表示部107は、メディアファイル生成装置100のアプリケーションを表示する画面を意図しており、例えば液晶ディスプレイ装置である。また、表示部107は、ユーザーによるGUI(Graphic User Interface)によるアプリケーションの操作を可能にするように、画面タッチセンサを備えてもよい。また、表示部107は、生成されたファイルの確認を行うためのファイルの再生を行ってもよい。ユーザーインターフェース部108は、ユーザーによるメディアファイル生成装置100への操作(入力)を受け付けるためのインターフェースであり、例えば、ボタンやスイッチ等の物理的な操作インターフェースで構成される。
通信制御部109は、ネットワークに接続して伝送フレームの送受信を行うネットワークインタフェースである。通信制御部109は、例えば、有線LANのイーサネット(登録商標)のPHYおよびMAC(伝送メディア制御処理)である。あるいは、メディアファイル生成装置100が無線LANに接続可能な場合、通信制御部109にはIEEE802.11a/b/g/n/ac/ax等の無線LAN制御を実行するコントローラ、RF回路、アンテナが含まれる。
音声出力部111はメディアファイル生成装置100の音声出力先デバイスへの制御を行う処理部を意図しており、例えばヘッドホンやスピーカー等への音声出力制御を行う。本実施形態では画像及び音声の入力部を備えない構成として記載したが、別途入力手段を設けてもよい。
[メディアファイル生成処理]
次に、メディアファイル生成装置100のメディアファイル生成処理の流れについて、図2、図5、図8を参照しながら説明する。図2は、メディアファイル生成処理のフローチャートである。具体的には、HEIFファイルフォーマットに従って1つ以上の静止画を格納するファイルを生成する処理の流れを示している。図2のフローチャートの各ステップは、CPU102によるソフトウェア、画像符号化/復号化処理部105、メタデータ処理部106、音声符号化/復号化処理部110の何れかによって実行される処理を示す。なお、以下の説明において、CPU102という記述はCPU102で実行するソフトウェア処理であるものとする。図5は、本実施形態においてメディアファイル生成装置100が生成するHEIFファイルの一例であるHEIFファイル500の構造を示している。HEIFファイル500は、メタデータ格納領域510、メタデータ領域530及び符号化データ格納領域550を有する。メタデータ格納領域510(MetaBox(meta))は、アンタイムドなメタデータ(主に静止画)に関するメタデータ領域である。また、メタデータ領域530(MoovieBox(moov))は、動画や音声等のプレゼンテーションに関するメタデータに関するメタデータ領域である。また、符号化データ格納領域550(MediaDataBox(mdat))は、符号化データ等のデータを格納するデータ領域である。
また、図8は、本実施形態で出力されるHEIFファイルの例を示す図である。図8は、HEIFファイルフォーマットに従って、1つ以上の静止画と、1つのオーディオと、スライドショーを構成するグループとを格納した例を示している。
メディアファイル生成処理は、S201から開始し、まずS202において、CPU102が、RAM103もしくはROM104上で記憶している画像データの中から、HEIFファイルに格納する画像データを取得(選択)する。当該取得処理は、予めメディアファイル生成装置100に対して設定された情報や、ユーザーインターフェース部108を介するユーザーによる操作等に基づいて行われてもよい。画像データは、1つの静止画が格納されたHEIFファイルでもよいし、JPEGなど他の静止画のファイルであってもよい。または複数の静止画が格納されてHEIFファイル内の1つの画像データであってもよいし、符号化されていないRAW画像データであってもよい。あるいは、静止画データであればファイルとして記憶していなくてもよい。さらには別途画像撮像手段を設けて取得した画像データであってもよい。次にS203において、CPU102は、S202で取得した画像データを解析して画像属性情報を取得する。画像属性情報には、例えば画像の幅と高さ、色コンポーネントの個数およびビット長等が含まれる。S204では、画像符号化/復号化処理部105は、画像データをHEVC符号化し符号化データを、RAM103上の出力バッファに転送して保存しておく。HEVC符号化済みの符号化データの場合は符号化データのままバッファへ転送してもよいし、指定のパラメータで再符号化を行ってもよい。
なお、他の符号化形式で符号化済みの符号化データであった場合はHEVC符号化データとなるようにトランスコードを行ってもよい。当該符号化データは、符号化データ格納領域550に格納される符号化データの1つである。なお、以降の説明において、S204で保存した(HEIFファイルに格納する)画像データ/符号化データを総称して画像データとも称するものとする。
次にS205では、HEIFファイルに格納する画像データに関するメタデータを生成する処理であり、メタデータ処理部106により実行される。メタデータ処理部106は、S205で生成された符号化データの復号化において必要なパラメータセットを取得する。当該パラメータセットは、具体的には、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS),ピクチャパラメータセット(PPS)等である。さらに、S205で生成されるメタデータは、画像アイテム情報や画像属性情報等である。
画像アイテム情報は、図5の領域514(ItemInfoBox(iinf))に格納されるエントリデータである。iinfのエントリデータは、画像データをファイル内で識別するためのアイテムID(識別情報)と、HEVC符号化画像であることを示すアイテムタイプを設定する。
一方、画像属性情報は、図5の領域516(ItemPropertiesBox(iprp))に格納されるデータである。すなわち、領域517(ItemPropetyContainerBox(ipco))のエントリデータと、領域518(ItemPropertyAssociationBox(ipma))のエントリデータである。ipcoには、取得したHEVCのパラメータセットを示すエントリデータや、選択した画像の幅と高さを示すエントリデータ等の属性情報が格納される。そして、ipmaには、アイテムIDとipcoのエントリデータへの関連付けを示すエントリデータが生成される。S205にて生成された画像属性情報のデータは、図5のメタデータ格納領域510(MetaDataBox(meta))に格納するメタデータの一部として、RAM103上の出力バッファに保存される。また、サムネイル画像や取得した画像のEXIF等のメタデータ構造、また取得した画像が派生画像等の場合領域515(ItemReferenceBox(iref))に示す画像データ間の関連付けを示すirefのエントリデータを生成する。EXIF等のメタデータの場合は画像アイテムに関連するメタデータアイテムとしてアイテム情報を生成する。また派生画像の場合格納される符号化データが複数のサブ画像として構成される場合が有り得、その場合は派生画像を示す画像に関する画像アイテム情報及び、画像属性情報に加え、サブ画像個別にも画像アイテム情報及び画像属性情報を生成する。
処理がS205の後S206に進むと、CPU201は、生成するHEIFファイルに、まだ他の画像データを格納するかどうかを確認する。もし他に格納する画像データがあれば、処理はS202に戻り、そうでなければ処理はS207に進む。処理がS206からS202に戻った場合は、CPU201は他の画像データを取得(選択)して、前述したようなS203からS209までの処理を実行する。
S207では、CPU102が、生成中のHEIFファイルにオーディオ付きのスライドショー(音声再生と共に画像の連続的な表示処理)の設定を格納するどうかを判定する。当該判定処理は、予めメディアファイル生成装置100に対して設定された情報や、ユーザーインターフェース部108を介するユーザーによる操作等に基づいて行われてもよい。オーディオ付きスライドショーの設定をHEIFファイルに格納する場合は(S207でYES)、S208の処理に進む。
S208では、CPU102が、RAM103もしくはROM104上で記憶しているオーディオ(音声)データの中から、HEIFファイルに格納するオーディオ(音声)データを取得(選択)する。当該取得処理は、予めメディアファイル生成装置100に対して設定された情報や、ユーザーインターフェース部108を介するユーザーによる操作等に基づいて行われてもよい。オーディオデータは、1つのオーディオが格納されたMP3ファイルやAACファイル等の音声ファイルでもよいし、MP4等の動画ファイルに格納されたオーディオデータであってもよい。またその他オーディオデータを格納可能なファイルであってもよい。または複数のオーディオが格納されてファイル内の1つのオーディオデータであってもよい。あるいは、オーディオ(音声)データであればファイルとして記憶していなくてもよい。また、別途マイク等の音声入力手段を用いて取得した音声データであってもよい。
S209では、音声符号化/復号化処理部110は、オーディオデータを符号化し符号化データを、RAM103上の出力バッファに転送して保存しておく。なお、符号化済みの音声データであった場合そのままの形式でバッファに転送してもよい。当該符号化データは、符号化データ格納領域550に格納される符号化データの1つである。なお、以降の説明において、S209で保存した(HEIFファイルに格納する)音声データ/符号化データを総称して音声データとも称するものとする。
次にS210では、HEIFファイルに格納するオーディオ(音声)データに関するメタデータを生成する処理であり、メタデータ処理部106により実行される。
メタデータ処理部106は、図5の領域530(MoovieBox(moov))に格納する領域531(MoovieHeaderBox(mvhd))および領域532(TrackBox(trak))を生成する。
次に、領域532(TrackBox(trak)に格納する領域533(TrackHeaderBox(tkhd))および領域534(MediaBox(mdia))を生成する。
さらに、領域534(MediaBox(mdia)に格納するMediaHeaderBox(mdhd)、HandlerBox(hdlr)および、MediaInformationBox(minf)を生成する。
図8に示すように、hdlrに指定するMediaBox(mdia)のハンドラタイプは‘soun’であり得る。
次に、領域537MediaInformationBox(minf)に格納する領域538、領域539及び領域540を生成する。ここで、領域538は、SoundMediaHeaderBox(smhd)を示す。また、領域539は、DataInformationBox(dinf)を示す。また、領域540は、SampleTableBox(stbl)を示す。
さらに、領域540には、不図示のSampleDescriptionBox(stsd)やSampleSizeBox(stsz)、TimeToSampleBox(stts)、SampleToChunkBox(stsc)を格納する。
S210にて生成されたオーディオデータに関するメタデータは、図5の動画や音声等のプレゼンテーションに関するメタデータに関するメタデータ領域530に格納するメタデータの一部として、RAM103上の出力バッファに保存される。
次に、S211では、オーディオ付きスライドショーのメタデータ生成処理が実行される。なお、S211の処理については後述する。
S212では、メタデータ処理部106は、HEIFファイルに格納される画像の中から代表画像を決定して、主要画像アイテム情報のメタデータを生成する(メタデータに主要画像アイテム情報を設定する)。当該代表画像の決定処理は、予めメディアファイル生成装置100に対して設定された情報や、ユーザーインターフェース部108を介するユーザーによる操作等に基づいて行われてもよい。S212で生成されたメタデータは、図5の領域512(PrimaryItemBox(pitm))に格納される。pitmのデータフォーマットは、単純に代表とする画像のアイテムIDを指定するものである。S212で生成されたメタデータは、RAM103上の出力バッファに保存される。
最後のS213の処理は、メタデータ処理部106により実行される。S213では、メタデータ処理部106は、図5の領域501(FileTypeBox(ftyp))と、領域511(HandlerBox(hdlr))に格納するデータを生成する。なお、図8に示すように、hdlrに指定するMetaDataBox(meta)のハンドラタイプは‘pict’であり得る。
そして、メタデータ処理部106は、生成したftypとhdlrのメタデータと、RAM103に保存しておいたメタデータ格納領域510に格納されるメタデータと、符号化データ格納領域550に格納される符号化データと結合する。
さらに、符号化データの位置を識別するためのメタデータとして領域513に示すItemLocationBox(iloc)を生成する。
また、オーディオデータを格納した場合(S207でYES)においてもオーディオ符号化データの位置を識別するためのメタデータとして、領域540に、不図示のChunkOffsetBox(stco)を生成しオフセット情報を格納する。
そして、メタデータ処理部106は、図5に示すような構造のデータをRAM103上に形成し、HEIFファイルとして完成して出力する。その後、処理はS214に進んで本処理フローが終了する(S214)。生成されたHEIFファイルのデータは、CPU102によりRAM103からROM104に書き込んで保存され得る。
なお、S208からS211のオーディオ付きのスライドショーの設定を格納する処理がスキップされた場合は(S207でNO)、図5の領域530(MoovieBox(moov))が生成されない。そのため、その中に格納される領域531から領域540の各種メタデータも生成されず、HEIFファイルのメタデータに含まれないことも有り得る。
しかし、例えばスライドショー以外の目的でイメージシーケンスを格納する場合や、関連するオーディオデータを格納する場合においては領域530(MoovieBox(moov))を生成する。そして、最終的に生成されるHEIFファイルのメタデータに、moovが含まれ得る。
なお、本実施形態ではオーディオ付きスライドショーの設定を格納する/しないの判定のみに着目したフローを行ったが、別途オーディオなしのスライドショー設定を格納するフローを実施してもよい。またその他HEIFに格納する各種メタデータを設定する処理を含めてもよい。例えば静止画とオーディオの紐づけのみを行う設定を含むHEIFファイルを生成する場合や、ブラケット撮影した画像をグループ化して格納する処理などHEIFで指定し得る各種メタデータを考慮したフローであってもよい。
以上に示したフロー従ってHEIFファイルの内部構造に格納した値(データ)の例を、図8を参照して説明する。図8は、本実施形態で出力されるHEIFファイルの例を示す図である。図8の記述801に示すPrimaryItemBox(pitm)(領域512に対応)には、item_IDとして2049が格納されている。なお、PrimaryItemBoxの拡張を行い本Boxに指定するIDとしてオーディオ付きスライドショーを識別するグループのグループIDを指定するようにしてもよい。具体的には後述するSlideshowWithAudioEntityToGroup(slda)(領域520に対応)を識別するグループIDを指定する。その場合はIDとして後述するgroup_idである1001を指定する。記述802に示すItemInfoBox(領域514に対応)は、各画像アイテムをitem_IDで識別可能とし、item_IDで識別される画像アイテムがどのような種類の画像アイテムであるかを示す。item_IDが2001である画像アイテムは‘hvc1’であり、HEVC符号化イメージであることを示す。同様にしてitem_ID2048である画像アイテムまですべておよびitem_ID2050の画像アイテムがHEVC符号化イメージとして格納されている。またitem_ID2049である画像アイテムは‘grid’であり、グリッド派生画像アイテムであることを示す。グリッド派生画像アイテムは複数の画像アイテムを組み合わせて1つの画像アイテムとして構成する画像アイテムである。構成情報については後述するItemReferenceBox(領域515に対応)およびItemDataBoxを参照する。記述803に示すItemLocationBox(iloc)(領域513に対応)は、各画像データビットストリームのファイル内の格納位置を示している。item_IDが2049の画像アイテムはconstruction_methodが1を示しており、記述807に示すItemDataBox(idat)内にデータが存在することを示している。また、その他の画像は、記述810に示すMediaDataBox(符号化データ格納領域550に対応)内のどの位置にデータが存在するかを特定することが可能となっている。記述804に示すItemReferenceBox(iref)(領域515に対応)は、画像アイテム間の参照関係を示した領域である。ここで、reference_type‘dimg‘は派生画像、すなわちitem_ID2049のグリッド派生画像アイテムを構成する複数の画像を参照するための参照先の画像アイテムIDを示している。また、reference_type‘dimg‘の派生画像は、派生画像アイテムであるitem_ID2049からitem_ID2045から2048までの画像アイテムが参照されていることを示している。次にreference_type‘thmb‘はサムネイル画像、すなわちitem_ID2050の画像アイテムがitem_ID2049のサムネイル画像であることを示している。
記述805に示すItemPropertiesBox(iprp)(領域516に対応)内のItemPropertyContainerBox(ipco)(領域517に対応)には、画像の属性情報を示すItemPropertyが格納されている。hvcCはHEVC符号化パラメータを示し、ispeは画像のサイズを示す属性情報である。記述806は各画像アイテムと属性情報との関連を示したItemPropertyAssociationBox(ipma)(領域518に対応)を示す。各画像アイテムが順にipco内の属性情報と関連づけが行われる。例えばitem_ID2001およびitem_ID2049には共通ispeが関連づけられており共通の画像サイズであることが示されている。一方でitem_ID2050は異なる‘ispe’が適応されており異なる画像サイズであることがわかる。
記述808は、SlideshowWithAudioEntityToGroupBox(slda)(領域520に対応)である。group_idは1001、グループのエントリ数は46個が指定されている。最初に指定されたentity_id1は後述する音声トラックのトラックIDを示しており、以降に指定されたentity_idはスライドショー表示の順に各画像のアイテムIDが2001から2044、2049まで指定されている。これにより音声付スライドショー再生表示するための情報が格納されている。
記述809は、MovieBox(moov)(領域530に対応)であり、MoovieHeaderBox(mvhd)(領域531に対応)とTrackBox(trak)(領域532に対応)が格納されている。本Box構造を用いて音声のプレゼンテーションに関する情報が格納されている。TrackBoxにはさらにTrackHeaderBox(tkhd)(領域533に対応)とMediaBox(mdia)(領域534に対応)が格納されている。TrackHeaderBoxのflagsは3を示しており、本トラックに音声が格納されていることを示す。またTrackID1は音声トラックを識別するIDを示しており、前述したSlideshowWithAudioEntityToGroupBoxのentity_idに示したID値である。
さらに、MediaBox(mdia)には、MediaHeaderBox(mdhd)、HandlerBox(hdlr)、MediaInformationBox(minf)が格納されている。MoovieHeaderBox、TrackHeaderBox、MediaHeaderBoxにはそれぞれ生成時間、編集時間、タイムスケール、デュレーションに関する情報が格納されている。
HandlerBox(hdlr)には音声トラックを識別するためのhdlrTypeとして‘soun’が指定されている。またMediaInformationBox(minf)には音声トラックであるためSoundMediaHeaderBox(smhd)(領域538に対応)が格納されている。またDataInformationBox(dinf)(領域539に対応)には音声符号化データの格納位置を示す情報が格納されている。また詳細については図示していないが、SampleTableBox(stbl)(領域540に対応)には各音声サンプルに関する情報が格納されている。具体的にはSampleDescriptionBox(stsd)を用いて音声符号化に関する情報等が格納されている。また各サンプルのサイズを示す情報がSampleSizeBox(stsz)内に格納されている。またその他TimeToSampleBox(stts)やSampleToChunkBox(stsc)、ChunkOffsetBox(stco)を用いて音声サンプルに関する情報が格納されている。
本実施形態では以上の構成でオーディオ付きのスライドショーを再生表示するための音声及び画像をグループ化し、スライドショー表示の際の各画像の属性情報を各画像に適応する方法で構成した。しかし、音声と画像をグループ化し、関連する属性をプロパティないしグループのパラメータとして保持する方法であれば異なる構成であってもよい。
[スライドショーのメタデータ生成処理]
次に、図2のS211のスライドショーのメタデータ生成処理について、図3、図5、図6、図7、図8、図9、図10及び図11を参照しながら説明する。本実施形態では、音声付スライドショーを構成する音声及び画像をグループ(SlideshowWithAudioEntityToGroup)としてHEIFファイルに格納する。図3は、本実施形態におけるメタデータの生成処理のフローチャートを示す。この処理はS301から開始し、はじめにS302において、CPU102が、HEIFファイルに格納する画像データの中からスライドショーで表示する1つ以上の画像データを選択し、且つそれらの表示順序を決定する。本実施形態では、HEIFファイルに格納するスライドショー表示する画像を表示する時間(期間)に関する情報は指定しない構成とした。つまり、ファイル生成時には値を指定せず、再生時に任意の値を決定して再生する。一方で、別途表示時間を決定し、ファイルに格納するようにしてもよい。次に、S303において、CPU102は、スライドショー表示の際に再生する音声データを選択し、メタデータから音声トラックIDを取得する。S302とS303選択処理は、予めメディアファイル生成装置100に対して設定された情報や、ユーザーインターフェース部108を介するユーザーによる操作等に基づいて行われてもよい。
次にS304において、メタデータ処理部106は、オーディオ付きスライドショーの再生画像及び音声のグループを設定する。具体的には、メタデータ処理部106は、スライドショーで表示する画像及び再生する音声をグループ化するための情報(グループ情報)を生成する。このグループ情報は、図5の領域519(GroupsListBox(grpl))に格納するメタデータである。HEIFでは、grplに画像データなどのアイテムやトラックのグループ情報が格納される。グループ情報には、グループ識別情報としてのグループIDと、グループタイプが付与され、HEIFファイル内において識別される。本実施形態では、S304において、メタデータ処理部106は、グループ情報として音声付スライドショーグループ情報(SlideshowWithAudioEntityToGroupBox)を生成する。図6に、SlideshowWithAudioEntityToGroupBoxのデータフォーマットを示す。また図7にSlideshowWithAudioEntityToGroupBoxの派生元となるEntityToGroupBoxのデータフォーマットを示す。
メタデータ処理部106は、図6に示すデータフォーマットのデータを生成し、grplに格納する(図5の領域520を参照)。本SlideshowWithAudioEntityToGroupBoxは複数の画像イメージセットを音声付でスライドショー表示することを目的としたentityのグループを識別するためのBoxである。このSlideshowWithAudioEntityToGroupBoxのグループタイプは記述601に示す‘slda’であり、音声付スライドショーに使用するトラック及びアイテムのグループであることを意味する。
図6のデータフォーマットは、EntityToGroupBoxからの拡張である。そのため、図7の記述701に示すgroup_id、記述702に示すnum_entries_in_groupは別途指定される。ここで、group_idは、グループIDを示す。また、num_entries_in_groupは、グループに含むトラック及びアイテムの個数を示す。
また、記述703に示すentity_idはトラックIDまたはアイテムIDを示し、最初に指定したentity_idは音声トラックを示すトラックIDを指す。S304では選択した音声のトラックIDを先頭のentity_idに設定する。
そして、S305において、以降のentity_idにスライドショーで表示する選択画像のアイテムIDを表示順序通りに指定する。なお、本実施形態ではSlideshowWithAudioEntityToGroupBoxを別途定義してオーディオ付きのスライドショーグループを格納可能とする構成とした。
しかしながら、図11に示すようにISO/IEC23008-12:2017 CDAM3で定義されたslidエンティティグループを拡張して構成してもよい。
例えば、記述1101が示すflagsを用いて音声付のスライドショーグループであるか、音声がついていないスライドショーグループであるかを識別する方法である。具体的には、with_audioを定義(例えば値1)し、flags&with_audioが正(true)となる場合は音声付スライドショーグループを示す。一方でflags&with_audioが負(false)となる場合は音声なしのスライドショーグループを示す。つまり、flags&with_audioが正(true)となる場合は最初のentity_idは音声トラックIDのみを示すものとする。
この方法の場合、SlideshowEntityToGroupBoxに限らず、他のgrouping_typeのEntityToGroupにもiaugグループを用いて画像アイテムと音声トラックを関連づけることが可能となる。
次にS306において選択した画像の画像属性情報に個別指定する切り替え効果をそれぞれ設定してS307で処理を終了する。なお、HEIFファイルに格納するオーディオ付きスライドショーグループは格納された画像を再生表示する時間(期間)に関する情報を格納しない構成とした。これにより、スライドショー表示する画像の表示時間をアプリケーションが決定して再生することとなる。この際に、HEIFファイルに格納された音声トラックは時間情報を持ったプレゼンテーション情報であるため音声トラックの再生が先に終了してしまう可能性が考えられる。そのため、記述602に示すflagsを用いてスライドショー再生中に音声トラックデータの再生が終了した際のふるまいを識別する情報を指定する。具体的には、audio_play_loopを定義(例えば値2)し、flags&audio_play_loopが正(true)となる場合は音声トラックの再生を繰り返し行う。一方でflags&audio_play_loopが負(false)となる場合は音声トラックの再生を最後まで行った後はスライドショー表示が続いていたとしてもオーディオの再生は行われないことを示す。なお、ISOBMFFではTrackBox(trak)内のEditBox(edts)内にEditListBox(elst)が規定されている。このBoxではプレゼンテーション時間とメディア時間とのマッピングを示すBox構造である。本Boxにも同様にflagsが規定されており、edit listを繰り返し再生するか否かを指定できる。つまり音声トラックを繰り返すかを規定可能である。一方で前述したiaugEntityToGroupBoxに設けたflagsを用いて音声トラックの再生を繰り返し行うか否かを設定可能とする。これにより、同一音声トラックが複数のiaugグループに指定されていた場合でも個別のグループ毎に音声の繰り返しを行うか否かを指定可能となる。この場合EditListBoxを用いて指定された繰り返し設定は無視(上書き)され、iaugEntityToGroupBoxで指定されたflags設定のみが有効となることが望ましい。一方でそれぞれのflags設定を考慮した動作としてもよい。具体的にはいずれか一方が繰り返し設定となっていた場合はグループに指定された画像の表示が続く限り音声の再生を繰り返し行う。または両方のflagsが繰り返し設定になっていた場合にのみ繰り返し再生を行うといったことが考えられる。
またその他、あらかじめ指定された音声トラックの情報からスライドショー再生する全体時間を決定して、指定された画像数で割った時間分画像を表示させるようにしてもよい。具体的には、TrackHeaderBoxに指定されたDurationとTimeScaleに指定された値をスライドショー再生の全体時間とする。そして、オーディオトラックの再生が1回または複数回終了するまでの間画像をスライドショー表示するようにアプリケーションが制御を行う。つまり、TrackHeaderBoxに指定された再生時間をスライドショーグループに指定されたnum_entities_in_group-1で割った時間が1枚あたりの画像のスライドショー表示時間となるようにしてもよい。なお、本フラグを用いることなくデフォルト動作として規定してもよい。例えば、オーディオトラックのデュレーションに指定された長さよりも長い間スライドショー表示を行う場合スライドショーの表示が継続されている場合、オーディオトラックを繰り返し再生する。一方で、スライドショーグループに指定された画像の表示が終了した後もオーディオトラックの再生を継続するようにしてもよい。具体的にはオーディオの繰り返し設定ようのflagsと同様にaudio_play_completelyを定義(例えば値4)する。そして、flags&audio_play_completelyが正(true)となる場合はオーディオをスライドショー画像表示が終わった後も継続して再生する。flags&audio_play_completelyが負(false)となる場合はスライドショー画像の表示が終了するとオーディオトラックの再生が途中であっても再生を終了する。
なお、SlideshowWithAudioEntityToGroupBoxはEntityToGroupBoxの拡張であるため、トラックについてもグループとして制限なく格納可能である。しかしながら、本実施形態では最初のentity_idのみをトラックIDに限定し、以降のentity_idを画像アイテムのみに限定する。これによりトラックIDとアイテムIDが一意に識別できない場合であってもentity_idに指定された格納位置によってトラックIDとアイテムIDそれぞれが識別可能となる。また、トラックIDとアイテムIDが一意に識別できた場合であったとしも、あらかじめ1番目のIDをトラックIDと限定しておくことで再生処理時にID検索の範囲を限定することができ処理効率が向上する。ただし、別の形態では任意の位置にトラックIDを含める構成としてもよく、例えばトラックIDが指定された以降に音声の再生を開始し、以降のアイテムIDをスライドショー表示する際にオーディオ付きの再生となるようにしてもよい。この場合アイテムIDとトラックIDを一意に識別する必要があるためアイテムIDやトラックID、グループIDのIDを一意に識別できることが求められる。例えば、metaBoxをファイルのトップレベル(moovBox内のmetaBoxではない)に格納し、その中にSlideshowWithAudioEntityToGroupBoxを格納する場合は一意に識別可能となる。また同様にISOBMFFで定義されている、unifブランド定義がFileTypeBox(ftyp)(領域501に対応)に指定されたファイルであればこれが保証可能となる。またその他、音声データをアイテムとして定義してentity_idに指定する方法であってもよい。この場合別途音声アイテムと実際の音声データを紐づけるための定義を行って格納する必要がある。
また、本実施形態では音声付のスライドショーグループのタイプを定義してスライドショーグループを拡張してオーディオトラックIDを格納可能とした。しかしながら同様の拡張を行うことでスライドショーのみならず他のEntityグループにおいても音声の再生を付加することが可能となる。つまり、例えば、パノラマエンティティグループやステレオエンティティグループなどにおいてもオーディオ付きのエンティティグループタイプを定義する。そして、同様に特定の格納位置のentity_idをオーディオトラックとすることでオーディオの紐づけを可能とする。
また、音声付スライドショーグループの格納方法として、ISO/IEC23008-12:2017 FDAM2で定義されたiaugエンティティグループを拡張した形態であってもよい。具体的にはISO/IEC23008-12:2017 CDAM3で定義されたslidエンティティグループとiaugエンティティグループを拡張した構成で格納を行う。本形態の音声付スライドショーグループを格納した値(データ)の例を、図10を参照して説明する。図10は、本実施形態で出力されるHEIFファイルの例を示す図である。図10の記述1001に示すFileTypeBox(ftyp)にはアイテムIDやトラックID、グループIDが一意に識別可能なブランド定義であるunifブランドが格納されている。また記述1002に示すPrimaryItemBox(pitm)には、item_IDとして2001が格納されている。なお、PrimaryItemBoxの拡張を行い本Boxに指定するIDとしてオーディオ付きスライドショーを識別するグループのグループIDを指定するようにしてもよい。具体的には後述するiaugEntityToGroupBox(iaug)を識別するグループIDまたは、SlideshowEntityToGroupBox(slid)を識別するグループIDを指定する。その場合はIDとして後述するgroup_idである1002または1001を指定する。記述1003に示すItemInfoBoxは、各画像アイテムをitem_IDで識別可能とし、item_IDで識別される画像アイテムがどのような種類の画像アイテムであるかを示す。item_IDが2001である画像アイテムは‘hvc1’であり、HEVC符号化イメージであることを示す。同様にしてitem_ID2048である画像アイテムまですべての画像アイテムがHEVC符号化イメージとして格納されている。記述1004に示すItemLocationBox(iloc)は、各画像データビットストリームのファイル内の格納位置を示している。各画像データビットストリームは記述1010に示すMediaDataBox内のどの位置にデータが存在するかを特定することが可能となっている。記述1005に示すItemPropertiesBox(iprp)内のItemPropertyContainerBox(ipco)には、画像の属性情報を示すItemPropertyが格納されている。hvcCはHEVC符号化パラメータを示し、ispeは画像のサイズを示す属性情報である。またwipeはスライドショー表示の際が画像間の表示切り替えを行う際の効果を示している。記述1006は各画像アイテムと属性情報との関連を示したItemPropertyAssociationBox(ipma)を示す。各画像アイテムが順にipco内の属性情報と関連づけが行われる。例えばitem_ID2001からitem_ID2048には共通ispeが関連づけられており共通の画像サイズであることが示されている。またitem_ID2001には画像切り替え効果としてwipeが指定されている。アイテムID2001の画像を他の画像に切り替える際にはwipe効果を適応して表示の切り替えを行うことを示している。記述1007は、SlideshowEntityToGroupBox(slid)である。group_idは1001、グループのエントリ数は48個が指定されている。entity_idにはスライドショー表示の順に各画像のアイテムIDが2001から2048まで指定されている。記述1008はiaugEntityToGroupBox(iaug)である。group_idは1002、グループのエントリ数は2個が指定されている。entity_idには音声トラックIDを示すentity_id1とスライドショーグループを示すグループID1001が格納されている。ISO/IEC23008-12:2017 FDAM2で定義されたiaugエンティティグループでは、num_entities_in_groupは2であり、そのうち1つは画像アイテムを示し、もう一方は音声トラックを示す。一方で本実施形態では画像アイテムを指定する部分を拡張し、他のEntityToGroupBoxのグループIDを指定可能とするものである。これによりSlideshowEntityToGroupBoxのグループIDをiaugグループのentity_idに指定可能とする。そして、SlideshowEntityToGroupBoxに格納したスライドショーを表示する際に音声データを再生可能とする。これにより音声付スライドショー再生表示するための情報が格納される。
記述1009は、MovieBox(moov)であり、図8の記述809に示した構成と同じである。また同様にして、音声付スライドショーグループの格納方法として、ISO/IEC23008-12:2017 FDAM2で定義されたiaugエンティティグループを拡張した別の形態を示す。本形態の音声付スライドショーグループを格納した値(データ)の例を、図17を参照して説明する。図10に示した音声付スライドショーグループを格納した値(データ)の例では、音声を関連づける画像グループのグループIDをiaugEntityToGroupBoxで指定した。一方で図17に示した格納した例では関連づける音声のトラックもEntityToGroupBoxを用いてグループ化した上でiaugEntityToGroupBoxのentity_idの音声のグループIDを指定可能とする。図17における記述1701から記述1707は図10における記述1001から記述1007と共通である。記述1708はiaugEntityToGroupBox(iaug)である。group_idは1002、グループのエントリ数は2個が指定されている。entity_idには後述する代替可能な音声トラックを示すaltrEntityToGroupBoxのグループIDを示すentity_id1003とスライドショーグループを示すグループID1001が格納されている。ISO/IEC23008-12:2017 FDAM2で定義されたiaugエンティティグループでは、num_entities_in_groupは2であり、そのうち1つは画像アイテムを示し、もう一方は音声トラックを示す。一方で本実施形態では画像アイテムを指定する部分を拡張し、他のEntityToGroupBoxのグループIDを指定可能とする。さらに音声トラックを指定する部分を拡張し、他のEntityToGroupBoxのグループIDを指定可能とするものである。これによりSlideshowEntityToGroupBoxのグループIDをiaugグループのentity_idに指定可能とする。さらに、複数の音声トラックを含むaltrEntityToGroupBoxのグループIDをiaugグループのentity_idに指定可能とする。記述1709はaltrEntityToGroupBox(altr)である。group_idは1003、グループのエントリ数は2個が指定されている。entity_idには記述1710の音声トラックのIDである1及び記述1711の音声トラックのIDである2が格納されている。altrEntityToGroupBoxに指定されたentity_idは代替可能なentityのIDが指定されており、その再生においてアプリケーションのニーズ等に合わせていずれかを選択して再生を行うことが可能となっている。なお、iaugEntityToGroupBoxの音声のためのentity_idにEntityToGroupBoxのグループIDを指定する場合はそのグループに指定されたentity_idはすべて音声トラックIDが指定されていることが望ましい。
なお音声トラックのグループ化はグループタイプaltrに限らず、スライドショーのように音声用のプレイリストを示すグループタイプを定義して指定することも可能である。これによりiaugEntityToGroupBoxは音声と画像を関連づける情報として利用可能となる。つまり音声トラックと画像グループ、音声グループと画像、音声グループと画像グループいずれの組み合わせであってもよい。なお、ISO/IEC23008-12:2017 FDAM2で定義されたiaugエンティティグループでは、音声トラックIDと画像アイテムIDのみを指定可能であった。この際指定された音声トラックIDが別のグループとして指定したaltrEntityToGroupBoxのentity_idに指定されている場合は、いずれかを選択して音声を再生することが規定されている。一方で本形態によれば直接altrグループIDが指定可能となり再生時の処理が簡素化可能である。つまりこれまではiaugEntityToGroupBoxに指定された音声トラックIDが別のaltrグループに指定されているか否かをパースしたうえで再生する音声を決定しなければならなかったが、グループIDを直接指定可能としてことになる。これにより、iaugEntityToGroupBoxをパースした時点で代替可能なオーディオトラックがあるかどうかを判別可能となる。
これによりSlideshowEntityToGroupBoxに格納したスライドショーを表示する際に音声グループに指定された音声データを指定されたグループに応じた音声再生方法によって再生可能とする。これにより音声付スライドショー再生表示するための情報が格納される。
なお、複数のiaugEntityToGroupBoxを1つのファイルに格納することも可能となっている。そのため、同一の音声トラックIDが複数のiaugEntityToGroupBoxに指定された場合、グループ毎に音声データを先頭から再生することを想定する。一方で表示する画像グループまたは画像の表示を切り替える際にiaugEntityToGroupBoxに指定された音声トラックが再生中であった場合は、音声トラックの再生は継続したまま画像表示を切り替えるようにしてもよい。また、個別のiaugEntityToGroupBoxにおいて画像アイテムと音声トラックとが関連づけられていたとしても画像グループの生成時には個別に関連づけられた音声トラック情報は無視する。本実施形態ではiaugEntityToGroupBoxに指定するentity_idに他のEntityToGroupBoxのグループIDを指定可能とした。しかし、指定するグループIDはiaugEntityToGroupBoxのグループIDは指定してはならない。つまりネストによるループを避ける必要がある。
次に、図9を用いて本実施形態におけるメタデータの生成処理を説明する。図9は、本実施形態におけるスライドショーのメタデータ生成処理の流れの別例を表すフローチャートである。図9において、スライドショーのメタデータ生成処理は、S901から開始し、はじめにS902において、CPU102が、スライドショーで表示する画像を選択し、表示順序を決定する。本形態では、再生装置が表示時間(期間)を決定する格納方法のため表示時間に関するパラメータは格納しない。つまり、ファイル再生時に任意の時間(期間)をアプリケーションで指定して再生処理を行う。次にS903においてメタデータ処理部106は、SlideshowEntityToGroupBoxのメタデータを生成し、スライドショーの表示画像のグループを設定する。具体的には、メタデータ処理部106は、スライドショーで表示する画像をグループ化するための情報(グループ情報)を生成する。このグループ情報は、GroupsListBox(grpl)に格納する図10の記述1007のメタデータである。HEIFでは、grplに画像データなどのアイテムのグループ情報が格納される。グループ情報には、グループ識別情報としてのグループIDと、グループタイプが付与され、HEIFファイル内において識別される。本実施形態では、S903において、メタデータ処理部106は、グループ情報としてスライドショーグループ情報(SlideshowEntityToGroupBox)を生成する。図11に、SlideshowEntityToGroupBoxのデータフォーマットを示す。メタデータ処理部106は、図11に示すデータフォーマットのデータを生成し、grplに格納する。本SlideshowEntityToGroupBoxは複数の画像イメージセットをスライドショー表示することを目的としたentityのグループを識別するためのBoxである。このSlideshowEntityToGroupBoxのグループタイプは‘slid’であり、スライドショーに使用するアイテムのグループであることを意味する。図11のデータフォーマットは、EntityToGroupBoxからの拡張であるため、グループIDを格納するgroup_id、グループに含むアイテムの個数を示すnum_entries_in_groupは別途指定される。また、アイテムIDは、スライドショーで表示する選択画像のアイテムIDを表示順序通りに指定する。
次にS904において、スライドショー画像表示の際に再生するオーディオを選択し、メタデータから音声トラックIDを取得する。なお音声トラックを別途グループ化した場合には音声トラックIDを複数取得してグループ化した上で、グループIDを取得する。S902とS904の選択処理は、予めメディアファイル生成装置100に対して設定された情報や、ユーザーインターフェース部108を介するユーザーによる操作等に基づいて行われてもよい。
次にS905において、メタデータ処理部106は、オーディオ付きスライドショーを構成するためのメタデータを生成する。具体的には、メタデータ処理部106は、グループ情報として、iaugエンティティグループを生成する。このグループ情報は、GroupsListBox(grpl)に格納する図10の記述1008のメタデータである。グループ情報には、グループ識別情報としてのグループIDと、グループタイプが付与され、HEIFファイル内において識別される。本実施形態では、S905において、メタデータ処理部106は、グループ情報としてiaugエンティティグループを生成する。本iaugEntityToGroupBoxは1つの音声トラックと画像アイテムまたはエンティティグループを関連づけることを目的としたentityのグループを識別するためのBoxである。このiaugEntityToGroupBoxのグループタイプは‘iaug’であり、音声とアイテムまたはグループのグループであることを意味する。
次にS906において、SlideshowEntityToGroupBoxに選択して格納した画像の画像属性情報に個別指定する切り替え効果をそれぞれ設定し、S907において処理を終了する。本実施形態に示したようにiaugエンティティグループに格納するentity_idの1つを音声トラックID、もう一方を画像アイテムIDまたはエンティティグループのグループIDを指定可能な構成とした。本形態によればスライドショーグループに音声トラックを関連づけるだけでなく、他のエンティティグループ(例えばパノラマエンティティグループやバーストエンティティグループなど)においてもエンティティグループと音声トラックを関連づけ可能となる。本形態でも同様にiaugエンティティグループにフラグを追加して、音声トラックのデュレーションよりも長い間画像が表示されている場合にプレーヤーが音声の再生を繰り返し行う必要があるかを指定してもよい。また同様に、本フラグを用いることなくデフォルト動作として規定してもよい。例えば、オーディオトラックのデュレーションに指定された長さよりも長い間スライドショー表示を行う場合スライドショーの表示が継続されている場合、オーディオトラックを繰り返し再生する。
また、その他の形態として、SlideshowEntityToGroupBoxに格納するアイテムIDが音声トラックと関連づけられていた場合にその音声をグループ全体に関連づけることも可能である。つまりiaugエンティティグループで画像アイテムと音声トラックが関連づけられており、そのアイテムIDがSlideshowEntityToGroupBoxに格納されていた場合である。この場合、iaugエンティティグループで指定した音声トラックを、関連付けられた画像アイテムだけでなく、その画像アイテムを含むSlideshowEntityグループのスライドショーを再生する際にグループ全体に適応して再生する。また、このようなiaugグループが複数あった場合には、いずれか1つを選ぶという方法や、そのアイテムIDを再生する際に音声の再生を開始し、次の音声と関連づけられた画像アイテムを再生するときに音声を切り替える方法などが考えられる。この場合、音声と関連づけられた画像アイテムを最初に表示する場合に音声の再生を始めるようにしてもよいし、スライドショー再生の先頭から該当の音声を再生するようにしてもよい。またその他、PrimaryItemBoxに指定されたアイテムIDがiaugグループでかつ、SlideshowEntityToGroupBoxに格納されていた場合にのみオーディオ付きスライドショーの再生を行うといったことも考えられる。また、その他の形態としてSlideshowEntityToGroupBoxの拡張を行い、1つ目のentity_idを音声トラック用のIDとし、音声を紐づける場合は1つ目のentity_idに音声トラックIDを指定する。音声の紐づけを行わない場合は1つ目のentity_idに0などのファイル内で使用していない値を指定し、音声なしのスライドショーグループであることを示すようにしてもよい。
[スライドショーの再生処理]
次に、メディアファイルに格納したスライドショーの再生処理について図4を用いて説明する。図4は、メディアファイルのスライドショー再生処理のフローチャートである。具体的には、図4は、HEIFファイルフォーマットに従って1つ以上の静止画をスライドショーとして格納したファイルを再生する処理の流れを示している。図4のフローチャートの各ステップは、CPU102によるソフトウェア、画像符号化/復号化処理部105、メタデータ処理部106、音声符号化/復号化処理部110の何れかによって実行される処理を示す。なお、以下の説明において、CPU102という記述はCPU102で実行するソフトウェア処理であるものとする。
メディアファイル再生でのスライドショー再生処理は、S401から開始する。そして、まずS402において、CPU102が、RAM103もしくはROM104上で記憶しているHEIFファイルの中から、メタデータ格納領域510(MetaBox(meta))に格納してあるメタデータを取得する。次にS403において、CPU102は、S402で取得したメタデータを解析し、S404において、CPU102は、解析の結果、メタデータ中にスライドショーに関するメタデータが格納されているかを判定する。メタデータ中にスライドショーに関するメタデータが格納されている場合は(S404でYES)、処理はS405へ進み、そうでなければ(S404でNO)、処理はS419へ進む。S419へ進む場合、メディアファイル生成装置100は、HEIFファイルに格納された代表画像の再生処理を実行する。S419、S420において、代表画像に指定された画像の符号化データを取得し復号化処理を行い、画像データをバッファに保存する。S421において代表画像を表示し、S422で処理を終了する。
S405において、さらにスライドショーに関するメタデータにオーディオが紐づけられているかを判定する。スライドショーのメタデータにオーディオが紐づけられている場合は(S405でYES)S406へ進み、そうでなければ(S405でNO)、処理はS415へ進む。S415に進む場合、メディアファイル生成装置100は、HEIFファイルに格納されたオーディオなしのスライドショー再生処理を実行する。S415において、画像符号化/復号化処理部105は、スライドショー表示する順に画像データを取得する。画像データはメタデータに格納されたメディアファイル内の位置情報から符号化データ格納領域550(MediaDataBox(mdat))内の位置を特定して取得する。S416において画像符号化/復号化処理部105は、表示する画像データを復号化し、S417において復号化した画像データをいったんバッファに保存する。続いてS418では、CPU102は、メタデータに記載されている属性情報とアプリケーションで決定した表示時間に従い画像を表示部107に表示する。S415からS418までの処理を繰り返し実行してHEIFファイルに格納された画像を表示部107に順次表示する。なお、本実施形態では図示していないが、CPU102は、スライドショーとして格納された画像すべてを表示し終わった場合、先頭の画像から繰り返し表示するように、または、スライドショー表示を終了するように表示部107を制御してもよい。
S406においてCPU102が、RAM103もしくはROM104上で記憶しているHEIFファイルの中から、スライドショーのメタデータに紐づけられたオーディオのメタデータを取得する。具体的には格納領域530(MoovieBox(moov))に格納してあるメタデータからオーディオトラックに関するメタデータを取得する。S407において、CPU102は、S406で取得したメタデータを解析し、音声符号化/復号化処理部110は、再生するオーディオ符号化データを取得する。オーディオ符号化データはメタデータに格納されたメディアファイル内の位置情報から符号化データ格納領域550(MediaDataBox(mdat))内の位置を特定して取得する。S408において音声符号化/復号化処理部110は、再生する音声データを復号化し、S409において復号化した音声データをいったんバッファに保存する。S410において、画像符号化/復号化処理部105は、スライドショー表示する順に画像データを取得する。画像データはメタデータに格納されたメディアファイル内の位置情報から符号化データ格納領域550(MediaDataBox(mdat))内の位置を特定して取得する。S411において画像符号化/復号化処理部105は、表示する画像データを復号化し、S412において復号化した画像データをいったんバッファに保存する。S413においてメディアファイル生成装置(再生装置)の音声出力が有効であるかを判定する。これは音声出力部111の設定がミュート設定になっているか、デバイスが有効になっているかといったソフトウェアの設定を判定する。さらに音声出力デバイスを備えているかのハードウェア接続の判定も含む。例えばヘッドホンやスピーカーが接続されているかといった判定である。再生装置の音声出力が有効の場合(S413でYES)S414へ進み、そうでない場合(S413でNO)S418へ進む。S414においてバッファに保存したオーディオデータの再生を開始する。続いてS418では、CPU102は、メタデータに記載されている属性情報とアプリケーションで決定した表示時間に従い画像を表示部107に表示する。S410からS412およびS418までの処理を繰り返し実行してHEIFファイルに格納された画像を表示部107に順次表示する。なお、本実施形態では図示していないが、CPU102は、スライドショーとして格納された画像すべてを表示し終わった場合、先頭の画像から繰り返し表示するように、または、スライドショー表示を終了するように表示部107を制御してもよい。またオーディオデータの再生が終了した場合(格納されたサンプルの最後まで再生を行った場合)、オーディオデータの最初から繰り返し再生するように制御してもよいし、オーディオ再生のみを終了してもよい。また前述したオーディオ付きスライドショーのメタデータに含まれるflags等で指定されたようにオーディオ再生を行ってもよい。またオーディオデータの再生を特定の画像データの表示以降に開始するメタデータ格納であった場合は、そのように制御するフローとしてもよい。
以上、本実施形態によればスライドショー再生の音声及び画像をグループ化することでHEIFファイルに格納された複数の画像と音声を効果的に関連づけたスライドショー表示を意図する格納をすることが可能となる。またその格納において動画形式として格納することなく画像および音声のグループとして格納することで容易に識別、格納することが可能となる。
また、スライドショーグループに格納する画像として派生画像を音声付でスライドショーとして表示することが可能となる。派生画像とは、例えば、アイデンティティ(iden)やグリッド(grid)イメージやオーバーレイ(iovl)イメージである。
また、1つのファイル内に複数のスライドショーグループを異なるグループIDを用いて格納することも可能であり、1ファイル内に複数のスライドショー表現を格納することも可能である。またスライドショー再生を行う複数の画像、音声、プレイリストとなる情報が1つのファイルに格納することでスライドショー再生を意図した情報を1ファイルとして扱うことができ可搬性が向上する。
<実施形態2>
実施形態1ではスライドショーに1つのオーディオ(音声)を関連づける方法を説明した。実施形態2では複数のオーディオを関連づけ、スライドショーの途中でオーディオを切り替える方法について説明する。実施形態2におけるメディアファイル生成装置は、実施形態1において図1で説明した構成と同一の構成を有する。また、図2で示されるメディアファイル生成処理も本実施形態に同様に適用できる。但し、図2のS208からS210のオーディオデータを格納する処理を指定するオーディオデータの個数分格納する。オーディオ付きスライドショーのメタデータ生成処理(S211)および、再生フローが実施形態1と異なる。したがって本実施形態では、主にS211の処理および再生フローについて、図12、図13、図14、図15、及び図16を参照しながら説明する。
図12は、本実施形態におけるオーディオ付きスライドショーのメタデータ生成処理の流れを表すフローチャートである。この処理はS1201から開始し、はじめにS1202において、CPU102が、HEIFファイルに格納する画像データの中からスライドショーで表示する1つ以上の画像データを選択し、且つそれらの表示順序を決定する。本実施形態では、HEIFファイルに格納するスライドショー表示する画像を表示する時間(期間)に関する情報は指定しない構成とした。つまり、ファイル生成時には値を指定せず、再生時に任意の値を決定して再生する。一方で、別途表示時間を決定し、ファイルに格納するようにしてもよい。次に、S1203において、CPU102は、スライドショー表示の際に再生する音声データを選択し、メタデータからオーディオトラックIDを取得する。本処理では複数の音声データを選択してもよいし、1つだけを選択するようにしてもよい。S1202とS1203選択処理は、予めメディアファイル生成装置100に対して設定された情報や、ユーザーインターフェース部108を介するユーザーによる操作等に基づいて行われてもよい。次にS1204において、選択したオーディオの再生を開始するスライドショー表示画像を決定する。本処理は複数のオーディオデータを選択した場合、オーディオデータ毎に決定する。ここで決定した画像をスライドショー再生する際に選択したオーディオの再生を開始することとなる。
次にS1205において、メタデータ処理部106は、オーディオ付きスライドショーグループのメタデータを生成し、決定した表示順に画像アイテムIDを設定する。次にS1206において、決定したオーディオ再生開始画像に対応するオーディオ付きスライドショーグループに格納した画像アイテムIDの1つ前にオーディオトラックIDを挿入する。具体的には、メタデータ処理部106は、スライドショーで表示する画像及び再生する音声をグループ化するための情報(グループ情報)を生成する。このグループ情報は、図5の領域519(GroupsListBox(grpl))に格納するメタデータである。HEIFでは、grplに画像データなどのアイテムやトラックのグループ情報が格納される。グループ情報には、グループ識別情報としてのグループIDと、グループタイプが付与され、HEIFファイル内において識別される。本実施形態では、S1205及びS1206において、メタデータ処理部106は、グループ情報として音声付スライドショーグループ情報(SlideshowWithAudioEntityToGroupBox)を生成する。図13に、SlideshowWithAudioEntityToGroupBoxのデータフォーマットを示す。SlideshowWithAudioEntityToGroupBoxの派生元となるEntityToGroupBoxのデータフォーマットは図7に示したものと共通である。なお、トラックIDが連続して設定することはできないものとする。トラックIDを連続して格納されたファイルであった場合、いずれか一方のトラックIDを無視して再生する。またその他、連続する2つ(またはそれ以上)のトラックIDに対応する音声データを1連の音声データとして扱って再生処理を行うようにしてもよい。この場合1つ目のトラックIDの再生が終わると続くトラックIDの再生を行うようにする。さらに後続する画像アイテムIDの後にトラックIDが現れた場合は新たに表れたトラックIDの音声を再生対象とする。
メタデータ処理部106は、図13に示すデータフォーマットのデータを生成し、grplに格納する(図5の領域520を参照)。本SlideshowWithAudioEntityToGroupBoxは複数の画像イメージセットを音声付でスライドショー表示することを目的としたentityのグループを識別するためのBoxである。このSlideshowWithAudioEntityToGroupBoxのグループタイプは記述1301に示す‘slda’であり、音声付スライドショーに使用するトラック及びアイテムのグループであることを意味する。
図13のデータフォーマットは、EntityToGroupBoxからの拡張である。そのため、図7の記述701に示すgroup_id、記述702に示すnum_entries_in_groupは別途指定される。
記述1303に示すnum_entries_in_groupは記述702で指定した値と同じ値である。また、記述703に示すentity_idはトラックIDまたはアイテムIDを示す。S1205ではentity_idにスライドショーで表示する選択画像のアイテムIDを表示順序通りに指定する。次にS1206ではS1205で指定したアイテムIDに挿入する形でトラックIDを指定する。そして音声トラックであるか画像アイテムであるかを識別可能とするため記述1304のflagsに設定を行う。これは例えば、audio_flagを定義する(例えば1)。flags&audio_flagが正(true)である格納順のentity_idがオーディオトラックIDであることを示す。また、flags&audio_flagが負(false)である格納順のentity_idは画像アイテムであることを示す。なお、HEIFファイルに格納するオーディオ付きスライドショーグループは格納された画像を再生表示する時間(期間)に関する情報を格納しない構成とした。一方でHEIFファイルに格納された音声トラックは時間情報を持ったプレゼンテーション情報であるため音声トラックの再生が先に終了してしまう可能性が考えられる。そのため記述1302のflagsを用いてスライドショー再生中(次の音声トラックIDが指定されるまで)に音声トラックデータの再生が終了した際のふるまいを識別する情報を指定する。具体的にはaudio_play_loopを定義(例えば値1)し、flags&audio_play_loopが正(true)となる場合は音声トラックの再生を繰り返し行う。一方でflags&audio_play_loopが負(false)となる場合は音声トラックの再生を最後まで行った後はスライドショー表示が続いていたとしてもオーディオの再生は行われないことを示す。なお、本フラグを用いることなくデフォルト動作として規定してもよい。ISOBMFFではTrackBox(trak)内のEditBox(edts)内にEditListBox(elst)が規定されている。このBoxではプレゼンテーション時間とメディア時間とのマッピングを示すBox構造である。本Boxにも同様にflagsが規定されており、edit listを繰り返し再生するか否かを指定できる。つまり音声トラックを繰り返すかを規定可能である。一方で前述したiaugEntityToGroupBoxに設けたflagsを用いて音声トラックの再生を繰り返し行うか否かを設定可能とする。これにより、同一音声トラックが複数のiaugグループに指定されていた場合でも個別のグループ毎に音声の繰り返しを行うか否かを指定可能となる。この場合EditListBoxを用いて指定された繰り返し設定は無視(上書き)され、iaugEntityToGroupBoxで指定されたflags設定のみが有効となることが望ましい。一方でそれぞれのflags設定を考慮した動作としてもよい。具体的にはいずれか一方が繰り返し設定となっていた場合はグループに指定された画像の表示が続く限り音声の再生を繰り返し行う。または両方のflagsが繰り返し設定になっていた場合にのみ繰り返し再生を行うといったことが考えられる。例えば、オーディオトラックのデュレーションに指定された長さよりも長い間スライドショー表示を行う場合スライドショーの表示が継続されている場合、オーディオトラックを繰り返し再生する。本実施形態では図13の記述1304に示したflagsに音声トラックIDであるか画像アイテムIDであるかを指定可能とした、つまり本flagsは1bitで十分であるため図14に示したフォーマットとすることも可能である。具体的には記述1304のflagsを1bit構成とした記述1401に示すflagとし、同様に音声トラックIDであるか画像アイテムIDであるかを識別可能とする。この場合、bitサイズのアライメントがとれなくなってしまうためそれを調整するために記述1402に指名したパディングデータを含むデータフォーマットである。一方で、スライドショーグループに指定された画像の表示が終了した後もオーディオトラックの再生を継続するようにしてもよい。具体的にはオーディオの繰り返し設定ようのflagsと同様にaudio_play_completelyを定義(例えば値4)する。そして、flags&audio_play_completelyが正(true)となる場合はオーディオをスライドショー画像表示が終わった後も継続して再生する。flags&audio_play_completelyが負(false)となる場合はスライドショー画像の表示が終了するとオーディオトラックの再生が途中であっても再生を終了する。
次に、S1207において選択した画像の画像属性情報に個別指定する切り替え効果をそれぞれ設定してS1208で処理を終了する。
本実施形態では、SlideshowWithAudioEntityToGroupBoxに格納するentity_idが音声トラックIDであるか画像アイテムIDであるかを識別可能とするためflagsを用いて指定可能とした。一方でトラックIDとアイテムIDが一意に識別可能であれば、本flagsは不要となる。具体的には、unifブランドが指定されたHEIFファイルの場合や、SlideshowWithAudioEntityToGroupBoxがトップレベルのMetaBox内に格納されている(moovBox内のmetaBoxではない)場合である。一方でflagによってアイテムIDなのかトラックIDなのかを識別可能とすることで再生処理時にID値を取得する範囲を限定することができるため処理を効率化可能となる。またその他、音声データをアイテムとして定義してentity_idに指定する方法であってもよい。この場合別途音声アイテムと実際の音声データを紐づけるための定義を行って格納する必要がある。以上に示したフロー従ってHEIFファイルの内部構造に格納した値(データ)の例を、図15を参照して説明する。図15は、本実施形態で出力されるHEIFファイルの例を示す図である。図15の記述1501に示すPrimaryItemBox(pitm)には、item_IDとして1が格納されている。なお、PrimaryItemBoxの拡張を行い本Boxに指定するIDとしてオーディオ付きスライドショーを識別するグループのグループIDを指定するようにしてもよい。具体的には後述するSlideshowWithAudioEntityToGroup(slda)を識別するグループIDを指定する。その場合はIDとして後述するgroup_idである1001を指定する。ただし、その場合はID値がアイテムIDとグループID値で一意に識別可能とする必要がある。記述1502に示すItemInfoBoxは、各画像アイテムをitem_IDで識別可能とし、item_IDで識別される画像アイテムがどのような種類の画像アイテムであるかを示す。item_IDが1である画像アイテムは‘hvc1’であり、HEVC符号化イメージであることを示す。同様にしてitem_ID48である画像アイテムまですべての画像アイテムがHEVC符号化イメージとして格納されている。記述1503に示すItemLocationBox(iloc)は、各画像データビットストリームのファイル内の格納位置を示している。記述1504に示すItemPropertiesBox(iprp)内のItemPropertyContainerBox(ipco)には、画像の属性情報を示すItemPropertyが格納されている。hvcCはHEVC符号化パラメータを示し、ispeは画像のサイズを示す属性情報である。記述1505は各画像アイテムと属性情報との関連を示したItemPropertyAssociationBox(ipma)を示す。各画像アイテムが順にipco内の属性情報と関連づけが行われる。例えばitem_ID1からitem_ID48には共通ispeが関連づけられており共通の画像サイズであることが示されている。記述1506は、SlideshowWithAudioEntityToGroupBox(slda)である。group_idは1001、グループのエントリ数は50個が指定されている。指定されたentity_idは音声トラックのトラックIDまたは画像アイテムのアイテムIDを示しており、flag=1のentity_idはトラックIDを、flag=0のentity_idはアイテムIDを示す。このflagが1の場合は後述するTrackBox内のTrackHeaderBoxに示すトラックIDを参照する。一方でflagが0の場合は前述した記述1502のItemInfoBoxに示すアイテムIDを参照する。これによりID値が一意に識別できない場合であっても、アイテムIDを参照するかトラックIDを参照するかが決定可能となる。このように構成することで音声付スライドショー再生表示するための情報が格納されている。
記述1507、1508はそれぞれ、MovieBox(moov)に格納されたTrackBox(trak)である。本Box構造を用いて音声のプレゼンテーションに関する情報が格納されている。TrackBoxにはさらにTrackHeaderBox(tkhd)とMediaBox(mdia)が格納されている。TrackHeaderBoxのflagsは3を示しており、本トラックに音声が格納されていることを示す。また記述1507はTrackID1を、記述1508はTrackID2であり、これは音声トラックを識別するIDを示している。このID値は前述したSlideshowWithAudioEntityToGroupBoxのflag=1であるentity_idに示したID値である。さらにMediaBox(mdia)にはMediaHeaderBox(mdhd)、HandlerBox(hdlr)、MediaInformationBox(minf)が格納されている。MoovieHeaderBox、TrackHeaderBox、MediaHeaderBoxにはそれぞれ生成時間、編集時間、タイムスケール、デュレーションに関する情報が格納されている。
HandlerBox(hdlr)には音声トラックを識別するためのhdlrTypeとして‘soun’が指定されている。またMediaInformationBox(minf)には音声トラックであるためSoundMediaHeaderBox(smhd)が格納されている。またDataInformationBox(dinf)には音声符号化データの格納位置を示す情報が格納されている。また詳細については図示していないが、SampleTableBox(stbl)には各音声サンプルに関する情報が格納されている。具体的にはSampleDescriptionBox(stsd)を用いて音声符号化に関する情報等が格納されている。また各サンプルのサイズを示す情報がSampleSizeBox(stsz)内に格納されている。またその他TimeToSampleBox(stts)やSampleToChunkBox(stsc)、ChunkOffsetBox(stco)を用いて音声サンプルに関する情報が格納されている。
本実施形態では、以上の構成で複数のオーディオ付きのスライドショーを再生表示するための音声及び画像をグループ化し、スライドショー表示の際の各画像の属性情報を各画像に適応する方法で構成した。しかし、複数の音声と複数の画像をグループ化して保持する方法であれば異なる構成であってもよい。例えば、実施形態1に示した1つの音声が付いたスライドショーグループを複数構成し、さらにこれらをグループ化することで複数の音声付のスライドショーグループを構成するようにしてもよい。具体的には図6に示したSlideshowWithAudioEntityToGroupBoxに1つの音声付のスライドショーを構成する。そして図11に示したSlideshowEntityToGroupBoxにSlideshowWithAudioEntityToGroupBoxのグループIDをentity_idとして格納する。また同様にして実施形態1に示したiaugエンティティグループを用いた音声付スライドショーを複数構成して、同様にSlideshowEntityToGroupBoxのentity_idにグループIDを格納してもよい。これにより、複数の音声付スライドショーグループが格納されたHEIFファイルにおいて、それらグループの再生順序を指定可能となり、より効果的なスライドショー再生が可能となる。また本実施形態ではスライドショーグループの拡張を行うことでオーディオトラックIDを格納可能とした。しかしながら同様の拡張を行うことでスライドショーのみならず他のEntityグループにおいてもトラックIDとアイテムIDの混在が可能となる。またその他の形態として、SlideshowWithAudioEntityToGroupBoxのデータフォーマットとして、entity_idとして画像アイテムを表示順に指定し、別のリストとして音声トラックIDを指定する。音声トラックIDのリストには再生を開始する画像アイテムIDを指定することで複数のオーディオを切り替えながら構成するグループとしてもよい。さらに別のデータフォーマットとして1つのリストとして音声トラックIDと画像アイテムIDを指定し、別途音声トラックIDに対応するIDに再生を開始する画像アイテムのインデックス情報を指定するようにしてもよい。
[スライドショーの再生処理]
次に、メディアファイルに格納したスライドショーの再生処理について図16を用いて説明する。なお、図16の再生処理フローでは、オーディオ付きスライドショーグループが格納されている前提の処理フローである。すなわち図4のS404、S405における処理およびそれぞれの判定においてNOとなった処理については図4の処理と共通であるため省略する。図16は、メディアファイルのスライドショー再生処理のフローチャートである。具体的には、図16は、HEIFファイルフォーマットに従って1つ以上の静止画と1つ以上の音声をスライドショーとして格納したファイルを再生する処理の流れを示している。図16のフローチャートの各ステップは、CPU102によるソフトウェア、画像符号化/復号化処理部105、メタデータ処理部106、音声符号化/復号化処理部110の何れかによって実行される処理を示す。なお、以下の説明において、CPU102という記述はCPU102で実行するソフトウェア処理であるものとする。
メディアファイル再生でのスライドショー再生処理は、S1601から開始する。そして、まずS1602において、CPU102が、RAM103もしくはROM104上で記憶しているHEIFファイルの中から、メタデータ格納領域510(MetaBox(meta))に格納してあるメタデータを取得する。次にS1603において、CPU102は、S1602で取得したメタデータを解析する。S1604において、オーディオ付きスライドショーグループに格納されたエンティティIDを格納順に取得し解析を行う。
S1605において解析したエンティティIDがオーディオトラックIDであるかを判定する。具体的には図13に示したflagsの値を判定しオーディオを示すフラグ値であるかを判定する。オーディオトラックIDを示す場合(S1605でYES)S1606へ進み、そうでない場合(S1606でNO)S1609へ進む。S1609へ進む場合、メディアファイル生成装置100は、HEIFファイルに格納された画像符号化データの副業処理を実行する。S1609、S1610において、アイテムIDに対応する画像の符号化データを取得し復号化処理を行い、S1608へ進む。
S1606においてエンティティIDに対応するオーディオトラックIDのメタデータを取得する。具体的には格納領域530(MoovieBox(moov))に格納してあるメタデータからオーディオトラックに関するメタデータを取得する。取得したメタデータを解析し、音声符号化/復号化処理部110は、再生するオーディオ符号化データを取得する。オーディオ符号化データはメタデータに格納されたメディアファイル内の位置情報から符号化データ格納領域550(MediaDataBox(mdat))内の位置を特定して取得する。S1607において音声符号化/復号化処理部110は、再生する音声データを復号化しS1608へ進む。
S1608において復号化した画像データまたは音声データを取得順にいったんバッファに保存する。
S1611において音声付スライドショーグループに格納されたエンティティIDをすべて取得し、対応する画像またはオーディオ符号化データの復号処理が終わったかを判定する。すべてのエンティティIDに対応する処理が完了していない場合(S1611でNO)、S1604へ進みS1611までの処理を繰り返し行う。完了した場合(S1611でYES)S1612へ進む。なお、本実施形態ではすべてのエンティティIDに対応する符号化データの復号処理を行い、復号データをバッファにすべて保存するフローを示したが、並列に処理してもよい。その場合、以降の表示、再生処理と復号処理を並列に行うこととなる。さらにこの場合、表示、再生するまでに次のデータの復号処理が完了している必要があるが、バッファ容量を削減可能となる。
次にS1612においてS1611までの処理でバッファに格納した画像データおよびオーディオデータを格納順に復号データを取得する。S1613において、取得した復号データがオーディオデータである場合(S1613でYES)S1614へ進み、そうでない場合(S1613でNO)S1616へ進む。S1614において、メディアファイル生成装置(再生装置)の音声出力が有効であるかを判定する。これは音声出力部111の設定がミュート設定になっているか、デバイスが有効になっているかといったソフトウェアの設定を判定する。さらに音声出力デバイスを備えているかのハードウェア接続の判定も含む。例えばヘッドホンやスピーカーが接続されているかといった判定である。再生装置の音声出力が有効の場合(S1614でYES)S1615へ進み、そうでない場合(S1614でNO)S1612へ進み処理を繰り返す。S1615においてバッファに保存したオーディオデータの再生を開始する。すでにオーディオデータの再生が行われている場合は、再生中のオーディオから、取得したオーディオデータに再生を切り替える。そしてS1612へ進み処理を繰り返す。
続いてS1616では、CPU102は、メタデータに記載されている属性情報とアプリケーションで決定した表示時間に従い画像を表示部107に表示する。そしてS1617においてバッファに保存されたスライドショーグループのすべての画像を表示したかを判定する。すべての画像を表示した場合S1618へ進み処理を終了する。そうでない場合S1612へ進み処理を繰り返す。
なお、本実施形態では図示していないが、CPU102は、スライドショーとして格納された画像すべてを表示し終わった場合、先頭の画像から繰り返し表示するように、または、スライドショー表示を終了するように表示部107を制御してもよい。またオーディオデータの再生が終了した場合(格納されたサンプルの最後まで再生を行った場合)、オーディオデータの最初から繰り返し再生するように制御してもよいし、オーディオ再生のみを終了してもよい。また前述したオーディオ付きスライドショーのメタデータに含まれるflags等で指定されたようにオーディオ再生を行ってもよい。またオーディオデータの再生を特定の画像データの表示以降に開始するメタデータ格納であった場合は、そのように制御するフローとしてもよい。
本実施形態では以上の構成でオーディオ付きのスライドショー表示をするための1以上の画像及び1以上の音声をグループ化し、音声付スライドショー表示の際の各画像の属性情報を各画像に適応する方法で構成した。
以上、本実施形態によればスライドショー再生の音声及び画像をグループ化することでHEIFファイルに格納された複数の画像と音声を効果的に関連づけたスライドショー表示を意図する格納をすることが可能となる。またその格納において動画形式として格納することなく画像および音声のグループとして格納することで容易に識別、格納することが可能となる。また、スライドショーグループに格納する画像として派生画像を音声付でスライドショーとして表示することが可能となる。派生画像とは、アイデンティティ(iden)やグリッド(grid)イメージやオーバーレイ(iovl)イメージ等である。また、1つのファイル内に複数のスライドショーグループを異なるグループIDを用いて格納することも可能であり、1ファイル内に複数のスライドショー表現を格納することも可能である。また複数の音声を1つのスライドショーに適応可能となりより柔軟な音声付のスライドショー再生が可能となる。またスライドショー再生を行う複数の画像、音声、プレイリストとなる情報が1つのファイルに格納することでスライドショー再生を意図した情報を1ファイルとして扱うことができ可搬性が向上する。
以上、各実施形態において、メディアファイル生成処理とメディアファイルに格納する音声付スライドショーのメタデータ生成処理の実施形態について説明した。各実施形態で生成されるHEIFのメディアファイルは、図5に示すように、最上位の階層にftypとmetaとmoovとmdatが並ぶ構造となる。但し、メディアファイル生成装置が生成するHEIFファイルがこの内部構造に限定するものではない。例えば、以上の何れかの実施形態を実施し、さらに動画データも一緒に格納してHEIFファイルを生成可能にしてもよい。
HEIFでは、時間的に連続する静止画としてのイメージシーケンスを持つHEIFファイルは、画像を表示するアプリケーションが連続的な表示処理をできるように、連続する静止画をHEIFファイルの中にビデオトラックとして定義する必要がある。ファイル構造としては、meta以外に動画のためのmoovのメタデータも必要となり得る。上記に説明した各実施形態では、複数の画像データのスライドショーの情報をmetaの中に収めたHEIFファイルを生成する。これにより、イメージシーケンスを格納するHEIFファイルの生成に比べ、より効率的にHEIFファイルを生成することが可能になる。
また、以上の実施形態ではファイルフォーマットとしてHEIFを例に説明したが、1ファイル内に複数画像データ及び1つ以上の音声データを格納でき、それらのメディアファイルに関するメタデータを保持可能なファイルであれば他の形式に適用してもよい。
また、上述した実施形態における制御の一部または全部を実施形態の機能を実現するコンピュータプログラム(ソフトウェア)をネットワーク又は各種記憶媒体を介して撮像装置や情報処理装置に供給するようにしてもよい。そして、その撮像装置や情報処理装置におけるコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行するようにしてもよい。