[英]Pointer to member-function for SDL audio callback?
我使用SDL 1.2.15打從libav(ffmpeg的)聲音就像這個例子在這里 。
我已經宣布要播放聲音的課程。 但是,現在我必須在SDL_AudioSpec::callback
存儲用於回調函數的指針(在示例wanted_spec.callback
)。 但是我的回調是我班的成員。
SDL中的回調指針是:
void (SDLCALL *callback)(void *userdata, Uint8 *stream, int len);
其中SDLCALL
是__cdecl
。
如何在我的wanted_spec_.callback
存儲成員函數的指針?
如果要使用非靜態成員函數來處理回調,則需要提供轉發功能並將userdata
設置為指向目標對象的指針。
struct CallbackObject
{
void onCallback(Uint8 *stream, int len)
{
// ....
}
static void forwardCallback(void *userdata, Uint8 *stream, int len)
{
static_cast<CallbackObject*>(userdata)->onCallback(stream, len);
}
};
SDL_AudioSpec audio;
CallbackObject callbackObject;
audio.callback = CallbackObject::forwardCallback;
audio.userdata = &callbackObject;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.