From: Olle Johansson Date: Tue, 5 Dec 2006 10:52:53 +0000 (+0000) Subject: Reserving flags for coming code (currently in the "videocaps" branch) X-Git-Tag: 1.6.0-beta1~3^2~3792 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b8fcae6d7538fa4cad8d9099965371c3138b6528;p=thirdparty%2Fasterisk.git Reserving flags for coming code (currently in the "videocaps" branch) implementing T.140 support in RTP. T.140/RFC 4351 is TDD over IP - text telephony for hearing impaired. It defines a realtime text chat, much like the old "talk" application in Unix. T.140 is character by character in real time. It's not the same as our current MESSAGE format - that is more like IM, but can be gatewayed to MESSAGE with a text "codec" if needed. More patches will follow, as soon as we've separated this code from the video capabilities functions in the videocaps branch. Code by John Martin, Aupix (disclaimer on file) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@48258 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/include/asterisk/frame.h b/include/asterisk/frame.h index 5e02e670d1..475317a23a 100644 --- a/include/asterisk/frame.h +++ b/include/asterisk/frame.h @@ -52,7 +52,7 @@ struct ast_codec_pref { \arg \b VIDEO: Video data, subclass is codec (AST_FORMAT_*) \arg \b DTMF: A DTMF digit, subclass is the digit \arg \b IMAGE: Image transport, mostly used in IAX - \arg \b TEXT: Text messages + \arg \b TEXT: Text messages and character by character (real time text) \arg \b HTML: URL's and web pages \arg \b MODEM: Modulated data encodings, such as T.38 and V.150 \arg \b IAX: Private frame type for the IAX protocol @@ -261,6 +261,10 @@ extern struct ast_frame ast_null_frame; /*! Maximum video format */ #define AST_FORMAT_MAX_VIDEO (1 << 24) #define AST_FORMAT_VIDEO_MASK (((1 << 25)-1) & ~(AST_FORMAT_AUDIO_MASK)) +/*! T.140 Text format - ITU T.140, RFC 4351*/ +#define AST_FORMAT_T140 (1 << 25) +#define AST_FORMAT_MAX_TEXT (1 << 26) +#define AST_FORMAT_TEXT_MASK (((1 << 25)-1) & ~(AST_FORMAT_AUDIO_MASK)) enum ast_control_frame_type { AST_CONTROL_HANGUP = 1, /*!< Other end has hungup */ diff --git a/main/frame.c b/main/frame.c index 681f36892c..bac9340c7f 100644 --- a/main/frame.c +++ b/main/frame.c @@ -130,6 +130,10 @@ static struct ast_format_list AST_FORMAT_LIST[] = { /*!< Bit number: comment { 0, 0, "nothing", "undefined" }, { 0, 0, "nothing", "undefined" }, { 0, AST_FORMAT_MAX_VIDEO, "maxvideo", "Maximum video format" }, + { 0, AST_FORMAT_T140, "t140", "Passthrough T.140 Realtime Text" }, + { 0, 0, "nothing", "undefined" }, + { 0, 0, "nothing", "undefined" }, + { 0, AST_FORMAT_MAX_TEXT, "maxtext", "Maximum text format" }, }; struct ast_frame ast_null_frame = { AST_FRAME_NULL, }; diff --git a/main/rtp.c b/main/rtp.c index 93c92a845d..307ae18889 100644 --- a/main/rtp.c +++ b/main/rtp.c @@ -1408,6 +1408,7 @@ static struct { {{1, AST_FORMAT_H263}, "video", "H263"}, {{1, AST_FORMAT_H263_PLUS}, "video", "h263-1998"}, {{1, AST_FORMAT_H264}, "video", "H264"}, + {{1, AST_FORMAT_T140}, "text", "T140"}, }; /* Static (i.e., well-known) RTP payload types for our "AST_FORMAT..."s: @@ -1439,6 +1440,7 @@ static struct rtpPayloadType static_RTP_PT[MAX_RTP_PT] = { [97] = {1, AST_FORMAT_ILBC}, [99] = {1, AST_FORMAT_H264}, [101] = {0, AST_RTP_DTMF}, + [102] = {0, AST_FORMAT_T140}, /* Real time text chat */ [110] = {1, AST_FORMAT_SPEEX}, [111] = {1, AST_FORMAT_G726}, [112] = {1, AST_FORMAT_G726_AAL2},