[svn-commits] dvossel: branch dvossel/fixtheworld_phase1_step1 r298328 - in /team/dvossel/f...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Dec 13 17:43:06 CST 2010


Author: dvossel
Date: Mon Dec 13 17:43:02 2010
New Revision: 298328

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=298328
Log:
Introduction of new format id system.

The FORMAT2 tag will be replaced later by the FORMAT tag once the
old AST_FORMAT id system completely goes away.

Modified:
    team/dvossel/fixtheworld_phase1_step1/include/asterisk/format.h
    team/dvossel/fixtheworld_phase1_step1/main/format.c

Modified: team/dvossel/fixtheworld_phase1_step1/include/asterisk/format.h
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase1_step1/include/asterisk/format.h?view=diff&rev=298328&r1=298327&r2=298328
==============================================================================
--- team/dvossel/fixtheworld_phase1_step1/include/asterisk/format.h (original)
+++ team/dvossel/fixtheworld_phase1_step1/include/asterisk/format.h Mon Dec 13 17:43:02 2010
@@ -24,20 +24,99 @@
  * \author David Vossel <dvossel at digium.com>
  */
 
-#ifndef _AST_FORMAT_H_
-#define _AST_FORMAT_H_
-
-#define AST_FORMAT_ATTR_SIZE 128
+#ifndef _AST_FORMAT2_H_
+#define _AST_FORMAT2_H_
+
+#define AST_FORMAT2_ATTR_SIZE 128
+
+#define AST_FORMAT2_INC 100000
+
+/*! XXX TODO note, the FORMAT2 used in all of the following
+ * enums is temporary and will be replaced by FORMAT once the
+ * conversion from forat_t to ast_format takes place. */
+
+/* \brief Format Categories*/
+enum ast_format_type {
+    AST_FORMAT2_TYPE_AUDIO = 1 * AST_FORMAT2_INC,
+    AST_FORMAT2_TYPE_VIDEO = 2 * AST_FORMAT2_INC,
+    AST_FORMAT2_TYPE_IMAGE = 3 * AST_FORMAT2_INC,
+    AST_FORMAT2_TYPE_TEXT  = 4 * AST_FORMAT2_INC,
+};
+
+enum ast_format_id {
+	/*! G.723.1 compression */
+	AST_FORMAT2_G723_1          = 1 + AST_FORMAT2_TYPE_AUDIO,
+	/*! GSM compression */
+	AST_FORMAT2_GSM             = 2 + AST_FORMAT2_TYPE_AUDIO,
+	/*! Raw mu-law data (G.711) */
+	AST_FORMAT2_ULAW            = 3 + AST_FORMAT2_TYPE_AUDIO,
+	/*! Raw A-law data (G.711) */
+	AST_FORMAT2_ALAW            = 4 + AST_FORMAT2_TYPE_AUDIO,
+	/*! ADPCM (G.726, 32kbps, AAL2 codeword packing) */
+	AST_FORMAT2_G726_AAL2       = 5 + AST_FORMAT2_TYPE_AUDIO,
+	/*! ADPCM (IMA) */
+	AST_FORMAT2_ADPCM           = 6 + AST_FORMAT2_TYPE_AUDIO,
+	/*! Raw 16-bit Signed Linear (8000 Hz) PCM */
+	AST_FORMAT2_SLINEAR         = 7 + AST_FORMAT2_TYPE_AUDIO,
+	/*! LPC10, 180 samples/frame */
+	AST_FORMAT2_LPC10           = 8 + AST_FORMAT2_TYPE_AUDIO,
+	/*! G.729A audio */
+	AST_FORMAT2_G729A           = 9 + AST_FORMAT2_TYPE_AUDIO,
+	/*! SpeeX Free Compression */
+	AST_FORMAT2_SPEEX           = 10 + AST_FORMAT2_TYPE_AUDIO,
+	/*! iLBC Free Compression */
+	AST_FORMAT2_ILBC            = 11 + AST_FORMAT2_TYPE_AUDIO,
+	/*! ADPCM (G.726, 32kbps, RFC3551 codeword packing) */
+	AST_FORMAT2_G726            = 12 + AST_FORMAT2_TYPE_AUDIO,
+	/*! G.722 */
+	AST_FORMAT2_G722            = 13 + AST_FORMAT2_TYPE_AUDIO,
+	/*! G.722.1 (also known as Siren7, 32kbps assumed) */
+	AST_FORMAT2_SIREN7          = 14 + AST_FORMAT2_TYPE_AUDIO,
+	/*! G.722.1 Annex C (also known as Siren14, 48kbps assumed) */
+	AST_FORMAT2_SIREN14         = 15 + AST_FORMAT2_TYPE_AUDIO,
+	/*! Raw 16-bit Signed Linear (16000 Hz) PCM */
+	AST_FORMAT2_SLINEAR16       = 16 + AST_FORMAT2_TYPE_AUDIO,
+	/*! G.719 (64 kbps assumed) */
+	AST_FORMAT2_G719	           = 17 + AST_FORMAT2_TYPE_AUDIO,
+	/*! SpeeX Wideband (16kHz) Free Compression */
+	AST_FORMAT2_SPEEX16         = 18 + AST_FORMAT2_TYPE_AUDIO,
+	/*! Raw mu-law data (G.711) */
+	AST_FORMAT2_TESTLAW         = 19 + AST_FORMAT2_TYPE_AUDIO,
+
+	/*! H.261 Video */
+	AST_FORMAT2_H261            = 1 + AST_FORMAT2_TYPE_VIDEO,
+	/*! H.263 Video */
+	AST_FORMAT2_H263            = 2 + AST_FORMAT2_TYPE_VIDEO,
+	/*! H.263+ Video */
+	AST_FORMAT2_H263_PLUS       = 3 + AST_FORMAT2_TYPE_VIDEO,
+	/*! H.264 Video */
+	AST_FORMAT2_H264            = 4 + AST_FORMAT2_TYPE_VIDEO,
+	/*! MPEG4 Video */
+	AST_FORMAT2_MP4_VIDEO       = 5 + AST_FORMAT2_TYPE_VIDEO,
+
+	/*! JPEG Images */
+	AST_FORMAT2_JPEG            = 1 + AST_FORMAT2_TYPE_IMAGE,
+	/*! PNG Images */
+	AST_FORMAT2_PNG             = 2 + AST_FORMAT2_TYPE_IMAGE,
+
+	/*! T.140 RED Text format RFC 4103 */
+	AST_FORMAT2_T140RED         = 1 + AST_FORMAT2_TYPE_TEXT,
+	/*! T.140 Text format - ITU T.140, RFC 4103 */
+	AST_FORMAT2_T140            = 2 + AST_FORMAT2_TYPE_TEXT,
+};
+
+/* Determine what category a format type is in */
+#define AST_FORMAT2_GET_TYPE(format) (((enum ast_format_id) (format->uid / AST_FORMAT2_INC)) * AST_FORMAT2_INC)
 
 /*! \brief This structure contains the buffer used for format attributes */
 struct ast_format_attr {
-    uint8_t format_attr[AST_FORMAT_ATTR_SIZE];
+    uint8_t format_attr[AST_FORMAT2_ATTR_SIZE];
 };
 
 /*! \brief Represents a media format within Asterisk. */
 struct ast_format {
     /*! The unique id representing this format from all the other formats. */
-    unsigned int uid;
+    enum ast_format_id uid;
     /*!  Attribute structure used to associate attributes with a format. */
     struct ast_format_attr *fattr;
 };
