diff options
| -rw-r--r-- | encoders/encoder_lame.c | 35 | 
1 files changed, 35 insertions, 0 deletions
| diff --git a/encoders/encoder_lame.c b/encoders/encoder_lame.c new file mode 100644 index 0000000..5c48913 --- /dev/null +++ b/encoders/encoder_lame.c @@ -0,0 +1,35 @@ +#include "encoder.h" + +#include <lame/lame.h> + +static gboolean lame_encoder_init(gpointer *data) { +	lame_global_flags *gfp; + +	gfp = lame_init(); +	int ret = lame_init_params(gfp); +	*data = gfp; + +	return (ret >= 0 ? TRUE : FALSE); +} + +static gssize lame_encoder_encode(gpointer data, const guchar *inbuf, gsize inbuf_size, +			guchar *outbuf, gsize outbuf_size) { +	lame_global_flags *gfp = data; + +	int ret = lame_encode_buffer_interleaved(gfp, (short*)inbuf, inbuf_size / 4, +			outbuf, outbuf_size); + +	return ret; +} + +static void lame_encoder_close(gpointer data) { +	lame_global_flags *gfp = data; +	lame_close(gfp); +} + +const struct encoder_plugin encoder_lame_encoder = { +	.name = "lame encoder", +	.init = lame_encoder_init, +	.encode = lame_encoder_encode, +	.close = lame_encoder_close, +}; | 
