⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frame.c

📁 g729 coding ipaddressing
💻 C
📖 第 1 页 / 共 5 页
字号:
    }
    for (i = 0; i < multiMemberships; i++) {
    	char psn[24], rcr[MAX_HOST];
    	
    	wsprintf(psn, Format(3), i + 1);
    	GetPrivateProfileString(cg, psn, "", rcr,
    		sizeof rcr, pfn);
    	multiAddr[i].s_addr = inet_addr(rcr);
    	wsprintf(psn, Format(4), i + 1);
    	GetPrivateProfileString(cg, psn, "", rcr, sizeof rcr, pfn);
    	multiName[i] = NULL;
    	if (strlen(rcr) > 0) {
    		LPSTR rcon = (LPSTR) GlobalAllocPtr(GPTR, strlen(rcr) + 1);
    		
    		if (rcon!= NULL) {
    			strcpy(rcon, rcr);
    			multiName[i] = rcon;
    		} 
    	} 
    }
    multiLoop = GetPrivateProfileInt(cg, rstring(IDS_PF_LOOPBACK), TRUE, pfn);
    multicastJoin(hwnd, TRUE);
#endif    
    
    //	Restore compression modes
    
#define BoolProfile(var, section, itemname, defval) var = GetPrivateProfileInt(section, itemname, defval, pfn)     
    strcpy(cg, rstring(IDS_PF_COMPRESSION));
    BoolProfile(compression, cg, rstring(IDS_PF_COMP_SIMPLE), FALSE);
    BoolProfile(gsmcompress, cg, rstring(IDS_PF_COMP_GSM), TRUE);
    BoolProfile(adpcmcompress, cg, rstring(IDS_PF_COMP_ADPCM), FALSE);
    BoolProfile(lpccompress, cg, rstring(IDS_PF_COMP_LPC), FALSE);
	BoolProfile(lpc10compress, cg, rstring(IDS_PF_COMP_LPC10), FALSE);
	BoolProfile(celpcompress, cg, rstring(IDS_PF_COMP_CELP), FALSE);
    
    //	Restore transmit protocol
    
    strcpy(cg, rstring(IDS_PF_PROTOCOL));
    protocolXmit = protocolSent = GetPrivateProfileInt(cg, rstring(IDS_PF_PROTOCOL_XMIT), PROTOCOL_SPEAKFREE, pfn);
	BoolProfile(protocolAuto, cg, rstring(IDS_PF_PROTOCOL_SEND_RECEIVED), TRUE);
	robust = GetPrivateProfileInt(cg, rstring(IDS_PF_ROBUST), TRUE, pfn);
	
	//	Encryption modes
	
	{
		static char pk_package_name[12];		// Public key package name

		strcpy(cg, rstring(IDS_PF_ENCRYPTION_MODES));
		GetPrivateProfileString(cg, rstring(IDS_PF_PUBLIC_KEY), rstring(IDS_PF_PUBLIC_KEY_PGP), pk_package_name,
    			sizeof pk_package_name, pfn);
    	if (strcmp(pk_package_name, rstring(IDS_PF_PUBLIC_KEY_PGP)) == 0) {
    		pk_package = PGP;
    	} else if (strcmp(pk_package_name, rstring(IDS_PF_PUBLIC_KEY_GPG)) == 0) {
    		pk_package = GPG;
    	} else {
    		pk_package = Unspecified;
    	}
    }

#ifdef MODEM
     
    //	Restore modem configuration and initialise if enabled
    
    strcpy(cg, rstring(IDS_PF_MODEM));
    BoolProfile(modemEnable, cg, rstring(IDS_PF_ENABLE), FALSE);
    GetPrivateProfileString(cg, rstring(IDS_PF_PORT), "COM1", commport,
    		sizeof commport, pfn);
    GetPrivateProfileString(cg, rstring(IDS_PF_BAUDRATE), "19200", baudrate,
    		sizeof baudrate, pfn);
    GetPrivateProfileString(cg, rstring(IDS_PF_MODEM_INIT_STRING), "ATQ0V1E1S0=1",
    		modemInitString, sizeof modemInitString, pfn);
	BoolProfile(modemShowRant, cg, rstring(IDS_PF_SHOW_RANT), TRUE);
