do_zfilt_dynamic32to32.c

来自「手机加密通话软件」· C语言 代码 · 共 44 行

C
44
字号
/* Copyright 2001,2002,2003 NAH6
 * All Rights Reserved
 *
 * Parts Copyright DoD, Parts Copyright Starium
 *
 */
#include "celpfilt.h"
#include <assert.h>

void do_zfilt_dynamic32to32(
  FILTER        *flt,
  fxpt_16       coef[],         /*  2.13 format */
  fxpt_32       data[])         /* 16.15 format */
{
  int i, j;
  fxpt_32 *memory;
  int64 acc;
  fxpt_32 *pm;
  fxpt_32 *pc;
  fxpt_32 coef32[11];

  ASSERT(flt->data_length == 60);
  ASSERT(flt->order == 10);

  for (i=0 ; i<11 ; i++)
	  coef32[i]= coef[i];

  memory = flt->memory;


  for (i = 0; i < 60; i++) {
    memory[0] = data[i];
    acc = 0;

    for (j = 10, pm= memory+10, pc=coef32+10; j ; j--,pm--,pc--) {
      acc += (fxpt_64) *pm * *pc;
      pm[0] = pm[-1];
    }

    acc += (int64)memory[0] * coef32[0];
    data[i] = fxpt_saturate32_round( acc, 13 );
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?