Lines Matching defs:psf

31 {	int 			(*decode_block) (SF_PRIVATE *psf, struct IMA_ADPCM_PRIVATE_tag *pima) ;
32 int (*encode_block) (SF_PRIVATE *psf, struct IMA_ADPCM_PRIVATE_tag *pima) ;
64 static int ima_reader_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) ;
65 static int ima_writer_init (SF_PRIVATE *psf, int blockalign) ;
67 static int ima_read_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima, short *ptr, int len) ;
68 static int ima_write_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima, const short *ptr, int len) ;
70 static sf_count_t ima_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
71 static sf_count_t ima_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
72 static sf_count_t ima_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
73 static sf_count_t ima_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
75 static sf_count_t ima_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
76 static sf_count_t ima_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
77 static sf_count_t ima_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
78 static sf_count_t ima_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
80 static sf_count_t aiff_ima_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
81 static sf_count_t wavlike_ima_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
83 static int ima_close (SF_PRIVATE *psf) ;
85 static int wavlike_ima_decode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) ;
86 static int wavlike_ima_encode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) ;
88 /*-static int aiff_ima_reader_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) ;-*/
89 static int aiff_ima_decode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) ;
90 static int aiff_ima_encode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) ;
108 wavlike_ima_init (SF_PRIVATE *psf, int blockalign, int samplesperblock)
111 if (psf->codec_data != NULL)
112 { psf_log_printf (psf, "*** psf->codec_data is not NULL.\n") ;
116 if (psf->file.mode == SFM_RDWR)
119 if (psf->file.mode == SFM_READ)
120 if ((error = ima_reader_init (psf, blockalign, samplesperblock)))
123 if (psf->file.mode == SFM_WRITE)
124 if ((error = ima_writer_init (psf, blockalign)))
127 psf->codec_close = ima_close ;
128 psf->seek = wavlike_ima_seek ;
134 aiff_ima_init (SF_PRIVATE *psf, int blockalign, int samplesperblock)
137 if (psf->file.mode == SFM_RDWR)
140 if (psf->file.mode == SFM_READ)
141 if ((error = ima_reader_init (psf, blockalign, samplesperblock)))
144 if (psf->file.mode == SFM_WRITE)
145 if ((error = ima_writer_init (psf, blockalign)))
148 psf->codec_close = ima_close ;
149 psf->seek = aiff_ima_seek ;
155 ima_close (SF_PRIVATE *psf)
158 pima = (IMA_ADPCM_PRIVATE*) psf->codec_data ;
160 if (psf->file.mode == SFM_WRITE)
165 pima->encode_block (psf, pima) ;
167 psf->sf.frames = pima->samplesperblock * pima->blockcount / psf->sf.channels ;
178 ima_reader_init (SF_PRIVATE *psf, int blockalign, int samplesperblock)
182 if (psf->file.mode != SFM_READ)
190 pimasize = sizeof (IMA_ADPCM_PRIVATE) + psf->sf.channels * (blockalign + samplesperblock + sizeof(short) * count) ;
195 psf->codec_data = (void*) pima ;
198 pima->block = (unsigned char*) (pima->data + samplesperblock * psf->sf.channels) ;
200 pima->channels = psf->sf.channels ;
204 psf->filelength = psf_get_filelen (psf) ;
205 psf->datalength = (psf->dataend) ? psf->dataend - psf->dataoffset :
206 psf->filelength - psf->dataoffset ;
209 { psf_log_printf (psf, "*** Error : pima->blocksize should be > 0.\n") ;
214 { psf_log_printf (psf, "*** Error : pima->samplesperblock should be > 0.\n") ;
218 if (psf->datalength % pima->blocksize)
219 pima->blocks = psf->datalength / pima->blocksize + 1 ;
221 pima->blocks = psf->datalength / pima->blocksize ;
223 switch (SF_CONTAINER (psf->sf.format))
229 { psf_log_printf (psf, "*** Error : samplesperblock should be %d.\n", count) ;
235 psf->sf.frames = pima->samplesperblock * pima->blocks ;
239 psf_log_printf (psf, "still need to check block count\n") ;
241 psf->sf.frames = pima->samplesperblock * pima->blocks / pima->channels ;
245 psf_log_printf (psf, "ima_reader_init: bad psf->sf.format\n") ;
249 pima->decode_block (psf, pima) ; /* Read first block. */
251 psf->read_short = ima_read_s ;
252 psf->read_int = ima_read_i ;
253 psf->read_float = ima_read_f ;
254 psf->read_double = ima_read_d ;
260 aiff_ima_decode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima)
276 if ((k = (int) psf_fread (pima->block, 1, pima->blocksize * pima->channels, psf)) != pima->blocksize * pima->channels)
277 psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pima->blocksize) ;
329 aiff_ima_encode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima)
381 if ((k = (int) psf_fwrite (pima->block, 1, pima->channels * pima->blocksize, psf)) != pima->channels * pima->blocksize)
382 psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, pima->channels * pima->blocksize) ;
392 wavlike_ima_decode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima)
404 if ((k = (int) psf_fread (pima->block, 1, pima->blocksize, psf)) != pima->blocksize)
405 psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pima->blocksize) ;
419 psf_log_printf (psf, "IMA ADPCM synchronisation error.\n") ;
483 wavlike_ima_encode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima)
560 if ((k = (int) psf_fwrite (pima->block, 1, pima->blocksize, psf)) != pima->blocksize)
561 psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, pima->blocksize) ;
571 ima_read_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima, short *ptr, int len)
581 pima->decode_block (psf, pima) ;
596 ima_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
601 if (! psf->codec_data)
603 pima = (IMA_ADPCM_PRIVATE*) psf->codec_data ;
608 count = ima_read_block (psf, pima, ptr, readcount) ;
620 ima_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
627 if (! psf->codec_data)
629 pima = (IMA_ADPCM_PRIVATE*) psf->codec_data ;
635 count = ima_read_block (psf, pima, sptr, readcount) ;
648 ima_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
656 if (! psf->codec_data)
658 pima = (IMA_ADPCM_PRIVATE*) psf->codec_data ;
660 normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;
666 count = ima_read_block (psf, pima, sptr, readcount) ;
679 ima_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
687 if (! psf->codec_data)
689 pima = (IMA_ADPCM_PRIVATE*) psf->codec_data ;
691 normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ;
697 count = ima_read_block (psf, pima, sptr, readcount) ;
710 aiff_ima_seek (SF_PRIVATE *psf, int mode, sf_count_t offset)
714 if (! psf->codec_data)
716 pima = (IMA_ADPCM_PRIVATE*) psf->codec_data ;
718 if (psf->datalength < 0 || psf->dataoffset < 0)
719 { psf->error = SFE_BAD_SEEK ;
724 { psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
726 pima->decode_block (psf, pima) ;
732 { psf->error = SFE_BAD_SEEK ;
738 newblockaiff = newblock * psf->sf.channels ;
741 { psf_fseek (psf, psf->dataoffset + newblockaiff * pima->blocksize, SEEK_SET) ;
743 pima->decode_block (psf, pima) ;
748 psf->error = SFE_BAD_SEEK ;
756 wavlike_ima_seek (SF_PRIVATE *psf, int mode, sf_count_t offset)
760 if (! psf->codec_data)
762 pima = (IMA_ADPCM_PRIVATE*) psf->codec_data ;
764 if (psf->datalength < 0 || psf->dataoffset < 0)
765 { psf->error = SFE_BAD_SEEK ;
770 { psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
775 pima->decode_block (psf, pima) ;
781 { psf->error = SFE_BAD_SEEK ;
789 { psf_fseek (psf, psf->dataoffset + newblock * pima->blocksize, SEEK_SET) ;
791 pima->decode_block (psf, pima) ;
796 psf->error = SFE_BAD_SEEK ;
808 ima_writer_init (SF_PRIVATE *psf, int blockalign)
813 if (psf->file.mode != SFM_WRITE)
816 switch (SF_CONTAINER (psf->sf.format))
819 samplesperblock = 2 * (blockalign - 4 * psf->sf.channels) / psf->sf.channels + 1 ;
823 samplesperblock = 2 * ((blockalign - 2) * psf->sf.channels) / psf->sf.channels ;
827 psf_log_printf (psf, "ima_reader_init: bad psf->sf.format\n") ;
831 pimasize = sizeof (IMA_ADPCM_PRIVATE) + blockalign + 3 * psf->sf.channels * samplesperblock ;
836 psf->codec_data = (void*) pima ;
838 pima->channels = psf->sf.channels ;
847 switch (SF_CONTAINER (psf->sf.format))
858 psf_log_printf (psf, "ima_reader_init: bad psf->sf.format\n") ;
862 psf->write_short = ima_write_s ;
863 psf->write_int = ima_write_i ;
864 psf->write_float = ima_write_f ;
865 psf->write_double = ima_write_d ;
874 ima_write_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima, const short *ptr, int len)
889 pima->encode_block (psf, pima) ;
896 ima_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
901 if (! psf->codec_data)
903 pima = (IMA_ADPCM_PRIVATE*) psf->codec_data ;
908 count = ima_write_block (psf, pima, ptr, writecount) ;
920 ima_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
927 if (! psf->codec_data)
929 pima = (IMA_ADPCM_PRIVATE*) psf->codec_data ;
937 count = ima_write_block (psf, pima, sptr, writecount) ;
948 ima_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
956 if (! psf->codec_data)
958 pima = (IMA_ADPCM_PRIVATE*) psf->codec_data ;
960 normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
968 count = ima_write_block (psf, pima, sptr, writecount) ;
979 ima_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
987 if (! psf->codec_data)
989 pima = (IMA_ADPCM_PRIVATE*) psf->codec_data ;
991 normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
999 count = ima_write_block (psf, pima, sptr, writecount) ;