Re: [LAD] jack and c++

From: Maarten de Boer <mdeboer@email-addr-hidden>
Date: Mon Nov 10 2008 - 11:37:25 EET

Why don't you take it one step further, and call a method of audJ
right away, so you don't have use audJ-> all the time?

class AudioOutputJACK
{
    [...]
    static int sProcessJackCallback(jack_nframes_t nframes, void* arg)
    {
       AudioOutputJACK* audJ = static_cast<AudioOutputJACK*>(arg);
       return audJ->ProcessJackCallback(nframes)
    }
    int ProcessJackCallback(jack_nframes_t nframes)
    {
       [...]
    }
};

On Nov 10, 2008, at 10:10 AM, cal wrote:

> Malte Steiner wrote:
>> For a new audio application I need to code a JACK client with C++. So
>> far I did it only with C and have a problem with giving the pointer
>> to
>> the callback process function, which is a method now. So what is the
>> best performing solution? Is a delegate function a good idea, being
>> static and triggering the method in the objectinstance?
>
> No idea what the best solution might be, but here's an approach I've
> used...
>
> class AudioOutputJACK
> {
> public:
> [ ... ]
> private:
> static int ProcessJackCallback(jack_nframes_t nframes, void*
> arg);
> }
>
> And in the class initialisation,
>
> if ((chk = jack_set_process_callback(jack_client,
> ProcessJackCallback,
> this)))
> { ... }
>
> And the callback function ...
>
> int AudioOutputJACK::ProcessJackCallback(jack_nframes_t nframes,
> void* arg)
> {
> AudioOutputJACK* audJ = static_cast<AudioOutputJACK*>(arg);
> // then stuff like ...
> size_t bytes_requested = nframes * audJ->jack_frame_bytes;
> size_t bytes_read = jack_ringbuffer_read(audJ->ringbuffJ,
> (char*)audJ->jack_tfer_buf,
> bytes_requested);
> etc ...
> }
>
> cheers, Cal
> _______________________________________________
> Linux-audio-dev mailing list
> Linux-audio-dev@email-addr-hidden
> http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev

_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev
Received on Tue Nov 11 00:15:07 2008

This archive was generated by hypermail 2.1.8 : Tue Nov 11 2008 - 00:15:07 EET