#endif	
	
	//	Restore answering machine settings
	
    strcpy(cg, rstring(IDS_PF_ANSWER));
	GetPrivateProfileString(cg, rstring(IDS_PF_FILE_NAME), "", answerFileName,
    		sizeof answerFileName, pfn);
	GetPrivateProfileString(cg, rstring(IDS_PF_OUT_FILE_NAME), "", answerOutFileName,
    		sizeof answerOutFileName, pfn);
   	BoolProfile(answerRecord, cg, rstring(IDS_PF_RECORD_MESSAGES), FALSE);
   	
	//	Restore show your face settings
	
	GetPrivateProfileString(rstring(IDS_PF_FACE), rstring(IDS_PF_FILE_NAME), "", faceFileName,
    		sizeof faceFileName, pfn);
   	BoolProfile(faceShow, rstring(IDS_PF_FACE), rstring(IDS_PF_SHOW_FACES), TRUE);	
	    	
	//	Restore miscellaneous configuration parameters
	
    GetPrivateProfileString(rstring(IDS_PF_RING), rstring(IDS_PF_FILE_NAME), "",
    		ringFileName, sizeof ringFileName, pfn);
	jitterBuf = GetPrivateProfileInt(rstring(IDS_PF_PREFERENCES), rstring(IDS_PF_JITTER), jitterBuf, pfn);
	
	//	Restore window display configuration parameters
//    BoolProfile(lookWho_sTalking, rstring(IDS_PF_PREFERENCES), rstring(IDS_PF_LOOKWHO), FALSE);
#define WindowPref(var, prefName)	BoolProfile(var, rstring(IDS_PF_DISPLAY_MODES), rstring(IDS_PF_OPT_ ## prefName), FALSE)
	WindowPref(lookWho_sTalking, LOOK_WHO);
	WindowPref(openOnAnswerMessage, OPEN_ON_ANSWER_MESSAGE);
	WindowPref(lurkInTray, USE_TRAY_ICON);
	WindowPref(hideWhenMinimised, HIDE_WHEN_MINIMISED);
	WindowPref(startMinimised, START_MINIMISED);
