[pulseaudio-discuss] Pulseaudio --> Loading a module using a C program..

sathishkumar sivagurunathan sathish1000 at gmail.com
Wed Dec 4 03:09:10 PST 2013


On Dec 4, 2013 4:38 PM, sathish1000 at gmail.com wrote:

>
> >
> > Hi,
> >
> >
> >
> > I wrote a small c program to try to load a module.. But the module is
> not getting loaded.
>
> > Can anybody help me with this ? I have pasted the code below.
> >
> >
> >
>
> >
> >
> >
> > #include <stdio.h>
> >
> > #include <string.h>
> >
> > #include <pulse/pulseaudio.h>
> >
> >
> >
> > #define CLEAR_LINE "\n"
> >
> > #define _(x) x
> >
> >
> >
> > /*
> >
> > // From pulsecore/macro.h
> >
> > #define pa_memzero(x,l) (memset((x), 0, (l)))
> >
> > #define pa_zero(x) (pa_memzero(&(x), sizeof(x)))
> >
> > */
> >
> >
> >
> > int ret;
> >
> > pa_context *context;
> >
> > int clientindex;
> >
> > int sink_num_channels;
> >
> > int sink_input_index;
> >
> >
> >
> > void show_error(char *s) {
> >
> >     /* stub */
> >
> > }
> >
> >
> >
> > void load_module_cb(pa_context *context, int32_t index, void *userdata)
> >
> > {
> >
> >    printf ("Going out \n");
> >
> >    int * return_value_pointer = (int *) userdata;
> >
> >    if (return_value_pointer)
> >
> >    {
> >
> >       *return_value_pointer = index;
> >
> >    }
> >
> > }
> >
> >
> >
> > // This callback gets called when our context changes state.  We really
> only
> >
> > // care about when it's ready or if it has failed
> >
> > void pa_state_cb(pa_context *c, void *userdata) {
> >
> >                 pa_context_state_t state;
> >
> >                 int *pa_ready = userdata;
> >
> >
> >
> >                 state = pa_context_get_state(c);
> >
> >                 switch  (state) {
> >
> >                                 // There are just here for reference
> >
> >                                 case PA_CONTEXT_UNCONNECTED:
> >
> >                                 case PA_CONTEXT_CONNECTING:
> >
> >                                 case PA_CONTEXT_AUTHORIZING:
> >
> >                                 case PA_CONTEXT_SETTING_NAME:
> >
> >                                 default:
> >
> >                                                 break;
> >
> >                                 case PA_CONTEXT_FAILED:
> >
> >                                 case PA_CONTEXT_TERMINATED:
> >
> >                                                 *pa_ready = 2;
> >
> >                                                 break;
> >
> >                                 case PA_CONTEXT_READY:
> >
> >                                                 *pa_ready = 1;
> >
> >                                                 break;
> >
> >                 }
> >
> > }
> >
> >
> >
> > int pa_get_devicelist() {
> >
> >     // Define our pulse audio loop and connection variables
> >
> >     pa_mainloop *pa_ml;
> >
> >     pa_mainloop_api *pa_mlapi;
> >
> >     pa_operation *pa_op;
> >
> >     pa_context *pa_ctx;
> >
> >
> >
> >     // We'll need these state variables to keep track of our requests
> >
> >     int state = 0;
> >
> >     int pa_ready = 0;
> >
> >
> >
> >
> >
> >     // Create a mainloop API and connection to the default server
> >
> >     pa_ml = pa_mainloop_new();
> >
> >     pa_mlapi = pa_mainloop_get_api(pa_ml);
> >
> >     pa_ctx = pa_context_new(pa_mlapi, "test");
> >
> >
> >
> >     // This function connects to the pulse server
> >
> >     pa_context_connect(pa_ctx, NULL, 0, NULL);
> >
> >
> >
> >     // This function defines a callback so the server will tell us it's
> state.
> >
> >     // Our callback will wait for the state to be ready.  The callback
> will
> >
> >     // modify the variable to 1 so we know when we have a connection and
> it's
> >
> >     // ready.
> >
> >     // If there's an error, the callback will set pa_ready to 2
> >
> >     pa_context_set_state_callback(pa_ctx, pa_state_cb, &pa_ready);
> >
> >
> >
> >     // Now we'll enter into an infinite loop until we get the data we
> receive
> >
> >     // or if there's an error
> >
> >     //for (;;) {
> >
> >                 // We can't do anything until PA is ready, so just
> iterate the mainloop
> >
> >                 // and continue
> >
> >                 if (pa_ready == 0) {
> >
> >             printf ("Going in \n");
> >
> >             pa_op=pa_context_load_module(pa_ctx, "module-role-cork",
> NULL, NULL, NULL);
> >
> >             printf ("Going in1 \n");
> >
> >             if(pa_op) pa_operation_unref(pa_op);
> >
> >                     //continue;
> >
> >                 }
> >
> >                 // We couldn't get a connection to the server, so exit
> out
> >
> >                 if (pa_ready == 2) {
> >
> >                     pa_context_disconnect(pa_ctx);
> >
> >                     pa_context_unref(pa_ctx);
> >
> >                     pa_mainloop_free(pa_ml);
> >
> >                     return -1;
> >
> >                 }
> >
> >
> >
> >                 pa_context_disconnect(pa_ctx);
> >
> >                 pa_context_unref(pa_ctx);
> >
> >                 pa_mainloop_free(pa_ml);
> >
> >                 return 0;
> >
> > }
> >
> >
> >
> > int main(int argc, char *argv[]) {
> >
> >
> >
> >     if (pa_get_devicelist() < 0) {
> >
> >                 fprintf(stderr, "failed to get device list\n");
> >
> >                 return 1;
> >
> >     }
> >
> >
> >
> >     return 0;
> >
> > }
> >
> >
> >
> > Thanks,
> >
> > Sathish
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20131204/ef9bc999/attachment-0001.html>


More information about the pulseaudio-discuss mailing list