当前位置: 首页>>代码示例>>C++>>正文


C++ INDIRECT函数代码示例

本文整理汇总了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;
}
开发者ID:cpopescu,项目名称:whispermedialib,代码行数:32,代码来源:resampler.c

示例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);
}
开发者ID:wonktnodi,项目名称:webrtc_port,代码行数:38,代码来源:sbr_crc.cpp

示例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();
}
开发者ID:cpopescu,项目名称:whispermedialib,代码行数:32,代码来源:aacenc.c

示例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));
		}
	}
}
开发者ID:plops,项目名称:clicc,代码行数:34,代码来源:lisp355.c

示例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();
}
开发者ID:wonktnodi,项目名称:webrtc_port,代码行数:35,代码来源:pulsedata.cpp

示例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();
}
开发者ID:KISSMonX,项目名称:aacplusenc,代码行数:61,代码来源:adj_thr.c

示例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();
}
开发者ID:wonktnodi,项目名称:webrtc_port,代码行数:38,代码来源:sbrdecoder.c

示例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();
}
开发者ID:KISSMonX,项目名称:aacplusenc,代码行数:33,代码来源:adj_thr.c

示例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();
}
开发者ID:wonktnodi,项目名称:webrtc_port,代码行数:36,代码来源:pulsedata.cpp

示例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();
}
开发者ID:KISSMonX,项目名称:aacplusenc,代码行数:32,代码来源:adj_thr.c

示例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();
}
开发者ID:KISSMonX,项目名称:aacplusenc,代码行数:38,代码来源:stprepro.c

示例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;
}
开发者ID:cpopescu,项目名称:whispermedialib,代码行数:32,代码来源:resampler.c

示例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();
}
开发者ID:cpopescu,项目名称:whispermedialib,代码行数:54,代码来源:invf_est.c

示例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();
}
开发者ID:wonktnodi,项目名称:webrtc_port,代码行数:60,代码来源:qmf_dec.c

示例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();
}
开发者ID:fffonion,项目名称:V8,代码行数:14,代码来源:channelinfo.cpp


注:本文中的INDIRECT函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。