簡體   English   中英

指向SDL音頻回調的成員函數的指針?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM