Some docs and enhancements for WAV reading

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6336 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Bill Somerville 2016-01-02 15:04:26 +00:00
parent 26e5ea963e
commit 92e1f70b8f

View File

@ -1,3 +1,21 @@
!
! readwav - open and read the header of a WAV format file
!
! On successful exit the file is left positioned at the start of the
! data.
!
! Example of usage:
!
! use readwav
! integer*2 sample
! type(wav_header) wav
! call wav%read ('file.wav')
! write (*,*) 'Sample rate is: ', wav%audio_format%sample_rate
! do i=0,wav%data_size
! read (unit=wav%lun) sample
! ! process sample
! end do
!
module readwav module readwav
implicit none implicit none
@ -13,6 +31,7 @@ module readwav
type, public :: wav_header type, public :: wav_header
integer :: lun integer :: lun
type(format_chunk) :: audio_format type(format_chunk) :: audio_format
integer :: data_size
contains contains
procedure :: read procedure :: read
end type wav_header end type wav_header
@ -43,6 +62,7 @@ contains
if (desc%id .eq. 'fmt ') then if (desc%id .eq. 'fmt ') then
read (unit=this%lun) this%audio_format read (unit=this%lun) this%audio_format
else if (desc%id .eq. 'data') then else if (desc%id .eq. 'data') then
this%data_size = desc%size
exit exit
end if end if
filepos = filepos + (desc%size + 1) / 2 * 2 ! pad to even alignment filepos = filepos + (desc%size + 1) / 2 * 2 ! pad to even alignment