SphinxBase  5prealpha
bio.h File Reference

Cross platform binary IO to process files in sphinx3 format. More...

#include <stdio.h>
#include <stdarg.h>
#include <sphinxbase/sphinxbase_export.h>
#include <sphinxbase/prim_type.h>
#include <sphinxbase/byteorder.h>

Go to the source code of this file.

Macros

#define BYTE_ORDER_MAGIC   (0x11223344)
 
#define REVERSE_SENSE_SWAP_INT16(x)
 "reversed senses" SWAP, ARCHAN: This is still incorporated in Sphinx 3 because lm3g2dmp used it. More...
 
#define REVERSE_SENSE_SWAP_INT32(x)
 

Functions

SPHINXBASE_EXPORT int32 bio_readhdr (FILE *fp, char ***name, char ***val, int32 *swap)
 Read binary file format header: has the following format. More...
 
SPHINXBASE_EXPORT int32 bio_writehdr_version (FILE *fp, char *version)
 Write a simple binary file header, containing only the version string. More...
 
SPHINXBASE_EXPORT int32 bio_writehdr (FILE *fp,...)
 Write a simple binary file header with only byte order magic word. More...
 
SPHINXBASE_EXPORT void bio_hdrarg_free (char **name, char **val)
 Free name and value strings previously allocated and returned by bio_readhdr. More...
 
SPHINXBASE_EXPORT int32 bio_fread (void *buf, int32 el_sz, int32 n_el, FILE *fp, int32 swap, uint32 *chksum)
 Like fread but perform byteswapping and accumulate checksum (the 2 extra arguments). More...
 
SPHINXBASE_EXPORT int32 bio_fwrite (const void *buf, int32 el_sz, int32 n_el, FILE *fp, int32 swap, uint32 *chksum)
 Like fwrite but perform byteswapping and accumulate checksum (the 2 extra arguments). More...
 
SPHINXBASE_EXPORT int32 bio_fread_1d (void **buf, size_t el_sz, uint32 *n_el, FILE *fp, int32 sw, uint32 *ck)
 Read a 1-d array (fashioned after fread): More...
 
SPHINXBASE_EXPORT int32 bio_fread_2d (void ***arr, size_t e_sz, uint32 *d1, uint32 *d2, FILE *fp, uint32 swap, uint32 *chksum)
 Read a 2-d matrix: More...
 
SPHINXBASE_EXPORT int32 bio_fread_3d (void ****arr, size_t e_sz, uint32 *d1, uint32 *d2, uint32 *d3, FILE *fp, uint32 swap, uint32 *chksum)
 Read a 3-d array (set of matrices) More...
 
SPHINXBASE_EXPORT void bio_verify_chksum (FILE *fp, int32 byteswap, uint32 chksum)
 Read and verify checksum at the end of binary file. More...
 
SPHINXBASE_EXPORT int bio_fwrite_1d (void *arr, size_t e_sz, uint32 d1, FILE *fp, uint32 *chksum)
 Write a 1-d array. More...
 
SPHINXBASE_EXPORT int bio_fwrite_3d (void ***arr, size_t e_sz, uint32 d1, uint32 d2, uint32 d3, FILE *fp, uint32 *chksum)
 Write a 3-d array (set of matrices). More...
 
SPHINXBASE_EXPORT int16 * bio_read_wavfile (char const *directory, char const *filename, char const *extension, int32 header, int32 endian, size_t *nsamps)
 Read raw data from the wav file. More...
 

Detailed Description

Cross platform binary IO to process files in sphinx3 format.

Definition in file bio.h.

Macro Definition Documentation

#define REVERSE_SENSE_SWAP_INT16 (   x)

"reversed senses" SWAP, ARCHAN: This is still incorporated in Sphinx 3 because lm3g2dmp used it.

Don't think that I am very happy with it.

Definition at line 103 of file bio.h.

Function Documentation

SPHINXBASE_EXPORT int32 bio_fread ( void *  buf,
int32  el_sz,
int32  n_el,
FILE *  fp,
int32  swap,
uint32 *  chksum 
)

