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

📄 channel.c

📁 4.8k/s速率FS1016标准语音压缩源码
💻 C
字号:
          /*LINTLIBRARY*/          /*PROTOLIB1*/#include "main.h"#include <math.h>#include "channel.h"#include <stdio.h>#include <stdlib.h>#define	Random()	((float)(rand())/(float)(RAND_MAX))/*double	drand48();#define	Random()	drand48()*//***************************************************************************                                                                         ** ROUTINE*		Channel** FUNCTION*		CELP channel* SYNOPSIS*		channel(ChannelIn, ChannelType, NumBits, BitError, ChannelOut)**   formal**                       data    I/O*       name            type    type    function*       -------------------------------------------------------------------*	ChannelIn	int	 i	Frame of input channel data*	ChannelType	int	 i	Type of channel conditions*	NumBits		int	 i	Number of bits being transmitted*	BitError	char	 i	Name of bit error pattern file*	ChannelOut	int	 o	Frame of output channel data***************************************************************************/void Channel(int 	ChannelIn[],int	ChannelType,int	NumBits,char	BitError[],float	ErrorRate,int	frame_num,int 	**ChannelOut){int	i;float	rand_num;/*  Memory will have to be allocated for ChannelOut to perform other channel conditions */	if (ChannelType != CLEAR && ChannelType != OTHER)  {	  if (frame_num == 1)	{	    *ChannelOut = (int *) calloc(NumBits, sizeof(int));	    if(*ChannelOut == NULL)	{	      fprintf(stderr, "Unable to Calloc for ChannelOut\n");	      exit(-1);	    }	  }	  for(i=0; i< NumBits; i++)	    (*ChannelOut)[i] = ChannelIn[i];	}	switch(ChannelType)	{	  case CLEAR:/*  Clear Channel */		*ChannelOut = ChannelIn;		break;	  case RBER:/*  Add Random Bit Errors */		for (i=0; i< NumBits; i++)		  rand_num = Random();			  if (Random() < ErrorRate)	{		    (*ChannelOut)[i] ^= 0x1;		  }		break;	  case RBLER:/*  Add Pseudo-Block Random Errors */		for(i=0; i< NumBits; i++)		  if(Random() < ErrorRate)		    if (Random() < 0.5)		      (*ChannelOut)[i] ^= 0x1;		break;	  case OTHER:		if(frame_num==1)		  printf("Other Error rate not written, using clear channel\n");		*ChannelOut = ChannelIn;		break;	  default:/*  Channel is not properly defined */		printf("Channel is Dead\n");		exit(876);		break;	}}

⌨️ 快捷键说明

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