1 /* 2 * Copyright (c) 2016 The ZLMediaKit project authors. All Rights Reserved. 3 * 4 * This file is part of ZLMediaKit(https://github.com/xia-chu/ZLMediaKit). 5 * 6 * Use of this source code is governed by MIT license that can be found in the 7 * LICENSE file in the root of the source tree. All contributing project authors 8 * may be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #include "mk_common.h" 12 13 #ifdef __cplusplus 14 extern "C" { 15 #endif 16 17 typedef void* mk_rtp_server; 18 19 /** 20 * 创建GB28181 RTP 服务器 21 * @param port 监听端口,0则为随机 22 * @param tcp_mode tcp模式(0: 不监听端口 1: 监听端口 2: 主动连接到服务端) 23 * @param stream_id 该端口绑定的流id 24 * @return 25 */ 26 API_EXPORT mk_rtp_server API_CALL mk_rtp_server_create(uint16_t port, int tcp_mode, const char *stream_id); 27 28 /** 29 * TCP 主动模式时连接到服务器是否成功的回调 30 */ 31 typedef void(API_CALL *on_mk_rtp_server_connected)(void *user_data, int err, const char *what, int sys_err); 32 33 /** 34 * TCP 主动模式时连接到服务器 35 * @param @param ctx 服务器对象 36 * @param dst_url 服务端地址 37 * @param dst_port 服务端端口 38 * @param cb 连接到服务器是否成功的回调 39 * @param user_data 用户数据指针 40 * @return 41 */ 42 API_EXPORT void API_CALL mk_rtp_server_connect(mk_rtp_server ctx, const char *dst_url, uint16_t dst_port, on_mk_rtp_server_connected cb, void *user_data); 43 44 /** 45 * 销毁GB28181 RTP 服务器 46 * @param ctx 服务器对象 47 */ 48 API_EXPORT void API_CALL mk_rtp_server_release(mk_rtp_server ctx); 49 50 /** 51 * 获取本地监听的端口号 52 * @param ctx 服务器对象 53 * @return 端口号 54 */ 55 API_EXPORT uint16_t API_CALL mk_rtp_server_port(mk_rtp_server ctx); 56 57 /** 58 * GB28181 RTP 服务器接收流超时时触发 59 * @param user_data 用户数据指针 60 */ 61 typedef void(API_CALL *on_mk_rtp_server_detach)(void *user_data); 62 63 /** 64 * 监听B28181 RTP 服务器接收流超时事件 65 * @param ctx 服务器对象 66 * @param cb 回调函数 67 * @param user_data 回调函数用户数据指针 68 */ 69 API_EXPORT void API_CALL mk_rtp_server_set_on_detach(mk_rtp_server ctx, on_mk_rtp_server_detach cb, void *user_data); 70 71 72 #ifdef __cplusplus 73 } 74 #endif