Lines Matching refs:psf
73 static int svx_close (SF_PRIVATE *psf) ;
74 static int svx_write_header (SF_PRIVATE *psf, int calc_length) ;
75 static int svx_read_header (SF_PRIVATE *psf) ;
82 svx_open (SF_PRIVATE *psf) in svx_open() argument
85 if (psf->file.mode == SFM_READ || (psf->file.mode == SFM_RDWR && psf->filelength > 0)) in svx_open()
86 { if ((error = svx_read_header (psf))) in svx_open()
89 psf->endian = SF_ENDIAN_BIG ; /* All SVX files are big endian. */ in svx_open()
91 psf->blockwidth = psf->sf.channels * psf->bytewidth ; in svx_open()
92 if (psf->blockwidth) in svx_open()
93 psf->sf.frames = psf->datalength / psf->blockwidth ; in svx_open()
95 psf_fseek (psf, psf->dataoffset, SEEK_SET) ; in svx_open()
98 if (psf->file.mode == SFM_WRITE || psf->file.mode == SFM_RDWR) in svx_open()
99 { if (psf->is_pipe) in svx_open()
102 if ((SF_CONTAINER (psf->sf.format)) != SF_FORMAT_SVX) in svx_open()
105 psf->endian = SF_ENDIAN (psf->sf.format) ; in svx_open()
107 if (psf->endian == SF_ENDIAN_LITTLE || (CPU_IS_LITTLE_ENDIAN && psf->endian == SF_ENDIAN_CPU)) in svx_open()
110 psf->endian = SF_ENDIAN_BIG ; /* All SVX files are big endian. */ in svx_open()
112 error = svx_write_header (psf, SF_FALSE) ; in svx_open()
116 psf->write_header = svx_write_header ; in svx_open()
119 psf->container_close = svx_close ; in svx_open()
121 if ((error = pcm_init (psf))) in svx_open()
131 svx_read_header (SF_PRIVATE *psf) in svx_read_header() argument
137 if (psf->filelength > SF_PLATFORM_S64 (0xffffffff)) in svx_read_header()
138 psf_log_printf (psf, "Warning : filelength > 0xffffffff. This is bad!!!!\n") ; in svx_read_header()
141 psf_binheader_readf (psf, "p", 0) ; in svx_read_header()
144 psf->sf.channels = 1 ; in svx_read_header()
146 psf->sf.format = SF_FORMAT_SVX ; in svx_read_header()
149 { psf_binheader_readf (psf, "Em4", &marker, &chunk_size) ; in svx_read_header()
156 if (chunk_size != psf->filelength - 2 * sizeof (chunk_size)) in svx_read_header()
157 …psf_log_printf (psf, "FORM : %u (should be %u)\n", chunk_size, (uint32_t) psf->filelength - 2 * si… in svx_read_header()
159 psf_log_printf (psf, "FORM : %u\n", chunk_size) ; in svx_read_header()
162 psf_binheader_readf (psf, "m", &marker) ; in svx_read_header()
165 psf_log_printf (psf, " %M\n", marker) ; in svx_read_header()
173 psf_log_printf (psf, " VHDR : %d\n", chunk_size) ; in svx_read_header()
175 psf_binheader_readf (psf, "E4442114", &(vhdr.oneShotHiSamples), &(vhdr.repeatHiSamples), in svx_read_header()
179 psf_log_printf (psf, " OneShotHiSamples : %d\n", vhdr.oneShotHiSamples) ; in svx_read_header()
180 psf_log_printf (psf, " RepeatHiSamples : %d\n", vhdr.repeatHiSamples) ; in svx_read_header()
181 psf_log_printf (psf, " samplesPerHiCycle : %d\n", vhdr.samplesPerHiCycle) ; in svx_read_header()
182 psf_log_printf (psf, " Sample Rate : %d\n", vhdr.samplesPerSec) ; in svx_read_header()
183 psf_log_printf (psf, " Octave : %d\n", vhdr.octave) ; in svx_read_header()
185 psf_log_printf (psf, " Compression : %d => ", vhdr.compression) ; in svx_read_header()
188 { case 0 : psf_log_printf (psf, "None.\n") ; in svx_read_header()
190 case 1 : psf_log_printf (psf, "Fibonacci delta\n") ; in svx_read_header()
192 case 2 : psf_log_printf (psf, "Exponential delta\n") ; in svx_read_header()
196 psf_log_printf (psf, " Volume : %d\n", vhdr.volume) ; in svx_read_header()
198 psf->sf.samplerate = vhdr.samplesPerSec ; in svx_read_header()
201 { psf->sf.format |= SF_FORMAT_PCM_S8 ; in svx_read_header()
202 psf->bytewidth = 1 ; in svx_read_header()
205 { psf->sf.format |= SF_FORMAT_PCM_16 ; in svx_read_header()
206 psf->bytewidth = 2 ; in svx_read_header()
216 psf->datalength = chunk_size ; in svx_read_header()
218 psf->dataoffset = psf_ftell (psf) ; in svx_read_header()
219 if (psf->dataoffset < 0) in svx_read_header()
222 if (psf->datalength > psf->filelength - psf->dataoffset) in svx_read_header()
223 …{ psf_log_printf (psf, " BODY : %D (should be %D)\n", psf->datalength, psf->filelength - psf->data… in svx_read_header()
224 psf->datalength = psf->filelength - psf->dataoffset ; in svx_read_header()
227 psf_log_printf (psf, " BODY : %D\n", psf->datalength) ; in svx_read_header()
231 if (! psf->sf.seekable) in svx_read_header()
234 psf_fseek (psf, psf->datalength, SEEK_CUR) ; in svx_read_header()
241 psf_log_printf (psf, " %M : %u\n", marker, chunk_size) ; in svx_read_header()
243 if (strlen (psf->file.name.c) != chunk_size) in svx_read_header()
244 { if (chunk_size > sizeof (psf->file.name.c) - 1) in svx_read_header()
247 psf_binheader_readf (psf, "b", psf->file.name.c, chunk_size) ; in svx_read_header()
248 psf->file.name.c [chunk_size] = 0 ; in svx_read_header()
251 psf_binheader_readf (psf, "j", chunk_size) ; in svx_read_header()
258 psf_log_printf (psf, " %M : %u\n", marker, chunk_size) ; in svx_read_header()
260 psf_binheader_readf (psf, "j", chunk_size) ; in svx_read_header()
267 psf_log_printf (psf, " %M : %u\n", marker, chunk_size) ; in svx_read_header()
269 bytecount += psf_binheader_readf (psf, "E4", &channels) ; in svx_read_header()
272 psf_log_printf (psf, " Channels : %d => mono\n", channels) ; in svx_read_header()
274 { psf->sf.channels = 2 ; in svx_read_header()
275 psf_log_printf (psf, " Channels : %d => stereo\n", channels) ; in svx_read_header()
278 psf_log_printf (psf, " Channels : %d *** assuming mono\n", channels) ; in svx_read_header()
280 psf_binheader_readf (psf, "j", chunk_size - bytecount) ; in svx_read_header()
289 psf_log_printf (psf, " %M : %u\n", marker, chunk_size) ; in svx_read_header()
291 psf_binheader_readf (psf, "j", chunk_size) ; in svx_read_header()
297 …psf_log_printf (psf, "*** Unknown chunk marker (%X) at position %D with length %u. Exiting parser.… in svx_read_header()
303 { psf_log_printf (psf, "%M : %u (unknown marker)\n", marker, chunk_size) ; in svx_read_header()
304 psf_binheader_readf (psf, "j", chunk_size) ; in svx_read_header()
307 if ((chunk_size = psf_ftell (psf)) & 0x03) in svx_read_header()
308 … { psf_log_printf (psf, " Unknown chunk marker at position %d. Resynching.\n", chunk_size - 4) ; in svx_read_header()
310 psf_binheader_readf (psf, "j", -3) ; in svx_read_header()
313 …psf_log_printf (psf, "*** Unknown chunk marker (%X) at position %D. Exiting parser.\n", marker, ps… in svx_read_header()
317 if (! psf->sf.seekable && (parsestage & HAVE_BODY)) in svx_read_header()
320 if (psf_ftell (psf) >= psf->filelength - SIGNED_SIZEOF (chunk_size)) in svx_read_header()
327 if (psf->dataoffset <= 0) in svx_read_header()
334 svx_close (SF_PRIVATE *psf) in svx_close() argument
336 if (psf->file.mode == SFM_WRITE || psf->file.mode == SFM_RDWR) in svx_close()
337 svx_write_header (psf, SF_TRUE) ; in svx_close()
343 svx_write_header (SF_PRIVATE *psf, int calc_length) in svx_write_header() argument
347 current = psf_ftell (psf) ; in svx_write_header()
350 { psf->filelength = psf_get_filelen (psf) ; in svx_write_header()
352 psf->datalength = psf->filelength - psf->dataoffset ; in svx_write_header()
354 if (psf->dataend) in svx_write_header()
355 psf->datalength -= psf->filelength - psf->dataend ; in svx_write_header()
357 psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; in svx_write_header()
360 psf->header.ptr [0] = 0 ; in svx_write_header()
361 psf->header.indx = 0 ; in svx_write_header()
362 psf_fseek (psf, 0, SEEK_SET) ; in svx_write_header()
365 psf_binheader_writef (psf, "Etm8", BHWm (FORM_MARKER), BHW8 ((psf->filelength < 8) ? in svx_write_header()
366 psf->filelength * 0 : psf->filelength - 8)) ; in svx_write_header()
368 psf_binheader_writef (psf, "m", BHWm ((psf->bytewidth == 1) ? SVX8_MARKER : SV16_MARKER)) ; in svx_write_header()
371 psf_binheader_writef (psf, "Em4", BHWm (VHDR_MARKER), BHW4 (sizeof (VHDR_CHUNK))) ; in svx_write_header()
373 psf_binheader_writef (psf, "E444", BHW4 (psf->sf.frames), BHW4 (0), BHW4 (0)) ; in svx_write_header()
375 psf_binheader_writef (psf, "E211", BHW2 (psf->sf.samplerate), BHW1 (1), BHW1 (0)) ; in svx_write_header()
377 psf_binheader_writef (psf, "E4", BHW4 ((psf->bytewidth == 1) ? 0xFF : 0xFFFF)) ; in svx_write_header()
379 if (psf->sf.channels == 2) in svx_write_header()
380 psf_binheader_writef (psf, "Em44", BHWm (CHAN_MARKER), BHW4 (4), BHW4 (6)) ; in svx_write_header()
383 …psf_binheader_writef (psf, "Emsms", BHWm (NAME_MARKER), BHWs (psf->file.name.c), BHWm (ANNO_MARKER… in svx_write_header()
386 psf_binheader_writef (psf, "Etm8", BHWm (BODY_MARKER), BHW8 ((psf->datalength < 0) ? in svx_write_header()
387 psf->datalength * 0 : psf->datalength)) ; in svx_write_header()
389 psf_fwrite (psf->header.ptr, psf->header.indx, 1, psf) ; in svx_write_header()
391 if (psf->error) in svx_write_header()
392 return psf->error ; in svx_write_header()
394 psf->dataoffset = psf->header.indx ; in svx_write_header()
397 psf_fseek (psf, current, SEEK_SET) ; in svx_write_header()
399 return psf->error ; in svx_write_header()