X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/0e8c21de2a464fc913e0dbb6f7f148a84db95d55..92db088e5b292c1180a090ed369b9851e933e610:/lib/resample.h diff --git a/lib/resample.h b/lib/resample.h index e8bfb10..a789325 100644 --- a/lib/resample.h +++ b/lib/resample.h @@ -27,15 +27,47 @@ #include #endif -#define ENDIAN_BIG 1 -#define ENDIAN_LITTLE 2 +#include "byte-order.h" +/** @brief An audio resampler */ struct resampler { - int input_bits, input_channels, input_rate, input_signed, input_endian; - int output_bits, output_channels, output_rate, output_signed, output_endian; + /** @brief Bits/sample in input */ + int input_bits; + + /** @brief Number of input channels */ + int input_channels; + + /** @brief Frames/second in input */ + int input_rate; + + /** @brief Whether input samples are signed or unsigned */ + int input_signed; + + /** @brief Input endianness (@c ENDIAN_BIG or @c ENDIAN_LITTLE) */ + int input_endian; + + /** @brief Bits/sample in output */ + int output_bits; + + /** @brief Number of output channels */ + int output_channels; + + /** @brief Frames/second in output */ + int output_rate; + + /** @brief Whether output samples are signed or unsigned */ + int output_signed; + + /** @brief Output endianness (@c ENDIAN_BIG or @c ENDIAN_LITTLE) */ + int output_endian; + + /** @brief */ int input_bytes_per_sample; + + /** @brief */ int input_bytes_per_frame; #if HAVE_SAMPLERATE_H + /** @brief Libsamplerate handle */ SRC_STATE *state; #endif }; @@ -47,12 +79,14 @@ void resample_init(struct resampler *rs, int output_bits, int output_channels, int output_rate, int output_signed, int output_endian); -size_t resample_convert(struct resampler *rs, +size_t resample_convert(const struct resampler *rs, const uint8_t *bytes, size_t nbytes, int eof, void (*converted)(uint8_t *bytes, - size_t nbytes)); + size_t nbytes, + void *cd), + void *cd); void resample_close(struct resampler *rs); #endif /* RESAMPLE_H */