diff --git a/csdr.c b/csdr.c index 930cd8f..ec08e27 100644 --- a/csdr.c +++ b/csdr.c @@ -502,26 +502,28 @@ int main(int argc, char *argv[]) } if(!strcmp(argv[1],"convert_f_s24")) { - int bigendian = argc>2 && !strcmp(argv[2],"--bigendian"); + int bigendian = (argc>2) && (!strcmp(argv[2],"--bigendian")); + unsigned char* s24buffer = (unsigned char*)malloc(sizeof(unsigned char)*the_bufsize*3); if(!sendbufsize(initialize_buffers())) return -2; for(;;) { FEOF_CHECK; FREAD_R; - convert_f_s24(input_buffer, (unsigned char*)output_buffer, the_bufsize, bigendian); - fwrite(output_buffer, sizeof(unsigned char)*3, the_bufsize, stdout); + convert_f_s24(input_buffer, s24buffer, the_bufsize, bigendian); + fwrite(s24buffer, sizeof(unsigned char)*3, the_bufsize, stdout); TRY_YIELD; } } if(!strcmp(argv[1],"convert_s24_f")) { - int bigendian = argc>2 && !strcmp(argv[2],"--bigendian"); + int bigendian = (argc>2) && (!strcmp(argv[2],"--bigendian")); + unsigned char* s24buffer = (unsigned char*)malloc(sizeof(unsigned char)*the_bufsize*3); if(!sendbufsize(initialize_buffers())) return -2; for(;;) { FEOF_CHECK; - fread(input_buffer, sizeof(unsigned char)*3, the_bufsize, stdin); - convert_s24_f((unsigned char*)input_buffer, output_buffer, the_bufsize, bigendian); + fread(s24buffer, sizeof(unsigned char)*3, the_bufsize, stdin); + convert_s24_f(s24buffer, output_buffer, the_bufsize, bigendian); FWRITE_R; TRY_YIELD; } diff --git a/libcsdr.c b/libcsdr.c index 1c77b6c..737a786 100644 --- a/libcsdr.c +++ b/libcsdr.c @@ -1006,17 +1006,17 @@ void convert_f_s24(float* input, unsigned char* output, int input_size, int bige { int temp=input[i]*(INT_MAX>>8); unsigned char* ptemp=(unsigned char*)&temp; - output[k++]=*(ptemp+2); - output[k++]=*(ptemp+1); output[k++]=*ptemp; + output[k++]=*(ptemp+1); + output[k++]=*(ptemp+2); } else for(int i=0;i>8); unsigned char* ptemp=(unsigned char*)&temp; - output[k++]=*ptemp; - output[k++]=*(ptemp+1); output[k++]=*(ptemp+2); + output[k++]=*(ptemp+1); + output[k++]=*ptemp; } } @@ -1025,13 +1025,13 @@ void convert_s24_f(unsigned char* input, float* output, int input_size, int bige int k=0; if(bigendian) for(int i=0;i