/* 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_ */