#undef WindowPref

	//	Restore Look Who's Listening parameters
	
	GetPrivateProfileString(rstring(IDS_PF_LWL_TELL), rstring(IDS_PF_SERVER), "",
    		lwl_s_server, sizeof lwl_s_server, pfn);
	GetPrivateProfileString(rstring(IDS_PF_LWL_TELL), rstring(IDS_PF_EMAIL), "",
    		lwl_s_email, sizeof lwl_s_email, pfn);
	GetPrivateProfileString(rstring(IDS_PF_LWL_TELL), rstring(IDS_PF_FULLNAME), "",
    		lwl_s_fullname, sizeof lwl_s_fullname, pfn);
	GetPrivateProfileString(rstring(IDS_PF_LWL_TELL), rstring(IDS_PF_PHONE), "",
    		lwl_s_phone, sizeof lwl_s_phone, pfn);
	GetPrivateProfileString(rstring(IDS_PF_LWL_TELL), rstring(IDS_PF_LOCATION), "",
    		lwl_s_location, sizeof lwl_s_location, pfn);
    BoolProfile(lwl_s_publish, rstring(IDS_PF_LWL_TELL), rstring(IDS_PF_PUBLISH), FALSE);
    BoolProfile(lwl_s_exact, rstring(IDS_PF_LWL_TELL), rstring(IDS_PF_EXACT), FALSE);

	GetPrivateProfileString(rstring(IDS_PF_LWL_ASK), rstring(IDS_PF_SERVER), "",
    		lwl_a_server, sizeof lwl_a_server, pfn);
    BoolProfile(lwl_a_exact, rstring(IDS_PF_LWL_ASK), rstring(IDS_PF_EXACT), FALSE);
    		
    //	Restore bug workaround parameters
    
    strcpy(cg, rstring(IDS_PF_WORKAROUNDS));
    BoolProfile(alwaysBindSocket, cg, rstring(IDS_PF_ALWAYS_BIND), FALSE);	
    BoolProfile(waNetNoConnect, cg, rstring(IDS_PF_NET_NO_CONNECT), FALSE);	
    BoolProfile(waNetUseSend, cg, rstring(IDS_PF_NET_USE_SEND), FALSE);	
    BoolProfile(waNetMultiTTLisChar, cg, rstring(IDS_PF_MULTICAST_CHAR_ARG), FALSE);	
    BoolProfile(waNetNoOutOverflow, cg, rstring(IDS_PF_NO_OUT_OVERFLOW), FALSE);	
    BoolProfile(waNetNoMsgLoopIns, cg, rstring(IDS_PF_NO_MSG_LOOP), FALSE);	
    waNetSynchronousGetHostname = GetPrivateProfileInt(cg, rstring(IDS_PF_SYNC_HOSTNAME), 2, pfn);
    
    BoolProfile(waProtNoHeartbeat, cg, rstring(IDS_PF_WA_NO_HEARTBEAT), FALSE);    
    BoolProfile(waProtUseLargerRTCPackets, cg, rstring(IDS_PF_WA_RTP_LARGER_PKTS), FALSE);    
    BoolProfile(waProtNoVAT, cg, rstring(IDS_PF_WA_NO_VAT), FALSE);    
    BoolProfile(waProtNoRTP, cg, rstring(IDS_PF_WA_NO_RTP), FALSE);    
    BoolProfile(waProtNoRTCPCrypt, cg, rstring(IDS_PF_WA_NO_RTCP_CRYPT), FALSE);    
    	
    BoolProfile(waAudioHalf, cg, rstring(IDS_PF_AUDIO_HALF_DUPLEX), FALSE);	
    BoolProfile(waAudio11025, cg, rstring(IDS_PF_AUDIO_SAMPLE_11025), FALSE);
    BoolProfile(waAudioRingMaxVolume, cg, rstring(IDS_PF_RING_VOLUME), FALSE);
    BoolProfile(waAudioNoOutputRateAdjustment, cg, rstring(IDS_PF_NO_OUTPUT_RATE_ADJUSTMENT), FALSE);
    BoolProfile(waAudioBeepOnTransmit, cg, rstring(IDS_PF_BEEP_ON_TRANSMIT), FALSE);
    waAudioInDevice = GetPrivateProfileInt(cg, rstring(IDS_PF_AUDIO_IN_DEVICE), WAVE_MAPPER, pfn);
    waAudioOutDevice = GetPrivateProfileInt(cg, rstring(IDS_PF_AUDIO_OUT_DEVICE), WAVE_MAPPER, pfn);
	waNetSynchronousGetHostnameAction = (waNetSynchronousGetHostname == 2) ? isPC_NFS :
											waNetSynchronousGetHostname;

	// Load the RLE and VOX parameters
	
	load_vox_params();

	//	Load audio monitor parameters
	
	strcpy(cg, rstring(IDS_PF_MONITOR));	
	BoolProfile(spectrumBarGraph, cg, rstring(IDS_PF_MON_BARGRAPH), TRUE);
	BoolProfile(spectrumVoicePrint, cg, rstring(IDS_PF_MON_VOICEPRINT), FALSE);
	BoolProfile(spectrumTransmitOnly, cg, rstring(IDS_PF_MON_TRANSMIT), FALSE);
	BoolProfile(spectrumReceiveOnly, cg, rstring(IDS_PF_MON_RECEIVE), FALSE);
	BoolProfile(spectrumMaxEnergy, cg, rstring(IDS_PF_MON_ENV_MAX), FALSE);

#undef BoolProfile
	useSendNotSendto = waNetUseSend; 

    //	Check out the audio hardware
    
    halfDuplex = isHalfDuplex(hwnd);

    //  Create the timeout timer

    if (SetTimer(hwnd, FRAME_TIMER_ID, 1000, NULL) == 0) {
        MsgBox(NULL, MB_ICONSTOP | MB_OK, Format(15));
        return -1;
    }
	    	
	//	Calculate packet size based on selected modes
	
    currentInputLength = inputBufferLength();
    currentInputSamples = inputSampleCount();	

    //  Get textmetric data

    hdc = GetDC(hwnd);
	ofont = SelectObject(hdc, GetStockObject(ANSI_VAR_FONT));
    GetTextMetrics(hdc, &tm);
	SelectObject(hdc, ofont);
    ReleaseDC(hwnd, hdc);

    tmAveCharWidth = (INT) tm.tmAveCharWidth;
    tmHeight = (INT) tm.tmHeight;
    
    DragAcceptFiles(hwnd, TRUE);
    
