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

📄 gsm_impl.c

📁 IP网络语音通讯软件源代码. 不可多得的语音源代码
💻 C
字号:
/*
 * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
 * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for
 * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
 */

/* $Header: n:\\development/speak_freely/GSM/GSM_IMPL.C,v 1.1.1.1 1998/10/15 00:47:39 Administrator Exp $ */

#include "private.h"

#include "gsm.h"
#include "proto.h"

void gsm_implode P3((s, source, c), gsm s, gsm_signal * source, gsm_byte * c)
{
		/*		variable		size	index

				GSM_MAGIC		4		-

				LARc[0] 		6		0
				LARc[1] 		6		1
				LARc[2] 		5		2
				LARc[3] 		5		3
				LARc[4] 		4		4
				LARc[5] 		4		5
				LARc[6] 		3		6
				LARc[7] 		3		7

				Nc[0]			7		8
				bc[0]			2		9
				Mc[0]			2		10
				xmaxc[0]		6		11
				xmc[0]			3		12
				xmc[1]			3		13
				xmc[2]			3		14
				xmc[3]			3		15
				xmc[4]			3		16
				xmc[5]			3		17
				xmc[6]			3		18
				xmc[7]			3		19
				xmc[8]			3		20
				xmc[9]			3		21
				xmc[10] 		3		22
				xmc[11] 		3		23
				xmc[12] 		3		24

				Nc[1]			7		25
				bc[1]			2		26
				Mc[1]			2		27
				xmaxc[1]		6		28
				xmc[13] 		3		29
				xmc[14] 		3		30
				xmc[15] 		3		31
				xmc[16] 		3		32
				xmc[17] 		3		33
				xmc[18] 		3		34
				xmc[19] 		3		35
				xmc[20] 		3		36
				xmc[21] 		3		37
				xmc[22] 		3		38
				xmc[23] 		3		39
				xmc[24] 		3		40
				xmc[25] 		3		41

				Nc[2]			7		42
				bc[2]			2		43
				Mc[2]			2		44
				xmaxc[2]		6		45
				xmc[26] 		3		46
				xmc[27] 		3		47
				xmc[28] 		3		48
				xmc[29] 		3		49
				xmc[30] 		3		50
				xmc[31] 		3		51
				xmc[32] 		3		52
				xmc[33] 		3		53
				xmc[34] 		3		54
				xmc[35] 		3		55
				xmc[36] 		3		56
				xmc[37] 		3		57
				xmc[38] 		3		58

				Nc[3]			7		59
				bc[3]			2		60
				Mc[3]			2		61
				xmaxc[3]		6		62
				xmc[39] 		3		63
				xmc[40] 		3		64
				xmc[41] 		3		65
				xmc[42] 		3		66
				xmc[43] 		3		67
				xmc[44] 		3		68
				xmc[45] 		3		69
				xmc[46] 		3		70
				xmc[47] 		3		71
				xmc[48] 		3		72
				xmc[49] 		3		73
				xmc[50] 		3		74
				xmc[51] 		3		75
		*/


#define LARc	source

		*c++ =	 ((GSM_MAGIC & 0xF) << 4)				/* 1 */
			   | ((LARc[0] >> 2) & 0xF);
		*c++ =	 ((LARc[0] & 0x3) << 6)
			   | (LARc[1] & 0x3F);
		*c++ =	 ((LARc[2] & 0x1F) << 3)
			   | ((LARc[3] >> 2) & 0x7);
		*c++ =	 ((LARc[3] & 0x3) << 6)
			   | ((LARc[4] & 0xF) << 2)
			   | ((LARc[5] >> 2) & 0x3);
		*c++ =	 ((LARc[5] & 0x3) << 6)
			   | ((LARc[6] & 0x7) << 3)
			   | (LARc[7] & 0x7);

#define Nc		(source + 8)

		*c++ =	 ((Nc[0] & 0x7F) << 1)

#define bc		(source + 9)

			   | ((bc[0] >> 1) & 0x1);
		*c++ =	 ((bc[0] & 0x1) << 7)

#define Mc		(source + 10)

			   | ((Mc[0] & 0x3) << 5)

#define xmaxc	(source + 11)

			   | ((xmaxc[0] >> 1) & 0x1F);
		*c++ =	 ((xmaxc[0] & 0x1) << 7)

#define xmc 	(source + 12)

			   | ((xmc[0] & 0x7) << 4)
			   | ((xmc[1] & 0x7) << 1)
			   | ((xmc[2] >> 2) & 0x1);
		*c++ =	 ((xmc[2] & 0x3) << 6)
			   | ((xmc[3] & 0x7) << 3)
			   | (xmc[4] & 0x7);
		*c++ =	 ((xmc[5] & 0x7) << 5)					/* 10 */
			   | ((xmc[6] & 0x7) << 2)
			   | ((xmc[7] >> 1) & 0x3);
		*c++ =	 ((xmc[7] & 0x1) << 7)
			   | ((xmc[8] & 0x7) << 4)
			   | ((xmc[9] & 0x7) << 1)
			   | ((xmc[10] >> 2) & 0x1);
		*c++ =	 ((xmc[10] & 0x3) << 6)
			   | ((xmc[11] & 0x7) << 3)
			   | (xmc[12] & 0x7);

#undef	Nc
#define Nc		(source + 25 - 1)

		*c++ =	 ((Nc[1] & 0x7F) << 1)

#undef	bc
#define bc		(source + 26 - 1)

			   | ((bc[1] >> 1) & 0x1);
		*c++ =	 ((bc[1] & 0x1) << 7)

#undef	Mc
#define Mc		(source + 27 - 1)

			   | ((Mc[1] & 0x3) << 5)

#undef	xmaxc
#define xmaxc	(source + 28 - 1)

			   | ((xmaxc[1] >> 1) & 0x1F);
		*c++ =	 ((xmaxc[1] & 0x1) << 7)

#undef	xmc
#define xmc 	(source + 29 - 13)

			   | ((xmc[13] & 0x7) << 4)
			   | ((xmc[14] & 0x7) << 1)
			   | ((xmc[15] >> 2) & 0x1);
		*c++ =	 ((xmc[15] & 0x3) << 6)
			   | ((xmc[16] & 0x7) << 3)
			   | (xmc[17] & 0x7);
		*c++ =	 ((xmc[18] & 0x7) << 5)
			   | ((xmc[19] & 0x7) << 2)
			   | ((xmc[20] >> 1) & 0x3);
		*c++ =	 ((xmc[20] & 0x1) << 7)
			   | ((xmc[21] & 0x7) << 4)
			   | ((xmc[22] & 0x7) << 1)
			   | ((xmc[23] >> 2) & 0x1);
		*c++ =	 ((xmc[23] & 0x3) << 6)
			   | ((xmc[24] & 0x7) << 3)
			   | (xmc[25] & 0x7);

#undef	Nc
#define Nc		(source + 42 - 2) 

		*c++ =	 ((Nc[2] & 0x7F) << 1)					/* 20 */

#undef	bc
#define bc		(source + 43 - 2)

			   | ((bc[2] >> 1) & 0x1);
		*c++ =	 ((bc[2] & 0x1) << 7)

#undef	Mc
#define Mc		(source + 44 - 2)

			   | ((Mc[2] & 0x3) << 5)

#undef	xmaxc
#define xmaxc	(source + 45 - 2)

			   | ((xmaxc[2] >> 1) & 0x1F);
		*c++ =	 ((xmaxc[2] & 0x1) << 7)

#undef	xmc
#define xmc 	(source + 46 - 26)

			   | ((xmc[26] & 0x7) << 4)
			   | ((xmc[27] & 0x7) << 1)
			   | ((xmc[28] >> 2) & 0x1);
		*c++ =	 ((xmc[28] & 0x3) << 6)
			   | ((xmc[29] & 0x7) << 3)
			   | (xmc[30] & 0x7);
		*c++ =	 ((xmc[31] & 0x7) << 5)
			   | ((xmc[32] & 0x7) << 2)
			   | ((xmc[33] >> 1) & 0x3);
		*c++ =	 ((xmc[33] & 0x1) << 7)
			   | ((xmc[34] & 0x7) << 4)
			   | ((xmc[35] & 0x7) << 1)
			   | ((xmc[36] >> 2) & 0x1);
		*c++ =	 ((xmc[36] & 0x3) << 6)
			   | ((xmc[37] & 0x7) << 3)
			   | (xmc[38] & 0x7);

#undef	Nc
#define Nc		(source + 59 - 3)

		*c++ =	 ((Nc[3] & 0x7F) << 1)

#undef	bc
#define bc		(source + 60 - 3)

			   | ((bc[3] >> 1) & 0x1);
		*c++ =	 ((bc[3] & 0x1) << 7)

#undef	Mc
#define Mc		(source + 61 - 3)

			   | ((Mc[3] & 0x3) << 5)

#undef	xmaxc
#define xmaxc	(source + 62 - 3)

			   | ((xmaxc[3] >> 1) & 0x1F);
		*c++ =	 ((xmaxc[3] & 0x1) << 7)

#undef	xmc
#define xmc 	(source + 63 - 39)

			   | ((xmc[39] & 0x7) << 4)
			   | ((xmc[40] & 0x7) << 1)
			   | ((xmc[41] >> 2) & 0x1);
		*c++ =	 ((xmc[41] & 0x3) << 6) 				/* 30 */
			   | ((xmc[42] & 0x7) << 3)
			   | (xmc[43] & 0x7);
		*c++ =	 ((xmc[44] & 0x7) << 5)
			   | ((xmc[45] & 0x7) << 2)
			   | ((xmc[46] >> 1) & 0x3);
		*c++ =	 ((xmc[46] & 0x1) << 7)
			   | ((xmc[47] & 0x7) << 4)
			   | ((xmc[48] & 0x7) << 1)
			   | ((xmc[49] >> 2) & 0x1);
		*c++ =	 ((xmc[49] & 0x3) << 6)
			   | ((xmc[50] & 0x7) << 3)
			   | (xmc[51] & 0x7);
}

⌨️ 快捷键说明

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