]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
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 5e02e670d11592ff3e0304c3b15ffff9236b95ba..475317a23ae0698089c18b9c97004e20b95ee4a1 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 681f36892ca41a3670f3f44594af79bdc4684398..bac9340c7f42fe6b5e96f055197a9591c8fc907c 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 93c92a845db94982629df4c9d4dffc9226ec8e6c..307ae188895951e4eb7c1acc06fff34cc416ddb1 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},