depuncturing.c

来自「This model is just testing an idea of MI」· C语言 代码 · 共 66 行

C
66
字号
/*****************************************************************************//*   FIle Name : depuncturing.c                                              *//*   Description : WLAN FEC depuncturing for Decoder                         *//*                 Rate 0:1/2 1:2/3 2:3/4                                    *//*   author : miffie                                                         *//*   Date   : aug/04/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       /////////////////////////////////////////       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)==2) { *q++ = UNKNW ; size_p++ ; }                   } //for                   break ;                 } //2/3         case 2: { //3/4                   for (ii=0;ii<bset0.size;ii++) { //for                     *q++ = *p++ ; size_p ++ ;                     if ((ii%4)==2) {                         *q++ = UNKNW ; size_p++ ;                         *q++ = UNKNW ; size_p++ ;                      }                   } //for                   break ;                 } //3/4         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 + =
减小字号Ctrl + -
显示快捷键?