繁体   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