/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef RAW_H_ #define RAW_H_ #ifdef __cplusplus extern "C" { #endif #include <stddef.h> /* Reads a raw file to a float buffer. * Args: * filename - The name of the raw file. * frames - Returns the number of frames read. * Returns: * The float buffer allocated by malloc(), or NULL if reading fails. The * first half of the buffer contains left channel data, and the second half * contains the right channel data. * The raw file is assumed to have two channel 16 bit signed integer samples in * native endian. The raw file can be created by: * sox input.wav output.raw * The raw file can be played by: * play -r 44100 -s -b 16 -c 2 test.raw */ float *read_raw(const char *filename, size_t *frames); /* Writes a float buffer to a raw file. * Args: * filename - The name of the raw file. * buf - The float buffer containing the samples. * frames - The number of frames in the float buffer. * Returns: * 0 if success. -1 if writing fails. * The format of the float buffer is the same as described in read_raw(). */ void write_raw(const char *filename, float *buf, size_t frames); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* RAW_H_ */