1 #ifndef __RTSP_H_ 2 #define __RTSP_H_ 3 4 /*************************************************************************** 5 * _ _ ____ _ 6 * Project ___| | | | _ \| | 7 * / __| | | | |_) | | 8 * | (__| |_| | _ <| |___ 9 * \___|\___/|_| \_\_____| 10 * 11 * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. 12 * 13 * This software is licensed as described in the file COPYING, which 14 * you should have received as part of this distribution. The terms 15 * are also available at http://curl.haxx.se/docs/copyright.html. 16 * 17 * You may opt to use, copy, modify, merge, publish, distribute and/or sell 18 * copies of the Software, and permit persons to whom the Software is 19 * furnished to do so, under the terms of the COPYING file. 20 * 21 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 22 * KIND, either express or implied. 23 * 24 ***************************************************************************/ 25 #ifndef CURL_DISABLE_RTSP 26 27 extern const struct Curl_handler Curl_handler_rtsp; 28 29 /* 30 * Parse and write out any available RTP data. 31 * 32 * nread: amount of data left after k->str. will be modified if RTP 33 * data is parsed and k->str is moved up 34 * readmore: whether or not the RTP parser needs more data right away 35 */ 36 CURLcode Curl_rtsp_rtp_readwrite(struct SessionHandle *data, 37 struct connectdata *conn, 38 ssize_t *nread, 39 bool *readmore); 40 41 42 /* protocol-specific functions set up to be called by the main engine */ 43 CURLcode Curl_rtsp(struct connectdata *conn, bool *done); 44 CURLcode Curl_rtsp_done(struct connectdata *conn, CURLcode, bool premature); 45 CURLcode Curl_rtsp_connect(struct connectdata *conn, bool *done); 46 CURLcode Curl_rtsp_disconnect(struct connectdata *conn, bool dead_connection); 47 48 CURLcode Curl_rtsp_parseheader(struct connectdata *conn, char *header); 49 bool Curl_rtsp_connisdead(struct connectdata *check); 50 51 #else 52 /* disabled */ 53 #define Curl_rtsp_connisdead(x) TRUE 54 55 #endif /* CURL_DISABLE_RTSP */ 56 57 /* 58 * RTSP Connection data 59 * 60 * Currently, only used for tracking incomplete RTP data reads 61 */ 62 struct rtsp_conn { 63 char *rtp_buf; 64 ssize_t rtp_bufsize; 65 int rtp_channel; 66 }; 67 68 /**************************************************************************** 69 * RTSP unique setup 70 ***************************************************************************/ 71 struct RTSP { 72 /* 73 * http_wrapper MUST be the first element of this structure for the wrap 74 * logic to work. In this way, we get a cheap polymorphism because 75 * &(data->state.proto.rtsp) == &(data->state.proto.http) per the C spec 76 * 77 * HTTP functions can safely treat this as an HTTP struct, but RTSP aware 78 * functions can also index into the later elements. 79 */ 80 struct HTTP http_wrapper; /*wrap HTTP to do the heavy lifting */ 81 82 long CSeq_sent; /* CSeq of this request */ 83 long CSeq_recv; /* CSeq received */ 84 }; 85 86 87 #endif /* __RTSP_H_ */ 88