Lines Matching defs:psf
46 static int wve_read_header (SF_PRIVATE *psf) ;
47 static int wve_write_header (SF_PRIVATE *psf, int calc_length) ;
48 static int wve_close (SF_PRIVATE *psf) ;
55 wve_open (SF_PRIVATE *psf)
58 if (psf->is_pipe)
61 if (psf->file.mode == SFM_READ || (psf->file.mode == SFM_RDWR && psf->filelength > 0))
62 { if ((error = wve_read_header (psf)))
66 if (psf->file.mode == SFM_WRITE || psf->file.mode == SFM_RDWR)
67 { if ((SF_CONTAINER (psf->sf.format)) != SF_FORMAT_WVE)
70 psf->endian = SF_ENDIAN_BIG ;
72 if ((error = wve_write_header (psf, SF_FALSE)))
75 psf->write_header = wve_write_header ;
78 psf->blockwidth = psf->bytewidth * psf->sf.channels ;
80 psf->container_close = wve_close ;
82 error = alaw_init (psf) ;
91 wve_read_header (SF_PRIVATE *psf)
97 psf_binheader_readf (psf, "pm", 0, &marker) ;
99 { psf_log_printf (psf, "Could not find '%M'\n", ALAW_MARKER) ;
103 psf_binheader_readf (psf, "m", &marker) ;
105 { psf_log_printf (psf, "Could not find '%M'\n", SOUN_MARKER) ;
109 psf_binheader_readf (psf, "m", &marker) ;
111 { psf_log_printf (psf, "Could not find '%M'\n", DFIL_MARKER) ;
115 psf_binheader_readf (psf, "m", &marker) ;
117 { psf_log_printf (psf, "Could not find '%M'\n", ESSN_MARKER) ;
121 psf_binheader_readf (psf, "E2", &version) ;
123 psf_log_printf (psf, "Psion Palmtop Alaw (.wve)\n"
129 psf_log_printf (psf, "Psion version %d should be %d\n", version, PSION_VERSION) ;
131 psf_binheader_readf (psf, "E4", &datalength) ;
132 psf->dataoffset = PSION_DATAOFFSET ;
133 if (datalength != psf->filelength - psf->dataoffset)
134 { psf->datalength = psf->filelength - psf->dataoffset ;
135 psf_log_printf (psf, "Data length %d should be %D\n", datalength, psf->datalength) ;
138 psf->datalength = datalength ;
140 psf_binheader_readf (psf, "E22222", &padding, &repeats, &trash, &trash, &trash) ;
142 psf->sf.format = SF_FORMAT_WVE | SF_FORMAT_ALAW ;
143 psf->sf.samplerate = 8000 ;
144 psf->sf.frames = psf->datalength ;
145 psf->sf.channels = 1 ;
154 wve_write_header (SF_PRIVATE *psf, int calc_length)
158 current = psf_ftell (psf) ;
161 { psf->filelength = psf_get_filelen (psf) ;
163 psf->datalength = psf->filelength - psf->dataoffset ;
164 if (psf->dataend)
165 psf->datalength -= psf->filelength - psf->dataend ;
167 psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
171 psf->header.ptr [0] = 0 ;
172 psf->header.indx = 0 ;
173 psf_fseek (psf, 0, SEEK_SET) ;
176 datalen = psf->datalength ;
177 psf_binheader_writef (psf, "Emmmm", BHWm (ALAW_MARKER), BHWm (SOUN_MARKER), BHWm (DFIL_MARKER), BHWm (ESSN_MARKER)) ;
178 psf_binheader_writef (psf, "E2422222", BHW2 (PSION_VERSION), BHW4 (datalen), BHW2 (0), BHW2 (0), BHW2 (0), BHW2 (0), BHW2 (0)) ;
179 psf_fwrite (psf->header.ptr, psf->header.indx, 1, psf) ;
181 if (psf->sf.channels != 1)
184 if (psf->error)
185 return psf->error ;
187 psf->dataoffset = psf->header.indx ;
190 psf_fseek (psf, current, SEEK_SET) ;
192 return psf->error ;
199 wve_close (SF_PRIVATE *psf)
201 if (psf->file.mode == SFM_WRITE || psf->file.mode == SFM_RDWR)
205 wve_write_header (psf, SF_TRUE) ;