// main entrance. int main(int argc, char** argv) { int ret = ERROR_SUCCESS; // TODO: support both little and big endian. srs_assert(srs_is_little_endian()); #ifdef SRS_AUTO_GPERF_MP HeapProfilerStart("gperf.srs.gmp"); #endif #ifdef SRS_AUTO_GPERF_CP ProfilerStart("gperf.srs.gcp"); #endif #ifdef SRS_AUTO_GPERF_MC #ifdef SRS_AUTO_GPERF_MP srs_error("option --with-gmc confict with --with-gmp, " "@see: http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html\n" "Note that since the heap-checker uses the heap-profiling framework internally, " "it is not possible to run both the heap-checker and heap profiler at the same time"); return -1; #endif #endif // never use srs log(srs_trace, srs_error, etc) before config parse the option, // which will load the log config and apply it. if ((ret = _srs_config->parse_options(argc, argv)) != ERROR_SUCCESS) { return ret; } // config parsed, initialize log. if ((ret = _srs_log->initialize()) != ERROR_SUCCESS) { return ret; } srs_trace("srs(simple-rtmp-server) "RTMP_SIG_SRS_VERSION); srs_trace("license: "RTMP_SIG_SRS_LICENSE); srs_trace("uname: "SRS_AUTO_UNAME); srs_trace("build: %s, %s", SRS_AUTO_BUILD_DATE, srs_is_little_endian()? "little-endian":"big-endian"); srs_trace("configure: "SRS_AUTO_USER_CONFIGURE); srs_trace("features: "SRS_AUTO_CONFIGURE); #ifdef SRS_AUTO_ARM_UBUNTU12 srs_trace("arm tool chain: "SRS_AUTO_EMBEDED_TOOL_CHAIN); #endif if ((ret = _srs_server->initialize()) != ERROR_SUCCESS) { return ret; } return run(); }
SrsStream::SrsStream() { p = bytes = NULL; size = 0; // TODO: support both little and big endian. srs_assert(srs_is_little_endian()); }
/** * main entrance. */ int main(int argc, char** argv) { int ret = ERROR_SUCCESS; // TODO: support both little and big endian. srs_assert(srs_is_little_endian()); #ifdef SRS_AUTO_GPERF_MP HeapProfilerStart("gperf.srs.gmp"); #endif #ifdef SRS_AUTO_GPERF_CP ProfilerStart("gperf.srs.gcp"); #endif #if defined(SRS_AUTO_GPERF_MC) && defined(SRS_AUTO_GPERF_MP) srs_error("option --with-gmc confict with --with-gmp, " "@see: http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html\n" "Note that since the heap-checker uses the heap-profiling framework internally, " "it is not possible to run both the heap-checker and heap profiler at the same time"); return -1; #endif // never use srs log(srs_trace, srs_error, etc) before config parse the option, // which will load the log config and apply it. if ((ret = _srs_config->parse_options(argc, argv)) != ERROR_SUCCESS) { return ret; } // config parsed, initialize log. if ((ret = _srs_log->initialize()) != ERROR_SUCCESS) { return ret; } // we check the config when the log initialized. if ((ret = _srs_config->check_config()) != ERROR_SUCCESS) { return ret; } srs_trace("srs(simple-rtmp-server) "RTMP_SIG_SRS_VERSION); srs_trace("license: "RTMP_SIG_SRS_LICENSE); srs_trace("authors: "RTMP_SIG_SRS_PRIMARY_AUTHROS); srs_trace("contributors: "SRS_AUTO_CONSTRIBUTORS); srs_trace("uname: "SRS_AUTO_UNAME); srs_trace("build: %s, %s", SRS_AUTO_BUILD_DATE, srs_is_little_endian()? "little-endian":"big-endian"); srs_trace("configure: "SRS_AUTO_USER_CONFIGURE); srs_trace("features: "SRS_AUTO_CONFIGURE); #ifdef SRS_AUTO_ARM_UBUNTU12 srs_trace("arm tool chain: "SRS_AUTO_EMBEDED_TOOL_CHAIN); #endif srs_trace("conf: %s, limit: %d", _srs_config->config().c_str(), _srs_config->get_max_connections()); // features show_macro_features(); check_macro_features(); /** * we do nothing in the constructor of server, * and use initialize to create members, set hooks for instance the reload handler, * all initialize will done in this stage. */ if ((ret = _srs_server->initialize()) != ERROR_SUCCESS) { return ret; } return run(); }