Mercurial > hg > audiostuff
comparison spandsp-0.0.6pre17/src/spandsp/private/t38_core.h @ 4:26cd8f1ef0b1
import spandsp-0.0.6pre17
author | Peter Meerwald <pmeerw@cosy.sbg.ac.at> |
---|---|
date | Fri, 25 Jun 2010 15:50:58 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
3:c6c5a16ce2f2 | 4:26cd8f1ef0b1 |
---|---|
1 /* | |
2 * SpanDSP - a series of DSP components for telephony | |
3 * | |
4 * private/t38_core.h - An implementation of T.38, less the packet exchange part | |
5 * | |
6 * Written by Steve Underwood <steveu@coppice.org> | |
7 * | |
8 * Copyright (C) 2005 Steve Underwood | |
9 * | |
10 * All rights reserved. | |
11 * | |
12 * This program is free software; you can redistribute it and/or modify | |
13 * it under the terms of the GNU Lesser General Public License version 2.1, | |
14 * as published by the Free Software Foundation. | |
15 * | |
16 * This program is distributed in the hope that it will be useful, | |
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 * GNU Lesser General Public License for more details. | |
20 * | |
21 * You should have received a copy of the GNU Lesser General Public | |
22 * License along with this program; if not, write to the Free Software | |
23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
24 * | |
25 * $Id: t38_core.h,v 1.4 2009/07/14 13:54:22 steveu Exp $ | |
26 */ | |
27 | |
28 #if !defined(_SPANDSP_PRIVATE_T38_CORE_H_) | |
29 #define _SPANDSP_PRIVATE_T38_CORE_H_ | |
30 | |
31 /*! | |
32 Core T.38 state, common to all modes of T.38. | |
33 */ | |
34 struct t38_core_state_s | |
35 { | |
36 /*! \brief Handler routine to transmit IFP packets generated by the T.38 protocol engine */ | |
37 t38_tx_packet_handler_t *tx_packet_handler; | |
38 /*! \brief An opaque pointer passed to tx_packet_handler */ | |
39 void *tx_packet_user_data; | |
40 | |
41 /*! \brief Handler routine to process received indicator packets */ | |
42 t38_rx_indicator_handler_t *rx_indicator_handler; | |
43 /*! \brief Handler routine to process received data packets */ | |
44 t38_rx_data_handler_t *rx_data_handler; | |
45 /*! \brief Handler routine to process the missing packet condition */ | |
46 t38_rx_missing_handler_t *rx_missing_handler; | |
47 /*! \brief An opaque pointer passed to any of the above receive handling routines */ | |
48 void *rx_user_data; | |
49 | |
50 /*! NOTE - Bandwidth reduction shall only be done on suitable Phase C data, i.e., MH, MR | |
51 and - in the case of transcoding to JBIG - MMR. MMR and JBIG require reliable data | |
52 transport such as that provided by TCP. When transcoding is selected, it shall be | |
53 applied to every suitable page in a call. */ | |
54 | |
55 /*! \brief Method 1: Local generation of TCF (required for use with TCP). | |
56 Method 2: Transfer of TCF is required for use with UDP (UDPTL or RTP). | |
57 Method 2 is not recommended for use with TCP. */ | |
58 int data_rate_management_method; | |
59 | |
60 /*! \brief The emitting gateway may indicate a preference for either UDP/UDPTL, or | |
61 UDP/RTP, or TCP for transport of T.38 IFP Packets. The receiving device | |
62 selects the transport protocol. */ | |
63 int data_transport_protocol; | |
64 | |
65 /*! \brief Indicates the capability to remove and insert fill bits in Phase C, non-ECM | |
66 data to reduce bandwidth in the packet network. */ | |
67 int fill_bit_removal; | |
68 | |
69 /*! \brief Indicates the ability to convert to/from MMR from/to the line format to | |
70 improve the compression of the data, and reduce the bandwidth, in the | |
71 packet network. */ | |
72 int mmr_transcoding; | |
73 | |
74 /*! \brief Indicates the ability to convert to/from JBIG to reduce bandwidth. */ | |
75 int jbig_transcoding; | |
76 | |
77 /*! \brief For UDP (UDPTL or RTP) modes, this option indicates the maximum | |
78 number of octets that can be stored on the remote device before an | |
79 overflow condition occurs. It is the responsibility of the transmitting | |
80 application to limit the transfer rate to prevent an overflow. The | |
81 negotiated data rate should be used to determine the rate at which | |
82 data is being removed from the buffer. */ | |
83 int max_buffer_size; | |
84 | |
85 /*! \brief This option indicates the maximum size of a UDPTL packet or the | |
86 maximum size of the payload within an RTP packet that can be accepted | |
87 by the remote device. */ | |
88 int max_datagram_size; | |
89 | |
90 /*! \brief This is the version number of ITU-T Rec. T.38. New versions shall be | |
91 compatible with previous versions. */ | |
92 int t38_version; | |
93 | |
94 /*! \brief Allow time for TEP playout */ | |
95 int allow_for_tep; | |
96 | |
97 /*! \brief The fastest data rate supported by the T.38 channel. */ | |
98 int fastest_image_data_rate; | |
99 | |
100 /*! \brief The number of times each packet type will be sent (low byte). The | |
101 depth of redundancy (2nd byte). Higher numbers may increase reliability | |
102 for UDP transmission. Zero is valid for the indicator packet category, | |
103 to suppress all indicator packets (typicaly for TCP transmission). */ | |
104 int category_control[5]; | |
105 | |
106 /*! \brief TRUE if IFP packet sequence numbers are relevant. For some transports, like TPKT | |
107 over TCP they are not relevent. */ | |
108 int check_sequence_numbers; | |
109 | |
110 /*! \brief The sequence number for the next packet to be transmitted */ | |
111 int tx_seq_no; | |
112 /*! \brief The sequence number expected in the next received packet */ | |
113 int rx_expected_seq_no; | |
114 | |
115 /*! \brief The current receive indicator - i.e. the last indicator received */ | |
116 int current_rx_indicator; | |
117 /*! \brief The current receive data type - i.e. the last data type received */ | |
118 int current_rx_data_type; | |
119 /*! \brief The current receive field type - i.e. the last field_type received */ | |
120 int current_rx_field_type; | |
121 /*! \brief The current transmit indicator - i.e. the last indicator transmitted */ | |
122 int current_tx_indicator; | |
123 /*! \brief The bit rate for V.34 operation */ | |
124 int v34_rate; | |
125 | |
126 /*! A count of missing receive packets. This count might not be accurate if the | |
127 received packet numbers jump wildly. */ | |
128 int missing_packets; | |
129 | |
130 /*! \brief Error and flow logging control */ | |
131 logging_state_t logging; | |
132 }; | |
133 | |
134 #endif | |
135 /*- End of file ------------------------------------------------------------*/ |