#include "Buffer.h"
#include "rcpc.h"
#include "bytes.h"
Go to the source code of this file.
Defines | |
#define | MAXINPUTBITS 1024 |
Functions | |
int | rcpcc16_encode () |
int | rcpcc16_decode () |
int | rcpcc16_getK () |
void | Makeppx (int Rtype) |
void | GetRcpcBytes (buf_rcpc *b1, int *rcpc_bits1, int *rcpc_bits2, int Rtype, int N) |
unsigned char * | DecodeVideoPacket (int Rtype, int N, buf_rcpc *b1, int *CRC_flag, int *K, int CRCBytes, int arq_type) |
void | rcpcc_coder () |
void | rcpcc_decoder () |
double | distance () |
void | ConvBits2Bytes (int *bit_array, unsigned char *byte_array, int N) |
void | ConvBytes2Bits (unsigned char *byte_array, int *bit_array, int N) |
void | MakeCRCBytes (byte *in_bits, int info_dim, int CRC_dim) |
int | CheckCRC (byte *out_bits, int info_dim, int CRC_dim) |
buf_rcpc * | MakeNewVideoPacket (int Rtype, int N, Buffer *VideoBuff, int CRCBytes, int arq_type) |
|
Definition at line 29 of file uep_rcpcc.h. |
|
Referenced by DecodeVideoPacket(). |
|
Referenced by DecodeVideoPacket(), and rcpcc16_encode(). |
|
Definition at line 233 of file uep_rcpcc.c. Referenced by GetRcpcBits(). 00234 { 00235 int i, j; 00236 00237 for (i =0;i< N; i++){ 00238 for (j=0; j< 8; j++){ 00239 bit_array[i* 8 + j] = (byte_array[i] >> (7-j)) &1; 00240 } 00241 } 00242 }
|
|
Definition at line 109 of file VidDepacket.c. References CheckCRC(), ConvBits2Bytes(), buf_rcpc::count, GetRcpcBits(), Makeppx(), ppx, rcpcc16_decode(), rcpcc16_getK(), and TAILBITS. 00112 { 00113 int *out_bits; 00114 int i, j; 00115 int *rcpc_bits1; 00116 int *rcpc_bits2; 00117 int step = 32 - Rtype; 00118 int new_Rtype; 00119 unsigned char *info_bytes; 00120 00121 00122 /* bits on the current row */ 00123 rcpc_bits1= (int *)malloc(N * 8 *sizeof(int)); 00124 if (rcpc_bits1 == NULL) { 00125 printf("DecodeVideoPacket () - error can't malloc rcpc_bits1\n"); 00126 } 00127 00128 /* bits on all rows */ 00129 rcpc_bits2= (int *)malloc(N * 8 * (b1->count) *sizeof(int)); 00130 if (rcpc_bits2 == NULL) { 00131 printf("DecodeVideoPacket () - error can't malloc rcpc_bits2\n"); 00132 } 00133 00134 (*K)=rcpcc16_getK(Rtype,N,CRCBytes); 00135 00136 info_bytes = (unsigned char *)calloc((*K)+CRCBytes, sizeof(unsigned char )); 00137 if (info_bytes == NULL) 00138 printf("DecodeVideoPacket () - error can't calloc info_bytes"); 00139 out_bits = (int *)calloc( ( (*K) + CRCBytes) * 8 + TAILBITS, sizeof(int) ); 00140 if (out_bits == NULL) 00141 printf("DecodeVideoPacket () - error can't calloc out_bits\n"); 00142 00143 00144 Makeppx(Rtype); 00145 00146 GetRcpcBits(b1, rcpc_bits1, rcpc_bits2, Rtype, N ); 00147 00148 00149 if ((b1->count) == 1) { 00150 00151 rcpcc16_decode(rcpc_bits1, out_bits, Rtype, N, ppx[0],CRCBytes); 00152 00153 ConvBits2Bytes(out_bits, info_bytes, (*K)+CRCBytes); 00154 00155 *CRC_flag = CheckCRC(info_bytes, (*K), CRCBytes); 00156 00157 } else if ((b1->count) > 1) { 00158 00159 /* 00160 * Do Type I ARQ 00161 */ 00162 if((arq_type == 3) || (arq_type == 1)) { 00163 00164 rcpcc16_decode(rcpc_bits1, out_bits, Rtype, N, ppx[b1->count - 1],CRCBytes); 00165 00166 ConvBits2Bytes(out_bits, info_bytes, (*K)+CRCBytes); 00167 00168 *CRC_flag = CheckCRC(info_bytes, (*K), CRCBytes); 00169 00170 } 00171 /* 00172 * Do Type II ARQ 00173 */ 00174 if (((*CRC_flag == 0) && (arq_type == 3)) || (arq_type==2)) { 00175 for (i=0; i< ( (*K) + CRCBytes) * 8 + TAILBITS ; i++) 00176 out_bits[i]= 0; 00177 00178 new_Rtype = Rtype - step*( (b1->count) -1); 00179 00180 rcpcc16_decode(rcpc_bits2, out_bits, new_Rtype, 00181 (b1->count)*N, px[new_Rtype],CRCBytes); 00182 00183 ConvBits2Bytes(out_bits, info_bytes, *K+CRCBytes); 00184 00185 *CRC_flag = CheckCRC(info_bytes, (*K), CRCBytes); 00186 00187 } 00188 } 00189 00190 00191 free(out_bits); 00192 free(rcpc_bits1); 00193 free(rcpc_bits2); 00194 00195 return info_bytes; 00196 }
|
|
Referenced by rcpcc_decoder(). |
|
|
|
Referenced by MakeNewVideoPacket(). |
|
Definition at line 22 of file Vidpacket.c. References buf_rcpc::block, bread(), debug, MakeCRCBytes(), rcpcc16_encode(), and rcpcc16_getK(). 00023 { 00024 int i, j; 00025 buf_rcpc *a1 = (buf_rcpc *)calloc(1, sizeof(buf_rcpc )); 00026 int K; 00027 unsigned char *vid_char; 00028 int *in_bits; 00029 00030 /* 00031 * return the number of bytes needed from the video buffer 00032 */ 00033 K=rcpcc16_getK(Rtype,N,CRCBytes); 00034 00035 if (debug >= 2) 00036 printf(" K = %d\n", K); 00037 00038 vid_char = (unsigned char *)calloc(K+CRCBytes , sizeof(char)); 00039 00040 for(i=0;i<K;i++) { 00041 bread(VideoBuff, &vid_char[i]); 00042 } 00043 00044 if (debug >= 5) { 00045 printf("vid_char at pack before CRC \n"); 00046 for (i=0; i< (K)+ CRCBytes; i++) 00047 printf("%c", vid_char[i]); 00048 printf("\n"); 00049 } 00050 00051 MakeCRCBytes(vid_char, K, CRCBytes); 00052 00053 00054 if (debug >= 2) { 00055 printf("vid_char at pack after CRC \n"); 00056 for (i=0; i< (K)+ CRCBytes; i++) 00057 printf("%c", vid_char[i]); 00058 printf("\n"); 00059 } 00060 00061 in_bits = (int *)malloc( ((K + CRCBytes) * 8) * sizeof(int)); 00062 00063 if (debug >= 2) 00064 printf("in_bits\n"); 00065 for (i=0; i< ((K+CRCBytes)*8); i++) { 00066 in_bits[i] = (vid_char[i/8] >> (7- (i%8) ) ) & 1; 00067 } 00068 00069 if (debug >= 2) 00070 printf(" after making the CRC bits\n"); 00071 00072 for (i=0; i< 4; i++) { 00073 a1->block[i] = (unsigned char *)calloc(N, sizeof(unsigned char)); 00074 if (debug >= 2) 00075 printf(" %d\n", a1->block[i] ); 00076 } 00077 00078 if (debug >= 2) 00079 printf(" before RCPC encoder\n"); 00080 rcpcc16_encode(in_bits,(K+CRCBytes)*8, a1, Rtype, N); 00081 if (debug >= 2) 00082 printf(" after RCPC encoder\n"); 00083 00084 free(vid_char); 00085 free(in_bits); 00086 00087 return a1; 00088 00089 }
|
|
Definition at line 8 of file VidDepacket.c. Referenced by DecodeVideoPacket(). 00009 { 00010 int i, j, k; 00011 int step = 32- Rtype; 00012 int row = 0; 00013 while (Rtype >=0) 00014 { 00015 if (row == 0){ 00016 for (i=0; i<8; i++) 00017 for (j=0; j< 4; j++) 00018 ppx[row][i][j] = px[Rtype][i][j]; 00019 } 00020 else 00021 { 00022 for (i=0; i<8; i++) 00023 for (j=0; j< 4; j++) 00024 ppx[row][i][j] = px[Rtype][i][j] - px[Rtype + step][i][j]; 00025 } 00026 Rtype = Rtype - step; 00027 row ++; 00028 } 00029 00030 if (debug >= 5) { 00031 printf("ppx\n"); 00032 for (i=0; i< 4; i++){ 00033 printf("row %d\n", i); 00034 for (j=0; j < 8; j++){ 00035 for (k=0; k< 4; k++) 00036 printf("%d ", ppx[i][j][k]); 00037 if (j <=6) 00038 printf(", "); 00039 } 00040 printf("\n "); 00041 } 00042 } 00043 }
|
|
Referenced by DecodeVideoPacket(). |
|
Referenced by MakeNewVideoPacket(). |
|
Referenced by DecodeVideoPacket(), MakeNewVideoPacket(), and rcpcc16_decode(). |
|
Referenced by rcpcc16_encode(). |
|
Referenced by rcpcc16_decode(). |