Beispiel #1
0
void CPulseAEStream::StreamLatencyUpdateCallback(pa_stream *s, void *userdata)
{
  CPulseAEStream *stream = (CPulseAEStream *)userdata;
  pa_threaded_mainloop_signal(stream->m_MainLoop, 0);
}
Beispiel #2
0
void AudioOutputPulseAudio::WriteCallback(pa_stream *s, size_t size, void *arg)
{
    AudioOutputPulseAudio *audoutP = static_cast<AudioOutputPulseAudio*>(arg);
    pa_threaded_mainloop_signal(audoutP->mainloop, 0);
}
Beispiel #3
0
void CPulseAEStream::StreamRequestCallback(pa_stream *s, size_t length, void *userdata)
{
  CPulseAEStream *stream = (CPulseAEStream *)userdata;
  pa_threaded_mainloop_signal(stream->m_MainLoop, 0);
}
static void success_callback(pa_stream *stream,
                             int success,
                             pa_threaded_mainloop *mainloop)
{
    pa_threaded_mainloop_signal(mainloop, 0);
}
Beispiel #5
0
/**
 * Signals the main loop.
 */
void vlc_pa_signal (int do_wait)
{
    pa_threaded_mainloop_signal (vlc_pa_mainloop, do_wait);
}
Beispiel #6
0
static void StreamLatencyUpdateCallback(pa_stream *s, void *userdata)
{
  pa_threaded_mainloop *m = (pa_threaded_mainloop *)userdata;
  pa_threaded_mainloop_signal(m, 0);
}
Beispiel #7
0
static void stream_latency_update_cb(pa_stream *s, void *userdata)
{
    struct ao *ao = userdata;
    struct priv *priv = ao->priv;
    pa_threaded_mainloop_signal(priv->mainloop, 0);
}
Beispiel #8
0
static void tsmf_pulse_stream_success_callback(pa_stream *stream, int success, void *userdata)
{
	TSMFPulseAudioDevice *pulse = (TSMFPulseAudioDevice *) userdata;
	pa_threaded_mainloop_signal(pulse->mainloop, 0);
}
Beispiel #9
0
static void tsmf_pulse_stream_request_callback(pa_stream *stream, size_t length, void *userdata)
{
	TSMFPulseAudioDevice *pulse = (TSMFPulseAudioDevice *) userdata;
	DEBUG_TSMF("%d", (int) length);
	pa_threaded_mainloop_signal(pulse->mainloop, 0);
}
static void success_cb(pa_stream *s, int success, void *userdata) {
    if (userdata)
        *(int *)userdata = success;
    pa_threaded_mainloop_signal(mainloop, 0);
}
Beispiel #11
0
/**
 * Signal the main loop to abort. Just signalling isn't sufficient as the
 * mainloop might not have been entered yet.
 */
static void drvHostPulseAudioAbortMainLoop(void)
{
    g_fAbortMainLoop = true;
    pa_threaded_mainloop_signal(g_pMainLoop, 0);
}
static void stream_latency_update_cb(pa_stream *s, void *userdata) {
    pa_threaded_mainloop_signal(mainloop, 0);
}
static void stream_request_cb(pa_stream *s, size_t length, void *userdata) {
    pa_threaded_mainloop_signal(mainloop, 0);
}
static void stream_request_cb(pa_stream *s, size_t length, void *userdata) {
    pa_simple *p = userdata;
    pa_assert(p);

    pa_threaded_mainloop_signal(p->mainloop, 0);
}
Beispiel #15
0
void CPulseAEStream::StreamUnderflowCallback(pa_stream *s, void *userdata)
{
  CPulseAEStream *stream = (CPulseAEStream *)userdata;
  CLog::Log(LOGWARNING, "PulseAudio: Stream underflow");
  pa_threaded_mainloop_signal(stream->m_MainLoop, 0);
}
Beispiel #16
0
/**
 * @brief Callback function called when PA asks for more audio data.
 * @param s Stream on which data is requested
 * @param nbytes the number of bytes PA requested
 * @param this_gen pulse_driver_t pointer for the PulseAudio output
 *        instance.
 */
static void __xine_pa_stream_request_callback(pa_stream *s, size_t nbytes, void *this_gen)
{
  pulse_driver_t * this = (pulse_driver_t*) this_gen;

  pa_threaded_mainloop_signal(this->mainloop, 0);
}
Beispiel #17
0
static void StreamRequestCallback(pa_stream *s, size_t length, void *userdata)
{
  pa_threaded_mainloop *m = (pa_threaded_mainloop *)userdata;
  pa_threaded_mainloop_signal(m, 0);
}
Beispiel #18
0
/**
 * @brief Callback function called when PA notifies about something
 * @param s Stream on which the notification happened
 * @param this_gen pulse_driver_t pointer for the PulseAudio output
 *        instance.
 */
static void __xine_pa_stream_notify_callback(pa_stream *s, void *this_gen)
{
  pulse_driver_t * this = (pulse_driver_t*) this_gen;

  pa_threaded_mainloop_signal(this->mainloop, 0);
}
Beispiel #19
0
static void SinkInfoRequestCallback(pa_context *c, const pa_sink_info *i, int eol, void *userdata)
{

  SinkInfoStruct *sinkStruct = (SinkInfoStruct *)userdata;
  if (!sinkStruct)
    return;

  if(sinkStruct->list->empty())
  {
    //add a default device first
    CAEDeviceInfo defaultDevice;
    defaultDevice.m_deviceName = std::string("Default");
    defaultDevice.m_displayName = std::string("Default");
    defaultDevice.m_displayNameExtra = std::string("Default Output Device (PULSEAUDIO)");
    defaultDevice.m_dataFormats.insert(defaultDevice.m_dataFormats.end(), defaultDataFormats, defaultDataFormats + ARRAY_SIZE(defaultDataFormats));
    defaultDevice.m_channels = CAEChannelInfo(AE_CH_LAYOUT_2_0);
    defaultDevice.m_sampleRates.assign(defaultSampleRates, defaultSampleRates + ARRAY_SIZE(defaultSampleRates));
    defaultDevice.m_deviceType = AE_DEVTYPE_PCM;
    sinkStruct->list->push_back(defaultDevice);
  }
  if (i && i->name)
  {
    CAEDeviceInfo device;
    bool valid = true;
    device.m_deviceName = std::string(i->name);
    device.m_displayName = std::string(i->description);
    if (i->active_port && i->active_port->description)
      device.m_displayNameExtra = std::string((i->active_port->description)).append(" (PULSEAUDIO)");
    else
      device.m_displayNameExtra = std::string((i->description)).append(" (PULSEAUDIO)");
    unsigned int device_type = AE_DEVTYPE_PCM; //0

    device.m_channels = PAChannelToAEChannelMap(i->channel_map);

    // Don't add devices that would not have a channel map
    if(device.m_channels.Count() == 0)
      valid = false;

    device.m_sampleRates.assign(defaultSampleRates, defaultSampleRates + ARRAY_SIZE(defaultSampleRates));

    for (unsigned int j = 0; j < i->n_formats; j++)
    {
      switch(i->formats[j]->encoding)
      {
        case PA_ENCODING_AC3_IEC61937:
          device.m_dataFormats.push_back(AE_FMT_AC3);
          device_type = AE_DEVTYPE_IEC958;
          break;
        case PA_ENCODING_DTS_IEC61937:
          device.m_dataFormats.push_back(AE_FMT_DTS);
          device_type = AE_DEVTYPE_IEC958;
          break;
        case PA_ENCODING_EAC3_IEC61937:
          device.m_dataFormats.push_back(AE_FMT_EAC3);
          device_type = AE_DEVTYPE_IEC958;
          break;
        case PA_ENCODING_PCM:
          device.m_dataFormats.insert(device.m_dataFormats.end(), defaultDataFormats, defaultDataFormats + ARRAY_SIZE(defaultDataFormats));
          break;
        default:
          break;
      }
    }
    // passthrough is only working when device has Stereo channel config
    if (device_type > AE_DEVTYPE_PCM && device.m_channels.Count() == 2)
      device.m_deviceType = AE_DEVTYPE_IEC958;
    else
      device.m_deviceType = AE_DEVTYPE_PCM;
    if(valid)
    {
      CLog::Log(LOGDEBUG, "PulseAudio: Found %s with devicestring %s", device.m_displayName.c_str(), device.m_deviceName.c_str());
      sinkStruct->list->push_back(device);
    }
    else
    {
      CLog::Log(LOGDEBUG, "PulseAudio: Skipped %s with devicestring %s", device.m_displayName.c_str(), device.m_deviceName.c_str());
    }
  }
  pa_threaded_mainloop_signal(sinkStruct->mainloop, 0);
}
void pulse_signal(int wait_for_accept)
{
	pa_threaded_mainloop_signal(pulse_mainloop, wait_for_accept);
}
Beispiel #21
0
static void rdpsnd_pulse_stream_success_callback(pa_stream* stream, int success, void* userdata)
{
	rdpsndPulsePlugin* pulse = (rdpsndPulsePlugin*)userdata;

	pa_threaded_mainloop_signal(pulse->mainloop, 0);
}
static void write_stream_callback(pa_stream *stream,
                                  size_t nbytes,
                                  pa_threaded_mainloop *mainloop)
{
    pa_threaded_mainloop_signal(mainloop, 0);
}