本文整理汇总了C++中pa_context_new函数的典型用法代码示例。如果您正苦于以下问题:C++ pa_context_new函数的具体用法?C++ pa_context_new怎么用?C++ pa_context_new使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pa_context_new函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: moko_notify_init
static void
moko_notify_init (MokoNotify *notify)
{
MokoNotifyPrivate *priv;
pa_threaded_mainloop *mainloop = NULL;
pa_mainloop_api *mapi = NULL;
priv = notify->priv = MOKO_NOTIFY_GET_PRIVATE (notify);
priv->started = 0;
priv->pac = NULL;
/* Start up pulse audio */
mainloop = pa_threaded_mainloop_new ();
if (!mainloop)
{
g_warning ("Unable to create PulseAudio mainloop.");
return;
}
mapi = pa_threaded_mainloop_get_api (mainloop);
priv->pac = pa_context_new (mapi, "Openmoko Dialer");
if (!priv->pac)
{
g_warning ("Could create the PulseAudio context");
return;
}
pa_context_connect (priv->pac, NULL, 0, NULL);
pa_threaded_mainloop_start (mainloop);
}
示例2: xvd_connect_to_pulse
/**
* This function does the context initialization.
*/
static gboolean
xvd_connect_to_pulse (XvdInstance *i)
{
pa_context_flags_t flags = PA_CONTEXT_NOFAIL;
if (i->pulse_context)
{
pa_context_unref (i->pulse_context);
i->pulse_context = NULL;
}
i->pulse_context = pa_context_new (pa_glib_mainloop_get_api (i->pa_main_loop),
XVD_APPNAME);
g_assert(i->pulse_context);
pa_context_set_state_callback (i->pulse_context,
xvd_context_state_callback,
i);
if (pa_context_connect (i->pulse_context,
NULL,
flags,
NULL) < 0)
{
g_warning ("xvd_connect_to_pulse: failed to connect context: %s",
pa_strerror (pa_context_errno (i->pulse_context)));
return FALSE;
}
return TRUE;
}
示例3: tsmf_pulse_open
static int
tsmf_pulse_open(ITSMFAudioDevice * audio, const char * device)
{
TSMFPulseAudioDevice * pulse = (TSMFPulseAudioDevice *) audio;
if (device)
{
strcpy(pulse->device, device);
}
pulse->mainloop = pa_threaded_mainloop_new();
if (!pulse->mainloop)
{
LLOGLN(0, ("tsmf_pulse_open: pa_threaded_mainloop_new failed"));
return 1;
}
pulse->context = pa_context_new(pa_threaded_mainloop_get_api(pulse->mainloop), "freerdp");
if (!pulse->context)
{
LLOGLN(0, ("tsmf_pulse_open: pa_context_new failed"));
return 1;
}
pa_context_set_state_callback(pulse->context, tsmf_pulse_context_state_callback, pulse);
if (tsmf_pulse_connect(pulse))
{
LLOGLN(0, ("tsmf_pulse_open: tsmf_pulse_connect failed"));
return 1;
}
LLOGLN(0, ("tsmf_pulse_open: open device %s", pulse->device));
return 0;
}
示例4: pulse_output_setup_context
/**
* Create, set up and connect a context.
*
* Caller must lock the main loop.
*
* @return true on success, false on error
*/
static bool
pulse_output_setup_context(struct pulse_output *po, GError **error_r)
{
assert(po != NULL);
assert(po->mainloop != NULL);
po->context = pa_context_new(pa_threaded_mainloop_get_api(po->mainloop),
MPD_PULSE_NAME);
if (po->context == NULL) {
g_set_error(error_r, pulse_output_quark(), 0,
"pa_context_new() has failed");
return false;
}
pa_context_set_state_callback(po->context,
pulse_output_context_state_cb, po);
pa_context_set_subscribe_callback(po->context,
pulse_output_subscribe_cb, po);
if (!pulse_output_connect(po, error_r)) {
pulse_output_delete_context(po);
return false;
}
return true;
}
示例5: pa_context_disconnect
bool PulseDeviceFinder::Reconnect() {
if (context_) {
pa_context_disconnect(context_);
pa_context_unref(context_);
}
context_ = pa_context_new(pa_mainloop_get_api(mainloop_),
"Clementine device finder");
if (!context_) {
qLog(Warning) << "Failed to create pulseaudio context";
return false;
}
if (pa_context_connect(context_, nullptr, PA_CONTEXT_NOFLAGS, nullptr) < 0) {
qLog(Warning) << "Failed to connect pulseaudio context";
return false;
}
// Wait for the context to be connected.
forever {
const pa_context_state state = pa_context_get_state(context_);
if (state == PA_CONTEXT_FAILED || state == PA_CONTEXT_TERMINATED) {
qLog(Warning) << "Connection to pulseaudio failed";
return false;
}
if (state == PA_CONTEXT_READY) {
return true;
}
pa_mainloop_iterate(mainloop_, true, nullptr);
}
}
示例6: tsmf_pulse_open
static BOOL tsmf_pulse_open(ITSMFAudioDevice *audio, const char *device)
{
TSMFPulseAudioDevice *pulse = (TSMFPulseAudioDevice *) audio;
if(device)
{
strcpy(pulse->device, device);
}
pulse->mainloop = pa_threaded_mainloop_new();
if(!pulse->mainloop)
{
DEBUG_WARN("pa_threaded_mainloop_new failed");
return FALSE;
}
pulse->context = pa_context_new(pa_threaded_mainloop_get_api(pulse->mainloop), "freerdp");
if(!pulse->context)
{
DEBUG_WARN("pa_context_new failed");
return FALSE;
}
pa_context_set_state_callback(pulse->context, tsmf_pulse_context_state_callback, pulse);
if(tsmf_pulse_connect(pulse))
{
DEBUG_WARN("tsmf_pulse_connect failed");
return FALSE;
}
DEBUG_TSMF("open device %s", pulse->device);
return TRUE;
}
示例7: pa_mainloop_new
void vis::PulseAudioSource::populate_default_source_name()
{
#ifdef _ENABLE_PULSE
pa_mainloop_api *mainloop_api;
pa_context *pulseaudio_context;
// Create a mainloop API and connection to the default server
m_pulseaudio_mainloop = pa_mainloop_new();
mainloop_api = pa_mainloop_get_api(m_pulseaudio_mainloop);
pulseaudio_context = pa_context_new(mainloop_api, "vis device list");
// This function connects to the pulse server
pa_context_connect(pulseaudio_context, nullptr, PA_CONTEXT_NOFLAGS,
nullptr);
// This function defines a callback so the server will tell us its state.
pa_context_set_state_callback(pulseaudio_context,
pulseaudio_context_state_callback,
reinterpret_cast<void *>(this));
int ret;
if (pa_mainloop_run(m_pulseaudio_mainloop, &ret) < 0)
{
VIS_LOG(vis::LogLevel::ERROR, "Could not open pulseaudio mainloop to "
"find default device name: %d",
ret);
}
#endif
}
示例8: guac_pa_start_stream
void guac_pa_start_stream(guac_client* client) {
vnc_guac_client_data* client_data = (vnc_guac_client_data*) client->data;
pa_context* context;
guac_client_log_info(client, "Starting audio stream");
guac_audio_stream_begin(client_data->audio,
GUAC_VNC_AUDIO_RATE,
GUAC_VNC_AUDIO_CHANNELS,
GUAC_VNC_AUDIO_BPS);
/* Init main loop */
client_data->pa_mainloop = pa_threaded_mainloop_new();
/* Create context */
context = pa_context_new(
pa_threaded_mainloop_get_api(client_data->pa_mainloop),
"Guacamole Audio");
/* Set up context */
pa_context_set_state_callback(context, __context_state_callback, client);
pa_context_connect(context, client_data->pa_servername,
PA_CONTEXT_NOAUTOSPAWN, NULL);
/* Start loop */
pa_threaded_mainloop_start(client_data->pa_mainloop);
}
示例9: pa_mainloop_new
int PulseAudioDriver::thread_body()
{
m_main_loop = pa_mainloop_new();
pa_mainloop_api* api = pa_mainloop_get_api(m_main_loop);
pa_io_event* ioev = api->io_new(api, m_pipe[0], PA_IO_EVENT_INPUT,
pipe_callback, this);
m_ctx = pa_context_new(api, "Hydrogen");
pa_context_set_state_callback(m_ctx, ctx_state_callback, this);
pa_context_connect(m_ctx, 0, pa_context_flags_t(0), 0);
int retval;
pa_mainloop_run(m_main_loop, &retval);
if (m_stream)
{
pa_stream_set_state_callback(m_stream, 0, 0);
pa_stream_set_write_callback(m_stream, 0, 0);
pa_stream_unref(m_stream);
m_stream = 0;
}
api->io_free(ioev);
pa_context_unref(m_ctx);
pa_mainloop_free(m_main_loop);
return retval;
}
示例10: main
int main(int argc, char *argv[]) {
// Define our pulse audio loop and connection variables
pa_mainloop *pa_ml;
pa_mainloop_api *pa_mlapi;
pa_operation *pa_op;
pa_time_event *time_event;
// Create a mainloop API and connection to the default server
pa_ml = pa_mainloop_new();
pa_mlapi = pa_mainloop_get_api(pa_ml);
context = pa_context_new(pa_mlapi, "Device list");
// This function connects to the pulse server
pa_context_connect(context, NULL, 0, NULL);
// This function defines a callback so the server will tell us its state.
pa_context_set_state_callback(context, context_state_cb, NULL);
if (pa_mainloop_run(pa_ml, &ret) < 0) {
printf("pa_mainloop_run() failed.");
exit(1);
}
}
示例11: Q_ASSERT
void Context::connectToDaemon()
{
Q_ASSERT(m_context == nullptr);
// We require a glib event loop
if (!QByteArray(QAbstractEventDispatcher::instance()->metaObject()->className()).contains("EventDispatcherGlib")) {
qCWarning(PLASMAPA) << "Disabling PulseAudio integration for lack of GLib event loop";
return;
}
qCDebug(PLASMAPA) << "Attempting connection to PulseAudio sound daemon";
if (!m_mainloop) {
m_mainloop = pa_glib_mainloop_new(nullptr);
Q_ASSERT(m_mainloop);
}
pa_mainloop_api *api = pa_glib_mainloop_get_api(m_mainloop);
Q_ASSERT(api);
m_context = pa_context_new(api, "QPulse");
Q_ASSERT(m_context);
if (pa_context_connect(m_context, NULL, PA_CONTEXT_NOFAIL, nullptr) < 0) {
pa_context_unref(m_context);
pa_glib_mainloop_free(m_mainloop);
m_context = nullptr;
m_mainloop = nullptr;
return;
}
pa_context_set_state_callback(m_context, &context_state_callback, this);
}
示例12: GLOBAL_DEF_RST
Error AudioDriverPulseAudio::init() {
active = false;
thread_exited = false;
exit_thread = false;
mix_rate = GLOBAL_DEF_RST("audio/mix_rate", DEFAULT_MIX_RATE);
pa_ml = pa_mainloop_new();
ERR_FAIL_COND_V(pa_ml == NULL, ERR_CANT_OPEN);
pa_ctx = pa_context_new(pa_mainloop_get_api(pa_ml), "Godot");
ERR_FAIL_COND_V(pa_ctx == NULL, ERR_CANT_OPEN);
pa_ready = 0;
pa_context_set_state_callback(pa_ctx, pa_state_cb, (void *)this);
int ret = pa_context_connect(pa_ctx, NULL, PA_CONTEXT_NOFLAGS, NULL);
if (ret < 0) {
if (pa_ctx) {
pa_context_unref(pa_ctx);
pa_ctx = NULL;
}
if (pa_ml) {
pa_mainloop_free(pa_ml);
pa_ml = NULL;
}
return ERR_CANT_OPEN;
}
while (pa_ready == 0) {
pa_mainloop_iterate(pa_ml, 1, NULL);
}
if (pa_ready < 0) {
if (pa_ctx) {
pa_context_disconnect(pa_ctx);
pa_context_unref(pa_ctx);
pa_ctx = NULL;
}
if (pa_ml) {
pa_mainloop_free(pa_ml);
pa_ml = NULL;
}
return ERR_CANT_OPEN;
}
Error err = init_device();
if (err == OK) {
mutex = Mutex::create();
thread = Thread::create(AudioDriverPulseAudio::thread_func, this);
}
return OK;
}
示例13: xmms_pulse_backend_new
/*
* Public API.
*/
xmms_pulse *
xmms_pulse_backend_new (const char *server, const char *name,
int *rerror)
{
xmms_pulse *p;
int error = PA_ERR_INTERNAL;
if (server && !*server) {
if (rerror)
*rerror = PA_ERR_INVALID;
return NULL;
}
p = g_new0 (xmms_pulse, 1);
if (!p)
return NULL;
p->volume = 100;
p->mainloop = pa_threaded_mainloop_new ();
if (!p->mainloop)
goto fail;
p->context = pa_context_new (pa_threaded_mainloop_get_api (p->mainloop), name);
if (!p->context)
goto fail;
pa_context_set_state_callback (p->context, context_state_cb, p);
if (pa_context_connect (p->context, server, 0, NULL) < 0) {
error = pa_context_errno (p->context);
goto fail;
}
pa_threaded_mainloop_lock (p->mainloop);
if (pa_threaded_mainloop_start (p->mainloop) < 0)
goto unlock_and_fail;
/* Wait until the context is ready */
pa_threaded_mainloop_wait (p->mainloop);
if (pa_context_get_state (p->context) != PA_CONTEXT_READY) {
error = pa_context_errno (p->context);
goto unlock_and_fail;
}
pa_threaded_mainloop_unlock (p->mainloop);
return p;
unlock_and_fail:
pa_threaded_mainloop_unlock (p->mainloop);
fail:
if (rerror)
*rerror = error;
xmms_pulse_backend_free (p);
return NULL;
}
示例14: Java_com_harrcharr_pulse_PulseContext_JNICreate
JNIEXPORT jlong JNICALL
Java_com_harrcharr_pulse_PulseContext_JNICreate(
JNIEnv *jenv, jclass jcls, pa_threaded_mainloop *m) {
dlog(0, "%d", m);
pa_mainloop_api *api = pa_threaded_mainloop_get_api(m);
pa_context *c = pa_context_new(api, "primary");
return c;
}
示例15: init_pulse_context
static void init_pulse_context(){
if (context==NULL){
pa_loop=pa_threaded_mainloop_new();
context=pa_context_new(pa_threaded_mainloop_get_api(pa_loop),NULL);
pa_context_set_state_callback(context,state_notify,NULL);
pa_context_connect(context,NULL,0,NULL);
pa_threaded_mainloop_start(pa_loop);
atexit(uninit_pulse_context);
}
}