前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFBMediaUtil
IMediaUtil インターフェースのラッパークラスです。
#include <SFBMediaUtil.h.hpp>
class SFBMediaUtil : public SFBQuery;
SFMTYPEDEFWRAPPER(SFBMediaUtil)

継承図

SFBMediaUtil クラスの継承図

バージョン

BREW 2.0 BREW 2.1 BREW 3.1 BREW 4.0
×

参照

BREW API IMediaUtil

メンバ

パブリック関数
SFCError CreateMedia( AEEMediaData* data , SFBMediaSmpPtr media )
与えられたメディアデータを解析し、 SFBMedia 派生クラスのインスタンスを作成します。
SFCError CreateMediaEx( AEEMediaCreateInfo* info , SFBMediaSmpPtr media )
SFBMedia ベースのオブジェクトの作成に必要な情報を指定する際に、 SFBMediaUtil::CreateMedia よりも高い柔軟性を提供します。
SFCError EncodeJPEG( AEEMediaEncodeResult* result , AEEMediaEncodeInfo* spec , SFXCallbackPtr callback )
JPEG 形式のメディアをエンコードします。
SFCError EncodeMedia( AEEMediaEncodeResult* result , AEECLSID clsidDest , AEEMediaEncodeInfo* spec , SFXCallbackPtr callback )
指定した形式の新しいメディアをエンコードします。
SFCError EncodePMD( AEEMediaEncodeResult* result , AEEMediaEncodeInfo* spec , SFXCallbackPtr callback )
PMD 形式のメディアをエンコードします。
static
SFBMediaUtilSmp
NewInstance( SFCErrorPtr exception = null )
SFBMediaUtil インスタンスを生成します。
static
SFBMediaUtilSmp
NewInstance( AEECLSID id , SFCErrorPtr exception = null )
SFBMediaUtil インスタンスを生成します。
SFCError QueryInterface( AEECLSID clsid , VoidHandle handle ) (SFBQuery から継承)
このオブジェクトからの別の API を問い合わせます。
SFCError QueryInterface( AEECLSID clsid , SFBBaseSmpPtr handle ) (SFBQuery から継承)
このオブジェクトからの別の API を問い合わせます。
SFBBaseSmp QueryInterface( AEECLSID clsid ) (SFBQuery から継承)
このオブジェクトからの別の API を問い合わせます。
Void Self( AEECLSID clsidReq , SFBQuerySmpPtr clone , AEECLSID clsidImp ) (SFBQuery から継承)
オブジェクトを単一インターフェースで実装するときに使います。
SFBQuerySmp Self( AEECLSID clsidReq , AEECLSID clsidImp ) (SFBQuery から継承)
オブジェクトを単一インターフェースで実装するときに使います。
プロテクト関数
static
SFBBaseSmp
FactoryByCreate( AEECLSID id , SFCErrorPtr exception = null ) (SFBBase から継承)
指定したクラス ID のインターフェースのインスタンスを生成します。
static
SFBBaseSmp
FactoryByQuery( SFBQuerySmpConstRef query , AEECLSID id , SFCErrorPtr exception = null ) (SFBBase から継承)
指定したクラス ID のインターフェースのインスタンスを指定した SFBQuery インスタンスを使用して生成します。

