mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
refine core, move specified functions to kernel utility.
This commit is contained in:
parent
7c7920698d
commit
31b568b013
30 changed files with 224 additions and 165 deletions
|
@ -346,7 +346,7 @@ function write_nginx_html5()
|
||||||
END
|
END
|
||||||
}
|
}
|
||||||
# create the nginx dir, for http-server if not build nginx
|
# create the nginx dir, for http-server if not build nginx
|
||||||
rm -rf ${SRS_OBJS}/nginx && mkdir -p ${SRS_OBJS}/nginx
|
mkdir -p ${SRS_OBJS}/nginx
|
||||||
# make nginx
|
# make nginx
|
||||||
__SRS_BUILD_NGINX=NO; if [ $SRS_EMBEDED_CPU = NO ]; then if [ $SRS_NGINX = YES ]; then __SRS_BUILD_NGINX=YES; fi fi
|
__SRS_BUILD_NGINX=NO; if [ $SRS_EMBEDED_CPU = NO ]; then if [ $SRS_NGINX = YES ]; then __SRS_BUILD_NGINX=YES; fi fi
|
||||||
if [ $__SRS_BUILD_NGINX = YES ]; then
|
if [ $__SRS_BUILD_NGINX = YES ]; then
|
||||||
|
|
|
@ -70,6 +70,8 @@ SRS_PURE_RTMP=NO
|
||||||
SRS_RTMP_HLS=NO
|
SRS_RTMP_HLS=NO
|
||||||
# the most fast compile, nothing, only support vp6 RTMP.
|
# the most fast compile, nothing, only support vp6 RTMP.
|
||||||
SRS_DISABLE_ALL=NO
|
SRS_DISABLE_ALL=NO
|
||||||
|
# all features is on
|
||||||
|
SRS_ENABLE_ALL=NO
|
||||||
#
|
#
|
||||||
# calc
|
# calc
|
||||||
# whether embed cpu, arm/mips
|
# whether embed cpu, arm/mips
|
||||||
|
@ -146,6 +148,7 @@ Presets:
|
||||||
--pure-rtmp only support RTMP with ssl.
|
--pure-rtmp only support RTMP with ssl.
|
||||||
--rtmp-hls only support RTMP+HLS with ssl.
|
--rtmp-hls only support RTMP+HLS with ssl.
|
||||||
--disable-all disable all features, only support vp6 RTMP.
|
--disable-all disable all features, only support vp6 RTMP.
|
||||||
|
--full enable all features.
|
||||||
|
|
||||||
Conflicts:
|
Conflicts:
|
||||||
1. --with-gmc vs --with-gmp:
|
1. --with-gmc vs --with-gmp:
|
||||||
|
@ -229,6 +232,7 @@ function parse_user_option() {
|
||||||
--disable-all) SRS_DISABLE_ALL=YES ;;
|
--disable-all) SRS_DISABLE_ALL=YES ;;
|
||||||
--pure-rtmp) SRS_PURE_RTMP=YES ;;
|
--pure-rtmp) SRS_PURE_RTMP=YES ;;
|
||||||
--rtmp-hls) SRS_RTMP_HLS=YES ;;
|
--rtmp-hls) SRS_RTMP_HLS=YES ;;
|
||||||
|
--full) SRS_ENABLE_ALL=YES ;;
|
||||||
|
|
||||||
--use-sys-ssl) SRS_USE_SYS_SSL=YES ;;
|
--use-sys-ssl) SRS_USE_SYS_SSL=YES ;;
|
||||||
|
|
||||||
|
@ -272,12 +276,14 @@ function apply_user_presets() {
|
||||||
if [ $SRS_PURE_RTMP = NO ]; then
|
if [ $SRS_PURE_RTMP = NO ]; then
|
||||||
if [ $SRS_FAST = NO ]; then
|
if [ $SRS_FAST = NO ]; then
|
||||||
if [ $SRS_DISABLE_ALL = NO ]; then
|
if [ $SRS_DISABLE_ALL = NO ]; then
|
||||||
if [ $SRS_DEV = NO ]; then
|
if [ $SRS_ENABLE_ALL = NO ]; then
|
||||||
if [ $SRS_ARM_UBUNTU12 = NO ]; then
|
if [ $SRS_DEV = NO ]; then
|
||||||
if [ $SRS_MIPS_UBUNTU12 = NO ]; then
|
if [ $SRS_ARM_UBUNTU12 = NO ]; then
|
||||||
if [ $SRS_PI = NO ]; then
|
if [ $SRS_MIPS_UBUNTU12 = NO ]; then
|
||||||
if [ $SRS_X86_X64 = NO ]; then
|
if [ $SRS_PI = NO ]; then
|
||||||
SRS_X86_X64=YES; opt="--x86-x64 $opt";
|
if [ $SRS_X86_X64 = NO ]; then
|
||||||
|
SRS_X86_X64=YES; opt="--x86-x64 $opt";
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -321,6 +327,31 @@ function apply_user_presets() {
|
||||||
SRS_STATIC=NO
|
SRS_STATIC=NO
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# all enabled.
|
||||||
|
if [ $SRS_ENABLE_ALL = YES ]; then
|
||||||
|
SRS_HLS=YES
|
||||||
|
SRS_DVR=YES
|
||||||
|
SRS_NGINX=YES
|
||||||
|
SRS_SSL=YES
|
||||||
|
SRS_FFMPEG_TOOL=YES
|
||||||
|
SRS_TRANSCODE=YES
|
||||||
|
SRS_INGEST=YES
|
||||||
|
SRS_HTTP_PARSER=YES
|
||||||
|
SRS_HTTP_CALLBACK=YES
|
||||||
|
SRS_HTTP_SERVER=YES
|
||||||
|
SRS_HTTP_API=YES
|
||||||
|
SRS_LIBRTMP=YES
|
||||||
|
SRS_BWTC=YES
|
||||||
|
SRS_RESEARCH=YES
|
||||||
|
SRS_UTEST=YES
|
||||||
|
SRS_GPERF=NO
|
||||||
|
SRS_GPERF_MC=NO
|
||||||
|
SRS_GPERF_MP=NO
|
||||||
|
SRS_GPERF_CP=NO
|
||||||
|
SRS_GPROF=NO
|
||||||
|
SRS_STATIC=NO
|
||||||
|
fi
|
||||||
|
|
||||||
# only rtmp vp6
|
# only rtmp vp6
|
||||||
if [ $SRS_FAST = YES ]; then
|
if [ $SRS_FAST = YES ]; then
|
||||||
SRS_HLS=NO
|
SRS_HLS=NO
|
||||||
|
|
|
@ -29,6 +29,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
#include <srs_core.hpp>
|
#include <srs_core.hpp>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#ifdef SRS_AUTO_DVR
|
#ifdef SRS_AUTO_DVR
|
||||||
|
|
||||||
class SrsSource;
|
class SrsSource;
|
||||||
|
@ -238,4 +240,4 @@ public:
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -43,6 +43,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <srs_core_autofree.hpp>
|
#include <srs_core_autofree.hpp>
|
||||||
#include <srs_app_socket.hpp>
|
#include <srs_app_socket.hpp>
|
||||||
#include <srs_app_kbps.hpp>
|
#include <srs_app_kbps.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
// when error, edge ingester sleep for a while and retry.
|
// when error, edge ingester sleep for a while and retry.
|
||||||
#define SRS_EDGE_INGESTER_SLEEP_US (int64_t)(1*1000*1000LL)
|
#define SRS_EDGE_INGESTER_SLEEP_US (int64_t)(1*1000*1000LL)
|
||||||
|
|
|
@ -33,6 +33,7 @@ using namespace std;
|
||||||
#include <srs_app_pithy_print.hpp>
|
#include <srs_app_pithy_print.hpp>
|
||||||
#include <srs_protocol_rtmp_stack.hpp>
|
#include <srs_protocol_rtmp_stack.hpp>
|
||||||
#include <srs_app_ffmpeg.hpp>
|
#include <srs_app_ffmpeg.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
#ifdef SRS_AUTO_TRANSCODE
|
#ifdef SRS_AUTO_TRANSCODE
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <srs_protocol_utility.hpp>
|
#include <srs_protocol_utility.hpp>
|
||||||
#include <srs_protocol_rtmp.hpp>
|
#include <srs_protocol_rtmp.hpp>
|
||||||
#include <srs_app_kbps.hpp>
|
#include <srs_app_kbps.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
// when error, forwarder sleep for a while and retry.
|
// when error, forwarder sleep for a while and retry.
|
||||||
#define SRS_FORWARDER_SLEEP_US (int64_t)(3*1000*1000LL)
|
#define SRS_FORWARDER_SLEEP_US (int64_t)(3*1000*1000LL)
|
||||||
|
|
|
@ -43,6 +43,7 @@ using namespace std;
|
||||||
#include <srs_core_autofree.hpp>
|
#include <srs_core_autofree.hpp>
|
||||||
#include <srs_protocol_rtmp.hpp>
|
#include <srs_protocol_rtmp.hpp>
|
||||||
#include <srs_app_pithy_print.hpp>
|
#include <srs_app_pithy_print.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
// max PES packets size to flush the video.
|
// max PES packets size to flush the video.
|
||||||
#define SRS_AUTO_HLS_AUDIO_CACHE_SIZE 1024 * 1024
|
#define SRS_AUTO_HLS_AUDIO_CACHE_SIZE 1024 * 1024
|
||||||
|
|
|
@ -35,6 +35,7 @@ using namespace std;
|
||||||
#include <srs_app_http_api.hpp>
|
#include <srs_app_http_api.hpp>
|
||||||
#include <srs_app_http_conn.hpp>
|
#include <srs_app_http_conn.hpp>
|
||||||
#include <srs_app_json.hpp>
|
#include <srs_app_json.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
#define SRS_DEFAULT_HTTP_PORT 80
|
#define SRS_DEFAULT_HTTP_PORT 80
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ using namespace std;
|
||||||
#include <srs_kernel_error.hpp>
|
#include <srs_kernel_error.hpp>
|
||||||
#include <srs_kernel_log.hpp>
|
#include <srs_kernel_log.hpp>
|
||||||
#include <srs_app_socket.hpp>
|
#include <srs_app_socket.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
SrsHttpClient::SrsHttpClient()
|
SrsHttpClient::SrsHttpClient()
|
||||||
{
|
{
|
||||||
|
|
|
@ -29,6 +29,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
#include <srs_core.hpp>
|
#include <srs_core.hpp>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#ifdef SRS_AUTO_HTTP_PARSER
|
#ifdef SRS_AUTO_HTTP_PARSER
|
||||||
|
|
||||||
#include <srs_app_st.hpp>
|
#include <srs_app_st.hpp>
|
||||||
|
|
|
@ -41,6 +41,7 @@ using namespace std;
|
||||||
#include <srs_app_json.hpp>
|
#include <srs_app_json.hpp>
|
||||||
#include <srs_app_config.hpp>
|
#include <srs_app_config.hpp>
|
||||||
#include <srs_kernel_flv.hpp>
|
#include <srs_kernel_flv.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
#define SRS_HTTP_DEFAULT_PAGE "index.html"
|
#define SRS_HTTP_DEFAULT_PAGE "index.html"
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
#include <srs_core.hpp>
|
#include <srs_core.hpp>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#ifdef SRS_AUTO_HTTP_CALLBACK
|
#ifdef SRS_AUTO_HTTP_CALLBACK
|
||||||
|
|
||||||
#include <http_parser.h>
|
#include <http_parser.h>
|
||||||
|
@ -117,4 +119,4 @@ public:
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -32,6 +32,7 @@ using namespace std;
|
||||||
#include <srs_kernel_log.hpp>
|
#include <srs_kernel_log.hpp>
|
||||||
#include <srs_app_ffmpeg.hpp>
|
#include <srs_app_ffmpeg.hpp>
|
||||||
#include <srs_app_pithy_print.hpp>
|
#include <srs_app_pithy_print.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
// when error, ingester sleep for a while and retry.
|
// when error, ingester sleep for a while and retry.
|
||||||
// ingest never sleep a long time, for we must start the stream ASAP.
|
// ingest never sleep a long time, for we must start the stream ASAP.
|
||||||
|
|
|
@ -33,6 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <srs_app_config.hpp>
|
#include <srs_app_config.hpp>
|
||||||
#include <srs_kernel_error.hpp>
|
#include <srs_kernel_error.hpp>
|
||||||
#include <srs_app_utility.hpp>
|
#include <srs_app_utility.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
SrsThreadContext::SrsThreadContext()
|
SrsThreadContext::SrsThreadContext()
|
||||||
{
|
{
|
||||||
|
|
|
@ -46,6 +46,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <srs_app_utility.hpp>
|
#include <srs_app_utility.hpp>
|
||||||
#include <srs_app_heartbeat.hpp>
|
#include <srs_app_heartbeat.hpp>
|
||||||
|
|
||||||
|
// signal defines.
|
||||||
|
#define SIGNAL_RELOAD SIGHUP
|
||||||
|
|
||||||
#define SERVER_LISTEN_BACKLOG 512
|
#define SERVER_LISTEN_BACKLOG 512
|
||||||
|
|
||||||
// system interval
|
// system interval
|
||||||
|
|
|
@ -40,6 +40,7 @@ using namespace std;
|
||||||
#include <srs_app_dvr.hpp>
|
#include <srs_app_dvr.hpp>
|
||||||
#include <srs_kernel_stream.hpp>
|
#include <srs_kernel_stream.hpp>
|
||||||
#include <srs_app_edge.hpp>
|
#include <srs_app_edge.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
#define CONST_MAX_JITTER_MS 500
|
#define CONST_MAX_JITTER_MS 500
|
||||||
#define DEFAULT_FRAME_TIME_MS 40
|
#define DEFAULT_FRAME_TIME_MS 40
|
||||||
|
|
|
@ -26,6 +26,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <srs_kernel_error.hpp>
|
#include <srs_kernel_error.hpp>
|
||||||
#include <srs_kernel_log.hpp>
|
#include <srs_kernel_log.hpp>
|
||||||
|
|
||||||
|
// const time for st to convert to us
|
||||||
|
#define SRS_TIME_MILLISECONDS 1000
|
||||||
|
#define SRS_TIME_SECONDS 1000000
|
||||||
|
|
||||||
ISrsThreadHandler::ISrsThreadHandler()
|
ISrsThreadHandler::ISrsThreadHandler()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -180,4 +184,4 @@ void* SrsThread::thread_fun(void* arg)
|
||||||
st_thread_exit(NULL);
|
st_thread_exit(NULL);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,128 +23,3 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
#include <srs_core.hpp>
|
#include <srs_core.hpp>
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
string srs_string_replace(string str, string old_str, string new_str)
|
|
||||||
{
|
|
||||||
std::string ret = str;
|
|
||||||
|
|
||||||
if (old_str == new_str) {
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t pos = 0;
|
|
||||||
while ((pos = ret.find(old_str, pos)) != std::string::npos) {
|
|
||||||
ret = ret.replace(pos, old_str.length(), new_str);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
string srs_string_trim_end(string str, string trim_chars)
|
|
||||||
{
|
|
||||||
std::string ret = str;
|
|
||||||
|
|
||||||
for (int i = 0; i < (int)trim_chars.length(); i++) {
|
|
||||||
char ch = trim_chars.at(i);
|
|
||||||
|
|
||||||
while (!ret.empty() && ret.at(ret.length() - 1) == ch) {
|
|
||||||
ret.erase(ret.end() - 1);
|
|
||||||
|
|
||||||
// ok, matched, should reset the search
|
|
||||||
i = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
string srs_string_trim_start(string str, string trim_chars)
|
|
||||||
{
|
|
||||||
std::string ret = str;
|
|
||||||
|
|
||||||
for (int i = 0; i < (int)trim_chars.length(); i++) {
|
|
||||||
char ch = trim_chars.at(i);
|
|
||||||
|
|
||||||
while (!ret.empty() && ret.at(0) == ch) {
|
|
||||||
ret.erase(ret.begin());
|
|
||||||
|
|
||||||
// ok, matched, should reset the search
|
|
||||||
i = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
string srs_string_remove(string str, string remove_chars)
|
|
||||||
{
|
|
||||||
std::string ret = str;
|
|
||||||
|
|
||||||
for (int i = 0; i < (int)remove_chars.length(); i++) {
|
|
||||||
char ch = remove_chars.at(i);
|
|
||||||
|
|
||||||
for (std::string::iterator it = ret.begin(); it != ret.end();) {
|
|
||||||
if (ch == *it) {
|
|
||||||
it = ret.erase(it);
|
|
||||||
|
|
||||||
// ok, matched, should reset the search
|
|
||||||
i = 0;
|
|
||||||
} else {
|
|
||||||
++it;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool srs_string_ends_with(string str, string flag)
|
|
||||||
{
|
|
||||||
return str.rfind(flag) == str.length() - flag.length();
|
|
||||||
}
|
|
||||||
|
|
||||||
string srs_dns_resolve(string host)
|
|
||||||
{
|
|
||||||
if (inet_addr(host.c_str()) != INADDR_NONE) {
|
|
||||||
return host;
|
|
||||||
}
|
|
||||||
|
|
||||||
hostent* answer = gethostbyname(host.c_str());
|
|
||||||
if (answer == NULL) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
char ipv4[16];
|
|
||||||
memset(ipv4, 0, sizeof(ipv4));
|
|
||||||
for (int i = 0; i < answer->h_length; i++) {
|
|
||||||
inet_ntop(AF_INET, answer->h_addr_list[i], ipv4, sizeof(ipv4));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ipv4;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool srs_is_little_endian()
|
|
||||||
{
|
|
||||||
// convert to network(big-endian) order, if not equals,
|
|
||||||
// the system is little-endian, so need to convert the int64
|
|
||||||
static int little_endian_check = -1;
|
|
||||||
|
|
||||||
if(little_endian_check == -1) {
|
|
||||||
union {
|
|
||||||
int32_t i;
|
|
||||||
int8_t c;
|
|
||||||
} little_check_union;
|
|
||||||
|
|
||||||
little_check_union.i = 0x01;
|
|
||||||
little_endian_check = little_check_union.c;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (little_endian_check == 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -85,30 +85,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
// it's recomments to free each elem explicit.
|
// it's recomments to free each elem explicit.
|
||||||
// so we remove the srs_freepa utility.
|
// so we remove the srs_freepa utility.
|
||||||
|
|
||||||
// compare
|
|
||||||
#define srs_min(a, b) (((a) < (b))? (a) : (b))
|
|
||||||
#define srs_max(a, b) (((a) < (b))? (b) : (a))
|
|
||||||
|
|
||||||
// signal defines.
|
|
||||||
#define SIGNAL_RELOAD SIGHUP
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
// replace old_str to new_str of str
|
|
||||||
extern std::string srs_string_replace(std::string str, std::string old_str, std::string new_str);
|
|
||||||
// trim char in trim_chars of str
|
|
||||||
extern std::string srs_string_trim_end(std::string str, std::string trim_chars);
|
|
||||||
// trim char in trim_chars of str
|
|
||||||
extern std::string srs_string_trim_start(std::string str, std::string trim_chars);
|
|
||||||
// remove char in remove_chars of str
|
|
||||||
extern std::string srs_string_remove(std::string str, std::string remove_chars);
|
|
||||||
// whether string end with
|
|
||||||
extern bool srs_string_ends_with(std::string str, std::string flag);
|
|
||||||
|
|
||||||
// dns resolve utility, return the resolved ip address.
|
|
||||||
extern std::string srs_dns_resolve(std::string host);
|
|
||||||
// whether system is little endian
|
|
||||||
extern bool srs_is_little_endian();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* disable copy constructor of class
|
* disable copy constructor of class
|
||||||
*/
|
*/
|
||||||
|
@ -120,8 +96,4 @@ extern bool srs_is_little_endian();
|
||||||
className(const className&); \
|
className(const className&); \
|
||||||
className& operator= (const className&)
|
className& operator= (const className&)
|
||||||
|
|
||||||
// const time for st to convert to us
|
|
||||||
#define SRS_TIME_MILLISECONDS 1000
|
|
||||||
#define SRS_TIME_SECONDS 1000000
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -29,6 +29,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
#include <srs_core.hpp>
|
#include <srs_core.hpp>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
class SrsStream;
|
class SrsStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -173,4 +175,4 @@ public:
|
||||||
virtual int read_previous_tag_size(char ts[4]);
|
virtual int read_previous_tag_size(char ts[4]);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -27,6 +27,7 @@ using namespace std;
|
||||||
|
|
||||||
#include <srs_kernel_log.hpp>
|
#include <srs_kernel_log.hpp>
|
||||||
#include <srs_kernel_error.hpp>
|
#include <srs_kernel_error.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
SrsStream::SrsStream()
|
SrsStream::SrsStream()
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,8 +23,13 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
#include <srs_kernel_utility.hpp>
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
#include <srs_kernel_log.hpp>
|
#include <srs_kernel_log.hpp>
|
||||||
|
|
||||||
|
@ -58,3 +63,122 @@ void srs_update_system_time_ms()
|
||||||
|
|
||||||
_srs_system_time_us_cache = now_us;
|
_srs_system_time_us_cache = now_us;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string srs_dns_resolve(string host)
|
||||||
|
{
|
||||||
|
if (inet_addr(host.c_str()) != INADDR_NONE) {
|
||||||
|
return host;
|
||||||
|
}
|
||||||
|
|
||||||
|
hostent* answer = gethostbyname(host.c_str());
|
||||||
|
if (answer == NULL) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
char ipv4[16];
|
||||||
|
memset(ipv4, 0, sizeof(ipv4));
|
||||||
|
for (int i = 0; i < answer->h_length; i++) {
|
||||||
|
inet_ntop(AF_INET, answer->h_addr_list[i], ipv4, sizeof(ipv4));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ipv4;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool srs_is_little_endian()
|
||||||
|
{
|
||||||
|
// convert to network(big-endian) order, if not equals,
|
||||||
|
// the system is little-endian, so need to convert the int64
|
||||||
|
static int little_endian_check = -1;
|
||||||
|
|
||||||
|
if(little_endian_check == -1) {
|
||||||
|
union {
|
||||||
|
int32_t i;
|
||||||
|
int8_t c;
|
||||||
|
} little_check_union;
|
||||||
|
|
||||||
|
little_check_union.i = 0x01;
|
||||||
|
little_endian_check = little_check_union.c;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (little_endian_check == 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
string srs_string_replace(string str, string old_str, string new_str)
|
||||||
|
{
|
||||||
|
std::string ret = str;
|
||||||
|
|
||||||
|
if (old_str == new_str) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t pos = 0;
|
||||||
|
while ((pos = ret.find(old_str, pos)) != std::string::npos) {
|
||||||
|
ret = ret.replace(pos, old_str.length(), new_str);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
string srs_string_trim_end(string str, string trim_chars)
|
||||||
|
{
|
||||||
|
std::string ret = str;
|
||||||
|
|
||||||
|
for (int i = 0; i < (int)trim_chars.length(); i++) {
|
||||||
|
char ch = trim_chars.at(i);
|
||||||
|
|
||||||
|
while (!ret.empty() && ret.at(ret.length() - 1) == ch) {
|
||||||
|
ret.erase(ret.end() - 1);
|
||||||
|
|
||||||
|
// ok, matched, should reset the search
|
||||||
|
i = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
string srs_string_trim_start(string str, string trim_chars)
|
||||||
|
{
|
||||||
|
std::string ret = str;
|
||||||
|
|
||||||
|
for (int i = 0; i < (int)trim_chars.length(); i++) {
|
||||||
|
char ch = trim_chars.at(i);
|
||||||
|
|
||||||
|
while (!ret.empty() && ret.at(0) == ch) {
|
||||||
|
ret.erase(ret.begin());
|
||||||
|
|
||||||
|
// ok, matched, should reset the search
|
||||||
|
i = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
string srs_string_remove(string str, string remove_chars)
|
||||||
|
{
|
||||||
|
std::string ret = str;
|
||||||
|
|
||||||
|
for (int i = 0; i < (int)remove_chars.length(); i++) {
|
||||||
|
char ch = remove_chars.at(i);
|
||||||
|
|
||||||
|
for (std::string::iterator it = ret.begin(); it != ret.end();) {
|
||||||
|
if (ch == *it) {
|
||||||
|
it = ret.erase(it);
|
||||||
|
|
||||||
|
// ok, matched, should reset the search
|
||||||
|
i = 0;
|
||||||
|
} else {
|
||||||
|
++it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool srs_string_ends_with(string str, string flag)
|
||||||
|
{
|
||||||
|
return str.rfind(flag) == str.length() - flag.length();
|
||||||
|
}
|
||||||
|
|
|
@ -30,9 +30,32 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
#include <srs_core.hpp>
|
#include <srs_core.hpp>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
// compare
|
||||||
|
#define srs_min(a, b) (((a) < (b))? (a) : (b))
|
||||||
|
#define srs_max(a, b) (((a) < (b))? (b) : (a))
|
||||||
|
|
||||||
// get current system time in ms, use cache to avoid performance problem
|
// get current system time in ms, use cache to avoid performance problem
|
||||||
extern int64_t srs_get_system_time_ms();
|
extern int64_t srs_get_system_time_ms();
|
||||||
// the deamon st-thread will update it.
|
// the deamon st-thread will update it.
|
||||||
extern void srs_update_system_time_ms();
|
extern void srs_update_system_time_ms();
|
||||||
|
|
||||||
|
// dns resolve utility, return the resolved ip address.
|
||||||
|
extern std::string srs_dns_resolve(std::string host);
|
||||||
|
|
||||||
|
// whether system is little endian
|
||||||
|
extern bool srs_is_little_endian();
|
||||||
|
|
||||||
|
// replace old_str to new_str of str
|
||||||
|
extern std::string srs_string_replace(std::string str, std::string old_str, std::string new_str);
|
||||||
|
// trim char in trim_chars of str
|
||||||
|
extern std::string srs_string_trim_end(std::string str, std::string trim_chars);
|
||||||
|
// trim char in trim_chars of str
|
||||||
|
extern std::string srs_string_trim_start(std::string str, std::string trim_chars);
|
||||||
|
// remove char in remove_chars of str
|
||||||
|
extern std::string srs_string_remove(std::string str, std::string remove_chars);
|
||||||
|
// whether string end with
|
||||||
|
extern bool srs_string_ends_with(std::string str, std::string flag);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -38,6 +38,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <srs_app_config.hpp>
|
#include <srs_app_config.hpp>
|
||||||
#include <srs_app_log.hpp>
|
#include <srs_app_log.hpp>
|
||||||
#include <srs_app_server.hpp>
|
#include <srs_app_server.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
// kernel module.
|
// kernel module.
|
||||||
ISrsLog* _srs_log = new SrsFastLog();
|
ISrsLog* _srs_log = new SrsFastLog();
|
||||||
|
|
|
@ -39,6 +39,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <srs_app_config.hpp>
|
#include <srs_app_config.hpp>
|
||||||
#include <srs_app_log.hpp>
|
#include <srs_app_log.hpp>
|
||||||
#include <srs_app_utility.hpp>
|
#include <srs_app_utility.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
// pre-declare
|
// pre-declare
|
||||||
int run();
|
int run();
|
||||||
|
|
|
@ -32,6 +32,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <srs_protocol_rtmp_stack.hpp>
|
#include <srs_protocol_rtmp_stack.hpp>
|
||||||
#include <srs_protocol_utility.hpp>
|
#include <srs_protocol_utility.hpp>
|
||||||
#include <srs_kernel_stream.hpp>
|
#include <srs_kernel_stream.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <srs_kernel_buffer.hpp>
|
#include <srs_kernel_buffer.hpp>
|
||||||
#include <srs_kernel_stream.hpp>
|
#include <srs_kernel_stream.hpp>
|
||||||
#include <srs_core_autofree.hpp>
|
#include <srs_core_autofree.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <srs_kernel_log.hpp>
|
#include <srs_kernel_log.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
void srs_vhost_resolve(std::string& vhost, std::string& app)
|
void srs_vhost_resolve(std::string& vhost, std::string& app)
|
||||||
{
|
{
|
||||||
|
|
|
@ -29,6 +29,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
#include <srs_core.hpp>
|
#include <srs_core.hpp>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#define RTMP_DEFAULT_PORT "1935"
|
#define RTMP_DEFAULT_PORT "1935"
|
||||||
|
|
||||||
// the default chunk size for system.
|
// the default chunk size for system.
|
||||||
|
|
|
@ -23,6 +23,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <srs_utest_buffer.hpp>
|
#include <srs_utest_buffer.hpp>
|
||||||
|
|
||||||
#include <srs_kernel_error.hpp>
|
#include <srs_kernel_error.hpp>
|
||||||
|
#include <srs_kernel_utility.hpp>
|
||||||
|
|
||||||
MockBufferReader::MockBufferReader(const char* data)
|
MockBufferReader::MockBufferReader(const char* data)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue