mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 10:26:02 +00:00 
			
		
		
		
	MERGE: Closes #16461: Wave library should be able to deal with 4GB wav files, and sample rate of 44100 Hz.
This commit is contained in:
		
						commit
						a4e37037a2
					
				
					 2 changed files with 9 additions and 6 deletions
				
			
		
							
								
								
									
										12
									
								
								Lib/wave.py
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								Lib/wave.py
									
										
									
									
									
								
							|  | @ -261,9 +261,9 @@ class Wave_read: | |||
|     # | ||||
| 
 | ||||
|     def _read_fmt_chunk(self, chunk): | ||||
|         wFormatTag, self._nchannels, self._framerate, dwAvgBytesPerSec, wBlockAlign = struct.unpack_from('<hhllh', chunk.read(14)) | ||||
|         wFormatTag, self._nchannels, self._framerate, dwAvgBytesPerSec, wBlockAlign = struct.unpack_from('<HHLLH', chunk.read(14)) | ||||
|         if wFormatTag == WAVE_FORMAT_PCM: | ||||
|             sampwidth = struct.unpack_from('<h', chunk.read(2))[0] | ||||
|             sampwidth = struct.unpack_from('<H', chunk.read(2))[0] | ||||
|             self._sampwidth = (sampwidth + 7) // 8 | ||||
|         else: | ||||
|             raise Error('unknown format: %r' % (wFormatTag,)) | ||||
|  | @ -466,14 +466,14 @@ class Wave_write: | |||
|             self._nframes = initlength // (self._nchannels * self._sampwidth) | ||||
|         self._datalength = self._nframes * self._nchannels * self._sampwidth | ||||
|         self._form_length_pos = self._file.tell() | ||||
|         self._file.write(struct.pack('<l4s4slhhllhh4s', | ||||
|         self._file.write(struct.pack('<L4s4sLHHLLHH4s', | ||||
|             36 + self._datalength, b'WAVE', b'fmt ', 16, | ||||
|             WAVE_FORMAT_PCM, self._nchannels, self._framerate, | ||||
|             self._nchannels * self._framerate * self._sampwidth, | ||||
|             self._nchannels * self._sampwidth, | ||||
|             self._sampwidth * 8, b'data')) | ||||
|         self._data_length_pos = self._file.tell() | ||||
|         self._file.write(struct.pack('<l', self._datalength)) | ||||
|         self._file.write(struct.pack('<L', self._datalength)) | ||||
|         self._headerwritten = True | ||||
| 
 | ||||
|     def _patchheader(self): | ||||
|  | @ -482,9 +482,9 @@ class Wave_write: | |||
|             return | ||||
|         curpos = self._file.tell() | ||||
|         self._file.seek(self._form_length_pos, 0) | ||||
|         self._file.write(struct.pack('<l', 36 + self._datawritten)) | ||||
|         self._file.write(struct.pack('<L', 36 + self._datawritten)) | ||||
|         self._file.seek(self._data_length_pos, 0) | ||||
|         self._file.write(struct.pack('<l', self._datawritten)) | ||||
|         self._file.write(struct.pack('<L', self._datawritten)) | ||||
|         self._file.seek(curpos, 0) | ||||
|         self._datalength = self._datawritten | ||||
| 
 | ||||
|  |  | |||
|  | @ -240,6 +240,9 @@ Library | |||
| - Issue #16270: urllib may hang when used for retrieving files via FTP by using | ||||
|   a context manager.  Patch by Giampaolo Rodola'. | ||||
| 
 | ||||
| - Issue #16461: Wave library should be able to deal with 4GB wav files, | ||||
|   and sample rate of 44100 Hz. | ||||
| 
 | ||||
| - Issue #16176: Properly identify Windows 8 via platform.platform() | ||||
| 
 | ||||
| - Issue #16088: BaseHTTPRequestHandler's send_error method includes a | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jesus Cea
						Jesus Cea