#ifdef TRAY
	//	Create notification icon in system tray
	
	if (lurkInTray) {
		trayIconWindow = createTrayIcon();
		updateTrayToolTipText();
	}
#endif
    
    /*	If an answering machine message file was named, open
    	it.  This doesn't imply we're recording messages; that's
    	controlled by answerRecord.  */
    
    if (answerFileName[0] != 0) {
		answerOpen();
	}
	
	//	Open the face image file, if any
	
	V openFaceFile(hwnd);

	/*	If we're publishing our information with a Look Who's Listening
		server, establish contact with it.  */
		
	V lwl_reconnect(hwnd);

	//	Finally, open the input sockets for business.
	
    if (WSAAsyncSelect(sCommand, hwnd, WM_SOCKET_SELECT, FD_READ) != 0) {
        serr = WSAGetLastError();
    }
    if (serr != 0) {
        MsgBox(NULL, MB_ICONSTOP | MB_OK, Format(14),
                serr, SockerrToString(serr));
    }	
    if (WSAAsyncSelect(sControl, hwnd, WM_SOCKET_CONTROL, FD_READ) != 0) {
        serr = WSAGetLastError();
    }
    if (serr != 0) {
        MsgBox(NULL, MB_ICONSTOP | MB_OK, Format(14),
                serr, SockerrToString(serr));
    }

	createSuccessful = TRUE;	
    return TRUE;
}

/*  onCommand  --  Dispatch WM_COMMAND messages.  Some are processed
				   at the frame level, some sent to the MDI client,
				   and others forwarded to the active MDI connection
				   window. */

