#ifndef _rtsp_client_internal_h_ #define _rtsp_client_internal_h_ #include "rtsp-media.h" #include "rtsp-client.h" #include "rtp-over-rtsp.h" #include "http-header-auth.h" #include "rtsp-header-session.h" #include "rtsp-header-transport.h" #include "http-parser.h" #include "sdp-options.h" #include "sdp.h" #include #include #include #include #include #include #if defined(OS_WINDOWS) #define strcasecmp _stricmp #endif #define USER_AGENT "ireader/media-server" #define N_MEDIA 8 enum rtsp_state_t { RTSP_INIT, RTSP_ANNOUNCE, RTSP_RECORD, RTSP_DESCRIBE, RTSP_SETUP, RTSP_PLAY, RTSP_PAUSE, RTSP_TEARDWON, RTSP_OPTIONS, RTSP_GET_PARAMETER, RTSP_SET_PARAMETER, }; struct rtsp_client_t { struct rtsp_client_handler_t handler; void* param; const char* announce; // announce sdp http_parser_t* parser; enum rtsp_state_t state; int parser_need_more_data; int progress; unsigned int cseq; // rtsp sequence struct rtp_over_rtsp_t rtp; sdp_t* sdp; int media_count; struct rtsp_media_t media[N_MEDIA]; struct rtsp_header_session_t session[N_MEDIA]; struct rtsp_header_transport_t transport[N_MEDIA]; // media char range[64]; // rtsp header Range char speed[16]; // rtsp header speed char scale[16]; // rtsp header scale char req[2048]; char uri[256]; char baseuri[256]; // Content-Base char location[256]; // Content-Location int aggregate; // 1-aggregate control available char aggregate_uri[256]; // aggregate control uri, valid if 1==aggregate int auth_failed; char usr[128]; char pwd[256]; char authenrization[1024]; struct http_header_www_authenticate_t auth; }; //int rtsp_client_describe(struct rtsp_client_t* rtsp); //int rtsp_client_announce(struct rtsp_client_t* rtsp, const char* sdp); //int rtsp_client_setup(struct rtsp_client_t* rtsp, const char* sdp); //int rtsp_client_teardown(struct rtsp_client_t* rtsp); int rtsp_client_sdp(struct rtsp_client_t* rtsp, const char* sdp); int rtsp_client_get_parameter(struct rtsp_client_t *rtsp, int media, const char* parameter); int rtsp_client_set_parameter(struct rtsp_client_t *rtsp, int media, const char* parameter); int rtsp_client_announce_onreply(struct rtsp_client_t* rtsp, void* parser); int rtsp_client_describe_onreply(struct rtsp_client_t* rtsp, void* parser); int rtsp_client_setup_onreply(struct rtsp_client_t* rtsp, void* parser); int rtsp_client_play_onreply(struct rtsp_client_t* rtsp, void* parser); int rtsp_client_pause_onreply(struct rtsp_client_t* rtsp, void* parser); int rtsp_client_teardown_onreply(struct rtsp_client_t* rtsp, void* parser); int rtsp_client_options_onreply(struct rtsp_client_t* rtsp, void* parser); int rtsp_client_record_onreply(struct rtsp_client_t* rtsp, void* parser); int rtsp_client_get_parameter_onreply(struct rtsp_client_t* rtsp, void* parser); int rtsp_client_set_parameter_onreply(struct rtsp_client_t* rtsp, void* parser); int rtsp_client_www_authenticate(struct rtsp_client_t* rtsp, const char* filed); int rtsp_client_authenrization(struct rtsp_client_t* rtsp, const char* method, const char* uri, const char* content, int length, char* authenrization, int bytes); #endif /* !_rtsp_client_internal_h_ */