本文整理汇总了C++中pj_pool_zalloc函数的典型用法代码示例。如果您正苦于以下问题:C++ pj_pool_zalloc函数的具体用法?C++ pj_pool_zalloc怎么用?C++ pj_pool_zalloc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pj_pool_zalloc函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: g729_open
static pj_status_t g729_open(pjmedia_codec *codec,
pjmedia_codec_param *attr )
{
struct g729_private *priv = (struct g729_private*) codec->codec_data;
pj_pool_t *pool;
priv->pt = attr->info.pt;
pool = priv->pool;
/* PREPARING THE ENCODER */
priv->encoder = pj_pool_zalloc(pool, g729a_enc_mem_size());
if (!priv->encoder)
return PJMEDIA_CODEC_EFAILED;
if (!g729a_enc_init(priv->encoder))
return PJMEDIA_CODEC_EFAILED;
/* PREPARING THE DECODER */
priv->decoder = pj_pool_zalloc(pool, g729a_dec_mem_size());
if (!priv->decoder)
return PJMEDIA_CODEC_EFAILED;
if (!g729a_dec_init(priv->decoder))
return PJMEDIA_CODEC_EFAILED;
#if !PLC_DISABLED
priv->plc_enabled = (attr->setting.plc != 0);
#endif
priv->vad_enabled = (attr->setting.vad != 0);
return PJ_SUCCESS;
}
开发者ID:intiaz,项目名称:PTT_3G_G729,代码行数:29,代码来源:g729.c
示例2: PJ_DEF
/*
* Create the ZRTP transport.
*/
PJ_DEF(pj_status_t) pjmedia_transport_zrtp_create(pjmedia_endpt *endpt,
const char *name,
pjmedia_transport *transport,
pjmedia_transport **p_tp,
pj_bool_t close_slave)
{
pj_pool_t *pool;
struct tp_zrtp *zrtp;
pj_status_t rc;
if (name == NULL)
name = "tzrtp%p";
/* Create the pool and initialize the adapter structure */
pool = pjmedia_endpt_create_pool(endpt, name, 5*1024, 512);
zrtp = PJ_POOL_ZALLOC_T(pool, struct tp_zrtp);
zrtp->pool = pool;
pj_ansi_strncpy(zrtp->base.name, pool->obj_name,
sizeof(zrtp->base.name));
zrtp->base.type = (pjmedia_transport_type)
(PJMEDIA_TRANSPORT_TYPE_USER + 2);
zrtp->base.op = &tp_zrtp_op;
#ifndef DYNAMIC_TIMER
if (timer_pool == NULL)
{
timer_pool = pjmedia_endpt_create_pool(endpt, "zrtp_timer", 256, 256);
rc = timer_initialize();
if (rc != PJ_SUCCESS)
{
pj_pool_release(timer_pool);
pj_pool_release(zrtp->pool);
return rc;
}
}
#else
zrtp->timer_heap = pjsip_endpt_get_timer_heap(pjsua_var.endpt);
#endif
/* Create the empty wrapper */
zrtp->zrtpCtx = zrtp_CreateWrapper();
/* Initialize standard values */
zrtp->clientIdString = clientId; /* Set standard name */
zrtp->zrtpSeq = 1; /* TODO: randomize */
rc = pj_mutex_create_simple(zrtp->pool, "zrtp", &zrtp->zrtpMutex);
zrtp->zrtpBuffer = pj_pool_zalloc(pool, MAX_ZRTP_SIZE);
zrtp->sendBuffer = pj_pool_zalloc(pool, MAX_RTP_BUFFER_LEN);
zrtp->sendBufferCtrl = pj_pool_zalloc(pool, MAX_RTCP_BUFFER_LEN);
zrtp->slave_tp = transport;
zrtp->close_slave = close_slave;
zrtp->mitmMode = PJ_FALSE;
/* Done */
zrtp->refcount++;
*p_tp = &zrtp->base;
return PJ_SUCCESS;
}
开发者ID:CryptoCall,项目名称:ZRTP4PJ,代码行数:62,代码来源:transport_zrtp.c
示例3: PJ_DEF
/*
* Create the splitter/combiner.
*/
PJ_DEF(pj_status_t) pjmedia_splitcomb_create( pj_pool_t *pool,
unsigned clock_rate,
unsigned channel_count,
unsigned samples_per_frame,
unsigned bits_per_sample,
unsigned options,
pjmedia_port **p_splitcomb)
{
const pj_str_t name = pj_str("splitcomb");
struct splitcomb *sc;
/* Sanity check */
PJ_ASSERT_RETURN(pool && clock_rate && channel_count &&
samples_per_frame && bits_per_sample &&
p_splitcomb, PJ_EINVAL);
/* Only supports 16 bits per sample */
PJ_ASSERT_RETURN(bits_per_sample == 16, PJ_EINVAL);
*p_splitcomb = NULL;
/* Create the splitter/combiner structure */
sc = pj_pool_zalloc(pool, sizeof(struct splitcomb));
PJ_ASSERT_RETURN(sc != NULL, PJ_ENOMEM);
/* Create temporary buffers */
sc->get_buf = pj_pool_alloc(pool, samples_per_frame *
sizeof(TMP_SAMP_TYPE) /
channel_count);
PJ_ASSERT_RETURN(sc->get_buf, PJ_ENOMEM);
sc->put_buf = pj_pool_alloc(pool, samples_per_frame *
sizeof(TMP_SAMP_TYPE) /
channel_count);
PJ_ASSERT_RETURN(sc->put_buf, PJ_ENOMEM);
/* Save options */
sc->options = options;
/* Initialize port */
pjmedia_port_info_init(&sc->base.info, &name, SIGNATURE, clock_rate,
channel_count, bits_per_sample, samples_per_frame);
sc->base.put_frame = &put_frame;
sc->base.get_frame = &get_frame;
sc->base.on_destroy = &on_destroy;
/* Init ports array */
sc->port_desc = pj_pool_zalloc(pool, channel_count*sizeof(*sc->port_desc));
/* Done for now */
*p_splitcomb = &sc->base;
return PJ_SUCCESS;
}
开发者ID:tibastral,项目名称:symphonie,代码行数:59,代码来源:splitcomb.c
示例4: create_sine_port
/*
* Create a media port to generate sine wave samples.
*/
static pj_status_t create_sine_port(pj_pool_t *pool,
unsigned sampling_rate,
unsigned channel_count,
pjmedia_port **p_port)
{
pjmedia_port *port;
unsigned i;
unsigned count;
port_data *sine;
PJ_ASSERT_RETURN(pool && channel_count > 0 && channel_count <= 2,
PJ_EINVAL);
port = pj_pool_zalloc(pool, sizeof(pjmedia_port));
PJ_ASSERT_RETURN(port != NULL, PJ_ENOMEM);
/* Fill in port info. */
port->info.bits_per_sample = 16;
port->info.channel_count = channel_count;
port->info.encoding_name = pj_str("pcm");
port->info.has_info = 1;
port->info.name = pj_str("sine generator");
port->info.need_info = 0;
port->info.pt = 0xFF;
port->info.clock_rate = sampling_rate;
port->info.samples_per_frame = sampling_rate * 20 / 1000 * channel_count;
port->info.bytes_per_frame = port->info.samples_per_frame * 2;
port->info.type = PJMEDIA_TYPE_AUDIO;
/* Set the function to feed frame */
port->get_frame = &sine_get_frame;
/* Create sine port data */
port->port_data.pdata = sine = pj_pool_zalloc(pool, sizeof(port_data));
/* Create samples */
count = port->info.samples_per_frame / channel_count;
sine->samples = pj_pool_alloc(pool, count * sizeof(pj_int16_t));
PJ_ASSERT_RETURN(sine->samples != NULL, PJ_ENOMEM);
/* initialise sinusoidal wavetable */
for( i=0; i<count; i++ )
{
sine->samples[i] = (pj_int16_t) (10000.0 *
sin(((double)i/(double)count) * M_PI * 8.) );
}
*p_port = port;
return PJ_SUCCESS;
}
开发者ID:deveck,项目名称:Deveck.TAM,代码行数:54,代码来源:playsine.c
示例5: ilbc_alloc_codec
/*
* Allocate a new iLBC codec instance.
*/
static pj_status_t ilbc_alloc_codec(pjmedia_codec_factory *factory,
const pjmedia_codec_info *id,
pjmedia_codec **p_codec)
{
pj_pool_t *pool;
struct ilbc_codec *codec;
PJ_ASSERT_RETURN(factory && id && p_codec, PJ_EINVAL);
PJ_ASSERT_RETURN(factory == &ilbc_factory.base, PJ_EINVAL);
pool = pjmedia_endpt_create_pool(ilbc_factory.endpt, "iLBC%p",
2000, 2000);
PJ_ASSERT_RETURN(pool != NULL, PJ_ENOMEM);
codec = pj_pool_zalloc(pool, sizeof(struct ilbc_codec));
codec->base.op = &ilbc_op;
codec->base.factory = factory;
codec->pool = pool;
pj_ansi_snprintf(codec->obj_name, sizeof(codec->obj_name),
"ilbc%p", codec);
*p_codec = &codec->base;
return PJ_SUCCESS;
}
开发者ID:tibastral,项目名称:symphonie,代码行数:28,代码来源:ilbc.c
示例6: PJ_DEF
PJ_DEF(pj_status_t) pjmedia_silence_det_create( pj_pool_t *pool,
unsigned clock_rate,
unsigned samples_per_frame,
pjmedia_silence_det **p_sd)
{
pjmedia_silence_det *sd;
PJ_ASSERT_RETURN(pool && p_sd, PJ_EINVAL);
sd = pj_pool_zalloc(pool, sizeof(struct pjmedia_silence_det));
pj_ansi_strncpy(sd->objname, THIS_FILE, PJ_MAX_OBJ_NAME);
sd->objname[PJ_MAX_OBJ_NAME-1] = '\0';
sd->ptime = samples_per_frame * 1000 / clock_rate;
sd->signal_cnt = 0;
sd->silence_cnt = 0;
sd->weakest_signal = 0xFFFFFFFFUL;
sd->loudest_silence = 0;
/* Default settings */
pjmedia_silence_det_set_params(sd, -1, -1, -1);
/* Restart in fixed, silent mode */
sd->in_talk = PJ_FALSE;
pjmedia_silence_det_set_adaptive( sd, -1 );
*p_sd = sd;
return PJ_SUCCESS;
}
开发者ID:tibastral,项目名称:symphonie,代码行数:30,代码来源:silencedet.c
示例7: PJ_DEF
PJ_DEF(pj_status_t) pjmedia_null_port_create( pj_pool_t *pool,
unsigned sampling_rate,
unsigned channel_count,
unsigned samples_per_frame,
unsigned bits_per_sample,
pjmedia_port **p_port )
{
pjmedia_port *port;
const pj_str_t name = pj_str("null-port");
PJ_ASSERT_RETURN(pool && p_port, PJ_EINVAL);
port = pj_pool_zalloc(pool, sizeof(pjmedia_port));
PJ_ASSERT_RETURN(pool != NULL, PJ_ENOMEM);
pjmedia_port_info_init(&port->info, &name, SIGNATURE, sampling_rate,
channel_count, bits_per_sample, samples_per_frame);
port->get_frame = &null_get_frame;
port->put_frame = &null_put_frame;
port->on_destroy = &null_on_destroy;
*p_port = port;
return PJ_SUCCESS;
}
开发者ID:svn2github,项目名称:pjproject,代码行数:27,代码来源:null_port.c
示例8: xml_parse_print_test
static int xml_parse_print_test(const char *doc)
{
pj_str_t msg;
pj_pool_t *pool;
pj_xml_node *root;
char *output;
int output_len;
pool = pj_pool_create(mem, "xml", 4096, 1024, NULL);
pj_strdup2(pool, &msg, doc);
root = pj_xml_parse(pool, msg.ptr, msg.slen);
if (!root) {
PJ_LOG(1, (THIS_FILE, " Error: unable to parse XML"));
return -10;
}
output = (char*)pj_pool_zalloc(pool, msg.slen + 512);
output_len = pj_xml_print(root, output, msg.slen+512, PJ_TRUE);
if (output_len < 1) {
PJ_LOG(1, (THIS_FILE, " Error: buffer too small to print XML file"));
return -20;
}
output[output_len] = '\0';
pj_pool_release(pool);
return 0;
}
开发者ID:Jopie64,项目名称:pjsip,代码行数:28,代码来源:xml.c
示例9: PJ_DEF
/*
* Create.
*/
PJ_DEF(pj_status_t) echo_supp_create( pj_pool_t *pool,
unsigned clock_rate,
unsigned samples_per_frame,
unsigned tail_ms,
unsigned latency_ms,
unsigned options,
void **p_state )
{
echo_supp *ec;
pj_status_t status;
PJ_UNUSED_ARG(clock_rate);
PJ_UNUSED_ARG(options);
PJ_UNUSED_ARG(latency_ms);
ec = pj_pool_zalloc(pool, sizeof(struct echo_supp));
ec->samples_per_frame = samples_per_frame;
ec->tail_ms = tail_ms;
status = pjmedia_silence_det_create(pool, clock_rate, samples_per_frame,
&ec->sd);
if (status != PJ_SUCCESS)
return status;
pjmedia_silence_det_set_name(ec->sd, "ecsu%p");
pjmedia_silence_det_set_adaptive(ec->sd, PJMEDIA_ECHO_SUPPRESS_THRESHOLD);
pjmedia_silence_det_set_params(ec->sd, 100, 500, 3000);
*p_state = ec;
return PJ_SUCCESS;
}
开发者ID:tibastral,项目名称:symphonie,代码行数:34,代码来源:echo_suppress.c
示例10: make_call
/*
* Make outgoing call.
*/
static pj_status_t make_call(const pj_str_t *dst_uri)
{
struct call *call;
pjsip_dialog *dlg;
pjmedia_sdp_session *sdp;
pjsip_tx_data *tdata;
pj_status_t status;
/* Create UAC dialog */
status = pjsip_dlg_create_uac( pjsip_ua_instance(),
&app.local_uri, /* local URI */
&app.local_contact, /* local Contact */
dst_uri, /* remote URI */
dst_uri, /* remote target */
&dlg); /* dialog */
if (status != PJ_SUCCESS) {
return status;
}
/* Create call */
call = pj_pool_zalloc(dlg->pool, sizeof(struct call));
/* Create SDP */
if (app.real_sdp) {
status = pjmedia_endpt_create_sdp(app.med_endpt, dlg->pool, 1,
app.skinfo, &sdp);
if (status != PJ_SUCCESS) {
pjsip_dlg_terminate(dlg);
return status;
}
} else
sdp = app.dummy_sdp;
/* Create the INVITE session. */
status = pjsip_inv_create_uac( dlg, sdp, 0, &call->inv);
if (status != PJ_SUCCESS) {
pjsip_dlg_terminate(dlg);
return status;
}
/* Create initial INVITE request.
* This INVITE request will contain a perfectly good request and
* an SDP body as well.
*/
status = pjsip_inv_invite(call->inv, &tdata);
PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
/* Send initial INVITE request.
* From now on, the invite session's state will be reported to us
* via the invite session callbacks.
*/
status = pjsip_inv_send_msg(call->inv, tdata);
PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
return PJ_SUCCESS;
}
开发者ID:ClearwaterCore,项目名称:pjsip-upstream,代码行数:63,代码来源:pjsip-perf.c
示例11: PJ_DEF
/*
* Create PLC session. This function will select the PLC algorithm to
* use based on the arguments.
*/
PJ_DEF(pj_status_t) pjmedia_plc_create( pj_pool_t *pool,
unsigned clock_rate,
unsigned samples_per_frame,
unsigned options,
pjmedia_plc **p_plc)
{
pjmedia_plc *plc;
PJ_ASSERT_RETURN(pool && clock_rate && samples_per_frame && p_plc,
PJ_EINVAL);
PJ_ASSERT_RETURN(options == 0, PJ_EINVAL);
PJ_UNUSED_ARG(options);
plc = pj_pool_zalloc(pool, sizeof(pjmedia_plc));
if (0)
;
#if defined(PJMEDIA_HAS_STEVEU_PLC) && PJMEDIA_HAS_STEVEU_PLC!=0
else if (clock_rate == 8000)
plc->op = &plc_steveu;
#endif
else
plc->op = &plc_replay;
plc->obj = plc->op->plc_create(pool, clock_rate, samples_per_frame);
*p_plc = plc;
return PJ_SUCCESS;
}
开发者ID:svn2github,项目名称:pjproject,代码行数:35,代码来源:plc_common.c
示例12: create_sine_port
/*
* Create a media port to generate sine wave samples.
*/
static pj_status_t create_sine_port(pj_pool_t *pool,
unsigned sampling_rate,
unsigned channel_count,
pjmedia_port **p_port)
{
pjmedia_port *port;
unsigned i;
unsigned count;
pj_str_t name;
port_data *sine;
PJ_ASSERT_RETURN(pool && channel_count > 0 && channel_count <= 2,
PJ_EINVAL);
port = pj_pool_zalloc(pool, sizeof(pjmedia_port));
PJ_ASSERT_RETURN(port != NULL, PJ_ENOMEM);
/* Fill in port info. */
name = pj_str("sine generator");
pjmedia_port_info_init(&port->info, &name,
PJMEDIA_SIG_CLASS_PORT_AUD('s', 'i'),
sampling_rate,
channel_count,
16, sampling_rate * 20 / 1000 * channel_count);
/* Set the function to feed frame */
port->get_frame = &sine_get_frame;
/* Create sine port data */
port->port_data.pdata = sine = pj_pool_zalloc(pool, sizeof(port_data));
/* Create samples */
count = PJMEDIA_PIA_SPF(&port->info) / channel_count;
sine->samples = pj_pool_alloc(pool, count * sizeof(pj_int16_t));
PJ_ASSERT_RETURN(sine->samples != NULL, PJ_ENOMEM);
/* initialise sinusoidal wavetable */
for( i=0; i<count; i++ )
{
sine->samples[i] = (pj_int16_t) (10000.0 *
sin(((double)i/(double)count) * M_PI * 8.) );
}
*p_port = port;
return PJ_SUCCESS;
}
开发者ID:carlosdelfino,项目名称:WorkshopTelefoniaAutomacao,代码行数:50,代码来源:playsine.c
示例13: sizeof
void Sdp::setTelephoneEventRtpmap(pjmedia_sdp_media *med)
{
pjmedia_sdp_attr *attr_rtpmap = NULL;
pjmedia_sdp_attr *attr_fmtp = NULL;
attr_rtpmap = static_cast<pjmedia_sdp_attr *>(pj_pool_zalloc(memPool_, sizeof(pjmedia_sdp_attr)));
attr_rtpmap->name = pj_str((char *) "rtpmap");
attr_rtpmap->value = pj_str((char *) "101 telephone-event/8000");
med->attr[med->attr_count++] = attr_rtpmap;
attr_fmtp = static_cast<pjmedia_sdp_attr *>(pj_pool_zalloc(memPool_, sizeof(pjmedia_sdp_attr)));
attr_fmtp->name = pj_str((char *) "fmtp");
attr_fmtp->value = pj_str((char *) "101 0-15");
med->attr[med->attr_count++] = attr_fmtp;
}
开发者ID:dyfet,项目名称:sflphone,代码行数:17,代码来源:sdp.cpp
示例14: pj_pool_create
/*
* Create the echo canceller.
*/
pjs_echo_canceller::pjs_echo_canceller(pj_pool_t *pool_, unsigned clock_rate,
unsigned samples_per_frame_, unsigned tail_ms, unsigned latency_ms,
unsigned options) {
int sampling_rate = clock_rate;
unsigned ptime, lat_cnt;
unsigned delay_buf_opt = 0;
lat_ready = PJ_FALSE;
/* Create new pool and instantiate and init the EC */
pool = pj_pool_create(pool_->factory, "ec%p", 256, 256, NULL);
lock = new PPJ_SemaphoreLock(pool, NULL, 1, 1);
samples_per_frame = samples_per_frame_;
frm_buf = (pj_int16_t*) pj_pool_alloc(pool, samples_per_frame << 1);
state = speex_echo_state_init(samples_per_frame,
clock_rate * tail_ms / 1000);
speex_echo_ctl(state, SPEEX_ECHO_SET_SAMPLING_RATE,
&sampling_rate);
preprocess = speex_preprocess_state_init(samples_per_frame,
clock_rate);
tmp_frame = (pj_int16_t*) pj_pool_zalloc(pool, 2*samples_per_frame);
speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_ECHO_STATE,
state);
pj_list_init(&lat_buf);
pj_list_init(&lat_free);
PJ_LOG(5, (THIS_FILE, "Creating echo canceler"));
/* Create latency buffers */
ptime = samples_per_frame * 1000 / clock_rate;
if (latency_ms < ptime) {
/* Give at least one frame delay to simplify programming */
latency_ms = ptime;
}
lat_cnt = latency_ms / ptime;
while (lat_cnt--) {
struct frame *frm;
frm = (struct frame*) pj_pool_alloc(pool,
(samples_per_frame << 1) + sizeof(struct frame));
pj_list_push_back(&lat_free, frm);
}
/* Create delay buffer to compensate drifts */
if (options & PJMEDIA_ECHO_USE_SIMPLE_FIFO)
delay_buf_opt |= PJMEDIA_DELAY_BUF_SIMPLE_FIFO;
pjmedia_delay_buf_create(pool, NULL, clock_rate, samples_per_frame,
1, (PJMEDIA_SOUND_BUFFER_COUNT + 1) * ptime, delay_buf_opt,
&delay_buf);
PJ_LOG(4, (THIS_FILE, "ECHO canceller created, clock_rate=%d, channel=%d, "
"samples per frame=%d, tail length=%d ms, "
"latency=%d ms", clock_rate, 1, samples_per_frame, tail_ms, latency_ms));
}
开发者ID:ddv2005,项目名称:intercom,代码行数:60,代码来源:echo_canceller.cpp
示例15: PJ_DEF
PJ_DEF(int) jitter_buffer_create(Jitter_Buffer ** jitter_buffer, pj_pool_t *pool,
int max_number_of_frames, NACK_MODE nack_mode,
int low_rtt_threshold_ms, int high_rtt_threshold_ms) {
pj_assert(low_rtt_threshold_ms <= high_rtt_threshold_ms);
//alloc jitter buffer
Jitter_Buffer *jitter_buffer_internal = (Jitter_Buffer*)pj_pool_zalloc(pool, sizeof(Jitter_Buffer));
//init list alloc
list_alloc_init(&jitter_buffer_internal->frame_alloc, pool);
list_alloc_init(&jitter_buffer_internal->packet_alloc, pool);
//init frame list, don't call frame_buffer_init,
//since the header is not used as a real frame
pj_list_init(&jitter_buffer_internal->frameList);
pj_list_init(&jitter_buffer_internal->decodingFrameList);
//init frame number
jitter_buffer_internal->max_number_of_frames = max_number_of_frames
< MIN_NUM_OF_FRAMES? MIN_NUM_OF_FRAMES : max_number_of_frames;
jitter_buffer_internal->number_of_frames = 0;
//init decode state
decode_state_init(&jitter_buffer_internal->decode_state);
//init jitter estimator
jitter_estimator_init(&jitter_buffer_internal->jitter_estimator);
//init inter_frame_delay
inter_frame_delay_init(&jitter_buffer_internal->inter_frame_delay);
//init rtt
jitter_buffer_internal->rttMs = DEFAULT_RTT_MS;
//init nack
if(high_rtt_threshold_ms != -1)
jitter_buffer_internal->rttMs = 0;
jitter_buffer_internal->nack_mode = nack_mode;
jitter_buffer_internal->low_rtt_threshold_ms = low_rtt_threshold_ms;
jitter_buffer_internal->high_rtt_threshold_ms = high_rtt_threshold_ms;
jitter_buffer_internal->nack_seq_num = 0;
//init event
if(event_create(&jitter_buffer_internal->frame_event) != 0) {
return -1;
}
if(event_create(&jitter_buffer_internal->packet_event) != 0)
return -1;
//not running
jitter_buffer_internal->running = PJ_FALSE;
//first packet
jitter_buffer_internal->first_packet = PJ_FALSE;
//the first frame must be key frame
jitter_buffer_internal->waiting_for_key_frame = PJ_TRUE;
//waiting for completed frame
jitter_buffer_internal->waiting_for_completed_frame.timestamp = 0;
jitter_buffer_internal->waiting_for_completed_frame.frame_size = 0;
jitter_buffer_internal->waiting_for_completed_frame.latest_packet_timestamp = -1;
//init mutex
if(pj_mutex_create_simple(pool, NULL, &jitter_buffer_internal->jb_mutex) != PJ_SUCCESS)
return -1;
//ret
*jitter_buffer = jitter_buffer_internal;
return 0;
}
开发者ID:icefreedom,项目名称:jitter_buffer,代码行数:57,代码来源:jitter_buffer.c
示例16: queue_init
void queue_init(queue_t *queue, int cap, int data_size, pj_pool_t *p_mempool) {
queue->capacity = cap;
queue->buffer = pj_pool_zalloc(p_mempool, sizeof(void *) * cap);
queue->size = 0;
queue->in = 0;
queue->out = 0;
//#define QEPOOL_SIZE(queue) (5*queue->capacity)
// qepool_init(&(queue->qepool), QEPOOL_SIZE(queue), data_size, p_mempool);
pthread_mutex_init(&queue->mutex, NULL);
pthread_cond_init(&queue->cond_full, NULL);
pthread_cond_init(&queue->cond_empty, NULL);
}
开发者ID:mocidis,项目名称:concurrent_queue,代码行数:13,代码来源:queue.c
示例17: PJ_LOG
Jt_Car::Jt_Car(pj_uint32_t id):_id(id)
{
PJ_LOG(3, ("car.cpp", "build a car"));
_pool = pj_pool_create(&g_cp.factory, "car", INIT_POOL_CAR_SIZE, INC_POOL_CAR_SIZE, NULL);
_event_track = (jt_e_track_node*)PJ_POOL_ZALLOC_T(_pool, jt_e_track_node);
pj_list_init(_event_track);
_station_track = (jt_s_track_node*)PJ_POOL_ZALLOC_T(_pool, jt_s_track_node);
pj_list_init(_station_track);
_station_track->station = NULL;
_data = pj_pool_zalloc(_pool, MAX_CAR_DATA_LEN);
}
开发者ID:joee33,项目名称:Jtrast,代码行数:13,代码来源:car.cpp
示例18: add_choice_node
/**
* This method is to parse and add the choice type
* argument values to command structure.
**/
static pj_status_t add_choice_node(pj_cli_t *cli,
pj_xml_node *xml_node,
pj_cli_arg_spec *arg,
pj_cli_get_dyn_choice get_choice)
{
pj_xml_node *choice_node;
pj_xml_node *sub_node;
pj_cli_arg_choice_val choice_values[PJ_CLI_MAX_CHOICE_VAL];
pj_status_t status = PJ_SUCCESS;
sub_node = xml_node;
arg->type = PJ_CLI_ARG_CHOICE;
arg->get_dyn_choice = get_choice;
choice_node = sub_node->node_head.next;
while (choice_node != (pj_xml_node*)&sub_node->node_head) {
pj_xml_attr *choice_attr;
unsigned *stat_cnt = &arg->stat_choice_cnt;
pj_cli_arg_choice_val *choice_val = &choice_values[*stat_cnt];
pj_bzero(choice_val, sizeof(*choice_val));
choice_attr = choice_node->attr_head.next;
while (choice_attr != &choice_node->attr_head) {
if (!pj_stricmp2(&choice_attr->name, "value")) {
pj_strassign(&choice_val->value, &choice_attr->value);
} else if (!pj_stricmp2(&choice_attr->name, "desc")) {
pj_strassign(&choice_val->desc, &choice_attr->value);
}
choice_attr = choice_attr->next;
}
if (++(*stat_cnt) >= PJ_CLI_MAX_CHOICE_VAL)
break;
choice_node = choice_node->next;
}
if (arg->stat_choice_cnt > 0) {
unsigned i;
arg->stat_choice_val = (pj_cli_arg_choice_val *)
pj_pool_zalloc(cli->pool,
arg->stat_choice_cnt *
sizeof(pj_cli_arg_choice_val));
for (i = 0; i < arg->stat_choice_cnt; i++) {
pj_strdup(cli->pool, &arg->stat_choice_val[i].value,
&choice_values[i].value);
pj_strdup(cli->pool, &arg->stat_choice_val[i].desc,
&choice_values[i].desc);
}
}
return status;
}
开发者ID:ClearwaterCore,项目名称:pjsip-upstream,代码行数:55,代码来源:cli.c
示例19: plc_replay_create
static void* plc_replay_create(pj_pool_t *pool, unsigned clock_rate,
unsigned samples_per_frame)
{
struct replay_plc *o;
PJ_UNUSED_ARG(clock_rate);
o = pj_pool_alloc(pool, sizeof(struct replay_plc));
o->size = samples_per_frame * 2;
o->replay_cnt = 0;
o->frame = pj_pool_zalloc(pool, o->size);
return o;
}
开发者ID:svn2github,项目名称:pjproject,代码行数:14,代码来源:plc_common.c
示例20: pjmedia_sdp_session_clone
pjmedia_sdp_session_clone( pj_pool_t *pool,
const pjmedia_sdp_session *rhs)
{
pjmedia_sdp_session *sess;
unsigned i;
PJ_ASSERT_RETURN(pool && rhs, NULL);
sess = pj_pool_zalloc(pool, sizeof(pjmedia_sdp_session));
PJ_ASSERT_RETURN(sess != NULL, NULL);
/* Clone origin line. */
pj_strdup(pool, &sess->origin.user, &rhs->origin.user);
sess->origin.id = rhs->origin.id;
sess->origin.version = rhs->origin.version;
pj_strdup(pool, &sess->origin.net_type, &rhs->origin.net_type);
pj_strdup(pool, &sess->origin.addr_type, &rhs->origin.addr_type);
pj_strdup(pool, &sess->origin.addr, &rhs->origin.addr);
/* Clone subject line. */
pj_strdup(pool, &sess->name, &rhs->name);
/* Clone connection line */
if (rhs->conn) {
sess->conn = pjmedia_sdp_conn_clone(pool, rhs->conn);
PJ_ASSERT_RETURN(sess->conn != NULL, NULL);
}
/* Clone time line. */
sess->time.start = rhs->time.start;
sess->time.stop = rhs->time.stop;
/* Duplicate session attributes. */
sess->attr_count = rhs->attr_count;
for (i=0; i<rhs->attr_count; ++i) {
sess->attr[i] = pjmedia_sdp_attr_clone(pool, rhs->attr[i]);
}
/* Duplicate media descriptors. */
sess->media_count = rhs->media_count;
for (i=0; i<rhs->media_count; ++i) {
sess->media[i] = pjmedia_sdp_media_clone(pool, rhs->media[i]);
}
return sess;
}
开发者ID:tibastral,项目名称:symphonie,代码行数:46,代码来源:sdp.c
注:本文中的pj_pool_zalloc函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论