这个版本是06年2月修改过的版本,在VC下面调试通过。<br /><br />注意:TraceBack长度等于输入数据的长度,在输入数据不太长的情况下获得很好的效果。<br /><br /><br />/*********************************************************************************************************<br />** 函数名称: convenc<br />** 功能描述: 卷积编码的通用编码函数,通过查表trillis得到。<br />** 输 入: DATAINF *pData: 描述待编码数据信息的指针。<br />** 输 出: 无<br />** 全局变量: 无<br />** 调用模块: 无<br />** 备 注:注意,这个模块的输入是以紧凑的8bit为单位(字节)<br />** 输出数据是以码元为单位,需要特别注意!<br />**<br />** 作 者: DSP探路者<br />** 日 期: 2005年11月18日<br />**-------------------------------------------------------------------------------------------------------<br />** 修改人:<br />** 日 期:<br />**------------------------------------------------------------------------------------------------------<br />********************************************************************************************************/<br />void convenc(INT8U *pin, INT8U *pout, INT16U BitNum)<br />{<br /> INT16U bit_num_cnt, bit_cnt;<br /> INT8U data_in, data_out, bit_in;<br /> INT8U CURSTATE, NEXTSTATE;<br /><br /> CURSTATE = 0;<br />// search state change trace and output data as input<br /> for(bit_num_cnt = 0; bit_num_cnt < BitNum ; bit_num_cnt++)<br /> {<br /> data_in = *pin++;<br /> //for(bit_cnt = 8; bit_cnt > 0; bit_cnt--)<br /> //{<br /> //bit_in = (data_in>>(bit_cnt-1)) & 0x01;<br /> bit_in = data_in;<br /> NEXTSTATE = trellissta[(CURSTATE<<1) + bit_in];<br /> data_out = trellisout[(CURSTATE<<1) + bit_in];<br /> *pout++ = data_out;<br /> CURSTATE = NEXTSTATE;<br /> //data_in = data_in << 1;<br /> //}<br /> }<br />}<br /><br /><br /><br /> 相关链接:<a href='http://www.evmdiy.com/viewthread.php?tid=153&extra=page%3D1'>http://www.evmdiy.com/viewthread.php?tid=153&extra=page%3D1</a> |
|