sound* wav_load_file(char* filename) { sound* s = malloc(sizeof(sound)); SDL_AudioSpec spec; if( SDL_LoadWAV(filename, &spec, (Uint8**)&s->data, (Uint32*)&s->length) == NULL) { error("Unable to load sound file %s", filename); } if (spec.freq != 44100) { warning("Sound file %s is %f, not 44.1 kHz. May sound incorrect", filename, (spec.freq)/1000.0f); } if (spec.channels != 1) { warning("Sound file %s has %i channels. Currently only mono sounds supported.", filename, spec.channels); } if ((spec.format != AUDIO_S16LSB) && (spec.format != AUDIO_S16MSB)) { error("Unsupported sound format for file %s, id %i.", filename, spec.format); } if (spec.format != AUDIO_S16SYS) { flip_endian(s->data, s->length); } return s; }
int write_number_to_aiff(void *what, size_t size, FILE *out){ void *temp = malloc(size); if(!temp) return UNABLE_TO_ALLOCATE_MEMORY; memcpy(temp, what, size); flip_endian((char*)temp, size); fwrite(temp, size, 1, out); free(temp); return GOOD; }
size_t fread_RawClonePair(RawClonePair *ary, size_t count, FILE *pInput) { size_t successfullyReadCount = 0; for (size_t i = 0; i < count; ++i) { RawClonePair &data = ary[i]; size_t c = FREAD(&data, sizeof(RawClonePair), 1, pInput); if (c == 0) { break; } flip_endian(data.left.file); flip_endian(data.left.begin); flip_endian(data.left.end); flip_endian(data.right.file); flip_endian(data.right.begin); flip_endian(data.right.end); ++successfullyReadCount; } return successfullyReadCount; }
size_t fwrite_RawClonePair(const RawClonePair *ary, size_t count, FILE *pOutput) { size_t successfullyWrittenCount = 0; for (size_t i = 0; i < count; ++i) { RawClonePair data = ary[i]; flip_endian(data.left.file); flip_endian(data.left.begin); flip_endian(data.left.end); flip_endian(data.right.file); flip_endian(data.right.begin); flip_endian(data.right.end); size_t c = FWRITE(&data, sizeof(RawClonePair), 1, pOutput); if (c == 0) { break; } ++successfullyWrittenCount; } return successfullyWrittenCount; }
static void flip_header(struct nifti_1_header *hHeader) { flip_endian(&hHeader->sizeof_hdr, sizeof(int32_t), 1); flip_endian(&hHeader->extents, sizeof(int32_t), 1); flip_endian(&hHeader->session_error, sizeof(int16_t), 1); flip_endian(&hHeader->dim, sizeof(int16_t), 8); flip_endian(&hHeader->intent_p1, sizeof(float), 1); flip_endian(&hHeader->intent_p2, sizeof(float), 1); flip_endian(&hHeader->intent_p3, sizeof(float), 1); flip_endian(&hHeader->intent_code, sizeof(int16_t), 1); flip_endian(&hHeader->datatype, sizeof(int16_t), 1); flip_endian(&hHeader->bitpix, sizeof(int16_t), 1); flip_endian(&hHeader->slice_start, sizeof(int16_t), 1); flip_endian(&hHeader->pixdim, sizeof(float), 8); flip_endian(&hHeader->vox_offset, sizeof(float), 1); flip_endian(&hHeader->scl_slope, sizeof(float), 1); flip_endian(&hHeader->scl_inter, sizeof(float), 1); flip_endian(&hHeader->slice_end, sizeof(int16_t), 1); flip_endian(&hHeader->cal_max, sizeof(float), 1); flip_endian(&hHeader->cal_min, sizeof(float), 1); flip_endian(&hHeader->slice_duration, sizeof(float), 1); flip_endian(&hHeader->toffset, sizeof(float), 1); flip_endian(&hHeader->glmax, sizeof(int32_t), 1); flip_endian(&hHeader->glmin, sizeof(int32_t), 1); flip_endian(&hHeader->qform_code, sizeof(int16_t), 1); flip_endian(&hHeader->sform_code, sizeof(int16_t), 1); flip_endian(&hHeader->quatern_b, sizeof(float), 1); flip_endian(&hHeader->quatern_c, sizeof(float), 1); flip_endian(&hHeader->quatern_d, sizeof(float), 1); flip_endian(&hHeader->qoffset_x, sizeof(float), 1); flip_endian(&hHeader->qoffset_y, sizeof(float), 1); flip_endian(&hHeader->qoffset_z, sizeof(float), 1); flip_endian(&hHeader->srow_x, sizeof(float), 4); flip_endian(&hHeader->srow_y, sizeof(float), 4); flip_endian(&hHeader->srow_z, sizeof(float), 4); }
int main(int argc, char** argv) { PSU_FILE files; SU_FILE dest; uint32_t num_files; uint32_t i; uint32_t err; double atof_store; double* file_intensities; if(!(argc & 0x1) || argc < 3) { fputs("This program requires an even number of command line arguments, at least two, of the form:\n",stderr); fputs("mix <file1> <relative volume 1> [<file2> <relative volume 2> ...]\n",stderr); return EXIT_FAILURE; } num_files = (argc - 1) >> 1; files = (PSU_FILE)malloc(sizeof(SU_FILE) * num_files); file_intensities = (double*)malloc(sizeof(double) * num_files); for(i = 0;i < num_files;i++) { /* We check [in] for errors in read_su_file */ PFILE in = fopen(argv[(i << 1) + 1],"rb"); err = read_su_file(&files[i],in); if(err) { write_error(err,stderr); return EXIT_FAILURE; } err = flip_endian(&files[i]); if(err) { write_error(err,stderr); return EXIT_FAILURE; } atof_store = atof((c_string)argv[(i + 1) << 1]); #ifdef WINDOWS if(atof_store == HUGE_VAL) #else if(atof_store == HUGE_VAL()) #endif { fputs("You have provided a number well beyond the limits of a double value.\n",stderr); return EXIT_FAILURE; } else if(atof_store == 0.0) if(!is_zero_real((c_string)argv[(i + 1) << 1])) { fputs("You have provided a non-number for duration which must be a real number.\n",stderr); return EXIT_FAILURE; } file_intensities[i] = atof_store; } err = mix_su_file_no_volume_gain(&dest,files,file_intensities,num_files); if(err) { write_error(err,stderr); return EXIT_FAILURE; } #ifdef WINDOWS _setmode(_fileno(stdout),_O_BINARY); #else stdout = freopen(NULL,"wb",stdout); #endif err = flip_endian(&dest); if(err) { write_error(err,stderr); return EXIT_FAILURE; } err = write_su_file(&dest,stdout); if(err) { write_error(err,stderr); return EXIT_FAILURE; } return EXIT_SUCCESS; }