Lines Matching defs:psf

93 static	int		au_close		(SF_PRIVATE *psf) ;
97 static int au_write_header (SF_PRIVATE *psf, int calc_length) ;
98 static int au_read_header (SF_PRIVATE *psf) ;
105 au_open (SF_PRIVATE *psf)
109 if (psf->file.mode == SFM_READ || (psf->file.mode == SFM_RDWR && psf->filelength > 0))
110 { if ((error = au_read_header (psf)))
114 if ((SF_CONTAINER (psf->sf.format)) != SF_FORMAT_AU)
117 subformat = SF_CODEC (psf->sf.format) ;
119 if (psf->file.mode == SFM_WRITE || psf->file.mode == SFM_RDWR)
120 { psf->endian = SF_ENDIAN (psf->sf.format) ;
121 if (CPU_IS_LITTLE_ENDIAN && psf->endian == SF_ENDIAN_CPU)
122 psf->endian = SF_ENDIAN_LITTLE ;
123 else if (psf->endian != SF_ENDIAN_LITTLE)
124 psf->endian = SF_ENDIAN_BIG ;
126 if (au_write_header (psf, SF_FALSE))
127 return psf->error ;
129 psf->write_header = au_write_header ;
132 psf->container_close = au_close ;
134 psf->blockwidth = psf->bytewidth * psf->sf.channels ;
138 ulaw_init (psf) ;
142 error = pcm_init (psf) ;
148 error = pcm_init (psf) ;
152 alaw_init (psf) ;
157 error = float32_init (psf) ;
161 error = double64_init (psf) ;
165 error = g72x_init (psf) ;
166 psf->sf.seekable = SF_FALSE ;
170 error = g72x_init (psf) ;
171 psf->sf.seekable = SF_FALSE ;
175 error = g72x_init (psf) ;
176 psf->sf.seekable = SF_FALSE ;
190 au_close (SF_PRIVATE *psf)
192 if (psf->file.mode == SFM_WRITE || psf->file.mode == SFM_RDWR)
193 au_write_header (psf, SF_TRUE) ;
199 au_write_header (SF_PRIVATE *psf, int calc_length)
203 if (psf->pipeoffset > 0)
206 current = psf_ftell (psf) ;
209 { psf->filelength = psf_get_filelen (psf) ;
211 psf->datalength = psf->filelength - psf->dataoffset ;
212 if (psf->dataend)
213 psf->datalength -= psf->filelength - psf->dataend ;
216 encoding = au_format_to_encoding (SF_CODEC (psf->sf.format)) ;
218 return (psf->error = SFE_BAD_OPEN_FORMAT) ;
221 psf->header.ptr [0] = 0 ;
222 psf->header.indx = 0 ;
228 if (psf->is_pipe == SF_FALSE)
229 psf_fseek (psf, 0, SEEK_SET) ;
236 if (psf->datalength < 0 || psf->datalength > 0x7FFFFFFF)
239 datalength = (int) (psf->datalength & 0x7FFFFFFF) ;
241 if (psf->endian == SF_ENDIAN_BIG)
242 { psf_binheader_writef (psf, "Em4", BHWm (DOTSND_MARKER), BHW4 (AU_DATA_OFFSET)) ;
243 psf_binheader_writef (psf, "E4444", BHW4 (datalength), BHW4 (encoding), BHW4 (psf->sf.samplerate), BHW4 (psf->sf.channels)) ;
245 else if (psf->endian == SF_ENDIAN_LITTLE)
246 { psf_binheader_writef (psf, "em4", BHWm (DNSDOT_MARKER), BHW4 (AU_DATA_OFFSET)) ;
247 psf_binheader_writef (psf, "e4444", BHW4 (datalength), BHW4 (encoding), BHW4 (psf->sf.samplerate), BHW4 (psf->sf.channels)) ;
250 return (psf->error = SFE_BAD_OPEN_FORMAT) ;
253 psf_fwrite (psf->header.ptr, psf->header.indx, 1, psf) ;
255 if (psf->error)
256 return psf->error ;
258 psf->dataoffset = psf->header.indx ;
261 psf_fseek (psf, current, SEEK_SET) ;
263 return psf->error ;
291 au_read_header (SF_PRIVATE *psf)
296 psf_binheader_readf (psf, "pm", 0, &marker) ;
297 psf_log_printf (psf, "%M\n", marker) ;
300 { psf->endian = SF_ENDIAN_BIG ;
302 psf_binheader_readf (psf, "E44444", &(au_fmt.dataoffset), &(au_fmt.datasize),
306 { psf->endian = SF_ENDIAN_LITTLE ;
307 psf_binheader_readf (psf, "e44444", &(au_fmt.dataoffset), &(au_fmt.datasize),
313 psf_log_printf (psf, " Data Offset : %d\n", au_fmt.dataoffset) ;
315 if (psf->fileoffset > 0 && au_fmt.datasize == -1)
316 { psf_log_printf (psf, " Data Size : -1\n") ;
320 if (psf->fileoffset > 0)
321 { psf->filelength = au_fmt.dataoffset + au_fmt.datasize ;
322 psf_log_printf (psf, " Data Size : %d\n", au_fmt.datasize) ;
324 else if (au_fmt.datasize == -1 || au_fmt.dataoffset + au_fmt.datasize == psf->filelength)
325 psf_log_printf (psf, " Data Size : %d\n", au_fmt.datasize) ;
326 else if (au_fmt.dataoffset + au_fmt.datasize < psf->filelength)
327 { psf->filelength = au_fmt.dataoffset + au_fmt.datasize ;
328 psf_log_printf (psf, " Data Size : %d\n", au_fmt.datasize) ;
331 { dword = psf->filelength - au_fmt.dataoffset ;
332 psf_log_printf (psf, " Data Size : %d (should be %d)\n", au_fmt.datasize, dword) ;
336 psf->dataoffset = au_fmt.dataoffset ;
337 psf->datalength = psf->filelength - psf->dataoffset ;
339 if (psf_ftell (psf) < psf->dataoffset)
340 psf_binheader_readf (psf, "j", psf->dataoffset - psf_ftell (psf)) ;
342 psf->sf.samplerate = au_fmt.samplerate ;
343 psf->sf.channels = au_fmt.channels ;
346 if (psf->endian == SF_ENDIAN_BIG)
347 psf->sf.format = SF_FORMAT_AU ;
348 else if (psf->endian == SF_ENDIAN_LITTLE)
349 psf->sf.format = SF_ENDIAN_LITTLE | SF_FORMAT_AU ;
351 psf_log_printf (psf, " Encoding : %d => ", au_fmt.encoding) ;
353 psf->sf.format = SF_ENDIAN (psf->sf.format) ;
357 psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_ULAW ;
358 psf->bytewidth = 1 ; /* Before decoding */
359 psf_log_printf (psf, "8-bit ISDN u-law\n") ;
363 psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_PCM_S8 ;
364 psf->bytewidth = 1 ;
365 psf_log_printf (psf, "8-bit linear PCM\n") ;
369 psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_PCM_16 ;
370 psf->bytewidth = 2 ;
371 psf_log_printf (psf, "16-bit linear PCM\n") ;
375 psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_PCM_24 ;
376 psf->bytewidth = 3 ;
377 psf_log_printf (psf, "24-bit linear PCM\n") ;
381 psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_PCM_32 ;
382 psf->bytewidth = 4 ;
383 psf_log_printf (psf, "32-bit linear PCM\n") ;
387 psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_FLOAT ;
388 psf->bytewidth = 4 ;
389 psf_log_printf (psf, "32-bit float\n") ;
393 psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_DOUBLE ;
394 psf->bytewidth = 8 ;
395 psf_log_printf (psf, "64-bit double precision float\n") ;
399 psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_ALAW ;
400 psf->bytewidth = 1 ; /* Before decoding */
401 psf_log_printf (psf, "8-bit ISDN A-law\n") ;
405 psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_G721_32 ;
406 psf->bytewidth = 0 ;
407 psf_log_printf (psf, "G721 32kbs ADPCM\n") ;
411 psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_G723_24 ;
412 psf->bytewidth = 0 ;
413 psf_log_printf (psf, "G723 24kbs ADPCM\n") ;
417 psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_G723_40 ;
418 psf->bytewidth = 0 ;
419 psf_log_printf (psf, "G723 40kbs ADPCM\n") ;
423 psf_log_printf (psf, "G722 64 kbs ADPCM (unsupported)\n") ;
427 psf_log_printf (psf, "Weird NeXT encoding format (unsupported)\n") ;
431 psf_log_printf (psf, "Unknown!!\n") ;
435 psf_log_printf (psf, " Sample Rate : %d\n", au_fmt.samplerate) ;
437 { psf_log_printf (psf, " Channels : %d **** should be >= 1\n", au_fmt.channels) ;
441 { psf_log_printf (psf, " Channels : %d **** should be <= %d\n", au_fmt.channels, SF_MAX_CHANNELS) ;
445 psf_log_printf (psf, " Channels : %d\n", au_fmt.channels) ;
447 psf->blockwidth = psf->sf.channels * psf->bytewidth ;
449 if (! psf->sf.frames && psf->blockwidth)
450 psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ;