本文整理汇总了C++中ALLOC函数的典型用法代码示例。如果您正苦于以下问题:C++ ALLOC函数的具体用法?C++ ALLOC怎么用?C++ ALLOC使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ALLOC函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: pathname
//.........这里部分代码省略.........
fill_fopen_filefunc(&us.z_filefunc);
}
else
{
us.z_filefunc = *pzlib_filefunc_def;
}
us.filestream = (*(us.z_filefunc.zopen_file))(us.z_filefunc.opaque, path, ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_EXISTING);
if (us.filestream == NULL)
{
return NULL;
}
central_pos = unzlocal_SearchCentralDir(&us.z_filefunc, us.filestream);
if (central_pos == 0)
{
err = UNZ_ERRNO;
}
if (ZSEEK(us.z_filefunc, us.filestream, central_pos, SEEK_SET) != 0)
{
err = UNZ_ERRNO;
}
/* the signature, already checked */
if (unzlocal_getLong(&us.z_filefunc, us.filestream, &uL) != UNZ_OK)
{
err = UNZ_ERRNO;
}
/* number of this disk */
if (unzlocal_getShort(&us.z_filefunc, us.filestream, &number_disk) != UNZ_OK)
{
err = UNZ_ERRNO;
}
/* number of the disk with the start of the central directory */
if (unzlocal_getShort(&us.z_filefunc, us.filestream, &number_disk_with_CD) != UNZ_OK)
{
err = UNZ_ERRNO;
}
/* total number of entries in the central dir on this disk */
if (unzlocal_getShort(&us.z_filefunc, us.filestream, &us.gi.number_entry) != UNZ_OK)
{
err = UNZ_ERRNO;
}
/* total number of entries in the central dir */
if (unzlocal_getShort(&us.z_filefunc, us.filestream, &number_entry_CD) != UNZ_OK)
{
err = UNZ_ERRNO;
}
if ((number_entry_CD != us.gi.number_entry) || (number_disk_with_CD != 0) || (number_disk != 0))
{
err = UNZ_BADZIPFILE;
}
/* size of the central directory */
if (unzlocal_getLong(&us.z_filefunc, us.filestream, &us.size_central_dir) != UNZ_OK)
{
err = UNZ_ERRNO;
}
/* offset of start of central directory with respect to the
starting disk number */
if (unzlocal_getLong(&us.z_filefunc, us.filestream, &us.offset_central_dir) != UNZ_OK)
{
err = UNZ_ERRNO;
}
/* zipfile comment length */
if (unzlocal_getShort(&us.z_filefunc, us.filestream, &us.gi.size_comment) != UNZ_OK)
{
err = UNZ_ERRNO;
}
if ((central_pos < us.offset_central_dir + us.size_central_dir) && (err == UNZ_OK))
{
err = UNZ_BADZIPFILE;
}
if (err != UNZ_OK)
{
ZCLOSE(us.z_filefunc, us.filestream);
return NULL;
}
us.byte_before_the_zipfile = central_pos - (us.offset_central_dir + us.size_central_dir);
us.central_pos = central_pos;
us.pfile_in_zip_read = NULL;
us.encrypted = 0;
s = (unz_s*)ALLOC(sizeof(unz_s));
*s = us;
unzGoToFirstFile((unzFile)s);
return (unzFile)s;
}
开发者ID:Doodle-Jump,项目名称:PC,代码行数:101,代码来源:unzip.c
示例2: opus_decode_frame
static int opus_decode_frame(OpusDecoder *st, const unsigned char *data,
int len, opus_val16 *pcm, int frame_size, int decode_fec)
{
void *silk_dec;
CELTDecoder *celt_dec;
int i, silk_ret=0, celt_ret=0;
ec_dec dec;
opus_int32 silk_frame_size;
VARDECL(opus_int16, pcm_silk);
VARDECL(opus_val16, pcm_transition);
VARDECL(opus_val16, redundant_audio);
int audiosize;
int mode;
int transition=0;
int start_band;
int redundancy=0;
int redundancy_bytes = 0;
int celt_to_silk=0;
int c;
int F2_5, F5, F10, F20;
const opus_val16 *window;
opus_uint32 redundant_rng = 0;
ALLOC_STACK;
silk_dec = (char*)st+st->silk_dec_offset;
celt_dec = (CELTDecoder*)((char*)st+st->celt_dec_offset);
F20 = st->Fs/50;
F10 = F20>>1;
F5 = F10>>1;
F2_5 = F5>>1;
if (frame_size < F2_5)
return OPUS_BUFFER_TOO_SMALL;
/* Payloads of 1 (2 including ToC) or 0 trigger the PLC/DTX */
if (len<=1)
{
data = NULL;
/* In that case, don't conceal more than what the ToC says */
frame_size = IMIN(frame_size, st->frame_size);
}
if (data != NULL)
{
audiosize = st->frame_size;
mode = st->mode;
ec_dec_init(&dec,(unsigned char*)data,len);
} else {
audiosize = frame_size;
if (st->prev_mode == 0)
{
/* If we haven't got any packet yet, all we can do is return zeros */
for (i=0;i<audiosize*st->channels;i++)
pcm[i] = 0;
RESTORE_STACK;
return audiosize;
} else {
mode = st->prev_mode;
}
}
/* For CELT/hybrid PLC of more than 20 ms, do multiple calls */
if (data==NULL && frame_size > F20 && mode != MODE_SILK_ONLY)
{
int nb_samples = 0;
do {
int ret = opus_decode_frame(st, NULL, 0, pcm, F20, 0);
if (ret != F20)
return OPUS_INTERNAL_ERROR;
pcm += F20*st->channels;
nb_samples += F20;
} while (nb_samples < frame_size);
RESTORE_STACK;
return frame_size;
}
ALLOC(pcm_transition, F5*st->channels, opus_val16);
if (data!=NULL && st->prev_mode > 0 && (
(mode == MODE_CELT_ONLY && st->prev_mode != MODE_CELT_ONLY && !st->prev_redundancy)
|| (mode != MODE_CELT_ONLY && st->prev_mode == MODE_CELT_ONLY) )
)
{
transition = 1;
if (mode == MODE_CELT_ONLY)
opus_decode_frame(st, NULL, 0, pcm_transition, IMIN(F5, audiosize), 0);
}
if (audiosize > frame_size)
{
/*fprintf(stderr, "PCM buffer too small: %d vs %d (mode = %d)\n", audiosize, frame_size, mode);*/
RESTORE_STACK;
return OPUS_BAD_ARG;
} else {
frame_size = audiosize;
}
ALLOC(pcm_silk, IMAX(F10, frame_size)*st->channels, opus_int16);
ALLOC(redundant_audio, F5*st->channels, opus_val16);
/* SILK processing */
if (mode != MODE_CELT_ONLY)
{
//.........这里部分代码省略.........
开发者ID:AshishNamdev,项目名称:mozilla-central,代码行数:101,代码来源:opus_decoder.c
示例3: ra_sound_allocate
static VALUE ra_sound_allocate(VALUE klass) {
RA_SOUND *snd = ALLOC(RA_SOUND);
memset(snd, 0, sizeof(RA_SOUND));
VALUE self = Data_Wrap_Struct(klass, ra_sound_mark, ra_sound_free, snd);
return self;
}
开发者ID:adamggg,项目名称:ruby-audio,代码行数:6,代码来源:ra_sound.c
示例4: cuddSymmSifting
/**
@brief Symmetric sifting algorithm.
@details Assumes that no dead nodes are present.
<ol>
<li> Order all the variables according to the number of entries in
each unique subtable.
<li> Sift the variable up and down, remembering each time the total
size of the DD heap and grouping variables that are symmetric.
<li> Select the best permutation.
<li> Repeat 3 and 4 for all variables.
</ol>
@return 1 plus the number of symmetric variables if successful; 0
otherwise.
@sideeffect None
@see cuddSymmSiftingConv
*/
int
cuddSymmSifting(
DdManager * table,
int lower,
int upper)
{
int i;
IndexKey *var;
int size;
int x;
int result;
int symvars;
int symgroups;
#ifdef DD_STATS
int previousSize;
#endif
size = table->size;
/* Find order in which to sift variables. */
var = ALLOC(IndexKey,size);
if (var == NULL) {
table->errorCode = CUDD_MEMORY_OUT;
goto ddSymmSiftingOutOfMem;
}
for (i = 0; i < size; i++) {
x = table->perm[i];
var[i].index = i;
var[i].keys = table->subtables[x].keys;
}
util_qsort(var,size,sizeof(IndexKey),ddSymmUniqueCompare);
/* Initialize the symmetry of each subtable to itself. */
for (i = lower; i <= upper; i++) {
table->subtables[i].next = i;
}
for (i = 0; i < ddMin(table->siftMaxVar,size); i++) {
if (table->ddTotalNumberSwapping >= table->siftMaxSwap)
break;
if (util_cpu_time() - table->startTime > table->timeLimit) {
table->autoDyn = 0; /* prevent further reordering */
break;
}
if (table->terminationCallback != NULL &&
table->terminationCallback(table->tcbArg)) {
table->autoDyn = 0; /* prevent further reordering */
break;
}
x = table->perm[var[i].index];
#ifdef DD_STATS
previousSize = (int) (table->keys - table->isolated);
#endif
if (x < lower || x > upper) continue;
if (table->subtables[x].next == (unsigned) x) {
result = ddSymmSiftingAux(table,x,lower,upper);
if (!result) goto ddSymmSiftingOutOfMem;
#ifdef DD_STATS
if (table->keys < (unsigned) previousSize + table->isolated) {
(void) fprintf(table->out,"-");
} else if (table->keys > (unsigned) previousSize +
table->isolated) {
(void) fprintf(table->out,"+"); /* should never happen */
} else {
(void) fprintf(table->out,"=");
}
fflush(table->out);
#endif
}
}
FREE(var);
ddSymmSummary(table, lower, upper, &symvars, &symgroups);
#ifdef DD_STATS
(void) fprintf(table->out, "\n#:S_SIFTING %8d: symmetric variables\n",
//.........这里部分代码省略.........
开发者ID:VerifiableRobotics,项目名称:slugs,代码行数:101,代码来源:cuddSymmetry.c
示例5: rev_branch_merge
/*
* Merge a set of per-file branches into a global branch
*/
static void
rev_branch_merge (rev_ref **branches, int nbranch,
rev_ref *branch, rev_list *rl)
{
int nlive;
int n;
rev_commit *prev = NULL;
rev_commit *head = NULL, **tail = &head;
rev_commit **commits;
rev_commit *commit;
rev_commit *latest;
rev_commit **p;
int lazy = 0;
time_t start = 0;
ALLOC((commits = calloc (nbranch, sizeof (rev_commit *))), "rev_branch_merge");
nlive = 0;
// printf("rev_branch_merge: nbranch=%d\n", nbranch);
for (n = 0; n < nbranch; n++) {
rev_commit *c;
/*
* Initialize commits to head of each branch
*/
c = commits[n] = branches[n]->commit;
/*
* Compute number of branches with remaining entries
*/
if (!c)
continue;
if (branches[n]->tail) {
c->tailed = 1;
continue;
}
nlive++;
while (c && !c->tail) {
if (!start || time_compare(c->date, start) < 0)
{
// printf(" 1:setting start=%ld:%s (from %s)\n", start, ctime_nonl(&start), c->file->name);
start = c->date;
}
c = c->parent;
}
if (c && (c->file || c->date != c->parent->date)) {
if (!start || time_compare(c->date, start) < 0) {
// printf(" 2:setting start=%ld:%s (from %s)\n", start, ctime_nonl(&start), c->file->name);
start = c->date;
}
}
}
for (n = 0; n < nbranch; n++) {
rev_commit *c = commits[n];
#if 0
printf("Doing commit %p: @ %ld\n", c, c->date);
if (c->file) printf(" %s\n", c->file->name);
#endif
if (!c->tailed)
continue;
if (!start || time_compare(start, c->date) >= 0)
continue;
if (c->file) {
/*
This case can occur if files have been added to
a branch since it's creation.
*/
printf( "Warning: %s too late date %s through branch %s (%ld:%ld=%ld)\n",
c->file->name, ctime_nonl(&c->date), branch->name, start, c->date, start-c->date);
continue;
}
commits[n] = NULL;
}
/*
* Walk down branches until each one has merged with the
* parent branch
*/
while (nlive > 0 && nbranch > 0) {
for (n = 0, p = commits, latest = NULL; n < nbranch; n++) {
rev_commit *c = commits[n];
if (!c)
continue;
*p++ = c;
if (c->tailed)
continue;
if (!latest || time_compare(latest->date, c->date) < 0)
latest = c;
}
nbranch = p - commits;
/*
* Construct current commit
*/
if (!lazy) {
commit = rev_commit_build (commits, latest, nbranch);
//.........这里部分代码省略.........
开发者ID:eatnumber1,项目名称:parsecvs,代码行数:101,代码来源:revlist.c
示例6: s_to_rp2
/*
** The routine above returns the sizes of the objects, and saves the lists
** (the list heads are static). S then calls again with appropriately
** sized arrays to this routine. This stuffs the arrays and frees the memory
*/
void s_to_rp2(Sint *n, Sint *nsplit, Sint *nnode, Sint *ncat,
Sint *numcat, Sint *maxcat, Sint *xvals, Sint *which,
double *cptable, double *dsplit, Sint *isplit, Sint *csplit,
double *dnode, Sint *inode)
{
int i;
int nodenum, j;
struct cptable *cp, *cp2;
double **ddnode , *ddsplit[3];
Sint *iinode[6], *iisplit[3];
Sint **ccsplit;
double scale;
/*
** create the "ragged array" pointers to the matrices
*/
ddnode = (double **) ALLOC(3+rp.num_resp, sizeof(double *));
for (i=0; i<(3+rp.num_resp); i++) {
ddnode[i] = dnode; dnode += *nnode;
}
for (i=0; i<3; i++) {
ddsplit[i]= dsplit; dsplit += *nsplit;
}
for (i=0; i<6; i++) {
iinode[i] = inode; inode += *nnode;
}
for (i=0; i<3; i++) {
iisplit[i]= isplit; isplit += *nsplit;
}
/* I don't understand this next line. Even if I don't need ccsplit
** (maxcat=0), not allocating it makes S memory fault. Not that
** 4 extra bytes is any big deal....
*/
if (*maxcat==0) i=1; else i = *maxcat;
ccsplit = (Sint **)CALLOC(i, sizeof(Sint *));
for (i=0; i<*maxcat; i++) {
ccsplit[i] = csplit; csplit += *ncat;
}
/* retrieve the complexity table */
scale = 1/tree->risk;
i=0;
for (cp = &cptab; cp !=0; cp= cp->forward) {
cptable[i++] = cp->cp * scale;
cptable[i++] = cp->nsplit;
cptable[i++] = cp->risk * scale;
if (*xvals >1) {
cptable[i++] = cp->xrisk*scale;
cptable[i++] = cp->xstd *scale;
}
}
/* Now get the tree */
*nnode=0; *nsplit=0; *ncat=0; /*array starting points */
rpmatrix(tree, nnode, nsplit, ncat, numcat,
ddsplit, iisplit, ccsplit, ddnode, iinode, 1);
/*
** Now fix up the 'which' array
** It would be a simple S match(), except that nodes sometimes get cut
*/
for (i=0; i<*n; i++) {
nodenum = savewhich[i];
do {
for (j=0; j< *nnode; j++)
if (iinode[0][j] == nodenum) {
which[i] = j+1;
break;
}
nodenum /=2;
} while (j >= *nnode);
}
/*
** restore the memory
** since the root was not calloced, I have to not free it (second arg
** of free_tree).
*/
free_tree(tree, 0);
for (cp=cptab.forward; cp!=0; ) {
cp2 = cp->forward;
Free(cp);
cp = cp2;
}
Free(ccsplit);
Free(savewhich);
}
开发者ID:xiangdiuxiu,项目名称:CodeShop,代码行数:94,代码来源:s_to_rp.c
示例7: VRETURN
IZ_BOOL DxtEncoder::init(
izanagi::IMemoryAllocator* allocator,
izanagi::graph::CGraphicsDevice* device,
IZ_UINT width, IZ_UINT height,
const char* vtxShader,
const char* dxtShader,
const char* pixelShader)
{
m_width = width;
m_height = height;
char* buf = nullptr;
IZ_UINT allocatedSize = 0;
{
izanagi::CFileInputStream in;
VRETURN(in.Open(dxtShader));
allocatedSize = in.GetSize();
buf = (char*)ALLOC(allocator, allocatedSize);
in.Read(buf, 0, allocatedSize);
buf[allocatedSize] = 0;
m_dxt = device->CreatePixelShader(buf);
VRETURN(m_dxt);
}
{
izanagi::CFileInputStream in;
VRETURN(in.Open(vtxShader));
auto size = in.GetSize();
IZ_ASSERT(allocatedSize >= size);
in.Read(buf, 0, size);
buf[size] = 0;
m_vs = device->CreateVertexShader(buf);
VRETURN(m_vs);
}
{
izanagi::CFileInputStream in;
VRETURN(in.Open(pixelShader));
auto size = in.GetSize();
IZ_ASSERT(allocatedSize >= size);
in.Read(buf, 0, size);
buf[size] = 0;
m_ps = device->CreatePixelShader(buf);
VRETURN(m_ps);
}
FREE(allocator, buf);
{
m_shd = device->CreateShaderProgram();
VRETURN(m_shd);
VRETURN(m_shd->AttachVertexShader(m_vs));
VRETURN(m_shd->AttachPixelShader(m_dxt));
}
{
m_shdDraw = device->CreateShaderProgram();
VRETURN(m_shdDraw);
VRETURN(m_shdDraw->AttachVertexShader(m_vs));
VRETURN(m_shdDraw->AttachPixelShader(m_ps));
}
{
// NOTE
// DXTは 4x4 ブロックで、128bit/block.
// GL_RGBA32UI は 128bit/texel.
// すると、1texel が DXTのブロックのサイズと同じになるので、fragment shaderの1pixel出力がそのままDXTの1ブロックになる.
m_tex = device->CreateTexture(
width / 4, height / 4,
1,
izanagi::graph::E_GRAPH_PIXEL_FMT_RGBA32UI,
izanagi::graph::E_GRAPH_RSC_USAGE_STATIC);
VRETURN(m_tex);
CALL_GL_API(glGenFramebuffers(1, &m_fbo));
glGenBuffers(1, &m_pbo);
glBindBuffer(GL_PIXEL_PACK_BUFFER, m_pbo);
glBufferData(GL_PIXEL_PACK_BUFFER, width * height, 0, GL_STREAM_COPY);
glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
m_texDxt = device->CreateTexture(
width, height,
1,
izanagi::graph::E_GRAPH_PIXEL_FMT_DXT5,
izanagi::graph::E_GRAPH_RSC_USAGE_STATIC);
VRETURN(m_tex);
}
//.........这里部分代码省略.........
开发者ID:nakdai,项目名称:trials,代码行数:101,代码来源:DxtEncoder.cpp
示例8: silk_PLC_conceal
static inline void silk_PLC_conceal(
silk_decoder_state *psDec, /* I/O Decoder state */
silk_decoder_control *psDecCtrl, /* I/O Decoder control */
opus_int16 frame[] /* O LPC residual signal */
)
{
opus_int i, j, k;
opus_int lag, idx, sLTP_buf_idx, shift1, shift2;
opus_int32 rand_seed, harm_Gain_Q15, rand_Gain_Q15, inv_gain_Q30;
opus_int32 energy1, energy2, *rand_ptr, *pred_lag_ptr;
opus_int32 LPC_pred_Q10, LTP_pred_Q12;
opus_int16 rand_scale_Q14;
opus_int16 *B_Q14, *exc_buf_ptr;
opus_int32 *sLPC_Q14_ptr;
VARDECL( opus_int16, exc_buf );
opus_int16 A_Q12[ MAX_LPC_ORDER ];
VARDECL( opus_int16, sLTP );
VARDECL( opus_int32, sLTP_Q14 );
silk_PLC_struct *psPLC = &psDec->sPLC;
opus_int32 prevGain_Q10[2];
SAVE_STACK;
ALLOC( exc_buf, 2*psPLC->subfr_length, opus_int16 );
ALLOC( sLTP, psDec->ltp_mem_length, opus_int16 );
ALLOC( sLTP_Q14, psDec->ltp_mem_length + psDec->frame_length, opus_int32 );
prevGain_Q10[0] = silk_RSHIFT( psPLC->prevGain_Q16[ 0 ], 6);
prevGain_Q10[1] = silk_RSHIFT( psPLC->prevGain_Q16[ 1 ], 6);
if( psDec->first_frame_after_reset ) {
silk_memset( psPLC->prevLPC_Q12, 0, sizeof( psPLC->prevLPC_Q12 ) );
}
/* Find random noise component */
/* Scale previous excitation signal */
exc_buf_ptr = exc_buf;
for( k = 0; k < 2; k++ ) {
for( i = 0; i < psPLC->subfr_length; i++ ) {
exc_buf_ptr[ i ] = (opus_int16)silk_SAT16( silk_RSHIFT(
silk_SMULWW( psDec->exc_Q14[ i + ( k + psPLC->nb_subfr - 2 ) * psPLC->subfr_length ], prevGain_Q10[ k ] ), 8 ) );
}
exc_buf_ptr += psPLC->subfr_length;
}
/* Find the subframe with lowest energy of the last two and use that as random noise generator */
silk_sum_sqr_shift( &energy1, &shift1, exc_buf, psPLC->subfr_length );
silk_sum_sqr_shift( &energy2, &shift2, &exc_buf[ psPLC->subfr_length ], psPLC->subfr_length );
if( silk_RSHIFT( energy1, shift2 ) < silk_RSHIFT( energy2, shift1 ) ) {
/* First sub-frame has lowest energy */
rand_ptr = &psDec->exc_Q14[ silk_max_int( 0, ( psPLC->nb_subfr - 1 ) * psPLC->subfr_length - RAND_BUF_SIZE ) ];
} else {
/* Second sub-frame has lowest energy */
rand_ptr = &psDec->exc_Q14[ silk_max_int( 0, psPLC->nb_subfr * psPLC->subfr_length - RAND_BUF_SIZE ) ];
}
/* Set up Gain to random noise component */
B_Q14 = psPLC->LTPCoef_Q14;
rand_scale_Q14 = psPLC->randScale_Q14;
/* Set up attenuation gains */
harm_Gain_Q15 = HARM_ATT_Q15[ silk_min_int( NB_ATT - 1, psDec->lossCnt ) ];
if( psDec->prevSignalType == TYPE_VOICED ) {
rand_Gain_Q15 = PLC_RAND_ATTENUATE_V_Q15[ silk_min_int( NB_ATT - 1, psDec->lossCnt ) ];
} else {
rand_Gain_Q15 = PLC_RAND_ATTENUATE_UV_Q15[ silk_min_int( NB_ATT - 1, psDec->lossCnt ) ];
}
/* LPC concealment. Apply BWE to previous LPC */
silk_bwexpander( psPLC->prevLPC_Q12, psDec->LPC_order, SILK_FIX_CONST( BWE_COEF, 16 ) );
/* Preload LPC coeficients to array on stack. Gives small performance gain */
silk_memcpy( A_Q12, psPLC->prevLPC_Q12, psDec->LPC_order * sizeof( opus_int16 ) );
/* First Lost frame */
if( psDec->lossCnt == 0 ) {
rand_scale_Q14 = 1 << 14;
/* Reduce random noise Gain for voiced frames */
if( psDec->prevSignalType == TYPE_VOICED ) {
for( i = 0; i < LTP_ORDER; i++ ) {
rand_scale_Q14 -= B_Q14[ i ];
}
rand_scale_Q14 = silk_max_16( 3277, rand_scale_Q14 ); /* 0.2 */
rand_scale_Q14 = (opus_int16)silk_RSHIFT( silk_SMULBB( rand_scale_Q14, psPLC->prevLTP_scale_Q14 ), 14 );
} else {
/* Reduce random noise for unvoiced frames with high LPC gain */
opus_int32 invGain_Q30, down_scale_Q30;
invGain_Q30 = silk_LPC_inverse_pred_gain( psPLC->prevLPC_Q12, psDec->LPC_order );
down_scale_Q30 = silk_min_32( silk_RSHIFT( (opus_int32)1 << 30, LOG2_INV_LPC_GAIN_HIGH_THRES ), invGain_Q30 );
down_scale_Q30 = silk_max_32( silk_RSHIFT( (opus_int32)1 << 30, LOG2_INV_LPC_GAIN_LOW_THRES ), down_scale_Q30 );
down_scale_Q30 = silk_LSHIFT( down_scale_Q30, LOG2_INV_LPC_GAIN_HIGH_THRES );
rand_Gain_Q15 = silk_RSHIFT( silk_SMULWB( down_scale_Q30, rand_Gain_Q15 ), 14 );
}
}
rand_seed = psPLC->rand_seed;
lag = silk_RSHIFT_ROUND( psPLC->pitchL_Q8, 8 );
//.........这里部分代码省略.........
开发者ID:sherief,项目名称:opus,代码行数:101,代码来源:PLC.c
示例9: authdes_pk_seccreate
/*
* Slightly modified version of authdessec_create which takes the public key
* of the server principal as an argument. This spares us a call to
* getpublickey() which in the nameserver context can cause a deadlock.
*/
AUTH *
authdes_pk_seccreate(const char *servername, netobj *pkey, u_int window,
const char *timehost, const des_block *ckey, nis_server *srvr)
{
AUTH *auth;
struct ad_private *ad;
char namebuf[MAXNETNAMELEN+1];
/*
* Allocate everything now
*/
auth = ALLOC(AUTH);
if (auth == NULL) {
syslog(LOG_ERR, "authdes_pk_seccreate: out of memory");
return (NULL);
}
ad = ALLOC(struct ad_private);
if (ad == NULL) {
syslog(LOG_ERR, "authdes_pk_seccreate: out of memory");
goto failed;
}
ad->ad_fullname = ad->ad_servername = NULL; /* Sanity reasons */
ad->ad_timehost = NULL;
ad->ad_netid = NULL;
ad->ad_uaddr = NULL;
ad->ad_nis_srvr = NULL;
ad->ad_timediff.tv_sec = 0;
ad->ad_timediff.tv_usec = 0;
memcpy(ad->ad_pkey, pkey->n_bytes, pkey->n_len);
if (!getnetname(namebuf))
goto failed;
ad->ad_fullnamelen = RNDUP((u_int) strlen(namebuf));
ad->ad_fullname = (char *)mem_alloc(ad->ad_fullnamelen + 1);
ad->ad_servernamelen = strlen(servername);
ad->ad_servername = (char *)mem_alloc(ad->ad_servernamelen + 1);
if (ad->ad_fullname == NULL || ad->ad_servername == NULL) {
syslog(LOG_ERR, "authdes_seccreate: out of memory");
goto failed;
}
if (timehost != NULL) {
ad->ad_timehost = (char *)mem_alloc(strlen(timehost) + 1);
if (ad->ad_timehost == NULL) {
syslog(LOG_ERR, "authdes_seccreate: out of memory");
goto failed;
}
memcpy(ad->ad_timehost, timehost, strlen(timehost) + 1);
ad->ad_dosync = TRUE;
} else if (srvr != NULL) {
ad->ad_nis_srvr = srvr; /* transient */
ad->ad_dosync = TRUE;
} else {
ad->ad_dosync = FALSE;
}
memcpy(ad->ad_fullname, namebuf, ad->ad_fullnamelen + 1);
memcpy(ad->ad_servername, servername, ad->ad_servernamelen + 1);
ad->ad_window = window;
if (ckey == NULL) {
if (key_gendes(&auth->ah_key) < 0) {
syslog(LOG_ERR,
"authdes_seccreate: keyserv(1m) is unable to generate session key");
goto failed;
}
} else {
auth->ah_key = *ckey;
}
/*
* Set up auth handle
*/
auth->ah_cred.oa_flavor = AUTH_DES;
auth->ah_verf.oa_flavor = AUTH_DES;
auth->ah_ops = authdes_ops();
auth->ah_private = (caddr_t)ad;
if (!authdes_refresh(auth, NULL)) {
goto failed;
}
ad->ad_nis_srvr = NULL; /* not needed any longer */
return (auth);
failed:
if (auth)
FREE(auth, sizeof (AUTH));
if (ad) {
if (ad->ad_fullname)
FREE(ad->ad_fullname, ad->ad_fullnamelen + 1);
if (ad->ad_servername)
FREE(ad->ad_servername, ad->ad_servernamelen + 1);
if (ad->ad_timehost)
FREE(ad->ad_timehost, strlen(ad->ad_timehost) + 1);
if (ad->ad_netid)
FREE(ad->ad_netid, strlen(ad->ad_netid) + 1);
if (ad->ad_uaddr)
FREE(ad->ad_uaddr, strlen(ad->ad_uaddr) + 1);
//.........这里部分代码省略.........
开发者ID:MattDooner,项目名称:freebsd-west,代码行数:101,代码来源:auth_des.c
示例10: nfsx_init
static int
nfsx_init(mntfs *mf)
{
/*
* mf_info has the form:
* host:/prefix/path,sub,sub,sub
*/
int i;
int glob_error;
struct nfsx *nx;
int asked_for_wakeup = 0;
nx = (struct nfsx *) mf->mf_private;
if (nx == 0) {
char **ivec;
char *info = 0;
char *host;
char *pref;
int error = 0;
info = strdup(mf->mf_info);
host = strchr(info, ':');
if (!host) {
error = EINVAL;
goto errexit;
}
pref = host+1;
host = info;
/*
* Split the prefix off from the suffices
*/
ivec = strsplit(pref, ',', '\'');
/*
* Count array size
*/
for (i = 0; ivec[i]; i++)
;
nx = ALLOC(nfsx);
mf->mf_private = nx;
mf->mf_prfree = nfsx_prfree;
nx->nx_c = i - 1; /* i-1 because we don't want the prefix */
nx->nx_v = xreallocarray(NULL, nx->nx_c, sizeof *nx->nx_v);
{ char *mp = 0;
char *xinfo = 0;
char *fs = mf->mf_fo->opt_fs;
char *rfs = 0;
for (i = 0; i < nx->nx_c; i++) {
char *path = ivec[i+1];
rfs = str3cat(rfs, pref, "/", path);
/*
* Determine the mount point.
* If this is the root, then don't remove
* the trailing slash to avoid mntfs name clashes.
*/
mp = str3cat(mp, fs, "/", rfs);
normalize_slash(mp);
deslashify(mp);
/*
* Determine the mount info
*/
xinfo = str3cat(xinfo, host, *path == '/' ? "" : "/", path);
normalize_slash(xinfo);
if (pref[1] != '\0')
deslashify(xinfo);
#ifdef DEBUG
dlog("nfsx: init mount for %s on %s", xinfo, mp);
#endif
nx->nx_v[i].n_error = -1;
nx->nx_v[i].n_mnt = find_mntfs(&nfs_ops, mf->mf_fo, mp, xinfo, "", mf->mf_mopts, mf->mf_remopts);
}
free(rfs);
free(mp);
free(xinfo);
}
free(ivec);
errexit:
free(info);
if (error)
return error;
}
/*
* Iterate through the mntfs's and call
* the underlying init routine on each
*/
glob_error = 0;
for (i = 0; i < nx->nx_c; i++) {
nfsx_mnt *n = &nx->nx_v[i];
mntfs *m = n->n_mnt;
int error = (*m->mf_ops->fs_init)(m);
/*
* If HARD_NFSX_ERRORS is defined, make any
* initialisation failure a hard error and
//.........这里部分代码省略.........
开发者ID:ajinkya93,项目名称:OpenBSD,代码行数:101,代码来源:nfsx_ops.c
示例11: DescriptorPool_alloc
/*
* call-seq:
* DescriptorPool.new => pool
*
* Creates a new, empty, descriptor pool.
*/
VALUE DescriptorPool_alloc(VALUE klass) {
DescriptorPool* self = ALLOC(DescriptorPool);
self->symtab = upb_symtab_new(&self->symtab);
return TypedData_Wrap_Struct(klass, &_DescriptorPool_type, self);
}
开发者ID:Overruler,项目名称:protobuf,代码行数:11,代码来源:defs.c
示例12: zipOpenNewFileInZip
extern int ZEXPORT zipOpenNewFileInZip (zipFile file, const char* filename, const zip_fileinfo* zipfi,
const void* extrafield_local, uInt size_extrafield_local,
const void* extrafield_global, uInt size_extrafield_global,
const char* comment, int method, int level)
{
zip_internal* zi;
uInt size_filename;
uInt size_comment;
uInt i;
int err = ZIP_OK;
if (file == NULL)
return ZIP_PARAMERROR;
if ((method!=0) && (method!=Z_DEFLATED))
return ZIP_PARAMERROR;
zi = (zip_internal*)file;
if (zi->in_opened_file_inzip == 1)
{
err = zipCloseFileInZip (file);
if (err != ZIP_OK)
return err;
}
if (filename==NULL)
filename="-";
if (comment==NULL)
size_comment = 0;
else
size_comment = strlen(comment);
size_filename = strlen(filename);
if (zipfi == NULL)
zi->ci.dosDate = 0;
else
{
if (zipfi->dosDate != 0)
zi->ci.dosDate = zipfi->dosDate;
else zi->ci.dosDate = ziplocal_TmzDateToDosDate(&zipfi->tmz_date,zipfi->dosDate);
}
zi->ci.flag = 0;
if ((level==8) || (level==9))
zi->ci.flag |= 2;
if ((level==2))
zi->ci.flag |= 4;
if ((level==1))
zi->ci.flag |= 6;
zi->ci.crc32 = 0;
zi->ci.method = method;
zi->ci.stream_initialised = 0;
zi->ci.pos_in_buffered_data = 0;
zi->ci.pos_local_header = ftell(zi->filezip);
zi->ci.size_centralheader = SIZECENTRALHEADER + size_filename +
size_extrafield_global + size_comment;
zi->ci.central_header = (char*)ALLOC((uInt)zi->ci.size_centralheader);
ziplocal_putValue_inmemory(zi->ci.central_header,(uLong)CENTRALHEADERMAGIC,4);
/* version info */
ziplocal_putValue_inmemory(zi->ci.central_header+4,(uLong)VERSIONMADEBY,2);
ziplocal_putValue_inmemory(zi->ci.central_header+6,(uLong)20,2);
ziplocal_putValue_inmemory(zi->ci.central_header+8,(uLong)zi->ci.flag,2);
ziplocal_putValue_inmemory(zi->ci.central_header+10,(uLong)zi->ci.method,2);
ziplocal_putValue_inmemory(zi->ci.central_header+12,(uLong)zi->ci.dosDate,4);
ziplocal_putValue_inmemory(zi->ci.central_header+16,(uLong)0,4); /*crc*/
ziplocal_putValue_inmemory(zi->ci.central_header+20,(uLong)0,4); /*compr size*/
ziplocal_putValue_inmemory(zi->ci.central_header+24,(uLong)0,4); /*uncompr size*/
ziplocal_putValue_inmemory(zi->ci.central_header+28,(uLong)size_filename,2);
ziplocal_putValue_inmemory(zi->ci.central_header+30,(uLong)size_extrafield_global,2);
ziplocal_putValue_inmemory(zi->ci.central_header+32,(uLong)size_comment,2);
ziplocal_putValue_inmemory(zi->ci.central_header+34,(uLong)0,2); /*disk nm start*/
if (zipfi==NULL)
ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)0,2);
else
ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)zipfi->internal_fa,2);
if (zipfi==NULL)
ziplocal_putValue_inmemory(zi->ci.central_header+38,(uLong)0,4);
else
ziplocal_putValue_inmemory(zi->ci.central_header+38,(uLong)zipfi->external_fa,4);
ziplocal_putValue_inmemory(zi->ci.central_header+42,(uLong)zi->ci.pos_local_header,4);
for (i=0;i<size_filename;i++)
*(zi->ci.central_header+SIZECENTRALHEADER+i) = *(filename+i);
for (i=0;i<size_extrafield_global;i++)
*(zi->ci.central_header+SIZECENTRALHEADER+size_filename+i) =
*(((const char*)extrafield_global)+i);
for (i=0;i<size_comment;i++)
*(zi->ci.central_header+SIZECENTRALHEADER+size_filename+
size_extrafield_global+i) = *(comment+i);
if (zi->ci.central_header == NULL)
//.........这里部分代码省略.........
开发者ID:Anonymous2,项目名称:project64,代码行数:101,代码来源:zip.c
示例13: sizeof
//.........这里部分代码省略.........
}
/* move dst */
if (VAL_IS_FLOAT(MOVE_DST(pc)))
count += sizeof(meld_float);
else if (VAL_IS_INT(MOVE_DST(pc)))
count += sizeof(meld_int);
else if (VAL_IS_FIELD(MOVE_DST(pc)))
count += 2;
else if (VAL_IS_REVERSE(MOVE_DST(pc)))
count += 2;
else if (VAL_IS_REG(MOVE_DST(pc)))
{} /* nothing */
else {
assert(0);
exit(1);
}
return pc+count;
}
else if(ITER(pc)) {
pc += ITER_BASE;
if(ITER_MATCH_NONE(pc))
pc += 2;
else {
unsigned char *old;
while(1) {
old = pc;
if (VAL_IS_FLOAT(ITER_MATCH_VAL(pc)))
pc += sizeof(meld_float);
else if (VAL_IS_INT(ITER_MATCH_VAL(pc)))
pc += sizeof(meld_int);
else if (VAL_IS_FIELD(ITER_MATCH_VAL(pc)))
pc += 2;
else if (VAL_IS_REVERSE(ITER_MATCH_VAL(pc)))
pc += 2;
else {
assert(0);
exit(1);
}
pc += 2;
if(ITER_MATCH_END(old))
break;
}
}
return pc;
} else if (ALLOC(pc)) {
int count = 2;
if (VAL_IS_INT(ALLOC_DST(pc)))
count += sizeof(meld_int);
else if (VAL_IS_FLOAT(ALLOC_DST(pc)))
count += sizeof(meld_float);
else if (VAL_IS_FIELD(ALLOC_DST(pc)))
count += 2;
else if (VAL_IS_REG(ALLOC_DST(pc)))
{} /* nothing */
else if (VAL_IS_REVERSE(ALLOC_DST(pc))) {
count += 2;
assert(0);
exit(1);
} else {
assert(0);
exit(1);
}
return pc+count;
}
else if (CALL(pc)) {
int numArgs = CALL_ARGS(pc);
int i;
for (i = 0, pc+=2; i < numArgs; i++, pc++) {
if (VAL_IS_FLOAT(CALL_VAL(pc)))
pc += sizeof(meld_float);
else if (VAL_IS_INT(CALL_VAL(pc)))
pc += sizeof(meld_int);
else if (VAL_IS_FIELD(CALL_VAL(pc)))
pc += 2;
else if (VAL_IS_REVERSE(CALL_VAL(pc))) {
pc += 2;
assert(0);
exit(1);
}
}
return pc;
}
else if (IF(pc)) {
return pc+IF_BASE;
}
else {
return pc+1;
}
}
开发者ID:pthalamy,项目名称:bench,代码行数:101,代码来源:core.v1.c
示例14: silk_encode_pulses
/* Encode quantization indices of excitation */
void silk_encode_pulses(
ec_enc *psRangeEnc, /* I/O compressor data structure */
const opus_int signalType, /* I Signal type */
const opus_int quantOffsetType, /* I quantOffsetType */
opus_int8 pulses[], /* I quantization indices */
const opus_int frame_length /* I Frame length */
)
{
opus_int i, k, j, iter, bit, nLS, scale_down, RateLevelIndex = 0;
opus_int32 abs_q, minSumBits_Q5, sumBits_Q5;
VARDECL( opus_int, abs_pulses );
VARDECL( opus_int, sum_pulses );
VARDECL( opus_int, nRshifts );
opus_int pulses_comb[ 8 ];
opus_int *abs_pulses_ptr;
const opus_int8 *pulses_ptr;
const opus_uint8 *cdf_ptr;
const opus_uint8 *nBits_ptr;
SAVE_STACK;
silk_memset( pulses_comb, 0, 8 * sizeof( opus_int ) ); /* Fixing Valgrind reported problem*/
/****************************/
/* Prepare for shell coding */
/****************************/
/* Calculate number of shell blocks */
silk_assert( 1 << LOG2_SHELL_CODEC_FRAME_LENGTH == SHELL_CODEC_FRAME_LENGTH );
iter = silk_RSHIFT( frame_length, LOG2_SHELL_CODEC_FRAME_LENGTH );
if( iter * SHELL_CODEC_FRAME_LENGTH < frame_length ) {
silk_assert( frame_length == 12 * 10 ); /* Make sure only happens for 10 ms @ 12 kHz */
iter++;
silk_memset( &pulses[ frame_length ], 0, SHELL_CODEC_FRAME_LENGTH * sizeof(opus_int8));
}
/* Take the absolute value of the pulses */
ALLOC( abs_pulses, iter * SHELL_CODEC_FRAME_LENGTH, opus_int );
silk_assert( !( SHELL_CODEC_FRAME_LENGTH & 3 ) );
for( i = 0; i < iter * SHELL_CODEC_FRAME_LENGTH; i+=4 ) {
abs_pulses[i+0] = ( opus_int )silk_abs( pulses[ i + 0 ] );
abs_pulses[i+1] = ( opus_int )silk_abs( pulses[ i + 1 ] );
abs_pulses[i+2] = ( opus_int )silk_abs( pulses[ i + 2 ] );
abs_pulses[i+3] = ( opus_int )silk_abs( pulses[ i + 3 ] );
}
/* Calc sum pulses per shell code frame */
ALLOC( sum_pulses, iter, opus_int );
ALLOC( nRshifts, iter, opus_int );
abs_pulses_ptr = abs_pulses;
for( i = 0; i < iter; i++ ) {
nRshifts[ i ] = 0;
while( 1 ) {
/* 1+1 -> 2 */
scale_down = combine_and_check( pulses_comb, abs_pulses_ptr, silk_max_pulses_table[ 0 ], 8 );
/* 2+2 -> 4 */
scale_down += combine_and_check( pulses_comb, pulses_comb, silk_max_pulses_table[ 1 ], 4 );
/* 4+4 -> 8 */
scale_down += combine_and_check( pulses_comb, pulses_comb, silk_max_pulses_table[ 2 ], 2 );
/* 8+8 -> 16 */
scale_down += combine_and_check( &sum_pulses[ i ], pulses_comb, silk_max_pulses_table[ 3 ], 1 );
if( scale_down ) {
/* We need to downscale the quantization signal */
nRshifts[ i ]++;
for( k = 0; k < SHELL_CODEC_FRAME_LENGTH; k++ ) {
abs_pulses_ptr[ k ] = silk_RSHIFT( abs_pulses_ptr[ k ], 1 );
}
} else {
/* Jump out of while(1) loop and go to next shell coding frame */
break;
}
}
abs_pulses_ptr += SHELL_CODEC_FRAME_LENGTH;
}
/**************/
/* Rate level */
/**************/
/* find rate level that leads to fewest bits for coding of pulses per block info */
minSumBits_Q5 = silk_int32_MAX;
for( k = 0; k < N_RATE_LEVELS - 1; k++ ) {
nBits_ptr = silk_pulses_per_block_BITS_Q5[ k ];
sumBits_Q5 = silk_rate_levels_BITS_Q5[ signalType >> 1 ][ k ];
for( i = 0; i < iter; i++ ) {
if( nRshifts[ i ] > 0 ) {
sumBits_Q5 += nBits_ptr[ MAX_PULSES + 1 ];
} else {
sumBits_Q5 += nBits_ptr[ sum_pulses[ i ] ];
}
}
if( sumBits_Q5 < minSumBits_Q5 ) {
minSumBits_Q5 = sumBits_Q5;
RateLevelIndex = k;
}
}
ec_enc_icdf( psRangeEnc, RateLevelIndex, silk_rate_levels_iCDF[ signalType >> 1 ], 8 );
/***************************************************/
/* Sum-Weighted-Pulses Encoding */
//.........这里部分代码省略.........
开发者ID:2k13yr,项目名称:telegram-1,代码行数:101,代码来源:encode_pulses.c
示例15: AllocReversedList
value_t AllocReversedList( zone_t zone, value_t listObj )
{
struct closure *out = ALLOC( List_reverse_func, LIST_REVERSE_SLOT_COUNT );
out->slots[LIST_REVERSE_LIST_SLOT] = listObj;
return out;
}
开发者ID:marssaxman,项目名称:radian,代码行数:6,代码来源:list-reverse.c
示例16: authdes_pk_create
AUTH *
authdes_pk_create (const char *servername, netobj *pkey, u_int window,
struct sockaddr *syncaddr, des_block *ckey)
{
AUTH *auth;
struct ad_private *ad;
char namebuf[MAXNETNAMELEN + 1];
/*
* Allocate everything now
*/
auth = ALLOC (AUTH);
ad = ALLOC (struct ad_private);
if (auth == NULL || ad == NULL)
{
debug ("authdes_create: out of memory");
goto failed;
}
memset (ad, 0, sizeof (struct ad_private));
memcpy (ad->ad_pkey, pkey->n_bytes, pkey->n_len);
if (!getnetname (namebuf))
goto failed;
ad->ad_fullnamelen = RNDUP (strlen (namebuf));
ad->ad_fullname = mem_alloc (ad->ad_fullnamelen + 1);
ad->ad_servernamelen = strlen (servername);
ad->ad_servername = mem_alloc (ad->ad_servernamelen + 1);
if (ad->ad_fullname == NULL || ad->ad_servername == NULL)
{
debug ("authdes_create: out of memory");
goto failed;
}
/*
* Set up private data
*/
memcpy (ad->ad_fullname, namebuf, ad->ad_fullnamelen + 1);
memcpy (ad->ad_servername, servername, ad->ad_servernamelen + 1);
ad->ad_timediff.tv_sec = ad->ad_timediff.tv_usec = 0;
if (syncaddr != NULL)
{
ad->ad_syncaddr = *syncaddr;
ad->ad_dosync = TRUE;
}
else
ad->ad_dosync = FALSE;
ad->ad_window = window;
if (ckey == NULL)
{
if (key_gendes (&auth->ah_key) < 0)
{
debug ("authdes_create: unable to gen conversation key");
goto failed;
}
}
else
auth->ah_key = *ckey;
/*
* Set up auth handle
*/
auth->ah_cred.oa_flavor = AUTH_DES;
auth->ah_verf.oa_flavor = AUTH_DES;
auth->ah_ops = (struct auth_ops *) &authdes_ops;
auth->ah_private = (caddr_t) ad;
if (!authdes_refresh (auth))
goto failed;
return auth;
failed:
if (auth != NULL)
FREE (auth, sizeof (AUTH));
if (ad != NULL)
{
if (ad->ad_fullname != NULL)
FREE (ad->ad_fullname, ad->ad_fullnamelen + 1);
if (ad->ad_servername != NULL)
FREE (ad->ad_servername, ad->ad_servernamelen + 1);
FREE (ad, sizeof (struct ad_private));
}
return NULL;
}
开发者ID:bminor,项目名称:glibc,代码行数:88,代码来源:auth_des.c
示例17: zipOpen2
extern zipFile ZEXPORT zipOpen2 (
const char *pathname,
int append,
zipcharpc* globalcomment,
zlib_filefunc_def* pzlib_filefunc_def)
{
zip_internal ziinit;
zip_internal* zi;
int err=ZIP_OK;
if
|
请发表评论