本文整理汇总了C++中INDIRECT函数的典型用法代码示例。如果您正苦于以下问题:C++ INDIRECT函数的具体用法?C++ INDIRECT怎么用?C++ INDIRECT使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了INDIRECT函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InitIIR21_Resampler
/*
Reset downsampler instance and clear delay lines
returns status
*/
int
InitIIR21_Resampler(IIR21_RESAMPLER *ReSampler)
{
COUNT_sub_start("InitDownsampler");
INDIRECT(1); MOVE(1);
ReSampler->iirFilter.ptr = 0;
INDIRECT(8); MOVE(4);
ReSampler->iirFilter.coeffIIRa = set1.coeffIIRa;
ReSampler->iirFilter.coeffIIRb = set1.coeffIIRb;
ReSampler->iirFilter.noOffCoeffs = set1.noOffCoeffs;
ReSampler->delay=set1.delay;
assert(ReSampler->iirFilter.noOffCoeffs <= BUFFER_SIZE);
INDIRECT(1); MOVE(1);
ReSampler->ratio = 2;
INDIRECT(1); STORE(1);
ReSampler->pending = 1;
COUNT_sub_end();
return 1;
}
示例2: calcCRC
/*
\brief crc calculation
*/
static unsigned long
calcCRC (HANDLE_CRC hCrcBuf, unsigned long bValue, int nBits)
{
int i;
unsigned long bMask = (1UL << (nBits - 1));
FLC_sub_start("calcCRC");
ADD(1); SHIFT(1); /* counting previous operations */
LOOP(1);
for (i = 0; i < nBits; i++, bMask >>= 1) {
unsigned short flag = (hCrcBuf->crcState & hCrcBuf->crcMask) ? 1 : 0;
unsigned short flag1 = (bMask & bValue) ? 1 : 0;
INDIRECT(2); ADD(2); LOGIC(2); BRANCH(2); MOVE(2); /* counting previous operations */
LOGIC(1);
flag ^= flag1;
SHIFT(1); STORE(1);
hCrcBuf->crcState <<= 1;
BRANCH(1);
if (flag)
{
INDIRECT(1); LOGIC(1); STORE(1);
hCrcBuf->crcState ^= hCrcBuf->crcPoly;
}
}
FLC_sub_end();
return (hCrcBuf->crcState);
}
示例3: AacEncClose
void AacEncClose (struct AAC_ENCODER* hAacEnc)
{
int error=0;
COUNT_sub_start("AacEncClose");
MOVE(1); /* counting previous operation */
BRANCH(1);
if (hAacEnc) {
INDIRECT(1); PTR_INIT(1); FUNC(1);
QCDelete(&hAacEnc->qcKernel);
INDIRECT(1); PTR_INIT(1); FUNC(1);
QCOutDelete(&hAacEnc->qcOut);
INDIRECT(1); PTR_INIT(1); FUNC(1);
error = PsyDelete(&hAacEnc->psyKernel);
INDIRECT(1); PTR_INIT(1); FUNC(1);
error = PsyOutDelete(&hAacEnc->psyOut);
INDIRECT(1); PTR_INIT(1); FUNC(1);
DeleteBitBuffer(&hAacEnc->hBitStream);
PTR_INIT(1);
hAacEnc=0;
}
COUNT_sub_end();
}
示例4: Z124_lambda
static void Z124_lambda(CL_FORM *base)
{
if(CL_SMSTRP(ARG(1)))
{
COPY(INDIRECT(GET_FORM(ARG(0)) + 4), ARG(2));
COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(3));
Ffuncall(ARG(2), 2);
COPY(ARG(2), ARG(0));
}
else
{
if(CL_CONSP(ARG(1)))
{
COPY(GET_CAR(ARG(1)), ARG(2));
if(CL_SYMBOLP(ARG(2)) && GET_SYMBOL(ARG(2)) == SYMBOL(Slisp, 255)) /* CHARACTER-SET */
{
LOAD_SYMBOL(SYMBOL(Slisp, 255), ARG(3)); /* CHARACTER-SET */
COPY(INDIRECT(GET_FORM(ARG(0)) + 4), ARG(4));
COPY(GET_CDR(ARG(1)), ARG(5));
Ffuncall(ARG(4), 2);
mv_count = 1;
ALLOC_CONS(ARG(5), ARG(3), ARG(4), ARG(0));
}
else
{
COPY(ARG(1), ARG(0));
}
}
else
{
COPY(ARG(1), ARG(0));
}
}
}
示例5: CPulseData_Apply
/*
The function applies the pulse data to the
specified spectral lines.
*/
void CPulseData_Apply(CPulseData *PulseData, /*!< pointer to pulse data side info */
const short *pScaleFactorBandOffsets, /*!< pointer to scalefactor band offsets */
int *coef) /*!< pointer to spectrum */
{
int i,k;
FLC_sub_start("CPulseData_Apply");
INDIRECT(1); BRANCH(1);
if (PulseData->PulseDataPresent)
{
INDIRECT(1); MOVE(1);
k = pScaleFactorBandOffsets[PulseData->PulseStartBand];
PTR_INIT(2); /* PulseData->PulseOffset[i]
PulseData->PulseAmp[i]
*/
LOOP(1);
for (i=0; i<=PulseData->NumberPulse; i++)
{
ADD(1);
k += PulseData->PulseOffset[i];
INDIRECT(1); BRANCH(1); ADD(1); STORE(1);
if (coef [k] > 0) coef[k] += PulseData->PulseAmp[i];
else coef[k] -= PulseData->PulseAmp[i];
}
}
FLC_sub_end();
}
示例6: reduceThresholds
/* apply reduction formula */
static void reduceThresholds(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS],
int ahFlag[MAX_CHANNELS][MAX_GROUPED_SFB],
float thrExp[MAX_CHANNELS][MAX_GROUPED_SFB],
const int nChannels,
const float redVal)
{
int ch, sfb,sfbGrp;
float sfbEn, sfbThr,sfbThrReduced;
COUNT_sub_start("reduceThresholds");
LOOP(1);
for(ch=0; ch<nChannels; ch++) {
PSY_OUT_CHANNEL *psyOutChan = &psyOutChannel[ch];
PTR_INIT(1); /* counting previous operation */
INDIRECT(2); LOOP(1);
for(sfbGrp = 0;sfbGrp < psyOutChan->sfbCnt;sfbGrp+= psyOutChan->sfbPerGroup){
PTR_INIT(5); /* pointers for psyOutChan->sfbMinSnr[sfbGrp+sfb],
psyOutChan->sfbEnergy[sfbGrp+sfb],
psyOutChan->sfbThreshold[sfbGrp+sfb],
thrExp[ch][sfbGrp+sfb],
ahFlag[ch][sfbGrp+sfb]
*/
INDIRECT(1); LOOP(1);
for (sfb=0; sfb<psyOutChan->maxSfbPerGroup; sfb++) {
MOVE(2);
sfbEn = psyOutChan->sfbEnergy[sfbGrp+sfb];
sfbThr = psyOutChan->sfbThreshold[sfbGrp+sfb];
ADD(1); BRANCH(1);
if (sfbEn > sfbThr) {
/* threshold reduction formula */
ADD(1); TRANS(1);
sfbThrReduced = (float) pow(thrExp[ch][sfbGrp+sfb]+redVal, invRedExp);
/* avoid holes */
MULT(1); ADD(2); LOGIC(1); BRANCH(1);
if ((sfbThrReduced > psyOutChan->sfbMinSnr[sfbGrp+sfb] * sfbEn) && (ahFlag[ch][sfbGrp+sfb] != NO_AH)){
ADD(1); BRANCH(1); MOVE(1);
sfbThrReduced = max(psyOutChan->sfbMinSnr[sfbGrp+sfb] * sfbEn, sfbThr);
MOVE(1);
ahFlag[ch][sfbGrp+sfb] = AH_ACTIVE;
}
MOVE(1);
psyOutChan->sfbThreshold[sfbGrp+sfb] = sfbThrReduced;
}
}
}
}
COUNT_sub_end();
}
示例7: DelaySbrBitstr
/*!
\brief Delay SBR bitstream
\return none
*/
static void
DelaySbrBitstr(HANDLE_SBR_CONCEAL_DATA hSbrConcealData,
SBRBITSTREAM *hSbrBS,
int *SbrFrameOK)
{
int tmp;
SBRBITSTREAM bs_tmp;
FLC_sub_start("DelaySbrBitstr");
INDIRECT(1); MOVE(1);
tmp = hSbrConcealData->Bitstream->sbrElement[0].ElementID;
INDIRECT(1); MOVE(3);
bs_tmp = hSbrBS[0];
hSbrBS[0] = *(hSbrConcealData->Bitstream);
*(hSbrConcealData->Bitstream) = bs_tmp;
BRANCH(1);
if(!(*SbrFrameOK))
{
MOVE(1);
hSbrConcealData->Bitstream->sbrElement[0].ElementID = tmp;
}
INDIRECT(1); MOVE(2);
tmp = *SbrFrameOK;
*SbrFrameOK = hSbrConcealData->FrameOk;
MOVE(1);
hSbrConcealData->FrameOk = tmp;
FLC_sub_end();
}
示例8: preparePe
/* constants that do not change during successive pe calculations */
static void preparePe(PE_DATA *peData,
PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS],
float sfbFormFactor[MAX_CHANNELS][MAX_GROUPED_SFB],
const int nChannels,
const float peOffset)
{
int ch;
COUNT_sub_start("preparePe");
LOOP(1);
for(ch=0; ch<nChannels; ch++) {
PSY_OUT_CHANNEL *psyOutChan = &psyOutChannel[ch];
PTR_INIT(1); /* counting previous operation */
INDIRECT(8); PTR_INIT(1); FUNC(8);
prepareSfbPe(&peData->peChannelData[ch],
psyOutChan->sfbEnergy,
psyOutChan->sfbThreshold,
sfbFormFactor[ch],
psyOutChan->sfbOffsets,
psyOutChan->sfbCnt,
psyOutChan->sfbPerGroup,
psyOutChan->maxSfbPerGroup);
}
INDIRECT(1); MOVE(1);
peData->offset = peOffset;
COUNT_sub_end();
}
示例9: CPulseData_Read
/*
The function reads the elements for pulse data from
the bitstream.
*/
void CPulseData_Read(HANDLE_BIT_BUF bs, /*!< pointer to bitstream */
CPulseData *PulseData) /*!< pointer to pulse data side info */
{
int i;
FLC_sub_start("CPulseData_Read");
FUNC(2); INDIRECT(1); STORE(1); BRANCH(1);
if ((PulseData->PulseDataPresent = (char) GetBits(bs,1)))
{
FUNC(2); INDIRECT(2); STORE(1);
PulseData->NumberPulse = (char) GetBits(bs,2);
FUNC(2); INDIRECT(2); STORE(1);
PulseData->PulseStartBand = (char) GetBits(bs,6);
PTR_INIT(2); /* PulseData->PulseOffset[i]
PulseData->PulseAmp[i]
*/
LOOP(1);
for (i=0; i<=PulseData->NumberPulse; i++)
{
FUNC(2); STORE(1);
PulseData->PulseOffset[i] = (char) GetBits(bs,5);
FUNC(2); STORE(1);
PulseData->PulseAmp[i] = (char) GetBits(bs,4);
}
}
FLC_sub_end();
}
示例10: calcThreshExp
/* loudness calculation (threshold to the power of redExp) */
static void calcThreshExp(float thrExp[MAX_CHANNELS][MAX_GROUPED_SFB],
PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS],
const int nChannels)
{
int ch, sfb,sfbGrp;
COUNT_sub_start("calcThreshExp");
LOOP(1);
for (ch=0; ch<nChannels; ch++) {
PSY_OUT_CHANNEL *psyOutChan = &psyOutChannel[ch];
PTR_INIT(1); /* counting operation above */
INDIRECT(2); LOOP(1);
for(sfbGrp = 0;sfbGrp < psyOutChan->sfbCnt;sfbGrp+= psyOutChan->sfbPerGroup) {
PTR_INIT(2); /* pointer for thrExp[][],
psyOutChan->sfbThreshold[]
*/
INDIRECT(1); LOOP(1);
for (sfb=0; sfb<psyOutChan->maxSfbPerGroup; sfb++) {
TRANS(1); STORE(1);
thrExp[ch][sfbGrp+sfb] = (float) pow(psyOutChan->sfbThreshold[sfbGrp+sfb], redExp);
}
}
}
COUNT_sub_end();
}
示例11: UpdateStereoPreProcess
/*!
\brief calc attenuation parameters - this has to take place after
the 'QCMain' call because PeSum of the merged l/r-m/s signal
is relevant
\return nothing
****************************************************************************/
void UpdateStereoPreProcess(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS],
QC_OUT_ELEMENT* qcOutElement, /*! provides access to PE */
HANDLE_STEREO_PREPRO hStPrePro,
float weightPeFac /*! ratio of ms PE vs. lr PE */
)
{
COUNT_sub_start("UpdateStereoPreProcess");
INDIRECT(1); BRANCH(1);
if (hStPrePro->stereoAttenuationFlag)
{
float DELTA = 0.1f;
INDIRECT(4); MOVE(4);
hStPrePro->avrgFreqEnergyL = psyOutChannel[0].sfbEnSumLR;
hStPrePro->avrgFreqEnergyR = psyOutChannel[1].sfbEnSumLR;
hStPrePro->avrgFreqEnergyM = psyOutChannel[0].sfbEnSumMS;
hStPrePro->avrgFreqEnergyS = psyOutChannel[1].sfbEnSumMS;
INDIRECT(3); MULT(1); MAC(1); STORE(1);
hStPrePro->smoothedPeSumSum =
DELTA * qcOutElement->pe * weightPeFac + (1 - DELTA) * hStPrePro->smoothedPeSumSum;
}
COUNT_sub_end();
}
示例12: AdvanceMAFilter
static float
AdvanceMAFilter( IIR_FILTER *iirFilter
)
{
float y;
int j;
int ptr = iirFilter->ptr;
int i = ptr + (BUFFER_SIZE-1);
COUNT_sub_start("AdvanceMAFilter");
INDIRECT(1); /* MOVE(1); --> ptr isn't needed */ ADD(1); /* counting previous operations */
INDIRECT(2); MULT(1);
y = (iirFilter->coeffIIRa[0] * iirFilter->ring_buf_2[i & (BUFFER_SIZE-1)]);
PTR_INIT(3); /* iirFilter->noOffCoeffs
iirFilter->coeffIIRa[]
iirFilter->ring_buf_2[]
*/
LOOP(1);
for (j=1; j<iirFilter->noOffCoeffs; j++) {
i--;
MAC(1);
y += (iirFilter->coeffIIRa[j] * iirFilter->ring_buf_2[i & (BUFFER_SIZE-1)]);
}
COUNT_sub_end();
return y;
}
示例13: qmfInverseFilteringDetector
void
qmfInverseFilteringDetector (HANDLE_SBR_INV_FILT_EST hInvFilt,
float ** quotaMatrix,
float *nrgVector,
char* indexVector,
int startIndex,
int stopIndex,
int transientFlag,
INVF_MODE* infVec
)
{
int band;
COUNT_sub_start("qmfInverseFilteringDetector");
PTR_INIT(6); /* hInvFilt->freqBandTableInvFilt[band]
hInvFilt->detectorValues[band]
hInvFilt->prevInvfMode[band]
hInvFilt->prevRegionSbr[band]
hInvFilt->prevRegionOrig[band]
infVec[band]
*/
INDIRECT(1); LOOP(1);
for(band = 0 ; band < hInvFilt->noDetectorBands; band++){
int startChannel = hInvFilt->freqBandTableInvFilt[band];
int stopChannel = hInvFilt->freqBandTableInvFilt[band+1];
MOVE(2); /* counting previous operations */
INDIRECT(1); PTR_INIT(1); FUNC(9);
calculateDetectorValues(quotaMatrix,
indexVector,
nrgVector,
&hInvFilt->detectorValues[band],
startChannel,
stopChannel,
startIndex,
stopIndex
);
INDIRECT(1); PTR_INIT(2); FUNC(6); STORE(1);
infVec[band]= decisionAlgorithm(hInvFilt->detectorParams,
hInvFilt->detectorValues[band],
transientFlag,
hInvFilt->prevInvfMode[band],
&hInvFilt->prevRegionSbr[band],
&hInvFilt->prevRegionOrig[band]);
}
COUNT_sub_end();
}
示例14: inverseModulation
/*
*
* \brief Perform complex-valued inverse modulation of the subband
* samples stored in rSubband (real part) and iSubband (imaginary
* part) and stores the result in timeOut
*
*/
static void
inverseModulation (float *qmfReal,
float *qmfImag,
HANDLE_SBR_QMF_FILTER_BANK synQmf
)
{
int i, no_synthesis_channels, M;
float r1, i1, r2, i2;
COUNT_sub_start("inverseModulation");
INDIRECT(1); MOVE(1);
no_synthesis_channels = synQmf->no_channels;
MULT(1);
M = no_synthesis_channels / 2;
PTR_INIT(2); /* pointer for qmfReal[],
qmfImag[] */
INDIRECT(1); LOOP(1);
for (i = synQmf->usb; i < no_synthesis_channels; i++) {
MOVE(2);
qmfReal[i]=qmfImag[i]=0;
}
FUNC(2);
cosMod (qmfReal, synQmf);
FUNC(2);
sinMod (qmfImag, synQmf);
PTR_INIT(4); /* pointer for qmfReal[],
qmfImag[],
qmfImag[no_synthesis_channels - 1 - i],
qmfReal[no_synthesis_channels - i - 1] */
LOOP(1);
for (i = 0; i < M; i++) {
MOVE(4);
r1 = qmfReal[i];
i2 = qmfImag[no_synthesis_channels - 1 - i];
r2 = qmfReal[no_synthesis_channels - i - 1];
i1 = qmfImag[i];
ADD(4); STORE(4);
qmfReal[i] = (r1 - i1);
qmfImag[no_synthesis_channels - 1 - i] = -(r1 + i1);
qmfReal[no_synthesis_channels - i - 1] = (r2 - i2);
qmfImag[i] = -(r2 + i2);
}
COUNT_sub_end();
}
示例15: IcsReset
void IcsReset(CIcsInfo *pIcsInfo, CStreamInfo *pStreamInfo)
{
COUNT_sub_start("IcsReset");
INDIRECT(2); MOVE(1);
pIcsInfo->Valid = 0;
pIcsInfo->TotalSfBands = 0;
INDIRECT(4); MOVE(2);
pIcsInfo->SamplingRateIndex = pStreamInfo->SamplingRateIndex;
pIcsInfo->Profile = pStreamInfo->Profile;
COUNT_sub_end();
}