diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-12-02 21:57:45 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-12-02 21:57:45 +0000 |
commit | b46c98aa49d8fa316429cc1ab2316ad11429a9c8 (patch) | |
tree | 9ec84354082d30f27088d1d42c7665243c6b69c8 /include | |
parent | 7742cd11fa4589649382188fe07e407c74b90029 (diff) |
Merge updates to frame.h and frame.c (codec stuff from bug #2945, part 1)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4370 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'include')
-rwxr-xr-x | include/asterisk/frame.h | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/include/asterisk/frame.h b/include/asterisk/frame.h index c80ca72f5..a612ea9f5 100755 --- a/include/asterisk/frame.h +++ b/include/asterisk/frame.h @@ -58,6 +58,11 @@ extern "C" { #error Need to know endianess #endif /* __BYTE_ORDER */ +struct ast_codec_pref { + char order[32]; +}; + + //! Data structure associated with a single frame of data /* A frame of data read used to communicate between between channels and applications */ @@ -337,11 +342,10 @@ extern char* ast_getformatname(int format); * \param n size of buf (bytes) * \param format the format (combined IDs of codecs) * Prints a list of readable codec names corresponding to "format". - * ex: for format=AST_FORMAT_GSM|AST_FORMAT_SPEEX|AST_FORMAT_ILBC it will return "0x602(GSM|SPEEX|ILBC)" + * ex: for format=AST_FORMAT_GSM|AST_FORMAT_SPEEX|AST_FORMAT_ILBC it will return "0x602 (GSM|SPEEX|ILBC)" * \return The return value is buf. */ -extern char* ast_getformatname_multiple(char *buf, unsigned n, int format); - +extern char* ast_getformatname_multiple(char *buf, size_t size, int format); /*! * \param name string of format @@ -364,6 +368,8 @@ extern int ast_best_codec(int fmts); struct ast_smoother; +extern struct ast_format_list *ast_get_format_list_index(int index); +extern struct ast_format_list *ast_get_format_list(size_t *size); extern struct ast_smoother *ast_smoother_new(int bytes); extern void ast_smoother_set_flags(struct ast_smoother *smoother, int flags); extern int ast_smoother_get_flags(struct ast_smoother *smoother); @@ -374,6 +380,32 @@ extern struct ast_frame *ast_smoother_read(struct ast_smoother *s); extern void ast_frame_dump(char *name, struct ast_frame *f, char *prefix); +/* Initialize a codec preference to "no preference" */ +extern void ast_codec_pref_init(struct ast_codec_pref *pref); + +/* Codec located at a particular place in the preference index */ +extern int ast_codec_pref_index(struct ast_codec_pref *pref, int index); + +/* Remove a codec from a preference list */ +extern void ast_codec_pref_remove(struct ast_codec_pref *pref, int format); + +/* Append a codec to a preference list, removing it first if it was already there */ +extern int ast_codec_pref_append(struct ast_codec_pref *pref, int format); + +/* Select the best format according to preference list from supplied options. + If "find_best" is non-zero then if nothing is found, the "Best" format of + the format list is selected, otherwise 0 is returned. */ +extern int ast_codec_choose(struct ast_codec_pref *pref, int formats, int find_best); + +/* Parse an "allow" or "deny" line and update the mask and pref if provided */ +extern void ast_parse_allow_deny(struct ast_codec_pref *pref, int *mask, char *list, int allowing); + +/* Dump codec preference list into a string */ +extern int ast_codec_pref_string(struct ast_codec_pref *pref, char *buf, size_t size); + +/* Shift a codec preference list up or down 65 bytes so that it becomes an ASCII string */ +extern void ast_codec_pref_shift(struct ast_codec_pref *pref, char *buf, size_t size, int right); + #if defined(__cplusplus) || defined(c_plusplus) } #endif |