Lines Matching defs:psf

74 static int paf24_init (SF_PRIVATE *psf) ;
76 static int paf_read_header (SF_PRIVATE *psf) ;
77 static int paf_write_header (SF_PRIVATE *psf, int calc_length) ;
79 static sf_count_t paf24_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
80 static sf_count_t paf24_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
81 static sf_count_t paf24_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
82 static sf_count_t paf24_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
84 static sf_count_t paf24_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
85 static sf_count_t paf24_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
86 static sf_count_t paf24_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
87 static sf_count_t paf24_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
89 static sf_count_t paf24_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
102 paf_open (SF_PRIVATE *psf)
105 psf->dataoffset = PAF_HEADER_LENGTH ;
107 if (psf->file.mode == SFM_READ || (psf->file.mode == SFM_RDWR && psf->filelength > 0))
108 { if ((error = paf_read_header (psf)))
112 subformat = SF_CODEC (psf->sf.format) ;
114 if (psf->file.mode == SFM_WRITE || psf->file.mode == SFM_RDWR)
115 { if ((SF_CONTAINER (psf->sf.format)) != SF_FORMAT_PAF)
118 endian = SF_ENDIAN (psf->sf.format) ;
121 psf->endian = SF_ENDIAN_BIG ;
124 psf->endian = SF_ENDIAN_LITTLE ;
126 if ((error = paf_write_header (psf, SF_FALSE)))
129 psf->write_header = paf_write_header ;
134 psf->bytewidth = 1 ;
135 error = pcm_init (psf) ;
139 psf->bytewidth = 2 ;
140 error = pcm_init (psf) ;
145 error = paf24_init (psf) ;
158 paf_read_header (SF_PRIVATE *psf)
162 if (psf->filelength < PAF_HEADER_LENGTH)
166 psf_binheader_readf (psf, "pm", 0, &marker) ;
168 psf_log_printf (psf, "Signature : '%M'\n", marker) ;
171 { psf_binheader_readf (psf, "E444444", &(paf_fmt.version), &(paf_fmt.endianness),
175 { psf_binheader_readf (psf, "e444444", &(paf_fmt.version), &(paf_fmt.endianness),
181 psf_log_printf (psf, "Version : %d\n", paf_fmt.version) ;
184 { psf_log_printf (psf, "*** Bad version number. should be zero.\n") ;
188 psf_log_printf (psf, "Sample Rate : %d\n", paf_fmt.samplerate) ;
189 psf_log_printf (psf, "Channels : %d\n", paf_fmt.channels) ;
191 psf_log_printf (psf, "Endianness : %d => ", paf_fmt.endianness) ;
193 { psf_log_printf (psf, "Little\n", paf_fmt.endianness) ;
194 psf->endian = SF_ENDIAN_LITTLE ;
197 { psf_log_printf (psf, "Big\n", paf_fmt.endianness) ;
198 psf->endian = SF_ENDIAN_BIG ;
204 psf->datalength = psf->filelength - psf->dataoffset ;
206 psf_binheader_readf (psf, "p", (int) psf->dataoffset) ;
208 psf->sf.samplerate = paf_fmt.samplerate ;
209 psf->sf.channels = paf_fmt.channels ;
212 psf->sf.format = SF_FORMAT_PAF ;
214 psf_log_printf (psf, "Format : %d => ", paf_fmt.format) ;
217 psf->sf.format |= paf_fmt.endianness ? SF_ENDIAN_LITTLE : SF_ENDIAN_BIG ;
221 psf_log_printf (psf, "8 bit linear PCM\n") ;
222 psf->bytewidth = 1 ;
224 psf->sf.format |= SF_FORMAT_PCM_S8 ;
226 psf->blockwidth = psf->bytewidth * psf->sf.channels ;
227 psf->sf.frames = psf->datalength / psf->blockwidth ;
231 psf_log_printf (psf, "16 bit linear PCM\n") ;
232 psf->bytewidth = 2 ;
234 psf->sf.format |= SF_FORMAT_PCM_16 ;
236 psf->blockwidth = psf->bytewidth * psf->sf.channels ;
237 psf->sf.frames = psf->datalength / psf->blockwidth ;
241 psf_log_printf (psf, "24 bit linear PCM\n") ;
242 psf->bytewidth = 3 ;
244 psf->sf.format |= SF_FORMAT_PCM_24 ;
246 psf->blockwidth = 0 ;
247 psf->sf.frames = PAF24_SAMPLES_PER_BLOCK * psf->datalength /
248 (PAF24_BLOCK_SIZE * psf->sf.channels) ;
251 default : psf_log_printf (psf, "Unknown\n") ;
256 psf_log_printf (psf, "Source : %d => ", paf_fmt.source) ;
259 { case 1 : psf_log_printf (psf, "Analog Recording\n") ;
261 case 2 : psf_log_printf (psf, "Digital Transfer\n") ;
263 case 3 : psf_log_printf (psf, "Multi-track Mixdown\n") ;
265 case 5 : psf_log_printf (psf, "Audio Resulting From DSP Processing\n") ;
267 default : psf_log_printf (psf, "Unknown\n") ;
275 paf_write_header (SF_PRIVATE *psf, int UNUSED (calc_length))
279 if (psf_ftell (psf) >= PAF_HEADER_LENGTH)
282 psf->dataoffset = PAF_HEADER_LENGTH ;
284 switch (SF_CODEC (psf->sf.format))
301 psf->header.ptr [0] = 0 ;
302 psf->header.indx = 0 ;
304 if (psf->endian == SF_ENDIAN_BIG)
306 psf_binheader_writef (psf, "Em444", BHWm (PAF_MARKER), BHW4 (0), BHW4 (0), BHW4 (psf->sf.samplerate)) ;
308 psf_binheader_writef (psf, "E444", BHW4 (paf_format), BHW4 (psf->sf.channels), BHW4 (0)) ;
310 else if (psf->endian == SF_ENDIAN_LITTLE)
312 psf_binheader_writef (psf, "em444", BHWm (FAP_MARKER), BHW4 (0), BHW4 (1), BHW4 (psf->sf.samplerate)) ;
314 psf_binheader_writef (psf, "e444", BHW4 (paf_format), BHW4 (psf->sf.channels), BHW4 (0)) ;
318 psf_binheader_writef (psf, "z", BHWz ((size_t) (psf->dataoffset - psf->header.indx))) ;
320 psf_fwrite (psf->header.ptr, psf->header.indx, 1, psf) ;
322 return psf->error ;
339 static int paf24_read_block (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24) ;
340 static int paf24_write_block (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24) ;
341 static int paf24_close (SF_PRIVATE *psf) ;
345 paf24_init (SF_PRIVATE *psf)
349 paf24size = sizeof (PAF24_PRIVATE) + psf->sf.channels *
356 psf->last_op = 0 ;
358 if (! (psf->codec_data = calloc (1, paf24size)))
361 ppaf24 = (PAF24_PRIVATE*) psf->codec_data ;
363 ppaf24->channels = psf->sf.channels ;
369 if (psf->file.mode == SFM_READ || psf->file.mode == SFM_RDWR)
370 { paf24_read_block (psf, ppaf24) ; /* Read first block. */
372 psf->read_short = paf24_read_s ;
373 psf->read_int = paf24_read_i ;
374 psf->read_float = paf24_read_f ;
375 psf->read_double = paf24_read_d ;
378 if (psf->file.mode == SFM_WRITE || psf->file.mode == SFM_RDWR)
379 { psf->write_short = paf24_write_s ;
380 psf->write_int = paf24_write_i ;
381 psf->write_float = paf24_write_f ;
382 psf->write_double = paf24_write_d ;
385 psf->seek = paf24_seek ;
386 psf->container_close = paf24_close ;
388 psf->filelength = psf_get_filelen (psf) ;
389 psf->datalength = psf->filelength - psf->dataoffset ;
391 if (psf->datalength % PAF24_BLOCK_SIZE)
392 { if (psf->file.mode == SFM_READ)
393 psf_log_printf (psf, "*** Warning : file seems to be truncated.\n") ;
394 ppaf24->max_blocks = psf->datalength / ppaf24->blocksize + 1 ;
397 ppaf24->max_blocks = psf->datalength / ppaf24->blocksize ;
400 if (psf->file.mode == SFM_RDWR)
405 psf->sf.frames = PAF24_SAMPLES_PER_BLOCK * ppaf24->max_blocks ;
406 ppaf24->sample_count = psf->sf.frames ;
412 paf24_seek (SF_PRIVATE *psf, int mode, sf_count_t offset)
416 if (psf->codec_data == NULL)
417 { psf->error = SFE_INTERNAL ;
421 ppaf24 = (PAF24_PRIVATE*) psf->codec_data ;
424 paf24_write_block (psf, ppaf24) ;
431 if (psf->last_op == SFM_WRITE && ppaf24->write_count)
432 paf24_write_block (psf, ppaf24) ;
434 psf_fseek (psf, psf->dataoffset + newblock * ppaf24->blocksize, SEEK_SET) ;
436 paf24_read_block (psf, ppaf24) ;
442 { psf->error = SFE_BAD_SEEK ;
446 if (psf->last_op == SFM_WRITE && ppaf24->write_count)
447 paf24_write_block (psf, ppaf24) ;
449 psf_fseek (psf, psf->dataoffset + newblock * ppaf24->blocksize, SEEK_SET) ;
451 paf24_read_block (psf, ppaf24) ;
456 psf->error = SFE_BAD_SEEK ;
464 paf24_close (SF_PRIVATE *psf)
467 if (psf->codec_data == NULL)
470 ppaf24 = (PAF24_PRIVATE*) psf->codec_data ;
472 if (psf->file.mode == SFM_WRITE || psf->file.mode == SFM_RDWR)
474 paf24_write_block (psf, ppaf24) ;
483 paf24_read_block (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24)
496 if ((k = (int) psf_fread (ppaf24->block, 1, ppaf24->blocksize, psf)) != ppaf24->blocksize)
497 psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, ppaf24->blocksize) ;
500 if ((CPU_IS_BIG_ENDIAN && psf->endian == SF_ENDIAN_LITTLE) || (CPU_IS_LITTLE_ENDIAN && psf->endian == SF_ENDIAN_BIG))
514 paf24_read (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24, int *ptr, int len)
524 paf24_read_block (psf, ppaf24) ;
538 paf24_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
545 if (psf->codec_data == NULL)
547 ppaf24 = (PAF24_PRIVATE*) psf->codec_data ;
553 count = paf24_read (psf, ppaf24, iptr, readcount) ;
563 paf24_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
567 if (psf->codec_data == NULL)
569 ppaf24 = (PAF24_PRIVATE*) psf->codec_data ;
571 total = paf24_read (psf, ppaf24, ptr, len) ;
577 paf24_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
585 if (psf->codec_data == NULL)
587 ppaf24 = (PAF24_PRIVATE*) psf->codec_data ;
589 normfact = (psf->norm_float == SF_TRUE) ? (1.0 / 0x80000000) : (1.0 / 0x100) ;
595 count = paf24_read (psf, ppaf24, iptr, readcount) ;
605 paf24_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
613 if (psf->codec_data == NULL)
615 ppaf24 = (PAF24_PRIVATE*) psf->codec_data ;
617 normfact = (psf->norm_double == SF_TRUE) ? (1.0 / 0x80000000) : (1.0 / 0x100) ;
623 count = paf24_read (psf, ppaf24, iptr, readcount) ;
636 paf24_write_block (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24)
653 if (psf->endian == SF_ENDIAN_BIG)
666 if (psf->endian == SF_ENDIAN_LITTLE)
671 if ((k = (int) psf_fwrite (ppaf24->block, 1, ppaf24->blocksize, psf)) != ppaf24->blocksize)
672 psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, ppaf24->blocksize) ;
686 paf24_write (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24, const int *ptr, int len)
700 paf24_write_block (psf, ppaf24) ;
707 paf24_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
714 if (psf->codec_data == NULL)
716 ppaf24 = (PAF24_PRIVATE*) psf->codec_data ;
724 count = paf24_write (psf, ppaf24, iptr, writecount) ;
734 paf24_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
739 if (psf->codec_data == NULL)
741 ppaf24 = (PAF24_PRIVATE*) psf->codec_data ;
746 count = paf24_write (psf, ppaf24, ptr, writecount) ;
758 paf24_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
766 if (psf->codec_data == NULL)
768 ppaf24 = (PAF24_PRIVATE*) psf->codec_data ;
770 normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFFFFFF) : (1.0 / 0x100) ;
778 count = paf24_write (psf, ppaf24, iptr, writecount) ;
789 paf24_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
797 if (psf->codec_data == NULL)
799 ppaf24 = (PAF24_PRIVATE*) psf->codec_data ;
801 normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFFFFFF) : (1.0 / 0x100) ;
809 count = paf24_write (psf, ppaf24, iptr, writecount) ;