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

📄 depuncturing.c

📁 这个文件包括wimax中所有的编解码源代码
💻 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 + -