void swap_ape_header(APE_HEADER *header) { header->nCompressionLevel = swap_int16(header->nCompressionLevel); header->nFormatFlags = swap_int16(header->nFormatFlags); header->nBlocksPerFrame = swap_int32(header->nBlocksPerFrame); header->nFinalFrameBlocks = swap_int32(header->nFinalFrameBlocks); header->nTotalFrames = swap_int32(header->nTotalFrames); header->nBitsPerSample = swap_int16(header->nBitsPerSample); header->nChannels = swap_int16(header->nChannels); header->nSampleRate = swap_int32(header->nSampleRate); }
void swap_ape_descriptor(APE_DESCRIPTOR *des) { des->nVersion = swap_int16(des->nVersion); des->nDescriptorBytes = swap_int32(des->nDescriptorBytes); des->nHeaderBytes = swap_int32(des->nHeaderBytes); des->nSeekTableBytes = swap_int32(des->nSeekTableBytes); des->nHeaderDataBytes = swap_int32(des->nHeaderDataBytes); des->nAPEFrameDataBytes = swap_int32(des->nAPEFrameDataBytes); des->nAPEFrameDataBytesHigh = swap_int32(des->nAPEFrameDataBytesHigh); des->nTerminatingDataBytes = swap_int32(des->nTerminatingDataBytes); }
void DataManager::GetSurface( int ztime) { Surface sf; sf.z = ztime; long trace_size = (long)(240L+segyHead->DataType*segyHead->hns); int datatype = segyHead->DataType; long fp = 0L; for( int i = 0; i < segyHead->TotalTraces; i += 10 ) { fp = ( 3600L + (long)i*trace_size); fseek(filesegy,fp,SEEK_SET); fread((void*)(&sf.x+8L),sizeof(int),1,filesegy); sf.x = swap_int32(sf.x); fseek(filesegy,fp+20L,SEEK_SET); fread((void*)(&sf.y),sizeof(int),1,filesegy); sf.y = swap_int32(sf.y); fseek(filesegy,fp+datatype*sf.z+240L,SEEK_SET); if( segyHead->format == 1 ) { fread((void*)(&sf.value),sizeof(float),1,filesegy); sf.value = ibm2float(sf.value); } else if( segyHead->format == 2) { int temp = 0; fread((void*)(&temp),sizeof(int),1,filesegy); sf.value = swap_int32(temp); } else if( segyHead->format == 3 ) { short temp = 0; fread((void*)(&temp),sizeof(short),1,filesegy); sf.value = swap_int16(temp); } else if( segyHead->format == 5 ) { fread((void*)(&sf.value),sizeof(float),1,filesegy); } else if( segyHead->format == 8 ) { char temp = 0; fread((void*)(&temp),sizeof(char),1,filesegy); sf.value = (float)temp; } surface.push_back(sf); } qDebug()<<"Read surface have done!"<<surface.size(); }