@@ -45,7 +124,7 @@
 /*! \brief A format must register an attribute interface if it requires the use of the format attributes void pointer */
 struct ast_format_attr_interface {
     /*! format type */
-    unsigned int id;
+    enum ast_format_id id;
 
     /*! \brief Determine if format_attr 1 is a subset of format_attr 2.
      *
@@ -69,24 +148,24 @@
  * with optional format attributes represented by format specific key value pairs.
  *
  * \details Example usage.
- * ast_format_set(format, AST_FORMAT_ULAW); // no capability attributes are needed for ULAW
- *
- * ast_format_set(format, AST_FORMAT_SILK, // SILK has capability attributes.
- *      AST_FORMAT_SILK_RATE, 24000,
- *      AST_FORMAT_SILK_RATE, 16000,
- *      AST_FORMAT_SILK_RATE, 12000,
- *      AST_FORMAT_SILK_RATE, 8000,
- *      AST_FORMAT_ATTR_END);
+ * ast_format_set(format, AST_FORMAT2_ULAW); // no capability attributes are needed for ULAW
+ *
+ * ast_format_set(format, AST_FORMAT2_SILK, // SILK has capability attributes.
+ *      AST_FORMAT2_SILK_RATE, 24000,
+ *      AST_FORMAT2_SILK_RATE, 16000,
+ *      AST_FORMAT2_SILK_RATE, 12000,
+ *      AST_FORMAT2_SILK_RATE, 8000,
+ *      AST_FORMAT2_ATTR_END);
  *
  * \return Pointer to ast_format object.
  */
-struct ast_format *ast_format_set(struct ast_format *format, unsigned int id, va_list ap);
+struct ast_format *ast_format_set(struct ast_format *format, enum ast_format_id id, va_list ap);
 
 /*! \brief This function is used to set an ast_format object to represent a media format
  * with optional capability attributes represented by format specific key value pairs.
  *
  * \details Example usage. Is this SILK format capable of 8khz
- * is_8khz = ast_format_isset(format, AST_FORMAT_SILK_CAP_RATE, 8000);
+ * is_8khz = ast_format_isset(format, AST_FORMAT2_SILK_CAP_RATE, 8000);
  *
  * \return 0, The format key value pairs are within the capabilities defined in this structure.
  * \return -1, The format key value pairs are _NOT_ within the capabilities of this structure.
@@ -124,4 +203,4 @@
  */
 int ast_format_attr_unreg_interface(struct ast_format_attr_interface *interface);
 
-#endif /* _AST_FORMAT_H */
+#endif /* _AST_FORMAT2_H */

Modified: team/dvossel/fixtheworld_phase1_step1/main/format.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase1_step1/main/format.c?view=diff&rev=298328&r1=298327&r2=298328
==============================================================================
--- team/dvossel/fixtheworld_phase1_step1/main/format.c (original)
+++ team/dvossel/fixtheworld_phase1_step1/main/format.c Mon Dec 13 17:43:02 2010
@@ -31,12 +31,12 @@
 #include "asterisk/version.h"
 #include "asterisk/format.h"
 
-struct ast_format *ast_format_set(struct ast_format *format, unsigned int id, va_list ap)
+struct ast_format *ast_format_set(struct ast_format *format, enum ast_format_id id, va_list ap)
 {
 	return NULL;
 }
 
-int ast_format_isset(struct ast_format *format,  va_list ap)
+int ast_format_isset(struct ast_format *format, va_list ap)
 {
 	return 0;
 }




More information about the svn-commits mailing list