/modules/RtspClient/rtsp_client.h

https://github.com/BigPig0/RelayLive · C Header · 113 lines · 84 code · 15 blank · 14 comment · 0 complexity · d201366b451a58685e8b80779eba1c30 MD5 · raw file

  1. /*!
  2. * \file rtsp_client.h
  3. * \date 2018/11/28 18:01
  4. *
  5. * \author wlla
  6. * Contact: user@company.com
  7. *
  8. * \brief
  9. *
  10. * rtsp¿Í»§¶Ë
  11. *
  12. * \note
  13. */
  14. #pragma once
  15. #include "rtsp.h"
  16. #include "uv.h"
  17. #define SOCKET_RECV_BUFF_LEN 1024
  18. enum RTSP_ERR_NUM
  19. {
  20. RTSP_ERR_SUCESS = 0,
  21. RTSP_ERR_CONNECT_FAILED = -1000,
  22. RTSP_ERR_TCP_RECV_FAILED,
  23. RTSP_ERR_IP4_ADDR_FAILED,
  24. RTSP_ERR_TCP_SEND_FAILED,
  25. RTSP_ERR_OPTION_FAILED,
  26. RTSP_ERR_DESCRIBE_FAILED,
  27. RTSP_ERR_SETUP_FAILED,
  28. RTSP_ERR_PLAY_FAILED,
  29. RTSP_ERR_TEARDOWN_FAILED,
  30. RTSP_ERR_MAX
  31. };
  32. enum RTSP_STEP
  33. {
  34. RTSP_STEP_NONE,
  35. RTSP_STEP_OPTION,
  36. RTSP_STEP_DESCRIBE,
  37. RTSP_STEP_SETUP,
  38. RTSP_STEP_PLAY,
  39. RTSP_STEP_TEARDOWN
  40. };
  41. enum RTSP_STEP_STATE
  42. {
  43. RTSP_STEP_BEGIN = 0, //¿ªÊ¼·¢ÆðÇëÇó
  44. RTSP_STEP_SUCESS, //ÇëÇó³É¹¦
  45. RTSP_STEP_FAILED, //ÇëÇóʧ°Ü
  46. };
  47. enum RTSP_CONNECT_STATE
  48. {
  49. RTSP_CONNECT_INIT = 0,
  50. RTSP_CONNECT_CONNECTED,
  51. RTSP_CONNECT_SHUTDOWN,
  52. RTSP_CONNECT_CLOSE
  53. };
  54. enum RTSP_AUTHORIZATION_TYPE
  55. {
  56. RTSP_AUTHORIZATION_NONE = 0,
  57. RTSP_AUTHORIZATION_BASIC,
  58. RTSP_AUTHORIZATION_DIGEST
  59. };
  60. class CRtspClient
  61. {
  62. public:
  63. CRtspClient(RTSP_REQUEST option);
  64. virtual ~CRtspClient();
  65. virtual int play(play_cb cb);
  66. virtual int stop();
  67. virtual int send_options();
  68. virtual int send_describe();
  69. virtual int send_setup();
  70. virtual int send_play();
  71. virtual int send_teardown();
  72. virtual int parse_options();
  73. virtual int parse_describe();
  74. virtual int parse_setup();
  75. virtual int parse_play();
  76. virtual int parse_teardown();
  77. /** ¸ù¾ÝoptionÖµÉú³Éuri */
  78. virtual string make_uri() = 0;
  79. public:
  80. char* _send_buff;
  81. char* _recv_buff;
  82. uint32_t _recv_len;
  83. uv_tcp_t _tcp;
  84. uv_connect_t _conn;
  85. uv_write_t _write;
  86. uv_shutdown_t _shutdown;
  87. RTSP_REQUEST _option;
  88. RTSP_STEP _step;
  89. RTSP_STEP_STATE _step_state;
  90. RTSP_CONNECT_STATE _conn_state;
  91. play_cb _play_cb;
  92. RTSP_AUTHORIZATION_TYPE _need_auth;
  93. string _uri;
  94. string _realm;
  95. string _nonce;
  96. string _session;
  97. string _auth_md5;
  98. };