mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-25 10:00:23 -04:00 
			
		
		
		
	Tidy up WAV file reading and fix WAV input rate conversion defect
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6521 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
		
							parent
							
								
									ffcfe97f34
								
							
						
					
					
						commit
						ab52a7f0ea
					
				| @ -23,7 +23,7 @@ subroutine wav12(d2,d1,npts,nbitsam2) | |||||||
| 
 | 
 | ||||||
|   jz=min(NZ11,npts) |   jz=min(NZ11,npts) | ||||||
|   if(nbitsam2.eq.8) then |   if(nbitsam2.eq.8) then | ||||||
|      jz=min(NZ11,2*npts) |      jz=min(NZ11,npts) | ||||||
|      d1a(1:jz)=d1(1:jz)            !d1 and d2 may be same array in calling prog  |      d1a(1:jz)=d1(1:jz)            !d1 and d2 may be same array in calling prog  | ||||||
|      do i=1,jz                     !Move data from d1a into d2 |      do i=1,jz                     !Move data from d1a into d2 | ||||||
|         i2=0 |         i2=0 | ||||||
|  | |||||||
| @ -1606,18 +1606,21 @@ void MainWindow::read_wav_file (QString const& fname) | |||||||
|         } |         } | ||||||
|       BWFFile file {QAudioFormat {}, fname}; |       BWFFile file {QAudioFormat {}, fname}; | ||||||
|       file.open (BWFFile::ReadOnly); |       file.open (BWFFile::ReadOnly); | ||||||
|       auto ntps = std::min (m_TRperiod * 12000, 120 * 12000); |  | ||||||
|       auto bytes_per_frame = file.format ().bytesPerFrame (); |       auto bytes_per_frame = file.format ().bytesPerFrame (); | ||||||
|       int n = file.read (reinterpret_cast<char *> (dec_data.d2), |       qint64 max_bytes {std::min (std::size_t (m_TRperiod * RX_SAMPLE_RATE), | ||||||
|                          std::min (qint64 (bytes_per_frame * ntps), file.size ())); |                                   sizeof (dec_data.d2) / sizeof (dec_data.d2[0])) | ||||||
|       int npts=n / file.format ().bytesPerFrame (); |           * bytes_per_frame}; | ||||||
|       std::memset (dec_data.d2 + n, 0, bytes_per_frame * ntps - n); |       auto n = file.read (reinterpret_cast<char *> (dec_data.d2), | ||||||
|  |                           std::min (max_bytes, file.size ())); | ||||||
|  |       int frames_read = n / bytes_per_frame; | ||||||
|  |       // zero unfilled remaining sample space
 | ||||||
|  |       std::memset (&dec_data.d2[0] + n, 0, max_bytes - n); | ||||||
|       if (11025 == file.format ().sampleRate ()) |       if (11025 == file.format ().sampleRate ()) | ||||||
|         { |         { | ||||||
|           auto sample_size = static_cast<short > (file.format ().sampleSize ()); |           short sample_size = file.format ().sampleSize (); | ||||||
|           wav12_ (dec_data.d2, dec_data.d2, &npts, &sample_size); |           wav12_ (dec_data.d2, dec_data.d2, &frames_read, &sample_size); | ||||||
|         } |         } | ||||||
|       dec_data.params.kin = npts; |       dec_data.params.kin = frames_read; | ||||||
|       dec_data.params.newdat = 1; |       dec_data.params.newdat = 1; | ||||||
|     }); |     }); | ||||||
|   m_wav_future_watcher.setFuture(m_wav_future); // call diskDat() when done
 |   m_wav_future_watcher.setFuture(m_wav_future); // call diskDat() when done
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user