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; }
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); }
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; }