static VOID onCommand(HWND hwnd, INT id, HWND hwndCtl, UINT codeNotify)
{
	if (id > IDM_CUSTOM && id <= (IDM_CUSTOM + rememberedConnections)) {
		newConnection(hwnd, rememberedConnection[(id - IDM_CUSTOM) - 1], NULL);
		return;
	}

    switch (id) {
    
	    case IDM_CONNECTION_NEW:
	        newConnection(hwnd, NULL, NULL);
	        break;
	    	
	    case IDM_CONN_OPEN:
	     	{
	     		OPENFILENAME ofn;
	     		char cfName[MAX_PATH];
	     		
	            memset(&ofn, 0, sizeof(ofn));
				ofn.lStructSize = sizeof(OPENFILENAME);
				ofn.hwndOwner = hwnd;
				ofn.lpstrFilter = rfilter(IDS_T_CONNECTION_FILTER);
				ofn.lpstrCustomFilter = NULL;
				cfName[0] = 0;
				ofn.lpstrFile = (LPSTR) cfName;
				ofn.nMaxFile = sizeof cfName;
				ofn.lpstrInitialDir = NULL;
				ofn.lpstrTitle = rstring(IDS_T_CONNECTION_OPEN_TITLE);
				ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_SHOWHELP;
				fileHelpKey = rstring(IDS_HELP_OPEN_CONNECTION);
				if (GetOpenFileName((LPOPENFILENAME) &ofn) == 0) {
					break;
				}
				newConnection(hwnd, cfName, NULL);
	     	}
	    	break;
	    	
	    case IDM_CONN_SAVE_AS:
	     	{
	     		OPENFILENAME ofn;
	     		HWND cWnd = getActiveConnection();
	     		
	     		if (cWnd != NULL) {
		     		LPCLIENT_DATA d = CLIENTPTR(cWnd);
	     		
					d->timeout = -1;				// Make connection immortal
		            memset(&ofn, 0, sizeof(ofn));
					ofn.lStructSize = sizeof(OPENFILENAME);
					ofn.hwndOwner = hwnd;
					ofn.lpstrDefExt = "SFX";
					ofn.lpstrFilter = rfilter(IDS_T_CONNECTION_FILTER);
					ofn.lpstrCustomFilter = NULL;
					d->szFile[0] = 0;
					ofn.lpstrFile = (LPSTR) d->connectionFileName;
					ofn.nMaxFile = sizeof d->connectionFileName;
					ofn.lpstrInitialDir = NULL;
					ofn.lpstrTitle = rstring(IDS_T_CONNECTION_SAVE_TITLE);
					ofn.Flags = OFN_NOREADONLYRETURN | OFN_OVERWRITEPROMPT |
								OFN_HIDEREADONLY | OFN_SHOWHELP;
					fileHelpKey = rstring(IDS_HELP_SAVE_CONNECTION);
					if (GetSaveFileName((LPOPENFILENAME) &ofn) == 0) {
						break;
					}
				}
	     	}
	     	//	Wheee!!!  Note fall-through
	     	
	     	case IDM_CONN_SAVE:
	     	{
	     		HWND cWnd = getActiveConnection();
	     		
	     		if (cWnd != NULL) {
		     		LPCLIENT_DATA d = CLIENTPTR(cWnd);
		     		char mcs[10], pno[10];
		     		
		     		wsprintf(mcs, Format(5), d->multicast_scope);
		     		wsprintf(pno, Format(5), d->port);
					d->timeout = -1;				// Make connection immortal
		     		if (WritePrivateProfileString(rstring(IDS_PF_HOST), rstring(IDS_PF_HOST_NAME),
		     				d->szHost, d->connectionFileName) == 0 ||
		     			WritePrivateProfileString(rstring(IDS_PF_HOST), rstring(IDS_PF_NETADDR),
		     				inet_ntoa(d->inetSock.sin_addr), d->connectionFileName) == 0 ||
		     			WritePrivateProfileString(rstring(IDS_PF_HOST), rstring(IDS_PF_PORT_NUMBER),
		     				pno, d->connectionFileName) == 0 ||
		     			WritePrivateProfileString(rstring(IDS_PF_DEBUG), rstring(IDS_PF_DEBUGGING),
		     				d->debugging ? kS1 : kS0, d->connectionFileName) == 0 ||
		     			WritePrivateProfileString(rstring(IDS_PF_DEBUG), rstring(IDS_PF_LOOPBACK),
		     				d->loopback ? kS1 : kS0, d->connectionFileName) == 0 ||
		     			WritePrivateProfileString(rstring(IDS_PF_MULTICAST), rstring(IDS_PF_SCOPE),
		     				mcs, d->connectionFileName) == 0 ||
		     			WritePrivateProfileString(rstring(IDS_PF_ENCRYPTION), rstring(IDS_PF_SAVE_KEYS),
		     				d->saveKeys ? kS1 : kS0, d->connectionFileName) == 0 ||
		     			WritePrivateProfileString(rstring(IDS_PF_ENCRYPTION), rstring(IDS_PF_PGP_USER_NAMES),
		     				d->opgpUserList, d->connectionFileName) == 0 ||
		     			(!d->saveKeys ? 0 : (
			     			WritePrivateProfileString(rstring(IDS_PF_ENCRYPTION), rstring(IDS_PF_DES_KEY),
			     				d->desKeyString, d->connectionFileName) == 0 ||
			     			WritePrivateProfileString(rstring(IDS_PF_ENCRYPTION), rstring(IDS_PF_IDEA_KEY),
			     				d->ideaKeyString, d->connectionFileName) == 0 ||
			     			WritePrivateProfileString(rstring(IDS_PF_ENCRYPTION), rstring(IDS_PF_BLOWFISH_KEY),
			     				d->blowfishKeyString, d->connectionFileName) == 0 ||
			     			WritePrivateProfileString(rstring(IDS_PF_ENCRYPTION), rstring(IDS_PF_AES_KEY),
			     				d->aesKeyString, d->connectionFileName) == 0 ||
		     				WritePrivateProfileString(rstring(IDS_PF_ENCRYPTION), rstring(IDS_PF_AES_KEY_HEX),
		     					d->aesKeyHex ? kS1 : kS0, d->connectionFileName) == 0 ||
			     			WritePrivateProfileString(rstring(IDS_PF_ENCRYPTION), rstring(IDS_PF_KEY_FILE),
			     				d->otpFileName, d->connectionFileName) == 0))) {
				        	MessageBox(hwnd, rstring(IDS_T_CONN_SAVE_ERR), NULL,
						   		MB_OK | MB_ICONEXCLAMATION);
		     		} else {
	    				rememberNewConnection(d->connectionFileName);
		     		}
		     	}
		    }
	    	break;	    	
	        
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -