📄 depuncturing.c
字号:
/*****************************************************************************//* FIle Name : depuncturing.c *//* Description : WiMax OFDM FEC depuncturing for Decoder *//* Rate 0:1/2 1:2/3 2:3/4 3:5/6 *//* author : miffie *//* Date : Nov/07/05 *//* Copyright (c) 2005 miffie All rights reserved. *//*****************************************************************************/struct binaryset depuncturing (struct binaryset datain, char rate) {int ii ;int size_p ; //size for puncturedchar shifter ;char tmp1, tmp2 ;char *p , *q;char UNKNW = 8 ; //unknown data for punctured bitstruct binaryset bset0 ; //Main if ((q = (char *)malloc(2*datain.size*sizeof(char)) ) == NULL) { PRINTF( " malloc failed in depuncturing.c\n") ; } //fail else { //allocated PRINTF("depuncturing size=%x rate=%x\n" , datain.size, rate ) ; bset0.format = 1 ; // byte bset0.size = datain.size ; // bset0.data = q ; // ////////////////////////////////////////////// //puncturing Rate 0:1/2 1:2/3 2:3/4 3:5/6 ////////////////////////////////////////////// p = datain.data ; q=bset0.data ; size_p=0 ; switch ( rate ) {//switch case 1: { //2/3 for (ii=0;ii<bset0.size;ii++) { //for *q++ = *p++ ; size_p ++ ; if ((ii%3)==1) { *q++ = UNKNW ; size_p++ ; } //X2 } //for break ; } //2/3 case 2: { //3/4 for (ii=0;ii<bset0.size;ii++) { //for *q++ = *p++ ; size_p ++ ; if ((ii%2)==1) { *q++ = UNKNW ; size_p++ ; //X2, Y3 } } //for break ; } //3/4 case 3: { //5/6 for (ii=0;ii<bset0.size;ii++) { //for *q++ = *p++ ; size_p ++ ; if ((ii%6)==1) { *q++ = UNKNW ; size_p++ ; //X2 } else if ((ii%6)==3) { *q++ = UNKNW ; size_p++ ; //Y3 *q++ = UNKNW ; size_p++ ; //X4 } else if ((ii%6)==5) { *q++ = UNKNW ; size_p++ ; //Y5 } } //for break ; } //5/6 default : { //1/2 size_p = bset0.size ; for (ii=0;ii<bset0.size;ii++) { //for *q++ = *p++ ; } //for break ; } //1/2 }//switch bset0.size = size_p ; // } //allocated free ( datain.data ) ; return ( bset0 ) ;} //depuncturing
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -