
/************************************************************
**	CalcSpecAddPower.c
**
**  Private :
**
**  History :
**     2013.05.13 M.Takigahira Build有無指定に対応
**     2013.05.09 M.Takigahira "HA_log.h"をインクルード、printf=>LOGIへ変更
**                             負値に対する安全対策でnum_src!=0からnum_src>0へ変更
**                             num_fftをパラメータに変更、配列はARY_NUM_xxxマクロで宣言するように変更
**     2012.12.11 kama@SIF     新規作成(V1.0)
**
**  Description
**  -----------
**  ２つのパワースペクトルを加算(EstimateLeakとHRLE)
**  STATUS	CalcSpecAddPower(*float, *float, *float)
**  入力1　：パワースペクトル
**  入力2　：パワースペクトル
**  出力1　：加算パワースペクトル
**
**    入力を足すだけ。
*/

///////////////////////////////////////////////////////////////
//  Include Files
#include "build_modules.h"
//////////#include "header.h"
#include "HA_log.h"
#include "android_hark.h"

///////////////////////////////////////////////////////////////
//  Define Macros

#if !defined BUILD_MODULE_CALC_SPEC_ADD_POWER
///////////////////////////////////////////////////////////////
//  Dummy Functions for build empty methods.
int HASetParamCalcSpecAddPower(int param_fft){ return 0; }
int	CalcSpecAddPower(
		int num_src,
		HA_Float inputSpec1[ARY_NUM_SRC][ARY_NUM_FFT],
		HA_Float inputSpec2[ARY_NUM_SRC][ARY_NUM_FFT],
		HA_Float outputSpec[ARY_NUM_SRC][ARY_NUM_FFT]
		){ return 0; }
#else // #if defined BUILD_MODULE_CALC_SPEC_ADD_POWER
///////////////////////////////////////////////////////////////
//  Parameter
static int num_fft = ARY_NUM_FFT;

///////////////////////////////////////////////////////////////
//  Local Buffer

///////////////////////////////////////////////////////////////
//  Clear

///////////////////////////////////////////////////////////////
//  SetParam
/******************************************************************************
**  History :
**    2013.05.09 M.Takigahira 新規作成
*/
// Public : パラメータ設定
int HASetParamCalcSpecAddPower(int param_fft)
{
    int index;
    if((param_fft <= 0) || (param_fft > ARY_NUM_FFT)){
        return -1;
    }
    else{
    	num_fft = param_fft;
    }
    return 0;
}

///////////////////////////////////////////////////////////////
//  MAIN
int	CalcSpecAddPower(
	int	num_src,
	HA_Float	inputSpec1[ARY_NUM_SRC][ARY_NUM_FFT],
	HA_Float	inputSpec2[ARY_NUM_SRC][ARY_NUM_FFT],
	HA_Float	outputSpec[ARY_NUM_SRC][ARY_NUM_FFT]
	)
{
	int	s, f;
	if(num_src>0){
		for(s=0; s<num_src; s++){
			for(f=0; f<num_fft; f++){
				outputSpec[s][f] = inputSpec1[s][f] + inputSpec2[s][f];
				//if(s==0){ LOGI("out(%f), in2(%f), in1(%f)¥n", outputSpec[s][f], inputSpec2[s][f], inputSpec1[s][f]); }
			}
		}
		//exit(0);
	}
	return(OK);
}
#endif // BUILD_MODULE_CALC_SPEC_ADD_POWER

// EOF
