Lines Matching defs:pgsm610
40 int (*decode_block) (SF_PRIVATE *psf, struct gsm610_tag *pgsm610) ;
41 int (*encode_block) (SF_PRIVATE *psf, struct gsm610_tag *pgsm610) ;
60 static int gsm610_read_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610, short *ptr, int len) ;
61 static int gsm610_write_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610, const short *ptr, int len) ;
63 static int gsm610_decode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) ;
64 static int gsm610_encode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) ;
66 static int gsm610_wav_decode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) ;
67 static int gsm610_wav_encode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) ;
79 { GSM610_PRIVATE *pgsm610 ;
92 if ((pgsm610 = calloc (1, sizeof (GSM610_PRIVATE))) == NULL)
95 psf->codec_data = pgsm610 ;
97 memset (pgsm610, 0, sizeof (GSM610_PRIVATE)) ;
105 if ((pgsm610->gsm_data = gsm_create ()) == NULL)
112 gsm_option (pgsm610->gsm_data, GSM_OPT_WAV49, &true_flag) ;
114 pgsm610->encode_block = gsm610_wav_encode_block ;
115 pgsm610->decode_block = gsm610_wav_decode_block ;
117 pgsm610->samplesperblock = WAVLIKE_GSM610_SAMPLES ;
118 pgsm610->blocksize = WAVLIKE_GSM610_BLOCKSIZE ;
123 pgsm610->encode_block = gsm610_encode_block ;
124 pgsm610->decode_block = gsm610_decode_block ;
126 pgsm610->samplesperblock = GSM610_SAMPLES ;
127 pgsm610->blocksize = GSM610_BLOCKSIZE ;
136 { if (psf->datalength % pgsm610->blocksize == 0)
137 pgsm610->blocks = psf->datalength / pgsm610->blocksize ;
138 else if (psf->datalength % pgsm610->blocksize == 1 && pgsm610->blocksize == GSM610_BLOCKSIZE)
146 pgsm610->blocks = psf->datalength / pgsm610->blocksize ;
150 pgsm610->blocks = psf->datalength / pgsm610->blocksize + 1 ;
153 psf->sf.frames = (sf_count_t) pgsm610->samplesperblock * pgsm610->blocks ;
157 pgsm610->decode_block (psf, pgsm610) ; /* Read first block. */
166 { pgsm610->blockcount = 0 ;
167 pgsm610->samplecount = 0 ;
190 gsm610_wav_decode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610)
193 pgsm610->blockcount ++ ;
194 pgsm610->samplecount = 0 ;
196 if (pgsm610->blockcount > pgsm610->blocks)
197 { memset (pgsm610->samples, 0, sizeof (pgsm610->samples)) ;
201 if ((k = (int) psf_fread (pgsm610->block, 1, WAVLIKE_GSM610_BLOCKSIZE, psf)) != WAVLIKE_GSM610_BLOCKSIZE)
204 if (gsm_decode (pgsm610->gsm_data, pgsm610->block, pgsm610->samples) < 0)
205 { psf_log_printf (psf, "Error from WAV gsm_decode() on frame : %d\n", pgsm610->blockcount) ;
209 if (gsm_decode (pgsm610->gsm_data, pgsm610->block + (WAVLIKE_GSM610_BLOCKSIZE + 1) / 2, pgsm610->samples + WAVLIKE_GSM610_SAMPLES / 2) < 0)
210 { psf_log_printf (psf, "Error from WAV gsm_decode() on frame : %d.5\n", pgsm610->blockcount) ;
218 gsm610_decode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610)
221 pgsm610->blockcount ++ ;
222 pgsm610->samplecount = 0 ;
224 if (pgsm610->blockcount > pgsm610->blocks)
225 { memset (pgsm610->samples, 0, sizeof (pgsm610->samples)) ;
229 if ((k = (int) psf_fread (pgsm610->block, 1, GSM610_BLOCKSIZE, psf)) != GSM610_BLOCKSIZE)
232 if (gsm_decode (pgsm610->gsm_data, pgsm610->block, pgsm610->samples) < 0)
233 { psf_log_printf (psf, "Error from standard gsm_decode() on frame : %d\n", pgsm610->blockcount) ;
241 gsm610_read_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610, short *ptr, int len)
245 { if (pgsm610->blockcount >= pgsm610->blocks && pgsm610->samplecount >= pgsm610->samplesperblock)
250 if (pgsm610->samplecount >= pgsm610->samplesperblock)
251 pgsm610->decode_block (psf, pgsm610) ;
253 count = pgsm610->samplesperblock - pgsm610->samplecount ;
256 memcpy (&(ptr [indx]), &(pgsm610->samples [pgsm610->samplecount]), count * sizeof (short)) ;
258 pgsm610->samplecount += count ;
267 { GSM610_PRIVATE *pgsm610 ;
273 pgsm610 = (GSM610_PRIVATE*) psf->codec_data ;
278 count = gsm610_read_block (psf, pgsm610, ptr, readcount) ;
292 { GSM610_PRIVATE *pgsm610 ;
300 pgsm610 = (GSM610_PRIVATE*) psf->codec_data ;
306 count = gsm610_read_block (psf, pgsm610, sptr, readcount) ;
318 { GSM610_PRIVATE *pgsm610 ;
327 pgsm610 = (GSM610_PRIVATE*) psf->codec_data ;
335 count = gsm610_read_block (psf, pgsm610, sptr, readcount) ;
347 { GSM610_PRIVATE *pgsm610 ;
358 pgsm610 = (GSM610_PRIVATE*) psf->codec_data ;
364 count = gsm610_read_block (psf, pgsm610, sptr, readcount) ;
376 { GSM610_PRIVATE *pgsm610 ;
381 pgsm610 = (GSM610_PRIVATE*) psf->codec_data ;
392 pgsm610->blockcount = 0 ;
394 gsm_init (pgsm610->gsm_data) ;
397 gsm_option (pgsm610->gsm_data, GSM_OPT_WAV49, &true_flag) ;
399 pgsm610->decode_block (psf, pgsm610) ;
400 pgsm610->samplecount = 0 ;
404 if (offset < 0 || offset > pgsm610->blocks * pgsm610->samplesperblock)
409 newblock = offset / pgsm610->samplesperblock ;
410 newsample = offset % pgsm610->samplesperblock ;
413 { if (psf->read_current != newblock * pgsm610->samplesperblock + newsample)
414 { psf_fseek (psf, psf->dataoffset + newblock * pgsm610->samplesperblock, SEEK_SET) ;
415 pgsm610->blockcount = newblock ;
416 pgsm610->decode_block (psf, pgsm610) ;
417 pgsm610->samplecount = newsample ;
420 return newblock * pgsm610->samplesperblock + newsample ;
433 gsm610_encode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610)
437 gsm_encode (pgsm610->gsm_data, pgsm610->samples, pgsm610->block) ;
440 if ((k = (int) psf_fwrite (pgsm610->block, 1, GSM610_BLOCKSIZE, psf)) != GSM610_BLOCKSIZE)
443 pgsm610->samplecount = 0 ;
444 pgsm610->blockcount ++ ;
447 memset (pgsm610->samples, 0, sizeof (pgsm610->samples)) ;
453 gsm610_wav_encode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610)
457 gsm_encode (pgsm610->gsm_data, pgsm610->samples, pgsm610->block) ;
458 gsm_encode (pgsm610->gsm_data, pgsm610->samples+WAVLIKE_GSM610_SAMPLES / 2, pgsm610->block+WAVLIKE_GSM610_BLOCKSIZE / 2) ;
461 if ((k = (int) psf_fwrite (pgsm610->block, 1, WAVLIKE_GSM610_BLOCKSIZE, psf)) != WAVLIKE_GSM610_BLOCKSIZE)
464 pgsm610->samplecount = 0 ;
465 pgsm610->blockcount ++ ;
468 memset (pgsm610->samples, 0, sizeof (pgsm610->samples)) ;
474 gsm610_write_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610, const short *ptr, int len)
478 { count = pgsm610->samplesperblock - pgsm610->samplecount ;
483 memcpy (&(pgsm610->samples [pgsm610->samplecount]), &(ptr [indx]), count * sizeof (short)) ;
485 pgsm610->samplecount += count ;
488 if (pgsm610->samplecount >= pgsm610->samplesperblock)
489 pgsm610->encode_block (psf, pgsm610) ;
497 { GSM610_PRIVATE *pgsm610 ;
503 pgsm610 = (GSM610_PRIVATE*) psf->codec_data ;
508 count = gsm610_write_block (psf, pgsm610, ptr, writecount) ;
522 { GSM610_PRIVATE *pgsm610 ;
530 pgsm610 = (GSM610_PRIVATE*) psf->codec_data ;
538 count = gsm610_write_block (psf, pgsm610, sptr, writecount) ;
548 { GSM610_PRIVATE *pgsm610 ;
557 pgsm610 = (GSM610_PRIVATE*) psf->codec_data ;
567 count = gsm610_write_block (psf, pgsm610, sptr, writecount) ;
579 { GSM610_PRIVATE *pgsm610 ;
588 pgsm610 = (GSM610_PRIVATE*) psf->codec_data ;
598 count = gsm610_write_block (psf, pgsm610, sptr, writecount) ;
608 { GSM610_PRIVATE *pgsm610 ;
613 pgsm610 = (GSM610_PRIVATE*) psf->codec_data ;
620 if (pgsm610->samplecount && pgsm610->samplecount < pgsm610->samplesperblock)
621 pgsm610->encode_block (psf, pgsm610) ;
624 if (pgsm610->gsm_data)
625 gsm_destroy (pgsm610->gsm_data) ;