本文整理汇总了C++中PJ_PERROR函数的典型用法代码示例。如果您正苦于以下问题:C++ PJ_PERROR函数的具体用法?C++ PJ_PERROR怎么用?C++ PJ_PERROR使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PJ_PERROR函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PJ_DEF
PJ_DEF(pj_status_t) pjmedia_converter_mgr_create(pj_pool_t *pool,
pjmedia_converter_mgr **p_mgr)
{
pjmedia_converter_mgr *mgr;
pj_status_t status = PJ_SUCCESS;
mgr = PJ_POOL_ALLOC_T(pool, pjmedia_converter_mgr);
pj_list_init(&mgr->factory_list);
if (!converter_manager_instance)
converter_manager_instance = mgr;
#if defined(PJMEDIA_HAS_LIBYUV) && PJMEDIA_HAS_LIBYUV != 0
status = pjmedia_libyuv_converter_init(mgr);
if (status != PJ_SUCCESS) {
PJ_PERROR(4,(THIS_FILE, status,
"Error initializing libyuv converter"));
}
#endif
#if PJMEDIA_HAS_LIBSWSCALE && PJMEDIA_HAS_LIBAVUTIL
status = pjmedia_libswscale_converter_init(mgr);
if (status != PJ_SUCCESS) {
PJ_PERROR(4,(THIS_FILE, status,
"Error initializing libswscale converter"));
}
#endif
if (p_mgr)
*p_mgr = mgr;
return status;
}
示例2: bb10_stream_set_cap
/*
* API: set capability
* Currently just supporting toggle between speaker and earpiece
*/
static pj_status_t bb10_stream_set_cap(pjmedia_aud_stream *strm,
pjmedia_aud_dev_cap cap,
const void *value)
{
struct bb10_stream *stream = (struct bb10_stream*)strm;
if (cap==PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE &&
(stream->param.dir & PJMEDIA_DIR_PLAYBACK))
{
pjmedia_aud_dev_route route;
pj_bool_t need_restart;
pj_status_t ret;
PJ_ASSERT_RETURN(value, PJ_EINVAL);
/* OS 10.2.1 requires pausing audio stream */
need_restart = (stream->pb_thread != NULL);
if (need_restart) {
PJ_LOG(4,(THIS_FILE, "pausing audio stream.."));
ret = bb10_stream_stop(strm);
if (ret != PJ_SUCCESS) {
PJ_PERROR(1,(THIS_FILE, ret, "Error pausing stream"));
return ret;
}
}
route = *((pjmedia_aud_dev_route*)value);
PJ_LOG(4,(THIS_FILE, "setting audio route to %d..", route));
/* Use the initialization function which lazy-inits the
* handle for routing
*/
if (route == PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER) {
ret = bb10_initialize_playback_ctrl(stream,true);
} else {
ret = bb10_initialize_playback_ctrl(stream,false);
}
if (need_restart) {
PJ_LOG(4,(THIS_FILE, "resuming audio stream.."));
ret = bb10_stream_start(strm);
if (ret != PJ_SUCCESS) {
PJ_PERROR(1,(THIS_FILE, ret, "Error resuming stream"));
}
}
return ret;
} else if (cap==PJMEDIA_AUD_DEV_CAP_EC &&
(stream->param.dir & PJMEDIA_DIR_CAPTURE))
{
/* EC is always enabled. Silently ignore the request */
return PJ_SUCCESS;
}
TRACE_((THIS_FILE,"bb10_stream_set_cap() = PJMEDIA_EAUD_INVCAP"));
return PJMEDIA_EAUD_INVCAP;
}
示例3: stun_destroy_test_session
static int stun_destroy_test_session(struct stun_test_session *test_sess)
{
unsigned i;
pj_stun_sock_cb stun_cb;
pj_status_t status;
pj_stun_sock *stun_sock[MAX_SOCK_CLIENTS];
pj_bzero(&stun_cb, sizeof(stun_cb));
stun_cb.on_status = &stun_sock_on_status;
pj_event_reset(test_sess->server_event);
/* Create all clients first */
for (i=0; i<MAX_SOCK_CLIENTS; ++i) {
char name[10];
sprintf(name, "stun%02d", i);
status = pj_stun_sock_create(&test_sess->stun_cfg, name, pj_AF_INET(),
&stun_cb, NULL, test_sess,
&stun_sock[i]);
if (status != PJ_SUCCESS) {
PJ_PERROR(1,(THIS_FILE, status, "Error creating stun socket"));
return -10;
}
}
/* Start resolution */
for (i=0; i<MAX_SOCK_CLIENTS; ++i) {
pj_str_t server_ip = pj_str("127.0.0.1");
status = pj_stun_sock_start(stun_sock[i], &server_ip,
(pj_uint16_t)test_sess->server_port, NULL);
if (status != PJ_SUCCESS) {
PJ_PERROR(1,(THIS_FILE, status, "Error starting stun socket"));
return -20;
}
}
/* settle down */
pj_thread_sleep(test_sess->param.client_sleep_after_start);
/* Resume server threads */
pj_event_set(test_sess->server_event);
pj_thread_sleep(test_sess->param.client_sleep_before_destroy);
/* Destroy clients */
for (i=0; i<MAX_SOCK_CLIENTS; ++i) {
status = pj_stun_sock_destroy(stun_sock[i]);
if (status != PJ_SUCCESS) {
PJ_PERROR(1,(THIS_FILE, status, "Error destroying stun socket"));
}
}
/* Give some time to ioqueue to free sockets */
pj_thread_sleep(PJ_IOQUEUE_KEY_FREE_DELAY);
return 0;
}
示例4: main
/*
* main()
*/
int main(int argc, char *argv[])
{
pj_caching_pool cp;
pj_status_t status;
if (argc < 2 || argc > 3) {
puts("Usage: httpdemo URL [output-filename]");
return 1;
}
pj_log_set_level(5);
pj_init();
pj_caching_pool_init(&cp, NULL, 0);
mem = &cp.factory;
pjlib_util_init();
if (argc > 2)
f = fopen(argv[2], "wb");
else
f = stdout;
status = getURL(argv[1]);
if (status != PJ_SUCCESS) {
PJ_PERROR(1, (THIS_FILE, status, "Error"));
}
if (f != stdout)
fclose(f);
pj_caching_pool_destroy(&cp);
pj_shutdown();
return 0;
}
示例5: udp_on_write_complete
/*
* udp_on_write_complete()
*
* This is callback notification from ioqueue that a pending sendto()
* operation has completed.
*/
static void udp_on_write_complete( pj_ioqueue_key_t *key,
pj_ioqueue_op_key_t *op_key,
pj_ssize_t bytes_sent)
{
struct udp_transport *tp = (struct udp_transport*)
pj_ioqueue_get_user_data(key);
pjsip_tx_data_op_key *tdata_op_key = (pjsip_tx_data_op_key*)op_key;
tdata_op_key->tdata = NULL;
#if defined(PJ_IPHONE_OS_HAS_MULTITASKING_SUPPORT) && \
PJ_IPHONE_OS_HAS_MULTITASKING_SUPPORT!=0
if (-bytes_sent == PJ_ESOCKETSTOP) {
pj_status_t status;
/* Try to recover by restarting the transport. */
PJ_LOG(4,(tp->base.obj_name, "Restarting SIP UDP transport"));
status = pjsip_udp_transport_restart2(
&tp->base,
PJSIP_UDP_TRANSPORT_DESTROY_SOCKET,
PJ_INVALID_SOCKET,
&tp->base.local_addr,
&tp->base.local_name);
if (status != PJ_SUCCESS) {
PJ_PERROR(1,(THIS_FILE, status,
"Error restarting SIP UDP transport"));
}
return;
}
#endif
if (tdata_op_key->callback) {
tdata_op_key->callback(&tp->base, tdata_op_key->token, bytes_sent);
}
}
示例6: create_converter
static pj_status_t create_converter(pjmedia_vid_port *vp)
{
if (vp->conv.conv) {
pjmedia_converter_destroy(vp->conv.conv);
vp->conv.conv = NULL;
}
/* Instantiate converter if necessary */
if (vp->conv.conv_param.src.id != vp->conv.conv_param.dst.id ||
(vp->conv.conv_param.src.det.vid.size.w !=
vp->conv.conv_param.dst.det.vid.size.w) ||
(vp->conv.conv_param.src.det.vid.size.h !=
vp->conv.conv_param.dst.det.vid.size.h))
{
pj_status_t status;
/* Yes, we need converter */
status = pjmedia_converter_create(NULL, vp->pool, &vp->conv.conv_param,
&vp->conv.conv);
if (status != PJ_SUCCESS) {
PJ_PERROR(4,(THIS_FILE, status, "Error creating converter"));
return status;
}
}
if (vp->conv.conv ||
(vp->role==ROLE_ACTIVE && (vp->dir & PJMEDIA_DIR_ENCODING)))
{
pj_status_t status;
const pjmedia_video_format_info *vfi;
pjmedia_video_apply_fmt_param vafp;
/* Allocate buffer for conversion */
vfi = pjmedia_get_video_format_info(NULL, vp->conv.conv_param.dst.id);
if (!vfi)
return PJMEDIA_EBADFMT;
pj_bzero(&vafp, sizeof(vafp));
vafp.size = vp->conv.conv_param.dst.det.vid.size;
status = vfi->apply_fmt(vfi, &vafp);
if (status != PJ_SUCCESS)
return PJMEDIA_EBADFMT;
if (vafp.framebytes > vp->conv.conv_buf_size) {
vp->conv.conv_buf = pj_pool_alloc(vp->pool, vafp.framebytes);
vp->conv.conv_buf_size = vafp.framebytes;
}
}
vp->conv.usec_ctr = 0;
vp->conv.usec_src = PJMEDIA_PTIME(&vp->conv.conv_param.src.det.vid.fps);
vp->conv.usec_dst = PJMEDIA_PTIME(&vp->conv.conv_param.dst.det.vid.fps);
return PJ_SUCCESS;
}
示例7: sess_fail
/* Notify application that session has failed */
static pj_bool_t sess_fail(pj_stun_sock *stun_sock,
pj_stun_sock_op op,
pj_status_t status)
{
pj_bool_t ret;
PJ_PERROR(4,(stun_sock->obj_name, status,
"Session failed because %s failed",
pj_stun_sock_op_name(op)));
ret = (*stun_sock->cb.on_status)(stun_sock, op, status);
return ret;
}
示例8: on_complete
static void on_complete(pj_http_req *hreq, pj_status_t status,
const pj_http_resp *resp)
{
PJ_UNUSED_ARG(hreq);
if (status != PJ_SUCCESS) {
PJ_PERROR(1, (THIS_FILE, status, "HTTP request completed with error"));
return;
}
PJ_LOG(3, (THIS_FILE, "Data completed: %d bytes", resp->size));
if (resp->size > 0 && resp->data) {
#ifdef VERBOSE
printf("%.*s\n", (int)resp->size, (char *)resp->data);
#endif
}
}
示例9: create_converter
static pj_status_t create_converter(pjmedia_vid_port *vp)
{
/* Instantiate converter if necessary */
if (vp->conv_param.src.id != vp->conv_param.dst.id ||
vp->conv_param.src.det.vid.size.w != vp->conv_param.dst.det.vid.size.w ||
vp->conv_param.src.det.vid.size.h != vp->conv_param.dst.det.vid.size.h)
{
pj_status_t status;
/* Yes, we need converter */
const pjmedia_video_format_info *vfi;
pjmedia_video_apply_fmt_param vafp;
if (vp->conv) {
pjmedia_converter_destroy(vp->conv);
vp->conv = NULL;
}
status = pjmedia_converter_create(NULL, vp->pool, &vp->conv_param,
&vp->conv);
if (status != PJ_SUCCESS) {
PJ_PERROR(4,(THIS_FILE, status, "Error creating converter"));
return status;
}
/* Allocate buffer for conversion */
vfi = pjmedia_get_video_format_info(NULL, vp->conv_param.dst.id);
if (!vfi)
return PJMEDIA_EBADFMT;
pj_bzero(&vafp, sizeof(vafp));
vafp.size = vp->conv_param.dst.det.vid.size;
status = vfi->apply_fmt(vfi, &vafp);
if (status != PJ_SUCCESS)
return PJMEDIA_EBADFMT;
if (vafp.framebytes > vp->conv_buf_size) {
vp->conv_buf = pj_pool_alloc(vp->pool, vafp.framebytes);
vp->conv_buf_size = vafp.framebytes;
}
}
return PJ_SUCCESS;
}
示例10: PJ_DEF
/* API: Refresh the list of video devices installed in the system. */
PJ_DEF(pj_status_t) pjmedia_vid_dev_refresh(void)
{
unsigned i;
vid_subsys.dev_cnt = 0;
for (i=0; i<vid_subsys.drv_cnt; ++i) {
pjmedia_vid_driver *drv = &vid_subsys.drv[i];
if (drv->f && drv->f->op->refresh) {
pj_status_t status = drv->f->op->refresh(drv->f);
if (status != PJ_SUCCESS) {
PJ_PERROR(4, (THIS_FILE, status, "Unable to refresh device "
"list for %s", drv->name));
}
}
pjmedia_vid_driver_init(i, PJ_TRUE);
}
return PJ_SUCCESS;
}
示例11: openh264_codec_decode
static pj_status_t openh264_codec_decode( pjmedia_vid_codec *codec,
pj_size_t pkt_count,
pjmedia_frame packets[],
unsigned out_size,
pjmedia_frame *output)
{
openh264_private *ff = (openh264_private*)codec->codec_data;
pj_status_t status;
PJ_ASSERT_RETURN(codec && pkt_count > 0 && packets && output,
PJ_EINVAL);
if (ff->whole) {
pj_assert(pkt_count==1);
return openh264_codec_decode_whole(codec, &packets[0], out_size, output);
} else {
pjmedia_frame whole_frm;
unsigned whole_len = 0;
unsigned i;
for (i=0; i<pkt_count; ++i) {
if (whole_len + packets[i].size > ff->dec_buf_size) {
PJ_LOG(5,(THIS_FILE, "Decoding buffer overflow"));
break;
}
status = openh264_unpacketize(codec, packets[i].buf, packets[i].size,
ff->dec_buf, ff->dec_buf_size,
&whole_len);
if (status != PJ_SUCCESS) {
PJ_PERROR(5,(THIS_FILE, status, "Unpacketize error"));
continue;
}
}
whole_frm.buf = ff->dec_buf;
whole_frm.size = whole_len;
whole_frm.timestamp = output->timestamp = packets[i].timestamp;
whole_frm.bit_info = 0;
return openh264_codec_decode_whole(codec, &whole_frm, out_size, output);
}
}
示例12: app_main
/*
* Simple implementation of app_main() for console targets
*/
pj_status_t app_main(pj_cli_t *cli) {
print_msg(("", "APP STARTED \n \n \n"));
print_msg(("", "======================================================================\n"));
pj_status_t status;
pj_cli_sess *sess;
pj_cli_console_cfg console_cfg;
pj_cli_console_cfg_default(&console_cfg);
console_cfg.prompt_str = pj_str("CMD> ");
/*
* Create the console front end
*/
status = pj_cli_console_create(cli, &console_cfg, &sess, NULL);
if (status != PJ_SUCCESS)
return status;
pj_log_set_log_func(&log_writer);
/*
* Main loop.
*/
for (;;) {
char cmdline[PJ_CLI_MAX_CMDBUF];
pj_status_t status;
status = pj_cli_console_process(sess, &cmdline[0], sizeof(cmdline));
if (status != PJ_SUCCESS)
break;
// pj_ansi_strcpy(cmdline, "sayhello {Teluu Inc.}");
if (status == PJ_CLI_EEXIT) {
/* exit is called */
break;
} else if (status != PJ_SUCCESS) {
/* Something wrong with the cmdline */
PJ_PERROR(1, (THIS_FILE, status, "Exec error"));
}
}
return PJ_SUCCESS;
}
示例13: PJ_DEF
PJ_DEF(pj_ioqueue_key_t*) pj_ioqueue_register( pj_pool_t *pool,
pj_ioqueue_t *ioque,
pj_oshandle_t sock,
void *user_data,
const pj_ioqueue_callback *cb)
{
pj_ioqueue_key_t *key = NULL;
pj_uint32_t value;
pj_mutex_lock(ioque->mutex);
if (ioque->count >= ioque->max)
goto on_return;
/* Set socket to nonblocking. */
value = 1;
if (pj_sock_ioctl((pj_sock_t)sock, PJ_FIONBIO, &value)) {
PJ_PERROR(("ioqueue", "Error setting FIONBIO"));
goto on_return;
}
/* Create key. */
key = (pj_ioqueue_key_t*)pj_pool_calloc(pool, 1, sizeof(pj_ioqueue_key_t));
key->fd = (pj_sock_t)sock;
key->user_data = user_data;
/* Save callback. */
pj_memcpy(&key->cb, cb, sizeof(pj_ioqueue_callback));
/* Register */
pj_list_insert_before(&ioque->hlist, key);
++ioque->count;
on_return:
pj_mutex_unlock(ioque->mutex);
return key;
}
示例14: PJ_DEF
/*
* Set socket option.
*/
PJ_DEF(pj_status_t) pj_sock_setsockopt_params( pj_sock_t sockfd,
const pj_sockopt_params *params)
{
unsigned int i = 0;
pj_status_t retval = PJ_SUCCESS;
PJ_CHECK_STACK();
PJ_ASSERT_RETURN(params, PJ_EINVAL);
for (;i<params->cnt && i<PJ_MAX_SOCKOPT_PARAMS;++i) {
pj_status_t status = pj_sock_setsockopt(sockfd,
(pj_uint16_t)params->options[i].level,
(pj_uint16_t)params->options[i].optname,
params->options[i].optval,
params->options[i].optlen);
if (status != PJ_SUCCESS) {
retval = status;
PJ_PERROR(4,(THIS_FILE, status,
"Warning: error applying sock opt %d",
params->options[i].optname));
}
}
return retval;
}
示例15: server_thread_proc
static int server_thread_proc(void *p)
{
struct stun_test_session *test_sess = (struct stun_test_session*)p;
pj_pool_t *pool;
pj_status_t status;
PJ_LOG(4,(THIS_FILE, "Server thread running"));
pool = pj_pool_create(test_sess->stun_cfg.pf, "server", 512, 512, NULL);
while (!test_sess->thread_quit_flag) {
pj_time_val timeout = {0, 10};
pj_fd_set_t rdset;
int n;
/* Serve client */
PJ_FD_ZERO(&rdset);
PJ_FD_SET(test_sess->server_sock, &rdset);
n = pj_sock_select(test_sess->server_sock+1, &rdset,
NULL, NULL, &timeout);
if (n==1 && PJ_FD_ISSET(test_sess->server_sock, &rdset)) {
pj_uint8_t pkt[512];
pj_ssize_t pkt_len;
pj_size_t res_len;
pj_sockaddr client_addr;
int addr_len;
pj_stun_msg *stun_req, *stun_res;
pj_pool_reset(pool);
/* Got query */
pkt_len = sizeof(pkt);
addr_len = sizeof(client_addr);
status = pj_sock_recvfrom(test_sess->server_sock, pkt, &pkt_len,
0, &client_addr, &addr_len);
if (status != PJ_SUCCESS) {
continue;
}
status = pj_stun_msg_decode(pool, pkt, pkt_len,
PJ_STUN_IS_DATAGRAM,
&stun_req, NULL, NULL);
if (status != PJ_SUCCESS) {
PJ_PERROR(1,(THIS_FILE, status, "STUN request decode error"));
continue;
}
status = pj_stun_msg_create_response(pool, stun_req,
PJ_STUN_SC_BAD_REQUEST, NULL,
&stun_res);
if (status != PJ_SUCCESS) {
PJ_PERROR(1,(THIS_FILE, status, "STUN create response error"));
continue;
}
status = pj_stun_msg_encode(stun_res, pkt, sizeof(pkt), 0,
NULL, &res_len);
if (status != PJ_SUCCESS) {
PJ_PERROR(1,(THIS_FILE, status, "STUN encode error"));
continue;
}
/* Ignore request */
if (test_sess->param.server_drop_request)
continue;
/* Wait for signal to continue */
if (test_sess->param.server_wait_for_event)
pj_event_wait(test_sess->server_event);
pkt_len = res_len;
pj_sock_sendto(test_sess->server_sock, pkt, &pkt_len, 0,
&client_addr, pj_sockaddr_get_len(&client_addr));
}
}
pj_pool_release(pool);
PJ_LOG(4,(THIS_FILE, "Server thread quitting"));
return 0;
}