Lines Matching defs:psf
33 dwd_open (SF_PRIVATE *psf)
34 { if (psf)
62 static int dwd_read_header (SF_PRIVATE *psf) ;
64 static int dwd_close (SF_PRIVATE *psf) ;
71 dwd_open (SF_PRIVATE *psf)
74 if (psf->file.mode == SFM_READ || (psf->file.mode == SFM_RDWR && psf->filelength > 0))
75 { if ((error = dwd_read_header (psf)))
79 if ((SF_CONTAINER (psf->sf.format)) != SF_FORMAT_DWD)
82 if (psf->file.mode == SFM_WRITE || psf->file.mode == SFM_RDWR)
84 /*-psf->endian = SF_ENDIAN (psf->sf.format) ;
85 if (CPU_IS_LITTLE_ENDIAN && psf->endian == SF_ENDIAN_CPU)
86 psf->endian = SF_ENDIAN_LITTLE ;
87 else if (psf->endian != SF_ENDIAN_LITTLE)
88 psf->endian = SF_ENDIAN_BIG ;
90 if (! (encoding = dwd_write_header (psf, SF_FALSE)))
91 return psf->error ;
93 psf->write_header = dwd_write_header ;
97 psf->container_close = dwd_close ;
99 /*-psf->blockwidth = psf->bytewidth * psf->sf.channels ;-*/
108 dwd_close (SF_PRIVATE * UNUSED (psf))
124 dwd_read_header (SF_PRIVATE *psf)
130 psf_binheader_readf (psf, "pb", 0, ubuf.cbuf, DWD_IDENTIFIER_LEN) ;
135 psf_log_printf (psf, "Read only : DiamondWare Digitized (.dwd)\n", ubuf.cbuf) ;
137 psf_binheader_readf (psf, "11", &dwdh.major, &dwdh.minor) ;
138 psf_binheader_readf (psf, "e4j1", &dwdh.id, 1, &dwdh.compression) ;
139 psf_binheader_readf (psf, "e211", &dwdh.srate, &dwdh.channels, &dwdh.bitwidth) ;
140 psf_binheader_readf (psf, "e24", &dwdh.maxval, &dwdh.datalen) ;
141 psf_binheader_readf (psf, "e44", &dwdh.frames, &dwdh.offset) ;
143 psf_log_printf (psf, " Version Major : %d\n Version Minor : %d\n Unique ID : %08X\n",
145 psf_log_printf (psf, " Compression : %d => ", dwdh.compression) ;
148 { psf_log_printf (psf, "Unsupported compression\n") ;
152 psf_log_printf (psf, "None\n") ;
154 psf_log_printf (psf, " Sample Rate : %d\n Channels : %d\n"
160 psf->sf.format = SF_FORMAT_DWD | SF_FORMAT_PCM_S8 ;
161 psf->bytewidth = 1 ;
165 psf->sf.format = SF_FORMAT_DWD | SF_FORMAT_PCM_16 ;
166 psf->bytewidth = 2 ;
170 psf_log_printf (psf, "*** Bad bit width %d\n", dwdh.bitwidth) ;
174 if (psf->filelength != dwdh.offset + dwdh.datalen)
175 { psf_log_printf (psf, " Data Length : %d (should be %D)\n", dwdh.datalen, psf->filelength - dwdh.offset) ;
176 dwdh.datalen = (uint32_t) (psf->filelength - dwdh.offset) ;
179 psf_log_printf (psf, " Data Length : %d\n", dwdh.datalen) ;
181 psf_log_printf (psf, " Max Value : %d\n", dwdh.maxval) ;
182 psf_log_printf (psf, " Frames : %d\n", dwdh.frames) ;
183 psf_log_printf (psf, " Data Offset : %d\n", dwdh.offset) ;
185 psf->datalength = dwdh.datalen ;
186 psf->dataoffset = dwdh.offset ;
188 psf->endian = SF_ENDIAN_LITTLE ;
190 psf->sf.samplerate = dwdh.srate ;
191 psf->sf.channels = dwdh.channels ;
192 psf->sf.sections = 1 ;
194 return pcm_init (psf) ;