[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