Like fread but perform byteswapping and accumulate checksum (the 2 extra arguments).

Returns
unlike fread, returns -1 if required number of elements (n_el) not read; also, no byteswapping or checksum accumulation is performed in that case.
Parameters
bufIn: buffer to write
el_szIn: element size
n_elIn: number of elements
fpIn: An input file pointer
swapIn: Byteswap iff (swap != 0)
chksumIn/Out: Accumulated checksum

Definition at line 326 of file bio.c.

Referenced by bio_fread_1d(), bio_fread_2d(), bio_fread_3d(), and logmath_read().

SPHINXBASE_EXPORT int32 bio_fread_1d ( void **  buf,
size_t  el_sz,
uint32 *  n_el,
FILE *  fp,
int32  sw,
uint32 *  ck 
)

Read a 1-d array (fashioned after fread):

  • 4-byte array size (returned in n_el)
  • memory allocated for the array and read (returned in buf)

Byteswapping and checksum accumulation performed as necessary. Fails fatally if expected data not read.

Returns
number of array elements allocated and read; -1 if error.
Parameters
bufOut: contains array data; allocated by this function; can be freed using ckd_free
el_szIn: Array element size
n_elOut: Number of array elements allocated/read
fpIn: File to read
swIn: Byteswap iff (swap != 0)
ckIn/Out: Accumulated checksum

Definition at line 364 of file bio.c.

References bio_fread(), ckd_calloc, and E_FATAL.

Referenced by bio_fread_2d(), and bio_fread_3d().

SPHINXBASE_EXPORT int32 bio_fread_2d ( void ***  arr,
size_t  e_sz,
uint32 *  d1,
uint32 *  d2,
FILE *  fp,
uint32  swap,
uint32 *  chksum 
)

Read a 2-d matrix:

  • 4-byte # rows, # columns (returned in d1, d2, d3)
  • memory allocated for the array and read (returned in buf)

Byteswapping and checksum accumulation performed as necessary. Fails fatally if expected data not read.

Returns
number of array elements allocated and read; -1 if error.

Definition at line 384 of file bio.c.

References bio_fread(), bio_fread_1d(), ckd_alloc_2d_ptr, and E_ERROR_SYSTEM.

SPHINXBASE_EXPORT int32 bio_fread_3d ( void ****  arr,
size_t  e_sz,
uint32 *  d1,
uint32 *  d2,
uint32 *  d3,
FILE *  fp,
uint32  swap,
uint32 *  chksum 
)

Read a 3-d array (set of matrices)

  • 4-byte # matrices, # rows, # columns (returned in d1, d2, d3)
  • memory allocated for the array and read (returned in buf)

Byteswapping and checksum accumulation performed as necessary. Fails fatally if expected data not read.

Returns
number of array elements allocated and read; -1 if error.

Definition at line 430 of file bio.c.

References bio_fread(), bio_fread_1d(), ckd_alloc_3d_ptr, and E_ERROR_SYSTEM.

Referenced by feat_read_lda().

SPHINXBASE_EXPORT int32 bio_fwrite ( const void *  buf,
int32  el_sz,
int32  n_el,
FILE *  fp,
int32  swap,
uint32 *  chksum 
)

Like fwrite but perform byteswapping and accumulate checksum (the 2 extra arguments).

Returns
the number of elemens written (like fwrite).
Parameters
bufIn: buffer to write
el_szIn: element size
n_elIn: number of elements
fpIn: An input file pointer
swapIn: Byteswap iff (swap != 0)
chksumIn/Out: Accumulated checksum

Definition at line 342 of file bio.c.

References ckd_calloc, and ckd_free().

Referenced by bio_fwrite_1d(), bio_fwrite_3d(), and logmath_write().

SPHINXBASE_EXPORT int bio_fwrite_1d ( void *  arr,
size_t  e_sz,
uint32  d1,
FILE *  fp,
uint32 *  chksum 
)

Write a 1-d array.

Checksum accumulation performed as necessary.

