Lines Matching defs:psf

51 static int	xi_close		(SF_PRIVATE *psf) ;
52 static int xi_write_header (SF_PRIVATE *psf, int calc_length) ;
53 static int xi_read_header (SF_PRIVATE *psf) ;
54 static int dpcm_init (SF_PRIVATE *psf) ;
57 static sf_count_t dpcm_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
64 xi_open (SF_PRIVATE *psf)
68 if (psf->is_pipe)
71 if (psf->codec_data)
72 pxi = psf->codec_data ;
76 psf->codec_data = pxi ;
78 if (psf->file.mode == SFM_READ || (psf->file.mode == SFM_RDWR && psf->filelength > 0))
79 { if ((error = xi_read_header (psf)))
83 subformat = SF_CODEC (psf->sf.format) ;
85 if (psf->file.mode == SFM_WRITE || psf->file.mode == SFM_RDWR)
86 { if ((SF_CONTAINER (psf->sf.format)) != SF_FORMAT_XI)
89 psf->endian = SF_ENDIAN_LITTLE ;
90 psf->sf.channels = 1 ; /* Always mono */
91 psf->sf.samplerate = 44100 ; /* Always */
102 if (xi_write_header (psf, SF_FALSE))
103 return psf->error ;
105 psf->write_header = xi_write_header ;
108 psf->container_close = xi_close ;
109 psf->seek = dpcm_seek ;
111 psf->sf.seekable = SF_FALSE ;
113 psf->blockwidth = psf->bytewidth * psf->sf.channels ;
118 error = dpcm_init (psf) ;
131 xi_close (SF_PRIVATE * UNUSED (psf))
139 static sf_count_t dpcm_read_dsc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
140 static sf_count_t dpcm_read_dsc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
141 static sf_count_t dpcm_read_dsc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
142 static sf_count_t dpcm_read_dsc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
144 static sf_count_t dpcm_write_s2dsc (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
145 static sf_count_t dpcm_write_i2dsc (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
146 static sf_count_t dpcm_write_f2dsc (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
147 static sf_count_t dpcm_write_d2dsc (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
149 static sf_count_t dpcm_read_dles2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
150 static sf_count_t dpcm_read_dles2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
151 static sf_count_t dpcm_read_dles2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
152 static sf_count_t dpcm_read_dles2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
154 static sf_count_t dpcm_write_s2dles (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
155 static sf_count_t dpcm_write_i2dles (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
156 static sf_count_t dpcm_write_f2dles (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
157 static sf_count_t dpcm_write_d2dles (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
160 dpcm_init (SF_PRIVATE *psf)
161 { if (psf->bytewidth == 0 || psf->sf.channels == 0)
164 psf->blockwidth = psf->bytewidth * psf->sf.channels ;
166 if (psf->file.mode == SFM_READ || psf->file.mode == SFM_RDWR)
167 { switch (psf->bytewidth)
169 psf->read_short = dpcm_read_dsc2s ;
170 psf->read_int = dpcm_read_dsc2i ;
171 psf->read_float = dpcm_read_dsc2f ;
172 psf->read_double = dpcm_read_dsc2d ;
175 psf->read_short = dpcm_read_dles2s ;
176 psf->read_int = dpcm_read_dles2i ;
177 psf->read_float = dpcm_read_dles2f ;
178 psf->read_double = dpcm_read_dles2d ;
181 psf_log_printf (psf, "dpcm_init() returning SFE_UNIMPLEMENTED\n") ;
186 if (psf->file.mode == SFM_WRITE || psf->file.mode == SFM_RDWR)
187 { switch (psf->bytewidth)
189 psf->write_short = dpcm_write_s2dsc ;
190 psf->write_int = dpcm_write_i2dsc ;
191 psf->write_float = dpcm_write_f2dsc ;
192 psf->write_double = dpcm_write_d2dsc ;
195 psf->write_short = dpcm_write_s2dles ;
196 psf->write_int = dpcm_write_i2dles ;
197 psf->write_float = dpcm_write_f2dles ;
198 psf->write_double = dpcm_write_d2dles ;
201 psf_log_printf (psf, "dpcm_init() returning SFE_UNIMPLEMENTED\n") ;
206 psf->filelength = psf_get_filelen (psf) ;
207 psf->datalength = (psf->dataend) ? psf->dataend - psf->dataoffset :
208 psf->filelength - psf->dataoffset ;
209 psf->sf.frames = psf->datalength / psf->blockwidth ;
218 dpcm_seek (SF_PRIVATE *psf, int mode, sf_count_t offset)
223 if ((pxi = psf->codec_data) == NULL)
226 if (psf->datalength < 0 || psf->dataoffset < 0)
227 { psf->error = SFE_BAD_SEEK ;
232 { psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
237 if (offset < 0 || offset > psf->sf.frames)
238 { psf->error = SFE_BAD_SEEK ;
244 psf->error = SFE_BAD_SEEK ;
248 psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
250 if ((SF_CODEC (psf->sf.format)) == SF_FORMAT_DPCM_16)
255 total -= (int) dpcm_read_dles2s (psf, ubuf.sbuf, len) ;
263 total -= (int) dpcm_read_dsc2s (psf, ubuf.sbuf, len) ;
272 xi_write_header (SF_PRIVATE *psf, int UNUSED (calc_length))
277 if ((pxi = psf->codec_data) == NULL)
280 current = psf_ftell (psf) ;
283 psf->header.ptr [0] = 0 ;
284 psf->header.indx = 0 ;
285 psf_fseek (psf, 0, SEEK_SET) ;
288 psf_binheader_writef (psf, "b", BHWv (string), BHWz (strlen (string))) ;
289 psf_binheader_writef (psf, "b1", BHWv (pxi->filename), BHWz (sizeof (pxi->filename)), BHW1 (0x1A)) ;
292 psf_binheader_writef (psf, "eb2", BHWv (pxi->software), BHWz (sizeof (pxi->software)), BHW2 ((1 << 8) + 2)) ;
298 psf_binheader_writef (psf, "z", BHWz ((size_t) (96 + 48 + 48 + 1 + 1))) ;
303 psf_binheader_writef (psf, "ez2z2", BHWz ((size_t) (4 * 3)), BHW2 (0x1234), BHWz (22), BHW2 (1)) ;
308 psf_binheader_writef (psf, "et844", BHW8 (psf->sf.frames), BHW4 (pxi->loop_begin), BHW4 (pxi->loop_end)) ;
311 psf_binheader_writef (psf, "111111", BHW1 (128), BHW1 (0), BHW1 (pxi->sample_flags), BHW1 (128), BHW1 (0), BHW1 (strlen (pxi->sample_name))) ;
313 psf_binheader_writef (psf, "b", BHWv (pxi->sample_name), BHWz (sizeof (pxi->sample_name))) ;
316 psf_fwrite (psf->header.ptr, psf->header.indx, 1, psf) ;
318 if (psf->error)
319 return psf->error ;
321 psf->dataoffset = psf->header.indx ;
324 psf_fseek (psf, current, SEEK_SET) ;
326 return psf->error ;
330 xi_read_header (SF_PRIVATE *psf)
336 psf_binheader_readf (psf, "pb", 0, buffer, 21) ;
345 psf_binheader_readf (psf, "b", buffer, 23) ;
354 psf_log_printf (psf, "Extended Instrument : %s\n", buffer) ;
355 psf_store_string (psf, SF_STR_TITLE, buffer) ;
357 psf_binheader_readf (psf, "be2", buffer, 20, &version) ;
362 psf_log_printf (psf, "Software : %s\nVersion : %d.%02d\n", buffer, version / 256, version % 256) ;
363 psf_store_string (psf, SF_STR_SOFTWARE, buffer) ;
368 psf_binheader_readf (psf, "j", 96 + 48 + 48 + 1 + 1) ;
370 psf_binheader_readf (psf, "b", buffer, 12) ;
371 psf_log_printf (psf, "Volume Loop\n sustain : %u\n begin : %u\n end : %u\n",
373 psf_log_printf (psf, "Pan Loop\n sustain : %u\n begin : %u\n end : %u\n",
375 psf_log_printf (psf, "Envelope Flags\n volume : 0x%X\n pan : 0x%X\n",
378 psf_log_printf (psf, "Vibrato\n type : %u\n sweep : %u\n depth : %u\n rate : %u\n",
385 psf_binheader_readf (psf, "e2j2", &fade_out, 2 + 20, &sample_count) ;
386 psf_log_printf (psf, "Fade out : %d\n", fade_out) ;
392 if (psf->instrument == NULL && (psf->instrument = psf_instrument_alloc ()) == NULL)
395 psf->instrument->basenote = 0 ;
398 { psf_binheader_readf (psf, "e444", &(sample_sizes [k]), &loop_begin, &loop_end) ;
401 psf_binheader_readf (psf, "bb", buffer, 6, name, 22) ;
404 psf_log_printf (psf, "Sample #%d\n name : %s\n", k + 1, name) ;
406 psf_log_printf (psf, " size : %d\n", sample_sizes [k]) ;
408 psf_log_printf (psf, " loop\n begin : %d\n end : %d\n", loop_begin, loop_end) ;
410 psf_log_printf (psf, " volume : %u\n f. tune : %d\n flags : 0x%02X ",
413 psf_log_printf (psf, " (") ;
415 psf_log_printf (psf, " Loop") ;
417 psf_log_printf (psf, " PingPong") ;
418 psf_log_printf (psf, (buffer [2] & 16) ? " 16bit" : " 8bit") ;
419 psf_log_printf (psf, " )\n") ;
421 psf_log_printf (psf, " pan : %u\n note : %d\n namelen : %d\n",
424 psf->instrument->basenote = buffer [4] ;
426 { psf->instrument->loop_count = 1 ;
427 psf->instrument->loops [0].mode = (buffer [2] & 2) ? SF_LOOP_ALTERNATING : SF_LOOP_FORWARD ;
428 psf->instrument->loops [0].start = loop_begin ;
429 psf->instrument->loops [0].end = loop_end ;
436 { psf->sf.format = SF_FORMAT_XI | SF_FORMAT_DPCM_16 ;
437 psf->bytewidth = 2 ;
440 { psf->sf.format = SF_FORMAT_XI | SF_FORMAT_DPCM_8 ;
441 psf->bytewidth = 1 ;
451 { psf_log_printf (psf, "*** Sample count is less than 16 but more than 1.\n") ;
452 psf_log_printf (psf, " sample count : %d sample_sizes [%d] : %d\n",
457 psf->datalength = sample_sizes [0] ;
459 psf->dataoffset = psf_ftell (psf) ;
460 if (psf->dataoffset < 0)
461 { psf_log_printf (psf, "*** Bad Data Offset : %D\n", psf->dataoffset) ;
464 psf_log_printf (psf, "Data Offset : %D\n", psf->dataoffset) ;
466 if (psf->dataoffset + psf->datalength > psf->filelength)
467 { psf_log_printf (psf, "*** File seems to be truncated. Should be at least %D bytes long.\n",
468 psf->dataoffset + sample_sizes [0]) ;
469 psf->datalength = psf->filelength - psf->dataoffset ;
472 if (psf_fseek (psf, psf->dataoffset, SEEK_SET) != psf->dataoffset)
475 psf->endian = SF_ENDIAN_LITTLE ;
476 psf->sf.channels = 1 ; /* Always mono */
477 psf->sf.samplerate = 44100 ; /* Always */
479 psf->blockwidth = psf->sf.channels * psf->bytewidth ;
481 if (! psf->sf.frames && psf->blockwidth)
482 psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ;
484 psf->instrument->gain = 1 ;
485 psf->instrument->velocity_lo = psf->instrument->key_lo = 0 ;
486 psf->instrument->velocity_hi = psf->instrument->key_hi = 127 ;
505 dpcm_read_dsc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
511 if ((pxi = psf->codec_data) == NULL)
519 readcount = (int) psf_fread (ubuf.scbuf, sizeof (signed char), bufferlen, psf) ;
531 dpcm_read_dsc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
537 if ((pxi = psf->codec_data) == NULL)
545 readcount = (int) psf_fread (ubuf.scbuf, sizeof (signed char), bufferlen, psf) ;
557 dpcm_read_dsc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
564 if ((pxi = psf->codec_data) == NULL)
567 normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80) : 1.0 ;
574 readcount = (int) psf_fread (ubuf.scbuf, sizeof (signed char), bufferlen, psf) ;
586 dpcm_read_dsc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
593 if ((pxi = psf->codec_data) == NULL)
596 normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80) : 1.0 ;
603 readcount = (int) psf_fread (ubuf.scbuf, sizeof (signed char), bufferlen, psf) ;
618 dpcm_read_dles2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
624 if ((pxi = psf->codec_data) == NULL)
632 readcount = (int) psf_fread (ubuf.sbuf, sizeof (short), bufferlen, psf) ;
644 dpcm_read_dles2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
650 if ((pxi = psf->codec_data) == NULL)
658 readcount = (int) psf_fread (ubuf.sbuf, sizeof (short), bufferlen, psf) ;
670 dpcm_read_dles2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
677 if ((pxi = psf->codec_data) == NULL)
680 normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;
687 readcount = (int) psf_fread (ubuf.sbuf, sizeof (short), bufferlen, psf) ;
699 dpcm_read_dles2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
706 if ((pxi = psf->codec_data) == NULL)
709 normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ;
716 readcount = (int) psf_fread (ubuf.sbuf, sizeof (short), bufferlen, psf) ;
742 dpcm_write_s2dsc (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
748 if ((pxi = psf->codec_data) == NULL)
757 writecount = (int) psf_fwrite (ubuf.scbuf, sizeof (signed char), bufferlen, psf) ;
768 dpcm_write_i2dsc (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
774 if ((pxi = psf->codec_data) == NULL)
783 writecount = (int) psf_fwrite (ubuf.scbuf, sizeof (signed char), bufferlen, psf) ;
794 dpcm_write_f2dsc (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
801 if ((pxi = psf->codec_data) == NULL)
804 normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7F) : 1.0 ;
812 writecount = (int) psf_fwrite (ubuf.scbuf, sizeof (signed char), bufferlen, psf) ;
823 dpcm_write_d2dsc (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
830 if ((pxi = psf->codec_data) == NULL)
833 normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7F) : 1.0 ;
841 writecount = (int) psf_fwrite (ubuf.scbuf, sizeof (signed char), bufferlen, psf) ;
853 dpcm_write_s2dles (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
859 if ((pxi = psf->codec_data) == NULL)
868 writecount = (int) psf_fwrite (ubuf.sbuf, sizeof (short), bufferlen, psf) ;
879 dpcm_write_i2dles (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
885 if ((pxi = psf->codec_data) == NULL)
894 writecount = (int) psf_fwrite (ubuf.sbuf, sizeof (short), bufferlen, psf) ;
905 dpcm_write_f2dles (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
912 if ((pxi = psf->codec_data) == NULL)
915 normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
923 writecount = (int) psf_fwrite (ubuf.sbuf, sizeof (short), bufferlen, psf) ;
934 dpcm_write_d2dles (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
941 if ((pxi = psf->codec_data) == NULL)
944 normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
952 writecount = (int) psf_fwrite (ubuf.sbuf, sizeof (short), bufferlen, psf) ;