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},