SFBMediaUtil::CreateMedia
与えられたメディアデータを解析し、 SFBMedia 派生クラスのインスタンスを作成します。
[ public ]
SFCError CreateMedia(
    AEEMediaData* data     // メディア データ
    SFBMediaSmpPtr media   // SFBMedia 派生クラスのインスタンスを受け取るポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 引数が不正なとき: SFERR_INVALID_PARAM
  • クラスが見つからないとき: SFERR_UNSUPPORTED
  • 失敗したとき: SFERR_FAILED
  • メディアデータが不正なとき: MM_EBADMEDIADATA
  • メモリ不足のとき: MM_ENOMEDIAMEMORY
  • SFBMedia オブジェクトを作成するにはさらにデータが必要なとき: ENEEDMORE
  • データのピーク操作時のエラーのとき: MM_EPEEK
  • データ不足のため異常終了したとき: MM_ENOTENOUGHDATA

使用例

SFBMediaUtil::CreateMedia() を使用して SFBMedia 派生クラスのインスタンスを作成し、 サウンドを再生します。

#include <SophiaFramework.hpp>
#include "MediaSample.bid"

//
//  MediaSample アプリケーションクラス
//
SFMTYPEDEFCLASS(MediaSample)
class MediaSample : public SFRApplication
{
private:
    SFBMediaSmp             _media;
    AEEMediaData            _mdata;

public:
    static SFCInvokerPtr ructorConst() { return new MediaSample; }

private:
    MediaSample(Void);

    // コピー操作を防ぐために隠蔽する
    MediaSample(MediaSampleConstRef);
    MediaSampleConstRef operator = (ConstMediaSampleRef);

    // アプリ開始ハンドラ
    Void OnAppStart(Void);
    static Bool OnAppStartEntry(SFXEventConstRef event, VoidPtr data)
    { MediaSamplePtr(data)->OnAppStart(); return true; }

    // アプリ終了ハンドラ
    Void OnAppStop(Void);
    static Bool OnAppStopEntry(SFXEventConstRef event, VoidPtr data)
    { MediaSamplePtr(data)->OnAppStop(); return true; }

};

//  BREW アプレットの起動コード
SFCInvokerSPP SFCApplet::Boot(AEECLSID id)
{
    if (id == AEECLSID_MEDIASAMPLE)
    {
        return MediaSample::ructorConst;
    }
    else
    {
        return null;
    }
}

//  コンストラクタ
MediaSample::MediaSample(Void)
{
    // イベントハンドラを登録する
    RegisterHandler(SFEVT_APP_START, HANDLER_BEFORE, OnAppStartEntry, this);
    RegisterHandler(SFEVT_APP_STOP, HANDLER_BEFORE, OnAppStopEntry, this);

    // メディア データを初期化する
    _mdata.pData = null;
}

//  アプリ開始ハンドラ
Void MediaSample::OnAppStart(Void)
{
    // SFBMediaUtil オブジェクトを使用してメディアを再生する
    SFBShellSmp         shell    = SFBShell::GetInstance();
    SFBMediaUtilSmp     mutil    = SFBMediaUtil::NewInstance();
    const char*         filename = "sample.mid";

    if (mutil != null) {
        // メディアデータを設定する
        _mdata.clsData  = MMD_FILE_NAME;
        _mdata.pData    = STRDUP(filename);
        _mdata.dwSize   = 0;

        // SFBMedia 派生クラスのインスタンスを作成する
        mutil->CreateMedia(&_mdata, (&_media);
    }

    if (_media != null) {
        // メディアを再生する
        _media->Play();
    }

}

//  アプリ終了ハンドラ
Void MediaSample::OnAppStop(Void)
{
    // メディア データを破棄する
    if (_mdata.pData != null) {
        FREE(_mdata.pData);
    }
}

参照

BREW API IMEDIAUTIL_CreateMedia


SFBMediaUtil::CreateMediaEx
SFBMedia ベースのオブジェクトの作成に必要な情報を指定する際に、 SFBMediaUtil::CreateMedia よりも高い柔軟性を提供します。
[ public ]
SFCError CreateMediaEx(
    AEEMediaCreateInfo* info   // 作成情報を含む構造体へのポインタ
    SFBMediaSmpPtr media       // SFBMedia 派生クラスのインスタンスを受け取るポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 引数が不正なとき: SFERR_INVALID_PARAM
  • クラスが見つからないとき: SFERR_UNSUPPORTED
  • 失敗したとき: SFERR_FAILED
  • メディアデータが不正なとき: MM_EBADMEDIADATA
  • メモリ不足のとき: MM_ENOMEDIAMEMORY
  • SFBMedia オブジェクトを作成するにはさらにデータが必要なとき: ENEEDMORE
  • データのピーク操作時のエラーのとき: MM_EPEEK
  • データ不足のため異常終了したとき: MM_ENOTENOUGHDATA

参照

BREW API IMEDIAUTIL_CreateMediaEx


SFBMediaUtil::EncodeJPEG
JPEG 形式のメディアをエンコードします。
[ public ]
SFCError EncodeJPEG(
    AEEMediaEncodeResult* result   // エンコードの結果を受け取る領域を指すポインタ
    AEEMediaEncodeInfo* spec       // エンコード情報
    SFXCallbackPtr callback        // コールバック関数
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 引数が不正なとき: SFERR_INVALID_PARAM
  • クラスが見つからないとき: SFERR_UNSUPPORTED
  • メモリ不足のとき: SFERR_NO_MEMORY
  • 失敗したとき: SFERR_FAILED

参照

BREW API IMEDIAUTIL_EncodeJPEG


SFBMediaUtil::EncodeMedia
指定した形式の新しいメディアをエンコードします。
[ public ]
SFCError EncodeMedia(
    AEEMediaEncodeResult* result   // エンコードの結果を受け取る領域を指すポインタ
    AEECLSID clsidDest             // 宛先のエンコード ClassID
    AEEMediaEncodeInfo* spec       // エンコード情報
    SFXCallbackPtr callback        // コールバック関数
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 引数が不正なとき: SFERR_INVALID_PARAM
  • クラスが見つからないとき: SFERR_UNSUPPORTED
  • メモリ不足のとき: SFERR_NO_MEMORY
  • 失敗したとき: SFERR_FAILED

参照

BREW API IMEDIAUTIL_EncodeMedia


SFBMediaUtil::EncodePMD
PMD 形式のメディアをエンコードします。
[ public ]
SFCError EncodePMD(
    AEEMediaEncodeResult* result   // エンコードの結果を受け取る領域を指すポインタ
    AEEMediaEncodeInfo* spec       // エンコード情報
    SFXCallbackPtr callback        // コールバック関数
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 引数が不正なとき: SFERR_INVALID_PARAM
  • クラスが見つからないとき: SFERR_UNSUPPORTED
  • メモリ不足のとき: SFERR_NO_MEMORY
  • 失敗したとき: SFERR_FAILED

参照

BREW API IMEDIAUTIL_EncodePMD


SFBMediaUtil::NewInstance
SFBMediaUtil インスタンスを生成します。
[ public, static ]
SFBMediaUtilSmp NewInstance(
    SFCErrorPtr exception = null   // エラー値
);
[ public, static ]
SFBMediaUtilSmp NewInstance(
    AEECLSID id                    // クラスID
    SFCErrorPtr exception = null   // エラー値
);