Lines Matching defs:info

245 void printInfo(PortInfo* info) {
246 TRACE5(" PortInfo %p: handle=%p, mixerIndex=%d, dstLineCount=%d, dstLines=%p, ", info, (void*) info->handle, info->mixerIndex, info->dstLineCount, info->dstLines);
247 TRACE5("srcLineCount=%d, srcLines=%p, targetPortCount=%d, sourcePortCount=%d, ports=%p, ", info->srcLineCount, info->srcLines, info->targetPortCount, info->sourcePortCount, info->ports);
248 TRACE3("maxControlCount=%d, usedControlIDs=%d, controlIDs=%p \n", info->maxControlCount, info->usedControlIDs, info->controlIDs);
249 TRACE2("usedMuxData=%d, muxData=%p, controlIDs=%p \n", info->usedMuxData, info->muxData);
326 // if controls is non-NULL, it will be filled with the info
378 PortInfo* info = NULL;
392 info = (PortInfo*) malloc(sizeof(PortInfo));
393 if (info != NULL) {
395 memset(info, 0, sizeof(PortInfo));
396 info->handle = handle;
397 info->mixerIndex = mixerIndex;
403 info->dstLines = (MIXERLINE*) malloc(dstCount * sizeof(MIXERLINE));
404 success = (info->dstLines != NULL);
406 if (success && info->dstLines) {
409 if (getMixerLineByDestination(handle, dst, &info->dstLines[info->dstLineCount])) {
410 info->srcLineCount += info->dstLines[info->dstLineCount].cConnections;
411 if (info->dstLines[info->dstLineCount].dwComponentType == MIXERLINE_COMPONENTTYPE_DST_WAVEIN && !waveInLine) {
412 waveInLine = &info->dstLines[info->dstLineCount];
413 info->sourcePortCount = waveInLine->cConnections;
416 info->sourcePortCount++;
420 info->targetPortCount++;
422 info->dstLineCount++;
426 if (info->srcLineCount) {
427 info->srcLines = (MIXERLINE*) malloc(info->srcLineCount * sizeof(MIXERLINE));
428 success = (info->srcLines != NULL);
430 if (success && info->srcLines) {
433 for (dst = 0; dst < info->dstLineCount; dst++) {
435 info->dstLines[dst].dwUser = srcIndex;
436 for (src = 0; src < (int) info->dstLines[dst].cConnections; src++) {
437 getMixerLineBySource(handle, dst, src, &info->srcLines[srcIndex++]);
442 if ((info->targetPortCount + info->sourcePortCount) > 0) {
443 info->ports = (LPMIXERLINE*) malloc((info->targetPortCount + info->sourcePortCount) * sizeof(LPMIXERLINE));
444 success = (info->ports != NULL);
446 if (success && info->ports) {
449 for (dst = 0; dst < info->dstLineCount; dst++) {
450 if (waveInLine != &info->dstLines[dst]) {
451 info->ports[srcIndex++] = &info->dstLines[dst];
454 if (srcIndex != info->targetPortCount) {
455 ERROR2("srcIndex=%d is NOT targetPortCount=%d !\n", srcIndex, info->targetPortCount);
457 //srcIndex = info->targetPortCount; // should be automatic!
461 info->ports[srcIndex++] = waveInLine;
464 info->ports[srcIndex++] = &info->srcLines[src + waveInLine->dwUser];
467 if (srcIndex != (info->targetPortCount + info->sourcePortCount)) {
468 ERROR2("srcIndex=%d is NOT PortCount=%d !\n", srcIndex, (info->targetPortCount + info->sourcePortCount));
476 PORT_Close((void*) info);
477 info = NULL;
479 return info;
485 PortInfo* info = (PortInfo*) id;
486 if (info->handle) {
487 mixerClose(info->handle);
488 info->handle = NULL;
490 if (info->dstLines) {
491 free(info->dstLines);
492 info->dstLines = NULL;
494 if (info->srcLines) {
495 free(info->srcLines);
496 info->srcLines=NULL;
498 if (info->ports) {
499 free(info->ports);
500 info->ports = NULL;
502 if (info->controlIDs) {
503 free(info->controlIDs);
504 info->controlIDs = NULL;
506 if (info->muxData) {
507 free(info->muxData);
508 info->muxData = NULL;
510 free(info);
516 PortInfo* info = (PortInfo*) id;
517 if (info != NULL) {
518 ret = info->targetPortCount + info->sourcePortCount;
545 PortInfo* info = (PortInfo*) id;
547 line = info->ports[portIndex];
557 PortInfo* info = (PortInfo*) id;
560 line = info->ports[portIndex];
604 MIXERLINE* findDestLine(PortInfo* info, DWORD dwDestination) {
607 for (i = 0; i < info->dstLineCount; i++) {
608 if (info->dstLines[i].dwDestination == dwDestination) {
610 return &(info->dstLines[i]);
617 void createMuxControl(PortInfo* info, PortControlCreator* creator, MIXERLINE* dstLine, DWORD srcLineID, void** controlObjects, int* controlCount) {
629 if (getControlInfo(info->handle, dstLine, &controlInfos)) {
634 if (info->usedControlIDs >= info->maxControlCount) {
635 ERROR1("not enough free controlIDs !! maxControlIDs = %d\n", info->maxControlCount);
639 controlID = &(info->controlIDs[info->usedControlIDs]);
640 controlID->portInfo = info;
671 if (mixerGetControlDetails((HMIXEROBJ) info->handle, details, MIXER_GETCONTROLDETAILSF_LISTTEXT | MIXER_OBJECTF_HMIXER) != MMSYSERR_NOERROR) {
684 for (m = 0; m < info->usedControlIDs; m++) {
685 if (info->controlIDs[m].details.dwControlID == details->dwControlID) {
687 TRACE2("Reusing paDetails=%p of controlID[%d]\n", info->controlIDs[m].details.paDetails, m);
688 details->paDetails = info->controlIDs[m].details.paDetails;
694 details->paDetails = &(info->muxData[info->usedMuxData]);
695 TRACE2("Setting paDetails=%p to muxData[%d] \n", details->paDetails, info->usedMuxData);
696 info->usedMuxData += details->cMultipleItems;
701 info->usedControlIDs++;
719 void createPortControl(PortInfo* info, PortControlCreator* creator, MIXERCONTROL* mixerControl,
728 if (info->usedControlIDs >= info->maxControlCount) {
729 ERROR1("not enough free controlIDs !! maxControlIDs = %d\n", info->maxControlCount);
732 controlID = &(info->controlIDs[info->usedControlIDs]);
733 controlID->portInfo = info;
793 info->usedControlIDs++;
798 void createLineControls(PortInfo* info, PortControlCreator* creator, MIXERLINE* line, void** controlObjects, int* controlCount) {
807 if (getControlInfo(info->handle, line, &controlInfos)) {
837 createPortControl(info, creator, mixerControl, type, controlObjects, controlCount);
840 createPortControl(info, creator, mixerControl, PORT_CONTROL_TYPE_FAKE_BALANCE, controlObjects, controlCount);
852 void addCompoundControl(PortInfo* info, PortControlCreator* creator, char* name, void** controlObjects, int* controlCount) {
868 void addAllControls(PortInfo* info, PortControlCreator* creator, void** controlObjects, int* controlCount) {
884 PortInfo* info = (PortInfo*) id;
890 TRACE4(">PORT_GetControls(id=%p, portIndex=%d). controlIDs=%p, maxControlCount=%d\n", id, portIndex, info->controlIDs, info->maxControlCount);
892 line = info->ports[portIndex];
895 if (!info->controlIDs) {
900 for (i = 0; i < info->dstLineCount; i++) {
901 MIXERLINE* thisLine = &(info->dstLines[i]);
902 maxCount += getControlCount(info->handle, thisLine, &muxCount);
905 for (i = 0; i < info->srcLineCount; i++) {
906 MIXERLINE* thisLine = &(info->srcLines[i]);
907 maxCount += getControlCount(info->handle, thisLine, &muxCount);
909 info->maxControlCount = maxCount;
911 info->controlIDs = (PortControlID*) malloc(sizeof(PortControlID) * maxCount);
918 info->muxData = (MIXERCONTROLDETAILS_BOOLEAN*) malloc(sizeof(MIXERCONTROLDETAILS_BOOLEAN) * muxCount);
920 if (!info->controlIDs || (muxCount && !info->muxData)) {
921 ERROR3("PORT_GetControls: info->controlIDs=%p, muxCount=%d, info->muxData=%p !!\n", info->controlIDs, muxCount, info->muxData);
925 if (info->maxControlCount == 0) {
928 controls = (void*) malloc(info->maxControlCount * sizeof(void*));
938 MIXERLINE* dstLine = findDestLine(info, line->dwDestination);
942 createMuxControl(info, creator, dstLine, line->dwLineID, controls, &controlCount);
945 createLineControls(info, creator, line, controls, &controlCount);
946 addCompoundControl(info, creator, line->szName, controls, &controlCount);
950 createLineControls(info, creator, line, controls, &controlCount);
951 addAllControls(info, creator, controls, &controlCount);
955 MIXERLINE* srcLine = &(info->srcLines[line->dwUser + i]);
957 createLineControls(info, creator, srcLine, controls, &controlCount);
958 addCompoundControl(info, creator, srcLine->szName, controls, &controlCount);