void test_binheader_writef (void) { char buffer [18] ; SF_PRIVATE sf_private, *psf ; int k, errors = 0 ; print_test_name ("Testing binheader_writef") ; memset (&sf_private, 0, sizeof (sf_private)) ; psf = &sf_private ; for (k = 0 ; errors == 0 && k < 10 ; k++) { psf_strlcpy (buffer, sizeof (buffer), "abcdefghijklmnop") ; buffer [k] = 0 ; psf_binheader_writef (psf, "Ep", BHWp (buffer)) ; if ((psf->header.indx & 1) != 0) errors = 1 ; } ; free (psf->header.ptr) ; if (errors) { puts ("\nExiting due to errors.\n") ; exit (1) ; } ; puts ("ok") ; } /* test_log_printf */
static int gen_coding_history (char * added_history, int added_history_max, const SF_INFO * psfinfo) { char chnstr [16] ; int count, width ; /* ** From : http://www.sr.se/utveckling/tu/bwf/docs/codhist2.htm ** ** Parameter Variable string <allowed option> Unit ** ========================================================================================== ** Coding Algorithm A=<ANALOGUE, PCM, MPEG1L1, MPEG1L2, MPEG1L3, ** MPEG2L1, MPEG2L2, MPEG2L3> ** Sampling frequency F=<11000,22050,24000,32000,44100,48000> [Hz] ** Bit-rate B=<any bit-rate allowed in MPEG 2 (ISO/IEC [kbit/s per channel] ** 13818-3)> ** Word Length W=<8, 12, 14, 16, 18, 20, 22, 24> [bits] ** Mode M=<mono, stereo, dual-mono, joint-stereo> ** Text, free string T=<a free ASCII-text string for in house use. ** This string should contain no commas (ASCII ** 2Chex). Examples of the contents: ID-No; codec ** type; A/D type> */ switch (psfinfo->channels) { case 0 : return SF_FALSE ; case 1 : psf_strlcpy (chnstr, sizeof (chnstr), "mono") ; break ; case 2 : psf_strlcpy (chnstr, sizeof (chnstr), "stereo") ; break ; default : snprintf (chnstr, sizeof (chnstr), "%uchn", psfinfo->channels) ; break ; } ; switch (SF_CODEC (psfinfo->format)) { case SF_FORMAT_PCM_U8 : case SF_FORMAT_PCM_S8 : width = 8 ; break ; case SF_FORMAT_PCM_16 : width = 16 ; break ; case SF_FORMAT_PCM_24 : width = 24 ; break ; case SF_FORMAT_PCM_32 : width = 32 ; break ; case SF_FORMAT_FLOAT : width = 24 ; /* Bits in the mantissa + 1 */ break ; case SF_FORMAT_DOUBLE : width = 53 ; /* Bits in the mantissa + 1 */ break ; case SF_FORMAT_ULAW : case SF_FORMAT_ALAW : width = 12 ; break ; default : width = 42 ; break ; } ; count = snprintf (added_history, added_history_max, "A=PCM,F=%u,W=%hu,M=%s,T=%s-%s\r\n", psfinfo->samplerate, (unsigned short)width, chnstr, PACKAGE, VERSION) ; if (count >= added_history_max) return 0 ; return count ; } /* gen_coding_history */