(C)Copyright 2000 NTT Cyber Space Laboratories

CHeaderManagerクラス


名前
CHeaderManager - TwinVQ ビットストリームヘッダを管理するクラス
インタフェース
class CHeaderManager {
public:
    // 初期化・デストラクタ
    static CHeaderManager* Create(CChunkChunk& twinChunk); // 初期化用スタティックメンバ関数
    virtual ~CHeaderManager();                          // デストラクタ
    // 機能メンバ関数
    const std::string GetID();                          // TwinVQ データの ID を取得
    CChunk GetPrimaryChunk(std::string chunkID);          // 通常チャンクの情報を取得する
    CChunk GetSecondaryChunk(std::string chunkID);        // 補助チャンクの情報を取得する

    // 例外
    class err_FailGetChunk;                            // チャンクの取得に失敗
}


機能説明
クラスCHeaderManager は、与えられたビットストリームヘッダを保管し、ヘッダ情報をデータベースとして機能します。初期化時に、CChunkChunk クラスオブジェクトに格納されたヘッダ情報 twinChunk を読み込みヘッダ情報データベースを構築します。構築後は、GetPrimaryChunk() および GetSecondaryChunk() メンバ関数を使って、ヘッダ情報をチャンク単位に取得できます。

生成・初期化
このクラスは、公開されたコンストラクタを持ちません。代わりに、Create()スタティックメンバ関数を使って生成・初期化します。この初期化関数はヘッダ情報 twinChunk を読み込み、CHeaderChunk クラスオブジェクトへのポインタを戻します。twinChunk のフォーマットが正しくないと生成に失敗し、この場合 Create()関数は NULL ポインタを戻します。

twinChunk はTwinVQ データのヘッダ部から構成されます。サンプルプログラムでは、TvqGetBsHeaderInfo() 関数を使って作成しています。

また、初期化したオブジェクトは自動的に消去されませんので、不要になった時点で delete により消去する必要があります。

以下は、ヘッダマネージャ生成・初期化の例です (theHeaderManager)。
CChunkChunk *twinChunk = TvqGetBsHeaderInfo(bfp);
CHeaderManager *theHeaderManager = CHeaderManager::Create(*twinChunk);

機能メンバ関数の説明
std::string GetID()
この関数は、TwinVQ ヘッダの先頭に格納されているヘッダ ID を戻します。ヘッダ ID は "TWIN" で始まる 12 文字からなる文字列です。
CChunk GetPrimaryChunk( std::string chunkID)
この関数は、chunkID で指定された ID の通常ヘッダチャンク情報を CChunk 型のオブジェクトとして返します。取得に失敗すると、例外 err_FailGetChunk を発生します。
CChunk GetSecondaryChunk(std::string chunkID)
この関数は、chunkID で指定された ID の補助ヘッダチャンク情報を CChunk 型のオブジェクトとして返します。取得に失敗すると、例外 err_FailGetChunk を発生します。
利用に必要なインクルードファイル
CHeaderManager.h

この関数が置かれているファイル
HeaderManager.cxx
参照
TvqGetBsHeaderInfo(), CChunk