예제 #1
0
OSStatus AudioComponentCopyName(AudioComponent inComponent, CFStringRef *outName)
{
	int index = GetComponentIndex(inComponent);
	char* name;
	
	if (!outName)
		return paramErr;
	
	if (snd_card_get_longname(index, &name))
		return paramErr;
	
	*outName = CFStringCreateWithCString(nullptr, name, kCFStringEncodingUTF8);
	free(name);
	
	return noErr;
}
예제 #2
0
AudioComponent AudioComponentFindNext(AudioComponent inAComponent, AudioComponentDescription *inDesc)
{
	TRACE2(inAComponent, inDesc);

	int index = -1;

	if (inDesc->componentType != kAudioUnitType_Output && inDesc->componentType != kAudioUnitType_Mixer)
		return nullptr;

	if (inAComponent != nullptr)
		index = GetComponentIndex(inAComponent);

	if (snd_card_next(&index) || index == -1)
		return nullptr;

	return CreateComponent(kComponentTypeAudioUnit, index);
}
예제 #3
0
bool CCaliData::GetCaliCurveData_TypeB(int row, deque<CaliCurveData>& data) {
                                                         //need refactoring
	//判断所有内标属性内是否存至少1个内标,否则无显示
	bool hasInterior=false;
	const int itemSize = m_CaliItems.size();
	for (int i=0; i<itemSize; ++i) {
		if (m_CaliItems[i].szIsInterior==_T("是")){
			hasInterior=true;
			break;
		}
	}
	if (!hasInterior) return false;

	
	//判断选中组份是否标记为内标
	int b=0,e=-1;
	GetComponentIndex(row, b, e);
	if (b > e) return false;
	//校正区域显示"无效校正曲线"或直接无显示
	if (m_CaliItems[b].szIsInterior==_T("是")) return false;
	//选中组份无内标编号的,不参与计算校正方程	
	if (m_CaliItems[b].szInteriorNo==_T(""))   return false;


	//那么找到同内标编号且同级别的内标
	CString cStrNo = m_CaliItems[b].szInteriorNo;
	const int itemNum = m_CaliItems.size();
	int bb=0,ee=0;
	for (int i=0; i<itemNum; ++i)
	{
		if (i>=b && i<=e) continue;
		if (m_CaliItems[i].szInteriorNo == cStrNo)
		{
			if (m_CaliItems[i].szIsInterior==_T("是"))
			{
				GetComponentIndex(i, bb, ee);
				break;
			}
		}
	}

	for (int row=b; row<=e; ++row)
	{
		CString cStrLv = m_CaliItems[row].szLevel;
		for (int irow = bb; irow<=ee; irow++)
		{
			if (m_CaliItems[irow].szLevel == cStrLv) //全匹配
			{
				if (m_CaliItems[row].szContents==_T("")||m_CaliItems[irow].szContents==_T("")){
					data.clear();
					return false;
				}
				double dContents_c = _tstof(m_CaliItems[row].szContents);
				double dContents_i = _tstof(m_CaliItems[irow].szContents);
				if (dContents_i==0.0000f) continue;
				double _x = dContents_c/dContents_i;
				double _y;
				if (m_tableType==_T("峰面积")) {
					double dPeakArea_c = _tstof(m_CaliItems[row].szPeakArea); 
					double dPeakArea_i = _tstof(m_CaliItems[irow].szPeakArea); 
					if (dPeakArea_i==0.0000f) continue;
					_y = dPeakArea_c/dPeakArea_i;
				} else if(m_tableType==_T("峰高")) {
					double dPeakHeight_c = _tstof(m_CaliItems[row].szPeakHeight); 
					double dPeakHeight_i = _tstof(m_CaliItems[irow].szPeakHeight); 
					if (dPeakHeight_i==0.0000f) continue;
					_y = dPeakHeight_c/dPeakHeight_i;
				} else {
					return false;
				}
				if (_x==0.0000f) continue;

				if (_x!=1.0000f || _y!=1.0000f) { //这里把原先&& 改成||
					CaliCurveData ccd(_x, _y);
					data.push_back(ccd);
				}
			}
		} 
	}
	return true;
}