static void source_device_callback( pa_context* context, const pa_source_info* info, int eol, void* pdata ) //{{{
{
	pa_threaded_mainloop* loop = pdata;
	void* temp;

	( void )context;

	if ( eol )
	{
		ppa_threaded_mainloop_signal( loop, 0 );
		return;
	}

	temp = realloc( allCaptureDevNameMap, ( numCaptureDevNames + 1 ) * sizeof( *allCaptureDevNameMap ) );

	if ( temp )
	{
		char str[256];
		snprintf( str, sizeof( str ), "%s via PulseAudio", info->description );

		allCaptureDevNameMap = temp;
		allCaptureDevNameMap[numCaptureDevNames].name = strdup( str );
		allCaptureDevNameMap[numCaptureDevNames].device_name = strdup( info->name );
		numCaptureDevNames++;
	}
}//}}}
Пример #2
0
static void stream_state_callback(pa_stream *stream, void *pdata) //{{{
{
    ALCdevice *Device = pdata;
    pulse_data *data = Device->ExtraData;
    (void)stream;

    if(ppa_threaded_mainloop_in_thread(data->loop))
        ppa_threaded_mainloop_signal(data->loop, 1);
}//}}}
static void stream_success_callback( pa_stream* stream, int success, void* pdata ) //{{{
{
	ALCdevice* Device = pdata;
	pulse_data* data = Device->ExtraData;
	( void )stream;
	( void )success;

	ppa_threaded_mainloop_signal( data->loop, 0 );
}//}}}
Пример #4
0
// PulseAudio Event Callbacks //{{{
static void context_state_callback(pa_context *context, void *pdata) //{{{
{
    ALCdevice *Device = pdata;
    pulse_data *data = Device->ExtraData;
    (void)context;

    if(ppa_threaded_mainloop_in_thread(data->loop))
        ppa_threaded_mainloop_signal(data->loop, 1);
}//}}}
Пример #5
0
static void stream_state_callback(pa_stream *stream, void *pdata) //{{{
{
    ALCdevice *Device = pdata;
    pulse_data *data = Device->ExtraData;
    pa_stream_state_t state;

    state = ppa_stream_get_state(stream);
    if(state == PA_STREAM_READY || !PA_STREAM_IS_GOOD(state))
        ppa_threaded_mainloop_signal(data->loop, 0);
}//}}}
Пример #6
0
// PulseAudio Event Callbacks //{{{
static void context_state_callback(pa_context *context, void *pdata) //{{{
{
    ALCdevice *Device = pdata;
    pulse_data *data = Device->ExtraData;
    pa_context_state_t state;

    state = ppa_context_get_state(context);
    if(state == PA_CONTEXT_READY || !PA_CONTEXT_IS_GOOD(state))
        ppa_threaded_mainloop_signal(data->loop, 0);
}//}}}
Пример #7
0
static void server_info_callback(pa_context *context, const pa_server_info *info, void *pdata) //{{{
{
    struct {
        pa_threaded_mainloop *loop;
        char *name;
    } *data = pdata;
    (void)context;

    data->name = strdup(info->default_sink_name);
    ppa_threaded_mainloop_signal(data->loop, 0);
}//}}}
static void stream_state_callback( pa_stream* stream, void* pdata ) //{{{
{
	pa_threaded_mainloop* loop = pdata;
	pa_stream_state_t state;

	state = ppa_stream_get_state( stream );

	if ( state == PA_STREAM_READY || !PA_STREAM_IS_GOOD( state ) )
	{
		ppa_threaded_mainloop_signal( loop, 0 );
	}
}//}}}
// PulseAudio Event Callbacks //{{{
static void context_state_callback( pa_context* context, void* pdata ) //{{{
{
	pa_threaded_mainloop* loop = pdata;
	pa_context_state_t state;

	state = ppa_context_get_state( context );

	if ( state == PA_CONTEXT_READY || !PA_CONTEXT_IS_GOOD( state ) )
	{
		ppa_threaded_mainloop_signal( loop, 0 );
	}
}//}}}
Пример #10
0
static void stream_state_callback2(pa_stream *stream, void *pdata) //{{{
{
    ALCdevice *Device = pdata;
    pulse_data *data = Device->ExtraData;

    if(ppa_stream_get_state(stream) == PA_STREAM_FAILED)
    {
        AL_PRINT("Received stream failure!\n");
        aluHandleDisconnect(Device);
    }
    ppa_threaded_mainloop_signal(data->loop, 0);
}//}}}
Пример #11
0
static void context_state_callback2(pa_context *context, void *pdata) //{{{
{
    ALCdevice *Device = pdata;
    pulse_data *data = Device->ExtraData;

    if(ppa_context_get_state(context) == PA_CONTEXT_FAILED)
    {
        AL_PRINT("Received context failure!\n");
        aluHandleDisconnect(Device);
    }
    ppa_threaded_mainloop_signal(data->loop, 0);
}//}}}
Пример #12
0
static void sink_info_callback(pa_context *context, const pa_sink_info *info, int eol, void *pdata) //{{{
{
    ALCdevice *device = pdata;
    pulse_data *data = device->ExtraData;
    char chanmap_str[256] = "";
    const struct {
        const char *str;
        ALenum format;
    } chanmaps[] = {
        { "front-left,front-right,front-center,lfe,rear-left,rear-right,side-left,side-right",
          AL_FORMAT_71CHN32 },
        { "front-left,front-right,front-center,lfe,rear-center,side-left,side-right",
          AL_FORMAT_61CHN32 },
        { "front-left,front-right,front-center,lfe,rear-left,rear-right",
          AL_FORMAT_51CHN32 },
        { "front-left,front-right,rear-left,rear-right", AL_FORMAT_QUAD32 },
        { "front-left,front-right", AL_FORMAT_STEREO_FLOAT32 },
        { "mono", AL_FORMAT_MONO_FLOAT32 },
        { NULL, 0 }
    };
    int i;
    (void)context;

    if(eol)
    {
        ppa_threaded_mainloop_signal(data->loop, 0);
        return;
    }

    for(i = 0;chanmaps[i].str;i++)
    {
        pa_channel_map map;
        if(!ppa_channel_map_parse(&map, chanmaps[i].str))
            continue;

        if(ppa_channel_map_equal(&info->channel_map, &map)
#if PA_CHECK_VERSION(0,9,15)
           || (ppa_channel_map_superset &&
               ppa_channel_map_superset(&info->channel_map, &map))
#endif
            )
        {
            device->Format = chanmaps[i].format;
            return;
        }
    }

    ppa_channel_map_snprint(chanmap_str, sizeof(chanmap_str), &info->channel_map);
    AL_PRINT("Failed to find format for channel map:\n    %s\n", chanmap_str);
}//}}}