Version 0.1.7 from FTP
[asterisk/asterisk.git] / include / asterisk / translate.h
index a2bcfff..640c579 100755 (executable)
@@ -29,7 +29,7 @@ struct ast_translator {
        char name[80];
        int srcfmt;
        int dstfmt;
-       struct ast_translator_pvt *(*new)();
+       struct ast_translator_pvt *(*new)(void);
        int (*framein)(struct ast_translator_pvt *pvt, struct ast_frame *in);
        struct ast_frame * (*frameout)(struct ast_translator_pvt *pvt);
        void (*destroy)(struct ast_translator_pvt *pvt);
@@ -44,29 +44,22 @@ struct ast_translator {
 
 struct ast_trans_pvt;
 
-/* Create a pseudo channel which translates from a real channel into our
-   desired format.  When a translator is installed, you should not use the
-   sub channel until you have stopped the translator.  For all other
-   actions, use the real channel. Generally, translators should be created 
-   when needed and immediately destroyed when no longer needed.  */
-
-/* Directions */
-#define AST_DIRECTION_OUT  1
-#define AST_DIRECTION_IN   2
-#define AST_DIRECTION_BOTH 3
-
-extern struct ast_channel *ast_translator_create(struct ast_channel *real, int format, int direction);
-extern void ast_translator_destroy(struct ast_channel *tran);
 /* Register a Codec translator */
 extern int ast_register_translator(struct ast_translator *t);
 /* Unregister same */
 extern int ast_unregister_translator(struct ast_translator *t);
 /* Given a list of sources, and a designed destination format, which should
-   I choose? */
-extern int ast_translator_best_choice(int dst, int srcs);
-extern struct ast_trans_pvt *ast_translator_build_path(int source, int dest);
+   I choose? Returns 0 on success, -1 if no path could be found.  Modifies
+   dests and srcs in place */
+extern int ast_translator_best_choice(int *dsts, int *srcs);
+
+/* Build a path (possibly NULL) from source to dest */
+extern struct ast_trans_pvt *ast_translator_build_path(int dest, int source);
 extern void ast_translator_free_path(struct ast_trans_pvt *tr);
-extern struct ast_frame_chain *ast_translate(struct ast_trans_pvt *tr, struct ast_frame *f);
+
+/* Apply an input frame into the translator and receive zero or one output frames.  Consume
+   determines whether the original frame should be freed */
+extern struct ast_frame *ast_translate(struct ast_trans_pvt *tr, struct ast_frame *f, int consume);
 
 
 #if defined(__cplusplus) || defined(c_plusplus)