Returns
number of array elements successfully written or -1 if error.
Parameters
arrIn: Data to write
e_szIn: Size of the elements in bytes
d1In: First dimension
fpIn: File to write to
chksumIn/Out: Checksum accumulator

Definition at line 558 of file bio.c.

References bio_fwrite(), and E_ERROR_SYSTEM.

Referenced by bio_fwrite_3d().

SPHINXBASE_EXPORT int bio_fwrite_3d ( void ***  arr,
size_t  e_sz,
uint32  d1,
uint32  d2,
uint32  d3,
FILE *  fp,
uint32 *  chksum 
)

Write a 3-d array (set of matrices).

Checksum accumulation performed as necessary.

Returns
number of array elements successfully written or -1 if error.
Parameters
arrIn: Data to write
e_szIn: Size of the elements in bytes
d1In: First dimension
d2In: Second dimension
d3In: Third dimension
fpIn: File to write to
chksumIn/Out: Checksum accumulator

Definition at line 507 of file bio.c.

References bio_fwrite(), bio_fwrite_1d(), and E_ERROR_SYSTEM.

SPHINXBASE_EXPORT void bio_hdrarg_free ( char **  name,
char **  val 
)

Free name and value strings previously allocated and returned by bio_readhdr.

Parameters
nameIn: Array previously returned by bio_readhdr
valIn: Array previously returned by bio_readhdr

Definition at line 121 of file bio.c.

References ckd_free().

Referenced by bio_readhdr(), feat_read_lda(), and logmath_read().

SPHINXBASE_EXPORT int16* bio_read_wavfile ( char const *  directory,
char const *  filename,
char const *  extension,
int32  header,
int32  endian,
size_t *  nsamps 
)

Read raw data from the wav file.

Returns
pointer to the data.
Parameters
directoryIn: the folder where the file is located
filenameIn: the name of the file
extensionIn: file extension
headerIn: the size of the header to skip usually 44 bytes
endianIn: endian of the data
nsampsOut: number of samples read

Definition at line 592 of file bio.c.

References ckd_calloc, ckd_free(), E_ERROR_SYSTEM, and E_FATAL_SYSTEM.

SPHINXBASE_EXPORT int32 bio_readhdr ( FILE *  fp,
char ***  name,
char ***  val,
int32 *  swap 
)

Read binary file format header: has the following format.

    s3
    <argument-name> <argument-value>
    <argument-name> <argument-value>
    ...
    endhdr
    4-byte byte-order word used to find file byte ordering relative to host machine.

Lines beginning with # are ignored. Memory for name and val allocated by this function; use bio_hdrarg_free to free them.

Returns
0 if successful, -1 otherwise.
Parameters
fpIn: File to read
nameOut: array of argument name strings read
valOut: corresponding value strings read
swapOut: file needs byteswapping iff (*swap)

Definition at line 187 of file bio.c.

References bio_hdrarg_free(), ckd_calloc, ckd_salloc, and E_ERROR.

Referenced by feat_read_lda(), and logmath_read().

SPHINXBASE_EXPORT void bio_verify_chksum ( FILE *  fp,
int32  byteswap,
uint32  chksum 
)

Read and verify checksum at the end of binary file.

Fails fatally if there is a mismatch.

Parameters
fpIn: File to read
byteswapIn: Byteswap iff (swap != 0)
chksumIn: Value to compare with checksum in file

Definition at line 492 of file bio.c.

References E_FATAL.

Referenced by logmath_read().

SPHINXBASE_EXPORT int32 bio_writehdr ( FILE *  fp,
  ... 
)

Write a simple binary file header with only byte order magic word.

Returns
0 if successful, -1 otherwise.

Definition at line 155 of file bio.c.

References E_ERROR.

SPHINXBASE_EXPORT int32 bio_writehdr_version ( FILE *  fp,
char *  version 
)

Write a simple binary file header, containing only the version string.

Also write the byte order magic word.

Returns
0 if successful, -1 otherwise.
Parameters
fpOutput: File to write
versionInput: A string of version

Definition at line 137 of file bio.c.