aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSylvain Munaut <tnt@246tNt.com>2010-10-29 11:48:44 +0200
committerSylvain Munaut <tnt@246tNt.com>2010-11-11 20:26:41 +0100
commitef7ada56cecbdc3504162f2a89be64546a0af345 (patch)
treea3323f270eb6072100533fd2cb39c1e2fdab38f8
parent723df06dfffc77810b7d9999344d48d72e966068 (diff)
codec: Add fields in struct codec_desc to support encoding/decoding
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
-rw-r--r--include/gapk/codecs.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/gapk/codecs.h b/include/gapk/codecs.h
index 984d91a..cc6bc30 100644
--- a/include/gapk/codecs.h
+++ b/include/gapk/codecs.h
@@ -20,6 +20,8 @@
#ifndef __GAPK_CODECS_H__
#define __GAPK_CODECS_H__
+#include <stdint.h>
+
enum codec_type {
CODEC_INVALID = 0,
CODEC_PCM, /* 16 bits PCM samples */
@@ -29,11 +31,22 @@ enum codec_type {
_CODEC_MAX,
};
+#include <gapk/formats.h> /* need to import here because or enum interdep */
+
+typedef int (*codec_conv_cb_t)(void *state, uint8_t *dst, const uint8_t *src);
+
struct codec_desc {
enum codec_type type;
const char * name;
const char * description;
unsigned int canon_frame_len;
+
+ enum format_type codec_enc_format_type; /* what the encoder provides */
+ enum format_type codec_dec_format_type; /* what to give the decoder */
+ void * (*codec_init)(void);
+ void (*codec_exit)(void *state);
+ codec_conv_cb_t codec_encode;
+ codec_conv_cb_t codec_decode;
};
const struct codec_desc *codec_get_from_type(enum codec_type type);