[svn-commits] file: branch file/t38improvements r202490 - in /team/file/t38improvements: ch...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Jun 22 13:26:38 CDT 2009


Author: file
Date: Mon Jun 22 13:26:35 2009
New Revision: 202490

URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=202490
Log:
Add remaining options that should be negotiated and configurable.

Modified:
    team/file/t38improvements/channels/chan_sip.c
    team/file/t38improvements/include/asterisk/frame.h

Modified: team/file/t38improvements/channels/chan_sip.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/file/t38improvements/channels/chan_sip.c?view=diff&rev=202490&r1=202489&r2=202490
==============================================================================
--- team/file/t38improvements/channels/chan_sip.c (original)
+++ team/file/t38improvements/channels/chan_sip.c Mon Jun 22 13:26:35 2009
@@ -4890,6 +4890,12 @@
 /*! \brief Helper function which interprets T.38 capabilities and fills a parameters structure in */
 static void fill_t38_parameters(int capabilities, struct ast_control_t38_parameters *parameters)
 {
+	if (capabilities & T38FAX_VERSION_0) {
+		parameters->version = 0;
+	} else if (capabilities & T38FAX_VERSION_1) {
+		parameters->version = 1;
+	}
+
 	if (capabilities & T38FAX_RATE_14400) {
 		parameters->rate = AST_T38_RATE_14400;
 	} else if (capabilities & T38FAX_RATE_12000) {
@@ -4904,12 +4910,22 @@
 		parameters->rate = AST_T38_RATE_2400;
 	}
 
-	if (capabilities & T38FAX_UDP_EC_REDUNDANCY) {
-		parameters->ec = AST_T38_EC_REDUNDANCY;
-	} else if (capabilities & T38FAX_UDP_EC_FEC) {
-		parameters->ec = AST_T38_EC_FEC;
-	} else if (capabilities & T38FAX_UDP_EC_NONE) {
-		parameters->ec = AST_T38_EC_NONE;
+	if (capabilities & T38FAX_RATE_MANAGEMENT_TRANSFERED_TCF) {
+		parameters->rate_management = AST_T38_RATE_MANAGEMENT_TRANSFERED_TCF;
+	} else if (capabilities & T38FAX_RATE_MANAGEMENT_LOCAL_TCF) {
+		parameters->rate_management = AST_T38_RATE_MANAGEMENT_LOCAL_TCF;
+	}
+
+	if (capabilities & T38FAX_FILL_BIT_REMOVAL) {
+		parameters->fill_bit_removal = 1;
+	}
+
+	if (capabilities & T38FAX_TRANSCODING_MMR) {
+		parameters->transcoding_mmr = 1;
+	}
+
+	if (capabilities & T38FAX_TRANSCODING_JBIG) {
+		parameters->transcoding_jbig = 1;
 	}
 }
 
@@ -6408,14 +6424,10 @@
 static void interpret_t38_parameters(struct sip_pvt *p, enum ast_control_t38 request_response, const struct ast_control_t38_parameters *parameters)
 {
 	if (parameters) {
-		p->t38.capability = p->t38.jointcapability = T38FAX_VERSION_0;
-
-		if (parameters->ec == AST_T38_EC_NONE) {
-			p->t38.capability = p->t38.jointcapability |= T38FAX_UDP_EC_NONE;
-		} else if (parameters->ec == AST_T38_EC_FEC) {
-			p->t38.capability = p->t38.jointcapability |= T38FAX_UDP_EC_FEC;
-		} else if (parameters->ec == AST_T38_EC_REDUNDANCY) {
-			p->t38.capability = p->t38.jointcapability |= T38FAX_UDP_EC_REDUNDANCY;
+		if (!parameters->version) {
+			p->t38.capability = p->t38.jointcapability = T38FAX_VERSION_0;
+		} else if (parameters->version == 1) {
+			p->t38.capability = p->t38.jointcapability = T38FAX_VERSION_1;
 		}
 
 		if (parameters->rate == AST_T38_RATE_14400) {
@@ -6430,6 +6442,24 @@
 			p->t38.capability = p->t38.jointcapability |= T38FAX_RATE_4800 | T38FAX_RATE_2400;
 		} else if (parameters->rate == AST_T38_RATE_2400) {
 			p->t38.capability = p->t38.jointcapability |= T38FAX_RATE_2400;
+		}
+
+		if (parameters->rate_management == AST_T38_RATE_MANAGEMENT_TRANSFERED_TCF) {
+			p->t38.capability = p->t38.jointcapability |= T38FAX_RATE_MANAGEMENT_TRANSFERED_TCF;
+		} else if (parameters->rate_management == AST_T38_RATE_MANAGEMENT_LOCAL_TCF) {
+			p->t38.capability = p->t38.jointcapability |= T38FAX_RATE_MANAGEMENT_LOCAL_TCF;
+		}
+
+		if (parameters->fill_bit_removal) {
+			p->t38.capability = p->t38.jointcapability |= T38FAX_FILL_BIT_REMOVAL;
+		}
+
+		if (parameters->transcoding_mmr) {
+			p->t38.capability = p->t38.jointcapability |= T38FAX_TRANSCODING_MMR;
+		}
+
+		if (parameters->transcoding_jbig) {
+			p->t38.capability = p->t38.jointcapability |= T38FAX_TRANSCODING_JBIG;
 		}
 	}
 

Modified: team/file/t38improvements/include/asterisk/frame.h
URL: http://svn.asterisk.org/svn-view/asterisk/team/file/t38improvements/include/asterisk/frame.h?view=diff&rev=202490&r1=202489&r2=202490
==============================================================================
--- team/file/t38improvements/include/asterisk/frame.h (original)
+++ team/file/t38improvements/include/asterisk/frame.h Mon Jun 22 13:26:35 2009
@@ -335,12 +335,6 @@
 	AST_T38_REFUSED			/*!< T38 refused for some reason (usually rejected by remote end) */
 };
 
-enum ast_control_t38_ec {
-	AST_T38_EC_NONE = 0,
-	AST_T38_EC_FEC,
-	AST_T38_EC_REDUNDANCY,
-};
-
 enum ast_control_t38_rate {
 	AST_T38_RATE_2400 = 0,
 	AST_T38_RATE_4800,
@@ -350,10 +344,19 @@
 	AST_T38_RATE_14400,
 };
 
+enum ast_control_t38_rate_management {
+	AST_T38_RATE_MANAGEMENT_TRANSFERED_TCF = 0,
+	AST_T38_RATE_MANAGEMENT_LOCAL_TCF,
+};
+
 struct ast_control_t38_parameters {
-	enum ast_control_t38 request_response; /*!< Request or response of the T38 control frame */
-	enum ast_control_t38_ec ec;            /*!< Error correction parameter */
-	enum ast_control_t38_rate rate;        /*!< Maximum fax rate supported */
+	enum ast_control_t38 request_response;                /*!< Request or response of the T38 control frame */
+	unsigned int version;                                 /*!< Supported T.38 version */
+	enum ast_control_t38_rate rate;                       /*!< Maximum fax rate supported */
+	enum ast_control_t38_rate_management rate_management; /*!< Rate management setting */
+	unsigned int fill_bit_removal:1;                      /*!< Set if fill bit removal should be used */
+	unsigned int transcoding_mmr:1;                       /*!< Set if MMR transcoding should be used */
+	unsigned int transcoding_jbig:1;                      /*!< Set if JBIG transcoding should be used */
 };
 
 enum ast_control_transfer {




More information about the svn-commits mailing list