⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtsp_client.h

📁 完整的RTP RTSP代码库
💻 H
字号:
/* * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. *  * The Original Code is MPEG4IP. *  * The Initial Developer of the Original Code is Cisco Systems Inc. * Portions created by Cisco Systems Inc. are * Copyright (C) Cisco Systems Inc. 2000, 2001.  All Rights Reserved. *  * Contributor(s):  *              Bill May        wmay@cisco.com *//* * rtsp_client.h - API for generic RTSP client */#ifndef __RTSP_CLIENT_H__#define __RTSP_CLIENT_H__ 1#include "mpeg4ip.h"#ifdef __cplusplusextern "C" {#endif/* * rtsp_command_t.  Structure that contains information required by * RTSP for headers when sending commands.  For most commands, 1 or * more fields are required to be set.  See prototypes for individual * commands for which fields are required. */typedef struct rtsp_command_t {  char *accept;  char *accept_encoding;  char *accept_language;  char *authorization;  uint32_t bandwidth;  uint32_t blocksize;  char *cachecontrol;  char *conference;  char *connection;  char *from;  char *proxyauth;  char *proxyrequire;  char *range;  char *referer;  double scale;  char *session;  double speed;  char *transport;  char *useragent;  char *User;} rtsp_command_t;/* * rtsp_decode_t.  Structure containing information about the response * from a RTSP command.  Some information will be required by application. * User can move string memory from this structure, but must free memory * after using it.  Make sure to set field to NULL for memory moved from * this structure. * User must call free_decode_response when completed */typedef struct rtsp_decode_t {  uint32_t content_length;  uint32_t cseq;  bool have_cseq;  int close_connection;  char retcode[4];         /* 3 byte return code - \0 delimited */  char *retresp;  char *body;              /* Contains body returned */  char *accept;  char *accept_encoding;  char *accept_language;  char *allow_public;  char *authorization;  char *bandwidth;  char *blocksize;  char *cache_control;  char *content_base;  char *content_encoding;  char *content_language;  char *content_location;  char *content_type;  char *cookie;  char *date;  char *expires;  char *from;  char *if_modified_since;  char *last_modified;  char *location;  char *proxy_authenticate;  char *proxy_require;  char *range;  char *referer;  char *require;  char *retry_after;  char *rtp_info;  char *scale;  char *server;  char *session;  char *speed;  char *transport;  char *unsupported;  char *user_agent;  char *via;  char *www_authenticate;} rtsp_decode_t;/* * rtsp_client_t - handle for client session.  Will remain same through * redirects. */typedef struct rtsp_client_ rtsp_client_t;  /* * rtsp_session_t - handle for sessions created with a client.  A session * is defined as an stream - audio, video or other. */typedef struct rtsp_session_ rtsp_session_t;  struct rtp_packet;  typedef void (*process_rtp_callback_f)(void *,				       unsigned char interleaved,				       struct rtp_packet *);/* * free_decode_response - call this after the decode response has been * used.  It will free all memory under it. */void free_decode_response(rtsp_decode_t *decode);/* * free_rtsp_client - call this after session has been closed to free * all memory allocated by the client */void free_rtsp_client(rtsp_client_t *info);/* * rtsp_create_client - create RTSP client. * Input - url - url to connect to. *         err - pointer to error value (only when return value is NULL) *               values should be errno values * Output - pointer to rtsp_client handle */rtsp_client_t *rtsp_create_client(const char *url, int *err, 				  const char *proxy_addr, 				  in_port_t proxy_port);rtsp_client_t *rtsp_create_client_for_rtp_tcp(const char *url,					      int *err,					      const char *proxy_addr,					      in_port_t proxy_port);  typedef int (*rtsp_thread_callback_f)(void *);  int rtsp_thread_perform_callback(rtsp_client_t *info,				   rtsp_thread_callback_f func,				   void *ud);  int rtsp_thread_set_process_rtp_callback(rtsp_client_t *info,					   process_rtp_callback_f rtp_callback,					   rtsp_thread_callback_f rtp_periodic,					   int rtp_interleave,					   void *ud);  int rtsp_thread_send_rtcp(rtsp_client_t *info,			    int interleave,			    uint8_t *buffer,			    uint32_t buflen);/* * rtsp message function error messages */#define RTSP_RESPONSE_RECV_ERROR -1#define RTSP_RESPONSE_BAD -2#define RTSP_RESPONSE_MISSING_OR_BAD_PARAM -3#define RTSP_RESPONSE_BAD_URL -4#define RTSP_RESPONSE_CLOSED_SOCKET -5#define RTSP_RESPONSE_REDIRECT  1#define RTSP_RESPONSE_GOOD 0#define RTSP_RESPONSE_MALFORM_HEADER -6/* * rtsp_send_describe - send describe message * Input - info - handle for session *         cmd - pointer to command structure *         resp - pointer to pointer for response structure - free after using * Output - error message above */int rtsp_send_describe(rtsp_client_t *info,		       rtsp_command_t *cmd,		       rtsp_decode_t **resp);/* * rtsp_send_setup - send set up message. *   requires cmd->transport to be set up. * Inputs - info - handle for session *          url - "sub"-url for this stream.  Should be related to url for *                session *          cmd - pointer to command structure *          session_result - pointer to session handle *          decode_result - pointer to pointer for decode result - free when *                          done * Outputs - see error values */int rtsp_send_setup(rtsp_client_t *info,		    const char *url,		    rtsp_command_t *cmd,		    rtsp_session_t **session_result,		    rtsp_decode_t **decode_result,		    int is_aggregate);/* * rtsp_send_pause - send a pause message for a stream. * Inputs - session - handle returned by setup message *          cmd - pointer to command structure *          decode_result - p to p of decode resp structure - free when done * Outputs - see error result */int rtsp_send_pause(rtsp_session_t *session,		    rtsp_command_t *cmd,		    rtsp_decode_t **decode_result);/* * rtsp_send_play - send play message for an set-up session * You most likely want to set cmd->range. * Inputs - session - handle returned by setup message *          cmd - pointer to command structure *          decode_result - p to p of decode resp structure - free when done * Outputs - see error result */int rtsp_send_play(rtsp_session_t *session,		   rtsp_command_t *cmd,		   rtsp_decode_t **decode_result);/* * rtsp_send_aggregate_play - send play message for an set-up session * You most likely want to set cmd->range. * Inputs - info - client pointer. *          aggregate_url - pointer to aggregate url. *          cmd - pointer to command structure *          decode_result - p to p of decode resp structure - free when done * Outputs - see error result */int rtsp_send_aggregate_play(rtsp_client_t *info,			     const char *aggregate_url,			     rtsp_command_t *cmd,			     rtsp_decode_t **decode_result);/* * rtsp_send_aggregate_pause - send play message for an set-up session * You most likely want to set cmd->range. * Inputs - info - client pointer. *          aggregate_url - pointer to aggregate url. *          cmd - pointer to command structure *          decode_result - p to p of decode resp structure - free when done * Outputs - see error result */int rtsp_send_aggregate_pause(rtsp_client_t *info,			      const char *aggregate_url,			      rtsp_command_t *cmd,			      rtsp_decode_t **decode_result);  /* * rtsp_send_teardown - send a teardown for a particular session * You most likely want to set cmd->range. * Inputs - session - handle returned by setup message *          cmd - pointer to command structure *          decode_result - p to p of decode resp structure - free when done * Outputs - see error result */int rtsp_send_teardown(rtsp_session_t *session,		       rtsp_command_t *cmd,		       rtsp_decode_t **decode_result);int rtsp_send_aggregate_teardown (rtsp_client_t *info,				  const char *url,				  rtsp_command_t *cmd,				  rtsp_decode_t **decode_result);  int rtsp_is_url_my_stream(rtsp_session_t *session, const char *url,						  const char *content_base, const char *session_name);  struct in_addr rtsp_get_server_ip_address(rtsp_session_t *session);  char *rtsp_get_server_ip_address_string(rtsp_session_t *session);/* * rtsp_set_loglevel - set debug output level. * Input - loglevel - levels from syslog.h */void rtsp_set_loglevel(int loglevel);void rtsp_set_error_func(error_msg_func_t func);const struct in_addr *rtsp_get_server_address(rtsp_client_t *client);#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -