void main() { GraphLnk gl; InitGraph(&gl); InsertVertex(&gl,'A'); InsertVertex(&gl,'B'); InsertVertex(&gl,'C'); InsertVertex(&gl,'D'); InsertVertex(&gl,'E'); InsertEdge(&gl,'A','B'); InsertEdge(&gl,'A','D'); InsertEdge(&gl,'B','C'); InsertEdge(&gl,'B','E'); InsertEdge(&gl,'C','D'); InsertEdge(&gl,'C','E'); ShowGraph(&gl); //RemoveEdge(&gl,'A','C'); //RemoveVertex(&gl,'C'); ShowGraph(&gl); //int v = GetFirstNeighbor(&gl,'A'); int v = GetNextNeighbor(&gl,'B','A'); DestroyGraph(&gl); }
CAUOutputDevice *CCoreAudioGraph::CreateUnit(AEAudioFormat &format) { if (!m_audioUnit || !m_mixerUnit) return NULL; std::string formatString; AudioStreamBasicDescription inputFormat; AudioStreamBasicDescription outputFormat; OSStatus ret; int busNumber = GetFreeBus(); if (busNumber == INVALID_BUS) return NULL; // create output unit CAUOutputDevice *outputUnit = new CAUOutputDevice(); if (!outputUnit->Open(m_audioGraph, kAudioUnitType_FormatConverter, kAudioUnitSubType_AUConverter, kAudioUnitManufacturer_Apple)) goto error; m_audioUnit->GetFormatDesc(format, &inputFormat); // get the format frm the mixer if (!m_mixerUnit->GetFormat(&outputFormat, kAudioUnitScope_Input, kOutputBus)) goto error; if (!outputUnit->SetFormat(&outputFormat, kAudioUnitScope_Output, kOutputBus)) goto error; if (!outputUnit->SetFormat(&inputFormat, kAudioUnitScope_Input, kOutputBus)) goto error; ret = AUGraphConnectNodeInput(m_audioGraph, outputUnit->GetNode(), 0, m_mixerUnit->GetNode(), busNumber); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::CreateUnit: Error connecting outputUnit. Error = %s", GetError(ret).c_str()); goto error; } // TODO: setup mixmap, get free bus number for connection outputUnit->SetBus(busNumber); AUGraphUpdate(m_audioGraph, NULL); printf("Add unit\n\n"); ShowGraph(); printf("\n"); CLog::Log(LOGINFO, "CCoreAudioGraph::Open: Input Stream Format %s", StreamDescriptionToString(inputFormat, formatString)); CLog::Log(LOGINFO, "CCoreAudioGraph::Open: Output Stream Format %s", StreamDescriptionToString(outputFormat, formatString)); m_auUnitList.push_back(outputUnit); return outputUnit; error: delete outputUnit; return NULL; }
CAUOutputDevice *CCoreAudioGraph::DestroyUnit(CAUOutputDevice *outputUnit) { if (!outputUnit) return NULL; Stop(); for (AUUnitList::iterator itt = m_auUnitList.begin(); itt != m_auUnitList.end(); ++itt) if (*itt == outputUnit) { m_auUnitList.erase(itt); break; } ReleaseBus(outputUnit->GetBus()); outputUnit->Close(); delete outputUnit; outputUnit = NULL; AUGraphUpdate(m_audioGraph, NULL); printf("Remove unit\n\n"); ShowGraph(); printf("\n"); Start(); return NULL; }
bool CCoreAudioGraph::Start() { if (!m_audioGraph) return false; OSStatus ret; Boolean isRunning = false; ret = AUGraphIsRunning(m_audioGraph, &isRunning); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::Start: Audio graph not running. Error = %s", GetError(ret).c_str()); return false; } if (!isRunning) { if (m_audioUnit) m_audioUnit->Start(); if (m_mixerUnit) m_mixerUnit->Start(); if (m_inputUnit) m_inputUnit->Start(); ret = AUGraphStart(m_audioGraph); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::Start: Error starting audio graph. Error = %s", GetError(ret).c_str()); } ShowGraph(); } return true; }
void main() { GraphMtx gm; InitGraph(&gm); InsertVertex(&gm,'A'); InsertVertex(&gm,'B'); InsertVertex(&gm,'C'); InsertVertex(&gm,'D'); InsertVertex(&gm,'E'); InsertVertex(&gm,'F'); InsertEdge(&gm,'A','B',6); InsertEdge(&gm,'A','C',1); InsertEdge(&gm,'A','D',5); InsertEdge(&gm,'B','C',5); InsertEdge(&gm,'B','E',3); InsertEdge(&gm,'C','D',5); InsertEdge(&gm,'C','E',6); InsertEdge(&gm,'C','F',4); InsertEdge(&gm,'D','F',2); InsertEdge(&gm,'E','F',6); ShowGraph(&gm); //MinSpanTree_Prim(&gm,'E'); MinSpanTree_Kruskal(&gm); }
int main(int argc, char **argv) { GraphDN graph; CreateDNgraph(&graph); ShowGraph(&graph); return 0; }
bool CCoreAudioGraph::Open(ICoreAudioSource *pSource, AEAudioFormat &format, bool allowMixing) { OSStatus ret; AudioStreamBasicDescription inputFormat; AudioStreamBasicDescription outputFormat; m_allowMixing = allowMixing; ret = NewAUGraph(&m_audioGraph); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::Open: Error create audio grpah. Error = %s", GetError(ret).c_str()); return false; } ret = AUGraphOpen(m_audioGraph); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::Open: Error open audio grpah. Error = %s", GetError(ret).c_str()); return false; } // get output unit if (m_audioUnit) { CLog::Log(LOGERROR, "CCoreAudioGraph::Open: Error audio unit already open. double call ?"); return false; } m_audioUnit = new CAUOutputDevice(); if (!m_audioUnit->Open(m_audioGraph, kAudioUnitType_Output, kAudioUnitSubType_RemoteIO, kAudioUnitManufacturer_Apple)) return false; if (!m_audioUnit->EnableInputOuput()) return false; m_audioUnit->GetFormatDesc(format, &inputFormat); //if(!allowMixing) //{ if (!m_audioUnit->SetFormat(&inputFormat, kAudioUnitScope_Input, kOutputBus)) return false; if (!m_audioUnit->SetFormat(&inputFormat, kAudioUnitScope_Output, kInputBus)) return false; //} if (allowMixing) { // get mixer unit if (m_mixerUnit) { CLog::Log(LOGERROR, "CCoreAudioGraph::Open: Error mixer unit already open. double call ?"); return false; } m_mixerUnit = new CAUMultiChannelMixer(); if (!m_mixerUnit->Open(m_audioGraph, kAudioUnitType_Mixer, kAudioUnitSubType_MultiChannelMixer, kAudioUnitManufacturer_Apple)) return false; // set number of input buses if (!m_mixerUnit->SetInputBusCount(MAX_CONNECTION_LIMIT)) return false; //if(!m_mixerUnit->SetFormat(&fmt, kAudioUnitScope_Output, kOutputBus)) // return false; m_mixerUnit->SetBus(0); if (!m_audioUnit->GetFormat(&outputFormat, kAudioUnitScope_Input, kOutputBus)) return false; /* if(!m_mixerUnit->SetInputBusFormat(MAX_CONNECTION_LIMIT, &outputFormat)) return false; */ ret = AUGraphConnectNodeInput(m_audioGraph, m_mixerUnit->GetNode(), 0, m_audioUnit->GetNode(), 0); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::Open: Error connecting m_m_mixerNode. Error = %s", GetError(ret).c_str()); return false; } // get output unit if (m_inputUnit) { CLog::Log(LOGERROR, "CCoreAudioGraph::Open: Error mixer unit already open. double call ?"); return false; } m_inputUnit = new CAUOutputDevice(); if (!m_inputUnit->Open(m_audioGraph, kAudioUnitType_FormatConverter, kAudioUnitSubType_AUConverter, kAudioUnitManufacturer_Apple)) return false; if (!m_inputUnit->SetFormat(&inputFormat, kAudioUnitScope_Input, kOutputBus)) return false; /* if(!m_inputUnit->SetFormat(&outputFormat, kAudioUnitScope_Output, kOutputBus)) return false; */ // configure output unit int busNumber = GetFreeBus(); ret = AUGraphConnectNodeInput(m_audioGraph, m_inputUnit->GetNode(), 0, m_mixerUnit->GetNode(), busNumber); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::Open: Error connecting m_converterNode. Error = %s", GetError(ret).c_str()); return false; } m_inputUnit->SetBus(busNumber); ret = AUGraphUpdate(m_audioGraph, NULL); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::Open: Error update graph. Error = %s", GetError(ret).c_str()); return false; } ret = AUGraphInitialize(m_audioGraph); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::Open: Error initialize graph. Error = %s", GetError(ret).c_str()); return false; } // Regenerate audio format and copy format for the Output AU } ret = AUGraphUpdate(m_audioGraph, NULL); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::Open: Error update graph. Error = %s", GetError(ret).c_str()); return false; } std::string formatString; AudioStreamBasicDescription inputDesc_end, outputDesc_end; m_audioUnit->GetFormat(&inputDesc_end, kAudioUnitScope_Input, kOutputBus); m_audioUnit->GetFormat(&outputDesc_end, kAudioUnitScope_Output, kInputBus); CLog::Log(LOGINFO, "CCoreAudioGraph::Open: Input Stream Format %s", StreamDescriptionToString(inputDesc_end, formatString)); CLog::Log(LOGINFO, "CCoreAudioGraph::Open: Output Stream Format %s", StreamDescriptionToString(outputDesc_end, formatString)); if (m_mixerUnit) { m_mixerUnit->GetFormat(&inputDesc_end, kAudioUnitScope_Input, kOutputBus); m_mixerUnit->GetFormat(&outputDesc_end, kAudioUnitScope_Output, kOutputBus); CLog::Log(LOGINFO, "CCoreAudioGraph::Open: Input Stream Format %s", StreamDescriptionToString(inputDesc_end, formatString)); CLog::Log(LOGINFO, "CCoreAudioGraph::Open: Output Stream Format %s", StreamDescriptionToString(outputDesc_end, formatString)); } if (m_inputUnit) { m_inputUnit->GetFormat(&inputDesc_end, kAudioUnitScope_Input, kOutputBus); m_inputUnit->GetFormat(&outputDesc_end, kAudioUnitScope_Output, kOutputBus); CLog::Log(LOGINFO, "CCoreAudioGraph::Open: Input Stream Format %s", StreamDescriptionToString(inputDesc_end, formatString)); CLog::Log(LOGINFO, "CCoreAudioGraph::Open: Output Stream Format %s", StreamDescriptionToString(outputDesc_end, formatString)); } ret = AUGraphInitialize(m_audioGraph); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::Open: Error initialize graph. Error = %s", GetError(ret).c_str()); return false; } UInt32 bufferFrames = m_audioUnit->GetBufferFrameSize(); m_audioUnit->SetMaxFramesPerSlice(bufferFrames); if (m_inputUnit) m_inputUnit->SetMaxFramesPerSlice(bufferFrames); SetInputSource(pSource); ShowGraph(); return Start(); }
int main(){ /* int a,b,c,d,e,f,g,h; scanf("%d,%d,%d,%d",&a,&b,&c,&d); getchar(); Queue Q = CreateQueue(); Enqueue(Q,a); Enqueue(Q,b); Enqueue(Q,c); Enqueue(Q,d); e = Dequeue(Q); printf("%d\n",e); f = Dequeue(Q); printf("%d\n",f); g = Dequeue(Q); printf("%d\n",g); h = Dequeue(Q); printf("%d\n",h); printf("%d,%d,%d,%d\n",e,f,g,h); getchar(); */ int vertexNumber = 0; int vertex; int weights; int i; int f; Table table; printf("Create graph:\n"); printf("Input vertex number:"); scanf("%d",&vertexNumber); getchar(); printf("Graph initing...\n"); Graph graph = CreateGraph(vertexNumber); if(graph == NULL){ printf("Graph init failed\n"); return 0; } for(i = 1;i <= vertexNumber;i++){ printf("Vertex:%d\nHas adjavent?[1/0]:",i); scanf("%d",&f); getchar(); while(f){ printf("adjacent:"); scanf("%d",&vertex); getchar(); printf("weights:"); scanf("%d",&weights); getchar(); printf("continue?[1/0]:"); scanf("%d",&f); getchar(); AddEdge(graph,i,vertex,weights); } } ShowGraph(graph,vertexNumber); printf("input source:"); scanf("%d",&i); getchar(); table = Dijkstra(graph,i,vertexNumber); ShowTable(table,vertexNumber); PrintPath(table,i,2); printf("hello linux c\n"); return 0; }