![]() ![]() ![]()
|
SophiaFramework 2.2 |
#include <SFBMedia.hpp>
class SFBMedia : public SFBQuery;
typedef SFBMedia& SFBMediaRef; typedef SFBMedia* SFBMediaPtr; typedef SFBMedia** SFBMediaHandle; typedef const SFBMedia ConstSFBMedia; typedef const SFBMedia& ConstSFBMediaRef; typedef const SFBMedia* ConstSFBMediaPtr; typedef const SFBMedia** ConstSFBMediaHandle;
![]() |
Tip |
|---|---|
IMedia インターフェイスは抽象インターフェイスであり、 再生するメディアのフォーマットおよび実装により、 実際にサポートされている API やパラメータは異なります。 現在サポートされている API やパラメータに関する詳細な情報はありません。 | |
| コールバックの不具合 | |
| バグ | BREW エミュレータ 2.0.1.5 |
BREW SDK 上、IMEDIA_SetMuteCtl や IMEDIA_SetAudioDevice を行った場合、 コールバック時に渡される MM_CMD_SETMEDIAPARM の値が MM_PARM_VOLUME で渡される不具合があります。
| サスペンド時のオブジェクトのリリースについて | |
| バグ | A5304T |
SMAF 再生中、他のアプリを起動しようとすると (一発起動キー or ISHELL_StartApplet)、 再生中のアプリケーションに対して EVT_APP_SUSPEND がかかります。このとき、 再生をストップして IMEDIA オブジェクトを解放するのが正しい動作ですが、 SMAF 再生エンジンの不具合により、この操作 (オブジェクトの解放)を行うと端末にリセットがかかることがあります。 これに対処するには、以下のようにコーディングしてください。
基本的なシーケンスは以下の通りです。
EVT_APP_SUSPENDを受信。
イベント ハンドラ内で、IMEDIA_Stop をコール。
イベント ハンドラでは TRUE を返してサスペンドする。
IMEDIA_Stop のコールバックが呼ばれたら、このコールバック内で IMEDIA_Release をコールして IMedia オブジェクトを解放する。
EVT_APP_SUSPEND で直ちに IMedia オブジェクトを解放するのではなく、 IMEDIA_Stop のコールバック関数内で解放を行うのがポイントです。
以下に、簡単なサンプルを示します。
// サスペンド時のイベントハンドラ
case EVT_APP_SUSPEND:
if (pMe->pMedia != NULL)
{
pMe->bSuspend = TRUE;
IMEDIA_Stop(pMe->pMedia);
}
return TRUE;
// IMEDIA_Stop のコールバック
MediaStopCB(....)
{
if (pMe->bSuspend)
{
// サスペンド処理中なら、IMedia オブジェクトを解放
IMEDIA_Release(pMe->pMedia);
pMe->bSuspend = FALSE;
}
return;
}
| SetParam, GetParam | |
| ドキュメント エラー | BREW API リファレンス 2.0.1.5 |
IMEDIA_SetParam/GetParam の各パラメータの説明文中、 フォーマットが崩れて意味不明な個所があります。正しくは以下の通りです。
| nParamID | 操作 | 説明 | p1 | p2 |
|---|---|---|---|---|
| MM_PARM_AUDIO_PATH | 取得/設定 | メディアパス | MM_APATH_XXX | (p1=MM_APATH_LOCAL_RINGER の時のみ) SilentTimerMS。繰り返し再生時のトラック間の 無音時間を定める (ミリ秒単位)。O に設定された場合、繰り返しを行わない。 |
| MM_PARM_TICK_TIME | 取得/設定 | MM_TICK_UPDATE の周期 | デフォルトは 1000 (ミリ秒単位)。0 にセットすると、 MM_TICK_UPDATE イベントは発生しない。 |
| IMEDIA_SetTickTime | |
| バグ | BREW エミュレータ 2.0.1.5 |
この API は、SDK 上で正常に動作しません。
| パブリック関数 | ||
|---|---|---|
| public |
AddRef (SFBBase から継承) | インターフェイスの参照カウントをインクリメントします。 |
| public |
EnableChannelShare | メディアの排他的な再生を有効/無効に設定します。 |
| public |
EnableFrameCallback | メディアの排他的な再生を有効/無効にします。 |
| public |
FastForward | 現在位置から指定された時間だけ早送りします。 メディアは現在の状態を保持します。 |
| public |
GetClassID | IMedia インタフェース オブジェクトの Class ID を取得します。 |
| public |
GetFrame | 現在のフレームを IBitmap として取得します。 |
| public |
GetMediaData | メディアデータを取得します。 |
| public |
GetMediaParm | メディア パラメータを取得します。 |
| public |
GetRect | 宛先の画像長方形とテキスト長方形を取得します。 |
| public |
GetState | IMedia インタフェースの現在の状態を返します。 |
| public |
GetTotalTime | IMedia オブジェクトの合計再生時間を返します。 |
| public |
GetVolume | 現在の再生/記録のボリュームを取得します。 |
| public static |
Instance | IMedia インターフェイスのインスタンスを取得します。 |
| public |
IsChannelShare | 現在のチャンネル共有の設定を取得します。 |
| public |
IsFrameCallback | 現在のフレーム コールバックの有効/無効の設定を取得します。 |
| public |
Pause | メディアを一時停止し、MM_STATUS_PAUSE コールバックの中に現在の位置を返します。 |
| public |
Play | 再生を開始します。 |
| public |
QueryInterface (SFBQuery から継承) | このオブジェクトからの別の API を問い合わせます。 |
| public |
Record | 記録を開始します。 |
| public |
RegisterNotify | コールバック通知関数を登録します。 |
| public |
Release (SFBBase から継承) | インターフェイスの参照カウントをデクリメントします。 |
| public |
Resume | 現在の位置からメディアを再開します。 |
| public |
Rewind | 現在位置から指定時間だけ巻き戻しします。 メディアは現在の状態を保持します。 |
| public |
Seek | メディアの位置をシークします。 メディアは現在の状態を保持します。 |
| public |
SeekFrame | メディアの位置をシークします。 |
| public |
Self (SFBQuery から継承) | オブジェクトを単一インタフェースで実装する際に使用します。 |
| public |
SetAudioDevice | メディアデータを設定し、メディアをレディ状態にします。 |
| public |
SetAudioPath | 再生/記録のオーディオパスを設定します。 |
| public |
SetMediaData | メディアデータを設定し、メディアをレディ状態にします。 |
| public |
SetMediaParm | メディア パラメータを設定します。 |
| public |
SetMuteCtl | 現在のオーディオパスをミュート/ミュート解除します。 |
| public |
SetPan | 現在の再生のパンファクタを設定します。 |
| public |
SetRect | 宛先の画像長方形とテキスト長方形を設定します。 |
| public |
SetTickTime | 再生/記録の間にアプリケーションに送信されるMM_TICK_UPDATEイベントの周期を設定します。 |
| public |
SetVolume | 現在の再生/記録のボリュームを設定します。 |
| public |
Stop | 再生/記録を停止します。 |
この関数は、BREW 2.1 以降でのみ使用可能です。
BREW API IMEDIA_EnableChannelShare
この関数は、BREW 2.1 以降でのみ使用可能です。
BREW API IMEDIA_EnableFrameCallback
// クラスのメンバ変数として宣言します。
SFUBrewPtr<SFBMedia> _media;
AEEMediaData _mdata;
----------------------------------------------------------------------
// 関数内のローカル変数として宣言します。
SFUBrewPtr<SFBShell> shell = SFBShell::Instance();
const char* filename = "test.qcp";
// IMediaQCP インターフェイスを取得して、メディアデータを設定します。
_media = SFBMediaQCP::Instance();
if (_media != NULL) {
// AEEMediaData 構造体にメディアデータを設定します。
_mdata.clsData = MMD_FILE_NAME;
_mdata.pData = STRDUP(filename);
_mdata.dwSize = 0;
// メディアデータを設定します。
_media->SetMediaData(&_mdata);
// オーディオ デバイスを設定します。
_media->SetAudioDevice(AEE_SOUND_DEVICE_CURRENT);
// サウンドを再生します。
_media->Play();
}
----------------------------------------------------------------------
// [→] キーが押された場合に、
// サウンドを 10 秒進めます。
if (key == AVK_RIGHT) {
if (_media != NULL) {
// 早送りをします。(10 秒)
_media->FastForward(10000);
}
}
[ public ] SFCError GetClassID( AEECLSID * pCls );
[ public ] AEECLSID GetClassID(Void);
[ public ] SFCError GetFrame( SFUBrewPtr<SFBBitmap> * ppFrame );
この関数は、BREW 2.1 以降でのみ使用可能です。
BREW API IMEDIA_EnableFrameCallback
[ public ] SFCError GetMediaData( AEEMediaData * pMediaData );
BREW API IMEDIA_GetMediaData | AEEMediaData | SFBMedia::GetMediaParm | SFBMedia::GetMediaData | SFBMedia::SetMediaParm
BREW API IMEDIA_GetRect | SFBMedia::Play | SFBMedia::Record | SFBMedia::SetMediaParm | SFBMedia::GetMediaParm
// クラスのメンバ変数として宣言します。
SFUBrewPtr<SFBMedia> _media;
AEEMediaData _mdata;
----------------------------------------------------------------------
// 関数内のローカル変数として宣言します。
SFUBrewPtr<SFBShell> shell = SFBShell::Instance();
const char* filename = "test.qcp";
// IMediaQCP インターフェイスを取得して、メディアデータを設定します。
_media = SFBMediaQCP::Instance();
if (_media != NULL) {
// AEEMediaData 構造体にメディアデータを設定します。
_mdata.clsData = MMD_FILE_NAME;
_mdata.pData = STRDUP(filename);
_mdata.dwSize = 0;
// メディアデータを設定します。
_media->SetMediaData(&_mdata);
// オーディオ デバイスを設定します。
_media->SetAudioDevice(AEE_SOUND_DEVICE_CURRENT);
// サウンドを再生します。
_media->Play();
}
----------------------------------------------------------------------
// セレクトキーが押された場合に、
// サウンドを一時停止します。
if (key == AVK_SELECT) {
if (_media != NULL) {
SInt32 state;
Bool bStateChanging;
// 現在の状態を取得します。
state = _media->GetState(&bStateChanging);
if (state == MM_STATE_PLAY) {
// 再生中のサウンドを一時停止します。
_media->Pause();
}
}
}
[ public ] SFCError GetTotalTime(Void);
BREW API IMEDIA_GetVolume | SFBMedia::SetAudioPath | SFBMedia::SetMuteCtl | SFBMedia::SetVolume | SFBMedia::SetPan | SFBMedia::SetMediaParm | SFBMedia::GetMediaParm | SFBMedia::SetAudioDevice
[ public, static ] SFUBrewPtr<SFBMedia> Instance(Void);
この関数は、BREW 2.1 以降でのみ使用可能です。
BREW API IMEDIA_IsChannelShare
この関数は、BREW 2.1 以降でのみ使用可能です。
BREW API IMEDIA_IsFrameCallback
[ public ] SFCError Pause(Void);
// クラスのメンバ変数として宣言します。
SFUBrewPtr<SFBMedia> _media;
AEEMediaData _mdata;
----------------------------------------------------------------------
// 関数内のローカル変数として宣言します。
SFUBrewPtr<SFBShell> shell = SFBShell::Instance();
const char* filename = "test.qcp";
// IMediaQCP インターフェイスを取得して、メディアデータを設定します。
_media = SFBMediaQCP::Instance();
if (_media != NULL) {
// AEEMediaData 構造体にメディアデータを設定します。
_mdata.clsData = MMD_FILE_NAME;
_mdata.pData = STRDUP(filename);
_mdata.dwSize = 0;
// メディアデータを設定します。
_media->SetMediaData(&_mdata);
// オーディオ デバイスを設定します。
_media->SetAudioDevice(AEE_SOUND_DEVICE_CURRENT);
// サウンドを再生します。
_media->Play();
}
----------------------------------------------------------------------
// セレクトキーが押された場合に、
// サウンドを一時停止します。
if (key == AVK_SELECT) {
if (_media != NULL) {
SInt32 state;
Bool bStateChanging;
// 現在の状態を取得します。
state = _media->GetState(&bStateChanging);
if (state == MM_STATE_PLAY) {
// 再生中のサウンドを一時停止します。
_media->Pause();
}
}
}
[ public ] SFCError Play(Void);
// クラスのメンバ変数として宣言します。
SFUBrewPtr<SFBMedia> _media;
AEEMediaData _mdata;
----------------------------------------------------------------------
// 関数内のローカル変数として宣言します。
SFUBrewPtr<SFBShell> shell = SFBShell::Instance();
const char* filename = "test.qcp";
// IMediaQCP インターフェイスを取得して、メディアデータを設定します。
_media = SFBMediaQCP::Instance();
if (_media != NULL) {
// AEEMediaData 構造体にメディアデータを設定します。
_mdata.clsData = MMD_FILE_NAME;
_mdata.pData = STRDUP(filename);
_mdata.dwSize = 0;
// メディアデータを設定します。
_media->SetMediaData(&_mdata);
// オーディオ デバイスを設定します。
_media->SetAudioDevice(AEE_SOUND_DEVICE_CURRENT);
// サウンドを再生します。
_media->Play();
}
BREW API IMEDIA_Play | SFBMedia::FastForward | SFBMedia::Pause | SFBMedia::Record | SFBMedia::Resume | SFBMedia::Rewind | SFBMedia::Seek | SFBMedia::Stop | AEEMediaCmdNotify
[ public ] SFCError Record(Void);
BREW API IMEDIA_Record | SFBMedia::FastForward | SFBMedia::Pause | SFBMedia::Play | SFBMedia::Resume | SFBMedia::Rewind | SFBMedia::Seek | SFBMedia::Stop | AEEMediaCmdNotify | AEEMediaData |
[ public ] SFCError RegisterNotify( PFNMEDIANOTIFY pfnNotify VoidPtr pUser = NULL );
[ public ] SFCError Resume(Void);
// クラスのメンバ変数として宣言します。
SFUBrewPtr<SFBMedia> _media;
AEEMediaData _mdata;
----------------------------------------------------------------------
// 関数内のローカル変数として宣言します。
SFUBrewPtr<SFBShell> shell = SFBShell::Instance();
const char* filename = "test.qcp";
// IMediaQCP インターフェイスを取得して、メディアデータを設定します。
_media = SFBMediaQCP::Instance();
if (_media != NULL) {
// AEEMediaData 構造体にメディアデータを設定します。
_mdata.clsData = MMD_FILE_NAME;
_mdata.pData = STRDUP(filename);
_mdata.dwSize = 0;
// メディアデータを設定します。
_media->SetMediaData(&_mdata);
// オーディオ デバイスを設定します。
_media->SetAudioDevice(AEE_SOUND_DEVICE_CURRENT);
// サウンドを再生します。
_media->Play();
}
----------------------------------------------------------------------
// セレクトキーが押された場合に、
// 一時停止中のサウンドを再生します。
if (key == AVK_SELECT) {
if (_media != NULL) {
SInt32 state;
Bool bStateChanging;
// 現在の状態を取得します。
state = _media->GetState(&bStateChanging);
if (state == MM_STATE_PLAY_PAUSE)
{
// 一時停止中のサウンドを再生します。
_media->Resume();
}
}
}
// クラスのメンバ変数として宣言します。
SFUBrewPtr<SFBMedia> _media;
AEEMediaData _mdata;
----------------------------------------------------------------------
// 関数内のローカル変数として宣言します。
SFUBrewPtr<SFBShell> shell = SFBShell::Instance();
const char* filename = "test.qcp";
// IMediaQCP インターフェイスを取得して、メディアデータを設定します。
_media = SFBMediaQCP::Instance();
if (_media != NULL) {
// AEEMediaData 構造体にメディアデータを設定します。
_mdata.clsData = MMD_FILE_NAME;
_mdata.pData = STRDUP(filename);
_mdata.dwSize = 0;
// メディアデータを設定します。
_media->SetMediaData(&_mdata);
// オーディオ デバイスを設定します。
_media->SetAudioDevice(AEE_SOUND_DEVICE_CURRENT);
// サウンドを再生します。
_media->Play();
}
----------------------------------------------------------------------
// [←] キーが押された場合に、
// サウンドを 10 秒戻します。
if (key == AVK_LEFT) {
if (_media != NULL) {
// 巻き戻しをします。(10 秒)
_media->Rewind(10000);
}
}
BREW API IMEDIA_Resume | SFBMedia::FastForward | SFBMedia::Seek | SFBMedia::Play | AEEMediaCmdNotify
[ public ] SFCError Seek( AEEMediaSeek eSeek // シーク参照 SInt32 lTimeMS // 時間 (ミリ秒) );
[ public ] SFCError SeekFrame( AEEMediaSeek seek SInt32 frames );
この関数は、BREW 2.1 以降でのみ使用可能です。
BREW API IMEDIA_SeekFrame
[ public ] SFCError SetAudioDevice( AEESoundDevice eDevice );
// クラスのメンバ変数として宣言します。
SFUBrewPtr<SFBMedia> _media;
AEEMediaData _mdata;
----------------------------------------------------------------------
// 関数内のローカル変数として宣言します。
SFUBrewPtr<SFBShell> shell = SFBShell::Instance();
const char* filename = "test.qcp";
// IMediaQCP インターフェイスを取得して、メディアデータを設定します。
_media = SFBMediaQCP::Instance();
if (_media != NULL) {
// AEEMediaData 構造体にメディアデータを設定します。
_mdata.clsData = MMD_FILE_NAME;
_mdata.pData = STRDUP(filename);
_mdata.dwSize = 0;
// メディアデータを設定します。
_media->SetMediaData(&_mdata);
// オーディオ デバイスを設定します。
_media->SetAudioDevice(AEE_SOUND_DEVICE_CURRENT);
// サウンドを再生します。
_media->Play();
}
BREW API IMEDIA_SetAudioDevice | AEESoundDevice | SFBMedia::SetAudioPath | SFBMedia::SetMuteCtl | SFBMedia::SetVolume | SFBMedia::GetVolume | SFBMedia::SetPan | SFBMedia::SetMediaParm | SFBMedia::GetMediaParm
BREW API IMEDIA_SetAudioPath | SFBMedia::SetMuteCtl | SFBMedia::SetVolume | SFBMedia::GetVolume | SFBMedia::SetPan | SFBMedia::SetMediaParm | SFBMedia::GetMediaParm | SFBMedia::SetAudioDevice
[ public ] SFCError SetMediaData( AEEMediaData * pMediaData );
// クラスのメンバ変数として宣言します。
SFUBrewPtr<SFBMedia> _media;
AEEMediaData _mdata;
----------------------------------------------------------------------
// 関数内のローカル変数として宣言します。
SFUBrewPtr<SFBShell> shell = SFBShell::Instance();
const char* filename = "test.qcp";
// IMediaQCP インターフェイスを取得して、メディアデータを設定します。
_media = SFBMediaQCP::Instance();
if (_media != NULL) {
// AEEMediaData 構造体にメディアデータを設定します。
_mdata.clsData = MMD_FILE_NAME;
_mdata.pData = STRDUP(filename);
_mdata.dwSize = 0;
// メディアデータを設定します。
_media->SetMediaData(&_mdata);
// オーディオ デバイスを設定します。
_media->SetAudioDevice(AEE_SOUND_DEVICE_CURRENT);
// サウンドを再生します。
_media->Play();
}
BREW API IMEDIA_SetMediaData | SFBMedia::GetMediaData | SFBMedia::GetMediaParm | SFBMedia::SetMediaParm
BREW API IMEDIA_SetMuteCtl | SFBMedia::SetAudioPath | SFBMedia::SetVolume | SFBMedia::GetVolume | SFBMedia::SetPan | SFBMedia::SetMediaParm | SFBMedia::GetMediaParm | SFBMedia::SetAudioDevice
BREW API IMEDIA_SetPan | SFBMedia::SetAudioPath | SFBMedia::SetMuteCtl | SFBMedia::SetVolume | SFBMedia::GetVolume | SFBMedia::SetMediaParm | SFBMedia::GetMediaParm | SFBMedia::SetAudioDevice
BREW API IMEDIA_SetRect | AEERect | SFBMedia::Play | SFBMedia::Record | SFBMedia::SetMediaParm | SFBMedia::GetMediaParm
BREW API IMEDIA_SetTickTime | SFBMedia::Play | SFBMedia::Record | SFBMedia::SetMediaParm | SFBMedia::GetMediaParm
// クラスのメンバ変数として宣言します。
SFUBrewPtr<SFBMedia> _media;
AEEMediaData _mdata;
----------------------------------------------------------------------
// 関数内のローカル変数として宣言します。
SFUBrewPtr<SFBShell> shell = SFBShell::Instance();
const char* filename = "test.qcp";
// IMediaQCP インターフェイスを取得して、メディアデータを設定します。
_media = SFBMediaQCP::Instance();
if (_media != NULL) {
// AEEMediaData 構造体にメディアデータを設定します。
_mdata.clsData = MMD_FILE_NAME;
_mdata.pData = STRDUP(filename);
_mdata.dwSize = 0;
// メディアデータを設定します。
_media->SetMediaData(&_mdata);
// オーディオ デバイスを設定します。
_media->SetAudioDevice(AEE_SOUND_DEVICE_CURRENT);
// 音量を設定します。
_media->SetVolume(AEE_MAX_VOLUME);
// サウンドを再生します。
_media->Play();
}
BREW API IMEDIA_SetVolume | SFBMedia::SetAudioDevice | SFBMedia::SetAudioPath | SFBMedia::SetMuteCtl | SFBMedia::GetVolume | SFBMedia::SetPan | SFBMedia::SetMediaParm | SFBMedia::GetMediaParm
[ public ] SFCError Stop(Void);
// クラスのメンバ変数として宣言します。
SFUBrewPtr<SFBMedia> _media;
AEEMediaData _mdata;
----------------------------------------------------------------------
// 関数内のローカル変数として宣言します。
SFUBrewPtr<SFBShell> shell = SFBShell::Instance();
const char* filename = "test.qcp";
// IMediaQCP インターフェイスを取得して、メディアデータを設定します。
_media = SFBMediaQCP::Instance();
if (_media != NULL) {
// AEEMediaData 構造体にメディアデータを設定します。
_mdata.clsData = MMD_FILE_NAME;
_mdata.pData = STRDUP(filename);
_mdata.dwSize = 0;
// メディアデータを設定します。
_media->SetMediaData(&_mdata);
// オーディオ デバイスを設定します。
_media->SetAudioDevice(AEE_SOUND_DEVICE_CURRENT);
// サウンドを再生します。
_media->Play();
}
----------------------------------------------------------------------
// セレクトキーが押された場合に、
// サウンドの再生を停止します。
if (key == AVK_SELECT) {
if (_media != NULL) {
_media->Stop();
}
}
| Copyright(C) 2003-2004 Sophia Cradle Inc., All Rights Reserved. |
![]() ![]() ![]()
|