Reserving flags for coming code (currently in the "videocaps" branch)
authorOlle Johansson <oej@edvina.net>
Tue, 5 Dec 2006 10:52:53 +0000 (10:52 +0000)
committerOlle Johansson <oej@edvina.net>
Tue, 5 Dec 2006 10:52:53 +0000 (10:52 +0000)
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

include/asterisk/frame.h
main/frame.c
main/rtp.c

index 5e02e67..475317a 100644 (file)
@@ -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 */
index 681f368..bac9340 100644 (file)
@@ -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, };
index 93c92a8..307ae18 100644 (file)
@@ -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},